summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/3rdparty/xcb/README35
-rw-r--r--src/3rdparty/xcb/include/xcb/fixup-xinput-h.patch15
-rw-r--r--src/3rdparty/xcb/include/xcb/randr.h5075
-rw-r--r--src/3rdparty/xcb/include/xcb/render.h4513
-rw-r--r--src/3rdparty/xcb/include/xcb/shape.h1103
-rw-r--r--src/3rdparty/xcb/include/xcb/shm.h738
-rw-r--r--src/3rdparty/xcb/include/xcb/sync.h2216
-rw-r--r--src/3rdparty/xcb/include/xcb/xcb_atom.h18
-rw-r--r--src/3rdparty/xcb/include/xcb/xcb_aux.h214
-rw-r--r--src/3rdparty/xcb/include/xcb/xcb_bitops.h212
-rw-r--r--src/3rdparty/xcb/include/xcb/xcb_event.h90
-rw-r--r--src/3rdparty/xcb/include/xcb/xcb_icccm.h1049
-rw-r--r--src/3rdparty/xcb/include/xcb/xcb_image.h630
-rw-r--r--src/3rdparty/xcb/include/xcb/xcb_keysyms.h71
-rw-r--r--src/3rdparty/xcb/include/xcb/xcb_pixel.h171
-rw-r--r--src/3rdparty/xcb/include/xcb/xcb_renderutil.h150
-rw-r--r--src/3rdparty/xcb/include/xcb/xcb_util.h8
-rw-r--r--src/3rdparty/xcb/include/xcb/xfixes.h2816
-rw-r--r--src/3rdparty/xcb/include/xcb/xinerama.h811
-rw-r--r--src/3rdparty/xcb/include/xcb/xinput.h4
-rw-r--r--src/3rdparty/xcb/include/xcb/xkb.h12085
-rw-r--r--src/3rdparty/xcb/libxcb/fix_compiler_warning_on_32bit_systems.patch15
-rw-r--r--src/3rdparty/xcb/libxcb/fixup-xinput-c.patch19
-rw-r--r--src/3rdparty/xcb/libxcb/randr.c5640
-rw-r--r--src/3rdparty/xcb/libxcb/render.c5295
-rw-r--r--src/3rdparty/xcb/libxcb/shape.c1102
-rw-r--r--src/3rdparty/xcb/libxcb/shm.c724
-rw-r--r--src/3rdparty/xcb/libxcb/sync.c2258
-rw-r--r--src/3rdparty/xcb/libxcb/xfixes.c3274
-rw-r--r--src/3rdparty/xcb/libxcb/xinerama.c703
-rw-r--r--src/3rdparty/xcb/libxcb/xinput.c6
-rw-r--r--src/3rdparty/xcb/libxcb/xkb.c15959
-rw-r--r--src/3rdparty/xcb/qt_attribution.json24
-rw-r--r--src/3rdparty/xcb/sysinclude/render.h1
-rw-r--r--src/3rdparty/xcb/sysinclude/xcb.h1
-rw-r--r--src/3rdparty/xcb/sysinclude/xcbext.h1
-rw-r--r--src/3rdparty/xcb/sysinclude/xproto.h1
-rw-r--r--src/3rdparty/xcb/xcb-util-image/xcb_image.c1011
-rw-r--r--src/3rdparty/xcb/xcb-util-keysyms/keysyms.c498
-rw-r--r--src/3rdparty/xcb/xcb-util-renderutil/util.c255
-rw-r--r--src/3rdparty/xcb/xcb-util-wm/icccm.c845
-rw-r--r--src/3rdparty/xcb/xcb-util/atoms.c76
-rw-r--r--src/3rdparty/xcb/xcb-util/event.c257
-rw-r--r--src/3rdparty/xcb/xcb-util/xcb_aux.c374
-rw-r--r--src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java63
-rw-r--r--src/android/jar/src/org/qtproject/qt5/android/QtLayout.java31
-rw-r--r--src/android/jar/src/org/qtproject/qt5/android/QtNative.java40
-rw-r--r--src/android/jar/src/org/qtproject/qt5/android/QtServiceDelegate.java2
-rw-r--r--src/corelib/Qt5CoreMacros.cmake111
-rw-r--r--src/corelib/animation/qabstractanimation.cpp8
-rw-r--r--src/corelib/animation/qanimationgroup.cpp13
-rw-r--r--src/corelib/animation/qpropertyanimation.cpp2
-rw-r--r--src/corelib/animation/qsequentialanimationgroup.cpp6
-rw-r--r--src/corelib/animation/qvariantanimation.cpp6
-rw-r--r--src/corelib/codecs/qicucodec.cpp16
-rw-r--r--src/corelib/codecs/qisciicodec.cpp2
-rw-r--r--src/corelib/codecs/qsimplecodec.cpp66
-rw-r--r--src/corelib/configure.json14
-rw-r--r--src/corelib/corelib.pro1
-rw-r--r--src/corelib/doc/snippets/code/src_corelib_global_qglobal.cpp1
-rw-r--r--src/corelib/doc/snippets/code/src_corelib_tools_qbytearray.cpp13
-rw-r--r--src/corelib/global/qcompilerdetection.h1
-rw-r--r--src/corelib/global/qconfig-bootstrapped.h2
-rw-r--r--src/corelib/global/qflags.h7
-rw-r--r--src/corelib/global/qfloat16.cpp8
-rw-r--r--src/corelib/global/qfloat16.h13
-rw-r--r--src/corelib/global/qglobal.cpp28
-rw-r--r--src/corelib/global/qglobal.h6
-rw-r--r--src/corelib/global/qlibraryinfo.cpp17
-rw-r--r--src/corelib/global/qlogging.cpp2
-rw-r--r--src/corelib/global/qnamespace.h5
-rw-r--r--src/corelib/global/qnamespace.qdoc32
-rw-r--r--src/corelib/io/io.pri1
-rw-r--r--src/corelib/io/qabstractfileengine.cpp2
-rw-r--r--src/corelib/io/qfile.cpp4
-rw-r--r--src/corelib/io/qfiledevice.cpp2
-rw-r--r--src/corelib/io/qfileinfo.cpp21
-rw-r--r--src/corelib/io/qfileinfo.h1
-rw-r--r--src/corelib/io/qfilesystemengine_unix.cpp4
-rw-r--r--src/corelib/io/qfilesystemengine_win.cpp103
-rw-r--r--src/corelib/io/qfilesystemmetadata_p.h21
-rw-r--r--src/corelib/io/qfilesystemwatcher.cpp2
-rw-r--r--src/corelib/io/qfilesystemwatcher_inotify.cpp2
-rw-r--r--src/corelib/io/qfsfileengine.cpp116
-rw-r--r--src/corelib/io/qfsfileengine_unix.cpp77
-rw-r--r--src/corelib/io/qfsfileengine_win.cpp74
-rw-r--r--src/corelib/io/qiodevice.cpp2
-rw-r--r--src/corelib/io/qnoncontiguousbytedevice.cpp20
-rw-r--r--src/corelib/io/qprocess.cpp26
-rw-r--r--src/corelib/io/qprocess_unix.cpp30
-rw-r--r--src/corelib/io/qprocess_win.cpp2
-rw-r--r--src/corelib/io/qresource.cpp8
-rw-r--r--src/corelib/io/qsavefile.cpp2
-rw-r--r--src/corelib/io/qsettings.cpp27
-rw-r--r--src/corelib/io/qsettings_p.h13
-rw-r--r--src/corelib/io/qsettings_wasm.cpp259
-rw-r--r--src/corelib/io/qurl.cpp2
-rw-r--r--src/corelib/itemmodels/qabstractitemmodel.cpp56
-rw-r--r--src/corelib/itemmodels/qabstractproxymodel.cpp2
-rw-r--r--src/corelib/itemmodels/qconcatenatetablesproxymodel.cpp2
-rw-r--r--src/corelib/itemmodels/qitemselectionmodel.cpp2
-rw-r--r--src/corelib/itemmodels/qitemselectionmodel.h8
-rw-r--r--src/corelib/kernel/qbasictimer.cpp10
-rw-r--r--src/corelib/kernel/qcoreapplication.cpp157
-rw-r--r--src/corelib/kernel/qcoreapplication_p.h10
-rw-r--r--src/corelib/kernel/qcoreapplication_win.cpp2
-rw-r--r--src/corelib/kernel/qcoreevent.cpp2
-rw-r--r--src/corelib/kernel/qeventdispatcher_glib.cpp40
-rw-r--r--src/corelib/kernel/qeventdispatcher_unix.cpp6
-rw-r--r--src/corelib/kernel/qeventdispatcher_win.cpp38
-rw-r--r--src/corelib/kernel/qeventloop.cpp43
-rw-r--r--src/corelib/kernel/qmetaobject.cpp80
-rw-r--r--src/corelib/kernel/qmetaobjectbuilder.cpp32
-rw-r--r--src/corelib/kernel/qmetatype.cpp49
-rw-r--r--src/corelib/kernel/qmetatype.h17
-rw-r--r--src/corelib/kernel/qmimedata.cpp2
-rw-r--r--src/corelib/kernel/qobject.cpp204
-rw-r--r--src/corelib/kernel/qobject_p.h8
-rw-r--r--src/corelib/kernel/qobjectcleanuphandler.cpp2
-rw-r--r--src/corelib/kernel/qsharedmemory.cpp2
-rw-r--r--src/corelib/kernel/qsharedmemory_systemv.cpp6
-rw-r--r--src/corelib/kernel/qsharedmemory_unix.cpp2
-rw-r--r--src/corelib/kernel/qsocketnotifier.cpp15
-rw-r--r--src/corelib/kernel/qtestsupport_core.cpp2
-rw-r--r--src/corelib/kernel/qtimer.cpp6
-rw-r--r--src/corelib/kernel/qtimerinfo_unix.cpp20
-rw-r--r--src/corelib/kernel/qtranslator.cpp38
-rw-r--r--src/corelib/kernel/qvariant.cpp20
-rw-r--r--src/corelib/kernel/qvariant.h18
-rw-r--r--src/corelib/kernel/qwineventnotifier.cpp6
-rw-r--r--src/corelib/mimetypes/mime/generate.bat73
-rw-r--r--src/corelib/mimetypes/mime/generate.pl113
-rw-r--r--src/corelib/mimetypes/mime/hexdump.ps143
-rw-r--r--src/corelib/mimetypes/mimetypes.pri29
-rw-r--r--src/corelib/mimetypes/qmimedatabase.cpp13
-rw-r--r--src/corelib/mimetypes/qmimeprovider.cpp99
-rw-r--r--src/corelib/mimetypes/qmimeprovider_p.h11
-rw-r--r--src/corelib/plugin/qfactoryloader.cpp8
-rw-r--r--src/corelib/plugin/qlibrary.cpp34
-rw-r--r--src/corelib/plugin/qlibrary_p.h2
-rw-r--r--src/corelib/plugin/qlibrary_unix.cpp2
-rw-r--r--src/corelib/plugin/qpluginloader.cpp8
-rw-r--r--src/corelib/serialization/qbinaryjson.cpp415
-rw-r--r--src/corelib/serialization/qbinaryjson_p.h617
-rw-r--r--src/corelib/serialization/qbinaryjsonarray.cpp137
-rw-r--r--src/corelib/serialization/qbinaryjsonarray_p.h98
-rw-r--r--src/corelib/serialization/qbinaryjsonobject.cpp149
-rw-r--r--src/corelib/serialization/qbinaryjsonobject_p.h97
-rw-r--r--src/corelib/serialization/qbinaryjsonvalue.cpp155
-rw-r--r--src/corelib/serialization/qbinaryjsonvalue_p.h134
-rw-r--r--src/corelib/serialization/qcborstream.cpp112
-rw-r--r--src/corelib/serialization/qcborstream.h2
-rw-r--r--src/corelib/serialization/qcborvalue.cpp129
-rw-r--r--src/corelib/serialization/qcborvalue.h12
-rw-r--r--src/corelib/serialization/qdatastream.cpp1
-rw-r--r--src/corelib/serialization/qdatastream.h17
-rw-r--r--src/corelib/serialization/qjson.cpp451
-rw-r--r--src/corelib/serialization/qjson_p.h789
-rw-r--r--src/corelib/serialization/qjsonarray.cpp239
-rw-r--r--src/corelib/serialization/qjsonarray.h26
-rw-r--r--src/corelib/serialization/qjsoncbor.cpp134
-rw-r--r--src/corelib/serialization/qjsondocument.cpp354
-rw-r--r--src/corelib/serialization/qjsondocument.h27
-rw-r--r--src/corelib/serialization/qjsonobject.cpp421
-rw-r--r--src/corelib/serialization/qjsonobject.h51
-rw-r--r--src/corelib/serialization/qjsonparser.cpp453
-rw-r--r--src/corelib/serialization/qjsonparser_p.h51
-rw-r--r--src/corelib/serialization/qjsonvalue.cpp291
-rw-r--r--src/corelib/serialization/qjsonvalue.h54
-rw-r--r--src/corelib/serialization/qjsonwriter.cpp75
-rw-r--r--src/corelib/serialization/qjsonwriter_p.h4
-rw-r--r--src/corelib/serialization/serialization.pri25
-rw-r--r--src/corelib/statemachine/qabstractstate.cpp6
-rw-r--r--src/corelib/statemachine/qabstracttransition.cpp4
-rw-r--r--src/corelib/statemachine/qeventtransition.cpp2
-rw-r--r--src/corelib/statemachine/qhistorystate.cpp2
-rw-r--r--src/corelib/statemachine/qsignaltransition.cpp2
-rw-r--r--src/corelib/statemachine/qstate.cpp20
-rw-r--r--src/corelib/statemachine/qstatemachine.cpp106
-rw-r--r--src/corelib/text/qbytearray.cpp311
-rw-r--r--src/corelib/text/qbytearray.h60
-rw-r--r--src/corelib/text/qchar.cpp258
-rw-r--r--src/corelib/text/qchar.h20
-rw-r--r--src/corelib/text/qlocale.cpp8
-rw-r--r--src/corelib/text/qlocale_tools.cpp2
-rw-r--r--src/corelib/text/qlocale_tools_p.h16
-rw-r--r--src/corelib/text/qregularexpression.cpp16
-rw-r--r--src/corelib/text/qt_attribution.json2
-rw-r--r--src/corelib/text/qtextboundaryfinder.cpp16
-rw-r--r--src/corelib/text/qunicodetables.cpp15190
-rw-r--r--src/corelib/text/qunicodetables_p.h15
-rw-r--r--src/corelib/text/qunicodetools.cpp47
-rw-r--r--src/corelib/thread/qbasicatomic.h6
-rw-r--r--src/corelib/thread/qexception.cpp2
-rw-r--r--src/corelib/thread/qfutureinterface.cpp2
-rw-r--r--src/corelib/thread/qmutex.cpp6
-rw-r--r--src/corelib/thread/qmutex_linux.cpp4
-rw-r--r--src/corelib/thread/qorderedmutexlocker_p.h2
-rw-r--r--src/corelib/thread/qreadwritelock.cpp10
-rw-r--r--src/corelib/thread/qresultstore.cpp2
-rw-r--r--src/corelib/thread/qsemaphore.h7
-rw-r--r--src/corelib/thread/qthread.cpp36
-rw-r--r--src/corelib/thread/qthread.h8
-rw-r--r--src/corelib/thread/qthread_unix.cpp28
-rw-r--r--src/corelib/thread/qthread_win.cpp6
-rw-r--r--src/corelib/thread/qthreadpool.cpp2
-rw-r--r--src/corelib/thread/qthreadstorage.cpp12
-rw-r--r--src/corelib/thread/qwaitcondition.h39
-rw-r--r--src/corelib/thread/qwaitcondition.qdoc34
-rw-r--r--src/corelib/thread/qwaitcondition_p.h153
-rw-r--r--src/corelib/thread/qwaitcondition_unix.cpp6
-rw-r--r--src/corelib/thread/thread.pri1
-rw-r--r--src/corelib/time/qdatetime.cpp6
-rw-r--r--src/corelib/time/qdatetimeparser.cpp6
-rw-r--r--src/corelib/time/qdatetimeparser_p.h2
-rw-r--r--src/corelib/time/qtimezone.cpp25
-rw-r--r--src/corelib/time/qtimezoneprivate.cpp48
-rw-r--r--src/corelib/time/qtimezoneprivate_icu.cpp12
-rw-r--r--src/corelib/time/qtimezoneprivate_p.h3
-rw-r--r--src/corelib/time/qtimezoneprivate_tz.cpp2
-rw-r--r--src/corelib/tools/qarraydata.cpp4
-rw-r--r--src/corelib/tools/qeasingcurve.cpp18
-rw-r--r--src/corelib/tools/qhash.cpp12
-rw-r--r--src/corelib/tools/qhash.h277
-rw-r--r--src/corelib/tools/qlist.cpp7
-rw-r--r--src/corelib/tools/qlist.h18
-rw-r--r--src/corelib/tools/qscopedvaluerollback.h6
-rw-r--r--src/corelib/tools/qset.h70
-rw-r--r--src/corelib/tools/qset.qdoc8
-rw-r--r--src/corelib/tools/qsimd.cpp133
-rw-r--r--src/dbus/Qt5DBusMacros.cmake8
-rw-r--r--src/dbus/qdbusabstractadaptor.cpp10
-rw-r--r--src/dbus/qdbusabstractinterface.cpp6
-rw-r--r--src/dbus/qdbusargument.cpp6
-rw-r--r--src/dbus/qdbusconnection.cpp34
-rw-r--r--src/dbus/qdbuscontext.cpp4
-rw-r--r--src/dbus/qdbusdemarshaller.cpp2
-rw-r--r--src/dbus/qdbusintegrator.cpp90
-rw-r--r--src/dbus/qdbusinterface.cpp8
-rw-r--r--src/dbus/qdbusinternalfilters.cpp2
-rw-r--r--src/dbus/qdbusmarshaller.cpp8
-rw-r--r--src/dbus/qdbusmessage.cpp28
-rw-r--r--src/dbus/qdbusmetaobject.cpp20
-rw-r--r--src/dbus/qdbusmetatype.cpp12
-rw-r--r--src/dbus/qdbusmisc.cpp6
-rw-r--r--src/dbus/qdbuspendingcall.cpp6
-rw-r--r--src/dbus/qdbuspendingreply.cpp4
-rw-r--r--src/dbus/qdbusreply.cpp2
-rw-r--r--src/dbus/qdbusunixfiledescriptor.cpp4
-rw-r--r--src/dbus/qdbusutil.cpp16
-rw-r--r--src/gui/accessible/qaccessible.cpp20
-rw-r--r--src/gui/accessible/qaccessibleobject.cpp10
-rw-r--r--src/gui/accessible/qplatformaccessibility.cpp2
-rw-r--r--src/gui/animation/qguivariantanimation.cpp10
-rw-r--r--src/gui/configure.json88
-rw-r--r--src/gui/gui.pro2
-rw-r--r--src/gui/image/qbmphandler.cpp4
-rw-r--r--src/gui/image/qicon.cpp16
-rw-r--r--src/gui/image/qiconloader.cpp2
-rw-r--r--src/gui/image/qimage.cpp52
-rw-r--r--src/gui/image/qimage_conversions.cpp285
-rw-r--r--src/gui/image/qimageiohandler.cpp2
-rw-r--r--src/gui/image/qimagereader.cpp12
-rw-r--r--src/gui/image/qimagereaderwriterhelpers.cpp6
-rw-r--r--src/gui/image/qimagewriter.cpp14
-rw-r--r--src/gui/image/qmovie.cpp2
-rw-r--r--src/gui/image/qpaintengine_pic.cpp6
-rw-r--r--src/gui/image/qpicture.cpp22
-rw-r--r--src/gui/image/qpixmap.cpp6
-rw-r--r--src/gui/image/qpixmap_blitter.cpp8
-rw-r--r--src/gui/image/qpixmapcache.cpp14
-rw-r--r--src/gui/image/qplatformpixmap.cpp2
-rw-r--r--src/gui/image/qpnghandler.cpp62
-rw-r--r--src/gui/image/qxpmhandler.cpp4
-rw-r--r--src/gui/itemmodels/qstandarditemmodel.cpp92
-rw-r--r--src/gui/kernel/qclipboard.cpp6
-rw-r--r--src/gui/kernel/qcursor.cpp14
-rw-r--r--src/gui/kernel/qdnd.cpp12
-rw-r--r--src/gui/kernel/qdrag.cpp6
-rw-r--r--src/gui/kernel/qevent.cpp8
-rw-r--r--src/gui/kernel/qguiapplication.cpp120
-rw-r--r--src/gui/kernel/qguiapplication_p.h2
-rw-r--r--src/gui/kernel/qguivariant.cpp16
-rw-r--r--src/gui/kernel/qhighdpiscaling_p.h2
-rw-r--r--src/gui/kernel/qkeymapper.cpp2
-rw-r--r--src/gui/kernel/qoffscreensurface.cpp14
-rw-r--r--src/gui/kernel/qopenglcontext.cpp56
-rw-r--r--src/gui/kernel/qopenglwindow.cpp6
-rw-r--r--src/gui/kernel/qpaintdevicewindow.cpp2
-rw-r--r--src/gui/kernel/qpalette.cpp2
-rw-r--r--src/gui/kernel/qplatformclipboard.cpp2
-rw-r--r--src/gui/kernel/qplatformcursor.cpp12
-rw-r--r--src/gui/kernel/qplatformdialoghelper.cpp22
-rw-r--r--src/gui/kernel/qplatforminputcontextfactory.cpp2
-rw-r--r--src/gui/kernel/qplatformintegration.cpp22
-rw-r--r--src/gui/kernel/qplatformintegration.h3
-rw-r--r--src/gui/kernel/qplatformintegrationplugin.cpp2
-rw-r--r--src/gui/kernel/qplatformnativeinterface.cpp20
-rw-r--r--src/gui/kernel/qplatformopenglcontext.cpp2
-rw-r--r--src/gui/kernel/qplatformscreen.cpp33
-rw-r--r--src/gui/kernel/qplatformscreen.h23
-rw-r--r--src/gui/kernel/qplatformtheme.cpp16
-rw-r--r--src/gui/kernel/qplatformtheme.h2
-rw-r--r--src/gui/kernel/qscreen.cpp21
-rw-r--r--src/gui/kernel/qscreen.h1
-rw-r--r--src/gui/kernel/qsessionmanager.cpp2
-rw-r--r--src/gui/kernel/qshortcutmap.cpp93
-rw-r--r--src/gui/kernel/qsimpledrag.cpp4
-rw-r--r--src/gui/kernel/qstylehints.cpp2
-rw-r--r--src/gui/kernel/qsurface.cpp2
-rw-r--r--src/gui/kernel/qsurfaceformat.cpp2
-rw-r--r--src/gui/kernel/qtestsupport_gui.cpp13
-rw-r--r--src/gui/kernel/qwindow.cpp18
-rw-r--r--src/gui/kernel/qwindowsysteminterface.cpp2
-rw-r--r--src/gui/opengl/qopengl.cpp2
-rw-r--r--src/gui/opengl/qopenglbuffer.cpp14
-rw-r--r--src/gui/opengl/qopenglcustomshaderstage.cpp8
-rw-r--r--src/gui/opengl/qopengldebug.cpp24
-rw-r--r--src/gui/opengl/qopenglengineshadermanager.cpp20
-rw-r--r--src/gui/opengl/qopenglframebufferobject.cpp12
-rw-r--r--src/gui/opengl/qopenglfunctions.cpp10
-rw-r--r--src/gui/opengl/qopenglfunctions_1_0.cpp6
-rw-r--r--src/gui/opengl/qopenglfunctions_1_1.cpp10
-rw-r--r--src/gui/opengl/qopenglfunctions_1_2.cpp14
-rw-r--r--src/gui/opengl/qopenglfunctions_1_3.cpp18
-rw-r--r--src/gui/opengl/qopenglfunctions_1_4.cpp22
-rw-r--r--src/gui/opengl/qopenglfunctions_1_5.cpp24
-rw-r--r--src/gui/opengl/qopenglfunctions_2_0.cpp26
-rw-r--r--src/gui/opengl/qopenglfunctions_2_1.cpp28
-rw-r--r--src/gui/opengl/qopenglfunctions_3_0.cpp30
-rw-r--r--src/gui/opengl/qopenglfunctions_3_1.cpp22
-rw-r--r--src/gui/opengl/qopenglfunctions_3_2_compatibility.cpp34
-rw-r--r--src/gui/opengl/qopenglfunctions_3_2_core.cpp24
-rw-r--r--src/gui/opengl/qopenglfunctions_3_3_compatibility.cpp38
-rw-r--r--src/gui/opengl/qopenglfunctions_3_3_core.cpp26
-rw-r--r--src/gui/opengl/qopenglfunctions_4_0_compatibility.cpp40
-rw-r--r--src/gui/opengl/qopenglfunctions_4_0_core.cpp28
-rw-r--r--src/gui/opengl/qopenglfunctions_4_1_compatibility.cpp42
-rw-r--r--src/gui/opengl/qopenglfunctions_4_1_core.cpp30
-rw-r--r--src/gui/opengl/qopenglfunctions_4_2_compatibility.cpp44
-rw-r--r--src/gui/opengl/qopenglfunctions_4_2_core.cpp32
-rw-r--r--src/gui/opengl/qopenglfunctions_4_3_compatibility.cpp46
-rw-r--r--src/gui/opengl/qopenglfunctions_4_3_core.cpp34
-rw-r--r--src/gui/opengl/qopenglfunctions_4_4_compatibility.cpp48
-rw-r--r--src/gui/opengl/qopenglfunctions_4_4_core.cpp36
-rw-r--r--src/gui/opengl/qopenglfunctions_4_5_compatibility.cpp52
-rw-r--r--src/gui/opengl/qopenglfunctions_4_5_core.cpp38
-rw-r--r--src/gui/opengl/qopenglpaintdevice.cpp2
-rw-r--r--src/gui/opengl/qopenglpaintengine.cpp22
-rw-r--r--src/gui/opengl/qopenglshaderprogram.cpp12
-rw-r--r--src/gui/opengl/qopengltexture.cpp32
-rw-r--r--src/gui/opengl/qopengltextureglyphcache.cpp34
-rw-r--r--src/gui/opengl/qopengltimerquery.cpp26
-rw-r--r--src/gui/opengl/qopenglversionfunctions.cpp2
-rw-r--r--src/gui/opengl/qopenglversionfunctionsfactory.cpp2
-rw-r--r--src/gui/opengl/qopenglvertexarrayobject.cpp16
-rw-r--r--src/gui/painting/qblittable.cpp2
-rw-r--r--src/gui/painting/qbrush.cpp14
-rw-r--r--src/gui/painting/qcosmeticstroker.cpp6
-rw-r--r--src/gui/painting/qdrawhelper.cpp92
-rw-r--r--src/gui/painting/qemulationpaintengine.cpp2
-rw-r--r--src/gui/painting/qimagescale.cpp4
-rw-r--r--src/gui/painting/qmemrotate.cpp6
-rw-r--r--src/gui/painting/qoutlinemapper.cpp2
-rw-r--r--src/gui/painting/qpagesize.cpp20
-rw-r--r--src/gui/painting/qpaintdevice.cpp6
-rw-r--r--src/gui/painting/qpaintengine.cpp12
-rw-r--r--src/gui/painting/qpaintengine_raster.cpp96
-rw-r--r--src/gui/painting/qpaintengineex.cpp32
-rw-r--r--src/gui/painting/qpainter.cpp79
-rw-r--r--src/gui/painting/qpainter_p.h20
-rw-r--r--src/gui/painting/qpainterpath.cpp8
-rw-r--r--src/gui/painting/qpathclipper.cpp10
-rw-r--r--src/gui/painting/qpathsimplifier.cpp42
-rw-r--r--src/gui/painting/qpdf.cpp18
-rw-r--r--src/gui/painting/qpdfwriter.cpp2
-rw-r--r--src/gui/painting/qpen.cpp2
-rw-r--r--src/gui/painting/qplatformbackingstore.cpp8
-rw-r--r--src/gui/painting/qplatformbackingstore.h2
-rw-r--r--src/gui/painting/qrasterizer.cpp4
-rw-r--r--src/gui/painting/qregion.cpp74
-rw-r--r--src/gui/painting/qstroker.cpp10
-rw-r--r--src/gui/painting/qtextureglyphcache.cpp2
-rw-r--r--src/gui/painting/qtriangulatingstroker.cpp4
-rw-r--r--src/gui/painting/qtriangulator.cpp28
-rw-r--r--src/gui/rhi/qrhi.cpp93
-rw-r--r--src/gui/rhi/qrhi_p.h10
-rw-r--r--src/gui/rhi/qrhid3d11.cpp38
-rw-r--r--src/gui/rhi/qrhid3d11_p_p.h3
-rw-r--r--src/gui/rhi/qrhigles2.cpp117
-rw-r--r--src/gui/rhi/qrhigles2_p_p.h12
-rw-r--r--src/gui/rhi/qrhimetal.mm119
-rw-r--r--src/gui/rhi/qrhimetal_p_p.h3
-rw-r--r--src/gui/rhi/qrhinull.cpp12
-rw-r--r--src/gui/rhi/qrhinull_p_p.h2
-rw-r--r--src/gui/rhi/qrhivulkan.cpp231
-rw-r--r--src/gui/rhi/qrhivulkan_p_p.h12
-rw-r--r--src/gui/rhi/qshader.cpp23
-rw-r--r--src/gui/rhi/qshader_p_p.h6
-rw-r--r--src/gui/rhi/qshaderdescription.cpp152
-rw-r--r--src/gui/rhi/qshaderdescription_p.h40
-rw-r--r--src/gui/rhi/rhi.pri6
-rw-r--r--src/gui/text/qabstracttextdocumentlayout.cpp2
-rw-r--r--src/gui/text/qcssparser.cpp34
-rw-r--r--src/gui/text/qcssparser_p.h2
-rw-r--r--src/gui/text/qdistancefield.cpp10
-rw-r--r--src/gui/text/qfont.cpp76
-rw-r--r--src/gui/text/qfontdatabase.cpp50
-rw-r--r--src/gui/text/qfontengine.cpp46
-rw-r--r--src/gui/text/qfontengine_qpf2.cpp8
-rw-r--r--src/gui/text/qfontmetrics.cpp90
-rw-r--r--src/gui/text/qglyphrun.cpp2
-rw-r--r--src/gui/text/qglyphrun_p.h3
-rw-r--r--src/gui/text/qharfbuzzng.cpp25
-rw-r--r--src/gui/text/qplatformfontdatabase.cpp2
-rw-r--r--src/gui/text/qrawfont.cpp8
-rw-r--r--src/gui/text/qstatictext.cpp4
-rw-r--r--src/gui/text/qsyntaxhighlighter.cpp4
-rw-r--r--src/gui/text/qtextcursor.cpp26
-rw-r--r--src/gui/text/qtextdocument.cpp6
-rw-r--r--src/gui/text/qtextdocument_p.cpp20
-rw-r--r--src/gui/text/qtextdocument_p.h6
-rw-r--r--src/gui/text/qtextdocumentfragment.cpp16
-rw-r--r--src/gui/text/qtextdocumentlayout.cpp24
-rw-r--r--src/gui/text/qtextdocumentwriter.cpp6
-rw-r--r--src/gui/text/qtextengine.cpp69
-rw-r--r--src/gui/text/qtextengine_p.h19
-rw-r--r--src/gui/text/qtexthtmlparser.cpp6
-rw-r--r--src/gui/text/qtextimagehandler.cpp2
-rw-r--r--src/gui/text/qtextlayout.cpp8
-rw-r--r--src/gui/text/qtextobject.cpp16
-rw-r--r--src/gui/text/qtextodfwriter.cpp12
-rw-r--r--src/gui/text/qtextoption.cpp8
-rw-r--r--src/gui/text/qzip.cpp16
-rw-r--r--src/gui/util/qdesktopservices.cpp2
-rw-r--r--src/gui/util/qgridlayoutengine.cpp28
-rw-r--r--src/gui/util/qgridlayoutengine_p.h4
-rw-r--r--src/gui/util/qshadergraphloader.cpp2
-rw-r--r--src/gui/util/qtexturefiledata.cpp2
-rw-r--r--src/gui/util/qvalidator.cpp2
-rw-r--r--src/gui/vulkan/qplatformvulkaninstance.cpp5
-rw-r--r--src/gui/vulkan/qplatformvulkaninstance.h1
-rw-r--r--src/gui/vulkan/qvulkaninstance.cpp17
-rw-r--r--src/gui/vulkan/qvulkaninstance.h1
-rw-r--r--src/gui/vulkan/qvulkanwindow.cpp115
-rw-r--r--src/gui/vulkan/qvulkanwindow.h7
-rw-r--r--src/gui/vulkan/qvulkanwindow_p.h3
-rw-r--r--src/network/access/qabstractprotocolhandler.cpp2
-rw-r--r--src/network/access/qftp.cpp20
-rw-r--r--src/network/access/qhttpmultipart.cpp2
-rw-r--r--src/network/access/qhttpnetworkconnection.cpp16
-rw-r--r--src/network/access/qhttpnetworkconnectionchannel.cpp20
-rw-r--r--src/network/access/qhttpnetworkreply.cpp10
-rw-r--r--src/network/access/qhttpnetworkrequest.cpp2
-rw-r--r--src/network/access/qhttpprotocolhandler.cpp4
-rw-r--r--src/network/access/qhttpthreaddelegate.cpp18
-rw-r--r--src/network/access/qnetworkaccessauthenticationmanager.cpp2
-rw-r--r--src/network/access/qnetworkaccessbackend.cpp10
-rw-r--r--src/network/access/qnetworkaccesscache.cpp22
-rw-r--r--src/network/access/qnetworkaccessdebugpipebackend.cpp6
-rw-r--r--src/network/access/qnetworkaccessfilebackend.cpp6
-rw-r--r--src/network/access/qnetworkaccessftpbackend.cpp12
-rw-r--r--src/network/access/qnetworkaccessmanager.cpp44
-rw-r--r--src/network/access/qnetworkaccessmanager.h3
-rw-r--r--src/network/access/qnetworkaccessmanager_p.h2
-rw-r--r--src/network/access/qnetworkcookie.cpp2
-rw-r--r--src/network/access/qnetworkdiskcache.cpp22
-rw-r--r--src/network/access/qnetworkreplyfileimpl.cpp2
-rw-r--r--src/network/access/qnetworkreplyhttpimpl.cpp46
-rw-r--r--src/network/access/qnetworkreplyhttpimpl_p.h7
-rw-r--r--src/network/access/qnetworkreplyimpl.cpp26
-rw-r--r--src/network/access/qnetworkrequest.cpp71
-rw-r--r--src/network/access/qnetworkrequest.h18
-rw-r--r--src/network/access/qspdyprotocolhandler.cpp24
-rw-r--r--src/network/bearer/qnetworkconfigmanager.cpp4
-rw-r--r--src/network/bearer/qnetworkconfigmanager_p.cpp6
-rw-r--r--src/network/bearer/qnetworkconfiguration.cpp2
-rw-r--r--src/network/bearer/qnetworksession.cpp2
-rw-r--r--src/network/configure.json23
-rw-r--r--src/network/kernel/qauthenticator.cpp10
-rw-r--r--src/network/kernel/qdnslookup.cpp4
-rw-r--r--src/network/kernel/qdnslookup_unix.cpp8
-rw-r--r--src/network/kernel/qhostaddress.cpp2
-rw-r--r--src/network/kernel/qhostinfo.cpp4
-rw-r--r--src/network/kernel/qhostinfo_unix.cpp8
-rw-r--r--src/network/kernel/qnetworkinterface.cpp4
-rw-r--r--src/network/kernel/qnetworkinterface_p.h2
-rw-r--r--src/network/kernel/qnetworkinterface_unix_p.h2
-rw-r--r--src/network/kernel/qnetworkproxy.cpp12
-rw-r--r--src/network/kernel/qnetworkproxy_mac.cpp7
-rw-r--r--src/network/kernel/qurlinfo.cpp10
-rw-r--r--src/network/socket/qabstractsocket.cpp14
-rw-r--r--src/network/socket/qabstractsocketengine.cpp6
-rw-r--r--src/network/socket/qhttpsocketengine.cpp16
-rw-r--r--src/network/socket/qlocalserver.cpp2
-rw-r--r--src/network/socket/qlocalserver_unix.cpp2
-rw-r--r--src/network/socket/qlocalsocket.cpp2
-rw-r--r--src/network/socket/qlocalsocket_unix.cpp13
-rw-r--r--src/network/socket/qnativesocketengine.cpp18
-rw-r--r--src/network/socket/qnativesocketengine_unix.cpp6
-rw-r--r--src/network/socket/qnativesocketengine_win.cpp15
-rw-r--r--src/network/socket/qsocks5socketengine.cpp28
-rw-r--r--src/network/socket/qtcpserver.cpp6
-rw-r--r--src/network/ssl/qdtls_openssl.cpp71
-rw-r--r--src/network/ssl/qdtls_openssl_p.h5
-rw-r--r--src/network/ssl/qssl.h10
-rw-r--r--src/network/ssl/qsslconfiguration.cpp78
-rw-r--r--src/network/ssl/qsslconfiguration.h5
-rw-r--r--src/network/ssl/qsslcontext_openssl.cpp550
-rw-r--r--src/network/ssl/qsslcontext_openssl11.cpp467
-rw-r--r--src/network/ssl/qsslcontext_openssl_p.h8
-rw-r--r--src/network/ssl/qsslcontext_opensslpre11.cpp407
-rw-r--r--src/network/ssl/qsslellipticcurve_openssl.cpp4
-rw-r--r--src/network/ssl/qsslkey_openssl.cpp24
-rw-r--r--src/network/ssl/qsslsocket.cpp47
-rw-r--r--src/network/ssl/qsslsocket.h16
-rw-r--r--src/network/ssl/qsslsocket_openssl.cpp276
-rw-r--r--src/network/ssl/qsslsocket_openssl11.cpp271
-rw-r--r--src/network/ssl/qsslsocket_openssl11_symbols_p.h195
-rw-r--r--src/network/ssl/qsslsocket_openssl_p.h2
-rw-r--r--src/network/ssl/qsslsocket_openssl_symbols.cpp325
-rw-r--r--src/network/ssl/qsslsocket_openssl_symbols_p.h214
-rw-r--r--src/network/ssl/qsslsocket_opensslpre11.cpp408
-rw-r--r--src/network/ssl/qsslsocket_opensslpre11_symbols_p.h202
-rw-r--r--src/network/ssl/qsslsocket_p.h1
-rw-r--r--src/network/ssl/qsslsocket_schannel.cpp131
-rw-r--r--src/network/ssl/qsslsocket_schannel_p.h1
-rw-r--r--src/network/ssl/qsslsocket_winrt.cpp5
-rw-r--r--src/network/ssl/ssl.pri12
-rw-r--r--src/opengl/qgl.cpp3
-rw-r--r--src/opengl/qglfunctions.cpp2
-rw-r--r--src/platformheaders/nativecontexts/qglxnativecontext.h6
-rw-r--r--src/platformsupport/eglconvenience/qeglconvenience.cpp6
-rw-r--r--src/platformsupport/eglconvenience/qeglpbuffer_p.h2
-rw-r--r--src/platformsupport/eglconvenience/qeglplatformcontext.cpp10
-rw-r--r--src/platformsupport/eglconvenience/qeglplatformcontext_p.h2
-rw-r--r--src/platformsupport/eventdispatchers/qwindowsguieventdispatcher.cpp2
-rw-r--r--src/platformsupport/fbconvenience/qfbscreen.cpp2
-rw-r--r--src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp87
-rw-r--r--src/platformsupport/fontdatabases/fontconfig/qfontenginemultifontconfig.cpp4
-rw-r--r--src/platformsupport/fontdatabases/freetype/qfontengine_ft.cpp84
-rw-r--r--src/platformsupport/fontdatabases/windows/qwindowsfontdatabase.cpp22
-rw-r--r--src/platformsupport/fontdatabases/windows/qwindowsfontdatabase_ft.cpp20
-rw-r--r--src/platformsupport/fontdatabases/windows/qwindowsfontenginedirectwrite.cpp2
-rw-r--r--src/platformsupport/glxconvenience/qglxconvenience.cpp4
-rw-r--r--src/platformsupport/input/evdevmouse/qevdevmousehandler.cpp3
-rw-r--r--src/platformsupport/input/evdevmouse/qevdevmousehandler_p.h8
-rw-r--r--src/platformsupport/input/evdevtouch/qevdevtouchhandler.cpp15
-rw-r--r--src/platformsupport/input/integrityhid/qintegrityhidmanager.h2
-rw-r--r--src/platformsupport/input/libinput/qlibinputtouch.cpp2
-rw-r--r--src/platformsupport/kmsconvenience/qkmsdevice.cpp119
-rw-r--r--src/platformsupport/kmsconvenience/qkmsdevice_p.h17
-rw-r--r--src/platformsupport/themes/genericunix/qgenericunixthemes_p.h4
-rw-r--r--src/plugins/bearer/qnetworksession_impl.cpp6
-rw-r--r--src/plugins/imageformats/gif/main.cpp2
-rw-r--r--src/plugins/imageformats/gif/qgifhandler.cpp12
-rw-r--r--src/plugins/imageformats/ico/main.cpp4
-rw-r--r--src/plugins/imageformats/jpeg/main.cpp4
-rw-r--r--src/plugins/imageformats/jpeg/qjpeghandler.cpp43
-rw-r--r--src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.h2
-rw-r--r--src/plugins/platforms/android/androidjniinput.cpp4
-rw-r--r--src/plugins/platforms/android/androidjnimain.cpp69
-rw-r--r--src/plugins/platforms/android/androidjnimain.h13
-rw-r--r--src/plugins/platforms/android/qandroidplatformintegration.cpp54
-rw-r--r--src/plugins/platforms/android/qandroidplatformintegration.h28
-rw-r--r--src/plugins/platforms/android/qandroidplatformscreen.cpp11
-rw-r--r--src/plugins/platforms/android/qandroidplatformwindow.cpp32
-rw-r--r--src/plugins/platforms/android/qandroidplatformwindow.h4
-rw-r--r--src/plugins/platforms/cocoa/cocoa.pro5
-rw-r--r--src/plugins/platforms/cocoa/qcocoaapplicationdelegate.mm20
-rw-r--r--src/plugins/platforms/cocoa/qcocoaclipboard.mm2
-rw-r--r--src/plugins/platforms/cocoa/qcocoaeventdispatcher.h1
-rw-r--r--src/plugins/platforms/cocoa/qcocoaeventdispatcher.mm94
-rw-r--r--src/plugins/platforms/cocoa/qcocoaintegration.h4
-rw-r--r--src/plugins/platforms/cocoa/qcocoaintegration.mm10
-rw-r--r--src/plugins/platforms/cocoa/qcocoasessionmanager.cpp88
-rw-r--r--src/plugins/platforms/cocoa/qcocoasessionmanager.h81
-rw-r--r--src/plugins/platforms/cocoa/qcocoasystemtrayicon.h2
-rw-r--r--src/plugins/platforms/cocoa/qcocoasystemtrayicon.mm9
-rw-r--r--src/plugins/platforms/cocoa/qcocoatheme.h2
-rw-r--r--src/plugins/platforms/cocoa/qmacclipboard.mm8
-rw-r--r--src/plugins/platforms/eglfs/api/qeglfscontext.cpp4
-rw-r--r--src/plugins/platforms/eglfs/api/qeglfscursor.cpp2
-rw-r--r--src/plugins/platforms/eglfs/api/qeglfsintegration.cpp20
-rw-r--r--src/plugins/platforms/eglfs/api/qeglfsoffscreenwindow.cpp2
-rw-r--r--src/plugins/platforms/eglfs/api/qeglfsscreen.cpp4
-rw-r--r--src/plugins/platforms/eglfs/api/qeglfswindow.cpp13
-rw-r--r--src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmcursor.cpp48
-rw-r--r--src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmcursor.h2
-rw-r--r--src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmdevice.cpp14
-rw-r--r--src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmdevice.h4
-rw-r--r--src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration.cpp2
-rw-r--r--src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmscreen.cpp44
-rw-r--r--src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmscreen.h16
-rw-r--r--src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldevicescreen.cpp2
-rw-r--r--src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldevicescreen.h2
-rw-r--r--src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/eglfs_kms_support.pro6
-rw-r--r--src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsdevice.h6
-rw-r--r--src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmseventreader.cpp218
-rw-r--r--src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmseventreader.h99
-rw-r--r--src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsintegration.cpp2
-rw-r--r--src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsscreen.cpp4
-rw-r--r--src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsscreen.h11
-rw-r--r--src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_vsp2/qeglfskmsvsp2screen.cpp2
-rw-r--r--src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_vsp2/qeglfskmsvsp2screen.h2
-rw-r--r--src/plugins/platforms/eglfs/deviceintegration/eglfs_x11/qeglfsx11integration.cpp16
-rw-r--r--src/plugins/platforms/eglfs/deviceintegration/eglfs_x11/qeglfsx11integration.h2
-rw-r--r--src/plugins/platforms/eglfs/qeglfsmain.cpp2
-rw-r--r--src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileengineassetslibrary.mm2
-rw-r--r--src/plugins/platforms/ios/qioswindow.mm11
-rw-r--r--src/plugins/platforms/ios/quiview.h4
-rw-r--r--src/plugins/platforms/ios/quiview.mm35
-rw-r--r--src/plugins/platforms/offscreen/main.cpp2
-rw-r--r--src/plugins/platforms/offscreen/qoffscreencommon.cpp10
-rw-r--r--src/plugins/platforms/offscreen/qoffscreenintegration.cpp2
-rw-r--r--src/plugins/platforms/offscreen/qoffscreenintegration_x11.cpp12
-rw-r--r--src/plugins/platforms/offscreen/qoffscreenwindow.cpp2
-rw-r--r--src/plugins/platforms/vnc/main.cpp2
-rw-r--r--src/plugins/platforms/vnc/qvnc.cpp4
-rw-r--r--src/plugins/platforms/vnc/qvncclient.cpp3
-rw-r--r--src/plugins/platforms/vnc/qvncscreen.cpp2
-rw-r--r--src/plugins/platforms/wasm/qwasmscreen.cpp2
-rw-r--r--src/plugins/platforms/windows/qwindowsdialoghelpers.cpp4
-rw-r--r--src/plugins/platforms/windows/qwindowsdropdataobject.cpp2
-rw-r--r--src/plugins/platforms/windows/qwindowsglcontext.cpp12
-rw-r--r--src/plugins/platforms/windows/qwindowsglcontext.h4
-rw-r--r--src/plugins/platforms/windows/qwindowskeymapper.cpp6
-rw-r--r--src/plugins/platforms/windows/qwindowsmime.cpp10
-rw-r--r--src/plugins/platforms/windows/qwindowsmime.h3
-rw-r--r--src/plugins/platforms/windows/qwindowsmousehandler.cpp4
-rw-r--r--src/plugins/platforms/windows/qwindowspointerhandler.cpp2
-rw-r--r--src/plugins/platforms/windows/qwindowsscreen.cpp6
-rw-r--r--src/plugins/platforms/windows/qwindowsscreen.h2
-rw-r--r--src/plugins/platforms/windows/qwindowstheme.cpp8
-rw-r--r--src/plugins/platforms/windows/qwindowstheme.h2
-rw-r--r--src/plugins/platforms/windows/qwindowswindow.cpp2
-rw-r--r--src/plugins/platforms/windows/uiautomation/qwindowsuiaselectionprovider.cpp3
-rw-r--r--src/plugins/platforms/windows/uiautomation/qwindowsuiatableitemprovider.cpp4
-rw-r--r--src/plugins/platforms/xcb/gl_integrations/xcb_egl/qxcbeglcontext.h2
-rw-r--r--src/plugins/platforms/xcb/gl_integrations/xcb_egl/qxcbeglwindow.cpp2
-rw-r--r--src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp52
-rw-r--r--src/plugins/platforms/xcb/gl_integrations/xcb_glx/qxcbglxintegration.cpp4
-rw-r--r--src/plugins/platforms/xcb/qxcbatom.cpp2
-rw-r--r--src/plugins/platforms/xcb/qxcbbackingstore.cpp12
-rw-r--r--src/plugins/platforms/xcb/qxcbclipboard.cpp22
-rw-r--r--src/plugins/platforms/xcb/qxcbconnection.cpp44
-rw-r--r--src/plugins/platforms/xcb/qxcbconnection.h18
-rw-r--r--src/plugins/platforms/xcb/qxcbconnection_basic.cpp23
-rw-r--r--src/plugins/platforms/xcb/qxcbconnection_basic.h6
-rw-r--r--src/plugins/platforms/xcb/qxcbconnection_xi2.cpp6
-rw-r--r--src/plugins/platforms/xcb/qxcbcursor.cpp36
-rw-r--r--src/plugins/platforms/xcb/qxcbdrag.cpp22
-rw-r--r--src/plugins/platforms/xcb/qxcbdrag.h4
-rw-r--r--src/plugins/platforms/xcb/qxcbimage.cpp8
-rw-r--r--src/plugins/platforms/xcb/qxcbintegration.cpp4
-rw-r--r--src/plugins/platforms/xcb/qxcbkeyboard.cpp29
-rw-r--r--src/plugins/platforms/xcb/qxcbkeyboard.h20
-rw-r--r--src/plugins/platforms/xcb/qxcbnativeinterface.cpp10
-rw-r--r--src/plugins/platforms/xcb/qxcbscreen.cpp10
-rw-r--r--src/plugins/platforms/xcb/qxcbsessionmanager.cpp24
-rw-r--r--src/plugins/platforms/xcb/qxcbsystemtraytracker.cpp4
-rw-r--r--src/plugins/platforms/xcb/qxcbvulkaninstance.cpp2
-rw-r--r--src/plugins/platforms/xcb/qxcbvulkanwindow.cpp2
-rw-r--r--src/plugins/platforms/xcb/qxcbwindow.cpp52
-rw-r--r--src/plugins/platforms/xcb/qxcbwindow.h2
-rw-r--r--src/plugins/platforms/xcb/qxcbxsettings.cpp2
-rw-r--r--src/plugins/platforms/xcb/xcb-static/xcb-static.pro80
-rw-r--r--src/plugins/platforms/xcb/xcb.pro2
-rw-r--r--src/plugins/platforms/xcb/xcb_qpa_lib.pro30
-rw-r--r--src/plugins/platformthemes/gtk3/main.cpp2
-rw-r--r--src/plugins/platformthemes/gtk3/qgtk3dialoghelpers.cpp8
-rw-r--r--src/plugins/platformthemes/gtk3/qgtk3menu.cpp4
-rw-r--r--src/plugins/platformthemes/gtk3/qgtk3theme.cpp10
-rw-r--r--src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportaltheme.h2
-rw-r--r--src/plugins/sqldrivers/ibase/qsql_ibase.cpp5
-rw-r--r--src/plugins/sqldrivers/mysql/qsql_mysql.cpp156
-rw-r--r--src/plugins/sqldrivers/mysql/qsql_mysql_p.h4
-rw-r--r--src/plugins/sqldrivers/psql/qsql_psql.cpp5
-rw-r--r--src/plugins/sqldrivers/sqlite/qsql_sqlite.cpp5
-rw-r--r--src/plugins/sqldrivers/sqlite2/qsql_sqlite2_p.h4
-rw-r--r--src/plugins/sqldrivers/tds/qsql_tds_p.h4
-rw-r--r--src/plugins/styles/mac/qmacstyle_mac.mm20
-rw-r--r--src/plugins/styles/mac/qmacstyle_mac_p_p.h2
-rw-r--r--src/plugins/styles/windowsvista/qwindowsvistastyle.cpp2
-rw-r--r--src/plugins/styles/windowsvista/windowsvista.pro4
-rw-r--r--src/printsupport/dialogs/qpagesetupdialog_unix.cpp2
-rw-r--r--src/printsupport/dialogs/qprintdialog_unix.cpp2
-rw-r--r--src/printsupport/dialogs/qprintsettingsoutput.ui8
-rw-r--r--src/printsupport/kernel/qpaintengine_alpha.cpp12
-rw-r--r--src/printsupport/kernel/qpaintengine_alpha_p.h2
-rw-r--r--src/printsupport/kernel/qplatformprintplugin.h2
-rw-r--r--src/printsupport/kernel/qprinter_p.h10
-rw-r--r--src/sql/kernel/qsqldatabase.cpp6
-rw-r--r--src/sql/kernel/qsqldriver.cpp5
-rw-r--r--src/sql/kernel/qsqldriver.h3
-rw-r--r--src/sql/models/qsqlrelationaltablemodel.cpp14
-rw-r--r--src/sql/models/qsqltablemodel.cpp4
-rw-r--r--src/src.pro4
-rw-r--r--src/testlib/qtestcase.cpp85
-rw-r--r--src/tools/androidtestrunner/main.cpp2
-rw-r--r--src/tools/bootstrap/bootstrap.pro3
-rw-r--r--src/tools/moc/collectjson.cpp103
-rw-r--r--src/tools/moc/collectjson.h42
-rw-r--r--src/tools/moc/generator.cpp2
-rw-r--r--src/tools/moc/main.cpp41
-rw-r--r--src/tools/moc/moc.cpp200
-rw-r--r--src/tools/moc/moc.h12
-rw-r--r--src/tools/moc/moc.pri7
-rw-r--r--src/tools/moc/parser.cpp2
-rw-r--r--src/tools/moc/preprocessor.cpp2
-rw-r--r--src/tools/uic/cpp/cppwriteinitialization.cpp8
-rw-r--r--src/tools/uic/cpp/cppwriteinitialization.h5
-rw-r--r--src/tools/uic/treewalker.h2
-rw-r--r--src/tools/uic/ui4.cpp178
-rw-r--r--src/tools/uic/ui4.h116
-rw-r--r--src/widgets/Qt5WidgetsMacros.cmake2
-rw-r--r--src/widgets/accessible/complexwidgets.cpp18
-rw-r--r--src/widgets/accessible/itemviews.cpp50
-rw-r--r--src/widgets/accessible/qaccessiblemenu.cpp14
-rw-r--r--src/widgets/accessible/qaccessiblewidget.cpp8
-rw-r--r--src/widgets/accessible/qaccessiblewidgetfactory.cpp6
-rw-r--r--src/widgets/accessible/qaccessiblewidgets.cpp28
-rw-r--r--src/widgets/accessible/simplewidgets.cpp4
-rw-r--r--src/widgets/dialogs/qcolordialog.cpp22
-rw-r--r--src/widgets/dialogs/qdialog.cpp14
-rw-r--r--src/widgets/dialogs/qerrormessage.cpp10
-rw-r--r--src/widgets/dialogs/qfiledialog.cpp48
-rw-r--r--src/widgets/dialogs/qfilesystemmodel.cpp9
-rw-r--r--src/widgets/dialogs/qfilesystemmodel_p.h2
-rw-r--r--src/widgets/dialogs/qfontdialog.cpp22
-rw-r--r--src/widgets/dialogs/qinputdialog.cpp10
-rw-r--r--src/widgets/dialogs/qmessagebox.cpp56
-rw-r--r--src/widgets/dialogs/qprogressdialog.cpp24
-rw-r--r--src/widgets/dialogs/qsidebar.cpp6
-rw-r--r--src/widgets/dialogs/qwizard.cpp40
-rw-r--r--src/widgets/doc/snippets/javastyle.cpp2
-rw-r--r--src/widgets/doc/snippets/qsplashscreen/main.cpp7
-rw-r--r--src/widgets/doc/src/widgets-and-layouts/stylesheet.qdoc17
-rw-r--r--src/widgets/effects/qgraphicseffect.cpp2
-rw-r--r--src/widgets/effects/qpixmapfilter.cpp10
-rw-r--r--src/widgets/graphicsview/qgraphicsanchorlayout.cpp4
-rw-r--r--src/widgets/graphicsview/qgraphicsanchorlayout_p.cpp50
-rw-r--r--src/widgets/graphicsview/qgraphicsgridlayout.cpp8
-rw-r--r--src/widgets/graphicsview/qgraphicsgridlayoutengine.cpp2
-rw-r--r--src/widgets/graphicsview/qgraphicsgridlayoutengine_p.h2
-rw-r--r--src/widgets/graphicsview/qgraphicsitem.cpp84
-rw-r--r--src/widgets/graphicsview/qgraphicsitemanimation.cpp2
-rw-r--r--src/widgets/graphicsview/qgraphicslayout_p.cpp2
-rw-r--r--src/widgets/graphicsview/qgraphicslayoutitem.cpp2
-rw-r--r--src/widgets/graphicsview/qgraphicslayoutstyleinfo.cpp2
-rw-r--r--src/widgets/graphicsview/qgraphicslinearlayout.cpp12
-rw-r--r--src/widgets/graphicsview/qgraphicsproxywidget.cpp54
-rw-r--r--src/widgets/graphicsview/qgraphicsscene.cpp156
-rw-r--r--src/widgets/graphicsview/qgraphicssceneevent.cpp23
-rw-r--r--src/widgets/graphicsview/qgraphicstransform.cpp4
-rw-r--r--src/widgets/graphicsview/qgraphicsview.cpp39
-rw-r--r--src/widgets/graphicsview/qgraphicswidget.cpp24
-rw-r--r--src/widgets/graphicsview/qgraphicswidget_p.cpp8
-rw-r--r--src/widgets/graphicsview/qsimplex_p.cpp10
-rw-r--r--src/widgets/itemviews/qabstractitemdelegate.cpp44
-rw-r--r--src/widgets/itemviews/qabstractitemview.cpp53
-rw-r--r--src/widgets/itemviews/qcolumnview.cpp12
-rw-r--r--src/widgets/itemviews/qcolumnviewgrip.cpp2
-rw-r--r--src/widgets/itemviews/qcolumnviewgrip_p.h2
-rw-r--r--src/widgets/itemviews/qdatawidgetmapper.cpp8
-rw-r--r--src/widgets/itemviews/qdirmodel.cpp26
-rw-r--r--src/widgets/itemviews/qdirmodel.h11
-rw-r--r--src/widgets/itemviews/qheaderview.cpp18
-rw-r--r--src/widgets/itemviews/qitemdelegate.cpp18
-rw-r--r--src/widgets/itemviews/qitemeditorfactory.cpp14
-rw-r--r--src/widgets/itemviews/qlistview.cpp14
-rw-r--r--src/widgets/itemviews/qlistwidget.cpp31
-rw-r--r--src/widgets/itemviews/qlistwidget.h6
-rw-r--r--src/widgets/itemviews/qstyleditemdelegate.cpp10
-rw-r--r--src/widgets/itemviews/qtableview.cpp2
-rw-r--r--src/widgets/itemviews/qtablewidget.cpp68
-rw-r--r--src/widgets/itemviews/qtablewidget.h6
-rw-r--r--src/widgets/itemviews/qtreeview.cpp18
-rw-r--r--src/widgets/itemviews/qtreewidget.cpp64
-rw-r--r--src/widgets/itemviews/qtreewidget.h6
-rw-r--r--src/widgets/itemviews/qtreewidgetitemiterator.cpp16
-rw-r--r--src/widgets/kernel/qaction.cpp2
-rw-r--r--src/widgets/kernel/qaction.h2
-rw-r--r--src/widgets/kernel/qactiongroup.cpp6
-rw-r--r--src/widgets/kernel/qapplication.cpp176
-rw-r--r--src/widgets/kernel/qboxlayout.cpp22
-rw-r--r--src/widgets/kernel/qdesktopwidget.cpp2
-rw-r--r--src/widgets/kernel/qformlayout.cpp102
-rw-r--r--src/widgets/kernel/qgesture.cpp4
-rw-r--r--src/widgets/kernel/qgesture_p.h3
-rw-r--r--src/widgets/kernel/qgesturemanager.cpp18
-rw-r--r--src/widgets/kernel/qgridlayout.cpp28
-rw-r--r--src/widgets/kernel/qlayout.cpp44
-rw-r--r--src/widgets/kernel/qlayout_p.h2
-rw-r--r--src/widgets/kernel/qlayoutengine.cpp13
-rw-r--r--src/widgets/kernel/qlayoutengine_p.h6
-rw-r--r--src/widgets/kernel/qlayoutitem.cpp20
-rw-r--r--src/widgets/kernel/qlayoutitem.h8
-rw-r--r--src/widgets/kernel/qmacgesturerecognizer.cpp4
-rw-r--r--src/widgets/kernel/qopenglwidget.cpp26
-rw-r--r--src/widgets/kernel/qshortcut.cpp74
-rw-r--r--src/widgets/kernel/qshortcut.h60
-rw-r--r--src/widgets/kernel/qstackedlayout.cpp14
-rw-r--r--src/widgets/kernel/qstandardgestures.cpp4
-rw-r--r--src/widgets/kernel/qtestsupport_widgets.h2
-rw-r--r--src/widgets/kernel/qtooltip.cpp16
-rw-r--r--src/widgets/kernel/qwhatsthis.cpp16
-rw-r--r--src/widgets/kernel/qwidget.cpp194
-rw-r--r--src/widgets/kernel/qwidget.h12
-rw-r--r--src/widgets/kernel/qwidget_p.h4
-rw-r--r--src/widgets/kernel/qwidgetaction.cpp8
-rw-r--r--src/widgets/kernel/qwidgetrepaintmanager.cpp16
-rw-r--r--src/widgets/kernel/qwidgetsvariant.cpp6
-rw-r--r--src/widgets/kernel/qwidgetwindow.cpp34
-rw-r--r--src/widgets/kernel/qwindowcontainer.cpp10
-rw-r--r--src/widgets/kernel/qwindowcontainer_p.h2
-rw-r--r--src/widgets/kernel/win.pri1
-rw-r--r--src/widgets/statemachine/qguistatemachine.cpp2
-rw-r--r--src/widgets/styles/qcommonstyle.cpp32
-rw-r--r--src/widgets/styles/qcommonstyle_p.h2
-rw-r--r--src/widgets/styles/qfusionstyle.cpp10
-rw-r--r--src/widgets/styles/qproxystyle.cpp2
-rw-r--r--src/widgets/styles/qstyle.cpp2
-rw-r--r--src/widgets/styles/qstylefactory.cpp2
-rw-r--r--src/widgets/styles/qstylehelper.cpp2
-rw-r--r--src/widgets/styles/qstyleoption.cpp10
-rw-r--r--src/widgets/styles/qstylesheetstyle.cpp171
-rw-r--r--src/widgets/util/qcolormap.cpp4
-rw-r--r--src/widgets/util/qcompleter.cpp12
-rw-r--r--src/widgets/util/qflickgesture.cpp38
-rw-r--r--src/widgets/util/qscroller.cpp10
-rw-r--r--src/widgets/util/qscrollerproperties.cpp6
-rw-r--r--src/widgets/util/qsystemtrayicon.cpp10
-rw-r--r--src/widgets/util/qsystemtrayicon_x11.cpp4
-rw-r--r--src/widgets/util/qundogroup.cpp26
-rw-r--r--src/widgets/util/qundostack.cpp18
-rw-r--r--src/widgets/util/qundoview.cpp32
-rw-r--r--src/widgets/widgets.pro2
-rw-r--r--src/widgets/widgets/qabstractbutton.cpp14
-rw-r--r--src/widgets/widgets/qabstractbutton.h2
-rw-r--r--src/widgets/widgets/qabstractscrollarea.cpp22
-rw-r--r--src/widgets/widgets/qabstractslider.cpp4
-rw-r--r--src/widgets/widgets/qabstractspinbox.cpp14
-rw-r--r--src/widgets/widgets/qbuttongroup.cpp6
-rw-r--r--src/widgets/widgets/qcalendarwidget.cpp44
-rw-r--r--src/widgets/widgets/qcombobox.cpp167
-rw-r--r--src/widgets/widgets/qcombobox.h4
-rw-r--r--src/widgets/widgets/qcombobox_p.h88
-rw-r--r--src/widgets/widgets/qdatetimeedit.cpp19
-rw-r--r--src/widgets/widgets/qdialogbuttonbox.cpp24
-rw-r--r--src/widgets/widgets/qdockarealayout.cpp234
-rw-r--r--src/widgets/widgets/qdockwidget.cpp91
-rw-r--r--src/widgets/widgets/qdockwidget_p.h4
-rw-r--r--src/widgets/widgets/qeffects.cpp16
-rw-r--r--src/widgets/widgets/qfocusframe.cpp20
-rw-r--r--src/widgets/widgets/qgroupbox.cpp6
-rw-r--r--src/widgets/widgets/qgroupbox.h2
-rw-r--r--src/widgets/widgets/qkeysequenceedit.cpp2
-rw-r--r--src/widgets/widgets/qlcdnumber.cpp6
-rw-r--r--src/widgets/widgets/qlineedit.cpp20
-rw-r--r--src/widgets/widgets/qlineedit_p.cpp6
-rw-r--r--src/widgets/widgets/qlineedit_p.h2
-rw-r--r--src/widgets/widgets/qmaccocoaviewcontainer_mac.mm2
-rw-r--r--src/widgets/widgets/qmainwindow.cpp16
-rw-r--r--src/widgets/widgets/qmainwindowlayout.cpp88
-rw-r--r--src/widgets/widgets/qmainwindowlayout_p.h2
-rw-r--r--src/widgets/widgets/qmdiarea.cpp68
-rw-r--r--src/widgets/widgets/qmdisubwindow.cpp98
-rw-r--r--src/widgets/widgets/qmenu.cpp156
-rw-r--r--src/widgets/widgets/qmenubar.cpp127
-rw-r--r--src/widgets/widgets/qplaintextedit.cpp10
-rw-r--r--src/widgets/widgets/qprogressbar.cpp2
-rw-r--r--src/widgets/widgets/qpushbutton.cpp6
-rw-r--r--src/widgets/widgets/qscrollarea.cpp6
-rw-r--r--src/widgets/widgets/qscrollarea_p.h2
-rw-r--r--src/widgets/widgets/qscrollbar.cpp18
-rw-r--r--src/widgets/widgets/qsizegrip.cpp4
-rw-r--r--src/widgets/widgets/qsplashscreen.cpp44
-rw-r--r--src/widgets/widgets/qsplashscreen.h4
-rw-r--r--src/widgets/widgets/qsplitter.cpp6
-rw-r--r--src/widgets/widgets/qstackedwidget.cpp2
-rw-r--r--src/widgets/widgets/qstatusbar.cpp24
-rw-r--r--src/widgets/widgets/qtabbar.cpp44
-rw-r--r--src/widgets/widgets/qtabbar_p.h4
-rw-r--r--src/widgets/widgets/qtabwidget.cpp12
-rw-r--r--src/widgets/widgets/qtextedit.cpp2
-rw-r--r--src/widgets/widgets/qtoolbar.cpp64
-rw-r--r--src/widgets/widgets/qtoolbar.h12
-rw-r--r--src/widgets/widgets/qtoolbararealayout.cpp40
-rw-r--r--src/widgets/widgets/qtoolbarlayout.cpp38
-rw-r--r--src/widgets/widgets/qtoolbox.cpp16
-rw-r--r--src/widgets/widgets/qtoolbutton.cpp14
-rw-r--r--src/widgets/widgets/qwidgetanimator.cpp2
-rw-r--r--src/widgets/widgets/qwidgetlinecontrol.cpp4
-rw-r--r--src/widgets/widgets/qwidgettextcontrol.cpp12
-rw-r--r--src/widgets/widgets/qwidgettextcontrol_p.h6
-rw-r--r--src/xml/dom/dom.pri7
-rw-r--r--src/xml/dom/qdom.cpp789
-rw-r--r--src/xml/dom/qdom.h3
-rw-r--r--src/xml/dom/qdom_p.h535
-rw-r--r--src/xml/dom/qdomhelpers.cpp643
-rw-r--r--src/xml/dom/qdomhelpers_p.h235
902 files changed, 24476 insertions, 90668 deletions
diff --git a/src/3rdparty/xcb/README b/src/3rdparty/xcb/README
index 2f1ee24079..362fa54bf8 100644
--- a/src/3rdparty/xcb/README
+++ b/src/3rdparty/xcb/README
@@ -1,19 +1,22 @@
-Contains the header and sources files from selected xcb libraries:
+*****************************************************************
+From 62f053c19b917a369c4aad5b71ab150911b589aa:
- libxcb-1.9.1 together with xcb-proto-1.8 (randr, render, shape, shm, sync,
- xfixes, xinerama sources)
- # libxkbcommon-x11 requires libxcb-xkb >= 1.10
- libxcb-1.10 together with xcb-proto-1.10 (xkb sources)
- libxcb-1.13 together with xcb-proto-1.13 (xinput sources with removed
- Pointer Barriers API and SendExtensionEvent API)
- libxcb-util-image-0.3.9
- libxcb-util-keysyms-0.3.9
- libxcb-util-renderutil-0.3.9
- libxcb-util-wm-0.3.9
+xcb-xinput code was produced by build of libxcb 1.13 with xcb-proto 1.13.
-The 'include' directory was obtained by compiling and installing all of the modules.
-When upgrading the bundled xcb headers, they must be tested to run also with the
-minimal supported libxcb version, which currently is 1.9.1.
+The following parts were removed from it:
+ - Pointer Barriers API (requires xcb-xfixes 1.9 with xcb-proto 1.9)
+ - SendExtensionEvent API (requires definition of xcb_raw_generic_event_t
+ from libxcb 1.13)
+
+*****************************************************************
+
+As of time of writing the minimal required libxcb version is 1.11, hence
+we could restore the Pointer Barriers API, but we don't use it, so it is
+not worth the hustle. When we will bump the minimal required version of libxcb
+to 1.13, then we can drop the bundled xcb-xinput altogether.
+
+The xcb-xinput files where modified to use system includes, see:
+
+src/3rdparty/xcb/include/xcb/fixup-xinput-h.patch
+src/3rdparty/xcb/libxcb/fixup-xinput-c.patch
-Use the -qt-xcb configure option to use the files instead of system xcb libraries.
-See src/plugins/platforms/xcb/README for details.
diff --git a/src/3rdparty/xcb/include/xcb/fixup-xinput-h.patch b/src/3rdparty/xcb/include/xcb/fixup-xinput-h.patch
new file mode 100644
index 0000000000..50c5ebd9f0
--- /dev/null
+++ b/src/3rdparty/xcb/include/xcb/fixup-xinput-h.patch
@@ -0,0 +1,15 @@
+diff --git a/src/3rdparty/xcb/include/xcb/xinput.h b/src/3rdparty/xcb/include/xcb/xinput.h
+index 9420047c71..729c0b5169 100644
+--- a/src/3rdparty/xcb/include/xcb/xinput.h
++++ b/src/3rdparty/xcb/include/xcb/xinput.h
+@@ -12,8 +12,8 @@
+ #ifndef __XINPUT_H
+ #define __XINPUT_H
+
+-#include "xcb.h"
+-#include "xfixes.h"
++#include <xcb/xcb.h>
++#include <xcb/xfixes.h>
+
+ #ifdef __cplusplus
+ extern "C" {
diff --git a/src/3rdparty/xcb/include/xcb/randr.h b/src/3rdparty/xcb/include/xcb/randr.h
deleted file mode 100644
index 4f4f2104cf..0000000000
--- a/src/3rdparty/xcb/include/xcb/randr.h
+++ /dev/null
@@ -1,5075 +0,0 @@
-/*
- * This file generated automatically from randr.xml by c_client.py.
- * Edit at your peril.
- */
-
-/**
- * @defgroup XCB_RandR_API XCB RandR API
- * @brief RandR XCB Protocol Implementation.
- * @{
- **/
-
-#ifndef __RANDR_H
-#define __RANDR_H
-
-#include "xcb.h"
-#include "xproto.h"
-#include "render.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define XCB_RANDR_MAJOR_VERSION 1
-#define XCB_RANDR_MINOR_VERSION 3
-
-extern xcb_extension_t xcb_randr_id;
-
-typedef uint32_t xcb_randr_mode_t;
-
-/**
- * @brief xcb_randr_mode_iterator_t
- **/
-typedef struct xcb_randr_mode_iterator_t {
- xcb_randr_mode_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_randr_mode_iterator_t;
-
-typedef uint32_t xcb_randr_crtc_t;
-
-/**
- * @brief xcb_randr_crtc_iterator_t
- **/
-typedef struct xcb_randr_crtc_iterator_t {
- xcb_randr_crtc_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_randr_crtc_iterator_t;
-
-typedef uint32_t xcb_randr_output_t;
-
-/**
- * @brief xcb_randr_output_iterator_t
- **/
-typedef struct xcb_randr_output_iterator_t {
- xcb_randr_output_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_randr_output_iterator_t;
-
-/** Opcode for xcb_randr_bad_output. */
-#define XCB_RANDR_BAD_OUTPUT 0
-
-/**
- * @brief xcb_randr_bad_output_error_t
- **/
-typedef struct xcb_randr_bad_output_error_t {
- uint8_t response_type; /**< */
- uint8_t error_code; /**< */
- uint16_t sequence; /**< */
-} xcb_randr_bad_output_error_t;
-
-/** Opcode for xcb_randr_bad_crtc. */
-#define XCB_RANDR_BAD_CRTC 1
-
-/**
- * @brief xcb_randr_bad_crtc_error_t
- **/
-typedef struct xcb_randr_bad_crtc_error_t {
- uint8_t response_type; /**< */
- uint8_t error_code; /**< */
- uint16_t sequence; /**< */
-} xcb_randr_bad_crtc_error_t;
-
-/** Opcode for xcb_randr_bad_mode. */
-#define XCB_RANDR_BAD_MODE 2
-
-/**
- * @brief xcb_randr_bad_mode_error_t
- **/
-typedef struct xcb_randr_bad_mode_error_t {
- uint8_t response_type; /**< */
- uint8_t error_code; /**< */
- uint16_t sequence; /**< */
-} xcb_randr_bad_mode_error_t;
-
-typedef enum xcb_randr_rotation_t {
- XCB_RANDR_ROTATION_ROTATE_0 = 1,
- XCB_RANDR_ROTATION_ROTATE_90 = 2,
- XCB_RANDR_ROTATION_ROTATE_180 = 4,
- XCB_RANDR_ROTATION_ROTATE_270 = 8,
- XCB_RANDR_ROTATION_REFLECT_X = 16,
- XCB_RANDR_ROTATION_REFLECT_Y = 32
-} xcb_randr_rotation_t;
-
-/**
- * @brief xcb_randr_screen_size_t
- **/
-typedef struct xcb_randr_screen_size_t {
- uint16_t width; /**< */
- uint16_t height; /**< */
- uint16_t mwidth; /**< */
- uint16_t mheight; /**< */
-} xcb_randr_screen_size_t;
-
-/**
- * @brief xcb_randr_screen_size_iterator_t
- **/
-typedef struct xcb_randr_screen_size_iterator_t {
- xcb_randr_screen_size_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_randr_screen_size_iterator_t;
-
-/**
- * @brief xcb_randr_refresh_rates_t
- **/
-typedef struct xcb_randr_refresh_rates_t {
- uint16_t nRates; /**< */
-} xcb_randr_refresh_rates_t;
-
-/**
- * @brief xcb_randr_refresh_rates_iterator_t
- **/
-typedef struct xcb_randr_refresh_rates_iterator_t {
- xcb_randr_refresh_rates_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_randr_refresh_rates_iterator_t;
-
-/**
- * @brief xcb_randr_query_version_cookie_t
- **/
-typedef struct xcb_randr_query_version_cookie_t {
- unsigned int sequence; /**< */
-} xcb_randr_query_version_cookie_t;
-
-/** Opcode for xcb_randr_query_version. */
-#define XCB_RANDR_QUERY_VERSION 0
-
-/**
- * @brief xcb_randr_query_version_request_t
- **/
-typedef struct xcb_randr_query_version_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- uint32_t major_version; /**< */
- uint32_t minor_version; /**< */
-} xcb_randr_query_version_request_t;
-
-/**
- * @brief xcb_randr_query_version_reply_t
- **/
-typedef struct xcb_randr_query_version_reply_t {
- uint8_t response_type; /**< */
- uint8_t pad0; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- uint32_t major_version; /**< */
- uint32_t minor_version; /**< */
- uint8_t pad1[16]; /**< */
-} xcb_randr_query_version_reply_t;
-
-typedef enum xcb_randr_set_config_t {
- XCB_RANDR_SET_CONFIG_SUCCESS = 0,
- XCB_RANDR_SET_CONFIG_INVALID_CONFIG_TIME = 1,
- XCB_RANDR_SET_CONFIG_INVALID_TIME = 2,
- XCB_RANDR_SET_CONFIG_FAILED = 3
-} xcb_randr_set_config_t;
-
-/**
- * @brief xcb_randr_set_screen_config_cookie_t
- **/
-typedef struct xcb_randr_set_screen_config_cookie_t {
- unsigned int sequence; /**< */
-} xcb_randr_set_screen_config_cookie_t;
-
-/** Opcode for xcb_randr_set_screen_config. */
-#define XCB_RANDR_SET_SCREEN_CONFIG 2
-
-/**
- * @brief xcb_randr_set_screen_config_request_t
- **/
-typedef struct xcb_randr_set_screen_config_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_window_t window; /**< */
- xcb_timestamp_t timestamp; /**< */
- xcb_timestamp_t config_timestamp; /**< */
- uint16_t sizeID; /**< */
- uint16_t rotation; /**< */
- uint16_t rate; /**< */
- uint8_t pad0[2]; /**< */
-} xcb_randr_set_screen_config_request_t;
-
-/**
- * @brief xcb_randr_set_screen_config_reply_t
- **/
-typedef struct xcb_randr_set_screen_config_reply_t {
- uint8_t response_type; /**< */
- uint8_t status; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- xcb_timestamp_t new_timestamp; /**< */
- xcb_timestamp_t config_timestamp; /**< */
- xcb_window_t root; /**< */
- uint16_t subpixel_order; /**< */
- uint8_t pad0[10]; /**< */
-} xcb_randr_set_screen_config_reply_t;
-
-typedef enum xcb_randr_notify_mask_t {
- XCB_RANDR_NOTIFY_MASK_SCREEN_CHANGE = 1,
- XCB_RANDR_NOTIFY_MASK_CRTC_CHANGE = 2,
- XCB_RANDR_NOTIFY_MASK_OUTPUT_CHANGE = 4,
- XCB_RANDR_NOTIFY_MASK_OUTPUT_PROPERTY = 8
-} xcb_randr_notify_mask_t;
-
-/** Opcode for xcb_randr_select_input. */
-#define XCB_RANDR_SELECT_INPUT 4
-
-/**
- * @brief xcb_randr_select_input_request_t
- **/
-typedef struct xcb_randr_select_input_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_window_t window; /**< */
- uint16_t enable; /**< */
- uint8_t pad0[2]; /**< */
-} xcb_randr_select_input_request_t;
-
-/**
- * @brief xcb_randr_get_screen_info_cookie_t
- **/
-typedef struct xcb_randr_get_screen_info_cookie_t {
- unsigned int sequence; /**< */
-} xcb_randr_get_screen_info_cookie_t;
-
-/** Opcode for xcb_randr_get_screen_info. */
-#define XCB_RANDR_GET_SCREEN_INFO 5
-
-/**
- * @brief xcb_randr_get_screen_info_request_t
- **/
-typedef struct xcb_randr_get_screen_info_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_window_t window; /**< */
-} xcb_randr_get_screen_info_request_t;
-
-/**
- * @brief xcb_randr_get_screen_info_reply_t
- **/
-typedef struct xcb_randr_get_screen_info_reply_t {
- uint8_t response_type; /**< */
- uint8_t rotations; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- xcb_window_t root; /**< */
- xcb_timestamp_t timestamp; /**< */
- xcb_timestamp_t config_timestamp; /**< */
- uint16_t nSizes; /**< */
- uint16_t sizeID; /**< */
- uint16_t rotation; /**< */
- uint16_t rate; /**< */
- uint16_t nInfo; /**< */
- uint8_t pad0[2]; /**< */
-} xcb_randr_get_screen_info_reply_t;
-
-/**
- * @brief xcb_randr_get_screen_size_range_cookie_t
- **/
-typedef struct xcb_randr_get_screen_size_range_cookie_t {
- unsigned int sequence; /**< */
-} xcb_randr_get_screen_size_range_cookie_t;
-
-/** Opcode for xcb_randr_get_screen_size_range. */
-#define XCB_RANDR_GET_SCREEN_SIZE_RANGE 6
-
-/**
- * @brief xcb_randr_get_screen_size_range_request_t
- **/
-typedef struct xcb_randr_get_screen_size_range_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_window_t window; /**< */
-} xcb_randr_get_screen_size_range_request_t;
-
-/**
- * @brief xcb_randr_get_screen_size_range_reply_t
- **/
-typedef struct xcb_randr_get_screen_size_range_reply_t {
- uint8_t response_type; /**< */
- uint8_t pad0; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- uint16_t min_width; /**< */
- uint16_t min_height; /**< */
- uint16_t max_width; /**< */
- uint16_t max_height; /**< */
- uint8_t pad1[16]; /**< */
-} xcb_randr_get_screen_size_range_reply_t;
-
-/** Opcode for xcb_randr_set_screen_size. */
-#define XCB_RANDR_SET_SCREEN_SIZE 7
-
-/**
- * @brief xcb_randr_set_screen_size_request_t
- **/
-typedef struct xcb_randr_set_screen_size_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_window_t window; /**< */
- uint16_t width; /**< */
- uint16_t height; /**< */
- uint32_t mm_width; /**< */
- uint32_t mm_height; /**< */
-} xcb_randr_set_screen_size_request_t;
-
-typedef enum xcb_randr_mode_flag_t {
- XCB_RANDR_MODE_FLAG_HSYNC_POSITIVE = 1,
- XCB_RANDR_MODE_FLAG_HSYNC_NEGATIVE = 2,
- XCB_RANDR_MODE_FLAG_VSYNC_POSITIVE = 4,
- XCB_RANDR_MODE_FLAG_VSYNC_NEGATIVE = 8,
- XCB_RANDR_MODE_FLAG_INTERLACE = 16,
- XCB_RANDR_MODE_FLAG_DOUBLE_SCAN = 32,
- XCB_RANDR_MODE_FLAG_CSYNC = 64,
- XCB_RANDR_MODE_FLAG_CSYNC_POSITIVE = 128,
- XCB_RANDR_MODE_FLAG_CSYNC_NEGATIVE = 256,
- XCB_RANDR_MODE_FLAG_HSKEW_PRESENT = 512,
- XCB_RANDR_MODE_FLAG_BCAST = 1024,
- XCB_RANDR_MODE_FLAG_PIXEL_MULTIPLEX = 2048,
- XCB_RANDR_MODE_FLAG_DOUBLE_CLOCK = 4096,
- XCB_RANDR_MODE_FLAG_HALVE_CLOCK = 8192
-} xcb_randr_mode_flag_t;
-
-/**
- * @brief xcb_randr_mode_info_t
- **/
-typedef struct xcb_randr_mode_info_t {
- uint32_t id; /**< */
- uint16_t width; /**< */
- uint16_t height; /**< */
- uint32_t dot_clock; /**< */
- uint16_t hsync_start; /**< */
- uint16_t hsync_end; /**< */
- uint16_t htotal; /**< */
- uint16_t hskew; /**< */
- uint16_t vsync_start; /**< */
- uint16_t vsync_end; /**< */
- uint16_t vtotal; /**< */
- uint16_t name_len; /**< */
- uint32_t mode_flags; /**< */
-} xcb_randr_mode_info_t;
-
-/**
- * @brief xcb_randr_mode_info_iterator_t
- **/
-typedef struct xcb_randr_mode_info_iterator_t {
- xcb_randr_mode_info_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_randr_mode_info_iterator_t;
-
-/**
- * @brief xcb_randr_get_screen_resources_cookie_t
- **/
-typedef struct xcb_randr_get_screen_resources_cookie_t {
- unsigned int sequence; /**< */
-} xcb_randr_get_screen_resources_cookie_t;
-
-/** Opcode for xcb_randr_get_screen_resources. */
-#define XCB_RANDR_GET_SCREEN_RESOURCES 8
-
-/**
- * @brief xcb_randr_get_screen_resources_request_t
- **/
-typedef struct xcb_randr_get_screen_resources_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_window_t window; /**< */
-} xcb_randr_get_screen_resources_request_t;
-
-/**
- * @brief xcb_randr_get_screen_resources_reply_t
- **/
-typedef struct xcb_randr_get_screen_resources_reply_t {
- uint8_t response_type; /**< */
- uint8_t pad0; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- xcb_timestamp_t timestamp; /**< */
- xcb_timestamp_t config_timestamp; /**< */
- uint16_t num_crtcs; /**< */
- uint16_t num_outputs; /**< */
- uint16_t num_modes; /**< */
- uint16_t names_len; /**< */
- uint8_t pad1[8]; /**< */
-} xcb_randr_get_screen_resources_reply_t;
-
-typedef enum xcb_randr_connection_t {
- XCB_RANDR_CONNECTION_CONNECTED,
- XCB_RANDR_CONNECTION_DISCONNECTED,
- XCB_RANDR_CONNECTION_UNKNOWN
-} xcb_randr_connection_t;
-
-/**
- * @brief xcb_randr_get_output_info_cookie_t
- **/
-typedef struct xcb_randr_get_output_info_cookie_t {
- unsigned int sequence; /**< */
-} xcb_randr_get_output_info_cookie_t;
-
-/** Opcode for xcb_randr_get_output_info. */
-#define XCB_RANDR_GET_OUTPUT_INFO 9
-
-/**
- * @brief xcb_randr_get_output_info_request_t
- **/
-typedef struct xcb_randr_get_output_info_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_randr_output_t output; /**< */
- xcb_timestamp_t config_timestamp; /**< */
-} xcb_randr_get_output_info_request_t;
-
-/**
- * @brief xcb_randr_get_output_info_reply_t
- **/
-typedef struct xcb_randr_get_output_info_reply_t {
- uint8_t response_type; /**< */
- uint8_t status; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- xcb_timestamp_t timestamp; /**< */
- xcb_randr_crtc_t crtc; /**< */
- uint32_t mm_width; /**< */
- uint32_t mm_height; /**< */
- uint8_t connection; /**< */
- uint8_t subpixel_order; /**< */
- uint16_t num_crtcs; /**< */
- uint16_t num_modes; /**< */
- uint16_t num_preferred; /**< */
- uint16_t num_clones; /**< */
- uint16_t name_len; /**< */
-} xcb_randr_get_output_info_reply_t;
-
-/**
- * @brief xcb_randr_list_output_properties_cookie_t
- **/
-typedef struct xcb_randr_list_output_properties_cookie_t {
- unsigned int sequence; /**< */
-} xcb_randr_list_output_properties_cookie_t;
-
-/** Opcode for xcb_randr_list_output_properties. */
-#define XCB_RANDR_LIST_OUTPUT_PROPERTIES 10
-
-/**
- * @brief xcb_randr_list_output_properties_request_t
- **/
-typedef struct xcb_randr_list_output_properties_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_randr_output_t output; /**< */
-} xcb_randr_list_output_properties_request_t;
-
-/**
- * @brief xcb_randr_list_output_properties_reply_t
- **/
-typedef struct xcb_randr_list_output_properties_reply_t {
- uint8_t response_type; /**< */
- uint8_t pad0; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- uint16_t num_atoms; /**< */
- uint8_t pad1[22]; /**< */
-} xcb_randr_list_output_properties_reply_t;
-
-/**
- * @brief xcb_randr_query_output_property_cookie_t
- **/
-typedef struct xcb_randr_query_output_property_cookie_t {
- unsigned int sequence; /**< */
-} xcb_randr_query_output_property_cookie_t;
-
-/** Opcode for xcb_randr_query_output_property. */
-#define XCB_RANDR_QUERY_OUTPUT_PROPERTY 11
-
-/**
- * @brief xcb_randr_query_output_property_request_t
- **/
-typedef struct xcb_randr_query_output_property_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_randr_output_t output; /**< */
- xcb_atom_t property; /**< */
-} xcb_randr_query_output_property_request_t;
-
-/**
- * @brief xcb_randr_query_output_property_reply_t
- **/
-typedef struct xcb_randr_query_output_property_reply_t {
- uint8_t response_type; /**< */
- uint8_t pad0; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- uint8_t pending; /**< */
- uint8_t range; /**< */
- uint8_t immutable; /**< */
- uint8_t pad1[21]; /**< */
-} xcb_randr_query_output_property_reply_t;
-
-/** Opcode for xcb_randr_configure_output_property. */
-#define XCB_RANDR_CONFIGURE_OUTPUT_PROPERTY 12
-
-/**
- * @brief xcb_randr_configure_output_property_request_t
- **/
-typedef struct xcb_randr_configure_output_property_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_randr_output_t output; /**< */
- xcb_atom_t property; /**< */
- uint8_t pending; /**< */
- uint8_t range; /**< */
- uint8_t pad0[2]; /**< */
-} xcb_randr_configure_output_property_request_t;
-
-/** Opcode for xcb_randr_change_output_property. */
-#define XCB_RANDR_CHANGE_OUTPUT_PROPERTY 13
-
-/**
- * @brief xcb_randr_change_output_property_request_t
- **/
-typedef struct xcb_randr_change_output_property_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_randr_output_t output; /**< */
- xcb_atom_t property; /**< */
- xcb_atom_t type; /**< */
- uint8_t format; /**< */
- uint8_t mode; /**< */
- uint8_t pad0[2]; /**< */
- uint32_t num_units; /**< */
-} xcb_randr_change_output_property_request_t;
-
-/** Opcode for xcb_randr_delete_output_property. */
-#define XCB_RANDR_DELETE_OUTPUT_PROPERTY 14
-
-/**
- * @brief xcb_randr_delete_output_property_request_t
- **/
-typedef struct xcb_randr_delete_output_property_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_randr_output_t output; /**< */
- xcb_atom_t property; /**< */
-} xcb_randr_delete_output_property_request_t;
-
-/**
- * @brief xcb_randr_get_output_property_cookie_t
- **/
-typedef struct xcb_randr_get_output_property_cookie_t {
- unsigned int sequence; /**< */
-} xcb_randr_get_output_property_cookie_t;
-
-/** Opcode for xcb_randr_get_output_property. */
-#define XCB_RANDR_GET_OUTPUT_PROPERTY 15
-
-/**
- * @brief xcb_randr_get_output_property_request_t
- **/
-typedef struct xcb_randr_get_output_property_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_randr_output_t output; /**< */
- xcb_atom_t property; /**< */
- xcb_atom_t type; /**< */
- uint32_t long_offset; /**< */
- uint32_t long_length; /**< */
- uint8_t _delete; /**< */
- uint8_t pending; /**< */
- uint8_t pad0[2]; /**< */
-} xcb_randr_get_output_property_request_t;
-
-/**
- * @brief xcb_randr_get_output_property_reply_t
- **/
-typedef struct xcb_randr_get_output_property_reply_t {
- uint8_t response_type; /**< */
- uint8_t format; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- xcb_atom_t type; /**< */
- uint32_t bytes_after; /**< */
- uint32_t num_items; /**< */
- uint8_t pad0[12]; /**< */
-} xcb_randr_get_output_property_reply_t;
-
-/**
- * @brief xcb_randr_create_mode_cookie_t
- **/
-typedef struct xcb_randr_create_mode_cookie_t {
- unsigned int sequence; /**< */
-} xcb_randr_create_mode_cookie_t;
-
-/** Opcode for xcb_randr_create_mode. */
-#define XCB_RANDR_CREATE_MODE 16
-
-/**
- * @brief xcb_randr_create_mode_request_t
- **/
-typedef struct xcb_randr_create_mode_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_window_t window; /**< */
- xcb_randr_mode_info_t mode_info; /**< */
-} xcb_randr_create_mode_request_t;
-
-/**
- * @brief xcb_randr_create_mode_reply_t
- **/
-typedef struct xcb_randr_create_mode_reply_t {
- uint8_t response_type; /**< */
- uint8_t pad0; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- xcb_randr_mode_t mode; /**< */
- uint8_t pad1[20]; /**< */
-} xcb_randr_create_mode_reply_t;
-
-/** Opcode for xcb_randr_destroy_mode. */
-#define XCB_RANDR_DESTROY_MODE 17
-
-/**
- * @brief xcb_randr_destroy_mode_request_t
- **/
-typedef struct xcb_randr_destroy_mode_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_randr_mode_t mode; /**< */
-} xcb_randr_destroy_mode_request_t;
-
-/** Opcode for xcb_randr_add_output_mode. */
-#define XCB_RANDR_ADD_OUTPUT_MODE 18
-
-/**
- * @brief xcb_randr_add_output_mode_request_t
- **/
-typedef struct xcb_randr_add_output_mode_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_randr_output_t output; /**< */
- xcb_randr_mode_t mode; /**< */
-} xcb_randr_add_output_mode_request_t;
-
-/** Opcode for xcb_randr_delete_output_mode. */
-#define XCB_RANDR_DELETE_OUTPUT_MODE 19
-
-/**
- * @brief xcb_randr_delete_output_mode_request_t
- **/
-typedef struct xcb_randr_delete_output_mode_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_randr_output_t output; /**< */
- xcb_randr_mode_t mode; /**< */
-} xcb_randr_delete_output_mode_request_t;
-
-/**
- * @brief xcb_randr_get_crtc_info_cookie_t
- **/
-typedef struct xcb_randr_get_crtc_info_cookie_t {
- unsigned int sequence; /**< */
-} xcb_randr_get_crtc_info_cookie_t;
-
-/** Opcode for xcb_randr_get_crtc_info. */
-#define XCB_RANDR_GET_CRTC_INFO 20
-
-/**
- * @brief xcb_randr_get_crtc_info_request_t
- **/
-typedef struct xcb_randr_get_crtc_info_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_randr_crtc_t crtc; /**< */
- xcb_timestamp_t config_timestamp; /**< */
-} xcb_randr_get_crtc_info_request_t;
-
-/**
- * @brief xcb_randr_get_crtc_info_reply_t
- **/
-typedef struct xcb_randr_get_crtc_info_reply_t {
- uint8_t response_type; /**< */
- uint8_t status; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- xcb_timestamp_t timestamp; /**< */
- int16_t x; /**< */
- int16_t y; /**< */
- uint16_t width; /**< */
- uint16_t height; /**< */
- xcb_randr_mode_t mode; /**< */
- uint16_t rotation; /**< */
- uint16_t rotations; /**< */
- uint16_t num_outputs; /**< */
- uint16_t num_possible_outputs; /**< */
-} xcb_randr_get_crtc_info_reply_t;
-
-/**
- * @brief xcb_randr_set_crtc_config_cookie_t
- **/
-typedef struct xcb_randr_set_crtc_config_cookie_t {
- unsigned int sequence; /**< */
-} xcb_randr_set_crtc_config_cookie_t;
-
-/** Opcode for xcb_randr_set_crtc_config. */
-#define XCB_RANDR_SET_CRTC_CONFIG 21
-
-/**
- * @brief xcb_randr_set_crtc_config_request_t
- **/
-typedef struct xcb_randr_set_crtc_config_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_randr_crtc_t crtc; /**< */
- xcb_timestamp_t timestamp; /**< */
- xcb_timestamp_t config_timestamp; /**< */
- int16_t x; /**< */
- int16_t y; /**< */
- xcb_randr_mode_t mode; /**< */
- uint16_t rotation; /**< */
- uint8_t pad0[2]; /**< */
-} xcb_randr_set_crtc_config_request_t;
-
-/**
- * @brief xcb_randr_set_crtc_config_reply_t
- **/
-typedef struct xcb_randr_set_crtc_config_reply_t {
- uint8_t response_type; /**< */
- uint8_t status; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- xcb_timestamp_t timestamp; /**< */
- uint8_t pad0[20]; /**< */
-} xcb_randr_set_crtc_config_reply_t;
-
-/**
- * @brief xcb_randr_get_crtc_gamma_size_cookie_t
- **/
-typedef struct xcb_randr_get_crtc_gamma_size_cookie_t {
- unsigned int sequence; /**< */
-} xcb_randr_get_crtc_gamma_size_cookie_t;
-
-/** Opcode for xcb_randr_get_crtc_gamma_size. */
-#define XCB_RANDR_GET_CRTC_GAMMA_SIZE 22
-
-/**
- * @brief xcb_randr_get_crtc_gamma_size_request_t
- **/
-typedef struct xcb_randr_get_crtc_gamma_size_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_randr_crtc_t crtc; /**< */
-} xcb_randr_get_crtc_gamma_size_request_t;
-
-/**
- * @brief xcb_randr_get_crtc_gamma_size_reply_t
- **/
-typedef struct xcb_randr_get_crtc_gamma_size_reply_t {
- uint8_t response_type; /**< */
- uint8_t pad0; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- uint16_t size; /**< */
- uint8_t pad1[22]; /**< */
-} xcb_randr_get_crtc_gamma_size_reply_t;
-
-/**
- * @brief xcb_randr_get_crtc_gamma_cookie_t
- **/
-typedef struct xcb_randr_get_crtc_gamma_cookie_t {
- unsigned int sequence; /**< */
-} xcb_randr_get_crtc_gamma_cookie_t;
-
-/** Opcode for xcb_randr_get_crtc_gamma. */
-#define XCB_RANDR_GET_CRTC_GAMMA 23
-
-/**
- * @brief xcb_randr_get_crtc_gamma_request_t
- **/
-typedef struct xcb_randr_get_crtc_gamma_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_randr_crtc_t crtc; /**< */
-} xcb_randr_get_crtc_gamma_request_t;
-
-/**
- * @brief xcb_randr_get_crtc_gamma_reply_t
- **/
-typedef struct xcb_randr_get_crtc_gamma_reply_t {
- uint8_t response_type; /**< */
- uint8_t pad0; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- uint16_t size; /**< */
- uint8_t pad1[22]; /**< */
-} xcb_randr_get_crtc_gamma_reply_t;
-
-/** Opcode for xcb_randr_set_crtc_gamma. */
-#define XCB_RANDR_SET_CRTC_GAMMA 24
-
-/**
- * @brief xcb_randr_set_crtc_gamma_request_t
- **/
-typedef struct xcb_randr_set_crtc_gamma_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_randr_crtc_t crtc; /**< */
- uint16_t size; /**< */
- uint8_t pad0[2]; /**< */
-} xcb_randr_set_crtc_gamma_request_t;
-
-/**
- * @brief xcb_randr_get_screen_resources_current_cookie_t
- **/
-typedef struct xcb_randr_get_screen_resources_current_cookie_t {
- unsigned int sequence; /**< */
-} xcb_randr_get_screen_resources_current_cookie_t;
-
-/** Opcode for xcb_randr_get_screen_resources_current. */
-#define XCB_RANDR_GET_SCREEN_RESOURCES_CURRENT 25
-
-/**
- * @brief xcb_randr_get_screen_resources_current_request_t
- **/
-typedef struct xcb_randr_get_screen_resources_current_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_window_t window; /**< */
-} xcb_randr_get_screen_resources_current_request_t;
-
-/**
- * @brief xcb_randr_get_screen_resources_current_reply_t
- **/
-typedef struct xcb_randr_get_screen_resources_current_reply_t {
- uint8_t response_type; /**< */
- uint8_t pad0; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- xcb_timestamp_t timestamp; /**< */
- xcb_timestamp_t config_timestamp; /**< */
- uint16_t num_crtcs; /**< */
- uint16_t num_outputs; /**< */
- uint16_t num_modes; /**< */
- uint16_t names_len; /**< */
- uint8_t pad1[8]; /**< */
-} xcb_randr_get_screen_resources_current_reply_t;
-
-/** Opcode for xcb_randr_set_crtc_transform. */
-#define XCB_RANDR_SET_CRTC_TRANSFORM 26
-
-/**
- * @brief xcb_randr_set_crtc_transform_request_t
- **/
-typedef struct xcb_randr_set_crtc_transform_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_randr_crtc_t crtc; /**< */
- xcb_render_transform_t transform; /**< */
- uint16_t filter_len; /**< */
- uint8_t pad0[2]; /**< */
-} xcb_randr_set_crtc_transform_request_t;
-
-/**
- * @brief xcb_randr_get_crtc_transform_cookie_t
- **/
-typedef struct xcb_randr_get_crtc_transform_cookie_t {
- unsigned int sequence; /**< */
-} xcb_randr_get_crtc_transform_cookie_t;
-
-/** Opcode for xcb_randr_get_crtc_transform. */
-#define XCB_RANDR_GET_CRTC_TRANSFORM 27
-
-/**
- * @brief xcb_randr_get_crtc_transform_request_t
- **/
-typedef struct xcb_randr_get_crtc_transform_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_randr_crtc_t crtc; /**< */
-} xcb_randr_get_crtc_transform_request_t;
-
-/**
- * @brief xcb_randr_get_crtc_transform_reply_t
- **/
-typedef struct xcb_randr_get_crtc_transform_reply_t {
- uint8_t response_type; /**< */
- uint8_t pad0; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- xcb_render_transform_t pending_transform; /**< */
- uint8_t has_transforms; /**< */
- uint8_t pad1[3]; /**< */
- xcb_render_transform_t current_transform; /**< */
- uint8_t pad2[4]; /**< */
- uint16_t pending_len; /**< */
- uint16_t pending_nparams; /**< */
- uint16_t current_len; /**< */
- uint16_t current_nparams; /**< */
-} xcb_randr_get_crtc_transform_reply_t;
-
-/**
- * @brief xcb_randr_get_panning_cookie_t
- **/
-typedef struct xcb_randr_get_panning_cookie_t {
- unsigned int sequence; /**< */
-} xcb_randr_get_panning_cookie_t;
-
-/** Opcode for xcb_randr_get_panning. */
-#define XCB_RANDR_GET_PANNING 28
-
-/**
- * @brief xcb_randr_get_panning_request_t
- **/
-typedef struct xcb_randr_get_panning_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_randr_crtc_t crtc; /**< */
-} xcb_randr_get_panning_request_t;
-
-/**
- * @brief xcb_randr_get_panning_reply_t
- **/
-typedef struct xcb_randr_get_panning_reply_t {
- uint8_t response_type; /**< */
- uint8_t status; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- xcb_timestamp_t timestamp; /**< */
- uint16_t left; /**< */
- uint16_t top; /**< */
- uint16_t width; /**< */
- uint16_t height; /**< */
- uint16_t track_left; /**< */
- uint16_t track_top; /**< */
- uint16_t track_width; /**< */
- uint16_t track_height; /**< */
- int16_t border_left; /**< */
- int16_t border_top; /**< */
- int16_t border_right; /**< */
- int16_t border_bottom; /**< */
-} xcb_randr_get_panning_reply_t;
-
-/**
- * @brief xcb_randr_set_panning_cookie_t
- **/
-typedef struct xcb_randr_set_panning_cookie_t {
- unsigned int sequence; /**< */
-} xcb_randr_set_panning_cookie_t;
-
-/** Opcode for xcb_randr_set_panning. */
-#define XCB_RANDR_SET_PANNING 29
-
-/**
- * @brief xcb_randr_set_panning_request_t
- **/
-typedef struct xcb_randr_set_panning_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_randr_crtc_t crtc; /**< */
- xcb_timestamp_t timestamp; /**< */
- uint16_t left; /**< */
- uint16_t top; /**< */
- uint16_t width; /**< */
- uint16_t height; /**< */
- uint16_t track_left; /**< */
- uint16_t track_top; /**< */
- uint16_t track_width; /**< */
- uint16_t track_height; /**< */
- int16_t border_left; /**< */
- int16_t border_top; /**< */
- int16_t border_right; /**< */
- int16_t border_bottom; /**< */
-} xcb_randr_set_panning_request_t;
-
-/**
- * @brief xcb_randr_set_panning_reply_t
- **/
-typedef struct xcb_randr_set_panning_reply_t {
- uint8_t response_type; /**< */
- uint8_t status; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- xcb_timestamp_t timestamp; /**< */
-} xcb_randr_set_panning_reply_t;
-
-/** Opcode for xcb_randr_set_output_primary. */
-#define XCB_RANDR_SET_OUTPUT_PRIMARY 30
-
-/**
- * @brief xcb_randr_set_output_primary_request_t
- **/
-typedef struct xcb_randr_set_output_primary_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_window_t window; /**< */
- xcb_randr_output_t output; /**< */
-} xcb_randr_set_output_primary_request_t;
-
-/**
- * @brief xcb_randr_get_output_primary_cookie_t
- **/
-typedef struct xcb_randr_get_output_primary_cookie_t {
- unsigned int sequence; /**< */
-} xcb_randr_get_output_primary_cookie_t;
-
-/** Opcode for xcb_randr_get_output_primary. */
-#define XCB_RANDR_GET_OUTPUT_PRIMARY 31
-
-/**
- * @brief xcb_randr_get_output_primary_request_t
- **/
-typedef struct xcb_randr_get_output_primary_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_window_t window; /**< */
-} xcb_randr_get_output_primary_request_t;
-
-/**
- * @brief xcb_randr_get_output_primary_reply_t
- **/
-typedef struct xcb_randr_get_output_primary_reply_t {
- uint8_t response_type; /**< */
- uint8_t pad0; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- xcb_randr_output_t output; /**< */
-} xcb_randr_get_output_primary_reply_t;
-
-/** Opcode for xcb_randr_screen_change_notify. */
-#define XCB_RANDR_SCREEN_CHANGE_NOTIFY 0
-
-/**
- * @brief xcb_randr_screen_change_notify_event_t
- **/
-typedef struct xcb_randr_screen_change_notify_event_t {
- uint8_t response_type; /**< */
- uint8_t rotation; /**< */
- uint16_t sequence; /**< */
- xcb_timestamp_t timestamp; /**< */
- xcb_timestamp_t config_timestamp; /**< */
- xcb_window_t root; /**< */
- xcb_window_t request_window; /**< */
- uint16_t sizeID; /**< */
- uint16_t subpixel_order; /**< */
- uint16_t width; /**< */
- uint16_t height; /**< */
- uint16_t mwidth; /**< */
- uint16_t mheight; /**< */
-} xcb_randr_screen_change_notify_event_t;
-
-typedef enum xcb_randr_notify_t {
- XCB_RANDR_NOTIFY_CRTC_CHANGE = 0,
- XCB_RANDR_NOTIFY_OUTPUT_CHANGE = 1,
- XCB_RANDR_NOTIFY_OUTPUT_PROPERTY = 2
-} xcb_randr_notify_t;
-
-/**
- * @brief xcb_randr_crtc_change_t
- **/
-typedef struct xcb_randr_crtc_change_t {
- xcb_timestamp_t timestamp; /**< */
- xcb_window_t window; /**< */
- xcb_randr_crtc_t crtc; /**< */
- xcb_randr_mode_t mode; /**< */
- uint16_t rotation; /**< */
- uint8_t pad0[2]; /**< */
- int16_t x; /**< */
- int16_t y; /**< */
- uint16_t width; /**< */
- uint16_t height; /**< */
-} xcb_randr_crtc_change_t;
-
-/**
- * @brief xcb_randr_crtc_change_iterator_t
- **/
-typedef struct xcb_randr_crtc_change_iterator_t {
- xcb_randr_crtc_change_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_randr_crtc_change_iterator_t;
-
-/**
- * @brief xcb_randr_output_change_t
- **/
-typedef struct xcb_randr_output_change_t {
- xcb_timestamp_t timestamp; /**< */
- xcb_timestamp_t config_timestamp; /**< */
- xcb_window_t window; /**< */
- xcb_randr_output_t output; /**< */
- xcb_randr_crtc_t crtc; /**< */
- xcb_randr_mode_t mode; /**< */
- uint16_t rotation; /**< */
- uint8_t connection; /**< */
- uint8_t subpixel_order; /**< */
-} xcb_randr_output_change_t;
-
-/**
- * @brief xcb_randr_output_change_iterator_t
- **/
-typedef struct xcb_randr_output_change_iterator_t {
- xcb_randr_output_change_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_randr_output_change_iterator_t;
-
-/**
- * @brief xcb_randr_output_property_t
- **/
-typedef struct xcb_randr_output_property_t {
- xcb_window_t window; /**< */
- xcb_randr_output_t output; /**< */
- xcb_atom_t atom; /**< */
- xcb_timestamp_t timestamp; /**< */
- uint8_t status; /**< */
- uint8_t pad0[11]; /**< */
-} xcb_randr_output_property_t;
-
-/**
- * @brief xcb_randr_output_property_iterator_t
- **/
-typedef struct xcb_randr_output_property_iterator_t {
- xcb_randr_output_property_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_randr_output_property_iterator_t;
-
-/**
- * @brief xcb_randr_notify_data_t
- **/
-typedef union xcb_randr_notify_data_t {
- xcb_randr_crtc_change_t cc; /**< */
- xcb_randr_output_change_t oc; /**< */
- xcb_randr_output_property_t op; /**< */
-} xcb_randr_notify_data_t;
-
-/**
- * @brief xcb_randr_notify_data_iterator_t
- **/
-typedef struct xcb_randr_notify_data_iterator_t {
- xcb_randr_notify_data_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_randr_notify_data_iterator_t;
-
-/** Opcode for xcb_randr_notify. */
-#define XCB_RANDR_NOTIFY 1
-
-/**
- * @brief xcb_randr_notify_event_t
- **/
-typedef struct xcb_randr_notify_event_t {
- uint8_t response_type; /**< */
- uint8_t subCode; /**< */
- uint16_t sequence; /**< */
- xcb_randr_notify_data_t u; /**< */
-} xcb_randr_notify_event_t;
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_randr_mode_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_randr_mode_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_randr_mode_next
- **
- ** @param xcb_randr_mode_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_randr_mode_next (xcb_randr_mode_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_randr_mode_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_mode_end
- **
- ** @param xcb_randr_mode_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_mode_end (xcb_randr_mode_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_randr_crtc_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_randr_crtc_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_randr_crtc_next
- **
- ** @param xcb_randr_crtc_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_randr_crtc_next (xcb_randr_crtc_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_randr_crtc_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_crtc_end
- **
- ** @param xcb_randr_crtc_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_crtc_end (xcb_randr_crtc_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_randr_output_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_randr_output_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_randr_output_next
- **
- ** @param xcb_randr_output_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_randr_output_next (xcb_randr_output_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_randr_output_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_output_end
- **
- ** @param xcb_randr_output_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_output_end (xcb_randr_output_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_randr_screen_size_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_randr_screen_size_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_randr_screen_size_next
- **
- ** @param xcb_randr_screen_size_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_randr_screen_size_next (xcb_randr_screen_size_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_randr_screen_size_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_screen_size_end
- **
- ** @param xcb_randr_screen_size_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_screen_size_end (xcb_randr_screen_size_iterator_t i /**< */);
-
-int
-xcb_randr_refresh_rates_sizeof (const void *_buffer /**< */);
-
-
-/*****************************************************************************
- **
- ** uint16_t * xcb_randr_refresh_rates_rates
- **
- ** @param const xcb_randr_refresh_rates_t *R
- ** @returns uint16_t *
- **
- *****************************************************************************/
-
-uint16_t *
-xcb_randr_refresh_rates_rates (const xcb_randr_refresh_rates_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_refresh_rates_rates_length
- **
- ** @param const xcb_randr_refresh_rates_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_refresh_rates_rates_length (const xcb_randr_refresh_rates_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_refresh_rates_rates_end
- **
- ** @param const xcb_randr_refresh_rates_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_refresh_rates_rates_end (const xcb_randr_refresh_rates_t *R /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_randr_refresh_rates_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_randr_refresh_rates_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_randr_refresh_rates_next
- **
- ** @param xcb_randr_refresh_rates_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_randr_refresh_rates_next (xcb_randr_refresh_rates_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_randr_refresh_rates_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_refresh_rates_end
- **
- ** @param xcb_randr_refresh_rates_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_refresh_rates_end (xcb_randr_refresh_rates_iterator_t i /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_query_version_cookie_t xcb_randr_query_version
- **
- ** @param xcb_connection_t *c
- ** @param uint32_t major_version
- ** @param uint32_t minor_version
- ** @returns xcb_randr_query_version_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_query_version_cookie_t
-xcb_randr_query_version (xcb_connection_t *c /**< */,
- uint32_t major_version /**< */,
- uint32_t minor_version /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_query_version_cookie_t xcb_randr_query_version_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param uint32_t major_version
- ** @param uint32_t minor_version
- ** @returns xcb_randr_query_version_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_query_version_cookie_t
-xcb_randr_query_version_unchecked (xcb_connection_t *c /**< */,
- uint32_t major_version /**< */,
- uint32_t minor_version /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_randr_query_version_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_query_version_reply_t * xcb_randr_query_version_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_query_version_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_randr_query_version_reply_t *
- **
- *****************************************************************************/
-
-xcb_randr_query_version_reply_t *
-xcb_randr_query_version_reply (xcb_connection_t *c /**< */,
- xcb_randr_query_version_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_set_screen_config_cookie_t xcb_randr_set_screen_config
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @param xcb_timestamp_t timestamp
- ** @param xcb_timestamp_t config_timestamp
- ** @param uint16_t sizeID
- ** @param uint16_t rotation
- ** @param uint16_t rate
- ** @returns xcb_randr_set_screen_config_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_set_screen_config_cookie_t
-xcb_randr_set_screen_config (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */,
- xcb_timestamp_t timestamp /**< */,
- xcb_timestamp_t config_timestamp /**< */,
- uint16_t sizeID /**< */,
- uint16_t rotation /**< */,
- uint16_t rate /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_set_screen_config_cookie_t xcb_randr_set_screen_config_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @param xcb_timestamp_t timestamp
- ** @param xcb_timestamp_t config_timestamp
- ** @param uint16_t sizeID
- ** @param uint16_t rotation
- ** @param uint16_t rate
- ** @returns xcb_randr_set_screen_config_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_set_screen_config_cookie_t
-xcb_randr_set_screen_config_unchecked (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */,
- xcb_timestamp_t timestamp /**< */,
- xcb_timestamp_t config_timestamp /**< */,
- uint16_t sizeID /**< */,
- uint16_t rotation /**< */,
- uint16_t rate /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_randr_set_screen_config_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_set_screen_config_reply_t * xcb_randr_set_screen_config_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_set_screen_config_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_randr_set_screen_config_reply_t *
- **
- *****************************************************************************/
-
-xcb_randr_set_screen_config_reply_t *
-xcb_randr_set_screen_config_reply (xcb_connection_t *c /**< */,
- xcb_randr_set_screen_config_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_randr_select_input_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @param uint16_t enable
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_randr_select_input_checked (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */,
- uint16_t enable /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_randr_select_input
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @param uint16_t enable
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_randr_select_input (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */,
- uint16_t enable /**< */);
-
-int
-xcb_randr_get_screen_info_sizeof (const void *_buffer /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_get_screen_info_cookie_t xcb_randr_get_screen_info
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @returns xcb_randr_get_screen_info_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_get_screen_info_cookie_t
-xcb_randr_get_screen_info (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_get_screen_info_cookie_t xcb_randr_get_screen_info_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @returns xcb_randr_get_screen_info_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_get_screen_info_cookie_t
-xcb_randr_get_screen_info_unchecked (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_randr_screen_size_t * xcb_randr_get_screen_info_sizes
- **
- ** @param const xcb_randr_get_screen_info_reply_t *R
- ** @returns xcb_randr_screen_size_t *
- **
- *****************************************************************************/
-
-xcb_randr_screen_size_t *
-xcb_randr_get_screen_info_sizes (const xcb_randr_get_screen_info_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_get_screen_info_sizes_length
- **
- ** @param const xcb_randr_get_screen_info_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_get_screen_info_sizes_length (const xcb_randr_get_screen_info_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_randr_screen_size_iterator_t xcb_randr_get_screen_info_sizes_iterator
- **
- ** @param const xcb_randr_get_screen_info_reply_t *R
- ** @returns xcb_randr_screen_size_iterator_t
- **
- *****************************************************************************/
-
-xcb_randr_screen_size_iterator_t
-xcb_randr_get_screen_info_sizes_iterator (const xcb_randr_get_screen_info_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_get_screen_info_rates_length
- **
- ** @param const xcb_randr_get_screen_info_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_get_screen_info_rates_length (const xcb_randr_get_screen_info_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_randr_refresh_rates_iterator_t xcb_randr_get_screen_info_rates_iterator
- **
- ** @param const xcb_randr_get_screen_info_reply_t *R
- ** @returns xcb_randr_refresh_rates_iterator_t
- **
- *****************************************************************************/
-
-xcb_randr_refresh_rates_iterator_t
-xcb_randr_get_screen_info_rates_iterator (const xcb_randr_get_screen_info_reply_t *R /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_randr_get_screen_info_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_get_screen_info_reply_t * xcb_randr_get_screen_info_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_get_screen_info_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_randr_get_screen_info_reply_t *
- **
- *****************************************************************************/
-
-xcb_randr_get_screen_info_reply_t *
-xcb_randr_get_screen_info_reply (xcb_connection_t *c /**< */,
- xcb_randr_get_screen_info_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_get_screen_size_range_cookie_t xcb_randr_get_screen_size_range
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @returns xcb_randr_get_screen_size_range_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_get_screen_size_range_cookie_t
-xcb_randr_get_screen_size_range (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_get_screen_size_range_cookie_t xcb_randr_get_screen_size_range_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @returns xcb_randr_get_screen_size_range_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_get_screen_size_range_cookie_t
-xcb_randr_get_screen_size_range_unchecked (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_randr_get_screen_size_range_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_get_screen_size_range_reply_t * xcb_randr_get_screen_size_range_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_get_screen_size_range_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_randr_get_screen_size_range_reply_t *
- **
- *****************************************************************************/
-
-xcb_randr_get_screen_size_range_reply_t *
-xcb_randr_get_screen_size_range_reply (xcb_connection_t *c /**< */,
- xcb_randr_get_screen_size_range_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_randr_set_screen_size_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @param uint16_t width
- ** @param uint16_t height
- ** @param uint32_t mm_width
- ** @param uint32_t mm_height
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_randr_set_screen_size_checked (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */,
- uint16_t width /**< */,
- uint16_t height /**< */,
- uint32_t mm_width /**< */,
- uint32_t mm_height /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_randr_set_screen_size
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @param uint16_t width
- ** @param uint16_t height
- ** @param uint32_t mm_width
- ** @param uint32_t mm_height
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_randr_set_screen_size (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */,
- uint16_t width /**< */,
- uint16_t height /**< */,
- uint32_t mm_width /**< */,
- uint32_t mm_height /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_randr_mode_info_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_randr_mode_info_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_randr_mode_info_next
- **
- ** @param xcb_randr_mode_info_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_randr_mode_info_next (xcb_randr_mode_info_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_randr_mode_info_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_mode_info_end
- **
- ** @param xcb_randr_mode_info_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_mode_info_end (xcb_randr_mode_info_iterator_t i /**< */);
-
-int
-xcb_randr_get_screen_resources_sizeof (const void *_buffer /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_get_screen_resources_cookie_t xcb_randr_get_screen_resources
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @returns xcb_randr_get_screen_resources_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_get_screen_resources_cookie_t
-xcb_randr_get_screen_resources (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_get_screen_resources_cookie_t xcb_randr_get_screen_resources_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @returns xcb_randr_get_screen_resources_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_get_screen_resources_cookie_t
-xcb_randr_get_screen_resources_unchecked (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_randr_crtc_t * xcb_randr_get_screen_resources_crtcs
- **
- ** @param const xcb_randr_get_screen_resources_reply_t *R
- ** @returns xcb_randr_crtc_t *
- **
- *****************************************************************************/
-
-xcb_randr_crtc_t *
-xcb_randr_get_screen_resources_crtcs (const xcb_randr_get_screen_resources_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_get_screen_resources_crtcs_length
- **
- ** @param const xcb_randr_get_screen_resources_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_get_screen_resources_crtcs_length (const xcb_randr_get_screen_resources_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_get_screen_resources_crtcs_end
- **
- ** @param const xcb_randr_get_screen_resources_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_get_screen_resources_crtcs_end (const xcb_randr_get_screen_resources_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_randr_output_t * xcb_randr_get_screen_resources_outputs
- **
- ** @param const xcb_randr_get_screen_resources_reply_t *R
- ** @returns xcb_randr_output_t *
- **
- *****************************************************************************/
-
-xcb_randr_output_t *
-xcb_randr_get_screen_resources_outputs (const xcb_randr_get_screen_resources_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_get_screen_resources_outputs_length
- **
- ** @param const xcb_randr_get_screen_resources_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_get_screen_resources_outputs_length (const xcb_randr_get_screen_resources_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_get_screen_resources_outputs_end
- **
- ** @param const xcb_randr_get_screen_resources_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_get_screen_resources_outputs_end (const xcb_randr_get_screen_resources_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_randr_mode_info_t * xcb_randr_get_screen_resources_modes
- **
- ** @param const xcb_randr_get_screen_resources_reply_t *R
- ** @returns xcb_randr_mode_info_t *
- **
- *****************************************************************************/
-
-xcb_randr_mode_info_t *
-xcb_randr_get_screen_resources_modes (const xcb_randr_get_screen_resources_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_get_screen_resources_modes_length
- **
- ** @param const xcb_randr_get_screen_resources_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_get_screen_resources_modes_length (const xcb_randr_get_screen_resources_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_randr_mode_info_iterator_t xcb_randr_get_screen_resources_modes_iterator
- **
- ** @param const xcb_randr_get_screen_resources_reply_t *R
- ** @returns xcb_randr_mode_info_iterator_t
- **
- *****************************************************************************/
-
-xcb_randr_mode_info_iterator_t
-xcb_randr_get_screen_resources_modes_iterator (const xcb_randr_get_screen_resources_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** uint8_t * xcb_randr_get_screen_resources_names
- **
- ** @param const xcb_randr_get_screen_resources_reply_t *R
- ** @returns uint8_t *
- **
- *****************************************************************************/
-
-uint8_t *
-xcb_randr_get_screen_resources_names (const xcb_randr_get_screen_resources_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_get_screen_resources_names_length
- **
- ** @param const xcb_randr_get_screen_resources_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_get_screen_resources_names_length (const xcb_randr_get_screen_resources_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_get_screen_resources_names_end
- **
- ** @param const xcb_randr_get_screen_resources_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_get_screen_resources_names_end (const xcb_randr_get_screen_resources_reply_t *R /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_randr_get_screen_resources_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_get_screen_resources_reply_t * xcb_randr_get_screen_resources_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_get_screen_resources_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_randr_get_screen_resources_reply_t *
- **
- *****************************************************************************/
-
-xcb_randr_get_screen_resources_reply_t *
-xcb_randr_get_screen_resources_reply (xcb_connection_t *c /**< */,
- xcb_randr_get_screen_resources_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-int
-xcb_randr_get_output_info_sizeof (const void *_buffer /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_get_output_info_cookie_t xcb_randr_get_output_info
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_output_t output
- ** @param xcb_timestamp_t config_timestamp
- ** @returns xcb_randr_get_output_info_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_get_output_info_cookie_t
-xcb_randr_get_output_info (xcb_connection_t *c /**< */,
- xcb_randr_output_t output /**< */,
- xcb_timestamp_t config_timestamp /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_get_output_info_cookie_t xcb_randr_get_output_info_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_output_t output
- ** @param xcb_timestamp_t config_timestamp
- ** @returns xcb_randr_get_output_info_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_get_output_info_cookie_t
-xcb_randr_get_output_info_unchecked (xcb_connection_t *c /**< */,
- xcb_randr_output_t output /**< */,
- xcb_timestamp_t config_timestamp /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_randr_crtc_t * xcb_randr_get_output_info_crtcs
- **
- ** @param const xcb_randr_get_output_info_reply_t *R
- ** @returns xcb_randr_crtc_t *
- **
- *****************************************************************************/
-
-xcb_randr_crtc_t *
-xcb_randr_get_output_info_crtcs (const xcb_randr_get_output_info_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_get_output_info_crtcs_length
- **
- ** @param const xcb_randr_get_output_info_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_get_output_info_crtcs_length (const xcb_randr_get_output_info_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_get_output_info_crtcs_end
- **
- ** @param const xcb_randr_get_output_info_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_get_output_info_crtcs_end (const xcb_randr_get_output_info_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_randr_mode_t * xcb_randr_get_output_info_modes
- **
- ** @param const xcb_randr_get_output_info_reply_t *R
- ** @returns xcb_randr_mode_t *
- **
- *****************************************************************************/
-
-xcb_randr_mode_t *
-xcb_randr_get_output_info_modes (const xcb_randr_get_output_info_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_get_output_info_modes_length
- **
- ** @param const xcb_randr_get_output_info_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_get_output_info_modes_length (const xcb_randr_get_output_info_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_get_output_info_modes_end
- **
- ** @param const xcb_randr_get_output_info_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_get_output_info_modes_end (const xcb_randr_get_output_info_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_randr_output_t * xcb_randr_get_output_info_clones
- **
- ** @param const xcb_randr_get_output_info_reply_t *R
- ** @returns xcb_randr_output_t *
- **
- *****************************************************************************/
-
-xcb_randr_output_t *
-xcb_randr_get_output_info_clones (const xcb_randr_get_output_info_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_get_output_info_clones_length
- **
- ** @param const xcb_randr_get_output_info_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_get_output_info_clones_length (const xcb_randr_get_output_info_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_get_output_info_clones_end
- **
- ** @param const xcb_randr_get_output_info_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_get_output_info_clones_end (const xcb_randr_get_output_info_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** uint8_t * xcb_randr_get_output_info_name
- **
- ** @param const xcb_randr_get_output_info_reply_t *R
- ** @returns uint8_t *
- **
- *****************************************************************************/
-
-uint8_t *
-xcb_randr_get_output_info_name (const xcb_randr_get_output_info_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_get_output_info_name_length
- **
- ** @param const xcb_randr_get_output_info_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_get_output_info_name_length (const xcb_randr_get_output_info_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_get_output_info_name_end
- **
- ** @param const xcb_randr_get_output_info_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_get_output_info_name_end (const xcb_randr_get_output_info_reply_t *R /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_randr_get_output_info_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_get_output_info_reply_t * xcb_randr_get_output_info_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_get_output_info_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_randr_get_output_info_reply_t *
- **
- *****************************************************************************/
-
-xcb_randr_get_output_info_reply_t *
-xcb_randr_get_output_info_reply (xcb_connection_t *c /**< */,
- xcb_randr_get_output_info_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-int
-xcb_randr_list_output_properties_sizeof (const void *_buffer /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_list_output_properties_cookie_t xcb_randr_list_output_properties
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_output_t output
- ** @returns xcb_randr_list_output_properties_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_list_output_properties_cookie_t
-xcb_randr_list_output_properties (xcb_connection_t *c /**< */,
- xcb_randr_output_t output /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_list_output_properties_cookie_t xcb_randr_list_output_properties_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_output_t output
- ** @returns xcb_randr_list_output_properties_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_list_output_properties_cookie_t
-xcb_randr_list_output_properties_unchecked (xcb_connection_t *c /**< */,
- xcb_randr_output_t output /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_atom_t * xcb_randr_list_output_properties_atoms
- **
- ** @param const xcb_randr_list_output_properties_reply_t *R
- ** @returns xcb_atom_t *
- **
- *****************************************************************************/
-
-xcb_atom_t *
-xcb_randr_list_output_properties_atoms (const xcb_randr_list_output_properties_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_list_output_properties_atoms_length
- **
- ** @param const xcb_randr_list_output_properties_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_list_output_properties_atoms_length (const xcb_randr_list_output_properties_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_list_output_properties_atoms_end
- **
- ** @param const xcb_randr_list_output_properties_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_list_output_properties_atoms_end (const xcb_randr_list_output_properties_reply_t *R /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_randr_list_output_properties_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_list_output_properties_reply_t * xcb_randr_list_output_properties_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_list_output_properties_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_randr_list_output_properties_reply_t *
- **
- *****************************************************************************/
-
-xcb_randr_list_output_properties_reply_t *
-xcb_randr_list_output_properties_reply (xcb_connection_t *c /**< */,
- xcb_randr_list_output_properties_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-int
-xcb_randr_query_output_property_sizeof (const void *_buffer /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_query_output_property_cookie_t xcb_randr_query_output_property
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_output_t output
- ** @param xcb_atom_t property
- ** @returns xcb_randr_query_output_property_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_query_output_property_cookie_t
-xcb_randr_query_output_property (xcb_connection_t *c /**< */,
- xcb_randr_output_t output /**< */,
- xcb_atom_t property /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_query_output_property_cookie_t xcb_randr_query_output_property_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_output_t output
- ** @param xcb_atom_t property
- ** @returns xcb_randr_query_output_property_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_query_output_property_cookie_t
-xcb_randr_query_output_property_unchecked (xcb_connection_t *c /**< */,
- xcb_randr_output_t output /**< */,
- xcb_atom_t property /**< */);
-
-
-/*****************************************************************************
- **
- ** int32_t * xcb_randr_query_output_property_valid_values
- **
- ** @param const xcb_randr_query_output_property_reply_t *R
- ** @returns int32_t *
- **
- *****************************************************************************/
-
-int32_t *
-xcb_randr_query_output_property_valid_values (const xcb_randr_query_output_property_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_query_output_property_valid_values_length
- **
- ** @param const xcb_randr_query_output_property_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_query_output_property_valid_values_length (const xcb_randr_query_output_property_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_query_output_property_valid_values_end
- **
- ** @param const xcb_randr_query_output_property_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_query_output_property_valid_values_end (const xcb_randr_query_output_property_reply_t *R /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_randr_query_output_property_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_query_output_property_reply_t * xcb_randr_query_output_property_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_query_output_property_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_randr_query_output_property_reply_t *
- **
- *****************************************************************************/
-
-xcb_randr_query_output_property_reply_t *
-xcb_randr_query_output_property_reply (xcb_connection_t *c /**< */,
- xcb_randr_query_output_property_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-int
-xcb_randr_configure_output_property_sizeof (const void *_buffer /**< */,
- uint32_t values_len /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_randr_configure_output_property_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_output_t output
- ** @param xcb_atom_t property
- ** @param uint8_t pending
- ** @param uint8_t range
- ** @param uint32_t values_len
- ** @param const int32_t *values
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_randr_configure_output_property_checked (xcb_connection_t *c /**< */,
- xcb_randr_output_t output /**< */,
- xcb_atom_t property /**< */,
- uint8_t pending /**< */,
- uint8_t range /**< */,
- uint32_t values_len /**< */,
- const int32_t *values /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_randr_configure_output_property
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_output_t output
- ** @param xcb_atom_t property
- ** @param uint8_t pending
- ** @param uint8_t range
- ** @param uint32_t values_len
- ** @param const int32_t *values
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_randr_configure_output_property (xcb_connection_t *c /**< */,
- xcb_randr_output_t output /**< */,
- xcb_atom_t property /**< */,
- uint8_t pending /**< */,
- uint8_t range /**< */,
- uint32_t values_len /**< */,
- const int32_t *values /**< */);
-
-int
-xcb_randr_change_output_property_sizeof (const void *_buffer /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_randr_change_output_property_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_output_t output
- ** @param xcb_atom_t property
- ** @param xcb_atom_t type
- ** @param uint8_t format
- ** @param uint8_t mode
- ** @param uint32_t num_units
- ** @param const void *data
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_randr_change_output_property_checked (xcb_connection_t *c /**< */,
- xcb_randr_output_t output /**< */,
- xcb_atom_t property /**< */,
- xcb_atom_t type /**< */,
- uint8_t format /**< */,
- uint8_t mode /**< */,
- uint32_t num_units /**< */,
- const void *data /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_randr_change_output_property
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_output_t output
- ** @param xcb_atom_t property
- ** @param xcb_atom_t type
- ** @param uint8_t format
- ** @param uint8_t mode
- ** @param uint32_t num_units
- ** @param const void *data
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_randr_change_output_property (xcb_connection_t *c /**< */,
- xcb_randr_output_t output /**< */,
- xcb_atom_t property /**< */,
- xcb_atom_t type /**< */,
- uint8_t format /**< */,
- uint8_t mode /**< */,
- uint32_t num_units /**< */,
- const void *data /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_randr_delete_output_property_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_output_t output
- ** @param xcb_atom_t property
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_randr_delete_output_property_checked (xcb_connection_t *c /**< */,
- xcb_randr_output_t output /**< */,
- xcb_atom_t property /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_randr_delete_output_property
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_output_t output
- ** @param xcb_atom_t property
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_randr_delete_output_property (xcb_connection_t *c /**< */,
- xcb_randr_output_t output /**< */,
- xcb_atom_t property /**< */);
-
-int
-xcb_randr_get_output_property_sizeof (const void *_buffer /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_get_output_property_cookie_t xcb_randr_get_output_property
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_output_t output
- ** @param xcb_atom_t property
- ** @param xcb_atom_t type
- ** @param uint32_t long_offset
- ** @param uint32_t long_length
- ** @param uint8_t _delete
- ** @param uint8_t pending
- ** @returns xcb_randr_get_output_property_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_get_output_property_cookie_t
-xcb_randr_get_output_property (xcb_connection_t *c /**< */,
- xcb_randr_output_t output /**< */,
- xcb_atom_t property /**< */,
- xcb_atom_t type /**< */,
- uint32_t long_offset /**< */,
- uint32_t long_length /**< */,
- uint8_t _delete /**< */,
- uint8_t pending /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_get_output_property_cookie_t xcb_randr_get_output_property_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_output_t output
- ** @param xcb_atom_t property
- ** @param xcb_atom_t type
- ** @param uint32_t long_offset
- ** @param uint32_t long_length
- ** @param uint8_t _delete
- ** @param uint8_t pending
- ** @returns xcb_randr_get_output_property_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_get_output_property_cookie_t
-xcb_randr_get_output_property_unchecked (xcb_connection_t *c /**< */,
- xcb_randr_output_t output /**< */,
- xcb_atom_t property /**< */,
- xcb_atom_t type /**< */,
- uint32_t long_offset /**< */,
- uint32_t long_length /**< */,
- uint8_t _delete /**< */,
- uint8_t pending /**< */);
-
-
-/*****************************************************************************
- **
- ** uint8_t * xcb_randr_get_output_property_data
- **
- ** @param const xcb_randr_get_output_property_reply_t *R
- ** @returns uint8_t *
- **
- *****************************************************************************/
-
-uint8_t *
-xcb_randr_get_output_property_data (const xcb_randr_get_output_property_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_get_output_property_data_length
- **
- ** @param const xcb_randr_get_output_property_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_get_output_property_data_length (const xcb_randr_get_output_property_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_get_output_property_data_end
- **
- ** @param const xcb_randr_get_output_property_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_get_output_property_data_end (const xcb_randr_get_output_property_reply_t *R /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_randr_get_output_property_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_get_output_property_reply_t * xcb_randr_get_output_property_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_get_output_property_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_randr_get_output_property_reply_t *
- **
- *****************************************************************************/
-
-xcb_randr_get_output_property_reply_t *
-xcb_randr_get_output_property_reply (xcb_connection_t *c /**< */,
- xcb_randr_get_output_property_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-int
-xcb_randr_create_mode_sizeof (const void *_buffer /**< */,
- uint32_t name_len /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_create_mode_cookie_t xcb_randr_create_mode
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @param xcb_randr_mode_info_t mode_info
- ** @param uint32_t name_len
- ** @param const char *name
- ** @returns xcb_randr_create_mode_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_create_mode_cookie_t
-xcb_randr_create_mode (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */,
- xcb_randr_mode_info_t mode_info /**< */,
- uint32_t name_len /**< */,
- const char *name /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_create_mode_cookie_t xcb_randr_create_mode_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @param xcb_randr_mode_info_t mode_info
- ** @param uint32_t name_len
- ** @param const char *name
- ** @returns xcb_randr_create_mode_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_create_mode_cookie_t
-xcb_randr_create_mode_unchecked (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */,
- xcb_randr_mode_info_t mode_info /**< */,
- uint32_t name_len /**< */,
- const char *name /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_randr_create_mode_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_create_mode_reply_t * xcb_randr_create_mode_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_create_mode_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_randr_create_mode_reply_t *
- **
- *****************************************************************************/
-
-xcb_randr_create_mode_reply_t *
-xcb_randr_create_mode_reply (xcb_connection_t *c /**< */,
- xcb_randr_create_mode_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_randr_destroy_mode_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_mode_t mode
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_randr_destroy_mode_checked (xcb_connection_t *c /**< */,
- xcb_randr_mode_t mode /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_randr_destroy_mode
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_mode_t mode
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_randr_destroy_mode (xcb_connection_t *c /**< */,
- xcb_randr_mode_t mode /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_randr_add_output_mode_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_output_t output
- ** @param xcb_randr_mode_t mode
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_randr_add_output_mode_checked (xcb_connection_t *c /**< */,
- xcb_randr_output_t output /**< */,
- xcb_randr_mode_t mode /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_randr_add_output_mode
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_output_t output
- ** @param xcb_randr_mode_t mode
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_randr_add_output_mode (xcb_connection_t *c /**< */,
- xcb_randr_output_t output /**< */,
- xcb_randr_mode_t mode /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_randr_delete_output_mode_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_output_t output
- ** @param xcb_randr_mode_t mode
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_randr_delete_output_mode_checked (xcb_connection_t *c /**< */,
- xcb_randr_output_t output /**< */,
- xcb_randr_mode_t mode /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_randr_delete_output_mode
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_output_t output
- ** @param xcb_randr_mode_t mode
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_randr_delete_output_mode (xcb_connection_t *c /**< */,
- xcb_randr_output_t output /**< */,
- xcb_randr_mode_t mode /**< */);
-
-int
-xcb_randr_get_crtc_info_sizeof (const void *_buffer /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_get_crtc_info_cookie_t xcb_randr_get_crtc_info
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_crtc_t crtc
- ** @param xcb_timestamp_t config_timestamp
- ** @returns xcb_randr_get_crtc_info_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_get_crtc_info_cookie_t
-xcb_randr_get_crtc_info (xcb_connection_t *c /**< */,
- xcb_randr_crtc_t crtc /**< */,
- xcb_timestamp_t config_timestamp /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_get_crtc_info_cookie_t xcb_randr_get_crtc_info_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_crtc_t crtc
- ** @param xcb_timestamp_t config_timestamp
- ** @returns xcb_randr_get_crtc_info_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_get_crtc_info_cookie_t
-xcb_randr_get_crtc_info_unchecked (xcb_connection_t *c /**< */,
- xcb_randr_crtc_t crtc /**< */,
- xcb_timestamp_t config_timestamp /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_randr_output_t * xcb_randr_get_crtc_info_outputs
- **
- ** @param const xcb_randr_get_crtc_info_reply_t *R
- ** @returns xcb_randr_output_t *
- **
- *****************************************************************************/
-
-xcb_randr_output_t *
-xcb_randr_get_crtc_info_outputs (const xcb_randr_get_crtc_info_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_get_crtc_info_outputs_length
- **
- ** @param const xcb_randr_get_crtc_info_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_get_crtc_info_outputs_length (const xcb_randr_get_crtc_info_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_get_crtc_info_outputs_end
- **
- ** @param const xcb_randr_get_crtc_info_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_get_crtc_info_outputs_end (const xcb_randr_get_crtc_info_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_randr_output_t * xcb_randr_get_crtc_info_possible
- **
- ** @param const xcb_randr_get_crtc_info_reply_t *R
- ** @returns xcb_randr_output_t *
- **
- *****************************************************************************/
-
-xcb_randr_output_t *
-xcb_randr_get_crtc_info_possible (const xcb_randr_get_crtc_info_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_get_crtc_info_possible_length
- **
- ** @param const xcb_randr_get_crtc_info_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_get_crtc_info_possible_length (const xcb_randr_get_crtc_info_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_get_crtc_info_possible_end
- **
- ** @param const xcb_randr_get_crtc_info_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_get_crtc_info_possible_end (const xcb_randr_get_crtc_info_reply_t *R /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_randr_get_crtc_info_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_get_crtc_info_reply_t * xcb_randr_get_crtc_info_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_get_crtc_info_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_randr_get_crtc_info_reply_t *
- **
- *****************************************************************************/
-
-xcb_randr_get_crtc_info_reply_t *
-xcb_randr_get_crtc_info_reply (xcb_connection_t *c /**< */,
- xcb_randr_get_crtc_info_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-int
-xcb_randr_set_crtc_config_sizeof (const void *_buffer /**< */,
- uint32_t outputs_len /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_set_crtc_config_cookie_t xcb_randr_set_crtc_config
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_crtc_t crtc
- ** @param xcb_timestamp_t timestamp
- ** @param xcb_timestamp_t config_timestamp
- ** @param int16_t x
- ** @param int16_t y
- ** @param xcb_randr_mode_t mode
- ** @param uint16_t rotation
- ** @param uint32_t outputs_len
- ** @param const xcb_randr_output_t *outputs
- ** @returns xcb_randr_set_crtc_config_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_set_crtc_config_cookie_t
-xcb_randr_set_crtc_config (xcb_connection_t *c /**< */,
- xcb_randr_crtc_t crtc /**< */,
- xcb_timestamp_t timestamp /**< */,
- xcb_timestamp_t config_timestamp /**< */,
- int16_t x /**< */,
- int16_t y /**< */,
- xcb_randr_mode_t mode /**< */,
- uint16_t rotation /**< */,
- uint32_t outputs_len /**< */,
- const xcb_randr_output_t *outputs /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_set_crtc_config_cookie_t xcb_randr_set_crtc_config_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_crtc_t crtc
- ** @param xcb_timestamp_t timestamp
- ** @param xcb_timestamp_t config_timestamp
- ** @param int16_t x
- ** @param int16_t y
- ** @param xcb_randr_mode_t mode
- ** @param uint16_t rotation
- ** @param uint32_t outputs_len
- ** @param const xcb_randr_output_t *outputs
- ** @returns xcb_randr_set_crtc_config_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_set_crtc_config_cookie_t
-xcb_randr_set_crtc_config_unchecked (xcb_connection_t *c /**< */,
- xcb_randr_crtc_t crtc /**< */,
- xcb_timestamp_t timestamp /**< */,
- xcb_timestamp_t config_timestamp /**< */,
- int16_t x /**< */,
- int16_t y /**< */,
- xcb_randr_mode_t mode /**< */,
- uint16_t rotation /**< */,
- uint32_t outputs_len /**< */,
- const xcb_randr_output_t *outputs /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_randr_set_crtc_config_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_set_crtc_config_reply_t * xcb_randr_set_crtc_config_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_set_crtc_config_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_randr_set_crtc_config_reply_t *
- **
- *****************************************************************************/
-
-xcb_randr_set_crtc_config_reply_t *
-xcb_randr_set_crtc_config_reply (xcb_connection_t *c /**< */,
- xcb_randr_set_crtc_config_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_get_crtc_gamma_size_cookie_t xcb_randr_get_crtc_gamma_size
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_crtc_t crtc
- ** @returns xcb_randr_get_crtc_gamma_size_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_get_crtc_gamma_size_cookie_t
-xcb_randr_get_crtc_gamma_size (xcb_connection_t *c /**< */,
- xcb_randr_crtc_t crtc /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_get_crtc_gamma_size_cookie_t xcb_randr_get_crtc_gamma_size_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_crtc_t crtc
- ** @returns xcb_randr_get_crtc_gamma_size_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_get_crtc_gamma_size_cookie_t
-xcb_randr_get_crtc_gamma_size_unchecked (xcb_connection_t *c /**< */,
- xcb_randr_crtc_t crtc /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_randr_get_crtc_gamma_size_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_get_crtc_gamma_size_reply_t * xcb_randr_get_crtc_gamma_size_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_get_crtc_gamma_size_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_randr_get_crtc_gamma_size_reply_t *
- **
- *****************************************************************************/
-
-xcb_randr_get_crtc_gamma_size_reply_t *
-xcb_randr_get_crtc_gamma_size_reply (xcb_connection_t *c /**< */,
- xcb_randr_get_crtc_gamma_size_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-int
-xcb_randr_get_crtc_gamma_sizeof (const void *_buffer /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_get_crtc_gamma_cookie_t xcb_randr_get_crtc_gamma
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_crtc_t crtc
- ** @returns xcb_randr_get_crtc_gamma_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_get_crtc_gamma_cookie_t
-xcb_randr_get_crtc_gamma (xcb_connection_t *c /**< */,
- xcb_randr_crtc_t crtc /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_get_crtc_gamma_cookie_t xcb_randr_get_crtc_gamma_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_crtc_t crtc
- ** @returns xcb_randr_get_crtc_gamma_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_get_crtc_gamma_cookie_t
-xcb_randr_get_crtc_gamma_unchecked (xcb_connection_t *c /**< */,
- xcb_randr_crtc_t crtc /**< */);
-
-
-/*****************************************************************************
- **
- ** uint16_t * xcb_randr_get_crtc_gamma_red
- **
- ** @param const xcb_randr_get_crtc_gamma_reply_t *R
- ** @returns uint16_t *
- **
- *****************************************************************************/
-
-uint16_t *
-xcb_randr_get_crtc_gamma_red (const xcb_randr_get_crtc_gamma_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_get_crtc_gamma_red_length
- **
- ** @param const xcb_randr_get_crtc_gamma_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_get_crtc_gamma_red_length (const xcb_randr_get_crtc_gamma_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_get_crtc_gamma_red_end
- **
- ** @param const xcb_randr_get_crtc_gamma_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_get_crtc_gamma_red_end (const xcb_randr_get_crtc_gamma_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** uint16_t * xcb_randr_get_crtc_gamma_green
- **
- ** @param const xcb_randr_get_crtc_gamma_reply_t *R
- ** @returns uint16_t *
- **
- *****************************************************************************/
-
-uint16_t *
-xcb_randr_get_crtc_gamma_green (const xcb_randr_get_crtc_gamma_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_get_crtc_gamma_green_length
- **
- ** @param const xcb_randr_get_crtc_gamma_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_get_crtc_gamma_green_length (const xcb_randr_get_crtc_gamma_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_get_crtc_gamma_green_end
- **
- ** @param const xcb_randr_get_crtc_gamma_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_get_crtc_gamma_green_end (const xcb_randr_get_crtc_gamma_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** uint16_t * xcb_randr_get_crtc_gamma_blue
- **
- ** @param const xcb_randr_get_crtc_gamma_reply_t *R
- ** @returns uint16_t *
- **
- *****************************************************************************/
-
-uint16_t *
-xcb_randr_get_crtc_gamma_blue (const xcb_randr_get_crtc_gamma_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_get_crtc_gamma_blue_length
- **
- ** @param const xcb_randr_get_crtc_gamma_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_get_crtc_gamma_blue_length (const xcb_randr_get_crtc_gamma_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_get_crtc_gamma_blue_end
- **
- ** @param const xcb_randr_get_crtc_gamma_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_get_crtc_gamma_blue_end (const xcb_randr_get_crtc_gamma_reply_t *R /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_randr_get_crtc_gamma_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_get_crtc_gamma_reply_t * xcb_randr_get_crtc_gamma_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_get_crtc_gamma_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_randr_get_crtc_gamma_reply_t *
- **
- *****************************************************************************/
-
-xcb_randr_get_crtc_gamma_reply_t *
-xcb_randr_get_crtc_gamma_reply (xcb_connection_t *c /**< */,
- xcb_randr_get_crtc_gamma_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-int
-xcb_randr_set_crtc_gamma_sizeof (const void *_buffer /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_randr_set_crtc_gamma_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_crtc_t crtc
- ** @param uint16_t size
- ** @param const uint16_t *red
- ** @param const uint16_t *green
- ** @param const uint16_t *blue
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_randr_set_crtc_gamma_checked (xcb_connection_t *c /**< */,
- xcb_randr_crtc_t crtc /**< */,
- uint16_t size /**< */,
- const uint16_t *red /**< */,
- const uint16_t *green /**< */,
- const uint16_t *blue /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_randr_set_crtc_gamma
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_crtc_t crtc
- ** @param uint16_t size
- ** @param const uint16_t *red
- ** @param const uint16_t *green
- ** @param const uint16_t *blue
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_randr_set_crtc_gamma (xcb_connection_t *c /**< */,
- xcb_randr_crtc_t crtc /**< */,
- uint16_t size /**< */,
- const uint16_t *red /**< */,
- const uint16_t *green /**< */,
- const uint16_t *blue /**< */);
-
-int
-xcb_randr_get_screen_resources_current_sizeof (const void *_buffer /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_get_screen_resources_current_cookie_t xcb_randr_get_screen_resources_current
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @returns xcb_randr_get_screen_resources_current_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_get_screen_resources_current_cookie_t
-xcb_randr_get_screen_resources_current (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_get_screen_resources_current_cookie_t xcb_randr_get_screen_resources_current_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @returns xcb_randr_get_screen_resources_current_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_get_screen_resources_current_cookie_t
-xcb_randr_get_screen_resources_current_unchecked (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_randr_crtc_t * xcb_randr_get_screen_resources_current_crtcs
- **
- ** @param const xcb_randr_get_screen_resources_current_reply_t *R
- ** @returns xcb_randr_crtc_t *
- **
- *****************************************************************************/
-
-xcb_randr_crtc_t *
-xcb_randr_get_screen_resources_current_crtcs (const xcb_randr_get_screen_resources_current_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_get_screen_resources_current_crtcs_length
- **
- ** @param const xcb_randr_get_screen_resources_current_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_get_screen_resources_current_crtcs_length (const xcb_randr_get_screen_resources_current_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_get_screen_resources_current_crtcs_end
- **
- ** @param const xcb_randr_get_screen_resources_current_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_get_screen_resources_current_crtcs_end (const xcb_randr_get_screen_resources_current_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_randr_output_t * xcb_randr_get_screen_resources_current_outputs
- **
- ** @param const xcb_randr_get_screen_resources_current_reply_t *R
- ** @returns xcb_randr_output_t *
- **
- *****************************************************************************/
-
-xcb_randr_output_t *
-xcb_randr_get_screen_resources_current_outputs (const xcb_randr_get_screen_resources_current_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_get_screen_resources_current_outputs_length
- **
- ** @param const xcb_randr_get_screen_resources_current_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_get_screen_resources_current_outputs_length (const xcb_randr_get_screen_resources_current_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_get_screen_resources_current_outputs_end
- **
- ** @param const xcb_randr_get_screen_resources_current_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_get_screen_resources_current_outputs_end (const xcb_randr_get_screen_resources_current_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_randr_mode_info_t * xcb_randr_get_screen_resources_current_modes
- **
- ** @param const xcb_randr_get_screen_resources_current_reply_t *R
- ** @returns xcb_randr_mode_info_t *
- **
- *****************************************************************************/
-
-xcb_randr_mode_info_t *
-xcb_randr_get_screen_resources_current_modes (const xcb_randr_get_screen_resources_current_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_get_screen_resources_current_modes_length
- **
- ** @param const xcb_randr_get_screen_resources_current_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_get_screen_resources_current_modes_length (const xcb_randr_get_screen_resources_current_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_randr_mode_info_iterator_t xcb_randr_get_screen_resources_current_modes_iterator
- **
- ** @param const xcb_randr_get_screen_resources_current_reply_t *R
- ** @returns xcb_randr_mode_info_iterator_t
- **
- *****************************************************************************/
-
-xcb_randr_mode_info_iterator_t
-xcb_randr_get_screen_resources_current_modes_iterator (const xcb_randr_get_screen_resources_current_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** uint8_t * xcb_randr_get_screen_resources_current_names
- **
- ** @param const xcb_randr_get_screen_resources_current_reply_t *R
- ** @returns uint8_t *
- **
- *****************************************************************************/
-
-uint8_t *
-xcb_randr_get_screen_resources_current_names (const xcb_randr_get_screen_resources_current_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_get_screen_resources_current_names_length
- **
- ** @param const xcb_randr_get_screen_resources_current_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_get_screen_resources_current_names_length (const xcb_randr_get_screen_resources_current_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_get_screen_resources_current_names_end
- **
- ** @param const xcb_randr_get_screen_resources_current_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_get_screen_resources_current_names_end (const xcb_randr_get_screen_resources_current_reply_t *R /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_randr_get_screen_resources_current_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_get_screen_resources_current_reply_t * xcb_randr_get_screen_resources_current_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_get_screen_resources_current_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_randr_get_screen_resources_current_reply_t *
- **
- *****************************************************************************/
-
-xcb_randr_get_screen_resources_current_reply_t *
-xcb_randr_get_screen_resources_current_reply (xcb_connection_t *c /**< */,
- xcb_randr_get_screen_resources_current_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-int
-xcb_randr_set_crtc_transform_sizeof (const void *_buffer /**< */,
- uint32_t filter_params_len /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_randr_set_crtc_transform_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_crtc_t crtc
- ** @param xcb_render_transform_t transform
- ** @param uint16_t filter_len
- ** @param const char *filter_name
- ** @param uint32_t filter_params_len
- ** @param const xcb_render_fixed_t *filter_params
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_randr_set_crtc_transform_checked (xcb_connection_t *c /**< */,
- xcb_randr_crtc_t crtc /**< */,
- xcb_render_transform_t transform /**< */,
- uint16_t filter_len /**< */,
- const char *filter_name /**< */,
- uint32_t filter_params_len /**< */,
- const xcb_render_fixed_t *filter_params /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_randr_set_crtc_transform
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_crtc_t crtc
- ** @param xcb_render_transform_t transform
- ** @param uint16_t filter_len
- ** @param const char *filter_name
- ** @param uint32_t filter_params_len
- ** @param const xcb_render_fixed_t *filter_params
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_randr_set_crtc_transform (xcb_connection_t *c /**< */,
- xcb_randr_crtc_t crtc /**< */,
- xcb_render_transform_t transform /**< */,
- uint16_t filter_len /**< */,
- const char *filter_name /**< */,
- uint32_t filter_params_len /**< */,
- const xcb_render_fixed_t *filter_params /**< */);
-
-int
-xcb_randr_get_crtc_transform_sizeof (const void *_buffer /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_get_crtc_transform_cookie_t xcb_randr_get_crtc_transform
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_crtc_t crtc
- ** @returns xcb_randr_get_crtc_transform_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_get_crtc_transform_cookie_t
-xcb_randr_get_crtc_transform (xcb_connection_t *c /**< */,
- xcb_randr_crtc_t crtc /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_get_crtc_transform_cookie_t xcb_randr_get_crtc_transform_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_crtc_t crtc
- ** @returns xcb_randr_get_crtc_transform_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_get_crtc_transform_cookie_t
-xcb_randr_get_crtc_transform_unchecked (xcb_connection_t *c /**< */,
- xcb_randr_crtc_t crtc /**< */);
-
-
-/*****************************************************************************
- **
- ** char * xcb_randr_get_crtc_transform_pending_filter_name
- **
- ** @param const xcb_randr_get_crtc_transform_reply_t *R
- ** @returns char *
- **
- *****************************************************************************/
-
-char *
-xcb_randr_get_crtc_transform_pending_filter_name (const xcb_randr_get_crtc_transform_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_get_crtc_transform_pending_filter_name_length
- **
- ** @param const xcb_randr_get_crtc_transform_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_get_crtc_transform_pending_filter_name_length (const xcb_randr_get_crtc_transform_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_get_crtc_transform_pending_filter_name_end
- **
- ** @param const xcb_randr_get_crtc_transform_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_get_crtc_transform_pending_filter_name_end (const xcb_randr_get_crtc_transform_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_render_fixed_t * xcb_randr_get_crtc_transform_pending_params
- **
- ** @param const xcb_randr_get_crtc_transform_reply_t *R
- ** @returns xcb_render_fixed_t *
- **
- *****************************************************************************/
-
-xcb_render_fixed_t *
-xcb_randr_get_crtc_transform_pending_params (const xcb_randr_get_crtc_transform_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_get_crtc_transform_pending_params_length
- **
- ** @param const xcb_randr_get_crtc_transform_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_get_crtc_transform_pending_params_length (const xcb_randr_get_crtc_transform_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_get_crtc_transform_pending_params_end
- **
- ** @param const xcb_randr_get_crtc_transform_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_get_crtc_transform_pending_params_end (const xcb_randr_get_crtc_transform_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** char * xcb_randr_get_crtc_transform_current_filter_name
- **
- ** @param const xcb_randr_get_crtc_transform_reply_t *R
- ** @returns char *
- **
- *****************************************************************************/
-
-char *
-xcb_randr_get_crtc_transform_current_filter_name (const xcb_randr_get_crtc_transform_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_get_crtc_transform_current_filter_name_length
- **
- ** @param const xcb_randr_get_crtc_transform_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_get_crtc_transform_current_filter_name_length (const xcb_randr_get_crtc_transform_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_get_crtc_transform_current_filter_name_end
- **
- ** @param const xcb_randr_get_crtc_transform_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_get_crtc_transform_current_filter_name_end (const xcb_randr_get_crtc_transform_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_render_fixed_t * xcb_randr_get_crtc_transform_current_params
- **
- ** @param const xcb_randr_get_crtc_transform_reply_t *R
- ** @returns xcb_render_fixed_t *
- **
- *****************************************************************************/
-
-xcb_render_fixed_t *
-xcb_randr_get_crtc_transform_current_params (const xcb_randr_get_crtc_transform_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_get_crtc_transform_current_params_length
- **
- ** @param const xcb_randr_get_crtc_transform_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_get_crtc_transform_current_params_length (const xcb_randr_get_crtc_transform_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_get_crtc_transform_current_params_end
- **
- ** @param const xcb_randr_get_crtc_transform_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_get_crtc_transform_current_params_end (const xcb_randr_get_crtc_transform_reply_t *R /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_randr_get_crtc_transform_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_get_crtc_transform_reply_t * xcb_randr_get_crtc_transform_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_get_crtc_transform_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_randr_get_crtc_transform_reply_t *
- **
- *****************************************************************************/
-
-xcb_randr_get_crtc_transform_reply_t *
-xcb_randr_get_crtc_transform_reply (xcb_connection_t *c /**< */,
- xcb_randr_get_crtc_transform_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_get_panning_cookie_t xcb_randr_get_panning
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_crtc_t crtc
- ** @returns xcb_randr_get_panning_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_get_panning_cookie_t
-xcb_randr_get_panning (xcb_connection_t *c /**< */,
- xcb_randr_crtc_t crtc /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_get_panning_cookie_t xcb_randr_get_panning_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_crtc_t crtc
- ** @returns xcb_randr_get_panning_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_get_panning_cookie_t
-xcb_randr_get_panning_unchecked (xcb_connection_t *c /**< */,
- xcb_randr_crtc_t crtc /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_randr_get_panning_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_get_panning_reply_t * xcb_randr_get_panning_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_get_panning_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_randr_get_panning_reply_t *
- **
- *****************************************************************************/
-
-xcb_randr_get_panning_reply_t *
-xcb_randr_get_panning_reply (xcb_connection_t *c /**< */,
- xcb_randr_get_panning_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_set_panning_cookie_t xcb_randr_set_panning
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_crtc_t crtc
- ** @param xcb_timestamp_t timestamp
- ** @param uint16_t left
- ** @param uint16_t top
- ** @param uint16_t width
- ** @param uint16_t height
- ** @param uint16_t track_left
- ** @param uint16_t track_top
- ** @param uint16_t track_width
- ** @param uint16_t track_height
- ** @param int16_t border_left
- ** @param int16_t border_top
- ** @param int16_t border_right
- ** @param int16_t border_bottom
- ** @returns xcb_randr_set_panning_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_set_panning_cookie_t
-xcb_randr_set_panning (xcb_connection_t *c /**< */,
- xcb_randr_crtc_t crtc /**< */,
- xcb_timestamp_t timestamp /**< */,
- uint16_t left /**< */,
- uint16_t top /**< */,
- uint16_t width /**< */,
- uint16_t height /**< */,
- uint16_t track_left /**< */,
- uint16_t track_top /**< */,
- uint16_t track_width /**< */,
- uint16_t track_height /**< */,
- int16_t border_left /**< */,
- int16_t border_top /**< */,
- int16_t border_right /**< */,
- int16_t border_bottom /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_set_panning_cookie_t xcb_randr_set_panning_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_crtc_t crtc
- ** @param xcb_timestamp_t timestamp
- ** @param uint16_t left
- ** @param uint16_t top
- ** @param uint16_t width
- ** @param uint16_t height
- ** @param uint16_t track_left
- ** @param uint16_t track_top
- ** @param uint16_t track_width
- ** @param uint16_t track_height
- ** @param int16_t border_left
- ** @param int16_t border_top
- ** @param int16_t border_right
- ** @param int16_t border_bottom
- ** @returns xcb_randr_set_panning_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_set_panning_cookie_t
-xcb_randr_set_panning_unchecked (xcb_connection_t *c /**< */,
- xcb_randr_crtc_t crtc /**< */,
- xcb_timestamp_t timestamp /**< */,
- uint16_t left /**< */,
- uint16_t top /**< */,
- uint16_t width /**< */,
- uint16_t height /**< */,
- uint16_t track_left /**< */,
- uint16_t track_top /**< */,
- uint16_t track_width /**< */,
- uint16_t track_height /**< */,
- int16_t border_left /**< */,
- int16_t border_top /**< */,
- int16_t border_right /**< */,
- int16_t border_bottom /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_randr_set_panning_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_set_panning_reply_t * xcb_randr_set_panning_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_set_panning_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_randr_set_panning_reply_t *
- **
- *****************************************************************************/
-
-xcb_randr_set_panning_reply_t *
-xcb_randr_set_panning_reply (xcb_connection_t *c /**< */,
- xcb_randr_set_panning_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_randr_set_output_primary_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @param xcb_randr_output_t output
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_randr_set_output_primary_checked (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */,
- xcb_randr_output_t output /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_randr_set_output_primary
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @param xcb_randr_output_t output
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_randr_set_output_primary (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */,
- xcb_randr_output_t output /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_get_output_primary_cookie_t xcb_randr_get_output_primary
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @returns xcb_randr_get_output_primary_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_get_output_primary_cookie_t
-xcb_randr_get_output_primary (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_get_output_primary_cookie_t xcb_randr_get_output_primary_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @returns xcb_randr_get_output_primary_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_get_output_primary_cookie_t
-xcb_randr_get_output_primary_unchecked (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_randr_get_output_primary_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_randr_get_output_primary_reply_t * xcb_randr_get_output_primary_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_get_output_primary_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_randr_get_output_primary_reply_t *
- **
- *****************************************************************************/
-
-xcb_randr_get_output_primary_reply_t *
-xcb_randr_get_output_primary_reply (xcb_connection_t *c /**< */,
- xcb_randr_get_output_primary_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_randr_crtc_change_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_randr_crtc_change_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_randr_crtc_change_next
- **
- ** @param xcb_randr_crtc_change_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_randr_crtc_change_next (xcb_randr_crtc_change_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_randr_crtc_change_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_crtc_change_end
- **
- ** @param xcb_randr_crtc_change_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_crtc_change_end (xcb_randr_crtc_change_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_randr_output_change_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_randr_output_change_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_randr_output_change_next
- **
- ** @param xcb_randr_output_change_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_randr_output_change_next (xcb_randr_output_change_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_randr_output_change_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_output_change_end
- **
- ** @param xcb_randr_output_change_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_output_change_end (xcb_randr_output_change_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_randr_output_property_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_randr_output_property_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_randr_output_property_next
- **
- ** @param xcb_randr_output_property_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_randr_output_property_next (xcb_randr_output_property_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_randr_output_property_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_output_property_end
- **
- ** @param xcb_randr_output_property_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_output_property_end (xcb_randr_output_property_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_randr_notify_data_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_randr_notify_data_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_randr_notify_data_next
- **
- ** @param xcb_randr_notify_data_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_randr_notify_data_next (xcb_randr_notify_data_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_randr_notify_data_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_notify_data_end
- **
- ** @param xcb_randr_notify_data_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_notify_data_end (xcb_randr_notify_data_iterator_t i /**< */);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-/**
- * @}
- */
diff --git a/src/3rdparty/xcb/include/xcb/render.h b/src/3rdparty/xcb/include/xcb/render.h
deleted file mode 100644
index eb7f0424d5..0000000000
--- a/src/3rdparty/xcb/include/xcb/render.h
+++ /dev/null
@@ -1,4513 +0,0 @@
-/*
- * This file generated automatically from render.xml by c_client.py.
- * Edit at your peril.
- */
-
-/**
- * @defgroup XCB_Render_API XCB Render API
- * @brief Render XCB Protocol Implementation.
- * @{
- **/
-
-#ifndef __RENDER_H
-#define __RENDER_H
-
-#include "xcb.h"
-#include "xproto.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define XCB_RENDER_MAJOR_VERSION 0
-#define XCB_RENDER_MINOR_VERSION 11
-
-extern xcb_extension_t xcb_render_id;
-
-typedef enum xcb_render_pict_type_t {
- XCB_RENDER_PICT_TYPE_INDEXED,
- XCB_RENDER_PICT_TYPE_DIRECT
-} xcb_render_pict_type_t;
-
-typedef enum xcb_render_picture_enum_t {
- XCB_RENDER_PICTURE_NONE
-} xcb_render_picture_enum_t;
-
-typedef enum xcb_render_pict_op_t {
- XCB_RENDER_PICT_OP_CLEAR,
- XCB_RENDER_PICT_OP_SRC,
- XCB_RENDER_PICT_OP_DST,
- XCB_RENDER_PICT_OP_OVER,
- XCB_RENDER_PICT_OP_OVER_REVERSE,
- XCB_RENDER_PICT_OP_IN,
- XCB_RENDER_PICT_OP_IN_REVERSE,
- XCB_RENDER_PICT_OP_OUT,
- XCB_RENDER_PICT_OP_OUT_REVERSE,
- XCB_RENDER_PICT_OP_ATOP,
- XCB_RENDER_PICT_OP_ATOP_REVERSE,
- XCB_RENDER_PICT_OP_XOR,
- XCB_RENDER_PICT_OP_ADD,
- XCB_RENDER_PICT_OP_SATURATE,
- XCB_RENDER_PICT_OP_DISJOINT_CLEAR = 16,
- XCB_RENDER_PICT_OP_DISJOINT_SRC,
- XCB_RENDER_PICT_OP_DISJOINT_DST,
- XCB_RENDER_PICT_OP_DISJOINT_OVER,
- XCB_RENDER_PICT_OP_DISJOINT_OVER_REVERSE,
- XCB_RENDER_PICT_OP_DISJOINT_IN,
- XCB_RENDER_PICT_OP_DISJOINT_IN_REVERSE,
- XCB_RENDER_PICT_OP_DISJOINT_OUT,
- XCB_RENDER_PICT_OP_DISJOINT_OUT_REVERSE,
- XCB_RENDER_PICT_OP_DISJOINT_ATOP,
- XCB_RENDER_PICT_OP_DISJOINT_ATOP_REVERSE,
- XCB_RENDER_PICT_OP_DISJOINT_XOR,
- XCB_RENDER_PICT_OP_CONJOINT_CLEAR = 32,
- XCB_RENDER_PICT_OP_CONJOINT_SRC,
- XCB_RENDER_PICT_OP_CONJOINT_DST,
- XCB_RENDER_PICT_OP_CONJOINT_OVER,
- XCB_RENDER_PICT_OP_CONJOINT_OVER_REVERSE,
- XCB_RENDER_PICT_OP_CONJOINT_IN,
- XCB_RENDER_PICT_OP_CONJOINT_IN_REVERSE,
- XCB_RENDER_PICT_OP_CONJOINT_OUT,
- XCB_RENDER_PICT_OP_CONJOINT_OUT_REVERSE,
- XCB_RENDER_PICT_OP_CONJOINT_ATOP,
- XCB_RENDER_PICT_OP_CONJOINT_ATOP_REVERSE,
- XCB_RENDER_PICT_OP_CONJOINT_XOR,
- XCB_RENDER_PICT_OP_MULTIPLY = 48,
- XCB_RENDER_PICT_OP_SCREEN,
- XCB_RENDER_PICT_OP_OVERLAY,
- XCB_RENDER_PICT_OP_DARKEN,
- XCB_RENDER_PICT_OP_LIGHTEN,
- XCB_RENDER_PICT_OP_COLOR_DODGE,
- XCB_RENDER_PICT_OP_COLOR_BURN,
- XCB_RENDER_PICT_OP_HARD_LIGHT,
- XCB_RENDER_PICT_OP_SOFT_LIGHT,
- XCB_RENDER_PICT_OP_DIFFERENCE,
- XCB_RENDER_PICT_OP_EXCLUSION,
- XCB_RENDER_PICT_OP_HSL_HUE,
- XCB_RENDER_PICT_OP_HSL_SATURATION,
- XCB_RENDER_PICT_OP_HSL_COLOR,
- XCB_RENDER_PICT_OP_HSL_LUMINOSITY
-} xcb_render_pict_op_t;
-
-typedef enum xcb_render_poly_edge_t {
- XCB_RENDER_POLY_EDGE_SHARP,
- XCB_RENDER_POLY_EDGE_SMOOTH
-} xcb_render_poly_edge_t;
-
-typedef enum xcb_render_poly_mode_t {
- XCB_RENDER_POLY_MODE_PRECISE,
- XCB_RENDER_POLY_MODE_IMPRECISE
-} xcb_render_poly_mode_t;
-
-typedef enum xcb_render_cp_t {
- XCB_RENDER_CP_REPEAT = 1,
- XCB_RENDER_CP_ALPHA_MAP = 2,
- XCB_RENDER_CP_ALPHA_X_ORIGIN = 4,
- XCB_RENDER_CP_ALPHA_Y_ORIGIN = 8,
- XCB_RENDER_CP_CLIP_X_ORIGIN = 16,
- XCB_RENDER_CP_CLIP_Y_ORIGIN = 32,
- XCB_RENDER_CP_CLIP_MASK = 64,
- XCB_RENDER_CP_GRAPHICS_EXPOSURE = 128,
- XCB_RENDER_CP_SUBWINDOW_MODE = 256,
- XCB_RENDER_CP_POLY_EDGE = 512,
- XCB_RENDER_CP_POLY_MODE = 1024,
- XCB_RENDER_CP_DITHER = 2048,
- XCB_RENDER_CP_COMPONENT_ALPHA = 4096
-} xcb_render_cp_t;
-
-typedef enum xcb_render_sub_pixel_t {
- XCB_RENDER_SUB_PIXEL_UNKNOWN,
- XCB_RENDER_SUB_PIXEL_HORIZONTAL_RGB,
- XCB_RENDER_SUB_PIXEL_HORIZONTAL_BGR,
- XCB_RENDER_SUB_PIXEL_VERTICAL_RGB,
- XCB_RENDER_SUB_PIXEL_VERTICAL_BGR,
- XCB_RENDER_SUB_PIXEL_NONE
-} xcb_render_sub_pixel_t;
-
-typedef enum xcb_render_repeat_t {
- XCB_RENDER_REPEAT_NONE,
- XCB_RENDER_REPEAT_NORMAL,
- XCB_RENDER_REPEAT_PAD,
- XCB_RENDER_REPEAT_REFLECT
-} xcb_render_repeat_t;
-
-typedef uint32_t xcb_render_glyph_t;
-
-/**
- * @brief xcb_render_glyph_iterator_t
- **/
-typedef struct xcb_render_glyph_iterator_t {
- xcb_render_glyph_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_render_glyph_iterator_t;
-
-typedef uint32_t xcb_render_glyphset_t;
-
-/**
- * @brief xcb_render_glyphset_iterator_t
- **/
-typedef struct xcb_render_glyphset_iterator_t {
- xcb_render_glyphset_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_render_glyphset_iterator_t;
-
-typedef uint32_t xcb_render_picture_t;
-
-/**
- * @brief xcb_render_picture_iterator_t
- **/
-typedef struct xcb_render_picture_iterator_t {
- xcb_render_picture_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_render_picture_iterator_t;
-
-typedef uint32_t xcb_render_pictformat_t;
-
-/**
- * @brief xcb_render_pictformat_iterator_t
- **/
-typedef struct xcb_render_pictformat_iterator_t {
- xcb_render_pictformat_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_render_pictformat_iterator_t;
-
-typedef int32_t xcb_render_fixed_t;
-
-/**
- * @brief xcb_render_fixed_iterator_t
- **/
-typedef struct xcb_render_fixed_iterator_t {
- xcb_render_fixed_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_render_fixed_iterator_t;
-
-/** Opcode for xcb_render_pict_format. */
-#define XCB_RENDER_PICT_FORMAT 0
-
-/**
- * @brief xcb_render_pict_format_error_t
- **/
-typedef struct xcb_render_pict_format_error_t {
- uint8_t response_type; /**< */
- uint8_t error_code; /**< */
- uint16_t sequence; /**< */
-} xcb_render_pict_format_error_t;
-
-/** Opcode for xcb_render_picture. */
-#define XCB_RENDER_PICTURE 1
-
-/**
- * @brief xcb_render_picture_error_t
- **/
-typedef struct xcb_render_picture_error_t {
- uint8_t response_type; /**< */
- uint8_t error_code; /**< */
- uint16_t sequence; /**< */
-} xcb_render_picture_error_t;
-
-/** Opcode for xcb_render_pict_op. */
-#define XCB_RENDER_PICT_OP 2
-
-/**
- * @brief xcb_render_pict_op_error_t
- **/
-typedef struct xcb_render_pict_op_error_t {
- uint8_t response_type; /**< */
- uint8_t error_code; /**< */
- uint16_t sequence; /**< */
-} xcb_render_pict_op_error_t;
-
-/** Opcode for xcb_render_glyph_set. */
-#define XCB_RENDER_GLYPH_SET 3
-
-/**
- * @brief xcb_render_glyph_set_error_t
- **/
-typedef struct xcb_render_glyph_set_error_t {
- uint8_t response_type; /**< */
- uint8_t error_code; /**< */
- uint16_t sequence; /**< */
-} xcb_render_glyph_set_error_t;
-
-/** Opcode for xcb_render_glyph. */
-#define XCB_RENDER_GLYPH 4
-
-/**
- * @brief xcb_render_glyph_error_t
- **/
-typedef struct xcb_render_glyph_error_t {
- uint8_t response_type; /**< */
- uint8_t error_code; /**< */
- uint16_t sequence; /**< */
-} xcb_render_glyph_error_t;
-
-/**
- * @brief xcb_render_directformat_t
- **/
-typedef struct xcb_render_directformat_t {
- uint16_t red_shift; /**< */
- uint16_t red_mask; /**< */
- uint16_t green_shift; /**< */
- uint16_t green_mask; /**< */
- uint16_t blue_shift; /**< */
- uint16_t blue_mask; /**< */
- uint16_t alpha_shift; /**< */
- uint16_t alpha_mask; /**< */
-} xcb_render_directformat_t;
-
-/**
- * @brief xcb_render_directformat_iterator_t
- **/
-typedef struct xcb_render_directformat_iterator_t {
- xcb_render_directformat_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_render_directformat_iterator_t;
-
-/**
- * @brief xcb_render_pictforminfo_t
- **/
-typedef struct xcb_render_pictforminfo_t {
- xcb_render_pictformat_t id; /**< */
- uint8_t type; /**< */
- uint8_t depth; /**< */
- uint8_t pad0[2]; /**< */
- xcb_render_directformat_t direct; /**< */
- xcb_colormap_t colormap; /**< */
-} xcb_render_pictforminfo_t;
-
-/**
- * @brief xcb_render_pictforminfo_iterator_t
- **/
-typedef struct xcb_render_pictforminfo_iterator_t {
- xcb_render_pictforminfo_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_render_pictforminfo_iterator_t;
-
-/**
- * @brief xcb_render_pictvisual_t
- **/
-typedef struct xcb_render_pictvisual_t {
- xcb_visualid_t visual; /**< */
- xcb_render_pictformat_t format; /**< */
-} xcb_render_pictvisual_t;
-
-/**
- * @brief xcb_render_pictvisual_iterator_t
- **/
-typedef struct xcb_render_pictvisual_iterator_t {
- xcb_render_pictvisual_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_render_pictvisual_iterator_t;
-
-/**
- * @brief xcb_render_pictdepth_t
- **/
-typedef struct xcb_render_pictdepth_t {
- uint8_t depth; /**< */
- uint8_t pad0; /**< */
- uint16_t num_visuals; /**< */
- uint8_t pad1[4]; /**< */
-} xcb_render_pictdepth_t;
-
-/**
- * @brief xcb_render_pictdepth_iterator_t
- **/
-typedef struct xcb_render_pictdepth_iterator_t {
- xcb_render_pictdepth_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_render_pictdepth_iterator_t;
-
-/**
- * @brief xcb_render_pictscreen_t
- **/
-typedef struct xcb_render_pictscreen_t {
- uint32_t num_depths; /**< */
- xcb_render_pictformat_t fallback; /**< */
-} xcb_render_pictscreen_t;
-
-/**
- * @brief xcb_render_pictscreen_iterator_t
- **/
-typedef struct xcb_render_pictscreen_iterator_t {
- xcb_render_pictscreen_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_render_pictscreen_iterator_t;
-
-/**
- * @brief xcb_render_indexvalue_t
- **/
-typedef struct xcb_render_indexvalue_t {
- uint32_t pixel; /**< */
- uint16_t red; /**< */
- uint16_t green; /**< */
- uint16_t blue; /**< */
- uint16_t alpha; /**< */
-} xcb_render_indexvalue_t;
-
-/**
- * @brief xcb_render_indexvalue_iterator_t
- **/
-typedef struct xcb_render_indexvalue_iterator_t {
- xcb_render_indexvalue_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_render_indexvalue_iterator_t;
-
-/**
- * @brief xcb_render_color_t
- **/
-typedef struct xcb_render_color_t {
- uint16_t red; /**< */
- uint16_t green; /**< */
- uint16_t blue; /**< */
- uint16_t alpha; /**< */
-} xcb_render_color_t;
-
-/**
- * @brief xcb_render_color_iterator_t
- **/
-typedef struct xcb_render_color_iterator_t {
- xcb_render_color_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_render_color_iterator_t;
-
-/**
- * @brief xcb_render_pointfix_t
- **/
-typedef struct xcb_render_pointfix_t {
- xcb_render_fixed_t x; /**< */
- xcb_render_fixed_t y; /**< */
-} xcb_render_pointfix_t;
-
-/**
- * @brief xcb_render_pointfix_iterator_t
- **/
-typedef struct xcb_render_pointfix_iterator_t {
- xcb_render_pointfix_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_render_pointfix_iterator_t;
-
-/**
- * @brief xcb_render_linefix_t
- **/
-typedef struct xcb_render_linefix_t {
- xcb_render_pointfix_t p1; /**< */
- xcb_render_pointfix_t p2; /**< */
-} xcb_render_linefix_t;
-
-/**
- * @brief xcb_render_linefix_iterator_t
- **/
-typedef struct xcb_render_linefix_iterator_t {
- xcb_render_linefix_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_render_linefix_iterator_t;
-
-/**
- * @brief xcb_render_triangle_t
- **/
-typedef struct xcb_render_triangle_t {
- xcb_render_pointfix_t p1; /**< */
- xcb_render_pointfix_t p2; /**< */
- xcb_render_pointfix_t p3; /**< */
-} xcb_render_triangle_t;
-
-/**
- * @brief xcb_render_triangle_iterator_t
- **/
-typedef struct xcb_render_triangle_iterator_t {
- xcb_render_triangle_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_render_triangle_iterator_t;
-
-/**
- * @brief xcb_render_trapezoid_t
- **/
-typedef struct xcb_render_trapezoid_t {
- xcb_render_fixed_t top; /**< */
- xcb_render_fixed_t bottom; /**< */
- xcb_render_linefix_t left; /**< */
- xcb_render_linefix_t right; /**< */
-} xcb_render_trapezoid_t;
-
-/**
- * @brief xcb_render_trapezoid_iterator_t
- **/
-typedef struct xcb_render_trapezoid_iterator_t {
- xcb_render_trapezoid_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_render_trapezoid_iterator_t;
-
-/**
- * @brief xcb_render_glyphinfo_t
- **/
-typedef struct xcb_render_glyphinfo_t {
- uint16_t width; /**< */
- uint16_t height; /**< */
- int16_t x; /**< */
- int16_t y; /**< */
- int16_t x_off; /**< */
- int16_t y_off; /**< */
-} xcb_render_glyphinfo_t;
-
-/**
- * @brief xcb_render_glyphinfo_iterator_t
- **/
-typedef struct xcb_render_glyphinfo_iterator_t {
- xcb_render_glyphinfo_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_render_glyphinfo_iterator_t;
-
-/**
- * @brief xcb_render_query_version_cookie_t
- **/
-typedef struct xcb_render_query_version_cookie_t {
- unsigned int sequence; /**< */
-} xcb_render_query_version_cookie_t;
-
-/** Opcode for xcb_render_query_version. */
-#define XCB_RENDER_QUERY_VERSION 0
-
-/**
- * @brief xcb_render_query_version_request_t
- **/
-typedef struct xcb_render_query_version_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- uint32_t client_major_version; /**< */
- uint32_t client_minor_version; /**< */
-} xcb_render_query_version_request_t;
-
-/**
- * @brief xcb_render_query_version_reply_t
- **/
-typedef struct xcb_render_query_version_reply_t {
- uint8_t response_type; /**< */
- uint8_t pad0; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- uint32_t major_version; /**< */
- uint32_t minor_version; /**< */
- uint8_t pad1[16]; /**< */
-} xcb_render_query_version_reply_t;
-
-/**
- * @brief xcb_render_query_pict_formats_cookie_t
- **/
-typedef struct xcb_render_query_pict_formats_cookie_t {
- unsigned int sequence; /**< */
-} xcb_render_query_pict_formats_cookie_t;
-
-/** Opcode for xcb_render_query_pict_formats. */
-#define XCB_RENDER_QUERY_PICT_FORMATS 1
-
-/**
- * @brief xcb_render_query_pict_formats_request_t
- **/
-typedef struct xcb_render_query_pict_formats_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
-} xcb_render_query_pict_formats_request_t;
-
-/**
- * @brief xcb_render_query_pict_formats_reply_t
- **/
-typedef struct xcb_render_query_pict_formats_reply_t {
- uint8_t response_type; /**< */
- uint8_t pad0; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- uint32_t num_formats; /**< */
- uint32_t num_screens; /**< */
- uint32_t num_depths; /**< */
- uint32_t num_visuals; /**< */
- uint32_t num_subpixel; /**< */
- uint8_t pad1[4]; /**< */
-} xcb_render_query_pict_formats_reply_t;
-
-/**
- * @brief xcb_render_query_pict_index_values_cookie_t
- **/
-typedef struct xcb_render_query_pict_index_values_cookie_t {
- unsigned int sequence; /**< */
-} xcb_render_query_pict_index_values_cookie_t;
-
-/** Opcode for xcb_render_query_pict_index_values. */
-#define XCB_RENDER_QUERY_PICT_INDEX_VALUES 2
-
-/**
- * @brief xcb_render_query_pict_index_values_request_t
- **/
-typedef struct xcb_render_query_pict_index_values_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_render_pictformat_t format; /**< */
-} xcb_render_query_pict_index_values_request_t;
-
-/**
- * @brief xcb_render_query_pict_index_values_reply_t
- **/
-typedef struct xcb_render_query_pict_index_values_reply_t {
- uint8_t response_type; /**< */
- uint8_t pad0; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- uint32_t num_values; /**< */
- uint8_t pad1[20]; /**< */
-} xcb_render_query_pict_index_values_reply_t;
-
-/** Opcode for xcb_render_create_picture. */
-#define XCB_RENDER_CREATE_PICTURE 4
-
-/**
- * @brief xcb_render_create_picture_request_t
- **/
-typedef struct xcb_render_create_picture_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_render_picture_t pid; /**< */
- xcb_drawable_t drawable; /**< */
- xcb_render_pictformat_t format; /**< */
- uint32_t value_mask; /**< */
-} xcb_render_create_picture_request_t;
-
-/** Opcode for xcb_render_change_picture. */
-#define XCB_RENDER_CHANGE_PICTURE 5
-
-/**
- * @brief xcb_render_change_picture_request_t
- **/
-typedef struct xcb_render_change_picture_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_render_picture_t picture; /**< */
- uint32_t value_mask; /**< */
-} xcb_render_change_picture_request_t;
-
-/** Opcode for xcb_render_set_picture_clip_rectangles. */
-#define XCB_RENDER_SET_PICTURE_CLIP_RECTANGLES 6
-
-/**
- * @brief xcb_render_set_picture_clip_rectangles_request_t
- **/
-typedef struct xcb_render_set_picture_clip_rectangles_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_render_picture_t picture; /**< */
- int16_t clip_x_origin; /**< */
- int16_t clip_y_origin; /**< */
-} xcb_render_set_picture_clip_rectangles_request_t;
-
-/** Opcode for xcb_render_free_picture. */
-#define XCB_RENDER_FREE_PICTURE 7
-
-/**
- * @brief xcb_render_free_picture_request_t
- **/
-typedef struct xcb_render_free_picture_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_render_picture_t picture; /**< */
-} xcb_render_free_picture_request_t;
-
-/** Opcode for xcb_render_composite. */
-#define XCB_RENDER_COMPOSITE 8
-
-/**
- * @brief xcb_render_composite_request_t
- **/
-typedef struct xcb_render_composite_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- uint8_t op; /**< */
- uint8_t pad0[3]; /**< */
- xcb_render_picture_t src; /**< */
- xcb_render_picture_t mask; /**< */
- xcb_render_picture_t dst; /**< */
- int16_t src_x; /**< */
- int16_t src_y; /**< */
- int16_t mask_x; /**< */
- int16_t mask_y; /**< */
- int16_t dst_x; /**< */
- int16_t dst_y; /**< */
- uint16_t width; /**< */
- uint16_t height; /**< */
-} xcb_render_composite_request_t;
-
-/** Opcode for xcb_render_trapezoids. */
-#define XCB_RENDER_TRAPEZOIDS 10
-
-/**
- * @brief xcb_render_trapezoids_request_t
- **/
-typedef struct xcb_render_trapezoids_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- uint8_t op; /**< */
- uint8_t pad0[3]; /**< */
- xcb_render_picture_t src; /**< */
- xcb_render_picture_t dst; /**< */
- xcb_render_pictformat_t mask_format; /**< */
- int16_t src_x; /**< */
- int16_t src_y; /**< */
-} xcb_render_trapezoids_request_t;
-
-/** Opcode for xcb_render_triangles. */
-#define XCB_RENDER_TRIANGLES 11
-
-/**
- * @brief xcb_render_triangles_request_t
- **/
-typedef struct xcb_render_triangles_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- uint8_t op; /**< */
- uint8_t pad0[3]; /**< */
- xcb_render_picture_t src; /**< */
- xcb_render_picture_t dst; /**< */
- xcb_render_pictformat_t mask_format; /**< */
- int16_t src_x; /**< */
- int16_t src_y; /**< */
-} xcb_render_triangles_request_t;
-
-/** Opcode for xcb_render_tri_strip. */
-#define XCB_RENDER_TRI_STRIP 12
-
-/**
- * @brief xcb_render_tri_strip_request_t
- **/
-typedef struct xcb_render_tri_strip_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- uint8_t op; /**< */
- uint8_t pad0[3]; /**< */
- xcb_render_picture_t src; /**< */
- xcb_render_picture_t dst; /**< */
- xcb_render_pictformat_t mask_format; /**< */
- int16_t src_x; /**< */
- int16_t src_y; /**< */
-} xcb_render_tri_strip_request_t;
-
-/** Opcode for xcb_render_tri_fan. */
-#define XCB_RENDER_TRI_FAN 13
-
-/**
- * @brief xcb_render_tri_fan_request_t
- **/
-typedef struct xcb_render_tri_fan_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- uint8_t op; /**< */
- uint8_t pad0[3]; /**< */
- xcb_render_picture_t src; /**< */
- xcb_render_picture_t dst; /**< */
- xcb_render_pictformat_t mask_format; /**< */
- int16_t src_x; /**< */
- int16_t src_y; /**< */
-} xcb_render_tri_fan_request_t;
-
-/** Opcode for xcb_render_create_glyph_set. */
-#define XCB_RENDER_CREATE_GLYPH_SET 17
-
-/**
- * @brief xcb_render_create_glyph_set_request_t
- **/
-typedef struct xcb_render_create_glyph_set_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_render_glyphset_t gsid; /**< */
- xcb_render_pictformat_t format; /**< */
-} xcb_render_create_glyph_set_request_t;
-
-/** Opcode for xcb_render_reference_glyph_set. */
-#define XCB_RENDER_REFERENCE_GLYPH_SET 18
-
-/**
- * @brief xcb_render_reference_glyph_set_request_t
- **/
-typedef struct xcb_render_reference_glyph_set_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_render_glyphset_t gsid; /**< */
- xcb_render_glyphset_t existing; /**< */
-} xcb_render_reference_glyph_set_request_t;
-
-/** Opcode for xcb_render_free_glyph_set. */
-#define XCB_RENDER_FREE_GLYPH_SET 19
-
-/**
- * @brief xcb_render_free_glyph_set_request_t
- **/
-typedef struct xcb_render_free_glyph_set_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_render_glyphset_t glyphset; /**< */
-} xcb_render_free_glyph_set_request_t;
-
-/** Opcode for xcb_render_add_glyphs. */
-#define XCB_RENDER_ADD_GLYPHS 20
-
-/**
- * @brief xcb_render_add_glyphs_request_t
- **/
-typedef struct xcb_render_add_glyphs_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_render_glyphset_t glyphset; /**< */
- uint32_t glyphs_len; /**< */
-} xcb_render_add_glyphs_request_t;
-
-/** Opcode for xcb_render_free_glyphs. */
-#define XCB_RENDER_FREE_GLYPHS 22
-
-/**
- * @brief xcb_render_free_glyphs_request_t
- **/
-typedef struct xcb_render_free_glyphs_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_render_glyphset_t glyphset; /**< */
-} xcb_render_free_glyphs_request_t;
-
-/** Opcode for xcb_render_composite_glyphs_8. */
-#define XCB_RENDER_COMPOSITE_GLYPHS_8 23
-
-/**
- * @brief xcb_render_composite_glyphs_8_request_t
- **/
-typedef struct xcb_render_composite_glyphs_8_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- uint8_t op; /**< */
- uint8_t pad0[3]; /**< */
- xcb_render_picture_t src; /**< */
- xcb_render_picture_t dst; /**< */
- xcb_render_pictformat_t mask_format; /**< */
- xcb_render_glyphset_t glyphset; /**< */
- int16_t src_x; /**< */
- int16_t src_y; /**< */
-} xcb_render_composite_glyphs_8_request_t;
-
-/** Opcode for xcb_render_composite_glyphs_16. */
-#define XCB_RENDER_COMPOSITE_GLYPHS_16 24
-
-/**
- * @brief xcb_render_composite_glyphs_16_request_t
- **/
-typedef struct xcb_render_composite_glyphs_16_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- uint8_t op; /**< */
- uint8_t pad0[3]; /**< */
- xcb_render_picture_t src; /**< */
- xcb_render_picture_t dst; /**< */
- xcb_render_pictformat_t mask_format; /**< */
- xcb_render_glyphset_t glyphset; /**< */
- int16_t src_x; /**< */
- int16_t src_y; /**< */
-} xcb_render_composite_glyphs_16_request_t;
-
-/** Opcode for xcb_render_composite_glyphs_32. */
-#define XCB_RENDER_COMPOSITE_GLYPHS_32 25
-
-/**
- * @brief xcb_render_composite_glyphs_32_request_t
- **/
-typedef struct xcb_render_composite_glyphs_32_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- uint8_t op; /**< */
- uint8_t pad0[3]; /**< */
- xcb_render_picture_t src; /**< */
- xcb_render_picture_t dst; /**< */
- xcb_render_pictformat_t mask_format; /**< */
- xcb_render_glyphset_t glyphset; /**< */
- int16_t src_x; /**< */
- int16_t src_y; /**< */
-} xcb_render_composite_glyphs_32_request_t;
-
-/** Opcode for xcb_render_fill_rectangles. */
-#define XCB_RENDER_FILL_RECTANGLES 26
-
-/**
- * @brief xcb_render_fill_rectangles_request_t
- **/
-typedef struct xcb_render_fill_rectangles_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- uint8_t op; /**< */
- uint8_t pad0[3]; /**< */
- xcb_render_picture_t dst; /**< */
- xcb_render_color_t color; /**< */
-} xcb_render_fill_rectangles_request_t;
-
-/** Opcode for xcb_render_create_cursor. */
-#define XCB_RENDER_CREATE_CURSOR 27
-
-/**
- * @brief xcb_render_create_cursor_request_t
- **/
-typedef struct xcb_render_create_cursor_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_cursor_t cid; /**< */
- xcb_render_picture_t source; /**< */
- uint16_t x; /**< */
- uint16_t y; /**< */
-} xcb_render_create_cursor_request_t;
-
-/**
- * @brief xcb_render_transform_t
- **/
-typedef struct xcb_render_transform_t {
- xcb_render_fixed_t matrix11; /**< */
- xcb_render_fixed_t matrix12; /**< */
- xcb_render_fixed_t matrix13; /**< */
- xcb_render_fixed_t matrix21; /**< */
- xcb_render_fixed_t matrix22; /**< */
- xcb_render_fixed_t matrix23; /**< */
- xcb_render_fixed_t matrix31; /**< */
- xcb_render_fixed_t matrix32; /**< */
- xcb_render_fixed_t matrix33; /**< */
-} xcb_render_transform_t;
-
-/**
- * @brief xcb_render_transform_iterator_t
- **/
-typedef struct xcb_render_transform_iterator_t {
- xcb_render_transform_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_render_transform_iterator_t;
-
-/** Opcode for xcb_render_set_picture_transform. */
-#define XCB_RENDER_SET_PICTURE_TRANSFORM 28
-
-/**
- * @brief xcb_render_set_picture_transform_request_t
- **/
-typedef struct xcb_render_set_picture_transform_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_render_picture_t picture; /**< */
- xcb_render_transform_t transform; /**< */
-} xcb_render_set_picture_transform_request_t;
-
-/**
- * @brief xcb_render_query_filters_cookie_t
- **/
-typedef struct xcb_render_query_filters_cookie_t {
- unsigned int sequence; /**< */
-} xcb_render_query_filters_cookie_t;
-
-/** Opcode for xcb_render_query_filters. */
-#define XCB_RENDER_QUERY_FILTERS 29
-
-/**
- * @brief xcb_render_query_filters_request_t
- **/
-typedef struct xcb_render_query_filters_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_drawable_t drawable; /**< */
-} xcb_render_query_filters_request_t;
-
-/**
- * @brief xcb_render_query_filters_reply_t
- **/
-typedef struct xcb_render_query_filters_reply_t {
- uint8_t response_type; /**< */
- uint8_t pad0; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- uint32_t num_aliases; /**< */
- uint32_t num_filters; /**< */
- uint8_t pad1[16]; /**< */
-} xcb_render_query_filters_reply_t;
-
-/** Opcode for xcb_render_set_picture_filter. */
-#define XCB_RENDER_SET_PICTURE_FILTER 30
-
-/**
- * @brief xcb_render_set_picture_filter_request_t
- **/
-typedef struct xcb_render_set_picture_filter_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_render_picture_t picture; /**< */
- uint16_t filter_len; /**< */
- uint8_t pad0[2]; /**< */
-} xcb_render_set_picture_filter_request_t;
-
-/**
- * @brief xcb_render_animcursorelt_t
- **/
-typedef struct xcb_render_animcursorelt_t {
- xcb_cursor_t cursor; /**< */
- uint32_t delay; /**< */
-} xcb_render_animcursorelt_t;
-
-/**
- * @brief xcb_render_animcursorelt_iterator_t
- **/
-typedef struct xcb_render_animcursorelt_iterator_t {
- xcb_render_animcursorelt_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_render_animcursorelt_iterator_t;
-
-/** Opcode for xcb_render_create_anim_cursor. */
-#define XCB_RENDER_CREATE_ANIM_CURSOR 31
-
-/**
- * @brief xcb_render_create_anim_cursor_request_t
- **/
-typedef struct xcb_render_create_anim_cursor_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_cursor_t cid; /**< */
-} xcb_render_create_anim_cursor_request_t;
-
-/**
- * @brief xcb_render_spanfix_t
- **/
-typedef struct xcb_render_spanfix_t {
- xcb_render_fixed_t l; /**< */
- xcb_render_fixed_t r; /**< */
- xcb_render_fixed_t y; /**< */
-} xcb_render_spanfix_t;
-
-/**
- * @brief xcb_render_spanfix_iterator_t
- **/
-typedef struct xcb_render_spanfix_iterator_t {
- xcb_render_spanfix_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_render_spanfix_iterator_t;
-
-/**
- * @brief xcb_render_trap_t
- **/
-typedef struct xcb_render_trap_t {
- xcb_render_spanfix_t top; /**< */
- xcb_render_spanfix_t bot; /**< */
-} xcb_render_trap_t;
-
-/**
- * @brief xcb_render_trap_iterator_t
- **/
-typedef struct xcb_render_trap_iterator_t {
- xcb_render_trap_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_render_trap_iterator_t;
-
-/** Opcode for xcb_render_add_traps. */
-#define XCB_RENDER_ADD_TRAPS 32
-
-/**
- * @brief xcb_render_add_traps_request_t
- **/
-typedef struct xcb_render_add_traps_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_render_picture_t picture; /**< */
- int16_t x_off; /**< */
- int16_t y_off; /**< */
-} xcb_render_add_traps_request_t;
-
-/** Opcode for xcb_render_create_solid_fill. */
-#define XCB_RENDER_CREATE_SOLID_FILL 33
-
-/**
- * @brief xcb_render_create_solid_fill_request_t
- **/
-typedef struct xcb_render_create_solid_fill_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_render_picture_t picture; /**< */
- xcb_render_color_t color; /**< */
-} xcb_render_create_solid_fill_request_t;
-
-/** Opcode for xcb_render_create_linear_gradient. */
-#define XCB_RENDER_CREATE_LINEAR_GRADIENT 34
-
-/**
- * @brief xcb_render_create_linear_gradient_request_t
- **/
-typedef struct xcb_render_create_linear_gradient_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_render_picture_t picture; /**< */
- xcb_render_pointfix_t p1; /**< */
- xcb_render_pointfix_t p2; /**< */
- uint32_t num_stops; /**< */
-} xcb_render_create_linear_gradient_request_t;
-
-/** Opcode for xcb_render_create_radial_gradient. */
-#define XCB_RENDER_CREATE_RADIAL_GRADIENT 35
-
-/**
- * @brief xcb_render_create_radial_gradient_request_t
- **/
-typedef struct xcb_render_create_radial_gradient_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_render_picture_t picture; /**< */
- xcb_render_pointfix_t inner; /**< */
- xcb_render_pointfix_t outer; /**< */
- xcb_render_fixed_t inner_radius; /**< */
- xcb_render_fixed_t outer_radius; /**< */
- uint32_t num_stops; /**< */
-} xcb_render_create_radial_gradient_request_t;
-
-/** Opcode for xcb_render_create_conical_gradient. */
-#define XCB_RENDER_CREATE_CONICAL_GRADIENT 36
-
-/**
- * @brief xcb_render_create_conical_gradient_request_t
- **/
-typedef struct xcb_render_create_conical_gradient_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_render_picture_t picture; /**< */
- xcb_render_pointfix_t center; /**< */
- xcb_render_fixed_t angle; /**< */
- uint32_t num_stops; /**< */
-} xcb_render_create_conical_gradient_request_t;
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_render_glyph_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_render_glyph_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_render_glyph_next
- **
- ** @param xcb_render_glyph_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_render_glyph_next (xcb_render_glyph_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_render_glyph_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_render_glyph_end
- **
- ** @param xcb_render_glyph_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_render_glyph_end (xcb_render_glyph_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_render_glyphset_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_render_glyphset_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_render_glyphset_next
- **
- ** @param xcb_render_glyphset_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_render_glyphset_next (xcb_render_glyphset_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_render_glyphset_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_render_glyphset_end
- **
- ** @param xcb_render_glyphset_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_render_glyphset_end (xcb_render_glyphset_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_render_picture_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_render_picture_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_render_picture_next
- **
- ** @param xcb_render_picture_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_render_picture_next (xcb_render_picture_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_render_picture_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_render_picture_end
- **
- ** @param xcb_render_picture_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_render_picture_end (xcb_render_picture_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_render_pictformat_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_render_pictformat_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_render_pictformat_next
- **
- ** @param xcb_render_pictformat_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_render_pictformat_next (xcb_render_pictformat_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_render_pictformat_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_render_pictformat_end
- **
- ** @param xcb_render_pictformat_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_render_pictformat_end (xcb_render_pictformat_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_render_fixed_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_render_fixed_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_render_fixed_next
- **
- ** @param xcb_render_fixed_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_render_fixed_next (xcb_render_fixed_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_render_fixed_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_render_fixed_end
- **
- ** @param xcb_render_fixed_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_render_fixed_end (xcb_render_fixed_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_render_directformat_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_render_directformat_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_render_directformat_next
- **
- ** @param xcb_render_directformat_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_render_directformat_next (xcb_render_directformat_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_render_directformat_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_render_directformat_end
- **
- ** @param xcb_render_directformat_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_render_directformat_end (xcb_render_directformat_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_render_pictforminfo_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_render_pictforminfo_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_render_pictforminfo_next
- **
- ** @param xcb_render_pictforminfo_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_render_pictforminfo_next (xcb_render_pictforminfo_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_render_pictforminfo_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_render_pictforminfo_end
- **
- ** @param xcb_render_pictforminfo_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_render_pictforminfo_end (xcb_render_pictforminfo_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_render_pictvisual_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_render_pictvisual_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_render_pictvisual_next
- **
- ** @param xcb_render_pictvisual_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_render_pictvisual_next (xcb_render_pictvisual_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_render_pictvisual_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_render_pictvisual_end
- **
- ** @param xcb_render_pictvisual_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_render_pictvisual_end (xcb_render_pictvisual_iterator_t i /**< */);
-
-int
-xcb_render_pictdepth_sizeof (const void *_buffer /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_render_pictvisual_t * xcb_render_pictdepth_visuals
- **
- ** @param const xcb_render_pictdepth_t *R
- ** @returns xcb_render_pictvisual_t *
- **
- *****************************************************************************/
-
-xcb_render_pictvisual_t *
-xcb_render_pictdepth_visuals (const xcb_render_pictdepth_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_render_pictdepth_visuals_length
- **
- ** @param const xcb_render_pictdepth_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_render_pictdepth_visuals_length (const xcb_render_pictdepth_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_render_pictvisual_iterator_t xcb_render_pictdepth_visuals_iterator
- **
- ** @param const xcb_render_pictdepth_t *R
- ** @returns xcb_render_pictvisual_iterator_t
- **
- *****************************************************************************/
-
-xcb_render_pictvisual_iterator_t
-xcb_render_pictdepth_visuals_iterator (const xcb_render_pictdepth_t *R /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_render_pictdepth_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_render_pictdepth_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_render_pictdepth_next
- **
- ** @param xcb_render_pictdepth_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_render_pictdepth_next (xcb_render_pictdepth_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_render_pictdepth_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_render_pictdepth_end
- **
- ** @param xcb_render_pictdepth_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_render_pictdepth_end (xcb_render_pictdepth_iterator_t i /**< */);
-
-int
-xcb_render_pictscreen_sizeof (const void *_buffer /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_render_pictscreen_depths_length
- **
- ** @param const xcb_render_pictscreen_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_render_pictscreen_depths_length (const xcb_render_pictscreen_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_render_pictdepth_iterator_t xcb_render_pictscreen_depths_iterator
- **
- ** @param const xcb_render_pictscreen_t *R
- ** @returns xcb_render_pictdepth_iterator_t
- **
- *****************************************************************************/
-
-xcb_render_pictdepth_iterator_t
-xcb_render_pictscreen_depths_iterator (const xcb_render_pictscreen_t *R /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_render_pictscreen_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_render_pictscreen_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_render_pictscreen_next
- **
- ** @param xcb_render_pictscreen_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_render_pictscreen_next (xcb_render_pictscreen_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_render_pictscreen_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_render_pictscreen_end
- **
- ** @param xcb_render_pictscreen_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_render_pictscreen_end (xcb_render_pictscreen_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_render_indexvalue_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_render_indexvalue_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_render_indexvalue_next
- **
- ** @param xcb_render_indexvalue_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_render_indexvalue_next (xcb_render_indexvalue_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_render_indexvalue_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_render_indexvalue_end
- **
- ** @param xcb_render_indexvalue_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_render_indexvalue_end (xcb_render_indexvalue_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_render_color_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_render_color_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_render_color_next
- **
- ** @param xcb_render_color_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_render_color_next (xcb_render_color_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_render_color_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_render_color_end
- **
- ** @param xcb_render_color_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_render_color_end (xcb_render_color_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_render_pointfix_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_render_pointfix_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_render_pointfix_next
- **
- ** @param xcb_render_pointfix_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_render_pointfix_next (xcb_render_pointfix_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_render_pointfix_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_render_pointfix_end
- **
- ** @param xcb_render_pointfix_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_render_pointfix_end (xcb_render_pointfix_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_render_linefix_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_render_linefix_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_render_linefix_next
- **
- ** @param xcb_render_linefix_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_render_linefix_next (xcb_render_linefix_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_render_linefix_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_render_linefix_end
- **
- ** @param xcb_render_linefix_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_render_linefix_end (xcb_render_linefix_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_render_triangle_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_render_triangle_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_render_triangle_next
- **
- ** @param xcb_render_triangle_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_render_triangle_next (xcb_render_triangle_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_render_triangle_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_render_triangle_end
- **
- ** @param xcb_render_triangle_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_render_triangle_end (xcb_render_triangle_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_render_trapezoid_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_render_trapezoid_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_render_trapezoid_next
- **
- ** @param xcb_render_trapezoid_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_render_trapezoid_next (xcb_render_trapezoid_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_render_trapezoid_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_render_trapezoid_end
- **
- ** @param xcb_render_trapezoid_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_render_trapezoid_end (xcb_render_trapezoid_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_render_glyphinfo_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_render_glyphinfo_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_render_glyphinfo_next
- **
- ** @param xcb_render_glyphinfo_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_render_glyphinfo_next (xcb_render_glyphinfo_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_render_glyphinfo_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_render_glyphinfo_end
- **
- ** @param xcb_render_glyphinfo_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_render_glyphinfo_end (xcb_render_glyphinfo_iterator_t i /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_render_query_version_cookie_t xcb_render_query_version
- **
- ** @param xcb_connection_t *c
- ** @param uint32_t client_major_version
- ** @param uint32_t client_minor_version
- ** @returns xcb_render_query_version_cookie_t
- **
- *****************************************************************************/
-
-xcb_render_query_version_cookie_t
-xcb_render_query_version (xcb_connection_t *c /**< */,
- uint32_t client_major_version /**< */,
- uint32_t client_minor_version /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_render_query_version_cookie_t xcb_render_query_version_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param uint32_t client_major_version
- ** @param uint32_t client_minor_version
- ** @returns xcb_render_query_version_cookie_t
- **
- *****************************************************************************/
-
-xcb_render_query_version_cookie_t
-xcb_render_query_version_unchecked (xcb_connection_t *c /**< */,
- uint32_t client_major_version /**< */,
- uint32_t client_minor_version /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_render_query_version_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_render_query_version_reply_t * xcb_render_query_version_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_query_version_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_render_query_version_reply_t *
- **
- *****************************************************************************/
-
-xcb_render_query_version_reply_t *
-xcb_render_query_version_reply (xcb_connection_t *c /**< */,
- xcb_render_query_version_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-int
-xcb_render_query_pict_formats_sizeof (const void *_buffer /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_render_query_pict_formats_cookie_t xcb_render_query_pict_formats
- **
- ** @param xcb_connection_t *c
- ** @returns xcb_render_query_pict_formats_cookie_t
- **
- *****************************************************************************/
-
-xcb_render_query_pict_formats_cookie_t
-xcb_render_query_pict_formats (xcb_connection_t *c /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_render_query_pict_formats_cookie_t xcb_render_query_pict_formats_unchecked
- **
- ** @param xcb_connection_t *c
- ** @returns xcb_render_query_pict_formats_cookie_t
- **
- *****************************************************************************/
-
-xcb_render_query_pict_formats_cookie_t
-xcb_render_query_pict_formats_unchecked (xcb_connection_t *c /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_render_pictforminfo_t * xcb_render_query_pict_formats_formats
- **
- ** @param const xcb_render_query_pict_formats_reply_t *R
- ** @returns xcb_render_pictforminfo_t *
- **
- *****************************************************************************/
-
-xcb_render_pictforminfo_t *
-xcb_render_query_pict_formats_formats (const xcb_render_query_pict_formats_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_render_query_pict_formats_formats_length
- **
- ** @param const xcb_render_query_pict_formats_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_render_query_pict_formats_formats_length (const xcb_render_query_pict_formats_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_render_pictforminfo_iterator_t xcb_render_query_pict_formats_formats_iterator
- **
- ** @param const xcb_render_query_pict_formats_reply_t *R
- ** @returns xcb_render_pictforminfo_iterator_t
- **
- *****************************************************************************/
-
-xcb_render_pictforminfo_iterator_t
-xcb_render_query_pict_formats_formats_iterator (const xcb_render_query_pict_formats_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_render_query_pict_formats_screens_length
- **
- ** @param const xcb_render_query_pict_formats_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_render_query_pict_formats_screens_length (const xcb_render_query_pict_formats_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_render_pictscreen_iterator_t xcb_render_query_pict_formats_screens_iterator
- **
- ** @param const xcb_render_query_pict_formats_reply_t *R
- ** @returns xcb_render_pictscreen_iterator_t
- **
- *****************************************************************************/
-
-xcb_render_pictscreen_iterator_t
-xcb_render_query_pict_formats_screens_iterator (const xcb_render_query_pict_formats_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** uint32_t * xcb_render_query_pict_formats_subpixels
- **
- ** @param const xcb_render_query_pict_formats_reply_t *R
- ** @returns uint32_t *
- **
- *****************************************************************************/
-
-uint32_t *
-xcb_render_query_pict_formats_subpixels (const xcb_render_query_pict_formats_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_render_query_pict_formats_subpixels_length
- **
- ** @param const xcb_render_query_pict_formats_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_render_query_pict_formats_subpixels_length (const xcb_render_query_pict_formats_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_render_query_pict_formats_subpixels_end
- **
- ** @param const xcb_render_query_pict_formats_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_render_query_pict_formats_subpixels_end (const xcb_render_query_pict_formats_reply_t *R /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_render_query_pict_formats_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_render_query_pict_formats_reply_t * xcb_render_query_pict_formats_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_query_pict_formats_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_render_query_pict_formats_reply_t *
- **
- *****************************************************************************/
-
-xcb_render_query_pict_formats_reply_t *
-xcb_render_query_pict_formats_reply (xcb_connection_t *c /**< */,
- xcb_render_query_pict_formats_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-int
-xcb_render_query_pict_index_values_sizeof (const void *_buffer /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_render_query_pict_index_values_cookie_t xcb_render_query_pict_index_values
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_pictformat_t format
- ** @returns xcb_render_query_pict_index_values_cookie_t
- **
- *****************************************************************************/
-
-xcb_render_query_pict_index_values_cookie_t
-xcb_render_query_pict_index_values (xcb_connection_t *c /**< */,
- xcb_render_pictformat_t format /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_render_query_pict_index_values_cookie_t xcb_render_query_pict_index_values_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_pictformat_t format
- ** @returns xcb_render_query_pict_index_values_cookie_t
- **
- *****************************************************************************/
-
-xcb_render_query_pict_index_values_cookie_t
-xcb_render_query_pict_index_values_unchecked (xcb_connection_t *c /**< */,
- xcb_render_pictformat_t format /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_render_indexvalue_t * xcb_render_query_pict_index_values_values
- **
- ** @param const xcb_render_query_pict_index_values_reply_t *R
- ** @returns xcb_render_indexvalue_t *
- **
- *****************************************************************************/
-
-xcb_render_indexvalue_t *
-xcb_render_query_pict_index_values_values (const xcb_render_query_pict_index_values_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_render_query_pict_index_values_values_length
- **
- ** @param const xcb_render_query_pict_index_values_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_render_query_pict_index_values_values_length (const xcb_render_query_pict_index_values_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_render_indexvalue_iterator_t xcb_render_query_pict_index_values_values_iterator
- **
- ** @param const xcb_render_query_pict_index_values_reply_t *R
- ** @returns xcb_render_indexvalue_iterator_t
- **
- *****************************************************************************/
-
-xcb_render_indexvalue_iterator_t
-xcb_render_query_pict_index_values_values_iterator (const xcb_render_query_pict_index_values_reply_t *R /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_render_query_pict_index_values_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_render_query_pict_index_values_reply_t * xcb_render_query_pict_index_values_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_query_pict_index_values_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_render_query_pict_index_values_reply_t *
- **
- *****************************************************************************/
-
-xcb_render_query_pict_index_values_reply_t *
-xcb_render_query_pict_index_values_reply (xcb_connection_t *c /**< */,
- xcb_render_query_pict_index_values_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-int
-xcb_render_create_picture_sizeof (const void *_buffer /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_create_picture_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_picture_t pid
- ** @param xcb_drawable_t drawable
- ** @param xcb_render_pictformat_t format
- ** @param uint32_t value_mask
- ** @param const uint32_t *value_list
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_create_picture_checked (xcb_connection_t *c /**< */,
- xcb_render_picture_t pid /**< */,
- xcb_drawable_t drawable /**< */,
- xcb_render_pictformat_t format /**< */,
- uint32_t value_mask /**< */,
- const uint32_t *value_list /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_create_picture
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_picture_t pid
- ** @param xcb_drawable_t drawable
- ** @param xcb_render_pictformat_t format
- ** @param uint32_t value_mask
- ** @param const uint32_t *value_list
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_create_picture (xcb_connection_t *c /**< */,
- xcb_render_picture_t pid /**< */,
- xcb_drawable_t drawable /**< */,
- xcb_render_pictformat_t format /**< */,
- uint32_t value_mask /**< */,
- const uint32_t *value_list /**< */);
-
-int
-xcb_render_change_picture_sizeof (const void *_buffer /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_change_picture_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_picture_t picture
- ** @param uint32_t value_mask
- ** @param const uint32_t *value_list
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_change_picture_checked (xcb_connection_t *c /**< */,
- xcb_render_picture_t picture /**< */,
- uint32_t value_mask /**< */,
- const uint32_t *value_list /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_change_picture
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_picture_t picture
- ** @param uint32_t value_mask
- ** @param const uint32_t *value_list
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_change_picture (xcb_connection_t *c /**< */,
- xcb_render_picture_t picture /**< */,
- uint32_t value_mask /**< */,
- const uint32_t *value_list /**< */);
-
-int
-xcb_render_set_picture_clip_rectangles_sizeof (const void *_buffer /**< */,
- uint32_t rectangles_len /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_set_picture_clip_rectangles_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_picture_t picture
- ** @param int16_t clip_x_origin
- ** @param int16_t clip_y_origin
- ** @param uint32_t rectangles_len
- ** @param const xcb_rectangle_t *rectangles
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_set_picture_clip_rectangles_checked (xcb_connection_t *c /**< */,
- xcb_render_picture_t picture /**< */,
- int16_t clip_x_origin /**< */,
- int16_t clip_y_origin /**< */,
- uint32_t rectangles_len /**< */,
- const xcb_rectangle_t *rectangles /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_set_picture_clip_rectangles
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_picture_t picture
- ** @param int16_t clip_x_origin
- ** @param int16_t clip_y_origin
- ** @param uint32_t rectangles_len
- ** @param const xcb_rectangle_t *rectangles
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_set_picture_clip_rectangles (xcb_connection_t *c /**< */,
- xcb_render_picture_t picture /**< */,
- int16_t clip_x_origin /**< */,
- int16_t clip_y_origin /**< */,
- uint32_t rectangles_len /**< */,
- const xcb_rectangle_t *rectangles /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_free_picture_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_picture_t picture
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_free_picture_checked (xcb_connection_t *c /**< */,
- xcb_render_picture_t picture /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_free_picture
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_picture_t picture
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_free_picture (xcb_connection_t *c /**< */,
- xcb_render_picture_t picture /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_composite_checked
- **
- ** @param xcb_connection_t *c
- ** @param uint8_t op
- ** @param xcb_render_picture_t src
- ** @param xcb_render_picture_t mask
- ** @param xcb_render_picture_t dst
- ** @param int16_t src_x
- ** @param int16_t src_y
- ** @param int16_t mask_x
- ** @param int16_t mask_y
- ** @param int16_t dst_x
- ** @param int16_t dst_y
- ** @param uint16_t width
- ** @param uint16_t height
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_composite_checked (xcb_connection_t *c /**< */,
- uint8_t op /**< */,
- xcb_render_picture_t src /**< */,
- xcb_render_picture_t mask /**< */,
- xcb_render_picture_t dst /**< */,
- int16_t src_x /**< */,
- int16_t src_y /**< */,
- int16_t mask_x /**< */,
- int16_t mask_y /**< */,
- int16_t dst_x /**< */,
- int16_t dst_y /**< */,
- uint16_t width /**< */,
- uint16_t height /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_composite
- **
- ** @param xcb_connection_t *c
- ** @param uint8_t op
- ** @param xcb_render_picture_t src
- ** @param xcb_render_picture_t mask
- ** @param xcb_render_picture_t dst
- ** @param int16_t src_x
- ** @param int16_t src_y
- ** @param int16_t mask_x
- ** @param int16_t mask_y
- ** @param int16_t dst_x
- ** @param int16_t dst_y
- ** @param uint16_t width
- ** @param uint16_t height
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_composite (xcb_connection_t *c /**< */,
- uint8_t op /**< */,
- xcb_render_picture_t src /**< */,
- xcb_render_picture_t mask /**< */,
- xcb_render_picture_t dst /**< */,
- int16_t src_x /**< */,
- int16_t src_y /**< */,
- int16_t mask_x /**< */,
- int16_t mask_y /**< */,
- int16_t dst_x /**< */,
- int16_t dst_y /**< */,
- uint16_t width /**< */,
- uint16_t height /**< */);
-
-int
-xcb_render_trapezoids_sizeof (const void *_buffer /**< */,
- uint32_t traps_len /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_trapezoids_checked
- **
- ** @param xcb_connection_t *c
- ** @param uint8_t op
- ** @param xcb_render_picture_t src
- ** @param xcb_render_picture_t dst
- ** @param xcb_render_pictformat_t mask_format
- ** @param int16_t src_x
- ** @param int16_t src_y
- ** @param uint32_t traps_len
- ** @param const xcb_render_trapezoid_t *traps
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_trapezoids_checked (xcb_connection_t *c /**< */,
- uint8_t op /**< */,
- xcb_render_picture_t src /**< */,
- xcb_render_picture_t dst /**< */,
- xcb_render_pictformat_t mask_format /**< */,
- int16_t src_x /**< */,
- int16_t src_y /**< */,
- uint32_t traps_len /**< */,
- const xcb_render_trapezoid_t *traps /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_trapezoids
- **
- ** @param xcb_connection_t *c
- ** @param uint8_t op
- ** @param xcb_render_picture_t src
- ** @param xcb_render_picture_t dst
- ** @param xcb_render_pictformat_t mask_format
- ** @param int16_t src_x
- ** @param int16_t src_y
- ** @param uint32_t traps_len
- ** @param const xcb_render_trapezoid_t *traps
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_trapezoids (xcb_connection_t *c /**< */,
- uint8_t op /**< */,
- xcb_render_picture_t src /**< */,
- xcb_render_picture_t dst /**< */,
- xcb_render_pictformat_t mask_format /**< */,
- int16_t src_x /**< */,
- int16_t src_y /**< */,
- uint32_t traps_len /**< */,
- const xcb_render_trapezoid_t *traps /**< */);
-
-int
-xcb_render_triangles_sizeof (const void *_buffer /**< */,
- uint32_t triangles_len /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_triangles_checked
- **
- ** @param xcb_connection_t *c
- ** @param uint8_t op
- ** @param xcb_render_picture_t src
- ** @param xcb_render_picture_t dst
- ** @param xcb_render_pictformat_t mask_format
- ** @param int16_t src_x
- ** @param int16_t src_y
- ** @param uint32_t triangles_len
- ** @param const xcb_render_triangle_t *triangles
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_triangles_checked (xcb_connection_t *c /**< */,
- uint8_t op /**< */,
- xcb_render_picture_t src /**< */,
- xcb_render_picture_t dst /**< */,
- xcb_render_pictformat_t mask_format /**< */,
- int16_t src_x /**< */,
- int16_t src_y /**< */,
- uint32_t triangles_len /**< */,
- const xcb_render_triangle_t *triangles /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_triangles
- **
- ** @param xcb_connection_t *c
- ** @param uint8_t op
- ** @param xcb_render_picture_t src
- ** @param xcb_render_picture_t dst
- ** @param xcb_render_pictformat_t mask_format
- ** @param int16_t src_x
- ** @param int16_t src_y
- ** @param uint32_t triangles_len
- ** @param const xcb_render_triangle_t *triangles
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_triangles (xcb_connection_t *c /**< */,
- uint8_t op /**< */,
- xcb_render_picture_t src /**< */,
- xcb_render_picture_t dst /**< */,
- xcb_render_pictformat_t mask_format /**< */,
- int16_t src_x /**< */,
- int16_t src_y /**< */,
- uint32_t triangles_len /**< */,
- const xcb_render_triangle_t *triangles /**< */);
-
-int
-xcb_render_tri_strip_sizeof (const void *_buffer /**< */,
- uint32_t points_len /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_tri_strip_checked
- **
- ** @param xcb_connection_t *c
- ** @param uint8_t op
- ** @param xcb_render_picture_t src
- ** @param xcb_render_picture_t dst
- ** @param xcb_render_pictformat_t mask_format
- ** @param int16_t src_x
- ** @param int16_t src_y
- ** @param uint32_t points_len
- ** @param const xcb_render_pointfix_t *points
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_tri_strip_checked (xcb_connection_t *c /**< */,
- uint8_t op /**< */,
- xcb_render_picture_t src /**< */,
- xcb_render_picture_t dst /**< */,
- xcb_render_pictformat_t mask_format /**< */,
- int16_t src_x /**< */,
- int16_t src_y /**< */,
- uint32_t points_len /**< */,
- const xcb_render_pointfix_t *points /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_tri_strip
- **
- ** @param xcb_connection_t *c
- ** @param uint8_t op
- ** @param xcb_render_picture_t src
- ** @param xcb_render_picture_t dst
- ** @param xcb_render_pictformat_t mask_format
- ** @param int16_t src_x
- ** @param int16_t src_y
- ** @param uint32_t points_len
- ** @param const xcb_render_pointfix_t *points
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_tri_strip (xcb_connection_t *c /**< */,
- uint8_t op /**< */,
- xcb_render_picture_t src /**< */,
- xcb_render_picture_t dst /**< */,
- xcb_render_pictformat_t mask_format /**< */,
- int16_t src_x /**< */,
- int16_t src_y /**< */,
- uint32_t points_len /**< */,
- const xcb_render_pointfix_t *points /**< */);
-
-int
-xcb_render_tri_fan_sizeof (const void *_buffer /**< */,
- uint32_t points_len /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_tri_fan_checked
- **
- ** @param xcb_connection_t *c
- ** @param uint8_t op
- ** @param xcb_render_picture_t src
- ** @param xcb_render_picture_t dst
- ** @param xcb_render_pictformat_t mask_format
- ** @param int16_t src_x
- ** @param int16_t src_y
- ** @param uint32_t points_len
- ** @param const xcb_render_pointfix_t *points
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_tri_fan_checked (xcb_connection_t *c /**< */,
- uint8_t op /**< */,
- xcb_render_picture_t src /**< */,
- xcb_render_picture_t dst /**< */,
- xcb_render_pictformat_t mask_format /**< */,
- int16_t src_x /**< */,
- int16_t src_y /**< */,
- uint32_t points_len /**< */,
- const xcb_render_pointfix_t *points /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_tri_fan
- **
- ** @param xcb_connection_t *c
- ** @param uint8_t op
- ** @param xcb_render_picture_t src
- ** @param xcb_render_picture_t dst
- ** @param xcb_render_pictformat_t mask_format
- ** @param int16_t src_x
- ** @param int16_t src_y
- ** @param uint32_t points_len
- ** @param const xcb_render_pointfix_t *points
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_tri_fan (xcb_connection_t *c /**< */,
- uint8_t op /**< */,
- xcb_render_picture_t src /**< */,
- xcb_render_picture_t dst /**< */,
- xcb_render_pictformat_t mask_format /**< */,
- int16_t src_x /**< */,
- int16_t src_y /**< */,
- uint32_t points_len /**< */,
- const xcb_render_pointfix_t *points /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_create_glyph_set_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_glyphset_t gsid
- ** @param xcb_render_pictformat_t format
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_create_glyph_set_checked (xcb_connection_t *c /**< */,
- xcb_render_glyphset_t gsid /**< */,
- xcb_render_pictformat_t format /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_create_glyph_set
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_glyphset_t gsid
- ** @param xcb_render_pictformat_t format
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_create_glyph_set (xcb_connection_t *c /**< */,
- xcb_render_glyphset_t gsid /**< */,
- xcb_render_pictformat_t format /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_reference_glyph_set_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_glyphset_t gsid
- ** @param xcb_render_glyphset_t existing
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_reference_glyph_set_checked (xcb_connection_t *c /**< */,
- xcb_render_glyphset_t gsid /**< */,
- xcb_render_glyphset_t existing /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_reference_glyph_set
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_glyphset_t gsid
- ** @param xcb_render_glyphset_t existing
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_reference_glyph_set (xcb_connection_t *c /**< */,
- xcb_render_glyphset_t gsid /**< */,
- xcb_render_glyphset_t existing /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_free_glyph_set_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_glyphset_t glyphset
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_free_glyph_set_checked (xcb_connection_t *c /**< */,
- xcb_render_glyphset_t glyphset /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_free_glyph_set
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_glyphset_t glyphset
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_free_glyph_set (xcb_connection_t *c /**< */,
- xcb_render_glyphset_t glyphset /**< */);
-
-int
-xcb_render_add_glyphs_sizeof (const void *_buffer /**< */,
- uint32_t data_len /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_add_glyphs_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_glyphset_t glyphset
- ** @param uint32_t glyphs_len
- ** @param const uint32_t *glyphids
- ** @param const xcb_render_glyphinfo_t *glyphs
- ** @param uint32_t data_len
- ** @param const uint8_t *data
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_add_glyphs_checked (xcb_connection_t *c /**< */,
- xcb_render_glyphset_t glyphset /**< */,
- uint32_t glyphs_len /**< */,
- const uint32_t *glyphids /**< */,
- const xcb_render_glyphinfo_t *glyphs /**< */,
- uint32_t data_len /**< */,
- const uint8_t *data /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_add_glyphs
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_glyphset_t glyphset
- ** @param uint32_t glyphs_len
- ** @param const uint32_t *glyphids
- ** @param const xcb_render_glyphinfo_t *glyphs
- ** @param uint32_t data_len
- ** @param const uint8_t *data
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_add_glyphs (xcb_connection_t *c /**< */,
- xcb_render_glyphset_t glyphset /**< */,
- uint32_t glyphs_len /**< */,
- const uint32_t *glyphids /**< */,
- const xcb_render_glyphinfo_t *glyphs /**< */,
- uint32_t data_len /**< */,
- const uint8_t *data /**< */);
-
-int
-xcb_render_free_glyphs_sizeof (const void *_buffer /**< */,
- uint32_t glyphs_len /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_free_glyphs_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_glyphset_t glyphset
- ** @param uint32_t glyphs_len
- ** @param const xcb_render_glyph_t *glyphs
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_free_glyphs_checked (xcb_connection_t *c /**< */,
- xcb_render_glyphset_t glyphset /**< */,
- uint32_t glyphs_len /**< */,
- const xcb_render_glyph_t *glyphs /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_free_glyphs
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_glyphset_t glyphset
- ** @param uint32_t glyphs_len
- ** @param const xcb_render_glyph_t *glyphs
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_free_glyphs (xcb_connection_t *c /**< */,
- xcb_render_glyphset_t glyphset /**< */,
- uint32_t glyphs_len /**< */,
- const xcb_render_glyph_t *glyphs /**< */);
-
-int
-xcb_render_composite_glyphs_8_sizeof (const void *_buffer /**< */,
- uint32_t glyphcmds_len /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_composite_glyphs_8_checked
- **
- ** @param xcb_connection_t *c
- ** @param uint8_t op
- ** @param xcb_render_picture_t src
- ** @param xcb_render_picture_t dst
- ** @param xcb_render_pictformat_t mask_format
- ** @param xcb_render_glyphset_t glyphset
- ** @param int16_t src_x
- ** @param int16_t src_y
- ** @param uint32_t glyphcmds_len
- ** @param const uint8_t *glyphcmds
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_composite_glyphs_8_checked (xcb_connection_t *c /**< */,
- uint8_t op /**< */,
- xcb_render_picture_t src /**< */,
- xcb_render_picture_t dst /**< */,
- xcb_render_pictformat_t mask_format /**< */,
- xcb_render_glyphset_t glyphset /**< */,
- int16_t src_x /**< */,
- int16_t src_y /**< */,
- uint32_t glyphcmds_len /**< */,
- const uint8_t *glyphcmds /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_composite_glyphs_8
- **
- ** @param xcb_connection_t *c
- ** @param uint8_t op
- ** @param xcb_render_picture_t src
- ** @param xcb_render_picture_t dst
- ** @param xcb_render_pictformat_t mask_format
- ** @param xcb_render_glyphset_t glyphset
- ** @param int16_t src_x
- ** @param int16_t src_y
- ** @param uint32_t glyphcmds_len
- ** @param const uint8_t *glyphcmds
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_composite_glyphs_8 (xcb_connection_t *c /**< */,
- uint8_t op /**< */,
- xcb_render_picture_t src /**< */,
- xcb_render_picture_t dst /**< */,
- xcb_render_pictformat_t mask_format /**< */,
- xcb_render_glyphset_t glyphset /**< */,
- int16_t src_x /**< */,
- int16_t src_y /**< */,
- uint32_t glyphcmds_len /**< */,
- const uint8_t *glyphcmds /**< */);
-
-int
-xcb_render_composite_glyphs_16_sizeof (const void *_buffer /**< */,
- uint32_t glyphcmds_len /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_composite_glyphs_16_checked
- **
- ** @param xcb_connection_t *c
- ** @param uint8_t op
- ** @param xcb_render_picture_t src
- ** @param xcb_render_picture_t dst
- ** @param xcb_render_pictformat_t mask_format
- ** @param xcb_render_glyphset_t glyphset
- ** @param int16_t src_x
- ** @param int16_t src_y
- ** @param uint32_t glyphcmds_len
- ** @param const uint8_t *glyphcmds
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_composite_glyphs_16_checked (xcb_connection_t *c /**< */,
- uint8_t op /**< */,
- xcb_render_picture_t src /**< */,
- xcb_render_picture_t dst /**< */,
- xcb_render_pictformat_t mask_format /**< */,
- xcb_render_glyphset_t glyphset /**< */,
- int16_t src_x /**< */,
- int16_t src_y /**< */,
- uint32_t glyphcmds_len /**< */,
- const uint8_t *glyphcmds /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_composite_glyphs_16
- **
- ** @param xcb_connection_t *c
- ** @param uint8_t op
- ** @param xcb_render_picture_t src
- ** @param xcb_render_picture_t dst
- ** @param xcb_render_pictformat_t mask_format
- ** @param xcb_render_glyphset_t glyphset
- ** @param int16_t src_x
- ** @param int16_t src_y
- ** @param uint32_t glyphcmds_len
- ** @param const uint8_t *glyphcmds
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_composite_glyphs_16 (xcb_connection_t *c /**< */,
- uint8_t op /**< */,
- xcb_render_picture_t src /**< */,
- xcb_render_picture_t dst /**< */,
- xcb_render_pictformat_t mask_format /**< */,
- xcb_render_glyphset_t glyphset /**< */,
- int16_t src_x /**< */,
- int16_t src_y /**< */,
- uint32_t glyphcmds_len /**< */,
- const uint8_t *glyphcmds /**< */);
-
-int
-xcb_render_composite_glyphs_32_sizeof (const void *_buffer /**< */,
- uint32_t glyphcmds_len /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_composite_glyphs_32_checked
- **
- ** @param xcb_connection_t *c
- ** @param uint8_t op
- ** @param xcb_render_picture_t src
- ** @param xcb_render_picture_t dst
- ** @param xcb_render_pictformat_t mask_format
- ** @param xcb_render_glyphset_t glyphset
- ** @param int16_t src_x
- ** @param int16_t src_y
- ** @param uint32_t glyphcmds_len
- ** @param const uint8_t *glyphcmds
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_composite_glyphs_32_checked (xcb_connection_t *c /**< */,
- uint8_t op /**< */,
- xcb_render_picture_t src /**< */,
- xcb_render_picture_t dst /**< */,
- xcb_render_pictformat_t mask_format /**< */,
- xcb_render_glyphset_t glyphset /**< */,
- int16_t src_x /**< */,
- int16_t src_y /**< */,
- uint32_t glyphcmds_len /**< */,
- const uint8_t *glyphcmds /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_composite_glyphs_32
- **
- ** @param xcb_connection_t *c
- ** @param uint8_t op
- ** @param xcb_render_picture_t src
- ** @param xcb_render_picture_t dst
- ** @param xcb_render_pictformat_t mask_format
- ** @param xcb_render_glyphset_t glyphset
- ** @param int16_t src_x
- ** @param int16_t src_y
- ** @param uint32_t glyphcmds_len
- ** @param const uint8_t *glyphcmds
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_composite_glyphs_32 (xcb_connection_t *c /**< */,
- uint8_t op /**< */,
- xcb_render_picture_t src /**< */,
- xcb_render_picture_t dst /**< */,
- xcb_render_pictformat_t mask_format /**< */,
- xcb_render_glyphset_t glyphset /**< */,
- int16_t src_x /**< */,
- int16_t src_y /**< */,
- uint32_t glyphcmds_len /**< */,
- const uint8_t *glyphcmds /**< */);
-
-int
-xcb_render_fill_rectangles_sizeof (const void *_buffer /**< */,
- uint32_t rects_len /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_fill_rectangles_checked
- **
- ** @param xcb_connection_t *c
- ** @param uint8_t op
- ** @param xcb_render_picture_t dst
- ** @param xcb_render_color_t color
- ** @param uint32_t rects_len
- ** @param const xcb_rectangle_t *rects
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_fill_rectangles_checked (xcb_connection_t *c /**< */,
- uint8_t op /**< */,
- xcb_render_picture_t dst /**< */,
- xcb_render_color_t color /**< */,
- uint32_t rects_len /**< */,
- const xcb_rectangle_t *rects /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_fill_rectangles
- **
- ** @param xcb_connection_t *c
- ** @param uint8_t op
- ** @param xcb_render_picture_t dst
- ** @param xcb_render_color_t color
- ** @param uint32_t rects_len
- ** @param const xcb_rectangle_t *rects
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_fill_rectangles (xcb_connection_t *c /**< */,
- uint8_t op /**< */,
- xcb_render_picture_t dst /**< */,
- xcb_render_color_t color /**< */,
- uint32_t rects_len /**< */,
- const xcb_rectangle_t *rects /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_create_cursor_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_cursor_t cid
- ** @param xcb_render_picture_t source
- ** @param uint16_t x
- ** @param uint16_t y
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_create_cursor_checked (xcb_connection_t *c /**< */,
- xcb_cursor_t cid /**< */,
- xcb_render_picture_t source /**< */,
- uint16_t x /**< */,
- uint16_t y /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_create_cursor
- **
- ** @param xcb_connection_t *c
- ** @param xcb_cursor_t cid
- ** @param xcb_render_picture_t source
- ** @param uint16_t x
- ** @param uint16_t y
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_create_cursor (xcb_connection_t *c /**< */,
- xcb_cursor_t cid /**< */,
- xcb_render_picture_t source /**< */,
- uint16_t x /**< */,
- uint16_t y /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_render_transform_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_render_transform_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_render_transform_next
- **
- ** @param xcb_render_transform_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_render_transform_next (xcb_render_transform_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_render_transform_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_render_transform_end
- **
- ** @param xcb_render_transform_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_render_transform_end (xcb_render_transform_iterator_t i /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_set_picture_transform_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_picture_t picture
- ** @param xcb_render_transform_t transform
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_set_picture_transform_checked (xcb_connection_t *c /**< */,
- xcb_render_picture_t picture /**< */,
- xcb_render_transform_t transform /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_set_picture_transform
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_picture_t picture
- ** @param xcb_render_transform_t transform
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_set_picture_transform (xcb_connection_t *c /**< */,
- xcb_render_picture_t picture /**< */,
- xcb_render_transform_t transform /**< */);
-
-int
-xcb_render_query_filters_sizeof (const void *_buffer /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_render_query_filters_cookie_t xcb_render_query_filters
- **
- ** @param xcb_connection_t *c
- ** @param xcb_drawable_t drawable
- ** @returns xcb_render_query_filters_cookie_t
- **
- *****************************************************************************/
-
-xcb_render_query_filters_cookie_t
-xcb_render_query_filters (xcb_connection_t *c /**< */,
- xcb_drawable_t drawable /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_render_query_filters_cookie_t xcb_render_query_filters_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_drawable_t drawable
- ** @returns xcb_render_query_filters_cookie_t
- **
- *****************************************************************************/
-
-xcb_render_query_filters_cookie_t
-xcb_render_query_filters_unchecked (xcb_connection_t *c /**< */,
- xcb_drawable_t drawable /**< */);
-
-
-/*****************************************************************************
- **
- ** uint16_t * xcb_render_query_filters_aliases
- **
- ** @param const xcb_render_query_filters_reply_t *R
- ** @returns uint16_t *
- **
- *****************************************************************************/
-
-uint16_t *
-xcb_render_query_filters_aliases (const xcb_render_query_filters_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_render_query_filters_aliases_length
- **
- ** @param const xcb_render_query_filters_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_render_query_filters_aliases_length (const xcb_render_query_filters_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_render_query_filters_aliases_end
- **
- ** @param const xcb_render_query_filters_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_render_query_filters_aliases_end (const xcb_render_query_filters_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_render_query_filters_filters_length
- **
- ** @param const xcb_render_query_filters_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_render_query_filters_filters_length (const xcb_render_query_filters_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_str_iterator_t xcb_render_query_filters_filters_iterator
- **
- ** @param const xcb_render_query_filters_reply_t *R
- ** @returns xcb_str_iterator_t
- **
- *****************************************************************************/
-
-xcb_str_iterator_t
-xcb_render_query_filters_filters_iterator (const xcb_render_query_filters_reply_t *R /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_render_query_filters_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_render_query_filters_reply_t * xcb_render_query_filters_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_query_filters_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_render_query_filters_reply_t *
- **
- *****************************************************************************/
-
-xcb_render_query_filters_reply_t *
-xcb_render_query_filters_reply (xcb_connection_t *c /**< */,
- xcb_render_query_filters_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-int
-xcb_render_set_picture_filter_sizeof (const void *_buffer /**< */,
- uint32_t values_len /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_set_picture_filter_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_picture_t picture
- ** @param uint16_t filter_len
- ** @param const char *filter
- ** @param uint32_t values_len
- ** @param const xcb_render_fixed_t *values
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_set_picture_filter_checked (xcb_connection_t *c /**< */,
- xcb_render_picture_t picture /**< */,
- uint16_t filter_len /**< */,
- const char *filter /**< */,
- uint32_t values_len /**< */,
- const xcb_render_fixed_t *values /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_set_picture_filter
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_picture_t picture
- ** @param uint16_t filter_len
- ** @param const char *filter
- ** @param uint32_t values_len
- ** @param const xcb_render_fixed_t *values
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_set_picture_filter (xcb_connection_t *c /**< */,
- xcb_render_picture_t picture /**< */,
- uint16_t filter_len /**< */,
- const char *filter /**< */,
- uint32_t values_len /**< */,
- const xcb_render_fixed_t *values /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_render_animcursorelt_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_render_animcursorelt_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_render_animcursorelt_next
- **
- ** @param xcb_render_animcursorelt_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_render_animcursorelt_next (xcb_render_animcursorelt_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_render_animcursorelt_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_render_animcursorelt_end
- **
- ** @param xcb_render_animcursorelt_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_render_animcursorelt_end (xcb_render_animcursorelt_iterator_t i /**< */);
-
-int
-xcb_render_create_anim_cursor_sizeof (const void *_buffer /**< */,
- uint32_t cursors_len /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_create_anim_cursor_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_cursor_t cid
- ** @param uint32_t cursors_len
- ** @param const xcb_render_animcursorelt_t *cursors
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_create_anim_cursor_checked (xcb_connection_t *c /**< */,
- xcb_cursor_t cid /**< */,
- uint32_t cursors_len /**< */,
- const xcb_render_animcursorelt_t *cursors /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_create_anim_cursor
- **
- ** @param xcb_connection_t *c
- ** @param xcb_cursor_t cid
- ** @param uint32_t cursors_len
- ** @param const xcb_render_animcursorelt_t *cursors
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_create_anim_cursor (xcb_connection_t *c /**< */,
- xcb_cursor_t cid /**< */,
- uint32_t cursors_len /**< */,
- const xcb_render_animcursorelt_t *cursors /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_render_spanfix_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_render_spanfix_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_render_spanfix_next
- **
- ** @param xcb_render_spanfix_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_render_spanfix_next (xcb_render_spanfix_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_render_spanfix_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_render_spanfix_end
- **
- ** @param xcb_render_spanfix_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_render_spanfix_end (xcb_render_spanfix_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_render_trap_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_render_trap_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_render_trap_next
- **
- ** @param xcb_render_trap_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_render_trap_next (xcb_render_trap_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_render_trap_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_render_trap_end
- **
- ** @param xcb_render_trap_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_render_trap_end (xcb_render_trap_iterator_t i /**< */);
-
-int
-xcb_render_add_traps_sizeof (const void *_buffer /**< */,
- uint32_t traps_len /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_add_traps_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_picture_t picture
- ** @param int16_t x_off
- ** @param int16_t y_off
- ** @param uint32_t traps_len
- ** @param const xcb_render_trap_t *traps
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_add_traps_checked (xcb_connection_t *c /**< */,
- xcb_render_picture_t picture /**< */,
- int16_t x_off /**< */,
- int16_t y_off /**< */,
- uint32_t traps_len /**< */,
- const xcb_render_trap_t *traps /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_add_traps
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_picture_t picture
- ** @param int16_t x_off
- ** @param int16_t y_off
- ** @param uint32_t traps_len
- ** @param const xcb_render_trap_t *traps
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_add_traps (xcb_connection_t *c /**< */,
- xcb_render_picture_t picture /**< */,
- int16_t x_off /**< */,
- int16_t y_off /**< */,
- uint32_t traps_len /**< */,
- const xcb_render_trap_t *traps /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_create_solid_fill_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_picture_t picture
- ** @param xcb_render_color_t color
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_create_solid_fill_checked (xcb_connection_t *c /**< */,
- xcb_render_picture_t picture /**< */,
- xcb_render_color_t color /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_create_solid_fill
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_picture_t picture
- ** @param xcb_render_color_t color
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_create_solid_fill (xcb_connection_t *c /**< */,
- xcb_render_picture_t picture /**< */,
- xcb_render_color_t color /**< */);
-
-int
-xcb_render_create_linear_gradient_sizeof (const void *_buffer /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_create_linear_gradient_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_picture_t picture
- ** @param xcb_render_pointfix_t p1
- ** @param xcb_render_pointfix_t p2
- ** @param uint32_t num_stops
- ** @param const xcb_render_fixed_t *stops
- ** @param const xcb_render_color_t *colors
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_create_linear_gradient_checked (xcb_connection_t *c /**< */,
- xcb_render_picture_t picture /**< */,
- xcb_render_pointfix_t p1 /**< */,
- xcb_render_pointfix_t p2 /**< */,
- uint32_t num_stops /**< */,
- const xcb_render_fixed_t *stops /**< */,
- const xcb_render_color_t *colors /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_create_linear_gradient
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_picture_t picture
- ** @param xcb_render_pointfix_t p1
- ** @param xcb_render_pointfix_t p2
- ** @param uint32_t num_stops
- ** @param const xcb_render_fixed_t *stops
- ** @param const xcb_render_color_t *colors
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_create_linear_gradient (xcb_connection_t *c /**< */,
- xcb_render_picture_t picture /**< */,
- xcb_render_pointfix_t p1 /**< */,
- xcb_render_pointfix_t p2 /**< */,
- uint32_t num_stops /**< */,
- const xcb_render_fixed_t *stops /**< */,
- const xcb_render_color_t *colors /**< */);
-
-int
-xcb_render_create_radial_gradient_sizeof (const void *_buffer /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_create_radial_gradient_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_picture_t picture
- ** @param xcb_render_pointfix_t inner
- ** @param xcb_render_pointfix_t outer
- ** @param xcb_render_fixed_t inner_radius
- ** @param xcb_render_fixed_t outer_radius
- ** @param uint32_t num_stops
- ** @param const xcb_render_fixed_t *stops
- ** @param const xcb_render_color_t *colors
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_create_radial_gradient_checked (xcb_connection_t *c /**< */,
- xcb_render_picture_t picture /**< */,
- xcb_render_pointfix_t inner /**< */,
- xcb_render_pointfix_t outer /**< */,
- xcb_render_fixed_t inner_radius /**< */,
- xcb_render_fixed_t outer_radius /**< */,
- uint32_t num_stops /**< */,
- const xcb_render_fixed_t *stops /**< */,
- const xcb_render_color_t *colors /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_create_radial_gradient
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_picture_t picture
- ** @param xcb_render_pointfix_t inner
- ** @param xcb_render_pointfix_t outer
- ** @param xcb_render_fixed_t inner_radius
- ** @param xcb_render_fixed_t outer_radius
- ** @param uint32_t num_stops
- ** @param const xcb_render_fixed_t *stops
- ** @param const xcb_render_color_t *colors
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_create_radial_gradient (xcb_connection_t *c /**< */,
- xcb_render_picture_t picture /**< */,
- xcb_render_pointfix_t inner /**< */,
- xcb_render_pointfix_t outer /**< */,
- xcb_render_fixed_t inner_radius /**< */,
- xcb_render_fixed_t outer_radius /**< */,
- uint32_t num_stops /**< */,
- const xcb_render_fixed_t *stops /**< */,
- const xcb_render_color_t *colors /**< */);
-
-int
-xcb_render_create_conical_gradient_sizeof (const void *_buffer /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_create_conical_gradient_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_picture_t picture
- ** @param xcb_render_pointfix_t center
- ** @param xcb_render_fixed_t angle
- ** @param uint32_t num_stops
- ** @param const xcb_render_fixed_t *stops
- ** @param const xcb_render_color_t *colors
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_create_conical_gradient_checked (xcb_connection_t *c /**< */,
- xcb_render_picture_t picture /**< */,
- xcb_render_pointfix_t center /**< */,
- xcb_render_fixed_t angle /**< */,
- uint32_t num_stops /**< */,
- const xcb_render_fixed_t *stops /**< */,
- const xcb_render_color_t *colors /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_create_conical_gradient
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_picture_t picture
- ** @param xcb_render_pointfix_t center
- ** @param xcb_render_fixed_t angle
- ** @param uint32_t num_stops
- ** @param const xcb_render_fixed_t *stops
- ** @param const xcb_render_color_t *colors
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_create_conical_gradient (xcb_connection_t *c /**< */,
- xcb_render_picture_t picture /**< */,
- xcb_render_pointfix_t center /**< */,
- xcb_render_fixed_t angle /**< */,
- uint32_t num_stops /**< */,
- const xcb_render_fixed_t *stops /**< */,
- const xcb_render_color_t *colors /**< */);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-/**
- * @}
- */
diff --git a/src/3rdparty/xcb/include/xcb/shape.h b/src/3rdparty/xcb/include/xcb/shape.h
deleted file mode 100644
index 63919b42c7..0000000000
--- a/src/3rdparty/xcb/include/xcb/shape.h
+++ /dev/null
@@ -1,1103 +0,0 @@
-/*
- * This file generated automatically from shape.xml by c_client.py.
- * Edit at your peril.
- */
-
-/**
- * @defgroup XCB_Shape_API XCB Shape API
- * @brief Shape XCB Protocol Implementation.
- * @{
- **/
-
-#ifndef __SHAPE_H
-#define __SHAPE_H
-
-#include "xcb.h"
-#include "xproto.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define XCB_SHAPE_MAJOR_VERSION 1
-#define XCB_SHAPE_MINOR_VERSION 1
-
-extern xcb_extension_t xcb_shape_id;
-
-typedef uint8_t xcb_shape_op_t;
-
-/**
- * @brief xcb_shape_op_iterator_t
- **/
-typedef struct xcb_shape_op_iterator_t {
- xcb_shape_op_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_shape_op_iterator_t;
-
-typedef uint8_t xcb_shape_kind_t;
-
-/**
- * @brief xcb_shape_kind_iterator_t
- **/
-typedef struct xcb_shape_kind_iterator_t {
- xcb_shape_kind_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_shape_kind_iterator_t;
-
-typedef enum xcb_shape_so_t {
- XCB_SHAPE_SO_SET,
- XCB_SHAPE_SO_UNION,
- XCB_SHAPE_SO_INTERSECT,
- XCB_SHAPE_SO_SUBTRACT,
- XCB_SHAPE_SO_INVERT
-} xcb_shape_so_t;
-
-typedef enum xcb_shape_sk_t {
- XCB_SHAPE_SK_BOUNDING,
- XCB_SHAPE_SK_CLIP,
- XCB_SHAPE_SK_INPUT
-} xcb_shape_sk_t;
-
-/** Opcode for xcb_shape_notify. */
-#define XCB_SHAPE_NOTIFY 0
-
-/**
- * @brief xcb_shape_notify_event_t
- **/
-typedef struct xcb_shape_notify_event_t {
- uint8_t response_type; /**< */
- xcb_shape_kind_t shape_kind; /**< */
- uint16_t sequence; /**< */
- xcb_window_t affected_window; /**< */
- int16_t extents_x; /**< */
- int16_t extents_y; /**< */
- uint16_t extents_width; /**< */
- uint16_t extents_height; /**< */
- xcb_timestamp_t server_time; /**< */
- uint8_t shaped; /**< */
- uint8_t pad0[11]; /**< */
-} xcb_shape_notify_event_t;
-
-/**
- * @brief xcb_shape_query_version_cookie_t
- **/
-typedef struct xcb_shape_query_version_cookie_t {
- unsigned int sequence; /**< */
-} xcb_shape_query_version_cookie_t;
-
-/** Opcode for xcb_shape_query_version. */
-#define XCB_SHAPE_QUERY_VERSION 0
-
-/**
- * @brief xcb_shape_query_version_request_t
- **/
-typedef struct xcb_shape_query_version_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
-} xcb_shape_query_version_request_t;
-
-/**
- * @brief xcb_shape_query_version_reply_t
- **/
-typedef struct xcb_shape_query_version_reply_t {
- uint8_t response_type; /**< */
- uint8_t pad0; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- uint16_t major_version; /**< */
- uint16_t minor_version; /**< */
-} xcb_shape_query_version_reply_t;
-
-/** Opcode for xcb_shape_rectangles. */
-#define XCB_SHAPE_RECTANGLES 1
-
-/**
- * @brief xcb_shape_rectangles_request_t
- **/
-typedef struct xcb_shape_rectangles_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_shape_op_t operation; /**< */
- xcb_shape_kind_t destination_kind; /**< */
- uint8_t ordering; /**< */
- uint8_t pad0; /**< */
- xcb_window_t destination_window; /**< */
- int16_t x_offset; /**< */
- int16_t y_offset; /**< */
-} xcb_shape_rectangles_request_t;
-
-/** Opcode for xcb_shape_mask. */
-#define XCB_SHAPE_MASK 2
-
-/**
- * @brief xcb_shape_mask_request_t
- **/
-typedef struct xcb_shape_mask_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_shape_op_t operation; /**< */
- xcb_shape_kind_t destination_kind; /**< */
- uint8_t pad0[2]; /**< */
- xcb_window_t destination_window; /**< */
- int16_t x_offset; /**< */
- int16_t y_offset; /**< */
- xcb_pixmap_t source_bitmap; /**< */
-} xcb_shape_mask_request_t;
-
-/** Opcode for xcb_shape_combine. */
-#define XCB_SHAPE_COMBINE 3
-
-/**
- * @brief xcb_shape_combine_request_t
- **/
-typedef struct xcb_shape_combine_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_shape_op_t operation; /**< */
- xcb_shape_kind_t destination_kind; /**< */
- xcb_shape_kind_t source_kind; /**< */
- uint8_t pad0; /**< */
- xcb_window_t destination_window; /**< */
- int16_t x_offset; /**< */
- int16_t y_offset; /**< */
- xcb_window_t source_window; /**< */
-} xcb_shape_combine_request_t;
-
-/** Opcode for xcb_shape_offset. */
-#define XCB_SHAPE_OFFSET 4
-
-/**
- * @brief xcb_shape_offset_request_t
- **/
-typedef struct xcb_shape_offset_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_shape_kind_t destination_kind; /**< */
- uint8_t pad0[3]; /**< */
- xcb_window_t destination_window; /**< */
- int16_t x_offset; /**< */
- int16_t y_offset; /**< */
-} xcb_shape_offset_request_t;
-
-/**
- * @brief xcb_shape_query_extents_cookie_t
- **/
-typedef struct xcb_shape_query_extents_cookie_t {
- unsigned int sequence; /**< */
-} xcb_shape_query_extents_cookie_t;
-
-/** Opcode for xcb_shape_query_extents. */
-#define XCB_SHAPE_QUERY_EXTENTS 5
-
-/**
- * @brief xcb_shape_query_extents_request_t
- **/
-typedef struct xcb_shape_query_extents_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_window_t destination_window; /**< */
-} xcb_shape_query_extents_request_t;
-
-/**
- * @brief xcb_shape_query_extents_reply_t
- **/
-typedef struct xcb_shape_query_extents_reply_t {
- uint8_t response_type; /**< */
- uint8_t pad0; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- uint8_t bounding_shaped; /**< */
- uint8_t clip_shaped; /**< */
- uint8_t pad1[2]; /**< */
- int16_t bounding_shape_extents_x; /**< */
- int16_t bounding_shape_extents_y; /**< */
- uint16_t bounding_shape_extents_width; /**< */
- uint16_t bounding_shape_extents_height; /**< */
- int16_t clip_shape_extents_x; /**< */
- int16_t clip_shape_extents_y; /**< */
- uint16_t clip_shape_extents_width; /**< */
- uint16_t clip_shape_extents_height; /**< */
-} xcb_shape_query_extents_reply_t;
-
-/** Opcode for xcb_shape_select_input. */
-#define XCB_SHAPE_SELECT_INPUT 6
-
-/**
- * @brief xcb_shape_select_input_request_t
- **/
-typedef struct xcb_shape_select_input_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_window_t destination_window; /**< */
- uint8_t enable; /**< */
- uint8_t pad0[3]; /**< */
-} xcb_shape_select_input_request_t;
-
-/**
- * @brief xcb_shape_input_selected_cookie_t
- **/
-typedef struct xcb_shape_input_selected_cookie_t {
- unsigned int sequence; /**< */
-} xcb_shape_input_selected_cookie_t;
-
-/** Opcode for xcb_shape_input_selected. */
-#define XCB_SHAPE_INPUT_SELECTED 7
-
-/**
- * @brief xcb_shape_input_selected_request_t
- **/
-typedef struct xcb_shape_input_selected_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_window_t destination_window; /**< */
-} xcb_shape_input_selected_request_t;
-
-/**
- * @brief xcb_shape_input_selected_reply_t
- **/
-typedef struct xcb_shape_input_selected_reply_t {
- uint8_t response_type; /**< */
- uint8_t enabled; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
-} xcb_shape_input_selected_reply_t;
-
-/**
- * @brief xcb_shape_get_rectangles_cookie_t
- **/
-typedef struct xcb_shape_get_rectangles_cookie_t {
- unsigned int sequence; /**< */
-} xcb_shape_get_rectangles_cookie_t;
-
-/** Opcode for xcb_shape_get_rectangles. */
-#define XCB_SHAPE_GET_RECTANGLES 8
-
-/**
- * @brief xcb_shape_get_rectangles_request_t
- **/
-typedef struct xcb_shape_get_rectangles_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_window_t window; /**< */
- xcb_shape_kind_t source_kind; /**< */
- uint8_t pad0[3]; /**< */
-} xcb_shape_get_rectangles_request_t;
-
-/**
- * @brief xcb_shape_get_rectangles_reply_t
- **/
-typedef struct xcb_shape_get_rectangles_reply_t {
- uint8_t response_type; /**< */
- uint8_t ordering; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- uint32_t rectangles_len; /**< */
- uint8_t pad0[20]; /**< */
-} xcb_shape_get_rectangles_reply_t;
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_shape_op_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_shape_op_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_shape_op_next
- **
- ** @param xcb_shape_op_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_shape_op_next (xcb_shape_op_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_shape_op_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_shape_op_end
- **
- ** @param xcb_shape_op_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_shape_op_end (xcb_shape_op_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_shape_kind_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_shape_kind_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_shape_kind_next
- **
- ** @param xcb_shape_kind_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_shape_kind_next (xcb_shape_kind_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_shape_kind_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_shape_kind_end
- **
- ** @param xcb_shape_kind_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_shape_kind_end (xcb_shape_kind_iterator_t i /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_shape_query_version_cookie_t xcb_shape_query_version
- **
- ** @param xcb_connection_t *c
- ** @returns xcb_shape_query_version_cookie_t
- **
- *****************************************************************************/
-
-xcb_shape_query_version_cookie_t
-xcb_shape_query_version (xcb_connection_t *c /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_shape_query_version_cookie_t xcb_shape_query_version_unchecked
- **
- ** @param xcb_connection_t *c
- ** @returns xcb_shape_query_version_cookie_t
- **
- *****************************************************************************/
-
-xcb_shape_query_version_cookie_t
-xcb_shape_query_version_unchecked (xcb_connection_t *c /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_shape_query_version_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_shape_query_version_reply_t * xcb_shape_query_version_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_shape_query_version_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_shape_query_version_reply_t *
- **
- *****************************************************************************/
-
-xcb_shape_query_version_reply_t *
-xcb_shape_query_version_reply (xcb_connection_t *c /**< */,
- xcb_shape_query_version_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-int
-xcb_shape_rectangles_sizeof (const void *_buffer /**< */,
- uint32_t rectangles_len /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_shape_rectangles_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_shape_op_t operation
- ** @param xcb_shape_kind_t destination_kind
- ** @param uint8_t ordering
- ** @param xcb_window_t destination_window
- ** @param int16_t x_offset
- ** @param int16_t y_offset
- ** @param uint32_t rectangles_len
- ** @param const xcb_rectangle_t *rectangles
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_shape_rectangles_checked (xcb_connection_t *c /**< */,
- xcb_shape_op_t operation /**< */,
- xcb_shape_kind_t destination_kind /**< */,
- uint8_t ordering /**< */,
- xcb_window_t destination_window /**< */,
- int16_t x_offset /**< */,
- int16_t y_offset /**< */,
- uint32_t rectangles_len /**< */,
- const xcb_rectangle_t *rectangles /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_shape_rectangles
- **
- ** @param xcb_connection_t *c
- ** @param xcb_shape_op_t operation
- ** @param xcb_shape_kind_t destination_kind
- ** @param uint8_t ordering
- ** @param xcb_window_t destination_window
- ** @param int16_t x_offset
- ** @param int16_t y_offset
- ** @param uint32_t rectangles_len
- ** @param const xcb_rectangle_t *rectangles
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_shape_rectangles (xcb_connection_t *c /**< */,
- xcb_shape_op_t operation /**< */,
- xcb_shape_kind_t destination_kind /**< */,
- uint8_t ordering /**< */,
- xcb_window_t destination_window /**< */,
- int16_t x_offset /**< */,
- int16_t y_offset /**< */,
- uint32_t rectangles_len /**< */,
- const xcb_rectangle_t *rectangles /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_shape_mask_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_shape_op_t operation
- ** @param xcb_shape_kind_t destination_kind
- ** @param xcb_window_t destination_window
- ** @param int16_t x_offset
- ** @param int16_t y_offset
- ** @param xcb_pixmap_t source_bitmap
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_shape_mask_checked (xcb_connection_t *c /**< */,
- xcb_shape_op_t operation /**< */,
- xcb_shape_kind_t destination_kind /**< */,
- xcb_window_t destination_window /**< */,
- int16_t x_offset /**< */,
- int16_t y_offset /**< */,
- xcb_pixmap_t source_bitmap /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_shape_mask
- **
- ** @param xcb_connection_t *c
- ** @param xcb_shape_op_t operation
- ** @param xcb_shape_kind_t destination_kind
- ** @param xcb_window_t destination_window
- ** @param int16_t x_offset
- ** @param int16_t y_offset
- ** @param xcb_pixmap_t source_bitmap
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_shape_mask (xcb_connection_t *c /**< */,
- xcb_shape_op_t operation /**< */,
- xcb_shape_kind_t destination_kind /**< */,
- xcb_window_t destination_window /**< */,
- int16_t x_offset /**< */,
- int16_t y_offset /**< */,
- xcb_pixmap_t source_bitmap /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_shape_combine_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_shape_op_t operation
- ** @param xcb_shape_kind_t destination_kind
- ** @param xcb_shape_kind_t source_kind
- ** @param xcb_window_t destination_window
- ** @param int16_t x_offset
- ** @param int16_t y_offset
- ** @param xcb_window_t source_window
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_shape_combine_checked (xcb_connection_t *c /**< */,
- xcb_shape_op_t operation /**< */,
- xcb_shape_kind_t destination_kind /**< */,
- xcb_shape_kind_t source_kind /**< */,
- xcb_window_t destination_window /**< */,
- int16_t x_offset /**< */,
- int16_t y_offset /**< */,
- xcb_window_t source_window /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_shape_combine
- **
- ** @param xcb_connection_t *c
- ** @param xcb_shape_op_t operation
- ** @param xcb_shape_kind_t destination_kind
- ** @param xcb_shape_kind_t source_kind
- ** @param xcb_window_t destination_window
- ** @param int16_t x_offset
- ** @param int16_t y_offset
- ** @param xcb_window_t source_window
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_shape_combine (xcb_connection_t *c /**< */,
- xcb_shape_op_t operation /**< */,
- xcb_shape_kind_t destination_kind /**< */,
- xcb_shape_kind_t source_kind /**< */,
- xcb_window_t destination_window /**< */,
- int16_t x_offset /**< */,
- int16_t y_offset /**< */,
- xcb_window_t source_window /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_shape_offset_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_shape_kind_t destination_kind
- ** @param xcb_window_t destination_window
- ** @param int16_t x_offset
- ** @param int16_t y_offset
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_shape_offset_checked (xcb_connection_t *c /**< */,
- xcb_shape_kind_t destination_kind /**< */,
- xcb_window_t destination_window /**< */,
- int16_t x_offset /**< */,
- int16_t y_offset /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_shape_offset
- **
- ** @param xcb_connection_t *c
- ** @param xcb_shape_kind_t destination_kind
- ** @param xcb_window_t destination_window
- ** @param int16_t x_offset
- ** @param int16_t y_offset
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_shape_offset (xcb_connection_t *c /**< */,
- xcb_shape_kind_t destination_kind /**< */,
- xcb_window_t destination_window /**< */,
- int16_t x_offset /**< */,
- int16_t y_offset /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_shape_query_extents_cookie_t xcb_shape_query_extents
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t destination_window
- ** @returns xcb_shape_query_extents_cookie_t
- **
- *****************************************************************************/
-
-xcb_shape_query_extents_cookie_t
-xcb_shape_query_extents (xcb_connection_t *c /**< */,
- xcb_window_t destination_window /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_shape_query_extents_cookie_t xcb_shape_query_extents_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t destination_window
- ** @returns xcb_shape_query_extents_cookie_t
- **
- *****************************************************************************/
-
-xcb_shape_query_extents_cookie_t
-xcb_shape_query_extents_unchecked (xcb_connection_t *c /**< */,
- xcb_window_t destination_window /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_shape_query_extents_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_shape_query_extents_reply_t * xcb_shape_query_extents_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_shape_query_extents_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_shape_query_extents_reply_t *
- **
- *****************************************************************************/
-
-xcb_shape_query_extents_reply_t *
-xcb_shape_query_extents_reply (xcb_connection_t *c /**< */,
- xcb_shape_query_extents_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_shape_select_input_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t destination_window
- ** @param uint8_t enable
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_shape_select_input_checked (xcb_connection_t *c /**< */,
- xcb_window_t destination_window /**< */,
- uint8_t enable /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_shape_select_input
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t destination_window
- ** @param uint8_t enable
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_shape_select_input (xcb_connection_t *c /**< */,
- xcb_window_t destination_window /**< */,
- uint8_t enable /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_shape_input_selected_cookie_t xcb_shape_input_selected
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t destination_window
- ** @returns xcb_shape_input_selected_cookie_t
- **
- *****************************************************************************/
-
-xcb_shape_input_selected_cookie_t
-xcb_shape_input_selected (xcb_connection_t *c /**< */,
- xcb_window_t destination_window /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_shape_input_selected_cookie_t xcb_shape_input_selected_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t destination_window
- ** @returns xcb_shape_input_selected_cookie_t
- **
- *****************************************************************************/
-
-xcb_shape_input_selected_cookie_t
-xcb_shape_input_selected_unchecked (xcb_connection_t *c /**< */,
- xcb_window_t destination_window /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_shape_input_selected_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_shape_input_selected_reply_t * xcb_shape_input_selected_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_shape_input_selected_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_shape_input_selected_reply_t *
- **
- *****************************************************************************/
-
-xcb_shape_input_selected_reply_t *
-xcb_shape_input_selected_reply (xcb_connection_t *c /**< */,
- xcb_shape_input_selected_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-int
-xcb_shape_get_rectangles_sizeof (const void *_buffer /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_shape_get_rectangles_cookie_t xcb_shape_get_rectangles
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @param xcb_shape_kind_t source_kind
- ** @returns xcb_shape_get_rectangles_cookie_t
- **
- *****************************************************************************/
-
-xcb_shape_get_rectangles_cookie_t
-xcb_shape_get_rectangles (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */,
- xcb_shape_kind_t source_kind /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_shape_get_rectangles_cookie_t xcb_shape_get_rectangles_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @param xcb_shape_kind_t source_kind
- ** @returns xcb_shape_get_rectangles_cookie_t
- **
- *****************************************************************************/
-
-xcb_shape_get_rectangles_cookie_t
-xcb_shape_get_rectangles_unchecked (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */,
- xcb_shape_kind_t source_kind /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_rectangle_t * xcb_shape_get_rectangles_rectangles
- **
- ** @param const xcb_shape_get_rectangles_reply_t *R
- ** @returns xcb_rectangle_t *
- **
- *****************************************************************************/
-
-xcb_rectangle_t *
-xcb_shape_get_rectangles_rectangles (const xcb_shape_get_rectangles_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_shape_get_rectangles_rectangles_length
- **
- ** @param const xcb_shape_get_rectangles_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_shape_get_rectangles_rectangles_length (const xcb_shape_get_rectangles_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_rectangle_iterator_t xcb_shape_get_rectangles_rectangles_iterator
- **
- ** @param const xcb_shape_get_rectangles_reply_t *R
- ** @returns xcb_rectangle_iterator_t
- **
- *****************************************************************************/
-
-xcb_rectangle_iterator_t
-xcb_shape_get_rectangles_rectangles_iterator (const xcb_shape_get_rectangles_reply_t *R /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_shape_get_rectangles_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_shape_get_rectangles_reply_t * xcb_shape_get_rectangles_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_shape_get_rectangles_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_shape_get_rectangles_reply_t *
- **
- *****************************************************************************/
-
-xcb_shape_get_rectangles_reply_t *
-xcb_shape_get_rectangles_reply (xcb_connection_t *c /**< */,
- xcb_shape_get_rectangles_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-/**
- * @}
- */
diff --git a/src/3rdparty/xcb/include/xcb/shm.h b/src/3rdparty/xcb/include/xcb/shm.h
deleted file mode 100644
index 315f37e9b9..0000000000
--- a/src/3rdparty/xcb/include/xcb/shm.h
+++ /dev/null
@@ -1,738 +0,0 @@
-/*
- * This file generated automatically from shm.xml by c_client.py.
- * Edit at your peril.
- */
-
-/**
- * @defgroup XCB_Shm_API XCB Shm API
- * @brief Shm XCB Protocol Implementation.
- * @{
- **/
-
-#ifndef __SHM_H
-#define __SHM_H
-
-#include "xcb.h"
-#include "xproto.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define XCB_SHM_MAJOR_VERSION 1
-#define XCB_SHM_MINOR_VERSION 1
-
-extern xcb_extension_t xcb_shm_id;
-
-typedef uint32_t xcb_shm_seg_t;
-
-/**
- * @brief xcb_shm_seg_iterator_t
- **/
-typedef struct xcb_shm_seg_iterator_t {
- xcb_shm_seg_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_shm_seg_iterator_t;
-
-/** Opcode for xcb_shm_completion. */
-#define XCB_SHM_COMPLETION 0
-
-/**
- * @brief xcb_shm_completion_event_t
- **/
-typedef struct xcb_shm_completion_event_t {
- uint8_t response_type; /**< */
- uint8_t pad0; /**< */
- uint16_t sequence; /**< */
- xcb_drawable_t drawable; /**< */
- uint16_t minor_event; /**< */
- uint8_t major_event; /**< */
- uint8_t pad1; /**< */
- xcb_shm_seg_t shmseg; /**< */
- uint32_t offset; /**< */
-} xcb_shm_completion_event_t;
-
-/** Opcode for xcb_shm_bad_seg. */
-#define XCB_SHM_BAD_SEG 0
-
-typedef xcb_value_error_t xcb_shm_bad_seg_error_t;
-
-/**
- * @brief xcb_shm_query_version_cookie_t
- **/
-typedef struct xcb_shm_query_version_cookie_t {
- unsigned int sequence; /**< */
-} xcb_shm_query_version_cookie_t;
-
-/** Opcode for xcb_shm_query_version. */
-#define XCB_SHM_QUERY_VERSION 0
-
-/**
- * @brief xcb_shm_query_version_request_t
- **/
-typedef struct xcb_shm_query_version_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
-} xcb_shm_query_version_request_t;
-
-/**
- * @brief xcb_shm_query_version_reply_t
- **/
-typedef struct xcb_shm_query_version_reply_t {
- uint8_t response_type; /**< */
- uint8_t shared_pixmaps; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- uint16_t major_version; /**< */
- uint16_t minor_version; /**< */
- uint16_t uid; /**< */
- uint16_t gid; /**< */
- uint8_t pixmap_format; /**< */
- uint8_t pad0[15]; /**< */
-} xcb_shm_query_version_reply_t;
-
-/** Opcode for xcb_shm_attach. */
-#define XCB_SHM_ATTACH 1
-
-/**
- * @brief xcb_shm_attach_request_t
- **/
-typedef struct xcb_shm_attach_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_shm_seg_t shmseg; /**< */
- uint32_t shmid; /**< */
- uint8_t read_only; /**< */
- uint8_t pad0[3]; /**< */
-} xcb_shm_attach_request_t;
-
-/** Opcode for xcb_shm_detach. */
-#define XCB_SHM_DETACH 2
-
-/**
- * @brief xcb_shm_detach_request_t
- **/
-typedef struct xcb_shm_detach_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_shm_seg_t shmseg; /**< */
-} xcb_shm_detach_request_t;
-
-/** Opcode for xcb_shm_put_image. */
-#define XCB_SHM_PUT_IMAGE 3
-
-/**
- * @brief xcb_shm_put_image_request_t
- **/
-typedef struct xcb_shm_put_image_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_drawable_t drawable; /**< */
- xcb_gcontext_t gc; /**< */
- uint16_t total_width; /**< */
- uint16_t total_height; /**< */
- uint16_t src_x; /**< */
- uint16_t src_y; /**< */
- uint16_t src_width; /**< */
- uint16_t src_height; /**< */
- int16_t dst_x; /**< */
- int16_t dst_y; /**< */
- uint8_t depth; /**< */
- uint8_t format; /**< */
- uint8_t send_event; /**< */
- uint8_t pad0; /**< */
- xcb_shm_seg_t shmseg; /**< */
- uint32_t offset; /**< */
-} xcb_shm_put_image_request_t;
-
-/**
- * @brief xcb_shm_get_image_cookie_t
- **/
-typedef struct xcb_shm_get_image_cookie_t {
- unsigned int sequence; /**< */
-} xcb_shm_get_image_cookie_t;
-
-/** Opcode for xcb_shm_get_image. */
-#define XCB_SHM_GET_IMAGE 4
-
-/**
- * @brief xcb_shm_get_image_request_t
- **/
-typedef struct xcb_shm_get_image_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_drawable_t drawable; /**< */
- int16_t x; /**< */
- int16_t y; /**< */
- uint16_t width; /**< */
- uint16_t height; /**< */
- uint32_t plane_mask; /**< */
- uint8_t format; /**< */
- uint8_t pad0[3]; /**< */
- xcb_shm_seg_t shmseg; /**< */
- uint32_t offset; /**< */
-} xcb_shm_get_image_request_t;
-
-/**
- * @brief xcb_shm_get_image_reply_t
- **/
-typedef struct xcb_shm_get_image_reply_t {
- uint8_t response_type; /**< */
- uint8_t depth; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- xcb_visualid_t visual; /**< */
- uint32_t size; /**< */
-} xcb_shm_get_image_reply_t;
-
-/** Opcode for xcb_shm_create_pixmap. */
-#define XCB_SHM_CREATE_PIXMAP 5
-
-/**
- * @brief xcb_shm_create_pixmap_request_t
- **/
-typedef struct xcb_shm_create_pixmap_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_pixmap_t pid; /**< */
- xcb_drawable_t drawable; /**< */
- uint16_t width; /**< */
- uint16_t height; /**< */
- uint8_t depth; /**< */
- uint8_t pad0[3]; /**< */
- xcb_shm_seg_t shmseg; /**< */
- uint32_t offset; /**< */
-} xcb_shm_create_pixmap_request_t;
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_shm_seg_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_shm_seg_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_shm_seg_next
- **
- ** @param xcb_shm_seg_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_shm_seg_next (xcb_shm_seg_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_shm_seg_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_shm_seg_end
- **
- ** @param xcb_shm_seg_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_shm_seg_end (xcb_shm_seg_iterator_t i /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_shm_query_version_cookie_t xcb_shm_query_version
- **
- ** @param xcb_connection_t *c
- ** @returns xcb_shm_query_version_cookie_t
- **
- *****************************************************************************/
-
-xcb_shm_query_version_cookie_t
-xcb_shm_query_version (xcb_connection_t *c /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_shm_query_version_cookie_t xcb_shm_query_version_unchecked
- **
- ** @param xcb_connection_t *c
- ** @returns xcb_shm_query_version_cookie_t
- **
- *****************************************************************************/
-
-xcb_shm_query_version_cookie_t
-xcb_shm_query_version_unchecked (xcb_connection_t *c /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_shm_query_version_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_shm_query_version_reply_t * xcb_shm_query_version_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_shm_query_version_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_shm_query_version_reply_t *
- **
- *****************************************************************************/
-
-xcb_shm_query_version_reply_t *
-xcb_shm_query_version_reply (xcb_connection_t *c /**< */,
- xcb_shm_query_version_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_shm_attach_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_shm_seg_t shmseg
- ** @param uint32_t shmid
- ** @param uint8_t read_only
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_shm_attach_checked (xcb_connection_t *c /**< */,
- xcb_shm_seg_t shmseg /**< */,
- uint32_t shmid /**< */,
- uint8_t read_only /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_shm_attach
- **
- ** @param xcb_connection_t *c
- ** @param xcb_shm_seg_t shmseg
- ** @param uint32_t shmid
- ** @param uint8_t read_only
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_shm_attach (xcb_connection_t *c /**< */,
- xcb_shm_seg_t shmseg /**< */,
- uint32_t shmid /**< */,
- uint8_t read_only /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_shm_detach_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_shm_seg_t shmseg
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_shm_detach_checked (xcb_connection_t *c /**< */,
- xcb_shm_seg_t shmseg /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_shm_detach
- **
- ** @param xcb_connection_t *c
- ** @param xcb_shm_seg_t shmseg
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_shm_detach (xcb_connection_t *c /**< */,
- xcb_shm_seg_t shmseg /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_shm_put_image_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_drawable_t drawable
- ** @param xcb_gcontext_t gc
- ** @param uint16_t total_width
- ** @param uint16_t total_height
- ** @param uint16_t src_x
- ** @param uint16_t src_y
- ** @param uint16_t src_width
- ** @param uint16_t src_height
- ** @param int16_t dst_x
- ** @param int16_t dst_y
- ** @param uint8_t depth
- ** @param uint8_t format
- ** @param uint8_t send_event
- ** @param xcb_shm_seg_t shmseg
- ** @param uint32_t offset
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_shm_put_image_checked (xcb_connection_t *c /**< */,
- xcb_drawable_t drawable /**< */,
- xcb_gcontext_t gc /**< */,
- uint16_t total_width /**< */,
- uint16_t total_height /**< */,
- uint16_t src_x /**< */,
- uint16_t src_y /**< */,
- uint16_t src_width /**< */,
- uint16_t src_height /**< */,
- int16_t dst_x /**< */,
- int16_t dst_y /**< */,
- uint8_t depth /**< */,
- uint8_t format /**< */,
- uint8_t send_event /**< */,
- xcb_shm_seg_t shmseg /**< */,
- uint32_t offset /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_shm_put_image
- **
- ** @param xcb_connection_t *c
- ** @param xcb_drawable_t drawable
- ** @param xcb_gcontext_t gc
- ** @param uint16_t total_width
- ** @param uint16_t total_height
- ** @param uint16_t src_x
- ** @param uint16_t src_y
- ** @param uint16_t src_width
- ** @param uint16_t src_height
- ** @param int16_t dst_x
- ** @param int16_t dst_y
- ** @param uint8_t depth
- ** @param uint8_t format
- ** @param uint8_t send_event
- ** @param xcb_shm_seg_t shmseg
- ** @param uint32_t offset
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_shm_put_image (xcb_connection_t *c /**< */,
- xcb_drawable_t drawable /**< */,
- xcb_gcontext_t gc /**< */,
- uint16_t total_width /**< */,
- uint16_t total_height /**< */,
- uint16_t src_x /**< */,
- uint16_t src_y /**< */,
- uint16_t src_width /**< */,
- uint16_t src_height /**< */,
- int16_t dst_x /**< */,
- int16_t dst_y /**< */,
- uint8_t depth /**< */,
- uint8_t format /**< */,
- uint8_t send_event /**< */,
- xcb_shm_seg_t shmseg /**< */,
- uint32_t offset /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_shm_get_image_cookie_t xcb_shm_get_image
- **
- ** @param xcb_connection_t *c
- ** @param xcb_drawable_t drawable
- ** @param int16_t x
- ** @param int16_t y
- ** @param uint16_t width
- ** @param uint16_t height
- ** @param uint32_t plane_mask
- ** @param uint8_t format
- ** @param xcb_shm_seg_t shmseg
- ** @param uint32_t offset
- ** @returns xcb_shm_get_image_cookie_t
- **
- *****************************************************************************/
-
-xcb_shm_get_image_cookie_t
-xcb_shm_get_image (xcb_connection_t *c /**< */,
- xcb_drawable_t drawable /**< */,
- int16_t x /**< */,
- int16_t y /**< */,
- uint16_t width /**< */,
- uint16_t height /**< */,
- uint32_t plane_mask /**< */,
- uint8_t format /**< */,
- xcb_shm_seg_t shmseg /**< */,
- uint32_t offset /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_shm_get_image_cookie_t xcb_shm_get_image_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_drawable_t drawable
- ** @param int16_t x
- ** @param int16_t y
- ** @param uint16_t width
- ** @param uint16_t height
- ** @param uint32_t plane_mask
- ** @param uint8_t format
- ** @param xcb_shm_seg_t shmseg
- ** @param uint32_t offset
- ** @returns xcb_shm_get_image_cookie_t
- **
- *****************************************************************************/
-
-xcb_shm_get_image_cookie_t
-xcb_shm_get_image_unchecked (xcb_connection_t *c /**< */,
- xcb_drawable_t drawable /**< */,
- int16_t x /**< */,
- int16_t y /**< */,
- uint16_t width /**< */,
- uint16_t height /**< */,
- uint32_t plane_mask /**< */,
- uint8_t format /**< */,
- xcb_shm_seg_t shmseg /**< */,
- uint32_t offset /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_shm_get_image_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_shm_get_image_reply_t * xcb_shm_get_image_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_shm_get_image_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_shm_get_image_reply_t *
- **
- *****************************************************************************/
-
-xcb_shm_get_image_reply_t *
-xcb_shm_get_image_reply (xcb_connection_t *c /**< */,
- xcb_shm_get_image_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_shm_create_pixmap_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_pixmap_t pid
- ** @param xcb_drawable_t drawable
- ** @param uint16_t width
- ** @param uint16_t height
- ** @param uint8_t depth
- ** @param xcb_shm_seg_t shmseg
- ** @param uint32_t offset
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_shm_create_pixmap_checked (xcb_connection_t *c /**< */,
- xcb_pixmap_t pid /**< */,
- xcb_drawable_t drawable /**< */,
- uint16_t width /**< */,
- uint16_t height /**< */,
- uint8_t depth /**< */,
- xcb_shm_seg_t shmseg /**< */,
- uint32_t offset /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_shm_create_pixmap
- **
- ** @param xcb_connection_t *c
- ** @param xcb_pixmap_t pid
- ** @param xcb_drawable_t drawable
- ** @param uint16_t width
- ** @param uint16_t height
- ** @param uint8_t depth
- ** @param xcb_shm_seg_t shmseg
- ** @param uint32_t offset
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_shm_create_pixmap (xcb_connection_t *c /**< */,
- xcb_pixmap_t pid /**< */,
- xcb_drawable_t drawable /**< */,
- uint16_t width /**< */,
- uint16_t height /**< */,
- uint8_t depth /**< */,
- xcb_shm_seg_t shmseg /**< */,
- uint32_t offset /**< */);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-/**
- * @}
- */
diff --git a/src/3rdparty/xcb/include/xcb/sync.h b/src/3rdparty/xcb/include/xcb/sync.h
deleted file mode 100644
index 3d0069d7ef..0000000000
--- a/src/3rdparty/xcb/include/xcb/sync.h
+++ /dev/null
@@ -1,2216 +0,0 @@
-/*
- * This file generated automatically from sync.xml by c_client.py.
- * Edit at your peril.
- */
-
-/**
- * @defgroup XCB_Sync_API XCB Sync API
- * @brief Sync XCB Protocol Implementation.
- * @{
- **/
-
-#ifndef __SYNC_H
-#define __SYNC_H
-
-#include "xcb.h"
-#include "xproto.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define XCB_SYNC_MAJOR_VERSION 3
-#define XCB_SYNC_MINOR_VERSION 1
-
-extern xcb_extension_t xcb_sync_id;
-
-typedef uint32_t xcb_sync_alarm_t;
-
-/**
- * @brief xcb_sync_alarm_iterator_t
- **/
-typedef struct xcb_sync_alarm_iterator_t {
- xcb_sync_alarm_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_sync_alarm_iterator_t;
-
-typedef enum xcb_sync_alarmstate_t {
- XCB_SYNC_ALARMSTATE_ACTIVE,
- XCB_SYNC_ALARMSTATE_INACTIVE,
- XCB_SYNC_ALARMSTATE_DESTROYED
-} xcb_sync_alarmstate_t;
-
-typedef uint32_t xcb_sync_counter_t;
-
-/**
- * @brief xcb_sync_counter_iterator_t
- **/
-typedef struct xcb_sync_counter_iterator_t {
- xcb_sync_counter_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_sync_counter_iterator_t;
-
-typedef uint32_t xcb_sync_fence_t;
-
-/**
- * @brief xcb_sync_fence_iterator_t
- **/
-typedef struct xcb_sync_fence_iterator_t {
- xcb_sync_fence_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_sync_fence_iterator_t;
-
-typedef enum xcb_sync_testtype_t {
- XCB_SYNC_TESTTYPE_POSITIVE_TRANSITION,
- XCB_SYNC_TESTTYPE_NEGATIVE_TRANSITION,
- XCB_SYNC_TESTTYPE_POSITIVE_COMPARISON,
- XCB_SYNC_TESTTYPE_NEGATIVE_COMPARISON
-} xcb_sync_testtype_t;
-
-typedef enum xcb_sync_valuetype_t {
- XCB_SYNC_VALUETYPE_ABSOLUTE,
- XCB_SYNC_VALUETYPE_RELATIVE
-} xcb_sync_valuetype_t;
-
-typedef enum xcb_sync_ca_t {
- XCB_SYNC_CA_COUNTER = 1,
- XCB_SYNC_CA_VALUE_TYPE = 2,
- XCB_SYNC_CA_VALUE = 4,
- XCB_SYNC_CA_TEST_TYPE = 8,
- XCB_SYNC_CA_DELTA = 16,
- XCB_SYNC_CA_EVENTS = 32
-} xcb_sync_ca_t;
-
-/**
- * @brief xcb_sync_int64_t
- **/
-typedef struct xcb_sync_int64_t {
- int32_t hi; /**< */
- uint32_t lo; /**< */
-} xcb_sync_int64_t;
-
-/**
- * @brief xcb_sync_int64_iterator_t
- **/
-typedef struct xcb_sync_int64_iterator_t {
- xcb_sync_int64_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_sync_int64_iterator_t;
-
-/**
- * @brief xcb_sync_systemcounter_t
- **/
-typedef struct xcb_sync_systemcounter_t {
- xcb_sync_counter_t counter; /**< */
- xcb_sync_int64_t resolution; /**< */
- uint16_t name_len; /**< */
-} xcb_sync_systemcounter_t;
-
-/**
- * @brief xcb_sync_systemcounter_iterator_t
- **/
-typedef struct xcb_sync_systemcounter_iterator_t {
- xcb_sync_systemcounter_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_sync_systemcounter_iterator_t;
-
-/**
- * @brief xcb_sync_trigger_t
- **/
-typedef struct xcb_sync_trigger_t {
- xcb_sync_counter_t counter; /**< */
- uint32_t wait_type; /**< */
- xcb_sync_int64_t wait_value; /**< */
- uint32_t test_type; /**< */
-} xcb_sync_trigger_t;
-
-/**
- * @brief xcb_sync_trigger_iterator_t
- **/
-typedef struct xcb_sync_trigger_iterator_t {
- xcb_sync_trigger_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_sync_trigger_iterator_t;
-
-/**
- * @brief xcb_sync_waitcondition_t
- **/
-typedef struct xcb_sync_waitcondition_t {
- xcb_sync_trigger_t trigger; /**< */
- xcb_sync_int64_t event_threshold; /**< */
-} xcb_sync_waitcondition_t;
-
-/**
- * @brief xcb_sync_waitcondition_iterator_t
- **/
-typedef struct xcb_sync_waitcondition_iterator_t {
- xcb_sync_waitcondition_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_sync_waitcondition_iterator_t;
-
-/** Opcode for xcb_sync_counter. */
-#define XCB_SYNC_COUNTER 0
-
-/**
- * @brief xcb_sync_counter_error_t
- **/
-typedef struct xcb_sync_counter_error_t {
- uint8_t response_type; /**< */
- uint8_t error_code; /**< */
- uint16_t sequence; /**< */
- uint32_t bad_counter; /**< */
- uint16_t minor_opcode; /**< */
- uint8_t major_opcode; /**< */
-} xcb_sync_counter_error_t;
-
-/** Opcode for xcb_sync_alarm. */
-#define XCB_SYNC_ALARM 1
-
-/**
- * @brief xcb_sync_alarm_error_t
- **/
-typedef struct xcb_sync_alarm_error_t {
- uint8_t response_type; /**< */
- uint8_t error_code; /**< */
- uint16_t sequence; /**< */
- uint32_t bad_alarm; /**< */
- uint16_t minor_opcode; /**< */
- uint8_t major_opcode; /**< */
-} xcb_sync_alarm_error_t;
-
-/**
- * @brief xcb_sync_initialize_cookie_t
- **/
-typedef struct xcb_sync_initialize_cookie_t {
- unsigned int sequence; /**< */
-} xcb_sync_initialize_cookie_t;
-
-/** Opcode for xcb_sync_initialize. */
-#define XCB_SYNC_INITIALIZE 0
-
-/**
- * @brief xcb_sync_initialize_request_t
- **/
-typedef struct xcb_sync_initialize_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- uint8_t desired_major_version; /**< */
- uint8_t desired_minor_version; /**< */
-} xcb_sync_initialize_request_t;
-
-/**
- * @brief xcb_sync_initialize_reply_t
- **/
-typedef struct xcb_sync_initialize_reply_t {
- uint8_t response_type; /**< */
- uint8_t pad0; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- uint8_t major_version; /**< */
- uint8_t minor_version; /**< */
- uint8_t pad1[22]; /**< */
-} xcb_sync_initialize_reply_t;
-
-/**
- * @brief xcb_sync_list_system_counters_cookie_t
- **/
-typedef struct xcb_sync_list_system_counters_cookie_t {
- unsigned int sequence; /**< */
-} xcb_sync_list_system_counters_cookie_t;
-
-/** Opcode for xcb_sync_list_system_counters. */
-#define XCB_SYNC_LIST_SYSTEM_COUNTERS 1
-
-/**
- * @brief xcb_sync_list_system_counters_request_t
- **/
-typedef struct xcb_sync_list_system_counters_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
-} xcb_sync_list_system_counters_request_t;
-
-/**
- * @brief xcb_sync_list_system_counters_reply_t
- **/
-typedef struct xcb_sync_list_system_counters_reply_t {
- uint8_t response_type; /**< */
- uint8_t pad0; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- uint32_t counters_len; /**< */
- uint8_t pad1[20]; /**< */
-} xcb_sync_list_system_counters_reply_t;
-
-/** Opcode for xcb_sync_create_counter. */
-#define XCB_SYNC_CREATE_COUNTER 2
-
-/**
- * @brief xcb_sync_create_counter_request_t
- **/
-typedef struct xcb_sync_create_counter_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_sync_counter_t id; /**< */
- xcb_sync_int64_t initial_value; /**< */
-} xcb_sync_create_counter_request_t;
-
-/** Opcode for xcb_sync_destroy_counter. */
-#define XCB_SYNC_DESTROY_COUNTER 6
-
-/**
- * @brief xcb_sync_destroy_counter_request_t
- **/
-typedef struct xcb_sync_destroy_counter_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_sync_counter_t counter; /**< */
-} xcb_sync_destroy_counter_request_t;
-
-/**
- * @brief xcb_sync_query_counter_cookie_t
- **/
-typedef struct xcb_sync_query_counter_cookie_t {
- unsigned int sequence; /**< */
-} xcb_sync_query_counter_cookie_t;
-
-/** Opcode for xcb_sync_query_counter. */
-#define XCB_SYNC_QUERY_COUNTER 5
-
-/**
- * @brief xcb_sync_query_counter_request_t
- **/
-typedef struct xcb_sync_query_counter_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_sync_counter_t counter; /**< */
-} xcb_sync_query_counter_request_t;
-
-/**
- * @brief xcb_sync_query_counter_reply_t
- **/
-typedef struct xcb_sync_query_counter_reply_t {
- uint8_t response_type; /**< */
- uint8_t pad0; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- xcb_sync_int64_t counter_value; /**< */
-} xcb_sync_query_counter_reply_t;
-
-/** Opcode for xcb_sync_await. */
-#define XCB_SYNC_AWAIT 7
-
-/**
- * @brief xcb_sync_await_request_t
- **/
-typedef struct xcb_sync_await_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
-} xcb_sync_await_request_t;
-
-/** Opcode for xcb_sync_change_counter. */
-#define XCB_SYNC_CHANGE_COUNTER 4
-
-/**
- * @brief xcb_sync_change_counter_request_t
- **/
-typedef struct xcb_sync_change_counter_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_sync_counter_t counter; /**< */
- xcb_sync_int64_t amount; /**< */
-} xcb_sync_change_counter_request_t;
-
-/** Opcode for xcb_sync_set_counter. */
-#define XCB_SYNC_SET_COUNTER 3
-
-/**
- * @brief xcb_sync_set_counter_request_t
- **/
-typedef struct xcb_sync_set_counter_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_sync_counter_t counter; /**< */
- xcb_sync_int64_t value; /**< */
-} xcb_sync_set_counter_request_t;
-
-/** Opcode for xcb_sync_create_alarm. */
-#define XCB_SYNC_CREATE_ALARM 8
-
-/**
- * @brief xcb_sync_create_alarm_request_t
- **/
-typedef struct xcb_sync_create_alarm_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_sync_alarm_t id; /**< */
- uint32_t value_mask; /**< */
-} xcb_sync_create_alarm_request_t;
-
-/** Opcode for xcb_sync_change_alarm. */
-#define XCB_SYNC_CHANGE_ALARM 9
-
-/**
- * @brief xcb_sync_change_alarm_request_t
- **/
-typedef struct xcb_sync_change_alarm_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_sync_alarm_t id; /**< */
- uint32_t value_mask; /**< */
-} xcb_sync_change_alarm_request_t;
-
-/** Opcode for xcb_sync_destroy_alarm. */
-#define XCB_SYNC_DESTROY_ALARM 11
-
-/**
- * @brief xcb_sync_destroy_alarm_request_t
- **/
-typedef struct xcb_sync_destroy_alarm_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_sync_alarm_t alarm; /**< */
-} xcb_sync_destroy_alarm_request_t;
-
-/**
- * @brief xcb_sync_query_alarm_cookie_t
- **/
-typedef struct xcb_sync_query_alarm_cookie_t {
- unsigned int sequence; /**< */
-} xcb_sync_query_alarm_cookie_t;
-
-/** Opcode for xcb_sync_query_alarm. */
-#define XCB_SYNC_QUERY_ALARM 10
-
-/**
- * @brief xcb_sync_query_alarm_request_t
- **/
-typedef struct xcb_sync_query_alarm_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_sync_alarm_t alarm; /**< */
-} xcb_sync_query_alarm_request_t;
-
-/**
- * @brief xcb_sync_query_alarm_reply_t
- **/
-typedef struct xcb_sync_query_alarm_reply_t {
- uint8_t response_type; /**< */
- uint8_t pad0; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- xcb_sync_trigger_t trigger; /**< */
- xcb_sync_int64_t delta; /**< */
- uint8_t events; /**< */
- uint8_t state; /**< */
- uint8_t pad1[2]; /**< */
-} xcb_sync_query_alarm_reply_t;
-
-/** Opcode for xcb_sync_set_priority. */
-#define XCB_SYNC_SET_PRIORITY 12
-
-/**
- * @brief xcb_sync_set_priority_request_t
- **/
-typedef struct xcb_sync_set_priority_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- uint32_t id; /**< */
- int32_t priority; /**< */
-} xcb_sync_set_priority_request_t;
-
-/**
- * @brief xcb_sync_get_priority_cookie_t
- **/
-typedef struct xcb_sync_get_priority_cookie_t {
- unsigned int sequence; /**< */
-} xcb_sync_get_priority_cookie_t;
-
-/** Opcode for xcb_sync_get_priority. */
-#define XCB_SYNC_GET_PRIORITY 13
-
-/**
- * @brief xcb_sync_get_priority_request_t
- **/
-typedef struct xcb_sync_get_priority_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- uint32_t id; /**< */
-} xcb_sync_get_priority_request_t;
-
-/**
- * @brief xcb_sync_get_priority_reply_t
- **/
-typedef struct xcb_sync_get_priority_reply_t {
- uint8_t response_type; /**< */
- uint8_t pad0; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- int32_t priority; /**< */
-} xcb_sync_get_priority_reply_t;
-
-/** Opcode for xcb_sync_create_fence. */
-#define XCB_SYNC_CREATE_FENCE 14
-
-/**
- * @brief xcb_sync_create_fence_request_t
- **/
-typedef struct xcb_sync_create_fence_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_drawable_t drawable; /**< */
- xcb_sync_fence_t fence; /**< */
- uint8_t initially_triggered; /**< */
-} xcb_sync_create_fence_request_t;
-
-/** Opcode for xcb_sync_trigger_fence. */
-#define XCB_SYNC_TRIGGER_FENCE 15
-
-/**
- * @brief xcb_sync_trigger_fence_request_t
- **/
-typedef struct xcb_sync_trigger_fence_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_sync_fence_t fence; /**< */
-} xcb_sync_trigger_fence_request_t;
-
-/** Opcode for xcb_sync_reset_fence. */
-#define XCB_SYNC_RESET_FENCE 16
-
-/**
- * @brief xcb_sync_reset_fence_request_t
- **/
-typedef struct xcb_sync_reset_fence_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_sync_fence_t fence; /**< */
-} xcb_sync_reset_fence_request_t;
-
-/** Opcode for xcb_sync_destroy_fence. */
-#define XCB_SYNC_DESTROY_FENCE 17
-
-/**
- * @brief xcb_sync_destroy_fence_request_t
- **/
-typedef struct xcb_sync_destroy_fence_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_sync_fence_t fence; /**< */
-} xcb_sync_destroy_fence_request_t;
-
-/**
- * @brief xcb_sync_query_fence_cookie_t
- **/
-typedef struct xcb_sync_query_fence_cookie_t {
- unsigned int sequence; /**< */
-} xcb_sync_query_fence_cookie_t;
-
-/** Opcode for xcb_sync_query_fence. */
-#define XCB_SYNC_QUERY_FENCE 18
-
-/**
- * @brief xcb_sync_query_fence_request_t
- **/
-typedef struct xcb_sync_query_fence_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_sync_fence_t fence; /**< */
-} xcb_sync_query_fence_request_t;
-
-/**
- * @brief xcb_sync_query_fence_reply_t
- **/
-typedef struct xcb_sync_query_fence_reply_t {
- uint8_t response_type; /**< */
- uint8_t pad0; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- uint8_t triggered; /**< */
- uint8_t pad1[23]; /**< */
-} xcb_sync_query_fence_reply_t;
-
-/** Opcode for xcb_sync_await_fence. */
-#define XCB_SYNC_AWAIT_FENCE 19
-
-/**
- * @brief xcb_sync_await_fence_request_t
- **/
-typedef struct xcb_sync_await_fence_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
-} xcb_sync_await_fence_request_t;
-
-/** Opcode for xcb_sync_counter_notify. */
-#define XCB_SYNC_COUNTER_NOTIFY 0
-
-/**
- * @brief xcb_sync_counter_notify_event_t
- **/
-typedef struct xcb_sync_counter_notify_event_t {
- uint8_t response_type; /**< */
- uint8_t kind; /**< */
- uint16_t sequence; /**< */
- xcb_sync_counter_t counter; /**< */
- xcb_sync_int64_t wait_value; /**< */
- xcb_sync_int64_t counter_value; /**< */
- xcb_timestamp_t timestamp; /**< */
- uint16_t count; /**< */
- uint8_t destroyed; /**< */
- uint8_t pad0; /**< */
-} xcb_sync_counter_notify_event_t;
-
-/** Opcode for xcb_sync_alarm_notify. */
-#define XCB_SYNC_ALARM_NOTIFY 1
-
-/**
- * @brief xcb_sync_alarm_notify_event_t
- **/
-typedef struct xcb_sync_alarm_notify_event_t {
- uint8_t response_type; /**< */
- uint8_t kind; /**< */
- uint16_t sequence; /**< */
- xcb_sync_alarm_t alarm; /**< */
- xcb_sync_int64_t counter_value; /**< */
- xcb_sync_int64_t alarm_value; /**< */
- xcb_timestamp_t timestamp; /**< */
- uint8_t state; /**< */
- uint8_t pad0[3]; /**< */
-} xcb_sync_alarm_notify_event_t;
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_sync_alarm_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_sync_alarm_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_sync_alarm_next
- **
- ** @param xcb_sync_alarm_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_sync_alarm_next (xcb_sync_alarm_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_sync_alarm_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_sync_alarm_end
- **
- ** @param xcb_sync_alarm_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_sync_alarm_end (xcb_sync_alarm_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_sync_counter_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_sync_counter_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_sync_counter_next
- **
- ** @param xcb_sync_counter_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_sync_counter_next (xcb_sync_counter_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_sync_counter_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_sync_counter_end
- **
- ** @param xcb_sync_counter_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_sync_counter_end (xcb_sync_counter_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_sync_fence_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_sync_fence_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_sync_fence_next
- **
- ** @param xcb_sync_fence_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_sync_fence_next (xcb_sync_fence_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_sync_fence_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_sync_fence_end
- **
- ** @param xcb_sync_fence_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_sync_fence_end (xcb_sync_fence_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_sync_int64_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_sync_int64_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_sync_int64_next
- **
- ** @param xcb_sync_int64_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_sync_int64_next (xcb_sync_int64_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_sync_int64_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_sync_int64_end
- **
- ** @param xcb_sync_int64_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_sync_int64_end (xcb_sync_int64_iterator_t i /**< */);
-
-int
-xcb_sync_systemcounter_sizeof (const void *_buffer /**< */);
-
-
-/*****************************************************************************
- **
- ** char * xcb_sync_systemcounter_name
- **
- ** @param const xcb_sync_systemcounter_t *R
- ** @returns char *
- **
- *****************************************************************************/
-
-char *
-xcb_sync_systemcounter_name (const xcb_sync_systemcounter_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_sync_systemcounter_name_length
- **
- ** @param const xcb_sync_systemcounter_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_sync_systemcounter_name_length (const xcb_sync_systemcounter_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_sync_systemcounter_name_end
- **
- ** @param const xcb_sync_systemcounter_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_sync_systemcounter_name_end (const xcb_sync_systemcounter_t *R /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_sync_systemcounter_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_sync_systemcounter_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_sync_systemcounter_next
- **
- ** @param xcb_sync_systemcounter_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_sync_systemcounter_next (xcb_sync_systemcounter_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_sync_systemcounter_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_sync_systemcounter_end
- **
- ** @param xcb_sync_systemcounter_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_sync_systemcounter_end (xcb_sync_systemcounter_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_sync_trigger_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_sync_trigger_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_sync_trigger_next
- **
- ** @param xcb_sync_trigger_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_sync_trigger_next (xcb_sync_trigger_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_sync_trigger_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_sync_trigger_end
- **
- ** @param xcb_sync_trigger_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_sync_trigger_end (xcb_sync_trigger_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_sync_waitcondition_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_sync_waitcondition_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_sync_waitcondition_next
- **
- ** @param xcb_sync_waitcondition_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_sync_waitcondition_next (xcb_sync_waitcondition_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_sync_waitcondition_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_sync_waitcondition_end
- **
- ** @param xcb_sync_waitcondition_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_sync_waitcondition_end (xcb_sync_waitcondition_iterator_t i /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_sync_initialize_cookie_t xcb_sync_initialize
- **
- ** @param xcb_connection_t *c
- ** @param uint8_t desired_major_version
- ** @param uint8_t desired_minor_version
- ** @returns xcb_sync_initialize_cookie_t
- **
- *****************************************************************************/
-
-xcb_sync_initialize_cookie_t
-xcb_sync_initialize (xcb_connection_t *c /**< */,
- uint8_t desired_major_version /**< */,
- uint8_t desired_minor_version /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_sync_initialize_cookie_t xcb_sync_initialize_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param uint8_t desired_major_version
- ** @param uint8_t desired_minor_version
- ** @returns xcb_sync_initialize_cookie_t
- **
- *****************************************************************************/
-
-xcb_sync_initialize_cookie_t
-xcb_sync_initialize_unchecked (xcb_connection_t *c /**< */,
- uint8_t desired_major_version /**< */,
- uint8_t desired_minor_version /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_sync_initialize_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_sync_initialize_reply_t * xcb_sync_initialize_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_initialize_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_sync_initialize_reply_t *
- **
- *****************************************************************************/
-
-xcb_sync_initialize_reply_t *
-xcb_sync_initialize_reply (xcb_connection_t *c /**< */,
- xcb_sync_initialize_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-int
-xcb_sync_list_system_counters_sizeof (const void *_buffer /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_sync_list_system_counters_cookie_t xcb_sync_list_system_counters
- **
- ** @param xcb_connection_t *c
- ** @returns xcb_sync_list_system_counters_cookie_t
- **
- *****************************************************************************/
-
-xcb_sync_list_system_counters_cookie_t
-xcb_sync_list_system_counters (xcb_connection_t *c /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_sync_list_system_counters_cookie_t xcb_sync_list_system_counters_unchecked
- **
- ** @param xcb_connection_t *c
- ** @returns xcb_sync_list_system_counters_cookie_t
- **
- *****************************************************************************/
-
-xcb_sync_list_system_counters_cookie_t
-xcb_sync_list_system_counters_unchecked (xcb_connection_t *c /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_sync_list_system_counters_counters_length
- **
- ** @param const xcb_sync_list_system_counters_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_sync_list_system_counters_counters_length (const xcb_sync_list_system_counters_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_sync_systemcounter_iterator_t xcb_sync_list_system_counters_counters_iterator
- **
- ** @param const xcb_sync_list_system_counters_reply_t *R
- ** @returns xcb_sync_systemcounter_iterator_t
- **
- *****************************************************************************/
-
-xcb_sync_systemcounter_iterator_t
-xcb_sync_list_system_counters_counters_iterator (const xcb_sync_list_system_counters_reply_t *R /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_sync_list_system_counters_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_sync_list_system_counters_reply_t * xcb_sync_list_system_counters_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_list_system_counters_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_sync_list_system_counters_reply_t *
- **
- *****************************************************************************/
-
-xcb_sync_list_system_counters_reply_t *
-xcb_sync_list_system_counters_reply (xcb_connection_t *c /**< */,
- xcb_sync_list_system_counters_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_create_counter_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_counter_t id
- ** @param xcb_sync_int64_t initial_value
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_create_counter_checked (xcb_connection_t *c /**< */,
- xcb_sync_counter_t id /**< */,
- xcb_sync_int64_t initial_value /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_create_counter
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_counter_t id
- ** @param xcb_sync_int64_t initial_value
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_create_counter (xcb_connection_t *c /**< */,
- xcb_sync_counter_t id /**< */,
- xcb_sync_int64_t initial_value /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_destroy_counter_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_counter_t counter
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_destroy_counter_checked (xcb_connection_t *c /**< */,
- xcb_sync_counter_t counter /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_destroy_counter
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_counter_t counter
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_destroy_counter (xcb_connection_t *c /**< */,
- xcb_sync_counter_t counter /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_sync_query_counter_cookie_t xcb_sync_query_counter
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_counter_t counter
- ** @returns xcb_sync_query_counter_cookie_t
- **
- *****************************************************************************/
-
-xcb_sync_query_counter_cookie_t
-xcb_sync_query_counter (xcb_connection_t *c /**< */,
- xcb_sync_counter_t counter /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_sync_query_counter_cookie_t xcb_sync_query_counter_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_counter_t counter
- ** @returns xcb_sync_query_counter_cookie_t
- **
- *****************************************************************************/
-
-xcb_sync_query_counter_cookie_t
-xcb_sync_query_counter_unchecked (xcb_connection_t *c /**< */,
- xcb_sync_counter_t counter /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_sync_query_counter_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_sync_query_counter_reply_t * xcb_sync_query_counter_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_query_counter_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_sync_query_counter_reply_t *
- **
- *****************************************************************************/
-
-xcb_sync_query_counter_reply_t *
-xcb_sync_query_counter_reply (xcb_connection_t *c /**< */,
- xcb_sync_query_counter_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-int
-xcb_sync_await_sizeof (const void *_buffer /**< */,
- uint32_t wait_list_len /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_await_checked
- **
- ** @param xcb_connection_t *c
- ** @param uint32_t wait_list_len
- ** @param const xcb_sync_waitcondition_t *wait_list
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_await_checked (xcb_connection_t *c /**< */,
- uint32_t wait_list_len /**< */,
- const xcb_sync_waitcondition_t *wait_list /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_await
- **
- ** @param xcb_connection_t *c
- ** @param uint32_t wait_list_len
- ** @param const xcb_sync_waitcondition_t *wait_list
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_await (xcb_connection_t *c /**< */,
- uint32_t wait_list_len /**< */,
- const xcb_sync_waitcondition_t *wait_list /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_change_counter_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_counter_t counter
- ** @param xcb_sync_int64_t amount
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_change_counter_checked (xcb_connection_t *c /**< */,
- xcb_sync_counter_t counter /**< */,
- xcb_sync_int64_t amount /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_change_counter
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_counter_t counter
- ** @param xcb_sync_int64_t amount
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_change_counter (xcb_connection_t *c /**< */,
- xcb_sync_counter_t counter /**< */,
- xcb_sync_int64_t amount /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_set_counter_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_counter_t counter
- ** @param xcb_sync_int64_t value
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_set_counter_checked (xcb_connection_t *c /**< */,
- xcb_sync_counter_t counter /**< */,
- xcb_sync_int64_t value /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_set_counter
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_counter_t counter
- ** @param xcb_sync_int64_t value
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_set_counter (xcb_connection_t *c /**< */,
- xcb_sync_counter_t counter /**< */,
- xcb_sync_int64_t value /**< */);
-
-int
-xcb_sync_create_alarm_sizeof (const void *_buffer /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_create_alarm_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_alarm_t id
- ** @param uint32_t value_mask
- ** @param const uint32_t *value_list
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_create_alarm_checked (xcb_connection_t *c /**< */,
- xcb_sync_alarm_t id /**< */,
- uint32_t value_mask /**< */,
- const uint32_t *value_list /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_create_alarm
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_alarm_t id
- ** @param uint32_t value_mask
- ** @param const uint32_t *value_list
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_create_alarm (xcb_connection_t *c /**< */,
- xcb_sync_alarm_t id /**< */,
- uint32_t value_mask /**< */,
- const uint32_t *value_list /**< */);
-
-int
-xcb_sync_change_alarm_sizeof (const void *_buffer /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_change_alarm_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_alarm_t id
- ** @param uint32_t value_mask
- ** @param const uint32_t *value_list
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_change_alarm_checked (xcb_connection_t *c /**< */,
- xcb_sync_alarm_t id /**< */,
- uint32_t value_mask /**< */,
- const uint32_t *value_list /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_change_alarm
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_alarm_t id
- ** @param uint32_t value_mask
- ** @param const uint32_t *value_list
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_change_alarm (xcb_connection_t *c /**< */,
- xcb_sync_alarm_t id /**< */,
- uint32_t value_mask /**< */,
- const uint32_t *value_list /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_destroy_alarm_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_alarm_t alarm
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_destroy_alarm_checked (xcb_connection_t *c /**< */,
- xcb_sync_alarm_t alarm /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_destroy_alarm
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_alarm_t alarm
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_destroy_alarm (xcb_connection_t *c /**< */,
- xcb_sync_alarm_t alarm /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_sync_query_alarm_cookie_t xcb_sync_query_alarm
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_alarm_t alarm
- ** @returns xcb_sync_query_alarm_cookie_t
- **
- *****************************************************************************/
-
-xcb_sync_query_alarm_cookie_t
-xcb_sync_query_alarm (xcb_connection_t *c /**< */,
- xcb_sync_alarm_t alarm /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_sync_query_alarm_cookie_t xcb_sync_query_alarm_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_alarm_t alarm
- ** @returns xcb_sync_query_alarm_cookie_t
- **
- *****************************************************************************/
-
-xcb_sync_query_alarm_cookie_t
-xcb_sync_query_alarm_unchecked (xcb_connection_t *c /**< */,
- xcb_sync_alarm_t alarm /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_sync_query_alarm_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_sync_query_alarm_reply_t * xcb_sync_query_alarm_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_query_alarm_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_sync_query_alarm_reply_t *
- **
- *****************************************************************************/
-
-xcb_sync_query_alarm_reply_t *
-xcb_sync_query_alarm_reply (xcb_connection_t *c /**< */,
- xcb_sync_query_alarm_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_set_priority_checked
- **
- ** @param xcb_connection_t *c
- ** @param uint32_t id
- ** @param int32_t priority
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_set_priority_checked (xcb_connection_t *c /**< */,
- uint32_t id /**< */,
- int32_t priority /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_set_priority
- **
- ** @param xcb_connection_t *c
- ** @param uint32_t id
- ** @param int32_t priority
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_set_priority (xcb_connection_t *c /**< */,
- uint32_t id /**< */,
- int32_t priority /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_sync_get_priority_cookie_t xcb_sync_get_priority
- **
- ** @param xcb_connection_t *c
- ** @param uint32_t id
- ** @returns xcb_sync_get_priority_cookie_t
- **
- *****************************************************************************/
-
-xcb_sync_get_priority_cookie_t
-xcb_sync_get_priority (xcb_connection_t *c /**< */,
- uint32_t id /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_sync_get_priority_cookie_t xcb_sync_get_priority_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param uint32_t id
- ** @returns xcb_sync_get_priority_cookie_t
- **
- *****************************************************************************/
-
-xcb_sync_get_priority_cookie_t
-xcb_sync_get_priority_unchecked (xcb_connection_t *c /**< */,
- uint32_t id /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_sync_get_priority_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_sync_get_priority_reply_t * xcb_sync_get_priority_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_get_priority_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_sync_get_priority_reply_t *
- **
- *****************************************************************************/
-
-xcb_sync_get_priority_reply_t *
-xcb_sync_get_priority_reply (xcb_connection_t *c /**< */,
- xcb_sync_get_priority_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_create_fence_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_drawable_t drawable
- ** @param xcb_sync_fence_t fence
- ** @param uint8_t initially_triggered
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_create_fence_checked (xcb_connection_t *c /**< */,
- xcb_drawable_t drawable /**< */,
- xcb_sync_fence_t fence /**< */,
- uint8_t initially_triggered /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_create_fence
- **
- ** @param xcb_connection_t *c
- ** @param xcb_drawable_t drawable
- ** @param xcb_sync_fence_t fence
- ** @param uint8_t initially_triggered
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_create_fence (xcb_connection_t *c /**< */,
- xcb_drawable_t drawable /**< */,
- xcb_sync_fence_t fence /**< */,
- uint8_t initially_triggered /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_trigger_fence_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_fence_t fence
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_trigger_fence_checked (xcb_connection_t *c /**< */,
- xcb_sync_fence_t fence /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_trigger_fence
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_fence_t fence
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_trigger_fence (xcb_connection_t *c /**< */,
- xcb_sync_fence_t fence /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_reset_fence_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_fence_t fence
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_reset_fence_checked (xcb_connection_t *c /**< */,
- xcb_sync_fence_t fence /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_reset_fence
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_fence_t fence
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_reset_fence (xcb_connection_t *c /**< */,
- xcb_sync_fence_t fence /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_destroy_fence_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_fence_t fence
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_destroy_fence_checked (xcb_connection_t *c /**< */,
- xcb_sync_fence_t fence /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_destroy_fence
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_fence_t fence
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_destroy_fence (xcb_connection_t *c /**< */,
- xcb_sync_fence_t fence /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_sync_query_fence_cookie_t xcb_sync_query_fence
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_fence_t fence
- ** @returns xcb_sync_query_fence_cookie_t
- **
- *****************************************************************************/
-
-xcb_sync_query_fence_cookie_t
-xcb_sync_query_fence (xcb_connection_t *c /**< */,
- xcb_sync_fence_t fence /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_sync_query_fence_cookie_t xcb_sync_query_fence_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_fence_t fence
- ** @returns xcb_sync_query_fence_cookie_t
- **
- *****************************************************************************/
-
-xcb_sync_query_fence_cookie_t
-xcb_sync_query_fence_unchecked (xcb_connection_t *c /**< */,
- xcb_sync_fence_t fence /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_sync_query_fence_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_sync_query_fence_reply_t * xcb_sync_query_fence_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_query_fence_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_sync_query_fence_reply_t *
- **
- *****************************************************************************/
-
-xcb_sync_query_fence_reply_t *
-xcb_sync_query_fence_reply (xcb_connection_t *c /**< */,
- xcb_sync_query_fence_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-int
-xcb_sync_await_fence_sizeof (const void *_buffer /**< */,
- uint32_t fence_list_len /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_await_fence_checked
- **
- ** @param xcb_connection_t *c
- ** @param uint32_t fence_list_len
- ** @param const xcb_sync_fence_t *fence_list
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_await_fence_checked (xcb_connection_t *c /**< */,
- uint32_t fence_list_len /**< */,
- const xcb_sync_fence_t *fence_list /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_await_fence
- **
- ** @param xcb_connection_t *c
- ** @param uint32_t fence_list_len
- ** @param const xcb_sync_fence_t *fence_list
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_await_fence (xcb_connection_t *c /**< */,
- uint32_t fence_list_len /**< */,
- const xcb_sync_fence_t *fence_list /**< */);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-/**
- * @}
- */
diff --git a/src/3rdparty/xcb/include/xcb/xcb_atom.h b/src/3rdparty/xcb/include/xcb/xcb_atom.h
deleted file mode 100644
index d5c4d6baa7..0000000000
--- a/src/3rdparty/xcb/include/xcb/xcb_atom.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifndef __XCB_ATOM_H__
-#define __XCB_ATOM_H__
-
-#include <xcb/xcb.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-char *xcb_atom_name_by_screen(const char *base, uint8_t screen);
-char *xcb_atom_name_by_resource(const char *base, uint32_t resource);
-char *xcb_atom_name_unique(const char *base, uint32_t id);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __XCB_ATOM_H__ */
diff --git a/src/3rdparty/xcb/include/xcb/xcb_aux.h b/src/3rdparty/xcb/include/xcb/xcb_aux.h
deleted file mode 100644
index d49d4383e9..0000000000
--- a/src/3rdparty/xcb/include/xcb/xcb_aux.h
+++ /dev/null
@@ -1,214 +0,0 @@
-#ifndef __XCB_AUX_H__
-#define __XCB_AUX_H__
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-uint8_t xcb_aux_get_depth (xcb_connection_t *c,
- xcb_screen_t *screen);
-
-uint8_t xcb_aux_get_depth_of_visual (xcb_screen_t *screen,
- xcb_visualid_t id);
-
-xcb_screen_t *xcb_aux_get_screen (xcb_connection_t *c,
- int screen);
-
-xcb_visualtype_t *xcb_aux_get_visualtype (xcb_connection_t *c,
- int screen,
- xcb_visualid_t vid);
-
-xcb_visualtype_t *
-xcb_aux_find_visual_by_id (xcb_screen_t *screen,
- xcb_visualid_t id);
-
-xcb_visualtype_t *
-xcb_aux_find_visual_by_attrs (xcb_screen_t *screen,
- int8_t class_,
- int8_t depth);
-
-void xcb_aux_sync (xcb_connection_t *c);
-
-/* internal helper macro for XCB_AUX_ADD_PARAM
-It gives the offset of the field 'param' in the structure pointed to by
-'paramsp' in multiples of an uint32_t's size. */
-#define XCB_AUX_INTERNAL_OFFSETOF(paramsp, param) \
- ((uint32_t const*)(&((paramsp)->param))-(uint32_t const*)(paramsp))
-
-/* add an optional parameter to an xcb_params_* structure
-parameters:
- maskp: pointer to bitmask whos bits mark used parameters
- paramsp: pointer to structure with parameters
- param: parameter to set
- value: value to set the parameter to
-*/
-#define XCB_AUX_ADD_PARAM(maskp, paramsp, param, value) \
- ((*(maskp)|=1<<XCB_AUX_INTERNAL_OFFSETOF((paramsp),param)), \
- ((paramsp)->param=(value)))
-
-typedef struct {
- uint32_t back_pixmap;
- uint32_t back_pixel;
- uint32_t border_pixmap;
- uint32_t border_pixel;
- uint32_t bit_gravity;
- uint32_t win_gravity;
- uint32_t backing_store;
- uint32_t backing_planes;
- uint32_t backing_pixel;
- uint32_t override_redirect;
- uint32_t save_under;
- uint32_t event_mask;
- uint32_t dont_propagate;
- uint32_t colormap;
- uint32_t cursor;
-} xcb_params_cw_t;
-
-xcb_void_cookie_t
-xcb_aux_create_window (xcb_connection_t *c,
- uint8_t depth,
- xcb_window_t wid,
- xcb_window_t parent,
- int16_t x,
- int16_t y,
- uint16_t width,
- uint16_t height,
- uint16_t border_width,
- uint16_t class_,
- xcb_visualid_t visual,
- uint32_t mask,
- const xcb_params_cw_t *params);
-
-xcb_void_cookie_t
-xcb_aux_create_window_checked (xcb_connection_t *c,
- uint8_t depth,
- xcb_window_t wid,
- xcb_window_t parent,
- int16_t x,
- int16_t y,
- uint16_t width,
- uint16_t height,
- uint16_t border_width,
- uint16_t class_,
- xcb_visualid_t visual,
- uint32_t mask,
- const xcb_params_cw_t *params);
-
-xcb_void_cookie_t
-xcb_aux_change_window_attributes (xcb_connection_t *c,
- xcb_window_t window,
- uint32_t mask,
- const xcb_params_cw_t *params);
-
-xcb_void_cookie_t
-xcb_aux_change_window_attributes_checked (xcb_connection_t *c,
- xcb_window_t window,
- uint32_t mask,
- const xcb_params_cw_t *params);
-
-typedef struct {
- int32_t x;
- int32_t y;
- uint32_t width;
- uint32_t height;
- uint32_t border_width;
- uint32_t sibling;
- uint32_t stack_mode;
-} xcb_params_configure_window_t;
-
-xcb_void_cookie_t
-xcb_aux_configure_window (xcb_connection_t *c,
- xcb_window_t window,
- uint16_t mask,
- const xcb_params_configure_window_t *params);
-
-typedef struct {
- uint32_t function;
- uint32_t plane_mask;
- uint32_t foreground;
- uint32_t background;
- uint32_t line_width;
- uint32_t line_style;
- uint32_t cap_style;
- uint32_t join_style;
- uint32_t fill_style;
- uint32_t fill_rule;
- uint32_t tile;
- uint32_t stipple;
- uint32_t tile_stipple_origin_x;
- uint32_t tile_stipple_origin_y;
- uint32_t font;
- uint32_t subwindow_mode;
- uint32_t graphics_exposures;
- uint32_t clip_originX;
- uint32_t clip_originY;
- uint32_t mask;
- uint32_t dash_offset;
- uint32_t dash_list;
- uint32_t arc_mode;
-} xcb_params_gc_t;
-
-xcb_void_cookie_t
-xcb_aux_create_gc (xcb_connection_t *c,
- xcb_gcontext_t cid,
- xcb_drawable_t drawable,
- uint32_t mask,
- const xcb_params_gc_t *params);
-
-xcb_void_cookie_t
-xcb_aux_create_gc_checked (xcb_connection_t *c,
- xcb_gcontext_t gid,
- xcb_drawable_t drawable,
- uint32_t mask,
- const xcb_params_gc_t *params);
-xcb_void_cookie_t
-xcb_aux_change_gc (xcb_connection_t *c,
- xcb_gcontext_t gc,
- uint32_t mask,
- const xcb_params_gc_t *params);
-
-xcb_void_cookie_t
-xcb_aux_change_gc_checked (xcb_connection_t *c,
- xcb_gcontext_t gc,
- uint32_t mask,
- const xcb_params_gc_t *params);
-typedef struct {
- uint32_t key_click_percent;
- uint32_t bell_percent;
- uint32_t bell_pitch;
- uint32_t bell_duration;
- uint32_t led;
- uint32_t led_mode;
- uint32_t key;
- uint32_t auto_repeat_mode;
-} xcb_params_keyboard_t;
-
-xcb_void_cookie_t
-xcb_aux_change_keyboard_control (xcb_connection_t *c,
- uint32_t mask,
- const xcb_params_keyboard_t *params);
-
-int
-xcb_aux_parse_color(char *color_name,
- uint16_t *red, uint16_t *green, uint16_t *blue);
-
-xcb_void_cookie_t
-xcb_aux_set_line_attributes_checked (xcb_connection_t *dpy,
- xcb_gcontext_t gc,
- uint16_t linewidth,
- int32_t linestyle,
- int32_t capstyle,
- int32_t joinstyle);
-
-xcb_void_cookie_t
-xcb_aux_clear_window(xcb_connection_t * dpy,
- xcb_window_t w);
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif /* __XCB_AUX_H__ */
diff --git a/src/3rdparty/xcb/include/xcb/xcb_bitops.h b/src/3rdparty/xcb/include/xcb/xcb_bitops.h
deleted file mode 100644
index a6872a1f30..0000000000
--- a/src/3rdparty/xcb/include/xcb/xcb_bitops.h
+++ /dev/null
@@ -1,212 +0,0 @@
-#ifndef __XCB_BITOPS_H__
-#define __XCB_BITOPS_H__
-
-/* Copyright (C) 2007 Bart Massey
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Except as contained in this notice, the names of the authors or their
- * institutions shall not be used in advertising or otherwise to promote the
- * sale, use or other dealings in this Software without prior written
- * authorization from the authors.
- */
-
-#include <assert.h>
-#include <inttypes.h>
-#include <X11/Xfuncproto.h>
-
-/**
- * @defgroup xcb__bitops XCB Bit Operations
- *
- * Inline functions for common bit ops used in XCB and elsewhere.
- *
- * @{
- */
-
-
-/**
- * Create a low-order bitmask.
- * @param n Mask size.
- * @return Mask.
- *
- * Create a bitmask with the lower @p n bits set and the
- * rest of the word clear.
- * @ingroup xcb__bitops
- */
-_X_INLINE static uint32_t
-xcb_mask(uint32_t n)
-{
- return n == 32 ? ~0 : (1 << n) - 1;
-}
-
-
-/**
- * Population count.
- * @param n Integer representing a bitset.
- * @return Number of 1 bits in the bitset.
- *
- * This is a reasonably fast algorithm for counting the bits
- * in a 32-bit word. Currently a classic binary
- * divide-and-conquer popcount: popcount_2() from
- * http://en.wikipedia.org/wiki/Hamming_weight.
- * @ingroup xcb__bitops
- */
-
-
-/* 15 ops, 3 long immediates, 14 stages, 9 alu ops, 9 alu stages */
-_X_INLINE static uint32_t
-xcb_popcount(uint32_t x)
-{
- uint32_t m1 = 0x55555555;
- uint32_t m2 = 0x33333333;
- uint32_t m4 = 0x0f0f0f0f;
- x -= (x >> 1) & m1;
- x = (x & m2) + ((x >> 2) & m2);
- x = (x + (x >> 4)) & m4;
- x += x >> 8;
- return (x + (x >> 16)) & 0x3f;
-}
-
-
-/**
- * Round up to the next power-of-two unit size.
- * @param base Number to be rounded up.
- * @param pad Multiple to be rounded to; must be a power of two.
- * @return Rounded-up number.
- *
- * Rounds @p base up to a multiple of @p pad, where @p pad
- * is a power of two. The more general case is handled by
- * xcb_roundup().
- * @ingroup xcb__bitops
- */
-_X_INLINE static uint32_t
-xcb_roundup_2 (uint32_t base, uint32_t pad)
-{
- return (base + pad - 1) & -pad;
-}
-
-/**
- * Round down to the next power-of-two unit size.
- * @param base Number to be rounded down.
- * @param pad Multiple to be rounded to; must be a power of two.
- * @return Rounded-down number.
- *
- * Rounds @p base down to a multiple of @p pad, where @p pad
- * is a power of two. The more general case is handled by
- * xcb_rounddown().
- * @ingroup xcb__bitops
- */
-_X_INLINE static uint32_t
-xcb_rounddown_2 (uint32_t base, uint32_t pad)
-{
- return base & -pad;
-}
-
-/**
- * Round up to the next unit size.
- * @param base Number to be rounded up.
- * @param pad Multiple to be rounded to.
- * @return Rounded-up number.
- *
- * This is a general routine for rounding @p base up
- * to a multiple of @p pad. If you know that @p pad
- * is a power of two, you should probably call xcb_roundup_2()
- * instead.
- * @ingroup xcb__bitops
- */
-_X_INLINE static uint32_t
-xcb_roundup (uint32_t base, uint32_t pad)
-{
- uint32_t b = base + pad - 1;
- /* faster if pad is a power of two */
- if (((pad - 1) & pad) == 0)
- return b & -pad;
- return b - b % pad;
-}
-
-
-/**
- * Round down to the next unit size.
- * @param base Number to be rounded down.
- * @param pad Multiple to be rounded to.
- * @return Rounded-down number.
- *
- * This is a general routine for rounding @p base down
- * to a multiple of @p pad. If you know that @p pad
- * is a power of two, you should probably call xcb_rounddown_2()
- * instead.
- * @ingroup xcb__bitops
- */
-_X_INLINE static uint32_t
-xcb_rounddown (uint32_t base, uint32_t pad)
-{
- /* faster if pad is a power of two */
- if (((pad - 1) & pad) == 0)
- return base & -pad;
- return base - base % pad;
-}
-
-
-/**
- * Reverse bits of word.
- * @param x Target word.
- * @param n Number of low-order bits to reverse.
- * @return Word with low @p n bits reversed, all others 0.
- *
- * Reverses the bottom @p n bits of @p x.
- * @ingroup xcb__bitops
- */
-_X_INLINE static uint32_t
-xcb_bit_reverse(uint32_t x, uint8_t n) {
- uint32_t m1 = 0x00ff00ff;
- uint32_t m2 = 0x0f0f0f0f;
- uint32_t m3 = 0x33333333;
- uint32_t m4 = 0x55555555;
- x = ((x << 16) | (x >> 16));
- x = ((x & m1) << 8) | ((x >> 8) & m1);
- x = ((x & m2) << 4) | ((x >> 4) & m2);
- x = ((x & m3) << 2) | ((x >> 2) & m3);
- x = ((x & m4) << 1) | ((x >> 1) & m4);
- x >>= 32 - n;
- return x;
-}
-
-
-/**
- * Host byte order.
- * @return The byte order of the host.
- *
- * Tests the host's byte order and returns either
- * XCB_IMAGE_ORDER_MSB_FIRST or XCB_IMAGE_ORDER_LSB_FIRST
- * as appropriate.
- * @ingroup xcb__bitops
- */
-_X_INLINE static xcb_image_order_t
-xcb_host_byte_order(void) {
- uint32_t endian_test = 0x01020304;
-
- switch (*(char *)&endian_test) {
- case 0x01:
- return XCB_IMAGE_ORDER_MSB_FIRST;
- case 0x04:
- return XCB_IMAGE_ORDER_LSB_FIRST;
- }
- assert(0);
-}
-
-#endif /* __XCB_BITOPS_H__ */
diff --git a/src/3rdparty/xcb/include/xcb/xcb_event.h b/src/3rdparty/xcb/include/xcb/xcb_event.h
deleted file mode 100644
index ee911fce51..0000000000
--- a/src/3rdparty/xcb/include/xcb/xcb_event.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright (C) 2008-2009 Julien Danjou <julien@danjou.info>
- *
- * Permission is hereby granted, free of charge, to any person
- * obtaining a copy of this software and associated documentation
- * files (the "Software"), to deal in the Software without
- * restriction, including without limitation the rights to use, copy,
- * modify, merge, publish, distribute, sublicense, and/or sell copies
- * of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Except as contained in this notice, the names of the authors or
- * their institutions shall not be used in advertising or otherwise to
- * promote the sale, use or other dealings in this Software without
- * prior written authorization from the authors.
- */
-
-/**
- * @defgroup xcb__event_t XCB Event Functions
- *
- * These functions ease the handling of X events received.
- *
- * @{
- */
-
-#ifndef __XCB_EVENT_H__
-#define __XCB_EVENT_H__
-
-#include <xcb/xcb.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @brief Bit mask to find event type regardless of event source.
- *
- * Each event in the X11 protocol contains an 8-bit type code.
- * The most-significant bit in this code is set if the event was
- * generated from a SendEvent request. This mask can be used to
- * determine the type of event regardless of how the event was
- * generated. See the X11R6 protocol specification for details.
- */
-#define XCB_EVENT_RESPONSE_TYPE_MASK (0x7f)
-#define XCB_EVENT_RESPONSE_TYPE(e) (e->response_type & XCB_EVENT_RESPONSE_TYPE_MASK)
-#define XCB_EVENT_SENT(e) (e->response_type & ~XCB_EVENT_RESPONSE_TYPE_MASK)
-
-/**
- * @brief Convert an event response type to a label.
- * @param type The event type.
- * @return A string with the event name, or NULL if unknown.
- */
-const char * xcb_event_get_label(uint8_t type);
-
-/**
- * @brief Convert an event error type to a label.
- * @param type The error type.
- * @return A string with the event name, or NULL if unknown or if the event is
- * not an error.
- */
-const char * xcb_event_get_error_label(uint8_t type);
-
-/**
- * @brief Convert an event request type to a label.
- * @param type The request type.
- * @return A string with the event name, or NULL if unknown or if the event is
- * not an error.
- */
-const char * xcb_event_get_request_label(uint8_t type);
-
-#ifdef __cplusplus
-}
-#endif
-
-/**
- * @}
- */
-
-#endif /* __XCB_EVENT_H__ */
diff --git a/src/3rdparty/xcb/include/xcb/xcb_icccm.h b/src/3rdparty/xcb/include/xcb/xcb_icccm.h
deleted file mode 100644
index 449a5c88ca..0000000000
--- a/src/3rdparty/xcb/include/xcb/xcb_icccm.h
+++ /dev/null
@@ -1,1049 +0,0 @@
-#ifndef __XCB_ICCCM_H__
-#define __XCB_ICCCM_H__
-
-/*
- * Copyright (C) 2008 Arnaud Fontaine <arnau@debian.org>
- * Copyright (C) 2007-2008 Vincent Torri <vtorri@univ-evry.fr>
- *
- * Permission is hereby granted, free of charge, to any person
- * obtaining a copy of this software and associated documentation
- * files (the "Software"), to deal in the Software without
- * restriction, including without limitation the rights to use, copy,
- * modify, merge, publish, distribute, sublicense, and/or sell copies
- * of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Except as contained in this notice, the names of the authors or
- * their institutions shall not be used in advertising or otherwise to
- * promote the sale, use or other dealings in this Software without
- * prior written authorization from the authors.
- */
-
-/**
- * @defgroup xcb__icccm_t XCB ICCCM Functions
- *
- * These functions allow easy handling of the protocol described in the
- * Inter-Client Communication Conventions Manual.
- *
- * @{
- */
-
-#include <xcb/xcb.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @brief TextProperty reply structure.
- */
-typedef struct {
-/** Store reply to avoid memory allocation, should normally not be
- used directly */
-xcb_get_property_reply_t *_reply;
-/** Encoding used */
-xcb_atom_t encoding;
-/** Length of the name field above */
-uint32_t name_len;
-/** Property value */
-char *name;
-/** Format, may be 8, 16 or 32 */
-uint8_t format;
-} xcb_icccm_get_text_property_reply_t;
-
-/**
- * @brief Deliver a GetProperty request to the X server.
- * @param c The connection to the X server.
- * @param window Window X identifier.
- * @param property Property atom to get.
- * @return The request cookie.
- *
- * Allow to get a window property, in most case you might want to use
- * above functions to get an ICCCM property for a given window.
- */
-xcb_get_property_cookie_t xcb_icccm_get_text_property(xcb_connection_t *c,
- xcb_window_t window,
- xcb_atom_t property);
-
-/**
- * @see xcb_icccm_get_text_property()
- */
-xcb_get_property_cookie_t xcb_icccm_get_text_property_unchecked(xcb_connection_t *c,
- xcb_window_t window,
- xcb_atom_t property);
-
-/**
- * @brief Fill given structure with the property value of a window.
- * @param c The connection to the X server.
- * @param cookie TextProperty request cookie.
- * @param prop TextProperty reply which is to be filled.
- * @param e Error if any.
- * @return Return 1 on success, 0 otherwise.
- *
- * If the function return 0 (failure), the content of prop is unmodified and
- * therefore the structure must not be wiped.
- *
- * The parameter e supplied to this function must be NULL if
- * xcb_icccm_get_text_property_unchecked() is used. Otherwise, it stores
- * the error if any. prop structure members should be freed by
- * xcb_icccm_get_text_property_reply_wipe().
- */
-uint8_t xcb_icccm_get_text_property_reply(xcb_connection_t *c,
- xcb_get_property_cookie_t cookie,
- xcb_icccm_get_text_property_reply_t *prop,
- xcb_generic_error_t **e);
-
-/**
- * @brief Wipe prop structure members previously allocated by
- * xcb_icccm_get_text_property_reply().
- * @param prop prop structure whose members is going to be freed.
- */
-void xcb_icccm_get_text_property_reply_wipe(xcb_icccm_get_text_property_reply_t *prop);
-
-/* WM_NAME */
-
-/**
- * @brief Deliver a SetProperty request to set WM_NAME property value.
- * @param c The connection to the X server.
- * @param window Window X identifier.
- * @param encoding Encoding used for the data passed in the name parameter, the set property will also have this encoding as its type.
- * @param format Encoding format.
- * @param name_len Length of name value to set.
- * @param name Name value to set.
- */
-xcb_void_cookie_t xcb_icccm_set_wm_name_checked(xcb_connection_t *c,
- xcb_window_t window,
- xcb_atom_t encoding,
- uint8_t format,
- uint32_t name_len,
- const char *name);
-
-/**
- * @see xcb_icccm_set_wm_name_checked()
- */
-xcb_void_cookie_t xcb_icccm_set_wm_name(xcb_connection_t *c, xcb_window_t window,
- xcb_atom_t encoding, uint8_t format,
- uint32_t name_len, const char *name);
-
-/**
- * @brief Deliver a GetProperty request to the X server for WM_NAME.
- * @param c The connection to the X server.
- * @param window Window X identifier.
- * @return The request cookie.
- */
-xcb_get_property_cookie_t xcb_icccm_get_wm_name(xcb_connection_t *c,
- xcb_window_t window);
-
-/**
- * @see xcb_icccm_get_wm_name()
- */
-xcb_get_property_cookie_t xcb_icccm_get_wm_name_unchecked(xcb_connection_t *c,
- xcb_window_t window);
-
-/**
- * @brief Fill given structure with the WM_NAME property of a window.
- * @param c The connection to the X server.
- * @param cookie Request cookie.
- * @param prop WM_NAME property value.
- * @param e Error if any.
- * @see xcb_icccm_get_text_property_reply()
- * @return Return 1 on success, 0 otherwise.
- */
-uint8_t xcb_icccm_get_wm_name_reply(xcb_connection_t *c,
- xcb_get_property_cookie_t cookie,
- xcb_icccm_get_text_property_reply_t *prop,
- xcb_generic_error_t **e);
-
-/* WM_ICON_NAME */
-
-/**
- * @brief Deliver a SetProperty request to set WM_ICON_NAME property value.
- * @param c The connection to the X server.
- * @param window Window X identifier.
- * @param encoding Encoding used for the data passed in the name parameter, the set property will also have this encoding as its type.
- * @param format Encoding format.
- * @param name_len Length of name value to set.
- * @param name Name value to set.
- */
-xcb_void_cookie_t xcb_icccm_set_wm_icon_name_checked(xcb_connection_t *c,
- xcb_window_t window,
- xcb_atom_t encoding,
- uint8_t format,
- uint32_t name_len,
- const char *name);
-
-/**
- * @see xcb_icccm_set_wm_icon_name_checked()
- */
-xcb_void_cookie_t xcb_icccm_set_wm_icon_name(xcb_connection_t *c,
- xcb_window_t window,
- xcb_atom_t encoding,
- uint8_t format,
- uint32_t name_len,
- const char *name);
-
-/**
- * @brief Send request to get WM_ICON_NAME property of a window.
- * @param c The connection to the X server.
- * @param window Window X identifier.
- * @return The request cookie.
- */
-xcb_get_property_cookie_t xcb_icccm_get_wm_icon_name(xcb_connection_t *c,
- xcb_window_t window);
-
-/**
- * @see xcb_icccm_get_wm_icon_name()
- */
-xcb_get_property_cookie_t xcb_icccm_get_wm_icon_name_unchecked(xcb_connection_t *c,
- xcb_window_t window);
-
-/**
- * @brief Fill given structure with the WM_ICON_NAME property of a window.
- * @param c The connection to the X server.
- * @param cookie Request cookie.
- * @param prop WM_ICON_NAME property value.
- * @param e Error if any.
- * @see xcb_icccm_get_text_property_reply()
- * @return Return 1 on success, 0 otherwise.
- */
-uint8_t xcb_icccm_get_wm_icon_name_reply(xcb_connection_t *c,
- xcb_get_property_cookie_t cookie,
- xcb_icccm_get_text_property_reply_t *prop,
- xcb_generic_error_t **e);
-
-/* WM_COLORMAP_WINDOWS */
-
-/**
- * @brief Deliver a ChangeProperty request to set WM_COLORMAP_WINDOWS property value.
- * @param c The connection to the X server.
- * @param wm_colormap_windows The WM_COLORMAP_WINDOWS atom
- * @param window Window X identifier.
- * @param list_len Windows list len.
- * @param list Windows list.
- * @return The request cookie.
- */
-xcb_void_cookie_t xcb_icccm_set_wm_colormap_windows_checked(xcb_connection_t *c,
- xcb_window_t window,
- xcb_atom_t wm_colormap_windows_atom,
- uint32_t list_len,
- const xcb_window_t *list);
-
-/**
- * @see xcb_icccm_set_wm_colormap_windows_checked()
- */
-xcb_void_cookie_t xcb_icccm_set_wm_colormap_windows(xcb_connection_t *c,
- xcb_window_t window,
- xcb_atom_t wm_colormap_windows_atom,
- uint32_t list_len,
- const xcb_window_t *list);
-
-/**
- * @brief WM_COLORMAP_WINDOWS structure.
- */
-typedef struct {
-/** Length of the windows list */
-uint32_t windows_len;
-/** Windows list */
-xcb_window_t *windows;
-/** Store reply to avoid memory allocation, should normally not be
- used directly */
-xcb_get_property_reply_t *_reply;
-} xcb_icccm_get_wm_colormap_windows_reply_t;
-
-/**
- * @brief Send request to get WM_COLORMAP_WINDOWS property of a given window.
- * @param c The connection to the X server.
- * @param window Window X identifier.
- * @return The request cookie.
- */
-xcb_get_property_cookie_t xcb_icccm_get_wm_colormap_windows(xcb_connection_t *c,
- xcb_window_t window,
- xcb_atom_t wm_colormap_windows_atom);
-
-/**
- * @see xcb_icccm_get_wm_colormap_windows()
- */
-xcb_get_property_cookie_t xcb_icccm_get_wm_colormap_windows_unchecked(xcb_connection_t *c,
- xcb_window_t window,
- xcb_atom_t wm_colormap_windows_atom);
-
-/**
- * @brief Fill the given structure with the WM_COLORMAP_WINDOWS property of a window.
- * @param reply The reply of the GetProperty request.
- * @param colormap_windows WM_COLORMAP property value.
- * @return Return 1 on success, 0 otherwise.
- *
- * protocols structure members should be freed by
- * xcb_icccm_get_wm_protocols_reply_wipe().
- */
-uint8_t xcb_icccm_get_wm_colormap_windows_from_reply(xcb_get_property_reply_t *reply,
- xcb_icccm_get_wm_colormap_windows_reply_t *colormap_windows);
-/**
- * @brief Fill the given structure with the WM_COLORMAP_WINDOWS property of a window.
- * @param c The connection to the X server.
- * @param cookie Request cookie.
- * @param protocols WM_COLORMAP_WINDOWS property value.
- * @param e Error if any.
- * @return Return 1 on success, 0 otherwise.
- *
- * The parameter e supplied to this function must be NULL if
- * xcb_icccm_get_wm_colormap_windows_unchecked() is used. Otherwise, it
- * stores the error if any. protocols structure members should be
- * freed by xcb_icccm_get_wm_colormap_windows_reply_wipe().
- */
-uint8_t xcb_icccm_get_wm_colormap_windows_reply(xcb_connection_t *c,
- xcb_get_property_cookie_t cookie,
- xcb_icccm_get_wm_colormap_windows_reply_t *windows,
- xcb_generic_error_t **e);
-
-/**
- * @brief Wipe protocols structure members previously allocated by
- * xcb_icccm_get_wm_colormap_windows_reply().
- * @param windows windows structure whose members is going to be freed.
- */
-void xcb_icccm_get_wm_colormap_windows_reply_wipe(xcb_icccm_get_wm_colormap_windows_reply_t *windows);
-
-/* WM_CLIENT_MACHINE */
-
-/**
- * @brief Deliver a SetProperty request to set WM_CLIENT_MACHINE property value.
- * @param c The connection to the X server.
- * @param window Window X identifier.
- * @param encoding Encoding used for the data passed in the name parameter, the set property will also have this encoding as its type.
- * @param format Encoding format.
- * @param name_len Length of name value to set.
- * @param name Name value to set.
- */
-xcb_void_cookie_t xcb_icccm_set_wm_client_machine_checked(xcb_connection_t *c,
- xcb_window_t window,
- xcb_atom_t encoding,
- uint8_t format,
- uint32_t name_len,
- const char *name);
-
-/**
- * @see xcb_icccm_set_wm_client_machine_checked()
- */
-xcb_void_cookie_t xcb_icccm_set_wm_client_machine(xcb_connection_t *c,
- xcb_window_t window,
- xcb_atom_t encoding,
- uint8_t format,
- uint32_t name_len,
- const char *name);
-
-/**
- * @brief Send request to get WM_CLIENT_MACHINE property of a window.
- * @param c The connection to the X server.
- * @param window Window X identifier.
- * @return The request cookie.
- */
-xcb_get_property_cookie_t xcb_icccm_get_wm_client_machine(xcb_connection_t *c,
- xcb_window_t window);
-
-/**
- * @see xcb_icccm_get_wm_client_machine()
- */
-xcb_get_property_cookie_t xcb_icccm_get_wm_client_machine_unchecked(xcb_connection_t *c,
- xcb_window_t window);
-
-/**
- * @brief Fill given structure with the WM_CLIENT_MACHINE property of a window.
- * @param c The connection to the X server.
- * @param cookie Request cookie.
- * @param prop WM_CLIENT_MACHINE property value.
- * @param e Error if any.
- * @see xcb_icccm_get_text_property_reply()
- * @return Return 1 on success, 0 otherwise.
- */
-uint8_t xcb_icccm_get_wm_client_machine_reply(xcb_connection_t *c,
- xcb_get_property_cookie_t cookie,
- xcb_icccm_get_text_property_reply_t *prop,
- xcb_generic_error_t **e);
-
-/* WM_CLASS */
-
-/**
- * @brief WM_CLASS hint structure
- */
-
-/**
- * @brief Deliver a SetProperty request to set WM_CLASS property value.
- *
- * WM_CLASS string is a concatenation of the instance and class name
- * strings respectively (including null character).
- *
- * @param c The connection to the X server.
- * @param window Window X identifier.
- * @param class_len Length of WM_CLASS string.
- * @param class_name WM_CLASS string.
- * @return The request cookie.
- */
-xcb_void_cookie_t xcb_icccm_set_wm_class_checked(xcb_connection_t *c,
- xcb_window_t window,
- uint32_t class_len,
- const char *class_name);
-
-/**
- * @see xcb_icccm_set_wm_class_checked()
- */
-xcb_void_cookie_t xcb_icccm_set_wm_class(xcb_connection_t *c,
- xcb_window_t window,
- uint32_t class_len,
- const char *class_name);
-
-typedef struct {
-/** Instance name */
-char *instance_name;
-/** Class of application */
-char *class_name;
-/** Store reply to avoid memory allocation, should normally not be
- used directly */
-xcb_get_property_reply_t *_reply;
-} xcb_icccm_get_wm_class_reply_t;
-
-/**
- * @brief Deliver a GetProperty request to the X server for WM_CLASS.
- * @param c The connection to the X server.
- * @param window Window X identifier.
- * @return The request cookie.
- */
-xcb_get_property_cookie_t xcb_icccm_get_wm_class(xcb_connection_t *c,
- xcb_window_t window);
-
-/**
- * @see xcb_icccm_get_wm_class()
- */
-xcb_get_property_cookie_t xcb_icccm_get_wm_class_unchecked(xcb_connection_t *c,
- xcb_window_t window);
-
-
-/**
- * @brief Fill give structure with the WM_CLASS property of a window.
- * @param prop The property structure to fill.
- * @param reply The property request reply.
- * @return Return 1 on success, 0 otherwise.
- */
-uint8_t
-xcb_icccm_get_wm_class_from_reply(xcb_icccm_get_wm_class_reply_t *prop,
- xcb_get_property_reply_t *reply);
-
-/**
- * @brief Fill given structure with the WM_CLASS property of a window.
- * @param c The connection to the X server.
- * @param cookie Request cookie.
- * @param prop WM_CLASS property value.
- * @param e Error if any.
- * @return Return 1 on success, 0 otherwise.
- *
- * The parameter e supplied to this function must be NULL if
- * xcb_icccm_get_wm_class_unchecked() is used. Otherwise, it stores the
- * error if any. prop structure members should be freed by
- * xcb_icccm_get_wm_class_reply_wipe().
- */
-uint8_t xcb_icccm_get_wm_class_reply(xcb_connection_t *c,
- xcb_get_property_cookie_t cookie,
- xcb_icccm_get_wm_class_reply_t *prop,
- xcb_generic_error_t **e);
-
-/**
- * @brief Wipe prop structure members previously allocated by
- * xcb_icccm_get_wm_class_reply().
- * @param prop prop structure whose members is going to be freed.
- */
-void xcb_icccm_get_wm_class_reply_wipe(xcb_icccm_get_wm_class_reply_t *prop);
-
-/* WM_TRANSIENT_FOR */
-
-/**
- * @brief Deliver a SetProperty request to set WM_TRANSIENT_FOR property value.
- * @param c The connection to the X server.
- * @param window Window X identifier.
- * @param transient_for_window The WM_TRANSIENT_FOR window X identifier.
- * @return The request cookie.
- */
-xcb_void_cookie_t xcb_icccm_set_wm_transient_for_checked(xcb_connection_t *c,
- xcb_window_t window,
- xcb_window_t transient_for_window);
-
-/**
- * @see xcb_icccm_set_wm_transient_for
- */
-xcb_void_cookie_t xcb_icccm_set_wm_transient_for(xcb_connection_t *c,
- xcb_window_t window,
- xcb_window_t transient_for_window);
-
-/**
- * @brief Send request to get WM_TRANSIENT_FOR property of a window.
- * @param c The connection to the X server
- * @param window Window X identifier.
- * @return The request cookie.
- */
-xcb_get_property_cookie_t xcb_icccm_get_wm_transient_for(xcb_connection_t *c,
- xcb_window_t window);
-
-/**
- * @see xcb_icccm_get_wm_transient_for_unchecked()
- */
-xcb_get_property_cookie_t xcb_icccm_get_wm_transient_for_unchecked(xcb_connection_t *c,
- xcb_window_t window);
-
-/**
- * @brief Fill given window pointer with the WM_TRANSIENT_FOR property of a window.
- * @param prop WM_TRANSIENT_FOR property value.
- * @param reply The get property request reply.
- * @return Return 1 on success, 0 otherwise.
- */
-uint8_t
-xcb_icccm_get_wm_transient_for_from_reply(xcb_window_t *prop,
- xcb_get_property_reply_t *reply);
-/**
- * @brief Fill given structure with the WM_TRANSIENT_FOR property of a window.
- * @param c The connection to the X server.
- * @param cookie Request cookie.
- * @param prop WM_TRANSIENT_FOR property value.
- * @param e Error if any.
- * @return Return 1 on success, 0 otherwise.
- *
- * The parameter e supplied to this function must be NULL if
- * xcb_icccm_get_wm_transient_for_unchecked() is used. Otherwise, it stores
- * the error if any.
- */
-uint8_t xcb_icccm_get_wm_transient_for_reply(xcb_connection_t *c,
- xcb_get_property_cookie_t cookie,
- xcb_window_t *prop,
- xcb_generic_error_t **e);
-
-/* WM_SIZE_HINTS */
-
-typedef enum {
-XCB_ICCCM_SIZE_HINT_US_POSITION = 1 << 0,
- XCB_ICCCM_SIZE_HINT_US_SIZE = 1 << 1,
- XCB_ICCCM_SIZE_HINT_P_POSITION = 1 << 2,
- XCB_ICCCM_SIZE_HINT_P_SIZE = 1 << 3,
- XCB_ICCCM_SIZE_HINT_P_MIN_SIZE = 1 << 4,
- XCB_ICCCM_SIZE_HINT_P_MAX_SIZE = 1 << 5,
- XCB_ICCCM_SIZE_HINT_P_RESIZE_INC = 1 << 6,
- XCB_ICCCM_SIZE_HINT_P_ASPECT = 1 << 7,
- XCB_ICCCM_SIZE_HINT_BASE_SIZE = 1 << 8,
- XCB_ICCCM_SIZE_HINT_P_WIN_GRAVITY = 1 << 9
- } xcb_icccm_size_hints_flags_t;
-
-/**
- * @brief Size hints structure.
- */
-typedef struct {
-/** User specified flags */
-uint32_t flags;
-/** User-specified position */
-int32_t x, y;
-/** User-specified size */
-int32_t width, height;
-/** Program-specified minimum size */
-int32_t min_width, min_height;
-/** Program-specified maximum size */
-int32_t max_width, max_height;
-/** Program-specified resize increments */
-int32_t width_inc, height_inc;
-/** Program-specified minimum aspect ratios */
-int32_t min_aspect_num, min_aspect_den;
-/** Program-specified maximum aspect ratios */
-int32_t max_aspect_num, max_aspect_den;
-/** Program-specified base size */
-int32_t base_width, base_height;
-/** Program-specified window gravity */
-uint32_t win_gravity;
-} xcb_size_hints_t;
-
-/** Number of elements in this structure */
-#define XCB_ICCCM_NUM_WM_SIZE_HINTS_ELEMENTS 18
-
-/**
- * @brief Set size hints to a given position.
- * @param hints SIZE_HINTS structure.
- * @param user_specified Is the size user-specified?
- * @param x The X position.
- * @param y The Y position.
- */
-void xcb_icccm_size_hints_set_position(xcb_size_hints_t *hints, int user_specified,
- int32_t x, int32_t y);
-
-/**
- * @brief Set size hints to a given size.
- * @param hints SIZE_HINTS structure.
- * @param user_specified is the size user-specified?
- * @param width The width.
- * @param height The height.
- */
-void xcb_icccm_size_hints_set_size(xcb_size_hints_t *hints, int user_specified,
- int32_t width, int32_t height);
-
-/**
- * @brief Set size hints to a given minimum size.
- * @param hints SIZE_HINTS structure.
- * @param width The minimum width.
- * @param height The minimum height.
- */
-void xcb_icccm_size_hints_set_min_size(xcb_size_hints_t *hints, int32_t min_width,
- int32_t min_height);
-
-/**
- * @brief Set size hints to a given maximum size.
- * @param hints SIZE_HINTS structure.
- * @param width The maximum width.
- * @param height The maximum height.
- */
-void xcb_icccm_size_hints_set_max_size(xcb_size_hints_t *hints, int32_t max_width,
- int32_t max_height);
-
-/**
- * @brief Set size hints to a given resize increments.
- * @param hints SIZE_HINTS structure.
- * @param width The resize increments width.
- * @param height The resize increments height.
- */
-void xcb_icccm_size_hints_set_resize_inc(xcb_size_hints_t *hints, int32_t width_inc,
- int32_t height_inc);
-
-/**
- * @brief Set size hints to a given aspect ratios.
- * @param hints SIZE_HINTS structure.
- * @param min_aspect_num The minimum aspect ratios for the width.
- * @param min_aspect_den The minimum aspect ratios for the height.
- * @param max_aspect_num The maximum aspect ratios for the width.
- * @param max_aspect_den The maximum aspect ratios for the height.
- */
-void xcb_icccm_size_hints_set_aspect(xcb_size_hints_t *hints, int32_t min_aspect_num,
- int32_t min_aspect_den, int32_t max_aspect_num,
- int32_t max_aspect_den);
-
-/**
- * @brief Set size hints to a given base size.
- * @param hints SIZE_HINTS structure.
- * @param base_width Base width.
- * @param base_height Base height.
- */
-void xcb_icccm_size_hints_set_base_size(xcb_size_hints_t *hints, int32_t base_width,
- int32_t base_height);
-
-/**
- * @brief Set size hints to a given window gravity.
- * @param hints SIZE_HINTS structure.
- * @param win_gravity Window gravity value.
- */
-void xcb_icccm_size_hints_set_win_gravity(xcb_size_hints_t *hints,
- xcb_gravity_t win_gravity);
-
-/**
- * @brief Deliver a ChangeProperty request to set a value to a given property.
- * @param c The connection to the X server.
- * @param window Window X identifier.
- * @param property Property to set value for.
- * @param hints Hints value to set.
- */
-xcb_void_cookie_t xcb_icccm_set_wm_size_hints_checked(xcb_connection_t *c,
- xcb_window_t window,
- xcb_atom_t property,
- xcb_size_hints_t *hints);
-
-/**
- * @see xcb_icccm_set_wm_size_hints_checked()
- */
-xcb_void_cookie_t xcb_icccm_set_wm_size_hints(xcb_connection_t *c,
- xcb_window_t window,
- xcb_atom_t property,
- xcb_size_hints_t *hints);
-
-/**
- * @brief Send request to get size hints structure for the named property.
- * @param c The connection to the X server.
- * @param window Window X identifier.
- * @param property Specify the property name.
- * @return The request cookie.
- */
-xcb_get_property_cookie_t xcb_icccm_get_wm_size_hints(xcb_connection_t *c,
- xcb_window_t window,
- xcb_atom_t property);
-
-/**
- * @see xcb_icccm_get_wm_size_hints()
- */
-xcb_get_property_cookie_t xcb_icccm_get_wm_size_hints_unchecked(xcb_connection_t *c,
- xcb_window_t window,
- xcb_atom_t property);
-
-/**
- * @brief Fill given structure with the size hints of the named property.
- * @param c The connection to the X server.
- * @param cookie Request cookie.
- * @param hints Size hints structure.
- * @param e Error if any.
- * @return Return 1 on success, 0 otherwise.
- *
- * The parameter e supplied to this function must be NULL if
- * xcb_icccm_get_wm_size_hints_unchecked() is used. Otherwise, it stores
- * the error if any. The returned pointer should be freed.
- */
-uint8_t xcb_icccm_get_wm_size_hints_reply(xcb_connection_t *c,
- xcb_get_property_cookie_t cookie,
- xcb_size_hints_t *hints,
- xcb_generic_error_t **e);
-
-/* WM_NORMAL_HINTS */
-
-/**
- * @brief Deliver a ChangeProperty request to set WM_NORMAL_HINTS property value.
- * @param c The connection to the X server.
- * @param window Window X identifier.
- * @param hints Hints value to set.
- */
-xcb_void_cookie_t xcb_icccm_set_wm_normal_hints_checked(xcb_connection_t *c,
- xcb_window_t window,
- xcb_size_hints_t *hints);
-
-/**
- * @see xcb_icccm_set_wm_normal_hints_checked()
- */
-xcb_void_cookie_t xcb_icccm_set_wm_normal_hints(xcb_connection_t *c,
- xcb_window_t window,
- xcb_size_hints_t *hints);
-
-/**
- * @brief Send request to get WM_NORMAL_HINTS property of a window.
- * @param c The connection to the X server.
- * @param window Window X identifier.
- * @return The request cookie.
- */
-xcb_get_property_cookie_t xcb_icccm_get_wm_normal_hints(xcb_connection_t *c,
- xcb_window_t window);
-
-/**
- * @see xcb_icccm_get_wm_normal_hints()
- */
-xcb_get_property_cookie_t xcb_icccm_get_wm_normal_hints_unchecked(xcb_connection_t *c,
- xcb_window_t window);
-
-/**
- * @brief Fill given structure with the WM_NORMAL_HINTS property of a window.
- * @param hints WM_NORMAL_HINTS property value.
- * @param reply The get property request reply.
- * @return Return 1 on success, 0 otherwise.
- */
-uint8_t
-xcb_icccm_get_wm_size_hints_from_reply(xcb_size_hints_t *hints,
- xcb_get_property_reply_t *reply);
-
-/**
- * @brief Fill given structure with the WM_NORMAL_HINTS property of a window.
- * @param c The connection to the X server.
- * @param cookie Request cookie.
- * @param hints WM_NORMAL_HINTS property value.
- * @param e Error if any.
- * @return Return 1 on success, 0 otherwise.
- *
- * The parameter e supplied to this function must be NULL if
- * xcb_icccm_get_wm_normal_hints_unchecked() is used. Otherwise, it stores
- * the error if any. The returned pointer should be freed.
- */
-uint8_t xcb_icccm_get_wm_normal_hints_reply(xcb_connection_t *c,
- xcb_get_property_cookie_t cookie,
- xcb_size_hints_t *hints,
- xcb_generic_error_t **e);
-
-/* WM_HINTS */
-
-/**
- * @brief WM hints structure (may be extended in the future).
- */
-typedef struct {
-/** Marks which fields in this structure are defined */
-int32_t flags;
-/** Does this application rely on the window manager to get keyboard
- input? */
- uint32_t input;
- /** See below */
- int32_t initial_state;
- /** Pixmap to be used as icon */
- xcb_pixmap_t icon_pixmap;
- /** Window to be used as icon */
- xcb_window_t icon_window;
- /** Initial position of icon */
- int32_t icon_x, icon_y;
- /** Icon mask bitmap */
- xcb_pixmap_t icon_mask;
- /* Identifier of related window group */
- xcb_window_t window_group;
-} xcb_icccm_wm_hints_t;
-
-/** Number of elements in this structure */
-#define XCB_ICCCM_NUM_WM_HINTS_ELEMENTS 9
-
-/**
- * @brief WM_HINTS window states.
- */
-typedef enum {
- XCB_ICCCM_WM_STATE_WITHDRAWN = 0,
- XCB_ICCCM_WM_STATE_NORMAL = 1,
- XCB_ICCCM_WM_STATE_ICONIC = 3
-} xcb_icccm_wm_state_t;
-
-typedef enum {
- XCB_ICCCM_WM_HINT_INPUT = (1L << 0),
- XCB_ICCCM_WM_HINT_STATE = (1L << 1),
- XCB_ICCCM_WM_HINT_ICON_PIXMAP = (1L << 2),
- XCB_ICCCM_WM_HINT_ICON_WINDOW = (1L << 3),
- XCB_ICCCM_WM_HINT_ICON_POSITION = (1L << 4),
- XCB_ICCCM_WM_HINT_ICON_MASK = (1L << 5),
- XCB_ICCCM_WM_HINT_WINDOW_GROUP = (1L << 6),
- XCB_ICCCM_WM_HINT_X_URGENCY = (1L << 8)
-} xcb_icccm_wm_t;
-
-#define XCB_ICCCM_WM_ALL_HINTS (XCB_ICCCM_WM_HINT_INPUT | XCB_ICCCM_WM_HINT_STATE | \
- XCB_ICCCM_WM_HINT_ICON_PIXMAP | XCB_ICCCM_WM_HINT_ICON_WINDOW | \
- XCB_ICCCM_WM_HINT_ICON_POSITION | XCB_ICCCM_WM_HINT_ICON_MASK | \
- XCB_ICCCM_WM_HINT_WINDOW_GROUP)
-
-/**
- * @brief Get urgency hint.
- * @param hints WM_HINTS structure.
- * @return Urgency hint value.
- */
-uint32_t xcb_icccm_wm_hints_get_urgency(xcb_icccm_wm_hints_t *hints);
-
-/**
- * @brief Set input focus.
- * @param hints WM_HINTS structure.
- * @param input Input focus.
- */
-void xcb_icccm_wm_hints_set_input(xcb_icccm_wm_hints_t *hints, uint8_t input);
-
-/**
- * @brief Set hints state to 'iconic'.
- * @param hints WM_HINTS structure.
- */
-void xcb_icccm_wm_hints_set_iconic(xcb_icccm_wm_hints_t *hints);
-
-/**
- * @brief Set hints state to 'normal'.
- * @param hints WM_HINTS structure.
- */
-void xcb_icccm_wm_hints_set_normal(xcb_icccm_wm_hints_t *hints);
-
-/**
- * @brief Set hints state to 'withdrawn'.
- * @param hints WM_HINTS structure.
- */
-void xcb_icccm_wm_hints_set_withdrawn(xcb_icccm_wm_hints_t *hints);
-
-/**
- * @brief Set hints state to none.
- * @param hints WM_HINTS structure.
- */
-void xcb_icccm_wm_hints_set_none(xcb_icccm_wm_hints_t *hints);
-
-/**
- * @brief Set pixmap to be used as icon.
- * @param hints WM_HINTS structure.
- * @param icon_pixmap Pixmap.
- */
-void xcb_icccm_wm_hints_set_icon_pixmap(xcb_icccm_wm_hints_t *hints,
- xcb_pixmap_t icon_pixmap);
-
-/**
- * @brief Set icon mask bitmap.
- * @param hints WM_HINTS structure.
- * @param icon_mask Pixmap.
- */
-void xcb_icccm_wm_hints_set_icon_mask(xcb_icccm_wm_hints_t *hints, xcb_pixmap_t icon_mask);
-
-/**
- * @brief Set window identifier to be used as icon.
- * @param hints WM_HINTS structure.
- * @param icon_window Window X identifier.
- */
-void xcb_icccm_wm_hints_set_icon_window(xcb_icccm_wm_hints_t *hints,
- xcb_window_t icon_window);
-
-/**
- * @brief Set identifier of related window group.
- * @param hints WM_HINTS structure.
- * @param window_group Window X identifier.
- */
-void xcb_icccm_wm_hints_set_window_group(xcb_icccm_wm_hints_t *hints,
- xcb_window_t window_group);
-
-/**
- * @brief Set urgency hints flag.
- * @param hints WM_HINTS structure.
- */
-void xcb_icccm_wm_hints_set_urgency(xcb_icccm_wm_hints_t *hints);
-
-/**
- * @brief Deliver a SetProperty request to set WM_HINTS property value.
- * @param c The connection to the X server.
- * @param window Window X identifier.
- * @param hints Hints value to set.
- */
-xcb_void_cookie_t xcb_icccm_set_wm_hints_checked(xcb_connection_t *c,
- xcb_window_t window,
- xcb_icccm_wm_hints_t *hints);
-
-/**
- * @see xcb_icccm_set_wm_hints_checked()
- */
-xcb_void_cookie_t xcb_icccm_set_wm_hints(xcb_connection_t *c,
- xcb_window_t window,
- xcb_icccm_wm_hints_t *hints);
-
-/**
- * @brief Send request to get WM_HINTS property of a window.
- * @param c The connection to the X server.
- * @param window Window X identifier.
- * @return The request cookie.
- */
-xcb_get_property_cookie_t xcb_icccm_get_wm_hints(xcb_connection_t *c,
- xcb_window_t window);
-
-/**
- * @see xcb_icccm_get_wm_hints()
- */
-xcb_get_property_cookie_t xcb_icccm_get_wm_hints_unchecked(xcb_connection_t *c,
- xcb_window_t window);
-
-/**
- * @brief Fill given structure with the WM_HINTS property of a window.
- * @param hints WM_HINTS property value.
- * @param reply The get property request reply.
- * @return Return 1 on success, 0 otherwise.
- */
-uint8_t
-xcb_icccm_get_wm_hints_from_reply(xcb_icccm_wm_hints_t *hints,
- xcb_get_property_reply_t *reply);
-
-/**
- * @brief Fill given structure with the WM_HINTS property of a window.
- * @param c The connection to the X server.
- * @param cookie Request cookie.
- * @param hints WM_HINTS property value.
- * @param e Error if any.
- * @return Return 1 on success, 0 otherwise.
- *
- * The parameter e supplied to this function must be NULL if
- * xcb_icccm_get_wm_hints_unchecked() is used. Otherwise, it stores the
- * error if any. The returned pointer should be freed.
- */
-uint8_t xcb_icccm_get_wm_hints_reply(xcb_connection_t *c,
- xcb_get_property_cookie_t cookie,
- xcb_icccm_wm_hints_t *hints,
- xcb_generic_error_t **e);
-
-/* WM_PROTOCOLS */
-
-/**
- * @brief Deliver a SetProperty request to set WM_PROTOCOLS property value.
- * @param c The connection to the X server.
- * @param wm_protocols The WM_PROTOCOLS atom.
- * @param window Window X identifier.
- * @param list_len Atom list len.
- * @param list Atom list.
- */
-xcb_void_cookie_t xcb_icccm_set_wm_protocols_checked(xcb_connection_t *c,
- xcb_window_t window,
- xcb_atom_t wm_protocols,
- uint32_t list_len,
- xcb_atom_t *list);
-
-/**
- * @see xcb_icccm_set_wm_protocols_checked()
- */
-xcb_void_cookie_t xcb_icccm_set_wm_protocols(xcb_connection_t *c,
- xcb_window_t window,
- xcb_atom_t wm_protocols,
- uint32_t list_len,
- xcb_atom_t *list);
-
-/**
- * @brief WM_PROTOCOLS structure.
- */
-typedef struct {
- /** Length of the atoms list */
- uint32_t atoms_len;
- /** Atoms list */
- xcb_atom_t *atoms;
- /** Store reply to avoid memory allocation, should normally not be
- used directly */
- xcb_get_property_reply_t *_reply;
-} xcb_icccm_get_wm_protocols_reply_t;
-
-/**
- * @brief Send request to get WM_PROTOCOLS property of a given window.
- * @param c The connection to the X server.
- * @param window Window X identifier.
- * @return The request cookie.
- */
-xcb_get_property_cookie_t xcb_icccm_get_wm_protocols(xcb_connection_t *c,
- xcb_window_t window,
- xcb_atom_t wm_protocol_atom);
-
-/**
- * @see xcb_icccm_get_wm_protocols()
- */
-xcb_get_property_cookie_t xcb_icccm_get_wm_protocols_unchecked(xcb_connection_t *c,
- xcb_window_t window,
- xcb_atom_t wm_protocol_atom);
-
-/**
- * @brief Fill the given structure with the WM_PROTOCOLS property of a window.
- * @param reply The reply of the GetProperty request.
- * @param protocols WM_PROTOCOLS property value.
- * @return Return 1 on success, 0 otherwise.
- *
- * protocols structure members should be freed by
- * xcb_icccm_get_wm_protocols_reply_wipe().
- */
-uint8_t xcb_icccm_get_wm_protocols_from_reply(xcb_get_property_reply_t *reply,
- xcb_icccm_get_wm_protocols_reply_t *protocols);
-/**
- * @brief Fill the given structure with the WM_PROTOCOLS property of a window.
- * @param c The connection to the X server.
- * @param cookie Request cookie.
- * @param protocols WM_PROTOCOLS property value.
- * @param e Error if any.
- * @return Return 1 on success, 0 otherwise.
- *
- * The parameter e supplied to this function must be NULL if
- * xcb_icccm_get_wm_protocols_unchecked() is used. Otherwise, it stores the
- * error if any. protocols structure members should be freed by
- * xcb_icccm_get_wm_protocols_reply_wipe().
- */
-uint8_t xcb_icccm_get_wm_protocols_reply(xcb_connection_t *c,
- xcb_get_property_cookie_t cookie,
- xcb_icccm_get_wm_protocols_reply_t *protocols,
- xcb_generic_error_t **e);
-
-/**
- * @brief Wipe protocols structure members previously allocated by
- * xcb_icccm_get_wm_protocols_reply().
- * @param protocols protocols structure whose members is going to be freed.
- */
-void xcb_icccm_get_wm_protocols_reply_wipe(xcb_icccm_get_wm_protocols_reply_t *protocols);
-
-#ifdef __cplusplus
-}
-#endif
-
-/**
- * @}
- */
-
-#endif /* __XCB_ICCCM_H__ */
diff --git a/src/3rdparty/xcb/include/xcb/xcb_image.h b/src/3rdparty/xcb/include/xcb/xcb_image.h
deleted file mode 100644
index f41187d394..0000000000
--- a/src/3rdparty/xcb/include/xcb/xcb_image.h
+++ /dev/null
@@ -1,630 +0,0 @@
-#ifndef __XCB_IMAGE_H__
-#define __XCB_IMAGE_H__
-
-/* Copyright (C) 2007 Bart Massey
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Except as contained in this notice, the names of the authors or their
- * institutions shall not be used in advertising or otherwise to promote the
- * sale, use or other dealings in this Software without prior written
- * authorization from the authors.
- */
-
-#include <xcb/xcb.h>
-#include <xcb/shm.h>
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/**
- * @defgroup xcb__image_t XCB Image Functions
- *
- * These are functions used to create and manipulate X images.
- *
- * The X image format we use is specific to this software,
- * which is probably a bug; it represents an intermediate
- * position between the wire format used by the X GetImage
- * and PutImage requests and standard formats like PBM. An
- * image consists of a header of type @ref xcb_image_t
- * describing the properties of the image, together with a
- * pointer to the image data itself.
- *
- * X wire images come in three formats. An xy-bitmap is a
- * bit-packed format that will be expanded to a two-color
- * pixmap using a GC when sent over the wire by PutImage.
- * An xy-pixmap is one or more bit-planes, each in the same
- * format as xy-bitmap. A z-pixmap is a more conventional
- * pixmap representation, with each pixel packed into a
- * word. Pixmaps are sent and received over the wire only
- * to/from drawables of their depth.
- *
- * Each X server defines, for each depth and format,
- * properties of images in that format that are sent and
- * received on the wire. We refer to this as a "native"
- * image for a given X server. It is not uncommon to want
- * to work with non-native images on the client side, or to
- * convert between the native images of different servers.
- *
- * This library provides several things. Facilities for
- * creating and destroying images are, of course, provided.
- * Wrappers for xcb_get_image() and xcb_put_image() are
- * provided; these utilize the image header to simplify the
- * interface. Routines for getting and putting image pixels
- * are provided: both a generic form that works with
- * arbitrary images, and fastpath forms for some common
- * cases. Conversion routines are provided for X images;
- * these routines have been fairly well optimized for the
- * common cases, and should run fast even on older hardware.
- * A routine analogous to Xlib's XCreate*FromBitmapData() is
- * provided for creating X images from xbm-format data; this
- * routine is in this library only because it is a trivial
- * use case for the library.
- *
- * @{
- */
-
-
-typedef struct xcb_image_t xcb_image_t;
-
-/**
- * @struct xcb_image_t
- * A structure that describes an xcb_image_t.
- */
-struct xcb_image_t
-{
- uint16_t width; /**< Width in pixels, excluding pads etc. */
- uint16_t height; /**< Height in pixels. */
- xcb_image_format_t format; /**< Format. */
- uint8_t scanline_pad; /**< Right pad in bits. Valid pads
- * are 8, 16, 32.
- */
- uint8_t depth; /**< Depth in bits. Valid depths
- * are 1, 4, 8, 16, 24 for z format,
- * 1 for xy-bitmap-format, anything
- * for xy-pixmap-format.
- */
- uint8_t bpp; /**< Storage per pixel in bits.
- * Must be >= depth. Valid bpp
- * are 1, 4, 8, 16, 24, 32 for z
- * format, 1 for xy-bitmap format,
- * anything for xy-pixmap-format.
- */
- uint8_t unit; /**< Scanline unit in bits for
- * xy formats and for bpp == 1,
- * in which case valid scanline
- * units are 8, 16, 32. Otherwise,
- * will be max(8, bpp). Must be >= bpp.
- */
- uint32_t plane_mask; /**< When format is
- * xy-pixmap and depth >
- * 1, this says which
- * planes are "valid" in
- * some vague sense.
- * Currently used only
- * by xcb_image_get/put_pixel(),
- * and set only by
- * xcb_image_get().
- */
- xcb_image_order_t byte_order; /**< Component byte order
- * for z-pixmap, byte
- * order of scanline unit
- * for xy-bitmap and
- * xy-pixmap. Nybble
- * order for z-pixmap
- * when bpp == 4.
- */
- xcb_image_order_t bit_order; /**< Bit order of
- * scanline unit for
- * xy-bitmap and
- * xy-pixmap.
- */
- uint32_t stride; /**< Bytes per image row.
- * Computable from other
- * data, but cached for
- * convenience/performance.
- */
- uint32_t size; /**< Size of image data in bytes.
- * Computable from other
- * data, but cached for
- * convenience/performance.
- */
- void * base; /**< Malloced block of storage that
- * will be freed by
- * @ref xcb_image_destroy() if non-null.
- */
- uint8_t * data; /**< The actual image. */
-};
-
-typedef struct xcb_shm_segment_info_t xcb_shm_segment_info_t;
-
-/**
- * @struct xcb_shm_segment_info_t
- * A structure that stores the informations needed by the MIT Shm
- * Extension.
- */
-struct xcb_shm_segment_info_t
-{
- xcb_shm_seg_t shmseg;
- uint32_t shmid;
- uint8_t *shmaddr;
-};
-
-
-/**
- * Update the cached data of an image.
- * @param image The image.
- *
- * An image's size and stride, among other things, are
- * cached in its structure. This function recomputes those
- * cached values for the given image.
- * @ingroup xcb__image_t
- */
-void
-xcb_image_annotate (xcb_image_t *image);
-
-/**
- * Create a new image.
- * @param width The width of the image, in pixels.
- * @param height The height of the image, in pixels.
- * @param format The format of the image.
- * @param xpad The scanline pad of the image.
- * @param depth The depth of the image.
- * @param bpp The depth of the image storage.
- * @param unit The unit of image representation, in bits.
- * @param byte_order The byte order of the image.
- * @param bit_order The bit order of the image.
- * @param base The base address of malloced image data.
- * @param bytes The size in bytes of the storage pointed to by base.
- * If base == 0 and bytes == ~0 and data == 0 on
- * entry, no storage will be auto-allocated.
- * @param data The image data. If data is null and bytes != ~0, then
- * an attempt will be made to fill in data; from
- * base if it is non-null (and bytes is large enough), else
- * by mallocing sufficient storage and filling in base.
- * @return The new image.
- *
- * This function allocates the memory needed for an @ref xcb_image_t structure
- * with the given properties. See the description of xcb_image_t for details.
- * This function initializes and returns a pointer to the
- * xcb_image_t structure. It may try to allocate or reserve data for the
- * structure, depending on how @p base, @p bytes and @p data are set.
- *
- * The image must be destroyed with xcb_image_destroy().
- * @ingroup xcb__image_t
- */
-xcb_image_t *
-xcb_image_create (uint16_t width,
- uint16_t height,
- xcb_image_format_t format,
- uint8_t xpad,
- uint8_t depth,
- uint8_t bpp,
- uint8_t unit,
- xcb_image_order_t byte_order,
- xcb_image_order_t bit_order,
- void * base,
- uint32_t bytes,
- uint8_t * data);
-
-
-/**
- * Create a new image in connection-native format.
- * @param c The connection.
- * @param width The width of the image, in pixels.
- * @param height The height of the image, in pixels.
- * @param format The format of the image.
- * @param depth The depth of the image.
- * @param base The base address of malloced image data.
- * @param bytes The size in bytes of the storage pointed to by base.
- * If base == 0 and bytes == ~0 and data == 0 on
- * entry, no storage will be auto-allocated.
- * @param data The image data. If data is null and bytes != ~0, then
- * an attempt will be made to fill in data; from
- * base if it is non-null (and bytes is large enough), else
- * by mallocing sufficient storage and filling in base.
- * @return The new image.
- *
- * This function calls @ref xcb_image_create() with the given
- * properties, and with the remaining properties chosen
- * according to the "native format" with the given
- * properties on the current connection.
- *
- * It is usual to use this rather
- * than calling xcb_image_create() directly.
- * @ingroup xcb__image_t
- */
-xcb_image_t *
-xcb_image_create_native (xcb_connection_t * c,
- uint16_t width,
- uint16_t height,
- xcb_image_format_t format,
- uint8_t depth,
- void * base,
- uint32_t bytes,
- uint8_t * data);
-
-
-/**
- * Destroy an image.
- * @param image The image to be destroyed.
- *
- * This function frees the memory associated with the @p image
- * parameter. If its base pointer is non-null, it frees
- * that also.
- * @ingroup xcb__image_t
- */
-void
-xcb_image_destroy (xcb_image_t *image);
-
-
-/**
- * Get an image from the X server.
- * @param conn The connection to the X server.
- * @param draw The drawable to get the image from.
- * @param x The x coordinate in pixels, relative to the origin of the
- * drawable and defining the upper-left corner of the rectangle.
- * @param y The y coordinate in pixels, relative to the origin of the
- * drawable and defining the upper-left corner of the rectangle.
- * @param width The width of the subimage in pixels.
- * @param height The height of the subimage in pixels.
- * @param plane_mask The plane mask. See the protocol document for details.
- * @param format The format of the image.
- * @return The subimage of @p draw defined by @p x, @p y, @p w, @p h.
- *
-
- * This function returns a new image taken from the
- * given drawable @p draw.
- * The image will be in connection native format. If the @p format
- * is xy-bitmap and the @p plane_mask masks bit planes out, those
- * bit planes will be made part of the returned image anyway,
- * by zero-filling them; this will require a fresh memory allocation
- * and some copying. Otherwise, the resulting image will use the
- * xcb_get_image_reply() record as its backing store.
- *
- * If a problem occurs, the function returns null.
- * @ingroup xcb__image_t
- */
-xcb_image_t *
-xcb_image_get (xcb_connection_t * conn,
- xcb_drawable_t draw,
- int16_t x,
- int16_t y,
- uint16_t width,
- uint16_t height,
- uint32_t plane_mask,
- xcb_image_format_t format);
-
-
-/**
- * Put an image onto the X server.
- * @param conn The connection to the X server.
- * @param draw The draw you get the image from.
- * @param gc The graphic context.
- * @param image The image you want to combine with the rectangle.
- * @param x The x coordinate, which is relative to the origin of the
- * drawable and defines the x coordinate of the upper-left corner of the
- * rectangle.
- * @param y The y coordinate, which is relative to the origin of the
- * drawable and defines the x coordinate of the upper-left corner of
- * the rectangle.
- * @param left_pad Notionally shift an xy-bitmap or xy-pixmap image
- * to the right some small amount, for some reason. XXX Not clear
- * this is currently supported correctly.
- * @return The cookie returned by xcb_put_image().
- *
- * This function combines an image with a rectangle of the
- * specified drawable @p draw. The image must be in native
- * format for the connection. The image is drawn at the
- * specified location in the drawable. For the xy-bitmap
- * format, the foreground pixel in @p gc defines the source
- * for the one bits in the image, and the background pixel
- * defines the source for the zero bits. For xy-pixmap and
- * z-pixmap formats, the depth of the image must match the
- * depth of the drawable; the gc is ignored.
- *
- * @ingroup xcb__image_t
- */
-xcb_void_cookie_t
-xcb_image_put (xcb_connection_t * conn,
- xcb_drawable_t draw,
- xcb_gcontext_t gc,
- xcb_image_t * image,
- int16_t x,
- int16_t y,
- uint8_t left_pad);
-
-
-/**
- * Check image for or convert image to native format.
- * @param c The connection to the X server.
- * @param image The image.
- * @param convert If 0, just check the image for native format.
- * Otherwise, actually convert it.
- * @return Null if the image is not in native format and can or will not
- * be converted. Otherwise, the native format image.
- *
- * Each X display has its own "native format" for images of a given
- * format and depth. This function either checks whether the given
- * @p image is in native format for the given connection @p c, or
- * actually tries to convert the image to native format, depending
- * on whether @p convert is true or false.
- *
- * When @p convert is true, and the image is not in native format
- * but can be converted, it will be, and a pointer to the new image
- * will be returned. The image passed in will be unharmed in this
- * case; it is the caller's responsibility to check that the returned
- * pointer is different and to dispose of the old image if desired.
- * @ingroup xcb__image_t
- */
-xcb_image_t *
-xcb_image_native (xcb_connection_t * c,
- xcb_image_t * image,
- int convert);
-
-
-/**
- * Put a pixel to an image.
- * @param image The image.
- * @param x The x coordinate of the pixel.
- * @param y The y coordinate of the pixel.
- * @param pixel The new pixel value.
- *
- * This function overwrites the pixel in the given @p image with the
- * specified @p pixel value (in client format). The image must contain the @p x
- * and @p y coordinates, as no clipping is done. This function honors
- * the plane-mask for xy-pixmap images.
- * @ingroup xcb__image_t
- */
-void
-xcb_image_put_pixel (xcb_image_t *image,
- uint32_t x,
- uint32_t y,
- uint32_t pixel);
-
-/**
- * Get a pixel from an image.
- * @param image The image.
- * @param x The x coordinate of the pixel.
- * @param y The y coordinate of the pixel.
- * @return The pixel value.
- *
- * This function retrieves a pixel from the given @p image.
- * The image must contain the @p x
- * and @p y coordinates, as no clipping is done. This function honors
- * the plane-mask for xy-pixmap images.
- * @ingroup xcb__image_t
- */
-uint32_t
-xcb_image_get_pixel (xcb_image_t *image,
- uint32_t x,
- uint32_t y);
-
-
-/**
- * Convert an image to a new format.
- * @param src Source image.
- * @param dst Destination image.
- * @return The @p dst image, or null on error.
- *
- * This function tries to convert the image data of the @p
- * src image to the format implied by the @p dst image,
- * overwriting the current destination image data.
- * The source and destination must have the same
- * width, height, and depth. When the source and destination
- * are already the same format, a simple copy is done. Otherwise,
- * when the destination has the same bits-per-pixel/scanline-unit
- * as the source, an optimized copy routine (thanks to Keith Packard)
- * is used for the conversion. Otherwise, the copy is done the
- * slow, slow way with @ref xcb_image_get_pixel() and
- * @ref xcb_image_put_pixel() calls.
- * @ingroup xcb__image_t
- */
-xcb_image_t *
-xcb_image_convert (xcb_image_t * src,
- xcb_image_t * dst);
-
-
-/**
- * Extract a subimage of an image.
- * @param image Source image.
- * @param x X coordinate of subimage.
- * @param y Y coordinate of subimage.
- * @param width Width of subimage.
- * @param height Height of subimage.
- * @param base Base of memory allocation.
- * @param bytes Size of base allocation.
- * @param data Memory allocation.
- * @return The subimage, or null on error.
- *
- * Given an image, this function extracts the subimage at the
- * given coordinates. The requested subimage must be entirely
- * contained in the source @p image. The resulting image will have the same
- * general image parameters as the source image. The @p base, @p bytes,
- * and @p data arguments are passed to @ref xcb_create_image() unaltered
- * to create the destination image---see its documentation for details.
- *
- * @ingroup xcb__image_t
- */
-xcb_image_t *
-xcb_image_subimage(xcb_image_t * image,
- uint32_t x,
- uint32_t y,
- uint32_t width,
- uint32_t height,
- void * base,
- uint32_t bytes,
- uint8_t * data);
-
-
-/*
- * Shm stuff
- */
-
-/**
- * Put the data of an xcb_image_t onto a drawable using the MIT Shm
- * Extension.
- * @param conn The connection to the X server.
- * @param draw The draw you get the image from.
- * @param gc The graphic context.
- * @param image The image you want to combine with the rectangle.
- * @param shminfo A @ref xcb_shm_segment_info_t structure.
- * @param src_x The offset in x from the left edge of the image
- * defined by the xcb_image_t structure.
- * @param src_y The offset in y from the left edge of the image
- * defined by the xcb_image_t structure.
- * @param dest_x The x coordinate, which is relative to the origin of the
- * drawable and defines the x coordinate of the upper-left corner of the
- * rectangle.
- * @param dest_y The y coordinate, which is relative to the origin of the
- * drawable and defines the x coordinate of the upper-left corner of
- * the rectangle.
- * @param src_width The width of the subimage, in pixels.
- * @param src_height The height of the subimage, in pixels.
- * @param send_event Indicates whether or not a completion event
- * should occur when the image write is complete.
- * @return 1 is no problems occurs.
- *
- * This function combines an image in memory with a shape of the
- * specified drawable. The section of the image defined by the @p x, @p y,
- * @p width, and @p height arguments is drawn on the specified part of
- * the drawable. If XYBitmap format is used, the depth must be
- * one, or a``BadMatch'' error results. The foreground pixel in the
- * Graphic Context @p gc defines the source for the one bits in the
- * image, and the background pixel defines the source for the zero
- * bits. For XYPixmap and ZPixmap, the depth must match the depth of
- * the drawable, or a ``BadMatch'' error results.
- *
- * If a problem occurs, the function returns @c 0. Otherwise, it
- * returns @c 1.
- * @ingroup xcb__image_t
- */
-xcb_image_t *
-xcb_image_shm_put (xcb_connection_t * conn,
- xcb_drawable_t draw,
- xcb_gcontext_t gc,
- xcb_image_t * image,
- xcb_shm_segment_info_t shminfo,
- int16_t src_x,
- int16_t src_y,
- int16_t dest_x,
- int16_t dest_y,
- uint16_t src_width,
- uint16_t src_height,
- uint8_t send_event);
-
-
-/**
- * Read image data into a shared memory xcb_image_t.
- * @param conn The connection to the X server.
- * @param draw The draw you get the image from.
- * @param image The image you want to combine with the rectangle.
- * @param shminfo A @ref xcb_shm_segment_info_t structure.
- * @param x The x coordinate, which are relative to the origin of the
- * drawable and define the upper-left corner of the rectangle.
- * @param y The y coordinate, which are relative to the origin of the
- * drawable and define the upper-left corner of the rectangle.
- * @param plane_mask The plane mask.
- * @return The subimage of @p draw defined by @p x, @p y, @p w, @p h.
- *
- * This function reads image data into a shared memory xcb_image_t where
- * @p conn is the connection to the X server, @p draw is the source
- * drawable, @p image is the destination xcb_image_t, @p x and @p y are offsets
- * within the drawable, and @p plane_mask defines which planes are to be
- * read.
- *
- * If a problem occurs, the function returns @c 0. It returns 1
- * otherwise.
- * @ingroup xcb__image_t
- */
-int xcb_image_shm_get (xcb_connection_t * conn,
- xcb_drawable_t draw,
- xcb_image_t * image,
- xcb_shm_segment_info_t shminfo,
- int16_t x,
- int16_t y,
- uint32_t plane_mask);
-
-
-/**
- * Create an image from user-supplied bitmap data.
- * @param data Image data in packed bitmap format.
- * @param width Width in bits of image data.
- * @param height Height in bits of image data.
- * @return The image constructed from the image data, or 0 on error.
- *
- * This function creates an image from the user-supplied
- * bitmap @p data. The bitmap data is assumed to be in
- * xbm format (i.e., 8-bit scanline unit, LSB-first, 8-bit pad).
- * @ingroup xcb__image_t
- */
-xcb_image_t *
-xcb_image_create_from_bitmap_data (uint8_t * data,
- uint32_t width,
- uint32_t height);
-
-/**
- * Create a pixmap from user-supplied bitmap data.
- * @param display The connection to the X server.
- * @param d The parent drawable for the pixmap.
- * @param data Image data in packed bitmap format.
- * @param width Width in bits of image data.
- * @param height Height in bits of image data.
- * @param depth Depth of the desired pixmap.
- * @param fg Pixel for one-bits of pixmaps with depth larger than one.
- * @param bg Pixel for zero-bits of pixmaps with depth larger than one.
- * @param gcp If this pointer is non-null, the GC created to
- * fill in the pixmap is stored here; it will have its foreground
- * and background set to the supplied value. Otherwise, the GC
- * will be freed.
- * @return The pixmap constructed from the image data, or 0 on error.
- *
- * This function creates a pixmap from the user-supplied
- * bitmap @p data. The bitmap data is assumed to be in
- * xbm format (i.e., 8-bit scanline unit, LSB-first, 8-bit pad).
- * If @p depth is greater than 1, the
- * bitmap will be expanded to a pixmap using the given
- * foreground and background pixels @p fg and @p bg.
- * @ingroup xcb__image_t
- */
-xcb_pixmap_t
-xcb_create_pixmap_from_bitmap_data (xcb_connection_t * display,
- xcb_drawable_t d,
- uint8_t * data,
- uint32_t width,
- uint32_t height,
- uint32_t depth,
- uint32_t fg,
- uint32_t bg,
- xcb_gcontext_t * gcp);
-
-
-/**
- * @}
- */
-
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif /* __XCB_IMAGE_H__ */
diff --git a/src/3rdparty/xcb/include/xcb/xcb_keysyms.h b/src/3rdparty/xcb/include/xcb/xcb_keysyms.h
deleted file mode 100644
index 9d34a50ad1..0000000000
--- a/src/3rdparty/xcb/include/xcb/xcb_keysyms.h
+++ /dev/null
@@ -1,71 +0,0 @@
-#ifndef __XCB_KEYSYMS_H__
-#define __XCB_KEYSYMS_H__
-
-#include <xcb/xcb.h>
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-typedef struct _XCBKeySymbols xcb_key_symbols_t;
-
-xcb_key_symbols_t *xcb_key_symbols_alloc (xcb_connection_t *c);
-
-void xcb_key_symbols_free (xcb_key_symbols_t *syms);
-
-xcb_keysym_t xcb_key_symbols_get_keysym (xcb_key_symbols_t *syms,
- xcb_keycode_t keycode,
- int col);
-
-/**
- * @brief Get the keycodes attached to a keysyms.
- * There can be several value, so what is returned is an array of keycode
- * terminated by XCB_NO_SYMBOL. You are responsible to free it.
- * Be aware that this function can be slow. It will convert all
- * combinations of all available keycodes to keysyms to find the ones that
- * match.
- * @param syms Key symbols.
- * @param keysym The keysym to look for.
- * @return A XCB_NO_SYMBOL terminated array of keycode, or NULL if nothing is found.
- */
-xcb_keycode_t * xcb_key_symbols_get_keycode(xcb_key_symbols_t *syms,
- xcb_keysym_t keysym);
-
-xcb_keysym_t xcb_key_press_lookup_keysym (xcb_key_symbols_t *syms,
- xcb_key_press_event_t *event,
- int col);
-
-xcb_keysym_t xcb_key_release_lookup_keysym (xcb_key_symbols_t *syms,
- xcb_key_release_event_t *event,
- int col);
-
-int xcb_refresh_keyboard_mapping (xcb_key_symbols_t *syms,
- xcb_mapping_notify_event_t *event);
-
-/* TODO: need XLookupString equivalent */
-
-/* Tests for classes of symbols */
-
-int xcb_is_keypad_key (xcb_keysym_t keysym);
-
-int xcb_is_private_keypad_key (xcb_keysym_t keysym);
-
-int xcb_is_cursor_key (xcb_keysym_t keysym);
-
-int xcb_is_pf_key (xcb_keysym_t keysym);
-
-int xcb_is_function_key (xcb_keysym_t keysym);
-
-int xcb_is_misc_function_key (xcb_keysym_t keysym);
-
-int xcb_is_modifier_key (xcb_keysym_t keysym);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif /* __XCB_KEYSYMS_H__ */
diff --git a/src/3rdparty/xcb/include/xcb/xcb_pixel.h b/src/3rdparty/xcb/include/xcb/xcb_pixel.h
deleted file mode 100644
index fcb22b4826..0000000000
--- a/src/3rdparty/xcb/include/xcb/xcb_pixel.h
+++ /dev/null
@@ -1,171 +0,0 @@
-#ifndef __XCB_PIXEL_H__
-#define __XCB_PIXEL_H__
-
-/* Copyright (C) 2007 Bart Massey
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Except as contained in this notice, the names of the authors or their
- * institutions shall not be used in advertising or otherwise to promote the
- * sale, use or other dealings in this Software without prior written
- * authorization from the authors.
- */
-
-#include <inttypes.h>
-#include <X11/Xfuncproto.h>
-#ifndef BUILD
-#include <xcb/xcb_bitops.h>
-#include <xcb/xcb_image.h>
-#endif
-
-/**
- * XCB Image fast pixel ops.
- *
- * Fast inline versions of xcb_image_get_pixel() and
- * xcb_image_put_pixel() for various common cases.
- * The naming convention is xcb_image_put_pixel_FUB()
- * where F is the format and is either XY for bitmaps
- * or Z for pixmaps, U is the bitmap unit size or pixmap
- * bits-per-pixel, and B is the endianness (if needed)
- * and is either M for most-significant-first or L for
- * least-significant-first. Note that no checking
- * is done on the arguments to these routines---caller beware.
- * Also note that the pixel type is chosen to be appropriate
- * to the unit; bitmaps use int and pixmaps use the appropriate
- * size of unsigned.
- * @ingroup xcb__image_t
- */
-
-_X_INLINE static void
-xcb_image_put_pixel_XY32M (xcb_image_t *image,
- uint32_t x,
- uint32_t y,
- int pixel)
-{
- uint32_t unit = (x >> 3) & ~xcb_mask(2);
- uint32_t byte = xcb_mask(2) - ((x >> 3) & xcb_mask(2));
- uint32_t bit = xcb_mask(3) - (x & xcb_mask(3));
- uint8_t m = 1 << bit;
- uint8_t p = pixel << bit;
- uint8_t * bp = image->data + (y * image->stride) + (unit | byte);
- *bp = (*bp & ~m) | p;
-}
-
-_X_INLINE static void
-xcb_image_put_pixel_XY32L (xcb_image_t *image,
- uint32_t x,
- uint32_t y,
- int pixel)
-{
- uint32_t bit = x & xcb_mask(3);
- uint8_t m = 1 << bit;
- uint8_t p = pixel << bit;
- uint8_t * bp = image->data + (y * image->stride) + (x >> 3);
- *bp = (*bp & ~m) | p;
-}
-
-_X_INLINE static int
-xcb_image_get_pixel_XY32M (xcb_image_t *image,
- uint32_t x,
- uint32_t y)
-{
- uint32_t unit = (x >> 3) & ~xcb_mask(2);
- uint32_t byte = xcb_mask(2) - ((x >> 3) & xcb_mask(2));
- uint32_t bit = xcb_mask(3) - (x & xcb_mask(3));
- uint8_t * bp = image->data + (y * image->stride) + (unit | byte);
- return (*bp >> bit) & 1;
-}
-
-_X_INLINE static int
-xcb_image_get_pixel_XY32L (xcb_image_t *image,
- uint32_t x,
- uint32_t y)
-{
- uint32_t bit = x & xcb_mask(3);
- uint8_t * bp = image->data + (y * image->stride) + (x >> 3);
- return (*bp >> bit) & 1;
-}
-
-_X_INLINE static void
-xcb_image_put_pixel_Z8 (xcb_image_t *image,
- uint32_t x,
- uint32_t y,
- uint8_t pixel)
-{
- image->data[x + y * image->stride] = pixel;
-}
-
-_X_INLINE static uint8_t
-xcb_image_get_pixel_Z8 (xcb_image_t *image,
- uint32_t x,
- uint32_t y)
-{
- return image->data[x + y * image->stride];
-}
-
-_X_INLINE static void
-xcb_image_put_pixel_Z32M (xcb_image_t *image,
- uint32_t x,
- uint32_t y,
- uint32_t pixel)
-{
- uint8_t * row = image->data + (y * image->stride);
- row[x << 2] = pixel >> 24;
- row[(x << 2) + 1] = pixel >> 16;
- row[(x << 2) + 2] = pixel >> 8;
- row[(x << 2) + 3] = pixel;
-}
-
-_X_INLINE static void
-xcb_image_put_pixel_Z32L (xcb_image_t *image,
- uint32_t x,
- uint32_t y,
- uint32_t pixel)
-{
- uint8_t * row = image->data + (y * image->stride);
- row[x << 2] = pixel;
- row[(x << 2) + 1] = pixel >> 8;
- row[(x << 2) + 2] = pixel >> 16;
- row[(x << 2) + 3] = pixel >> 24;
-}
-
-_X_INLINE static uint32_t
-xcb_image_get_pixel_Z32M (xcb_image_t *image,
- uint32_t x,
- uint32_t y)
-{
- uint8_t * row = image->data + (y * image->stride);
- uint32_t pixel = row[x << 2] << 24;
- pixel |= row[(x << 2) + 1] << 16;
- pixel |= row[(x << 2) + 2] << 8;
- return pixel | row[(x << 2) + 3];
-}
-
-_X_INLINE static uint32_t
-xcb_image_get_pixel_Z32L (xcb_image_t *image,
- uint32_t x,
- uint32_t y)
-{
- uint8_t * row = image->data + (y * image->stride);
- uint32_t pixel = row[x << 2];
- pixel |= row[(x << 2) + 1] << 8;
- pixel |= row[(x << 2) + 2] << 16;
- return pixel | row[(x << 2) + 3] << 24;
-}
-
-#endif /* __XCB_PIXEL_H__ */
diff --git a/src/3rdparty/xcb/include/xcb/xcb_renderutil.h b/src/3rdparty/xcb/include/xcb/xcb_renderutil.h
deleted file mode 100644
index 77c5b7f054..0000000000
--- a/src/3rdparty/xcb/include/xcb/xcb_renderutil.h
+++ /dev/null
@@ -1,150 +0,0 @@
-/* Copyright © 2006 Jamey Sharp.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Except as contained in this notice, the names of the authors or their
- * institutions shall not be used in advertising or otherwise to promote the
- * sale, use or other dealings in this Software without prior written
- * authorization from the authors.
- */
-
-#ifndef XCB_RENDERUTIL
-#define XCB_RENDERUTIL
-#include <xcb/render.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef enum xcb_pict_format_t {
- XCB_PICT_FORMAT_ID = (1 << 0),
- XCB_PICT_FORMAT_TYPE = (1 << 1),
- XCB_PICT_FORMAT_DEPTH = (1 << 2),
- XCB_PICT_FORMAT_RED = (1 << 3),
- XCB_PICT_FORMAT_RED_MASK = (1 << 4),
- XCB_PICT_FORMAT_GREEN = (1 << 5),
- XCB_PICT_FORMAT_GREEN_MASK = (1 << 6),
- XCB_PICT_FORMAT_BLUE = (1 << 7),
- XCB_PICT_FORMAT_BLUE_MASK = (1 << 8),
- XCB_PICT_FORMAT_ALPHA = (1 << 9),
- XCB_PICT_FORMAT_ALPHA_MASK = (1 << 10),
- XCB_PICT_FORMAT_COLORMAP = (1 << 11)
-} xcb_pict_format_t;
-
-typedef enum xcb_pict_standard_t {
- XCB_PICT_STANDARD_ARGB_32,
- XCB_PICT_STANDARD_RGB_24,
- XCB_PICT_STANDARD_A_8,
- XCB_PICT_STANDARD_A_4,
- XCB_PICT_STANDARD_A_1
-} xcb_pict_standard_t;
-
-
-xcb_render_pictvisual_t *
-xcb_render_util_find_visual_format (const xcb_render_query_pict_formats_reply_t *formats,
- const xcb_visualid_t visual);
-
-xcb_render_pictforminfo_t *
-xcb_render_util_find_format (const xcb_render_query_pict_formats_reply_t *formats,
- unsigned long mask,
- const xcb_render_pictforminfo_t *ptemplate,
- int count);
-
-xcb_render_pictforminfo_t *
-xcb_render_util_find_standard_format (const xcb_render_query_pict_formats_reply_t *formats,
- xcb_pict_standard_t format);
-
-const xcb_render_query_version_reply_t *
-xcb_render_util_query_version (xcb_connection_t *c);
-
-const xcb_render_query_pict_formats_reply_t *
-xcb_render_util_query_formats (xcb_connection_t *c);
-
-int
-xcb_render_util_disconnect (xcb_connection_t *c);
-
-/* wrappers for xcb_render_composite_glyphs_8/16/32 */
-
-typedef struct xcb_render_util_composite_text_stream_t xcb_render_util_composite_text_stream_t;
-
-xcb_render_util_composite_text_stream_t *
-xcb_render_util_composite_text_stream (
- xcb_render_glyphset_t initial_glyphset,
- uint32_t total_glyphs,
- uint32_t total_glyphset_changes );
-
-void
-xcb_render_util_glyphs_8 (
- xcb_render_util_composite_text_stream_t *stream,
- int16_t dx,
- int16_t dy,
- uint32_t count,
- const uint8_t *glyphs );
-
-void
-xcb_render_util_glyphs_16 (
- xcb_render_util_composite_text_stream_t *stream,
- int16_t dx,
- int16_t dy,
- uint32_t count,
- const uint16_t *glyphs );
-
-void
-xcb_render_util_glyphs_32 (
- xcb_render_util_composite_text_stream_t *stream,
- int16_t dx,
- int16_t dy,
- uint32_t count,
- const uint32_t *glyphs );
-
-void
-xcb_render_util_change_glyphset (
- xcb_render_util_composite_text_stream_t *stream,
- xcb_render_glyphset_t glyphset );
-
-xcb_void_cookie_t
-xcb_render_util_composite_text (
- xcb_connection_t *xc,
- uint8_t op,
- xcb_render_picture_t src,
- xcb_render_picture_t dst,
- xcb_render_pictformat_t mask_format,
- int16_t src_x,
- int16_t src_y,
- xcb_render_util_composite_text_stream_t *stream );
-
-xcb_void_cookie_t
-xcb_render_util_composite_text_checked (
- xcb_connection_t *xc,
- uint8_t op,
- xcb_render_picture_t src,
- xcb_render_picture_t dst,
- xcb_render_pictformat_t mask_format,
- int16_t src_x,
- int16_t src_y,
- xcb_render_util_composite_text_stream_t *stream );
-
-void
-xcb_render_util_composite_text_free (
- xcb_render_util_composite_text_stream_t *stream );
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* XCB_RENDERUTIL */
diff --git a/src/3rdparty/xcb/include/xcb/xcb_util.h b/src/3rdparty/xcb/include/xcb/xcb_util.h
deleted file mode 100644
index 0f06f1b06e..0000000000
--- a/src/3rdparty/xcb/include/xcb/xcb_util.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#ifndef __XCB_UTIL_H__
-#define __XCB_UTIL_H__
-
-#include <xcb/xcb_atom.h>
-#include <xcb/xcb_aux.h>
-#include <xcb/xcb_event.h>
-
-#endif /* __XCB_UTIL_H__ */
diff --git a/src/3rdparty/xcb/include/xcb/xfixes.h b/src/3rdparty/xcb/include/xcb/xfixes.h
deleted file mode 100644
index b67aa85135..0000000000
--- a/src/3rdparty/xcb/include/xcb/xfixes.h
+++ /dev/null
@@ -1,2816 +0,0 @@
-/*
- * This file generated automatically from xfixes.xml by c_client.py.
- * Edit at your peril.
- */
-
-/**
- * @defgroup XCB_XFixes_API XCB XFixes API
- * @brief XFixes XCB Protocol Implementation.
- * @{
- **/
-
-#ifndef __XFIXES_H
-#define __XFIXES_H
-
-#include "xcb.h"
-#include "xproto.h"
-#include "render.h"
-#include "shape.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define XCB_XFIXES_MAJOR_VERSION 4
-#define XCB_XFIXES_MINOR_VERSION 0
-
-extern xcb_extension_t xcb_xfixes_id;
-
-/**
- * @brief xcb_xfixes_query_version_cookie_t
- **/
-typedef struct xcb_xfixes_query_version_cookie_t {
- unsigned int sequence; /**< */
-} xcb_xfixes_query_version_cookie_t;
-
-/** Opcode for xcb_xfixes_query_version. */
-#define XCB_XFIXES_QUERY_VERSION 0
-
-/**
- * @brief xcb_xfixes_query_version_request_t
- **/
-typedef struct xcb_xfixes_query_version_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- uint32_t client_major_version; /**< */
- uint32_t client_minor_version; /**< */
-} xcb_xfixes_query_version_request_t;
-
-/**
- * @brief xcb_xfixes_query_version_reply_t
- **/
-typedef struct xcb_xfixes_query_version_reply_t {
- uint8_t response_type; /**< */
- uint8_t pad0; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- uint32_t major_version; /**< */
- uint32_t minor_version; /**< */
- uint8_t pad1[16]; /**< */
-} xcb_xfixes_query_version_reply_t;
-
-typedef enum xcb_xfixes_save_set_mode_t {
- XCB_XFIXES_SAVE_SET_MODE_INSERT,
- XCB_XFIXES_SAVE_SET_MODE_DELETE
-} xcb_xfixes_save_set_mode_t;
-
-typedef enum xcb_xfixes_save_set_target_t {
- XCB_XFIXES_SAVE_SET_TARGET_NEAREST,
- XCB_XFIXES_SAVE_SET_TARGET_ROOT
-} xcb_xfixes_save_set_target_t;
-
-typedef enum xcb_xfixes_save_set_mapping_t {
- XCB_XFIXES_SAVE_SET_MAPPING_MAP,
- XCB_XFIXES_SAVE_SET_MAPPING_UNMAP
-} xcb_xfixes_save_set_mapping_t;
-
-/** Opcode for xcb_xfixes_change_save_set. */
-#define XCB_XFIXES_CHANGE_SAVE_SET 1
-
-/**
- * @brief xcb_xfixes_change_save_set_request_t
- **/
-typedef struct xcb_xfixes_change_save_set_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- uint8_t mode; /**< */
- uint8_t target; /**< */
- uint8_t map; /**< */
- uint8_t pad0; /**< */
- xcb_window_t window; /**< */
-} xcb_xfixes_change_save_set_request_t;
-
-typedef enum xcb_xfixes_selection_event_t {
- XCB_XFIXES_SELECTION_EVENT_SET_SELECTION_OWNER,
- XCB_XFIXES_SELECTION_EVENT_SELECTION_WINDOW_DESTROY,
- XCB_XFIXES_SELECTION_EVENT_SELECTION_CLIENT_CLOSE
-} xcb_xfixes_selection_event_t;
-
-typedef enum xcb_xfixes_selection_event_mask_t {
- XCB_XFIXES_SELECTION_EVENT_MASK_SET_SELECTION_OWNER = 1,
- XCB_XFIXES_SELECTION_EVENT_MASK_SELECTION_WINDOW_DESTROY = 2,
- XCB_XFIXES_SELECTION_EVENT_MASK_SELECTION_CLIENT_CLOSE = 4
-} xcb_xfixes_selection_event_mask_t;
-
-/** Opcode for xcb_xfixes_selection_notify. */
-#define XCB_XFIXES_SELECTION_NOTIFY 0
-
-/**
- * @brief xcb_xfixes_selection_notify_event_t
- **/
-typedef struct xcb_xfixes_selection_notify_event_t {
- uint8_t response_type; /**< */
- uint8_t subtype; /**< */
- uint16_t sequence; /**< */
- xcb_window_t window; /**< */
- xcb_window_t owner; /**< */
- xcb_atom_t selection; /**< */
- xcb_timestamp_t timestamp; /**< */
- xcb_timestamp_t selection_timestamp; /**< */
- uint8_t pad0[8]; /**< */
-} xcb_xfixes_selection_notify_event_t;
-
-/** Opcode for xcb_xfixes_select_selection_input. */
-#define XCB_XFIXES_SELECT_SELECTION_INPUT 2
-
-/**
- * @brief xcb_xfixes_select_selection_input_request_t
- **/
-typedef struct xcb_xfixes_select_selection_input_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_window_t window; /**< */
- xcb_atom_t selection; /**< */
- uint32_t event_mask; /**< */
-} xcb_xfixes_select_selection_input_request_t;
-
-typedef enum xcb_xfixes_cursor_notify_t {
- XCB_XFIXES_CURSOR_NOTIFY_DISPLAY_CURSOR
-} xcb_xfixes_cursor_notify_t;
-
-typedef enum xcb_xfixes_cursor_notify_mask_t {
- XCB_XFIXES_CURSOR_NOTIFY_MASK_DISPLAY_CURSOR = 1
-} xcb_xfixes_cursor_notify_mask_t;
-
-/** Opcode for xcb_xfixes_cursor_notify. */
-#define XCB_XFIXES_CURSOR_NOTIFY 1
-
-/**
- * @brief xcb_xfixes_cursor_notify_event_t
- **/
-typedef struct xcb_xfixes_cursor_notify_event_t {
- uint8_t response_type; /**< */
- uint8_t subtype; /**< */
- uint16_t sequence; /**< */
- xcb_window_t window; /**< */
- uint32_t cursor_serial; /**< */
- xcb_timestamp_t timestamp; /**< */
- xcb_atom_t name; /**< */
- uint8_t pad0[12]; /**< */
-} xcb_xfixes_cursor_notify_event_t;
-
-/** Opcode for xcb_xfixes_select_cursor_input. */
-#define XCB_XFIXES_SELECT_CURSOR_INPUT 3
-
-/**
- * @brief xcb_xfixes_select_cursor_input_request_t
- **/
-typedef struct xcb_xfixes_select_cursor_input_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_window_t window; /**< */
- uint32_t event_mask; /**< */
-} xcb_xfixes_select_cursor_input_request_t;
-
-/**
- * @brief xcb_xfixes_get_cursor_image_cookie_t
- **/
-typedef struct xcb_xfixes_get_cursor_image_cookie_t {
- unsigned int sequence; /**< */
-} xcb_xfixes_get_cursor_image_cookie_t;
-
-/** Opcode for xcb_xfixes_get_cursor_image. */
-#define XCB_XFIXES_GET_CURSOR_IMAGE 4
-
-/**
- * @brief xcb_xfixes_get_cursor_image_request_t
- **/
-typedef struct xcb_xfixes_get_cursor_image_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
-} xcb_xfixes_get_cursor_image_request_t;
-
-/**
- * @brief xcb_xfixes_get_cursor_image_reply_t
- **/
-typedef struct xcb_xfixes_get_cursor_image_reply_t {
- uint8_t response_type; /**< */
- uint8_t pad0; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- int16_t x; /**< */
- int16_t y; /**< */
- uint16_t width; /**< */
- uint16_t height; /**< */
- uint16_t xhot; /**< */
- uint16_t yhot; /**< */
- uint32_t cursor_serial; /**< */
- uint8_t pad1[8]; /**< */
-} xcb_xfixes_get_cursor_image_reply_t;
-
-typedef uint32_t xcb_xfixes_region_t;
-
-/**
- * @brief xcb_xfixes_region_iterator_t
- **/
-typedef struct xcb_xfixes_region_iterator_t {
- xcb_xfixes_region_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xfixes_region_iterator_t;
-
-/** Opcode for xcb_xfixes_bad_region. */
-#define XCB_XFIXES_BAD_REGION 0
-
-/**
- * @brief xcb_xfixes_bad_region_error_t
- **/
-typedef struct xcb_xfixes_bad_region_error_t {
- uint8_t response_type; /**< */
- uint8_t error_code; /**< */
- uint16_t sequence; /**< */
-} xcb_xfixes_bad_region_error_t;
-
-typedef enum xcb_xfixes_region_enum_t {
- XCB_XFIXES_REGION_NONE
-} xcb_xfixes_region_enum_t;
-
-/** Opcode for xcb_xfixes_create_region. */
-#define XCB_XFIXES_CREATE_REGION 5
-
-/**
- * @brief xcb_xfixes_create_region_request_t
- **/
-typedef struct xcb_xfixes_create_region_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_xfixes_region_t region; /**< */
-} xcb_xfixes_create_region_request_t;
-
-/** Opcode for xcb_xfixes_create_region_from_bitmap. */
-#define XCB_XFIXES_CREATE_REGION_FROM_BITMAP 6
-
-/**
- * @brief xcb_xfixes_create_region_from_bitmap_request_t
- **/
-typedef struct xcb_xfixes_create_region_from_bitmap_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_xfixes_region_t region; /**< */
- xcb_pixmap_t bitmap; /**< */
-} xcb_xfixes_create_region_from_bitmap_request_t;
-
-/** Opcode for xcb_xfixes_create_region_from_window. */
-#define XCB_XFIXES_CREATE_REGION_FROM_WINDOW 7
-
-/**
- * @brief xcb_xfixes_create_region_from_window_request_t
- **/
-typedef struct xcb_xfixes_create_region_from_window_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_xfixes_region_t region; /**< */
- xcb_window_t window; /**< */
- xcb_shape_kind_t kind; /**< */
- uint8_t pad0[3]; /**< */
-} xcb_xfixes_create_region_from_window_request_t;
-
-/** Opcode for xcb_xfixes_create_region_from_gc. */
-#define XCB_XFIXES_CREATE_REGION_FROM_GC 8
-
-/**
- * @brief xcb_xfixes_create_region_from_gc_request_t
- **/
-typedef struct xcb_xfixes_create_region_from_gc_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_xfixes_region_t region; /**< */
- xcb_gcontext_t gc; /**< */
-} xcb_xfixes_create_region_from_gc_request_t;
-
-/** Opcode for xcb_xfixes_create_region_from_picture. */
-#define XCB_XFIXES_CREATE_REGION_FROM_PICTURE 9
-
-/**
- * @brief xcb_xfixes_create_region_from_picture_request_t
- **/
-typedef struct xcb_xfixes_create_region_from_picture_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_xfixes_region_t region; /**< */
- xcb_render_picture_t picture; /**< */
-} xcb_xfixes_create_region_from_picture_request_t;
-
-/** Opcode for xcb_xfixes_destroy_region. */
-#define XCB_XFIXES_DESTROY_REGION 10
-
-/**
- * @brief xcb_xfixes_destroy_region_request_t
- **/
-typedef struct xcb_xfixes_destroy_region_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_xfixes_region_t region; /**< */
-} xcb_xfixes_destroy_region_request_t;
-
-/** Opcode for xcb_xfixes_set_region. */
-#define XCB_XFIXES_SET_REGION 11
-
-/**
- * @brief xcb_xfixes_set_region_request_t
- **/
-typedef struct xcb_xfixes_set_region_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_xfixes_region_t region; /**< */
-} xcb_xfixes_set_region_request_t;
-
-/** Opcode for xcb_xfixes_copy_region. */
-#define XCB_XFIXES_COPY_REGION 12
-
-/**
- * @brief xcb_xfixes_copy_region_request_t
- **/
-typedef struct xcb_xfixes_copy_region_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_xfixes_region_t source; /**< */
- xcb_xfixes_region_t destination; /**< */
-} xcb_xfixes_copy_region_request_t;
-
-/** Opcode for xcb_xfixes_union_region. */
-#define XCB_XFIXES_UNION_REGION 13
-
-/**
- * @brief xcb_xfixes_union_region_request_t
- **/
-typedef struct xcb_xfixes_union_region_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_xfixes_region_t source1; /**< */
- xcb_xfixes_region_t source2; /**< */
- xcb_xfixes_region_t destination; /**< */
-} xcb_xfixes_union_region_request_t;
-
-/** Opcode for xcb_xfixes_intersect_region. */
-#define XCB_XFIXES_INTERSECT_REGION 14
-
-/**
- * @brief xcb_xfixes_intersect_region_request_t
- **/
-typedef struct xcb_xfixes_intersect_region_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_xfixes_region_t source1; /**< */
- xcb_xfixes_region_t source2; /**< */
- xcb_xfixes_region_t destination; /**< */
-} xcb_xfixes_intersect_region_request_t;
-
-/** Opcode for xcb_xfixes_subtract_region. */
-#define XCB_XFIXES_SUBTRACT_REGION 15
-
-/**
- * @brief xcb_xfixes_subtract_region_request_t
- **/
-typedef struct xcb_xfixes_subtract_region_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_xfixes_region_t source1; /**< */
- xcb_xfixes_region_t source2; /**< */
- xcb_xfixes_region_t destination; /**< */
-} xcb_xfixes_subtract_region_request_t;
-
-/** Opcode for xcb_xfixes_invert_region. */
-#define XCB_XFIXES_INVERT_REGION 16
-
-/**
- * @brief xcb_xfixes_invert_region_request_t
- **/
-typedef struct xcb_xfixes_invert_region_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_xfixes_region_t source; /**< */
- xcb_rectangle_t bounds; /**< */
- xcb_xfixes_region_t destination; /**< */
-} xcb_xfixes_invert_region_request_t;
-
-/** Opcode for xcb_xfixes_translate_region. */
-#define XCB_XFIXES_TRANSLATE_REGION 17
-
-/**
- * @brief xcb_xfixes_translate_region_request_t
- **/
-typedef struct xcb_xfixes_translate_region_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_xfixes_region_t region; /**< */
- int16_t dx; /**< */
- int16_t dy; /**< */
-} xcb_xfixes_translate_region_request_t;
-
-/** Opcode for xcb_xfixes_region_extents. */
-#define XCB_XFIXES_REGION_EXTENTS 18
-
-/**
- * @brief xcb_xfixes_region_extents_request_t
- **/
-typedef struct xcb_xfixes_region_extents_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_xfixes_region_t source; /**< */
- xcb_xfixes_region_t destination; /**< */
-} xcb_xfixes_region_extents_request_t;
-
-/**
- * @brief xcb_xfixes_fetch_region_cookie_t
- **/
-typedef struct xcb_xfixes_fetch_region_cookie_t {
- unsigned int sequence; /**< */
-} xcb_xfixes_fetch_region_cookie_t;
-
-/** Opcode for xcb_xfixes_fetch_region. */
-#define XCB_XFIXES_FETCH_REGION 19
-
-/**
- * @brief xcb_xfixes_fetch_region_request_t
- **/
-typedef struct xcb_xfixes_fetch_region_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_xfixes_region_t region; /**< */
-} xcb_xfixes_fetch_region_request_t;
-
-/**
- * @brief xcb_xfixes_fetch_region_reply_t
- **/
-typedef struct xcb_xfixes_fetch_region_reply_t {
- uint8_t response_type; /**< */
- uint8_t pad0; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- xcb_rectangle_t extents; /**< */
- uint8_t pad1[16]; /**< */
-} xcb_xfixes_fetch_region_reply_t;
-
-/** Opcode for xcb_xfixes_set_gc_clip_region. */
-#define XCB_XFIXES_SET_GC_CLIP_REGION 20
-
-/**
- * @brief xcb_xfixes_set_gc_clip_region_request_t
- **/
-typedef struct xcb_xfixes_set_gc_clip_region_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_gcontext_t gc; /**< */
- xcb_xfixes_region_t region; /**< */
- int16_t x_origin; /**< */
- int16_t y_origin; /**< */
-} xcb_xfixes_set_gc_clip_region_request_t;
-
-/** Opcode for xcb_xfixes_set_window_shape_region. */
-#define XCB_XFIXES_SET_WINDOW_SHAPE_REGION 21
-
-/**
- * @brief xcb_xfixes_set_window_shape_region_request_t
- **/
-typedef struct xcb_xfixes_set_window_shape_region_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_window_t dest; /**< */
- xcb_shape_kind_t dest_kind; /**< */
- uint8_t pad0[3]; /**< */
- int16_t x_offset; /**< */
- int16_t y_offset; /**< */
- xcb_xfixes_region_t region; /**< */
-} xcb_xfixes_set_window_shape_region_request_t;
-
-/** Opcode for xcb_xfixes_set_picture_clip_region. */
-#define XCB_XFIXES_SET_PICTURE_CLIP_REGION 22
-
-/**
- * @brief xcb_xfixes_set_picture_clip_region_request_t
- **/
-typedef struct xcb_xfixes_set_picture_clip_region_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_render_picture_t picture; /**< */
- xcb_xfixes_region_t region; /**< */
- int16_t x_origin; /**< */
- int16_t y_origin; /**< */
-} xcb_xfixes_set_picture_clip_region_request_t;
-
-/** Opcode for xcb_xfixes_set_cursor_name. */
-#define XCB_XFIXES_SET_CURSOR_NAME 23
-
-/**
- * @brief xcb_xfixes_set_cursor_name_request_t
- **/
-typedef struct xcb_xfixes_set_cursor_name_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_cursor_t cursor; /**< */
- uint16_t nbytes; /**< */
- uint8_t pad0[2]; /**< */
-} xcb_xfixes_set_cursor_name_request_t;
-
-/**
- * @brief xcb_xfixes_get_cursor_name_cookie_t
- **/
-typedef struct xcb_xfixes_get_cursor_name_cookie_t {
- unsigned int sequence; /**< */
-} xcb_xfixes_get_cursor_name_cookie_t;
-
-/** Opcode for xcb_xfixes_get_cursor_name. */
-#define XCB_XFIXES_GET_CURSOR_NAME 24
-
-/**
- * @brief xcb_xfixes_get_cursor_name_request_t
- **/
-typedef struct xcb_xfixes_get_cursor_name_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_cursor_t cursor; /**< */
-} xcb_xfixes_get_cursor_name_request_t;
-
-/**
- * @brief xcb_xfixes_get_cursor_name_reply_t
- **/
-typedef struct xcb_xfixes_get_cursor_name_reply_t {
- uint8_t response_type; /**< */
- uint8_t pad0; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- xcb_atom_t atom; /**< */
- uint16_t nbytes; /**< */
- uint8_t pad1[18]; /**< */
-} xcb_xfixes_get_cursor_name_reply_t;
-
-/**
- * @brief xcb_xfixes_get_cursor_image_and_name_cookie_t
- **/
-typedef struct xcb_xfixes_get_cursor_image_and_name_cookie_t {
- unsigned int sequence; /**< */
-} xcb_xfixes_get_cursor_image_and_name_cookie_t;
-
-/** Opcode for xcb_xfixes_get_cursor_image_and_name. */
-#define XCB_XFIXES_GET_CURSOR_IMAGE_AND_NAME 25
-
-/**
- * @brief xcb_xfixes_get_cursor_image_and_name_request_t
- **/
-typedef struct xcb_xfixes_get_cursor_image_and_name_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
-} xcb_xfixes_get_cursor_image_and_name_request_t;
-
-/**
- * @brief xcb_xfixes_get_cursor_image_and_name_reply_t
- **/
-typedef struct xcb_xfixes_get_cursor_image_and_name_reply_t {
- uint8_t response_type; /**< */
- uint8_t pad0; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- int16_t x; /**< */
- int16_t y; /**< */
- uint16_t width; /**< */
- uint16_t height; /**< */
- uint16_t xhot; /**< */
- uint16_t yhot; /**< */
- uint32_t cursor_serial; /**< */
- xcb_atom_t cursor_atom; /**< */
- uint16_t nbytes; /**< */
- uint8_t pad1[2]; /**< */
-} xcb_xfixes_get_cursor_image_and_name_reply_t;
-
-/** Opcode for xcb_xfixes_change_cursor. */
-#define XCB_XFIXES_CHANGE_CURSOR 26
-
-/**
- * @brief xcb_xfixes_change_cursor_request_t
- **/
-typedef struct xcb_xfixes_change_cursor_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_cursor_t source; /**< */
- xcb_cursor_t destination; /**< */
-} xcb_xfixes_change_cursor_request_t;
-
-/** Opcode for xcb_xfixes_change_cursor_by_name. */
-#define XCB_XFIXES_CHANGE_CURSOR_BY_NAME 27
-
-/**
- * @brief xcb_xfixes_change_cursor_by_name_request_t
- **/
-typedef struct xcb_xfixes_change_cursor_by_name_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_cursor_t src; /**< */
- uint16_t nbytes; /**< */
- uint8_t pad0[2]; /**< */
-} xcb_xfixes_change_cursor_by_name_request_t;
-
-/** Opcode for xcb_xfixes_expand_region. */
-#define XCB_XFIXES_EXPAND_REGION 28
-
-/**
- * @brief xcb_xfixes_expand_region_request_t
- **/
-typedef struct xcb_xfixes_expand_region_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_xfixes_region_t source; /**< */
- xcb_xfixes_region_t destination; /**< */
- uint16_t left; /**< */
- uint16_t right; /**< */
- uint16_t top; /**< */
- uint16_t bottom; /**< */
-} xcb_xfixes_expand_region_request_t;
-
-/** Opcode for xcb_xfixes_hide_cursor. */
-#define XCB_XFIXES_HIDE_CURSOR 29
-
-/**
- * @brief xcb_xfixes_hide_cursor_request_t
- **/
-typedef struct xcb_xfixes_hide_cursor_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_window_t window; /**< */
-} xcb_xfixes_hide_cursor_request_t;
-
-/** Opcode for xcb_xfixes_show_cursor. */
-#define XCB_XFIXES_SHOW_CURSOR 30
-
-/**
- * @brief xcb_xfixes_show_cursor_request_t
- **/
-typedef struct xcb_xfixes_show_cursor_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_window_t window; /**< */
-} xcb_xfixes_show_cursor_request_t;
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_xfixes_query_version_cookie_t xcb_xfixes_query_version
- **
- ** @param xcb_connection_t *c
- ** @param uint32_t client_major_version
- ** @param uint32_t client_minor_version
- ** @returns xcb_xfixes_query_version_cookie_t
- **
- *****************************************************************************/
-
-xcb_xfixes_query_version_cookie_t
-xcb_xfixes_query_version (xcb_connection_t *c /**< */,
- uint32_t client_major_version /**< */,
- uint32_t client_minor_version /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_xfixes_query_version_cookie_t xcb_xfixes_query_version_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param uint32_t client_major_version
- ** @param uint32_t client_minor_version
- ** @returns xcb_xfixes_query_version_cookie_t
- **
- *****************************************************************************/
-
-xcb_xfixes_query_version_cookie_t
-xcb_xfixes_query_version_unchecked (xcb_connection_t *c /**< */,
- uint32_t client_major_version /**< */,
- uint32_t client_minor_version /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_xfixes_query_version_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_xfixes_query_version_reply_t * xcb_xfixes_query_version_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_query_version_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xfixes_query_version_reply_t *
- **
- *****************************************************************************/
-
-xcb_xfixes_query_version_reply_t *
-xcb_xfixes_query_version_reply (xcb_connection_t *c /**< */,
- xcb_xfixes_query_version_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_change_save_set_checked
- **
- ** @param xcb_connection_t *c
- ** @param uint8_t mode
- ** @param uint8_t target
- ** @param uint8_t map
- ** @param xcb_window_t window
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_change_save_set_checked (xcb_connection_t *c /**< */,
- uint8_t mode /**< */,
- uint8_t target /**< */,
- uint8_t map /**< */,
- xcb_window_t window /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_change_save_set
- **
- ** @param xcb_connection_t *c
- ** @param uint8_t mode
- ** @param uint8_t target
- ** @param uint8_t map
- ** @param xcb_window_t window
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_change_save_set (xcb_connection_t *c /**< */,
- uint8_t mode /**< */,
- uint8_t target /**< */,
- uint8_t map /**< */,
- xcb_window_t window /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_select_selection_input_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @param xcb_atom_t selection
- ** @param uint32_t event_mask
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_select_selection_input_checked (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */,
- xcb_atom_t selection /**< */,
- uint32_t event_mask /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_select_selection_input
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @param xcb_atom_t selection
- ** @param uint32_t event_mask
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_select_selection_input (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */,
- xcb_atom_t selection /**< */,
- uint32_t event_mask /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_select_cursor_input_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @param uint32_t event_mask
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_select_cursor_input_checked (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */,
- uint32_t event_mask /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_select_cursor_input
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @param uint32_t event_mask
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_select_cursor_input (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */,
- uint32_t event_mask /**< */);
-
-int
-xcb_xfixes_get_cursor_image_sizeof (const void *_buffer /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_xfixes_get_cursor_image_cookie_t xcb_xfixes_get_cursor_image
- **
- ** @param xcb_connection_t *c
- ** @returns xcb_xfixes_get_cursor_image_cookie_t
- **
- *****************************************************************************/
-
-xcb_xfixes_get_cursor_image_cookie_t
-xcb_xfixes_get_cursor_image (xcb_connection_t *c /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_xfixes_get_cursor_image_cookie_t xcb_xfixes_get_cursor_image_unchecked
- **
- ** @param xcb_connection_t *c
- ** @returns xcb_xfixes_get_cursor_image_cookie_t
- **
- *****************************************************************************/
-
-xcb_xfixes_get_cursor_image_cookie_t
-xcb_xfixes_get_cursor_image_unchecked (xcb_connection_t *c /**< */);
-
-
-/*****************************************************************************
- **
- ** uint32_t * xcb_xfixes_get_cursor_image_cursor_image
- **
- ** @param const xcb_xfixes_get_cursor_image_reply_t *R
- ** @returns uint32_t *
- **
- *****************************************************************************/
-
-uint32_t *
-xcb_xfixes_get_cursor_image_cursor_image (const xcb_xfixes_get_cursor_image_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xfixes_get_cursor_image_cursor_image_length
- **
- ** @param const xcb_xfixes_get_cursor_image_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xfixes_get_cursor_image_cursor_image_length (const xcb_xfixes_get_cursor_image_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xfixes_get_cursor_image_cursor_image_end
- **
- ** @param const xcb_xfixes_get_cursor_image_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xfixes_get_cursor_image_cursor_image_end (const xcb_xfixes_get_cursor_image_reply_t *R /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_xfixes_get_cursor_image_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_xfixes_get_cursor_image_reply_t * xcb_xfixes_get_cursor_image_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_get_cursor_image_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xfixes_get_cursor_image_reply_t *
- **
- *****************************************************************************/
-
-xcb_xfixes_get_cursor_image_reply_t *
-xcb_xfixes_get_cursor_image_reply (xcb_connection_t *c /**< */,
- xcb_xfixes_get_cursor_image_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xfixes_region_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xfixes_region_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xfixes_region_next
- **
- ** @param xcb_xfixes_region_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xfixes_region_next (xcb_xfixes_region_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xfixes_region_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xfixes_region_end
- **
- ** @param xcb_xfixes_region_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xfixes_region_end (xcb_xfixes_region_iterator_t i /**< */);
-
-int
-xcb_xfixes_create_region_sizeof (const void *_buffer /**< */,
- uint32_t rectangles_len /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_create_region_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t region
- ** @param uint32_t rectangles_len
- ** @param const xcb_rectangle_t *rectangles
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_create_region_checked (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t region /**< */,
- uint32_t rectangles_len /**< */,
- const xcb_rectangle_t *rectangles /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_create_region
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t region
- ** @param uint32_t rectangles_len
- ** @param const xcb_rectangle_t *rectangles
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_create_region (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t region /**< */,
- uint32_t rectangles_len /**< */,
- const xcb_rectangle_t *rectangles /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_create_region_from_bitmap_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t region
- ** @param xcb_pixmap_t bitmap
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_create_region_from_bitmap_checked (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t region /**< */,
- xcb_pixmap_t bitmap /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_create_region_from_bitmap
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t region
- ** @param xcb_pixmap_t bitmap
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_create_region_from_bitmap (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t region /**< */,
- xcb_pixmap_t bitmap /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_create_region_from_window_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t region
- ** @param xcb_window_t window
- ** @param xcb_shape_kind_t kind
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_create_region_from_window_checked (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t region /**< */,
- xcb_window_t window /**< */,
- xcb_shape_kind_t kind /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_create_region_from_window
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t region
- ** @param xcb_window_t window
- ** @param xcb_shape_kind_t kind
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_create_region_from_window (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t region /**< */,
- xcb_window_t window /**< */,
- xcb_shape_kind_t kind /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_create_region_from_gc_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t region
- ** @param xcb_gcontext_t gc
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_create_region_from_gc_checked (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t region /**< */,
- xcb_gcontext_t gc /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_create_region_from_gc
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t region
- ** @param xcb_gcontext_t gc
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_create_region_from_gc (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t region /**< */,
- xcb_gcontext_t gc /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_create_region_from_picture_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t region
- ** @param xcb_render_picture_t picture
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_create_region_from_picture_checked (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t region /**< */,
- xcb_render_picture_t picture /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_create_region_from_picture
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t region
- ** @param xcb_render_picture_t picture
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_create_region_from_picture (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t region /**< */,
- xcb_render_picture_t picture /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_destroy_region_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t region
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_destroy_region_checked (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t region /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_destroy_region
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t region
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_destroy_region (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t region /**< */);
-
-int
-xcb_xfixes_set_region_sizeof (const void *_buffer /**< */,
- uint32_t rectangles_len /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_set_region_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t region
- ** @param uint32_t rectangles_len
- ** @param const xcb_rectangle_t *rectangles
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_set_region_checked (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t region /**< */,
- uint32_t rectangles_len /**< */,
- const xcb_rectangle_t *rectangles /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_set_region
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t region
- ** @param uint32_t rectangles_len
- ** @param const xcb_rectangle_t *rectangles
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_set_region (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t region /**< */,
- uint32_t rectangles_len /**< */,
- const xcb_rectangle_t *rectangles /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_copy_region_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t source
- ** @param xcb_xfixes_region_t destination
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_copy_region_checked (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t source /**< */,
- xcb_xfixes_region_t destination /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_copy_region
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t source
- ** @param xcb_xfixes_region_t destination
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_copy_region (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t source /**< */,
- xcb_xfixes_region_t destination /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_union_region_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t source1
- ** @param xcb_xfixes_region_t source2
- ** @param xcb_xfixes_region_t destination
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_union_region_checked (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t source1 /**< */,
- xcb_xfixes_region_t source2 /**< */,
- xcb_xfixes_region_t destination /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_union_region
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t source1
- ** @param xcb_xfixes_region_t source2
- ** @param xcb_xfixes_region_t destination
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_union_region (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t source1 /**< */,
- xcb_xfixes_region_t source2 /**< */,
- xcb_xfixes_region_t destination /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_intersect_region_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t source1
- ** @param xcb_xfixes_region_t source2
- ** @param xcb_xfixes_region_t destination
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_intersect_region_checked (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t source1 /**< */,
- xcb_xfixes_region_t source2 /**< */,
- xcb_xfixes_region_t destination /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_intersect_region
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t source1
- ** @param xcb_xfixes_region_t source2
- ** @param xcb_xfixes_region_t destination
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_intersect_region (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t source1 /**< */,
- xcb_xfixes_region_t source2 /**< */,
- xcb_xfixes_region_t destination /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_subtract_region_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t source1
- ** @param xcb_xfixes_region_t source2
- ** @param xcb_xfixes_region_t destination
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_subtract_region_checked (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t source1 /**< */,
- xcb_xfixes_region_t source2 /**< */,
- xcb_xfixes_region_t destination /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_subtract_region
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t source1
- ** @param xcb_xfixes_region_t source2
- ** @param xcb_xfixes_region_t destination
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_subtract_region (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t source1 /**< */,
- xcb_xfixes_region_t source2 /**< */,
- xcb_xfixes_region_t destination /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_invert_region_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t source
- ** @param xcb_rectangle_t bounds
- ** @param xcb_xfixes_region_t destination
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_invert_region_checked (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t source /**< */,
- xcb_rectangle_t bounds /**< */,
- xcb_xfixes_region_t destination /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_invert_region
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t source
- ** @param xcb_rectangle_t bounds
- ** @param xcb_xfixes_region_t destination
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_invert_region (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t source /**< */,
- xcb_rectangle_t bounds /**< */,
- xcb_xfixes_region_t destination /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_translate_region_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t region
- ** @param int16_t dx
- ** @param int16_t dy
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_translate_region_checked (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t region /**< */,
- int16_t dx /**< */,
- int16_t dy /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_translate_region
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t region
- ** @param int16_t dx
- ** @param int16_t dy
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_translate_region (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t region /**< */,
- int16_t dx /**< */,
- int16_t dy /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_region_extents_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t source
- ** @param xcb_xfixes_region_t destination
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_region_extents_checked (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t source /**< */,
- xcb_xfixes_region_t destination /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_region_extents
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t source
- ** @param xcb_xfixes_region_t destination
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_region_extents (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t source /**< */,
- xcb_xfixes_region_t destination /**< */);
-
-int
-xcb_xfixes_fetch_region_sizeof (const void *_buffer /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_xfixes_fetch_region_cookie_t xcb_xfixes_fetch_region
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t region
- ** @returns xcb_xfixes_fetch_region_cookie_t
- **
- *****************************************************************************/
-
-xcb_xfixes_fetch_region_cookie_t
-xcb_xfixes_fetch_region (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t region /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_xfixes_fetch_region_cookie_t xcb_xfixes_fetch_region_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t region
- ** @returns xcb_xfixes_fetch_region_cookie_t
- **
- *****************************************************************************/
-
-xcb_xfixes_fetch_region_cookie_t
-xcb_xfixes_fetch_region_unchecked (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t region /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_rectangle_t * xcb_xfixes_fetch_region_rectangles
- **
- ** @param const xcb_xfixes_fetch_region_reply_t *R
- ** @returns xcb_rectangle_t *
- **
- *****************************************************************************/
-
-xcb_rectangle_t *
-xcb_xfixes_fetch_region_rectangles (const xcb_xfixes_fetch_region_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xfixes_fetch_region_rectangles_length
- **
- ** @param const xcb_xfixes_fetch_region_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xfixes_fetch_region_rectangles_length (const xcb_xfixes_fetch_region_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_rectangle_iterator_t xcb_xfixes_fetch_region_rectangles_iterator
- **
- ** @param const xcb_xfixes_fetch_region_reply_t *R
- ** @returns xcb_rectangle_iterator_t
- **
- *****************************************************************************/
-
-xcb_rectangle_iterator_t
-xcb_xfixes_fetch_region_rectangles_iterator (const xcb_xfixes_fetch_region_reply_t *R /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_xfixes_fetch_region_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_xfixes_fetch_region_reply_t * xcb_xfixes_fetch_region_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_fetch_region_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xfixes_fetch_region_reply_t *
- **
- *****************************************************************************/
-
-xcb_xfixes_fetch_region_reply_t *
-xcb_xfixes_fetch_region_reply (xcb_connection_t *c /**< */,
- xcb_xfixes_fetch_region_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_set_gc_clip_region_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_gcontext_t gc
- ** @param xcb_xfixes_region_t region
- ** @param int16_t x_origin
- ** @param int16_t y_origin
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_set_gc_clip_region_checked (xcb_connection_t *c /**< */,
- xcb_gcontext_t gc /**< */,
- xcb_xfixes_region_t region /**< */,
- int16_t x_origin /**< */,
- int16_t y_origin /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_set_gc_clip_region
- **
- ** @param xcb_connection_t *c
- ** @param xcb_gcontext_t gc
- ** @param xcb_xfixes_region_t region
- ** @param int16_t x_origin
- ** @param int16_t y_origin
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_set_gc_clip_region (xcb_connection_t *c /**< */,
- xcb_gcontext_t gc /**< */,
- xcb_xfixes_region_t region /**< */,
- int16_t x_origin /**< */,
- int16_t y_origin /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_set_window_shape_region_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t dest
- ** @param xcb_shape_kind_t dest_kind
- ** @param int16_t x_offset
- ** @param int16_t y_offset
- ** @param xcb_xfixes_region_t region
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_set_window_shape_region_checked (xcb_connection_t *c /**< */,
- xcb_window_t dest /**< */,
- xcb_shape_kind_t dest_kind /**< */,
- int16_t x_offset /**< */,
- int16_t y_offset /**< */,
- xcb_xfixes_region_t region /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_set_window_shape_region
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t dest
- ** @param xcb_shape_kind_t dest_kind
- ** @param int16_t x_offset
- ** @param int16_t y_offset
- ** @param xcb_xfixes_region_t region
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_set_window_shape_region (xcb_connection_t *c /**< */,
- xcb_window_t dest /**< */,
- xcb_shape_kind_t dest_kind /**< */,
- int16_t x_offset /**< */,
- int16_t y_offset /**< */,
- xcb_xfixes_region_t region /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_set_picture_clip_region_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_picture_t picture
- ** @param xcb_xfixes_region_t region
- ** @param int16_t x_origin
- ** @param int16_t y_origin
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_set_picture_clip_region_checked (xcb_connection_t *c /**< */,
- xcb_render_picture_t picture /**< */,
- xcb_xfixes_region_t region /**< */,
- int16_t x_origin /**< */,
- int16_t y_origin /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_set_picture_clip_region
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_picture_t picture
- ** @param xcb_xfixes_region_t region
- ** @param int16_t x_origin
- ** @param int16_t y_origin
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_set_picture_clip_region (xcb_connection_t *c /**< */,
- xcb_render_picture_t picture /**< */,
- xcb_xfixes_region_t region /**< */,
- int16_t x_origin /**< */,
- int16_t y_origin /**< */);
-
-int
-xcb_xfixes_set_cursor_name_sizeof (const void *_buffer /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_set_cursor_name_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_cursor_t cursor
- ** @param uint16_t nbytes
- ** @param const char *name
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_set_cursor_name_checked (xcb_connection_t *c /**< */,
- xcb_cursor_t cursor /**< */,
- uint16_t nbytes /**< */,
- const char *name /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_set_cursor_name
- **
- ** @param xcb_connection_t *c
- ** @param xcb_cursor_t cursor
- ** @param uint16_t nbytes
- ** @param const char *name
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_set_cursor_name (xcb_connection_t *c /**< */,
- xcb_cursor_t cursor /**< */,
- uint16_t nbytes /**< */,
- const char *name /**< */);
-
-int
-xcb_xfixes_get_cursor_name_sizeof (const void *_buffer /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_xfixes_get_cursor_name_cookie_t xcb_xfixes_get_cursor_name
- **
- ** @param xcb_connection_t *c
- ** @param xcb_cursor_t cursor
- ** @returns xcb_xfixes_get_cursor_name_cookie_t
- **
- *****************************************************************************/
-
-xcb_xfixes_get_cursor_name_cookie_t
-xcb_xfixes_get_cursor_name (xcb_connection_t *c /**< */,
- xcb_cursor_t cursor /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_xfixes_get_cursor_name_cookie_t xcb_xfixes_get_cursor_name_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_cursor_t cursor
- ** @returns xcb_xfixes_get_cursor_name_cookie_t
- **
- *****************************************************************************/
-
-xcb_xfixes_get_cursor_name_cookie_t
-xcb_xfixes_get_cursor_name_unchecked (xcb_connection_t *c /**< */,
- xcb_cursor_t cursor /**< */);
-
-
-/*****************************************************************************
- **
- ** char * xcb_xfixes_get_cursor_name_name
- **
- ** @param const xcb_xfixes_get_cursor_name_reply_t *R
- ** @returns char *
- **
- *****************************************************************************/
-
-char *
-xcb_xfixes_get_cursor_name_name (const xcb_xfixes_get_cursor_name_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xfixes_get_cursor_name_name_length
- **
- ** @param const xcb_xfixes_get_cursor_name_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xfixes_get_cursor_name_name_length (const xcb_xfixes_get_cursor_name_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xfixes_get_cursor_name_name_end
- **
- ** @param const xcb_xfixes_get_cursor_name_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xfixes_get_cursor_name_name_end (const xcb_xfixes_get_cursor_name_reply_t *R /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_xfixes_get_cursor_name_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_xfixes_get_cursor_name_reply_t * xcb_xfixes_get_cursor_name_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_get_cursor_name_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xfixes_get_cursor_name_reply_t *
- **
- *****************************************************************************/
-
-xcb_xfixes_get_cursor_name_reply_t *
-xcb_xfixes_get_cursor_name_reply (xcb_connection_t *c /**< */,
- xcb_xfixes_get_cursor_name_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-int
-xcb_xfixes_get_cursor_image_and_name_sizeof (const void *_buffer /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_xfixes_get_cursor_image_and_name_cookie_t xcb_xfixes_get_cursor_image_and_name
- **
- ** @param xcb_connection_t *c
- ** @returns xcb_xfixes_get_cursor_image_and_name_cookie_t
- **
- *****************************************************************************/
-
-xcb_xfixes_get_cursor_image_and_name_cookie_t
-xcb_xfixes_get_cursor_image_and_name (xcb_connection_t *c /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_xfixes_get_cursor_image_and_name_cookie_t xcb_xfixes_get_cursor_image_and_name_unchecked
- **
- ** @param xcb_connection_t *c
- ** @returns xcb_xfixes_get_cursor_image_and_name_cookie_t
- **
- *****************************************************************************/
-
-xcb_xfixes_get_cursor_image_and_name_cookie_t
-xcb_xfixes_get_cursor_image_and_name_unchecked (xcb_connection_t *c /**< */);
-
-
-/*****************************************************************************
- **
- ** char * xcb_xfixes_get_cursor_image_and_name_name
- **
- ** @param const xcb_xfixes_get_cursor_image_and_name_reply_t *R
- ** @returns char *
- **
- *****************************************************************************/
-
-char *
-xcb_xfixes_get_cursor_image_and_name_name (const xcb_xfixes_get_cursor_image_and_name_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xfixes_get_cursor_image_and_name_name_length
- **
- ** @param const xcb_xfixes_get_cursor_image_and_name_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xfixes_get_cursor_image_and_name_name_length (const xcb_xfixes_get_cursor_image_and_name_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xfixes_get_cursor_image_and_name_name_end
- **
- ** @param const xcb_xfixes_get_cursor_image_and_name_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xfixes_get_cursor_image_and_name_name_end (const xcb_xfixes_get_cursor_image_and_name_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** uint32_t * xcb_xfixes_get_cursor_image_and_name_cursor_image
- **
- ** @param const xcb_xfixes_get_cursor_image_and_name_reply_t *R
- ** @returns uint32_t *
- **
- *****************************************************************************/
-
-uint32_t *
-xcb_xfixes_get_cursor_image_and_name_cursor_image (const xcb_xfixes_get_cursor_image_and_name_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xfixes_get_cursor_image_and_name_cursor_image_length
- **
- ** @param const xcb_xfixes_get_cursor_image_and_name_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xfixes_get_cursor_image_and_name_cursor_image_length (const xcb_xfixes_get_cursor_image_and_name_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xfixes_get_cursor_image_and_name_cursor_image_end
- **
- ** @param const xcb_xfixes_get_cursor_image_and_name_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xfixes_get_cursor_image_and_name_cursor_image_end (const xcb_xfixes_get_cursor_image_and_name_reply_t *R /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_xfixes_get_cursor_image_and_name_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_xfixes_get_cursor_image_and_name_reply_t * xcb_xfixes_get_cursor_image_and_name_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_get_cursor_image_and_name_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xfixes_get_cursor_image_and_name_reply_t *
- **
- *****************************************************************************/
-
-xcb_xfixes_get_cursor_image_and_name_reply_t *
-xcb_xfixes_get_cursor_image_and_name_reply (xcb_connection_t *c /**< */,
- xcb_xfixes_get_cursor_image_and_name_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_change_cursor_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_cursor_t source
- ** @param xcb_cursor_t destination
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_change_cursor_checked (xcb_connection_t *c /**< */,
- xcb_cursor_t source /**< */,
- xcb_cursor_t destination /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_change_cursor
- **
- ** @param xcb_connection_t *c
- ** @param xcb_cursor_t source
- ** @param xcb_cursor_t destination
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_change_cursor (xcb_connection_t *c /**< */,
- xcb_cursor_t source /**< */,
- xcb_cursor_t destination /**< */);
-
-int
-xcb_xfixes_change_cursor_by_name_sizeof (const void *_buffer /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_change_cursor_by_name_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_cursor_t src
- ** @param uint16_t nbytes
- ** @param const char *name
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_change_cursor_by_name_checked (xcb_connection_t *c /**< */,
- xcb_cursor_t src /**< */,
- uint16_t nbytes /**< */,
- const char *name /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_change_cursor_by_name
- **
- ** @param xcb_connection_t *c
- ** @param xcb_cursor_t src
- ** @param uint16_t nbytes
- ** @param const char *name
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_change_cursor_by_name (xcb_connection_t *c /**< */,
- xcb_cursor_t src /**< */,
- uint16_t nbytes /**< */,
- const char *name /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_expand_region_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t source
- ** @param xcb_xfixes_region_t destination
- ** @param uint16_t left
- ** @param uint16_t right
- ** @param uint16_t top
- ** @param uint16_t bottom
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_expand_region_checked (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t source /**< */,
- xcb_xfixes_region_t destination /**< */,
- uint16_t left /**< */,
- uint16_t right /**< */,
- uint16_t top /**< */,
- uint16_t bottom /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_expand_region
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t source
- ** @param xcb_xfixes_region_t destination
- ** @param uint16_t left
- ** @param uint16_t right
- ** @param uint16_t top
- ** @param uint16_t bottom
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_expand_region (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t source /**< */,
- xcb_xfixes_region_t destination /**< */,
- uint16_t left /**< */,
- uint16_t right /**< */,
- uint16_t top /**< */,
- uint16_t bottom /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_hide_cursor_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_hide_cursor_checked (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_hide_cursor
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_hide_cursor (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_show_cursor_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_show_cursor_checked (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_show_cursor
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_show_cursor (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-/**
- * @}
- */
diff --git a/src/3rdparty/xcb/include/xcb/xinerama.h b/src/3rdparty/xcb/include/xcb/xinerama.h
deleted file mode 100644
index f18a96c791..0000000000
--- a/src/3rdparty/xcb/include/xcb/xinerama.h
+++ /dev/null
@@ -1,811 +0,0 @@
-/*
- * This file generated automatically from xinerama.xml by c_client.py.
- * Edit at your peril.
- */
-
-/**
- * @defgroup XCB_Xinerama_API XCB Xinerama API
- * @brief Xinerama XCB Protocol Implementation.
- * @{
- **/
-
-#ifndef __XINERAMA_H
-#define __XINERAMA_H
-
-#include "xcb.h"
-#include "xproto.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define XCB_XINERAMA_MAJOR_VERSION 1
-#define XCB_XINERAMA_MINOR_VERSION 1
-
-extern xcb_extension_t xcb_xinerama_id;
-
-/**
- * @brief xcb_xinerama_screen_info_t
- **/
-typedef struct xcb_xinerama_screen_info_t {
- int16_t x_org; /**< */
- int16_t y_org; /**< */
- uint16_t width; /**< */
- uint16_t height; /**< */
-} xcb_xinerama_screen_info_t;
-
-/**
- * @brief xcb_xinerama_screen_info_iterator_t
- **/
-typedef struct xcb_xinerama_screen_info_iterator_t {
- xcb_xinerama_screen_info_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xinerama_screen_info_iterator_t;
-
-/**
- * @brief xcb_xinerama_query_version_cookie_t
- **/
-typedef struct xcb_xinerama_query_version_cookie_t {
- unsigned int sequence; /**< */
-} xcb_xinerama_query_version_cookie_t;
-
-/** Opcode for xcb_xinerama_query_version. */
-#define XCB_XINERAMA_QUERY_VERSION 0
-
-/**
- * @brief xcb_xinerama_query_version_request_t
- **/
-typedef struct xcb_xinerama_query_version_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- uint8_t major; /**< */
- uint8_t minor; /**< */
-} xcb_xinerama_query_version_request_t;
-
-/**
- * @brief xcb_xinerama_query_version_reply_t
- **/
-typedef struct xcb_xinerama_query_version_reply_t {
- uint8_t response_type; /**< */
- uint8_t pad0; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- uint16_t major; /**< */
- uint16_t minor; /**< */
-} xcb_xinerama_query_version_reply_t;
-
-/**
- * @brief xcb_xinerama_get_state_cookie_t
- **/
-typedef struct xcb_xinerama_get_state_cookie_t {
- unsigned int sequence; /**< */
-} xcb_xinerama_get_state_cookie_t;
-
-/** Opcode for xcb_xinerama_get_state. */
-#define XCB_XINERAMA_GET_STATE 1
-
-/**
- * @brief xcb_xinerama_get_state_request_t
- **/
-typedef struct xcb_xinerama_get_state_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_window_t window; /**< */
-} xcb_xinerama_get_state_request_t;
-
-/**
- * @brief xcb_xinerama_get_state_reply_t
- **/
-typedef struct xcb_xinerama_get_state_reply_t {
- uint8_t response_type; /**< */
- uint8_t state; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- xcb_window_t window; /**< */
-} xcb_xinerama_get_state_reply_t;
-
-/**
- * @brief xcb_xinerama_get_screen_count_cookie_t
- **/
-typedef struct xcb_xinerama_get_screen_count_cookie_t {
- unsigned int sequence; /**< */
-} xcb_xinerama_get_screen_count_cookie_t;
-
-/** Opcode for xcb_xinerama_get_screen_count. */
-#define XCB_XINERAMA_GET_SCREEN_COUNT 2
-
-/**
- * @brief xcb_xinerama_get_screen_count_request_t
- **/
-typedef struct xcb_xinerama_get_screen_count_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_window_t window; /**< */
-} xcb_xinerama_get_screen_count_request_t;
-
-/**
- * @brief xcb_xinerama_get_screen_count_reply_t
- **/
-typedef struct xcb_xinerama_get_screen_count_reply_t {
- uint8_t response_type; /**< */
- uint8_t screen_count; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- xcb_window_t window; /**< */
-} xcb_xinerama_get_screen_count_reply_t;
-
-/**
- * @brief xcb_xinerama_get_screen_size_cookie_t
- **/
-typedef struct xcb_xinerama_get_screen_size_cookie_t {
- unsigned int sequence; /**< */
-} xcb_xinerama_get_screen_size_cookie_t;
-
-/** Opcode for xcb_xinerama_get_screen_size. */
-#define XCB_XINERAMA_GET_SCREEN_SIZE 3
-
-/**
- * @brief xcb_xinerama_get_screen_size_request_t
- **/
-typedef struct xcb_xinerama_get_screen_size_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_window_t window; /**< */
- uint32_t screen; /**< */
-} xcb_xinerama_get_screen_size_request_t;
-
-/**
- * @brief xcb_xinerama_get_screen_size_reply_t
- **/
-typedef struct xcb_xinerama_get_screen_size_reply_t {
- uint8_t response_type; /**< */
- uint8_t pad0; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- uint32_t width; /**< */
- uint32_t height; /**< */
- xcb_window_t window; /**< */
- uint32_t screen; /**< */
-} xcb_xinerama_get_screen_size_reply_t;
-
-/**
- * @brief xcb_xinerama_is_active_cookie_t
- **/
-typedef struct xcb_xinerama_is_active_cookie_t {
- unsigned int sequence; /**< */
-} xcb_xinerama_is_active_cookie_t;
-
-/** Opcode for xcb_xinerama_is_active. */
-#define XCB_XINERAMA_IS_ACTIVE 4
-
-/**
- * @brief xcb_xinerama_is_active_request_t
- **/
-typedef struct xcb_xinerama_is_active_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
-} xcb_xinerama_is_active_request_t;
-
-/**
- * @brief xcb_xinerama_is_active_reply_t
- **/
-typedef struct xcb_xinerama_is_active_reply_t {
- uint8_t response_type; /**< */
- uint8_t pad0; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- uint32_t state; /**< */
-} xcb_xinerama_is_active_reply_t;
-
-/**
- * @brief xcb_xinerama_query_screens_cookie_t
- **/
-typedef struct xcb_xinerama_query_screens_cookie_t {
- unsigned int sequence; /**< */
-} xcb_xinerama_query_screens_cookie_t;
-
-/** Opcode for xcb_xinerama_query_screens. */
-#define XCB_XINERAMA_QUERY_SCREENS 5
-
-/**
- * @brief xcb_xinerama_query_screens_request_t
- **/
-typedef struct xcb_xinerama_query_screens_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
-} xcb_xinerama_query_screens_request_t;
-
-/**
- * @brief xcb_xinerama_query_screens_reply_t
- **/
-typedef struct xcb_xinerama_query_screens_reply_t {
- uint8_t response_type; /**< */
- uint8_t pad0; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- uint32_t number; /**< */
- uint8_t pad1[20]; /**< */
-} xcb_xinerama_query_screens_reply_t;
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xinerama_screen_info_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xinerama_screen_info_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xinerama_screen_info_next
- **
- ** @param xcb_xinerama_screen_info_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xinerama_screen_info_next (xcb_xinerama_screen_info_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xinerama_screen_info_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xinerama_screen_info_end
- **
- ** @param xcb_xinerama_screen_info_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xinerama_screen_info_end (xcb_xinerama_screen_info_iterator_t i /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_xinerama_query_version_cookie_t xcb_xinerama_query_version
- **
- ** @param xcb_connection_t *c
- ** @param uint8_t major
- ** @param uint8_t minor
- ** @returns xcb_xinerama_query_version_cookie_t
- **
- *****************************************************************************/
-
-xcb_xinerama_query_version_cookie_t
-xcb_xinerama_query_version (xcb_connection_t *c /**< */,
- uint8_t major /**< */,
- uint8_t minor /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_xinerama_query_version_cookie_t xcb_xinerama_query_version_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param uint8_t major
- ** @param uint8_t minor
- ** @returns xcb_xinerama_query_version_cookie_t
- **
- *****************************************************************************/
-
-xcb_xinerama_query_version_cookie_t
-xcb_xinerama_query_version_unchecked (xcb_connection_t *c /**< */,
- uint8_t major /**< */,
- uint8_t minor /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_xinerama_query_version_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_xinerama_query_version_reply_t * xcb_xinerama_query_version_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xinerama_query_version_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xinerama_query_version_reply_t *
- **
- *****************************************************************************/
-
-xcb_xinerama_query_version_reply_t *
-xcb_xinerama_query_version_reply (xcb_connection_t *c /**< */,
- xcb_xinerama_query_version_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_xinerama_get_state_cookie_t xcb_xinerama_get_state
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @returns xcb_xinerama_get_state_cookie_t
- **
- *****************************************************************************/
-
-xcb_xinerama_get_state_cookie_t
-xcb_xinerama_get_state (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_xinerama_get_state_cookie_t xcb_xinerama_get_state_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @returns xcb_xinerama_get_state_cookie_t
- **
- *****************************************************************************/
-
-xcb_xinerama_get_state_cookie_t
-xcb_xinerama_get_state_unchecked (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_xinerama_get_state_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_xinerama_get_state_reply_t * xcb_xinerama_get_state_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xinerama_get_state_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xinerama_get_state_reply_t *
- **
- *****************************************************************************/
-
-xcb_xinerama_get_state_reply_t *
-xcb_xinerama_get_state_reply (xcb_connection_t *c /**< */,
- xcb_xinerama_get_state_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_xinerama_get_screen_count_cookie_t xcb_xinerama_get_screen_count
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @returns xcb_xinerama_get_screen_count_cookie_t
- **
- *****************************************************************************/
-
-xcb_xinerama_get_screen_count_cookie_t
-xcb_xinerama_get_screen_count (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_xinerama_get_screen_count_cookie_t xcb_xinerama_get_screen_count_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @returns xcb_xinerama_get_screen_count_cookie_t
- **
- *****************************************************************************/
-
-xcb_xinerama_get_screen_count_cookie_t
-xcb_xinerama_get_screen_count_unchecked (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_xinerama_get_screen_count_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_xinerama_get_screen_count_reply_t * xcb_xinerama_get_screen_count_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xinerama_get_screen_count_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xinerama_get_screen_count_reply_t *
- **
- *****************************************************************************/
-
-xcb_xinerama_get_screen_count_reply_t *
-xcb_xinerama_get_screen_count_reply (xcb_connection_t *c /**< */,
- xcb_xinerama_get_screen_count_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_xinerama_get_screen_size_cookie_t xcb_xinerama_get_screen_size
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @param uint32_t screen
- ** @returns xcb_xinerama_get_screen_size_cookie_t
- **
- *****************************************************************************/
-
-xcb_xinerama_get_screen_size_cookie_t
-xcb_xinerama_get_screen_size (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */,
- uint32_t screen /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_xinerama_get_screen_size_cookie_t xcb_xinerama_get_screen_size_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @param uint32_t screen
- ** @returns xcb_xinerama_get_screen_size_cookie_t
- **
- *****************************************************************************/
-
-xcb_xinerama_get_screen_size_cookie_t
-xcb_xinerama_get_screen_size_unchecked (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */,
- uint32_t screen /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_xinerama_get_screen_size_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_xinerama_get_screen_size_reply_t * xcb_xinerama_get_screen_size_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xinerama_get_screen_size_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xinerama_get_screen_size_reply_t *
- **
- *****************************************************************************/
-
-xcb_xinerama_get_screen_size_reply_t *
-xcb_xinerama_get_screen_size_reply (xcb_connection_t *c /**< */,
- xcb_xinerama_get_screen_size_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_xinerama_is_active_cookie_t xcb_xinerama_is_active
- **
- ** @param xcb_connection_t *c
- ** @returns xcb_xinerama_is_active_cookie_t
- **
- *****************************************************************************/
-
-xcb_xinerama_is_active_cookie_t
-xcb_xinerama_is_active (xcb_connection_t *c /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_xinerama_is_active_cookie_t xcb_xinerama_is_active_unchecked
- **
- ** @param xcb_connection_t *c
- ** @returns xcb_xinerama_is_active_cookie_t
- **
- *****************************************************************************/
-
-xcb_xinerama_is_active_cookie_t
-xcb_xinerama_is_active_unchecked (xcb_connection_t *c /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_xinerama_is_active_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_xinerama_is_active_reply_t * xcb_xinerama_is_active_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xinerama_is_active_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xinerama_is_active_reply_t *
- **
- *****************************************************************************/
-
-xcb_xinerama_is_active_reply_t *
-xcb_xinerama_is_active_reply (xcb_connection_t *c /**< */,
- xcb_xinerama_is_active_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-int
-xcb_xinerama_query_screens_sizeof (const void *_buffer /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_xinerama_query_screens_cookie_t xcb_xinerama_query_screens
- **
- ** @param xcb_connection_t *c
- ** @returns xcb_xinerama_query_screens_cookie_t
- **
- *****************************************************************************/
-
-xcb_xinerama_query_screens_cookie_t
-xcb_xinerama_query_screens (xcb_connection_t *c /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_xinerama_query_screens_cookie_t xcb_xinerama_query_screens_unchecked
- **
- ** @param xcb_connection_t *c
- ** @returns xcb_xinerama_query_screens_cookie_t
- **
- *****************************************************************************/
-
-xcb_xinerama_query_screens_cookie_t
-xcb_xinerama_query_screens_unchecked (xcb_connection_t *c /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xinerama_screen_info_t * xcb_xinerama_query_screens_screen_info
- **
- ** @param const xcb_xinerama_query_screens_reply_t *R
- ** @returns xcb_xinerama_screen_info_t *
- **
- *****************************************************************************/
-
-xcb_xinerama_screen_info_t *
-xcb_xinerama_query_screens_screen_info (const xcb_xinerama_query_screens_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xinerama_query_screens_screen_info_length
- **
- ** @param const xcb_xinerama_query_screens_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xinerama_query_screens_screen_info_length (const xcb_xinerama_query_screens_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xinerama_screen_info_iterator_t xcb_xinerama_query_screens_screen_info_iterator
- **
- ** @param const xcb_xinerama_query_screens_reply_t *R
- ** @returns xcb_xinerama_screen_info_iterator_t
- **
- *****************************************************************************/
-
-xcb_xinerama_screen_info_iterator_t
-xcb_xinerama_query_screens_screen_info_iterator (const xcb_xinerama_query_screens_reply_t *R /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_xinerama_query_screens_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_xinerama_query_screens_reply_t * xcb_xinerama_query_screens_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xinerama_query_screens_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xinerama_query_screens_reply_t *
- **
- *****************************************************************************/
-
-xcb_xinerama_query_screens_reply_t *
-xcb_xinerama_query_screens_reply (xcb_connection_t *c /**< */,
- xcb_xinerama_query_screens_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-/**
- * @}
- */
diff --git a/src/3rdparty/xcb/include/xcb/xinput.h b/src/3rdparty/xcb/include/xcb/xinput.h
index 9420047c71..729c0b5169 100644
--- a/src/3rdparty/xcb/include/xcb/xinput.h
+++ b/src/3rdparty/xcb/include/xcb/xinput.h
@@ -12,8 +12,8 @@
#ifndef __XINPUT_H
#define __XINPUT_H
-#include "xcb.h"
-#include "xfixes.h"
+#include <xcb/xcb.h>
+#include <xcb/xfixes.h>
#ifdef __cplusplus
extern "C" {
diff --git a/src/3rdparty/xcb/include/xcb/xkb.h b/src/3rdparty/xcb/include/xcb/xkb.h
deleted file mode 100644
index 66b4712194..0000000000
--- a/src/3rdparty/xcb/include/xcb/xkb.h
+++ /dev/null
@@ -1,12085 +0,0 @@
-/*
- * This file generated automatically from xkb.xml by c_client.py.
- * Edit at your peril.
- */
-
-/**
- * @defgroup XCB_xkb_API XCB xkb API
- * @brief xkb XCB Protocol Implementation.
- * @{
- **/
-
-#ifndef __XKB_H
-#define __XKB_H
-
-#include "xcb.h"
-#include "xproto.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define XCB_XKB_MAJOR_VERSION 1
-#define XCB_XKB_MINOR_VERSION 0
-
-extern xcb_extension_t xcb_xkb_id;
-
-typedef enum xcb_xkb_const_t {
- XCB_XKB_CONST_MAX_LEGAL_KEY_CODE = 255,
- XCB_XKB_CONST_PER_KEY_BIT_ARRAY_SIZE = 32,
- XCB_XKB_CONST_KEY_NAME_LENGTH = 4
-} xcb_xkb_const_t;
-
-typedef enum xcb_xkb_event_type_t {
- XCB_XKB_EVENT_TYPE_NEW_KEYBOARD_NOTIFY = 1,
- XCB_XKB_EVENT_TYPE_MAP_NOTIFY = 2,
- XCB_XKB_EVENT_TYPE_STATE_NOTIFY = 4,
- XCB_XKB_EVENT_TYPE_CONTROLS_NOTIFY = 8,
- XCB_XKB_EVENT_TYPE_INDICATOR_STATE_NOTIFY = 16,
- XCB_XKB_EVENT_TYPE_INDICATOR_MAP_NOTIFY = 32,
- XCB_XKB_EVENT_TYPE_NAMES_NOTIFY = 64,
- XCB_XKB_EVENT_TYPE_COMPAT_MAP_NOTIFY = 128,
- XCB_XKB_EVENT_TYPE_BELL_NOTIFY = 256,
- XCB_XKB_EVENT_TYPE_ACTION_MESSAGE = 512,
- XCB_XKB_EVENT_TYPE_ACCESS_X_NOTIFY = 1024,
- XCB_XKB_EVENT_TYPE_EXTENSION_DEVICE_NOTIFY = 2048
-} xcb_xkb_event_type_t;
-
-typedef enum xcb_xkb_nkn_detail_t {
- XCB_XKB_NKN_DETAIL_KEYCODES = 1,
- XCB_XKB_NKN_DETAIL_GEOMETRY = 2,
- XCB_XKB_NKN_DETAIL_DEVICE_ID = 4
-} xcb_xkb_nkn_detail_t;
-
-typedef enum xcb_xkb_axn_detail_t {
- XCB_XKB_AXN_DETAIL_SK_PRESS = 1,
- XCB_XKB_AXN_DETAIL_SK_ACCEPT = 2,
- XCB_XKB_AXN_DETAIL_SK_REJECT = 4,
- XCB_XKB_AXN_DETAIL_SK_RELEASE = 8,
- XCB_XKB_AXN_DETAIL_BK_ACCEPT = 16,
- XCB_XKB_AXN_DETAIL_BK_REJECT = 32,
- XCB_XKB_AXN_DETAIL_AXK_WARNING = 64
-} xcb_xkb_axn_detail_t;
-
-typedef enum xcb_xkb_map_part_t {
- XCB_XKB_MAP_PART_KEY_TYPES = 1,
- XCB_XKB_MAP_PART_KEY_SYMS = 2,
- XCB_XKB_MAP_PART_MODIFIER_MAP = 4,
- XCB_XKB_MAP_PART_EXPLICIT_COMPONENTS = 8,
- XCB_XKB_MAP_PART_KEY_ACTIONS = 16,
- XCB_XKB_MAP_PART_KEY_BEHAVIORS = 32,
- XCB_XKB_MAP_PART_VIRTUAL_MODS = 64,
- XCB_XKB_MAP_PART_VIRTUAL_MOD_MAP = 128
-} xcb_xkb_map_part_t;
-
-typedef enum xcb_xkb_set_map_flags_t {
- XCB_XKB_SET_MAP_FLAGS_RESIZE_TYPES = 1,
- XCB_XKB_SET_MAP_FLAGS_RECOMPUTE_ACTIONS = 2
-} xcb_xkb_set_map_flags_t;
-
-typedef enum xcb_xkb_state_part_t {
- XCB_XKB_STATE_PART_MODIFIER_STATE = 1,
- XCB_XKB_STATE_PART_MODIFIER_BASE = 2,
- XCB_XKB_STATE_PART_MODIFIER_LATCH = 4,
- XCB_XKB_STATE_PART_MODIFIER_LOCK = 8,
- XCB_XKB_STATE_PART_GROUP_STATE = 16,
- XCB_XKB_STATE_PART_GROUP_BASE = 32,
- XCB_XKB_STATE_PART_GROUP_LATCH = 64,
- XCB_XKB_STATE_PART_GROUP_LOCK = 128,
- XCB_XKB_STATE_PART_COMPAT_STATE = 256,
- XCB_XKB_STATE_PART_GRAB_MODS = 512,
- XCB_XKB_STATE_PART_COMPAT_GRAB_MODS = 1024,
- XCB_XKB_STATE_PART_LOOKUP_MODS = 2048,
- XCB_XKB_STATE_PART_COMPAT_LOOKUP_MODS = 4096,
- XCB_XKB_STATE_PART_POINTER_BUTTONS = 8192
-} xcb_xkb_state_part_t;
-
-typedef enum xcb_xkb_bool_ctrl_t {
- XCB_XKB_BOOL_CTRL_REPEAT_KEYS = 1,
- XCB_XKB_BOOL_CTRL_SLOW_KEYS = 2,
- XCB_XKB_BOOL_CTRL_BOUNCE_KEYS = 4,
- XCB_XKB_BOOL_CTRL_STICKY_KEYS = 8,
- XCB_XKB_BOOL_CTRL_MOUSE_KEYS = 16,
- XCB_XKB_BOOL_CTRL_MOUSE_KEYS_ACCEL = 32,
- XCB_XKB_BOOL_CTRL_ACCESS_X_KEYS = 64,
- XCB_XKB_BOOL_CTRL_ACCESS_X_TIMEOUT_MASK = 128,
- XCB_XKB_BOOL_CTRL_ACCESS_X_FEEDBACK_MASK = 256,
- XCB_XKB_BOOL_CTRL_AUDIBLE_BELL_MASK = 512,
- XCB_XKB_BOOL_CTRL_OVERLAY_1_MASK = 1024,
- XCB_XKB_BOOL_CTRL_OVERLAY_2_MASK = 2048,
- XCB_XKB_BOOL_CTRL_IGNORE_GROUP_LOCK_MASK = 4096
-} xcb_xkb_bool_ctrl_t;
-
-typedef enum xcb_xkb_control_t {
- XCB_XKB_CONTROL_GROUPS_WRAP = 134217728,
- XCB_XKB_CONTROL_INTERNAL_MODS = 268435456,
- XCB_XKB_CONTROL_IGNORE_LOCK_MODS = 536870912,
- XCB_XKB_CONTROL_PER_KEY_REPEAT = 1073741824u,
- XCB_XKB_CONTROL_CONTROLS_ENABLED = 2147483648u
-} xcb_xkb_control_t;
-
-typedef enum xcb_xkb_ax_option_t {
- XCB_XKB_AX_OPTION_SK_PRESS_FB = 1,
- XCB_XKB_AX_OPTION_SK_ACCEPT_FB = 2,
- XCB_XKB_AX_OPTION_FEATURE_FB = 4,
- XCB_XKB_AX_OPTION_SLOW_WARN_FB = 8,
- XCB_XKB_AX_OPTION_INDICATOR_FB = 16,
- XCB_XKB_AX_OPTION_STICKY_KEYS_FB = 32,
- XCB_XKB_AX_OPTION_TWO_KEYS = 64,
- XCB_XKB_AX_OPTION_LATCH_TO_LOCK = 128,
- XCB_XKB_AX_OPTION_SK_RELEASE_FB = 256,
- XCB_XKB_AX_OPTION_SK_REJECT_FB = 512,
- XCB_XKB_AX_OPTION_BK_REJECT_FB = 1024,
- XCB_XKB_AX_OPTION_DUMB_BELL = 2048
-} xcb_xkb_ax_option_t;
-
-typedef uint16_t xcb_xkb_device_spec_t;
-
-/**
- * @brief xcb_xkb_device_spec_iterator_t
- **/
-typedef struct xcb_xkb_device_spec_iterator_t {
- xcb_xkb_device_spec_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_device_spec_iterator_t;
-
-typedef enum xcb_xkb_led_class_result_t {
- XCB_XKB_LED_CLASS_RESULT_KBD_FEEDBACK_CLASS = 0,
- XCB_XKB_LED_CLASS_RESULT_LED_FEEDBACK_CLASS = 4
-} xcb_xkb_led_class_result_t;
-
-typedef enum xcb_xkb_led_class_t {
- XCB_XKB_LED_CLASS_KBD_FEEDBACK_CLASS = 0,
- XCB_XKB_LED_CLASS_LED_FEEDBACK_CLASS = 4,
- XCB_XKB_LED_CLASS_DFLT_XI_CLASS = 768,
- XCB_XKB_LED_CLASS_ALL_XI_CLASSES = 1280
-} xcb_xkb_led_class_t;
-
-typedef uint16_t xcb_xkb_led_class_spec_t;
-
-/**
- * @brief xcb_xkb_led_class_spec_iterator_t
- **/
-typedef struct xcb_xkb_led_class_spec_iterator_t {
- xcb_xkb_led_class_spec_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_led_class_spec_iterator_t;
-
-typedef enum xcb_xkb_bell_class_result_t {
- XCB_XKB_BELL_CLASS_RESULT_KBD_FEEDBACK_CLASS = 0,
- XCB_XKB_BELL_CLASS_RESULT_BELL_FEEDBACK_CLASS = 5
-} xcb_xkb_bell_class_result_t;
-
-typedef enum xcb_xkb_bell_class_t {
- XCB_XKB_BELL_CLASS_KBD_FEEDBACK_CLASS = 0,
- XCB_XKB_BELL_CLASS_BELL_FEEDBACK_CLASS = 5,
- XCB_XKB_BELL_CLASS_DFLT_XI_CLASS = 768
-} xcb_xkb_bell_class_t;
-
-typedef uint16_t xcb_xkb_bell_class_spec_t;
-
-/**
- * @brief xcb_xkb_bell_class_spec_iterator_t
- **/
-typedef struct xcb_xkb_bell_class_spec_iterator_t {
- xcb_xkb_bell_class_spec_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_bell_class_spec_iterator_t;
-
-typedef enum xcb_xkb_id_t {
- XCB_XKB_ID_USE_CORE_KBD = 256,
- XCB_XKB_ID_USE_CORE_PTR = 512,
- XCB_XKB_ID_DFLT_XI_CLASS = 768,
- XCB_XKB_ID_DFLT_XI_ID = 1024,
- XCB_XKB_ID_ALL_XI_CLASS = 1280,
- XCB_XKB_ID_ALL_XI_ID = 1536,
- XCB_XKB_ID_XI_NONE = 65280
-} xcb_xkb_id_t;
-
-typedef uint16_t xcb_xkb_id_spec_t;
-
-/**
- * @brief xcb_xkb_id_spec_iterator_t
- **/
-typedef struct xcb_xkb_id_spec_iterator_t {
- xcb_xkb_id_spec_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_id_spec_iterator_t;
-
-typedef enum xcb_xkb_group_t {
- XCB_XKB_GROUP_1 = 0,
- XCB_XKB_GROUP_2 = 1,
- XCB_XKB_GROUP_3 = 2,
- XCB_XKB_GROUP_4 = 3
-} xcb_xkb_group_t;
-
-typedef enum xcb_xkb_groups_t {
- XCB_XKB_GROUPS_ANY = 254,
- XCB_XKB_GROUPS_ALL = 255
-} xcb_xkb_groups_t;
-
-typedef enum xcb_xkb_set_of_group_t {
- XCB_XKB_SET_OF_GROUP_GROUP_1 = 1,
- XCB_XKB_SET_OF_GROUP_GROUP_2 = 2,
- XCB_XKB_SET_OF_GROUP_GROUP_3 = 4,
- XCB_XKB_SET_OF_GROUP_GROUP_4 = 8
-} xcb_xkb_set_of_group_t;
-
-typedef enum xcb_xkb_set_of_groups_t {
- XCB_XKB_SET_OF_GROUPS_ANY = 128
-} xcb_xkb_set_of_groups_t;
-
-typedef enum xcb_xkb_groups_wrap_t {
- XCB_XKB_GROUPS_WRAP_WRAP_INTO_RANGE = 0,
- XCB_XKB_GROUPS_WRAP_CLAMP_INTO_RANGE = 64,
- XCB_XKB_GROUPS_WRAP_REDIRECT_INTO_RANGE = 128
-} xcb_xkb_groups_wrap_t;
-
-typedef enum xcb_xkb_v_mods_high_t {
- XCB_XKB_V_MODS_HIGH_15 = 128,
- XCB_XKB_V_MODS_HIGH_14 = 64,
- XCB_XKB_V_MODS_HIGH_13 = 32,
- XCB_XKB_V_MODS_HIGH_12 = 16,
- XCB_XKB_V_MODS_HIGH_11 = 8,
- XCB_XKB_V_MODS_HIGH_10 = 4,
- XCB_XKB_V_MODS_HIGH_9 = 2,
- XCB_XKB_V_MODS_HIGH_8 = 1
-} xcb_xkb_v_mods_high_t;
-
-typedef enum xcb_xkb_v_mods_low_t {
- XCB_XKB_V_MODS_LOW_7 = 128,
- XCB_XKB_V_MODS_LOW_6 = 64,
- XCB_XKB_V_MODS_LOW_5 = 32,
- XCB_XKB_V_MODS_LOW_4 = 16,
- XCB_XKB_V_MODS_LOW_3 = 8,
- XCB_XKB_V_MODS_LOW_2 = 4,
- XCB_XKB_V_MODS_LOW_1 = 2,
- XCB_XKB_V_MODS_LOW_0 = 1
-} xcb_xkb_v_mods_low_t;
-
-typedef enum xcb_xkb_v_mod_t {
- XCB_XKB_V_MOD_15 = 32768,
- XCB_XKB_V_MOD_14 = 16384,
- XCB_XKB_V_MOD_13 = 8192,
- XCB_XKB_V_MOD_12 = 4096,
- XCB_XKB_V_MOD_11 = 2048,
- XCB_XKB_V_MOD_10 = 1024,
- XCB_XKB_V_MOD_9 = 512,
- XCB_XKB_V_MOD_8 = 256,
- XCB_XKB_V_MOD_7 = 128,
- XCB_XKB_V_MOD_6 = 64,
- XCB_XKB_V_MOD_5 = 32,
- XCB_XKB_V_MOD_4 = 16,
- XCB_XKB_V_MOD_3 = 8,
- XCB_XKB_V_MOD_2 = 4,
- XCB_XKB_V_MOD_1 = 2,
- XCB_XKB_V_MOD_0 = 1
-} xcb_xkb_v_mod_t;
-
-typedef enum xcb_xkb_explicit_t {
- XCB_XKB_EXPLICIT_V_MOD_MAP = 128,
- XCB_XKB_EXPLICIT_BEHAVIOR = 64,
- XCB_XKB_EXPLICIT_AUTO_REPEAT = 32,
- XCB_XKB_EXPLICIT_INTERPRET = 16,
- XCB_XKB_EXPLICIT_KEY_TYPE_4 = 8,
- XCB_XKB_EXPLICIT_KEY_TYPE_3 = 4,
- XCB_XKB_EXPLICIT_KEY_TYPE_2 = 2,
- XCB_XKB_EXPLICIT_KEY_TYPE_1 = 1
-} xcb_xkb_explicit_t;
-
-typedef enum xcb_xkb_sym_interpret_match_t {
- XCB_XKB_SYM_INTERPRET_MATCH_NONE_OF = 0,
- XCB_XKB_SYM_INTERPRET_MATCH_ANY_OF_OR_NONE = 1,
- XCB_XKB_SYM_INTERPRET_MATCH_ANY_OF = 2,
- XCB_XKB_SYM_INTERPRET_MATCH_ALL_OF = 3,
- XCB_XKB_SYM_INTERPRET_MATCH_EXACTLY = 4
-} xcb_xkb_sym_interpret_match_t;
-
-typedef enum xcb_xkb_sym_interp_match_t {
- XCB_XKB_SYM_INTERP_MATCH_LEVEL_ONE_ONLY = 128,
- XCB_XKB_SYM_INTERP_MATCH_OP_MASK = 127
-} xcb_xkb_sym_interp_match_t;
-
-typedef enum xcb_xkb_im_flag_t {
- XCB_XKB_IM_FLAG_NO_EXPLICIT = 128,
- XCB_XKB_IM_FLAG_NO_AUTOMATIC = 64,
- XCB_XKB_IM_FLAG_LED_DRIVES_KB = 32
-} xcb_xkb_im_flag_t;
-
-typedef enum xcb_xkb_im_mods_which_t {
- XCB_XKB_IM_MODS_WHICH_USE_COMPAT = 16,
- XCB_XKB_IM_MODS_WHICH_USE_EFFECTIVE = 8,
- XCB_XKB_IM_MODS_WHICH_USE_LOCKED = 4,
- XCB_XKB_IM_MODS_WHICH_USE_LATCHED = 2,
- XCB_XKB_IM_MODS_WHICH_USE_BASE = 1
-} xcb_xkb_im_mods_which_t;
-
-typedef enum xcb_xkb_im_groups_which_t {
- XCB_XKB_IM_GROUPS_WHICH_USE_COMPAT = 16,
- XCB_XKB_IM_GROUPS_WHICH_USE_EFFECTIVE = 8,
- XCB_XKB_IM_GROUPS_WHICH_USE_LOCKED = 4,
- XCB_XKB_IM_GROUPS_WHICH_USE_LATCHED = 2,
- XCB_XKB_IM_GROUPS_WHICH_USE_BASE = 1
-} xcb_xkb_im_groups_which_t;
-
-/**
- * @brief xcb_xkb_indicator_map_t
- **/
-typedef struct xcb_xkb_indicator_map_t {
- uint8_t flags; /**< */
- uint8_t whichGroups; /**< */
- uint8_t groups; /**< */
- uint8_t whichMods; /**< */
- uint8_t mods; /**< */
- uint8_t realMods; /**< */
- uint16_t vmods; /**< */
- uint32_t ctrls; /**< */
-} xcb_xkb_indicator_map_t;
-
-/**
- * @brief xcb_xkb_indicator_map_iterator_t
- **/
-typedef struct xcb_xkb_indicator_map_iterator_t {
- xcb_xkb_indicator_map_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_indicator_map_iterator_t;
-
-typedef enum xcb_xkb_cm_detail_t {
- XCB_XKB_CM_DETAIL_SYM_INTERP = 1,
- XCB_XKB_CM_DETAIL_GROUP_COMPAT = 2
-} xcb_xkb_cm_detail_t;
-
-typedef enum xcb_xkb_name_detail_t {
- XCB_XKB_NAME_DETAIL_KEYCODES = 1,
- XCB_XKB_NAME_DETAIL_GEOMETRY = 2,
- XCB_XKB_NAME_DETAIL_SYMBOLS = 4,
- XCB_XKB_NAME_DETAIL_PHYS_SYMBOLS = 8,
- XCB_XKB_NAME_DETAIL_TYPES = 16,
- XCB_XKB_NAME_DETAIL_COMPAT = 32,
- XCB_XKB_NAME_DETAIL_KEY_TYPE_NAMES = 64,
- XCB_XKB_NAME_DETAIL_KT_LEVEL_NAMES = 128,
- XCB_XKB_NAME_DETAIL_INDICATOR_NAMES = 256,
- XCB_XKB_NAME_DETAIL_KEY_NAMES = 512,
- XCB_XKB_NAME_DETAIL_KEY_ALIASES = 1024,
- XCB_XKB_NAME_DETAIL_VIRTUAL_MOD_NAMES = 2048,
- XCB_XKB_NAME_DETAIL_GROUP_NAMES = 4096,
- XCB_XKB_NAME_DETAIL_RG_NAMES = 8192
-} xcb_xkb_name_detail_t;
-
-typedef enum xcb_xkb_gbn_detail_t {
- XCB_XKB_GBN_DETAIL_TYPES = 1,
- XCB_XKB_GBN_DETAIL_COMPAT_MAP = 2,
- XCB_XKB_GBN_DETAIL_CLIENT_SYMBOLS = 4,
- XCB_XKB_GBN_DETAIL_SERVER_SYMBOLS = 8,
- XCB_XKB_GBN_DETAIL_INDICATOR_MAPS = 16,
- XCB_XKB_GBN_DETAIL_KEY_NAMES = 32,
- XCB_XKB_GBN_DETAIL_GEOMETRY = 64,
- XCB_XKB_GBN_DETAIL_OTHER_NAMES = 128
-} xcb_xkb_gbn_detail_t;
-
-typedef enum xcb_xkb_xi_feature_t {
- XCB_XKB_XI_FEATURE_KEYBOARDS = 1,
- XCB_XKB_XI_FEATURE_BUTTON_ACTIONS = 2,
- XCB_XKB_XI_FEATURE_INDICATOR_NAMES = 4,
- XCB_XKB_XI_FEATURE_INDICATOR_MAPS = 8,
- XCB_XKB_XI_FEATURE_INDICATOR_STATE = 16
-} xcb_xkb_xi_feature_t;
-
-typedef enum xcb_xkb_per_client_flag_t {
- XCB_XKB_PER_CLIENT_FLAG_DETECTABLE_AUTO_REPEAT = 1,
- XCB_XKB_PER_CLIENT_FLAG_GRABS_USE_XKB_STATE = 2,
- XCB_XKB_PER_CLIENT_FLAG_AUTO_RESET_CONTROLS = 4,
- XCB_XKB_PER_CLIENT_FLAG_LOOKUP_STATE_WHEN_GRABBED = 8,
- XCB_XKB_PER_CLIENT_FLAG_SEND_EVENT_USES_XKB_STATE = 16
-} xcb_xkb_per_client_flag_t;
-
-/**
- * @brief xcb_xkb_mod_def_t
- **/
-typedef struct xcb_xkb_mod_def_t {
- uint8_t mask; /**< */
- uint8_t realMods; /**< */
- uint16_t vmods; /**< */
-} xcb_xkb_mod_def_t;
-
-/**
- * @brief xcb_xkb_mod_def_iterator_t
- **/
-typedef struct xcb_xkb_mod_def_iterator_t {
- xcb_xkb_mod_def_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_mod_def_iterator_t;
-
-/**
- * @brief xcb_xkb_key_name_t
- **/
-typedef struct xcb_xkb_key_name_t {
- char name[4]; /**< */
-} xcb_xkb_key_name_t;
-
-/**
- * @brief xcb_xkb_key_name_iterator_t
- **/
-typedef struct xcb_xkb_key_name_iterator_t {
- xcb_xkb_key_name_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_key_name_iterator_t;
-
-/**
- * @brief xcb_xkb_key_alias_t
- **/
-typedef struct xcb_xkb_key_alias_t {
- char real[4]; /**< */
- char alias[4]; /**< */
-} xcb_xkb_key_alias_t;
-
-/**
- * @brief xcb_xkb_key_alias_iterator_t
- **/
-typedef struct xcb_xkb_key_alias_iterator_t {
- xcb_xkb_key_alias_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_key_alias_iterator_t;
-
-/**
- * @brief xcb_xkb_counted_string_16_t
- **/
-typedef struct xcb_xkb_counted_string_16_t {
- uint16_t length; /**< */
-} xcb_xkb_counted_string_16_t;
-
-/**
- * @brief xcb_xkb_counted_string_16_iterator_t
- **/
-typedef struct xcb_xkb_counted_string_16_iterator_t {
- xcb_xkb_counted_string_16_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_counted_string_16_iterator_t;
-
-/**
- * @brief xcb_xkb_kt_map_entry_t
- **/
-typedef struct xcb_xkb_kt_map_entry_t {
- uint8_t active; /**< */
- uint8_t mods_mask; /**< */
- uint8_t level; /**< */
- uint8_t mods_mods; /**< */
- uint16_t mods_vmods; /**< */
- uint8_t pad0[2]; /**< */
-} xcb_xkb_kt_map_entry_t;
-
-/**
- * @brief xcb_xkb_kt_map_entry_iterator_t
- **/
-typedef struct xcb_xkb_kt_map_entry_iterator_t {
- xcb_xkb_kt_map_entry_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_kt_map_entry_iterator_t;
-
-/**
- * @brief xcb_xkb_key_type_t
- **/
-typedef struct xcb_xkb_key_type_t {
- uint8_t mods_mask; /**< */
- uint8_t mods_mods; /**< */
- uint16_t mods_vmods; /**< */
- uint8_t numLevels; /**< */
- uint8_t nMapEntries; /**< */
- uint8_t hasPreserve; /**< */
- uint8_t pad0; /**< */
-} xcb_xkb_key_type_t;
-
-/**
- * @brief xcb_xkb_key_type_iterator_t
- **/
-typedef struct xcb_xkb_key_type_iterator_t {
- xcb_xkb_key_type_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_key_type_iterator_t;
-
-/**
- * @brief xcb_xkb_key_sym_map_t
- **/
-typedef struct xcb_xkb_key_sym_map_t {
- uint8_t kt_index[4]; /**< */
- uint8_t groupInfo; /**< */
- uint8_t width; /**< */
- uint16_t nSyms; /**< */
-} xcb_xkb_key_sym_map_t;
-
-/**
- * @brief xcb_xkb_key_sym_map_iterator_t
- **/
-typedef struct xcb_xkb_key_sym_map_iterator_t {
- xcb_xkb_key_sym_map_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_key_sym_map_iterator_t;
-
-/**
- * @brief xcb_xkb_common_behavior_t
- **/
-typedef struct xcb_xkb_common_behavior_t {
- uint8_t type; /**< */
- uint8_t data; /**< */
-} xcb_xkb_common_behavior_t;
-
-/**
- * @brief xcb_xkb_common_behavior_iterator_t
- **/
-typedef struct xcb_xkb_common_behavior_iterator_t {
- xcb_xkb_common_behavior_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_common_behavior_iterator_t;
-
-/**
- * @brief xcb_xkb_default_behavior_t
- **/
-typedef struct xcb_xkb_default_behavior_t {
- uint8_t type; /**< */
- uint8_t pad0; /**< */
-} xcb_xkb_default_behavior_t;
-
-/**
- * @brief xcb_xkb_default_behavior_iterator_t
- **/
-typedef struct xcb_xkb_default_behavior_iterator_t {
- xcb_xkb_default_behavior_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_default_behavior_iterator_t;
-
-/**
- * @brief xcb_xkb_lock_behavior_t
- **/
-typedef struct xcb_xkb_lock_behavior_t {
- uint8_t type; /**< */
- uint8_t pad0; /**< */
-} xcb_xkb_lock_behavior_t;
-
-/**
- * @brief xcb_xkb_lock_behavior_iterator_t
- **/
-typedef struct xcb_xkb_lock_behavior_iterator_t {
- xcb_xkb_lock_behavior_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_lock_behavior_iterator_t;
-
-/**
- * @brief xcb_xkb_radio_group_behavior_t
- **/
-typedef struct xcb_xkb_radio_group_behavior_t {
- uint8_t type; /**< */
- uint8_t group; /**< */
-} xcb_xkb_radio_group_behavior_t;
-
-/**
- * @brief xcb_xkb_radio_group_behavior_iterator_t
- **/
-typedef struct xcb_xkb_radio_group_behavior_iterator_t {
- xcb_xkb_radio_group_behavior_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_radio_group_behavior_iterator_t;
-
-/**
- * @brief xcb_xkb_overlay_behavior_t
- **/
-typedef struct xcb_xkb_overlay_behavior_t {
- uint8_t type; /**< */
- xcb_keycode_t key; /**< */
-} xcb_xkb_overlay_behavior_t;
-
-/**
- * @brief xcb_xkb_overlay_behavior_iterator_t
- **/
-typedef struct xcb_xkb_overlay_behavior_iterator_t {
- xcb_xkb_overlay_behavior_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_overlay_behavior_iterator_t;
-
-/**
- * @brief xcb_xkb_permament_lock_behavior_t
- **/
-typedef struct xcb_xkb_permament_lock_behavior_t {
- uint8_t type; /**< */
- uint8_t pad0; /**< */
-} xcb_xkb_permament_lock_behavior_t;
-
-/**
- * @brief xcb_xkb_permament_lock_behavior_iterator_t
- **/
-typedef struct xcb_xkb_permament_lock_behavior_iterator_t {
- xcb_xkb_permament_lock_behavior_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_permament_lock_behavior_iterator_t;
-
-/**
- * @brief xcb_xkb_permament_radio_group_behavior_t
- **/
-typedef struct xcb_xkb_permament_radio_group_behavior_t {
- uint8_t type; /**< */
- uint8_t group; /**< */
-} xcb_xkb_permament_radio_group_behavior_t;
-
-/**
- * @brief xcb_xkb_permament_radio_group_behavior_iterator_t
- **/
-typedef struct xcb_xkb_permament_radio_group_behavior_iterator_t {
- xcb_xkb_permament_radio_group_behavior_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_permament_radio_group_behavior_iterator_t;
-
-/**
- * @brief xcb_xkb_permament_overlay_behavior_t
- **/
-typedef struct xcb_xkb_permament_overlay_behavior_t {
- uint8_t type; /**< */
- xcb_keycode_t key; /**< */
-} xcb_xkb_permament_overlay_behavior_t;
-
-/**
- * @brief xcb_xkb_permament_overlay_behavior_iterator_t
- **/
-typedef struct xcb_xkb_permament_overlay_behavior_iterator_t {
- xcb_xkb_permament_overlay_behavior_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_permament_overlay_behavior_iterator_t;
-
-/**
- * @brief xcb_xkb_behavior_t
- **/
-typedef union xcb_xkb_behavior_t {
- xcb_xkb_common_behavior_t common; /**< */
- xcb_xkb_default_behavior_t _default; /**< */
- xcb_xkb_lock_behavior_t lock; /**< */
- xcb_xkb_radio_group_behavior_t radioGroup; /**< */
- xcb_xkb_overlay_behavior_t overlay1; /**< */
- xcb_xkb_overlay_behavior_t overlay2; /**< */
- xcb_xkb_permament_lock_behavior_t permamentLock; /**< */
- xcb_xkb_permament_radio_group_behavior_t permamentRadioGroup; /**< */
- xcb_xkb_permament_overlay_behavior_t permamentOverlay1; /**< */
- xcb_xkb_permament_overlay_behavior_t permamentOverlay2; /**< */
- uint8_t type; /**< */
-} xcb_xkb_behavior_t;
-
-/**
- * @brief xcb_xkb_behavior_iterator_t
- **/
-typedef struct xcb_xkb_behavior_iterator_t {
- xcb_xkb_behavior_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_behavior_iterator_t;
-
-typedef enum xcb_xkb_behavior_type_t {
- XCB_XKB_BEHAVIOR_TYPE_DEFAULT = 0,
- XCB_XKB_BEHAVIOR_TYPE_LOCK = 1,
- XCB_XKB_BEHAVIOR_TYPE_RADIO_GROUP = 2,
- XCB_XKB_BEHAVIOR_TYPE_OVERLAY_1 = 3,
- XCB_XKB_BEHAVIOR_TYPE_OVERLAY_2 = 4,
- XCB_XKB_BEHAVIOR_TYPE_PERMAMENT_LOCK = 129,
- XCB_XKB_BEHAVIOR_TYPE_PERMAMENT_RADIO_GROUP = 130,
- XCB_XKB_BEHAVIOR_TYPE_PERMAMENT_OVERLAY_1 = 131,
- XCB_XKB_BEHAVIOR_TYPE_PERMAMENT_OVERLAY_2 = 132
-} xcb_xkb_behavior_type_t;
-
-/**
- * @brief xcb_xkb_set_behavior_t
- **/
-typedef struct xcb_xkb_set_behavior_t {
- xcb_keycode_t keycode; /**< */
- xcb_xkb_behavior_t behavior; /**< */
- uint8_t pad0; /**< */
-} xcb_xkb_set_behavior_t;
-
-/**
- * @brief xcb_xkb_set_behavior_iterator_t
- **/
-typedef struct xcb_xkb_set_behavior_iterator_t {
- xcb_xkb_set_behavior_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_set_behavior_iterator_t;
-
-/**
- * @brief xcb_xkb_set_explicit_t
- **/
-typedef struct xcb_xkb_set_explicit_t {
- xcb_keycode_t keycode; /**< */
- uint8_t explicit; /**< */
-} xcb_xkb_set_explicit_t;
-
-/**
- * @brief xcb_xkb_set_explicit_iterator_t
- **/
-typedef struct xcb_xkb_set_explicit_iterator_t {
- xcb_xkb_set_explicit_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_set_explicit_iterator_t;
-
-/**
- * @brief xcb_xkb_key_mod_map_t
- **/
-typedef struct xcb_xkb_key_mod_map_t {
- xcb_keycode_t keycode; /**< */
- uint8_t mods; /**< */
-} xcb_xkb_key_mod_map_t;
-
-/**
- * @brief xcb_xkb_key_mod_map_iterator_t
- **/
-typedef struct xcb_xkb_key_mod_map_iterator_t {
- xcb_xkb_key_mod_map_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_key_mod_map_iterator_t;
-
-/**
- * @brief xcb_xkb_key_v_mod_map_t
- **/
-typedef struct xcb_xkb_key_v_mod_map_t {
- xcb_keycode_t keycode; /**< */
- uint8_t pad0; /**< */
- uint16_t vmods; /**< */
-} xcb_xkb_key_v_mod_map_t;
-
-/**
- * @brief xcb_xkb_key_v_mod_map_iterator_t
- **/
-typedef struct xcb_xkb_key_v_mod_map_iterator_t {
- xcb_xkb_key_v_mod_map_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_key_v_mod_map_iterator_t;
-
-/**
- * @brief xcb_xkb_kt_set_map_entry_t
- **/
-typedef struct xcb_xkb_kt_set_map_entry_t {
- uint8_t level; /**< */
- uint8_t realMods; /**< */
- uint16_t virtualMods; /**< */
-} xcb_xkb_kt_set_map_entry_t;
-
-/**
- * @brief xcb_xkb_kt_set_map_entry_iterator_t
- **/
-typedef struct xcb_xkb_kt_set_map_entry_iterator_t {
- xcb_xkb_kt_set_map_entry_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_kt_set_map_entry_iterator_t;
-
-/**
- * @brief xcb_xkb_set_key_type_t
- **/
-typedef struct xcb_xkb_set_key_type_t {
- uint8_t mask; /**< */
- uint8_t realMods; /**< */
- uint16_t virtualMods; /**< */
- uint8_t numLevels; /**< */
- uint8_t nMapEntries; /**< */
- uint8_t preserve; /**< */
- uint8_t pad0; /**< */
-} xcb_xkb_set_key_type_t;
-
-/**
- * @brief xcb_xkb_set_key_type_iterator_t
- **/
-typedef struct xcb_xkb_set_key_type_iterator_t {
- xcb_xkb_set_key_type_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_set_key_type_iterator_t;
-
-typedef char xcb_xkb_string8_t;
-
-/**
- * @brief xcb_xkb_string8_iterator_t
- **/
-typedef struct xcb_xkb_string8_iterator_t {
- xcb_xkb_string8_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_string8_iterator_t;
-
-/**
- * @brief xcb_xkb_outline_t
- **/
-typedef struct xcb_xkb_outline_t {
- uint8_t nPoints; /**< */
- uint8_t cornerRadius; /**< */
- uint8_t pad0[2]; /**< */
-} xcb_xkb_outline_t;
-
-/**
- * @brief xcb_xkb_outline_iterator_t
- **/
-typedef struct xcb_xkb_outline_iterator_t {
- xcb_xkb_outline_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_outline_iterator_t;
-
-/**
- * @brief xcb_xkb_shape_t
- **/
-typedef struct xcb_xkb_shape_t {
- xcb_atom_t name; /**< */
- uint8_t nOutlines; /**< */
- uint8_t primaryNdx; /**< */
- uint8_t approxNdx; /**< */
- uint8_t pad0; /**< */
-} xcb_xkb_shape_t;
-
-/**
- * @brief xcb_xkb_shape_iterator_t
- **/
-typedef struct xcb_xkb_shape_iterator_t {
- xcb_xkb_shape_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_shape_iterator_t;
-
-/**
- * @brief xcb_xkb_key_t
- **/
-typedef struct xcb_xkb_key_t {
- xcb_xkb_string8_t name[4]; /**< */
- int16_t gap; /**< */
- uint8_t shapeNdx; /**< */
- uint8_t colorNdx; /**< */
-} xcb_xkb_key_t;
-
-/**
- * @brief xcb_xkb_key_iterator_t
- **/
-typedef struct xcb_xkb_key_iterator_t {
- xcb_xkb_key_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_key_iterator_t;
-
-/**
- * @brief xcb_xkb_overlay_key_t
- **/
-typedef struct xcb_xkb_overlay_key_t {
- xcb_xkb_string8_t over[4]; /**< */
- xcb_xkb_string8_t under[4]; /**< */
-} xcb_xkb_overlay_key_t;
-
-/**
- * @brief xcb_xkb_overlay_key_iterator_t
- **/
-typedef struct xcb_xkb_overlay_key_iterator_t {
- xcb_xkb_overlay_key_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_overlay_key_iterator_t;
-
-/**
- * @brief xcb_xkb_overlay_row_t
- **/
-typedef struct xcb_xkb_overlay_row_t {
- uint8_t rowUnder; /**< */
- uint8_t nKeys; /**< */
- uint8_t pad0[2]; /**< */
-} xcb_xkb_overlay_row_t;
-
-/**
- * @brief xcb_xkb_overlay_row_iterator_t
- **/
-typedef struct xcb_xkb_overlay_row_iterator_t {
- xcb_xkb_overlay_row_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_overlay_row_iterator_t;
-
-/**
- * @brief xcb_xkb_overlay_t
- **/
-typedef struct xcb_xkb_overlay_t {
- xcb_atom_t name; /**< */
- uint8_t nRows; /**< */
- uint8_t pad0[3]; /**< */
-} xcb_xkb_overlay_t;
-
-/**
- * @brief xcb_xkb_overlay_iterator_t
- **/
-typedef struct xcb_xkb_overlay_iterator_t {
- xcb_xkb_overlay_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_overlay_iterator_t;
-
-/**
- * @brief xcb_xkb_row_t
- **/
-typedef struct xcb_xkb_row_t {
- int16_t top; /**< */
- int16_t left; /**< */
- uint8_t nKeys; /**< */
- uint8_t vertical; /**< */
- uint8_t pad0[2]; /**< */
-} xcb_xkb_row_t;
-
-/**
- * @brief xcb_xkb_row_iterator_t
- **/
-typedef struct xcb_xkb_row_iterator_t {
- xcb_xkb_row_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_row_iterator_t;
-
-typedef enum xcb_xkb_doodad_type_t {
- XCB_XKB_DOODAD_TYPE_OUTLINE = 1,
- XCB_XKB_DOODAD_TYPE_SOLID = 2,
- XCB_XKB_DOODAD_TYPE_TEXT = 3,
- XCB_XKB_DOODAD_TYPE_INDICATOR = 4,
- XCB_XKB_DOODAD_TYPE_LOGO = 5
-} xcb_xkb_doodad_type_t;
-
-/**
- * @brief xcb_xkb_listing_t
- **/
-typedef struct xcb_xkb_listing_t {
- uint16_t flags; /**< */
- uint16_t length; /**< */
-} xcb_xkb_listing_t;
-
-/**
- * @brief xcb_xkb_listing_iterator_t
- **/
-typedef struct xcb_xkb_listing_iterator_t {
- xcb_xkb_listing_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_listing_iterator_t;
-
-/**
- * @brief xcb_xkb_device_led_info_t
- **/
-typedef struct xcb_xkb_device_led_info_t {
- xcb_xkb_led_class_spec_t ledClass; /**< */
- xcb_xkb_id_spec_t ledID; /**< */
- uint32_t namesPresent; /**< */
- uint32_t mapsPresent; /**< */
- uint32_t physIndicators; /**< */
- uint32_t state; /**< */
-} xcb_xkb_device_led_info_t;
-
-/**
- * @brief xcb_xkb_device_led_info_iterator_t
- **/
-typedef struct xcb_xkb_device_led_info_iterator_t {
- xcb_xkb_device_led_info_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_device_led_info_iterator_t;
-
-typedef enum xcb_xkb_error_t {
- XCB_XKB_ERROR_BAD_DEVICE = 255,
- XCB_XKB_ERROR_BAD_CLASS = 254,
- XCB_XKB_ERROR_BAD_ID = 253
-} xcb_xkb_error_t;
-
-/** Opcode for xcb_xkb_keyboard. */
-#define XCB_XKB_KEYBOARD 0
-
-/**
- * @brief xcb_xkb_keyboard_error_t
- **/
-typedef struct xcb_xkb_keyboard_error_t {
- uint8_t response_type; /**< */
- uint8_t error_code; /**< */
- uint16_t sequence; /**< */
- uint32_t value; /**< */
- uint16_t minorOpcode; /**< */
- uint8_t majorOpcode; /**< */
- uint8_t pad0[21]; /**< */
-} xcb_xkb_keyboard_error_t;
-
-typedef enum xcb_xkb_sa_t {
- XCB_XKB_SA_CLEAR_LOCKS = 1,
- XCB_XKB_SA_LATCH_TO_LOCK = 2,
- XCB_XKB_SA_USE_MOD_MAP_MODS = 4,
- XCB_XKB_SA_GROUP_ABSOLUTE = 4
-} xcb_xkb_sa_t;
-
-typedef enum xcb_xkb_sa_type_t {
- XCB_XKB_SA_TYPE_NO_ACTION = 0,
- XCB_XKB_SA_TYPE_SET_MODS = 1,
- XCB_XKB_SA_TYPE_LATCH_MODS = 2,
- XCB_XKB_SA_TYPE_LOCK_MODS = 3,
- XCB_XKB_SA_TYPE_SET_GROUP = 4,
- XCB_XKB_SA_TYPE_LATCH_GROUP = 5,
- XCB_XKB_SA_TYPE_LOCK_GROUP = 6,
- XCB_XKB_SA_TYPE_MOVE_PTR = 7,
- XCB_XKB_SA_TYPE_PTR_BTN = 8,
- XCB_XKB_SA_TYPE_LOCK_PTR_BTN = 9,
- XCB_XKB_SA_TYPE_SET_PTR_DFLT = 10,
- XCB_XKB_SA_TYPE_ISO_LOCK = 11,
- XCB_XKB_SA_TYPE_TERMINATE = 12,
- XCB_XKB_SA_TYPE_SWITCH_SCREEN = 13,
- XCB_XKB_SA_TYPE_SET_CONTROLS = 14,
- XCB_XKB_SA_TYPE_LOCK_CONTROLS = 15,
- XCB_XKB_SA_TYPE_ACTION_MESSAGE = 16,
- XCB_XKB_SA_TYPE_REDIRECT_KEY = 17,
- XCB_XKB_SA_TYPE_DEVICE_BTN = 18,
- XCB_XKB_SA_TYPE_LOCK_DEVICE_BTN = 19,
- XCB_XKB_SA_TYPE_DEVICE_VALUATOR = 20
-} xcb_xkb_sa_type_t;
-
-/**
- * @brief xcb_xkb_sa_no_action_t
- **/
-typedef struct xcb_xkb_sa_no_action_t {
- uint8_t type; /**< */
- uint8_t pad0[7]; /**< */
-} xcb_xkb_sa_no_action_t;
-
-/**
- * @brief xcb_xkb_sa_no_action_iterator_t
- **/
-typedef struct xcb_xkb_sa_no_action_iterator_t {
- xcb_xkb_sa_no_action_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_sa_no_action_iterator_t;
-
-/**
- * @brief xcb_xkb_sa_set_mods_t
- **/
-typedef struct xcb_xkb_sa_set_mods_t {
- uint8_t type; /**< */
- uint8_t flags; /**< */
- uint8_t mask; /**< */
- uint8_t realMods; /**< */
- uint8_t vmodsHigh; /**< */
- uint8_t vmodsLow; /**< */
- uint8_t pad0[2]; /**< */
-} xcb_xkb_sa_set_mods_t;
-
-/**
- * @brief xcb_xkb_sa_set_mods_iterator_t
- **/
-typedef struct xcb_xkb_sa_set_mods_iterator_t {
- xcb_xkb_sa_set_mods_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_sa_set_mods_iterator_t;
-
-/**
- * @brief xcb_xkb_sa_latch_mods_t
- **/
-typedef struct xcb_xkb_sa_latch_mods_t {
- uint8_t type; /**< */
- uint8_t flags; /**< */
- uint8_t mask; /**< */
- uint8_t realMods; /**< */
- uint8_t vmodsHigh; /**< */
- uint8_t vmodsLow; /**< */
- uint8_t pad0[2]; /**< */
-} xcb_xkb_sa_latch_mods_t;
-
-/**
- * @brief xcb_xkb_sa_latch_mods_iterator_t
- **/
-typedef struct xcb_xkb_sa_latch_mods_iterator_t {
- xcb_xkb_sa_latch_mods_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_sa_latch_mods_iterator_t;
-
-/**
- * @brief xcb_xkb_sa_lock_mods_t
- **/
-typedef struct xcb_xkb_sa_lock_mods_t {
- uint8_t type; /**< */
- uint8_t flags; /**< */
- uint8_t mask; /**< */
- uint8_t realMods; /**< */
- uint8_t vmodsHigh; /**< */
- uint8_t vmodsLow; /**< */
- uint8_t pad0[2]; /**< */
-} xcb_xkb_sa_lock_mods_t;
-
-/**
- * @brief xcb_xkb_sa_lock_mods_iterator_t
- **/
-typedef struct xcb_xkb_sa_lock_mods_iterator_t {
- xcb_xkb_sa_lock_mods_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_sa_lock_mods_iterator_t;
-
-/**
- * @brief xcb_xkb_sa_set_group_t
- **/
-typedef struct xcb_xkb_sa_set_group_t {
- uint8_t type; /**< */
- uint8_t flags; /**< */
- int8_t group; /**< */
- uint8_t pad0[5]; /**< */
-} xcb_xkb_sa_set_group_t;
-
-/**
- * @brief xcb_xkb_sa_set_group_iterator_t
- **/
-typedef struct xcb_xkb_sa_set_group_iterator_t {
- xcb_xkb_sa_set_group_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_sa_set_group_iterator_t;
-
-/**
- * @brief xcb_xkb_sa_latch_group_t
- **/
-typedef struct xcb_xkb_sa_latch_group_t {
- uint8_t type; /**< */
- uint8_t flags; /**< */
- int8_t group; /**< */
- uint8_t pad0[5]; /**< */
-} xcb_xkb_sa_latch_group_t;
-
-/**
- * @brief xcb_xkb_sa_latch_group_iterator_t
- **/
-typedef struct xcb_xkb_sa_latch_group_iterator_t {
- xcb_xkb_sa_latch_group_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_sa_latch_group_iterator_t;
-
-/**
- * @brief xcb_xkb_sa_lock_group_t
- **/
-typedef struct xcb_xkb_sa_lock_group_t {
- uint8_t type; /**< */
- uint8_t flags; /**< */
- int8_t group; /**< */
- uint8_t pad0[5]; /**< */
-} xcb_xkb_sa_lock_group_t;
-
-/**
- * @brief xcb_xkb_sa_lock_group_iterator_t
- **/
-typedef struct xcb_xkb_sa_lock_group_iterator_t {
- xcb_xkb_sa_lock_group_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_sa_lock_group_iterator_t;
-
-typedef enum xcb_xkb_sa_move_ptr_flag_t {
- XCB_XKB_SA_MOVE_PTR_FLAG_NO_ACCELERATION = 1,
- XCB_XKB_SA_MOVE_PTR_FLAG_MOVE_ABSOLUTE_X = 2,
- XCB_XKB_SA_MOVE_PTR_FLAG_MOVE_ABSOLUTE_Y = 4
-} xcb_xkb_sa_move_ptr_flag_t;
-
-/**
- * @brief xcb_xkb_sa_move_ptr_t
- **/
-typedef struct xcb_xkb_sa_move_ptr_t {
- uint8_t type; /**< */
- uint8_t flags; /**< */
- int8_t xHigh; /**< */
- uint8_t xLow; /**< */
- int8_t yHigh; /**< */
- uint8_t yLow; /**< */
- uint8_t pad0[2]; /**< */
-} xcb_xkb_sa_move_ptr_t;
-
-/**
- * @brief xcb_xkb_sa_move_ptr_iterator_t
- **/
-typedef struct xcb_xkb_sa_move_ptr_iterator_t {
- xcb_xkb_sa_move_ptr_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_sa_move_ptr_iterator_t;
-
-/**
- * @brief xcb_xkb_sa_ptr_btn_t
- **/
-typedef struct xcb_xkb_sa_ptr_btn_t {
- uint8_t type; /**< */
- uint8_t flags; /**< */
- uint8_t count; /**< */
- uint8_t button; /**< */
- uint8_t pad0[4]; /**< */
-} xcb_xkb_sa_ptr_btn_t;
-
-/**
- * @brief xcb_xkb_sa_ptr_btn_iterator_t
- **/
-typedef struct xcb_xkb_sa_ptr_btn_iterator_t {
- xcb_xkb_sa_ptr_btn_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_sa_ptr_btn_iterator_t;
-
-/**
- * @brief xcb_xkb_sa_lock_ptr_btn_t
- **/
-typedef struct xcb_xkb_sa_lock_ptr_btn_t {
- uint8_t type; /**< */
- uint8_t flags; /**< */
- uint8_t pad0; /**< */
- uint8_t button; /**< */
- uint8_t pad1[4]; /**< */
-} xcb_xkb_sa_lock_ptr_btn_t;
-
-/**
- * @brief xcb_xkb_sa_lock_ptr_btn_iterator_t
- **/
-typedef struct xcb_xkb_sa_lock_ptr_btn_iterator_t {
- xcb_xkb_sa_lock_ptr_btn_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_sa_lock_ptr_btn_iterator_t;
-
-typedef enum xcb_xkb_sa_set_ptr_dflt_flag_t {
- XCB_XKB_SA_SET_PTR_DFLT_FLAG_DFLT_BTN_ABSOLUTE = 4,
- XCB_XKB_SA_SET_PTR_DFLT_FLAG_AFFECT_DFLT_BUTTON = 1
-} xcb_xkb_sa_set_ptr_dflt_flag_t;
-
-/**
- * @brief xcb_xkb_sa_set_ptr_dflt_t
- **/
-typedef struct xcb_xkb_sa_set_ptr_dflt_t {
- uint8_t type; /**< */
- uint8_t flags; /**< */
- uint8_t affect; /**< */
- int8_t value; /**< */
- uint8_t pad0[4]; /**< */
-} xcb_xkb_sa_set_ptr_dflt_t;
-
-/**
- * @brief xcb_xkb_sa_set_ptr_dflt_iterator_t
- **/
-typedef struct xcb_xkb_sa_set_ptr_dflt_iterator_t {
- xcb_xkb_sa_set_ptr_dflt_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_sa_set_ptr_dflt_iterator_t;
-
-typedef enum xcb_xkb_sa_iso_lock_flag_t {
- XCB_XKB_SA_ISO_LOCK_FLAG_NO_LOCK = 1,
- XCB_XKB_SA_ISO_LOCK_FLAG_NO_UNLOCK = 2,
- XCB_XKB_SA_ISO_LOCK_FLAG_USE_MOD_MAP_MODS = 4,
- XCB_XKB_SA_ISO_LOCK_FLAG_GROUP_ABSOLUTE = 4,
- XCB_XKB_SA_ISO_LOCK_FLAG_ISO_DFLT_IS_GROUP = 8
-} xcb_xkb_sa_iso_lock_flag_t;
-
-typedef enum xcb_xkb_sa_iso_lock_no_affect_t {
- XCB_XKB_SA_ISO_LOCK_NO_AFFECT_CTRLS = 8,
- XCB_XKB_SA_ISO_LOCK_NO_AFFECT_PTR = 16,
- XCB_XKB_SA_ISO_LOCK_NO_AFFECT_GROUP = 32,
- XCB_XKB_SA_ISO_LOCK_NO_AFFECT_MODS = 64
-} xcb_xkb_sa_iso_lock_no_affect_t;
-
-/**
- * @brief xcb_xkb_sa_iso_lock_t
- **/
-typedef struct xcb_xkb_sa_iso_lock_t {
- uint8_t type; /**< */
- uint8_t flags; /**< */
- uint8_t mask; /**< */
- uint8_t realMods; /**< */
- int8_t group; /**< */
- uint8_t affect; /**< */
- uint8_t vmodsHigh; /**< */
- uint8_t vmodsLow; /**< */
-} xcb_xkb_sa_iso_lock_t;
-
-/**
- * @brief xcb_xkb_sa_iso_lock_iterator_t
- **/
-typedef struct xcb_xkb_sa_iso_lock_iterator_t {
- xcb_xkb_sa_iso_lock_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_sa_iso_lock_iterator_t;
-
-/**
- * @brief xcb_xkb_sa_terminate_t
- **/
-typedef struct xcb_xkb_sa_terminate_t {
- uint8_t type; /**< */
- uint8_t pad0[7]; /**< */
-} xcb_xkb_sa_terminate_t;
-
-/**
- * @brief xcb_xkb_sa_terminate_iterator_t
- **/
-typedef struct xcb_xkb_sa_terminate_iterator_t {
- xcb_xkb_sa_terminate_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_sa_terminate_iterator_t;
-
-typedef enum xcb_xkb_switch_screen_flag_t {
- XCB_XKB_SWITCH_SCREEN_FLAG_APPLICATION = 1,
- XCB_XKB_SWITCH_SCREEN_FLAG_ABSOLUTE = 4
-} xcb_xkb_switch_screen_flag_t;
-
-/**
- * @brief xcb_xkb_sa_switch_screen_t
- **/
-typedef struct xcb_xkb_sa_switch_screen_t {
- uint8_t type; /**< */
- uint8_t flags; /**< */
- int8_t newScreen; /**< */
- uint8_t pad0[5]; /**< */
-} xcb_xkb_sa_switch_screen_t;
-
-/**
- * @brief xcb_xkb_sa_switch_screen_iterator_t
- **/
-typedef struct xcb_xkb_sa_switch_screen_iterator_t {
- xcb_xkb_sa_switch_screen_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_sa_switch_screen_iterator_t;
-
-typedef enum xcb_xkb_bool_ctrls_high_t {
- XCB_XKB_BOOL_CTRLS_HIGH_ACCESS_X_FEEDBACK = 1,
- XCB_XKB_BOOL_CTRLS_HIGH_AUDIBLE_BELL = 2,
- XCB_XKB_BOOL_CTRLS_HIGH_OVERLAY_1 = 4,
- XCB_XKB_BOOL_CTRLS_HIGH_OVERLAY_2 = 8,
- XCB_XKB_BOOL_CTRLS_HIGH_IGNORE_GROUP_LOCK = 16
-} xcb_xkb_bool_ctrls_high_t;
-
-typedef enum xcb_xkb_bool_ctrls_low_t {
- XCB_XKB_BOOL_CTRLS_LOW_REPEAT_KEYS = 1,
- XCB_XKB_BOOL_CTRLS_LOW_SLOW_KEYS = 2,
- XCB_XKB_BOOL_CTRLS_LOW_BOUNCE_KEYS = 4,
- XCB_XKB_BOOL_CTRLS_LOW_STICKY_KEYS = 8,
- XCB_XKB_BOOL_CTRLS_LOW_MOUSE_KEYS = 16,
- XCB_XKB_BOOL_CTRLS_LOW_MOUSE_KEYS_ACCEL = 32,
- XCB_XKB_BOOL_CTRLS_LOW_ACCESS_X_KEYS = 64,
- XCB_XKB_BOOL_CTRLS_LOW_ACCESS_X_TIMEOUT = 128
-} xcb_xkb_bool_ctrls_low_t;
-
-/**
- * @brief xcb_xkb_sa_set_controls_t
- **/
-typedef struct xcb_xkb_sa_set_controls_t {
- uint8_t type; /**< */
- uint8_t pad0[3]; /**< */
- uint8_t boolCtrlsHigh; /**< */
- uint8_t boolCtrlsLow; /**< */
- uint8_t pad1[2]; /**< */
-} xcb_xkb_sa_set_controls_t;
-
-/**
- * @brief xcb_xkb_sa_set_controls_iterator_t
- **/
-typedef struct xcb_xkb_sa_set_controls_iterator_t {
- xcb_xkb_sa_set_controls_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_sa_set_controls_iterator_t;
-
-/**
- * @brief xcb_xkb_sa_lock_controls_t
- **/
-typedef struct xcb_xkb_sa_lock_controls_t {
- uint8_t type; /**< */
- uint8_t pad0[3]; /**< */
- uint8_t boolCtrlsHigh; /**< */
- uint8_t boolCtrlsLow; /**< */
- uint8_t pad1[2]; /**< */
-} xcb_xkb_sa_lock_controls_t;
-
-/**
- * @brief xcb_xkb_sa_lock_controls_iterator_t
- **/
-typedef struct xcb_xkb_sa_lock_controls_iterator_t {
- xcb_xkb_sa_lock_controls_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_sa_lock_controls_iterator_t;
-
-typedef enum xcb_xkb_action_message_flag_t {
- XCB_XKB_ACTION_MESSAGE_FLAG_ON_PRESS = 1,
- XCB_XKB_ACTION_MESSAGE_FLAG_ON_RELEASE = 2,
- XCB_XKB_ACTION_MESSAGE_FLAG_GEN_KEY_EVENT = 4
-} xcb_xkb_action_message_flag_t;
-
-/**
- * @brief xcb_xkb_sa_action_message_t
- **/
-typedef struct xcb_xkb_sa_action_message_t {
- uint8_t type; /**< */
- uint8_t flags; /**< */
- uint8_t message[6]; /**< */
-} xcb_xkb_sa_action_message_t;
-
-/**
- * @brief xcb_xkb_sa_action_message_iterator_t
- **/
-typedef struct xcb_xkb_sa_action_message_iterator_t {
- xcb_xkb_sa_action_message_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_sa_action_message_iterator_t;
-
-/**
- * @brief xcb_xkb_sa_redirect_key_t
- **/
-typedef struct xcb_xkb_sa_redirect_key_t {
- uint8_t type; /**< */
- xcb_keycode_t newkey; /**< */
- uint8_t mask; /**< */
- uint8_t realModifiers; /**< */
- uint8_t vmodsMaskHigh; /**< */
- uint8_t vmodsMaskLow; /**< */
- uint8_t vmodsHigh; /**< */
- uint8_t vmodsLow; /**< */
-} xcb_xkb_sa_redirect_key_t;
-
-/**
- * @brief xcb_xkb_sa_redirect_key_iterator_t
- **/
-typedef struct xcb_xkb_sa_redirect_key_iterator_t {
- xcb_xkb_sa_redirect_key_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_sa_redirect_key_iterator_t;
-
-/**
- * @brief xcb_xkb_sa_device_btn_t
- **/
-typedef struct xcb_xkb_sa_device_btn_t {
- uint8_t type; /**< */
- uint8_t flags; /**< */
- uint8_t count; /**< */
- uint8_t button; /**< */
- uint8_t device; /**< */
- uint8_t pad0[3]; /**< */
-} xcb_xkb_sa_device_btn_t;
-
-/**
- * @brief xcb_xkb_sa_device_btn_iterator_t
- **/
-typedef struct xcb_xkb_sa_device_btn_iterator_t {
- xcb_xkb_sa_device_btn_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_sa_device_btn_iterator_t;
-
-typedef enum xcb_xkb_lock_device_flags_t {
- XCB_XKB_LOCK_DEVICE_FLAGS_NO_LOCK = 1,
- XCB_XKB_LOCK_DEVICE_FLAGS_NO_UNLOCK = 2
-} xcb_xkb_lock_device_flags_t;
-
-/**
- * @brief xcb_xkb_sa_lock_device_btn_t
- **/
-typedef struct xcb_xkb_sa_lock_device_btn_t {
- uint8_t type; /**< */
- uint8_t flags; /**< */
- uint8_t pad0; /**< */
- uint8_t button; /**< */
- uint8_t device; /**< */
- uint8_t pad1[3]; /**< */
-} xcb_xkb_sa_lock_device_btn_t;
-
-/**
- * @brief xcb_xkb_sa_lock_device_btn_iterator_t
- **/
-typedef struct xcb_xkb_sa_lock_device_btn_iterator_t {
- xcb_xkb_sa_lock_device_btn_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_sa_lock_device_btn_iterator_t;
-
-typedef enum xcb_xkb_sa_val_what_t {
- XCB_XKB_SA_VAL_WHAT_IGNORE_VAL = 0,
- XCB_XKB_SA_VAL_WHAT_SET_VAL_MIN = 1,
- XCB_XKB_SA_VAL_WHAT_SET_VAL_CENTER = 2,
- XCB_XKB_SA_VAL_WHAT_SET_VAL_MAX = 3,
- XCB_XKB_SA_VAL_WHAT_SET_VAL_RELATIVE = 4,
- XCB_XKB_SA_VAL_WHAT_SET_VAL_ABSOLUTE = 5
-} xcb_xkb_sa_val_what_t;
-
-/**
- * @brief xcb_xkb_sa_device_valuator_t
- **/
-typedef struct xcb_xkb_sa_device_valuator_t {
- uint8_t type; /**< */
- uint8_t device; /**< */
- uint8_t val1what; /**< */
- uint8_t val1index; /**< */
- uint8_t val1value; /**< */
- uint8_t val2what; /**< */
- uint8_t val2index; /**< */
- uint8_t val2value; /**< */
-} xcb_xkb_sa_device_valuator_t;
-
-/**
- * @brief xcb_xkb_sa_device_valuator_iterator_t
- **/
-typedef struct xcb_xkb_sa_device_valuator_iterator_t {
- xcb_xkb_sa_device_valuator_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_sa_device_valuator_iterator_t;
-
-/**
- * @brief xcb_xkb_si_action_t
- **/
-typedef struct xcb_xkb_si_action_t {
- uint8_t type; /**< */
- uint8_t data[7]; /**< */
-} xcb_xkb_si_action_t;
-
-/**
- * @brief xcb_xkb_si_action_iterator_t
- **/
-typedef struct xcb_xkb_si_action_iterator_t {
- xcb_xkb_si_action_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_si_action_iterator_t;
-
-/**
- * @brief xcb_xkb_sym_interpret_t
- **/
-typedef struct xcb_xkb_sym_interpret_t {
- xcb_keysym_t sym; /**< */
- uint8_t mods; /**< */
- uint8_t match; /**< */
- uint8_t virtualMod; /**< */
- uint8_t flags; /**< */
- xcb_xkb_si_action_t action; /**< */
-} xcb_xkb_sym_interpret_t;
-
-/**
- * @brief xcb_xkb_sym_interpret_iterator_t
- **/
-typedef struct xcb_xkb_sym_interpret_iterator_t {
- xcb_xkb_sym_interpret_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_sym_interpret_iterator_t;
-
-/**
- * @brief xcb_xkb_action_t
- **/
-typedef union xcb_xkb_action_t {
- xcb_xkb_sa_no_action_t noaction; /**< */
- xcb_xkb_sa_set_mods_t setmods; /**< */
- xcb_xkb_sa_latch_mods_t latchmods; /**< */
- xcb_xkb_sa_lock_mods_t lockmods; /**< */
- xcb_xkb_sa_set_group_t setgroup; /**< */
- xcb_xkb_sa_latch_group_t latchgroup; /**< */
- xcb_xkb_sa_lock_group_t lockgroup; /**< */
- xcb_xkb_sa_move_ptr_t moveptr; /**< */
- xcb_xkb_sa_ptr_btn_t ptrbtn; /**< */
- xcb_xkb_sa_lock_ptr_btn_t lockptrbtn; /**< */
- xcb_xkb_sa_set_ptr_dflt_t setptrdflt; /**< */
- xcb_xkb_sa_iso_lock_t isolock; /**< */
- xcb_xkb_sa_terminate_t terminate; /**< */
- xcb_xkb_sa_switch_screen_t switchscreen; /**< */
- xcb_xkb_sa_set_controls_t setcontrols; /**< */
- xcb_xkb_sa_lock_controls_t lockcontrols; /**< */
- xcb_xkb_sa_action_message_t message; /**< */
- xcb_xkb_sa_redirect_key_t redirect; /**< */
- xcb_xkb_sa_device_btn_t devbtn; /**< */
- xcb_xkb_sa_lock_device_btn_t lockdevbtn; /**< */
- xcb_xkb_sa_device_valuator_t devval; /**< */
- uint8_t type; /**< */
-} xcb_xkb_action_t;
-
-/**
- * @brief xcb_xkb_action_iterator_t
- **/
-typedef struct xcb_xkb_action_iterator_t {
- xcb_xkb_action_t *data; /**< */
- int rem; /**< */
- int index; /**< */
-} xcb_xkb_action_iterator_t;
-
-/**
- * @brief xcb_xkb_use_extension_cookie_t
- **/
-typedef struct xcb_xkb_use_extension_cookie_t {
- unsigned int sequence; /**< */
-} xcb_xkb_use_extension_cookie_t;
-
-/** Opcode for xcb_xkb_use_extension. */
-#define XCB_XKB_USE_EXTENSION 0
-
-/**
- * @brief xcb_xkb_use_extension_request_t
- **/
-typedef struct xcb_xkb_use_extension_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- uint16_t wantedMajor; /**< */
- uint16_t wantedMinor; /**< */
-} xcb_xkb_use_extension_request_t;
-
-/**
- * @brief xcb_xkb_use_extension_reply_t
- **/
-typedef struct xcb_xkb_use_extension_reply_t {
- uint8_t response_type; /**< */
- uint8_t supported; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- uint16_t serverMajor; /**< */
- uint16_t serverMinor; /**< */
- uint8_t pad0[20]; /**< */
-} xcb_xkb_use_extension_reply_t;
-
-/**
- * @brief xcb_xkb_select_events_details_t
- **/
-typedef struct xcb_xkb_select_events_details_t {
- uint16_t affectNewKeyboard; /**< */
- uint16_t newKeyboardDetails; /**< */
- uint16_t affectState; /**< */
- uint16_t stateDetails; /**< */
- uint32_t affectCtrls; /**< */
- uint32_t ctrlDetails; /**< */
- uint32_t affectIndicatorState; /**< */
- uint32_t indicatorStateDetails; /**< */
- uint32_t affectIndicatorMap; /**< */
- uint32_t indicatorMapDetails; /**< */
- uint16_t affectNames; /**< */
- uint16_t namesDetails; /**< */
- uint8_t affectCompat; /**< */
- uint8_t compatDetails; /**< */
- uint8_t affectBell; /**< */
- uint8_t bellDetails; /**< */
- uint8_t affectMsgDetails; /**< */
- uint8_t msgDetails; /**< */
- uint16_t affectAccessX; /**< */
- uint16_t accessXDetails; /**< */
- uint16_t affectExtDev; /**< */
- uint16_t extdevDetails; /**< */
-} xcb_xkb_select_events_details_t;
-
-/** Opcode for xcb_xkb_select_events. */
-#define XCB_XKB_SELECT_EVENTS 1
-
-/**
- * @brief xcb_xkb_select_events_request_t
- **/
-typedef struct xcb_xkb_select_events_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_xkb_device_spec_t deviceSpec; /**< */
- uint16_t affectWhich; /**< */
- uint16_t clear; /**< */
- uint16_t selectAll; /**< */
- uint16_t affectMap; /**< */
- uint16_t map; /**< */
-} xcb_xkb_select_events_request_t;
-
-/** Opcode for xcb_xkb_bell. */
-#define XCB_XKB_BELL 3
-
-/**
- * @brief xcb_xkb_bell_request_t
- **/
-typedef struct xcb_xkb_bell_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_xkb_device_spec_t deviceSpec; /**< */
- xcb_xkb_bell_class_spec_t bellClass; /**< */
- xcb_xkb_id_spec_t bellID; /**< */
- int8_t percent; /**< */
- uint8_t forceSound; /**< */
- uint8_t eventOnly; /**< */
- uint8_t pad0; /**< */
- int16_t pitch; /**< */
- int16_t duration; /**< */
- uint8_t pad1[2]; /**< */
- xcb_atom_t name; /**< */
- xcb_window_t window; /**< */
-} xcb_xkb_bell_request_t;
-
-/**
- * @brief xcb_xkb_get_state_cookie_t
- **/
-typedef struct xcb_xkb_get_state_cookie_t {
- unsigned int sequence; /**< */
-} xcb_xkb_get_state_cookie_t;
-
-/** Opcode for xcb_xkb_get_state. */
-#define XCB_XKB_GET_STATE 4
-
-/**
- * @brief xcb_xkb_get_state_request_t
- **/
-typedef struct xcb_xkb_get_state_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_xkb_device_spec_t deviceSpec; /**< */
- uint8_t pad0[2]; /**< */
-} xcb_xkb_get_state_request_t;
-
-/**
- * @brief xcb_xkb_get_state_reply_t
- **/
-typedef struct xcb_xkb_get_state_reply_t {
- uint8_t response_type; /**< */
- uint8_t deviceID; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- uint8_t mods; /**< */
- uint8_t baseMods; /**< */
- uint8_t latchedMods; /**< */
- uint8_t lockedMods; /**< */
- uint8_t group; /**< */
- uint8_t lockedGroup; /**< */
- int16_t baseGroup; /**< */
- int16_t latchedGroup; /**< */
- uint8_t compatState; /**< */
- uint8_t grabMods; /**< */
- uint8_t compatGrabMods; /**< */
- uint8_t lookupMods; /**< */
- uint8_t compatLookupMods; /**< */
- uint8_t pad0; /**< */
- uint16_t ptrBtnState; /**< */
- uint8_t pad1[6]; /**< */
-} xcb_xkb_get_state_reply_t;
-
-/** Opcode for xcb_xkb_latch_lock_state. */
-#define XCB_XKB_LATCH_LOCK_STATE 5
-
-/**
- * @brief xcb_xkb_latch_lock_state_request_t
- **/
-typedef struct xcb_xkb_latch_lock_state_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_xkb_device_spec_t deviceSpec; /**< */
- uint8_t affectModLocks; /**< */
- uint8_t modLocks; /**< */
- uint8_t lockGroup; /**< */
- uint8_t groupLock; /**< */
- uint8_t affectModLatches; /**< */
- uint8_t pad0; /**< */
- uint8_t latchGroup; /**< */
- uint16_t groupLatch; /**< */
-} xcb_xkb_latch_lock_state_request_t;
-
-/**
- * @brief xcb_xkb_get_controls_cookie_t
- **/
-typedef struct xcb_xkb_get_controls_cookie_t {
- unsigned int sequence; /**< */
-} xcb_xkb_get_controls_cookie_t;
-
-/** Opcode for xcb_xkb_get_controls. */
-#define XCB_XKB_GET_CONTROLS 6
-
-/**
- * @brief xcb_xkb_get_controls_request_t
- **/
-typedef struct xcb_xkb_get_controls_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_xkb_device_spec_t deviceSpec; /**< */
- uint8_t pad0[2]; /**< */
-} xcb_xkb_get_controls_request_t;
-
-/**
- * @brief xcb_xkb_get_controls_reply_t
- **/
-typedef struct xcb_xkb_get_controls_reply_t {
- uint8_t response_type; /**< */
- uint8_t deviceID; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- uint8_t mouseKeysDfltBtn; /**< */
- uint8_t numGroups; /**< */
- uint8_t groupsWrap; /**< */
- uint8_t internalModsMask; /**< */
- uint8_t ignoreLockModsMask; /**< */
- uint8_t internalModsRealMods; /**< */
- uint8_t ignoreLockModsRealMods; /**< */
- uint8_t pad0; /**< */
- uint16_t internalModsVmods; /**< */
- uint16_t ignoreLockModsVmods; /**< */
- uint16_t repeatDelay; /**< */
- uint16_t repeatInterval; /**< */
- uint16_t slowKeysDelay; /**< */
- uint16_t debounceDelay; /**< */
- uint16_t mouseKeysDelay; /**< */
- uint16_t mouseKeysInterval; /**< */
- uint16_t mouseKeysTimeToMax; /**< */
- uint16_t mouseKeysMaxSpeed; /**< */
- int16_t mouseKeysCurve; /**< */
- uint16_t accessXOption; /**< */
- uint16_t accessXTimeout; /**< */
- uint16_t accessXTimeoutOptionsMask; /**< */
- uint16_t accessXTimeoutOptionsValues; /**< */
- uint8_t pad1[2]; /**< */
- uint32_t accessXTimeoutMask; /**< */
- uint32_t accessXTimeoutValues; /**< */
- uint32_t enabledControls; /**< */
- uint8_t perKeyRepeat[32]; /**< */
-} xcb_xkb_get_controls_reply_t;
-
-/** Opcode for xcb_xkb_set_controls. */
-#define XCB_XKB_SET_CONTROLS 7
-
-/**
- * @brief xcb_xkb_set_controls_request_t
- **/
-typedef struct xcb_xkb_set_controls_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_xkb_device_spec_t deviceSpec; /**< */
- uint8_t affectInternalRealMods; /**< */
- uint8_t internalRealMods; /**< */
- uint8_t affectIgnoreLockRealMods; /**< */
- uint8_t ignoreLockRealMods; /**< */
- uint16_t affectInternalVirtualMods; /**< */
- uint16_t internalVirtualMods; /**< */
- uint16_t affectIgnoreLockVirtualMods; /**< */
- uint16_t ignoreLockVirtualMods; /**< */
- uint8_t mouseKeysDfltBtn; /**< */
- uint8_t groupsWrap; /**< */
- uint16_t accessXOptions; /**< */
- uint8_t pad0[2]; /**< */
- uint32_t affectEnabledControls; /**< */
- uint32_t enabledControls; /**< */
- uint32_t changeControls; /**< */
- uint16_t repeatDelay; /**< */
- uint16_t repeatInterval; /**< */
- uint16_t slowKeysDelay; /**< */
- uint16_t debounceDelay; /**< */
- uint16_t mouseKeysDelay; /**< */
- uint16_t mouseKeysInterval; /**< */
- uint16_t mouseKeysTimeToMax; /**< */
- uint16_t mouseKeysMaxSpeed; /**< */
- int16_t mouseKeysCurve; /**< */
- uint16_t accessXTimeout; /**< */
- uint32_t accessXTimeoutMask; /**< */
- uint32_t accessXTimeoutValues; /**< */
- uint16_t accessXTimeoutOptionsMask; /**< */
- uint16_t accessXTimeoutOptionsValues; /**< */
- uint8_t perKeyRepeat[32]; /**< */
-} xcb_xkb_set_controls_request_t;
-
-/**
- * @brief xcb_xkb_get_map_cookie_t
- **/
-typedef struct xcb_xkb_get_map_cookie_t {
- unsigned int sequence; /**< */
-} xcb_xkb_get_map_cookie_t;
-
-/** Opcode for xcb_xkb_get_map. */
-#define XCB_XKB_GET_MAP 8
-
-/**
- * @brief xcb_xkb_get_map_request_t
- **/
-typedef struct xcb_xkb_get_map_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_xkb_device_spec_t deviceSpec; /**< */
- uint16_t full; /**< */
- uint16_t partial; /**< */
- uint8_t firstType; /**< */
- uint8_t nTypes; /**< */
- xcb_keycode_t firstKeySym; /**< */
- uint8_t nKeySyms; /**< */
- xcb_keycode_t firstKeyAction; /**< */
- uint8_t nKeyActions; /**< */
- xcb_keycode_t firstKeyBehavior; /**< */
- uint8_t nKeyBehaviors; /**< */
- uint16_t virtualMods; /**< */
- xcb_keycode_t firstKeyExplicit; /**< */
- uint8_t nKeyExplicit; /**< */
- xcb_keycode_t firstModMapKey; /**< */
- uint8_t nModMapKeys; /**< */
- xcb_keycode_t firstVModMapKey; /**< */
- uint8_t nVModMapKeys; /**< */
- uint8_t pad0[2]; /**< */
-} xcb_xkb_get_map_request_t;
-
-/**
- * @brief xcb_xkb_get_map_map_t
- **/
-typedef struct xcb_xkb_get_map_map_t {
- xcb_xkb_key_type_t *types_rtrn; /**< */
- xcb_xkb_key_sym_map_t *syms_rtrn; /**< */
- uint8_t *acts_rtrn_count; /**< */
- uint8_t *alignment_pad; /**< */
- xcb_xkb_action_t *acts_rtrn_acts; /**< */
- xcb_xkb_set_behavior_t *behaviors_rtrn; /**< */
- uint8_t *vmods_rtrn; /**< */
- uint8_t *alignment_pad2; /**< */
- xcb_xkb_set_explicit_t *explicit_rtrn; /**< */
- uint16_t *alignment_pad3; /**< */
- xcb_xkb_key_mod_map_t *modmap_rtrn; /**< */
- uint16_t *alignment_pad4; /**< */
- xcb_xkb_key_v_mod_map_t *vmodmap_rtrn; /**< */
-} xcb_xkb_get_map_map_t;
-
-/**
- * @brief xcb_xkb_get_map_reply_t
- **/
-typedef struct xcb_xkb_get_map_reply_t {
- uint8_t response_type; /**< */
- uint8_t deviceID; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- uint8_t pad0[2]; /**< */
- xcb_keycode_t minKeyCode; /**< */
- xcb_keycode_t maxKeyCode; /**< */
- uint16_t present; /**< */
- uint8_t firstType; /**< */
- uint8_t nTypes; /**< */
- uint8_t totalTypes; /**< */
- xcb_keycode_t firstKeySym; /**< */
- uint16_t totalSyms; /**< */
- uint8_t nKeySyms; /**< */
- xcb_keycode_t firstKeyAction; /**< */
- uint16_t totalActions; /**< */
- uint8_t nKeyActions; /**< */
- xcb_keycode_t firstKeyBehavior; /**< */
- uint8_t nKeyBehaviors; /**< */
- uint8_t totalKeyBehaviors; /**< */
- xcb_keycode_t firstKeyExplicit; /**< */
- uint8_t nKeyExplicit; /**< */
- uint8_t totalKeyExplicit; /**< */
- xcb_keycode_t firstModMapKey; /**< */
- uint8_t nModMapKeys; /**< */
- uint8_t totalModMapKeys; /**< */
- xcb_keycode_t firstVModMapKey; /**< */
- uint8_t nVModMapKeys; /**< */
- uint8_t totalVModMapKeys; /**< */
- uint8_t pad1; /**< */
- uint16_t virtualMods; /**< */
-} xcb_xkb_get_map_reply_t;
-
-/**
- * @brief xcb_xkb_set_map_values_t
- **/
-typedef struct xcb_xkb_set_map_values_t {
- xcb_xkb_set_key_type_t *types; /**< */
- xcb_xkb_key_sym_map_t *syms; /**< */
- uint8_t *actionsCount; /**< */
- xcb_xkb_action_t *actions; /**< */
- xcb_xkb_set_behavior_t *behaviors; /**< */
- uint8_t *vmods; /**< */
- xcb_xkb_set_explicit_t *explicit; /**< */
- xcb_xkb_key_mod_map_t *modmap; /**< */
- xcb_xkb_key_v_mod_map_t *vmodmap; /**< */
-} xcb_xkb_set_map_values_t;
-
-/** Opcode for xcb_xkb_set_map. */
-#define XCB_XKB_SET_MAP 9
-
-/**
- * @brief xcb_xkb_set_map_request_t
- **/
-typedef struct xcb_xkb_set_map_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_xkb_device_spec_t deviceSpec; /**< */
- uint16_t present; /**< */
- uint16_t flags; /**< */
- xcb_keycode_t minKeyCode; /**< */
- xcb_keycode_t maxKeyCode; /**< */
- uint8_t firstType; /**< */
- uint8_t nTypes; /**< */
- xcb_keycode_t firstKeySym; /**< */
- uint8_t nKeySyms; /**< */
- uint16_t totalSyms; /**< */
- xcb_keycode_t firstKeyAction; /**< */
- uint8_t nKeyActions; /**< */
- uint16_t totalActions; /**< */
- xcb_keycode_t firstKeyBehavior; /**< */
- uint8_t nKeyBehaviors; /**< */
- uint8_t totalKeyBehaviors; /**< */
- xcb_keycode_t firstKeyExplicit; /**< */
- uint8_t nKeyExplicit; /**< */
- uint8_t totalKeyExplicit; /**< */
- xcb_keycode_t firstModMapKey; /**< */
- uint8_t nModMapKeys; /**< */
- uint8_t totalModMapKeys; /**< */
- xcb_keycode_t firstVModMapKey; /**< */
- uint8_t nVModMapKeys; /**< */
- uint8_t totalVModMapKeys; /**< */
- uint16_t virtualMods; /**< */
-} xcb_xkb_set_map_request_t;
-
-/**
- * @brief xcb_xkb_get_compat_map_cookie_t
- **/
-typedef struct xcb_xkb_get_compat_map_cookie_t {
- unsigned int sequence; /**< */
-} xcb_xkb_get_compat_map_cookie_t;
-
-/** Opcode for xcb_xkb_get_compat_map. */
-#define XCB_XKB_GET_COMPAT_MAP 10
-
-/**
- * @brief xcb_xkb_get_compat_map_request_t
- **/
-typedef struct xcb_xkb_get_compat_map_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_xkb_device_spec_t deviceSpec; /**< */
- uint8_t groups; /**< */
- uint8_t getAllSI; /**< */
- uint16_t firstSI; /**< */
- uint16_t nSI; /**< */
-} xcb_xkb_get_compat_map_request_t;
-
-/**
- * @brief xcb_xkb_get_compat_map_reply_t
- **/
-typedef struct xcb_xkb_get_compat_map_reply_t {
- uint8_t response_type; /**< */
- uint8_t deviceID; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- uint8_t groupsRtrn; /**< */
- uint8_t pad0; /**< */
- uint16_t firstSIRtrn; /**< */
- uint16_t nSIRtrn; /**< */
- uint16_t nTotalSI; /**< */
- uint8_t pad1[16]; /**< */
-} xcb_xkb_get_compat_map_reply_t;
-
-/** Opcode for xcb_xkb_set_compat_map. */
-#define XCB_XKB_SET_COMPAT_MAP 11
-
-/**
- * @brief xcb_xkb_set_compat_map_request_t
- **/
-typedef struct xcb_xkb_set_compat_map_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_xkb_device_spec_t deviceSpec; /**< */
- uint8_t pad0; /**< */
- uint8_t recomputeActions; /**< */
- uint8_t truncateSI; /**< */
- uint8_t groups; /**< */
- uint16_t firstSI; /**< */
- uint16_t nSI; /**< */
- uint8_t pad1[2]; /**< */
-} xcb_xkb_set_compat_map_request_t;
-
-/**
- * @brief xcb_xkb_get_indicator_state_cookie_t
- **/
-typedef struct xcb_xkb_get_indicator_state_cookie_t {
- unsigned int sequence; /**< */
-} xcb_xkb_get_indicator_state_cookie_t;
-
-/** Opcode for xcb_xkb_get_indicator_state. */
-#define XCB_XKB_GET_INDICATOR_STATE 12
-
-/**
- * @brief xcb_xkb_get_indicator_state_request_t
- **/
-typedef struct xcb_xkb_get_indicator_state_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_xkb_device_spec_t deviceSpec; /**< */
- uint8_t pad0[2]; /**< */
-} xcb_xkb_get_indicator_state_request_t;
-
-/**
- * @brief xcb_xkb_get_indicator_state_reply_t
- **/
-typedef struct xcb_xkb_get_indicator_state_reply_t {
- uint8_t response_type; /**< */
- uint8_t deviceID; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- uint32_t state; /**< */
- uint8_t pad0[20]; /**< */
-} xcb_xkb_get_indicator_state_reply_t;
-
-/**
- * @brief xcb_xkb_get_indicator_map_cookie_t
- **/
-typedef struct xcb_xkb_get_indicator_map_cookie_t {
- unsigned int sequence; /**< */
-} xcb_xkb_get_indicator_map_cookie_t;
-
-/** Opcode for xcb_xkb_get_indicator_map. */
-#define XCB_XKB_GET_INDICATOR_MAP 13
-
-/**
- * @brief xcb_xkb_get_indicator_map_request_t
- **/
-typedef struct xcb_xkb_get_indicator_map_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_xkb_device_spec_t deviceSpec; /**< */
- uint8_t pad0[2]; /**< */
- uint32_t which; /**< */
-} xcb_xkb_get_indicator_map_request_t;
-
-/**
- * @brief xcb_xkb_get_indicator_map_reply_t
- **/
-typedef struct xcb_xkb_get_indicator_map_reply_t {
- uint8_t response_type; /**< */
- uint8_t deviceID; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- uint32_t which; /**< */
- uint32_t realIndicators; /**< */
- uint8_t nIndicators; /**< */
- uint8_t pad0[15]; /**< */
-} xcb_xkb_get_indicator_map_reply_t;
-
-/** Opcode for xcb_xkb_set_indicator_map. */
-#define XCB_XKB_SET_INDICATOR_MAP 14
-
-/**
- * @brief xcb_xkb_set_indicator_map_request_t
- **/
-typedef struct xcb_xkb_set_indicator_map_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_xkb_device_spec_t deviceSpec; /**< */
- uint8_t pad0[2]; /**< */
- uint32_t which; /**< */
-} xcb_xkb_set_indicator_map_request_t;
-
-/**
- * @brief xcb_xkb_get_named_indicator_cookie_t
- **/
-typedef struct xcb_xkb_get_named_indicator_cookie_t {
- unsigned int sequence; /**< */
-} xcb_xkb_get_named_indicator_cookie_t;
-
-/** Opcode for xcb_xkb_get_named_indicator. */
-#define XCB_XKB_GET_NAMED_INDICATOR 15
-
-/**
- * @brief xcb_xkb_get_named_indicator_request_t
- **/
-typedef struct xcb_xkb_get_named_indicator_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_xkb_device_spec_t deviceSpec; /**< */
- xcb_xkb_led_class_spec_t ledClass; /**< */
- xcb_xkb_id_spec_t ledID; /**< */
- uint8_t pad0[2]; /**< */
- xcb_atom_t indicator; /**< */
-} xcb_xkb_get_named_indicator_request_t;
-
-/**
- * @brief xcb_xkb_get_named_indicator_reply_t
- **/
-typedef struct xcb_xkb_get_named_indicator_reply_t {
- uint8_t response_type; /**< */
- uint8_t deviceID; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- xcb_atom_t indicator; /**< */
- uint8_t found; /**< */
- uint8_t on; /**< */
- uint8_t realIndicator; /**< */
- uint8_t ndx; /**< */
- uint8_t map_flags; /**< */
- uint8_t map_whichGroups; /**< */
- uint8_t map_groups; /**< */
- uint8_t map_whichMods; /**< */
- uint8_t map_mods; /**< */
- uint8_t map_realMods; /**< */
- uint16_t map_vmod; /**< */
- uint32_t map_ctrls; /**< */
- uint8_t supported; /**< */
- uint8_t pad0[3]; /**< */
-} xcb_xkb_get_named_indicator_reply_t;
-
-/** Opcode for xcb_xkb_set_named_indicator. */
-#define XCB_XKB_SET_NAMED_INDICATOR 16
-
-/**
- * @brief xcb_xkb_set_named_indicator_request_t
- **/
-typedef struct xcb_xkb_set_named_indicator_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_xkb_device_spec_t deviceSpec; /**< */
- xcb_xkb_led_class_spec_t ledClass; /**< */
- xcb_xkb_id_spec_t ledID; /**< */
- uint8_t pad0[2]; /**< */
- xcb_atom_t indicator; /**< */
- uint8_t setState; /**< */
- uint8_t on; /**< */
- uint8_t setMap; /**< */
- uint8_t createMap; /**< */
- uint8_t pad1; /**< */
- uint8_t map_flags; /**< */
- uint8_t map_whichGroups; /**< */
- uint8_t map_groups; /**< */
- uint8_t map_whichMods; /**< */
- uint8_t map_realMods; /**< */
- uint16_t map_vmods; /**< */
- uint32_t map_ctrls; /**< */
-} xcb_xkb_set_named_indicator_request_t;
-
-/**
- * @brief xcb_xkb_get_names_cookie_t
- **/
-typedef struct xcb_xkb_get_names_cookie_t {
- unsigned int sequence; /**< */
-} xcb_xkb_get_names_cookie_t;
-
-/** Opcode for xcb_xkb_get_names. */
-#define XCB_XKB_GET_NAMES 17
-
-/**
- * @brief xcb_xkb_get_names_request_t
- **/
-typedef struct xcb_xkb_get_names_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_xkb_device_spec_t deviceSpec; /**< */
- uint8_t pad0[2]; /**< */
- uint32_t which; /**< */
-} xcb_xkb_get_names_request_t;
-
-/**
- * @brief xcb_xkb_get_names_value_list_t
- **/
-typedef struct xcb_xkb_get_names_value_list_t {
- xcb_atom_t keycodesName; /**< */
- xcb_atom_t geometryName; /**< */
- xcb_atom_t symbolsName; /**< */
- xcb_atom_t physSymbolsName; /**< */
- xcb_atom_t typesName; /**< */
- xcb_atom_t compatName; /**< */
- xcb_atom_t *typeNames; /**< */
- uint8_t *nLevelsPerType; /**< */
- uint8_t *alignment_pad; /**< */
- xcb_atom_t *ktLevelNames; /**< */
- xcb_atom_t *indicatorNames; /**< */
- xcb_atom_t *virtualModNames; /**< */
- xcb_atom_t *groups; /**< */
- xcb_xkb_key_name_t *keyNames; /**< */
- xcb_xkb_key_alias_t *keyAliases; /**< */
- xcb_atom_t *radioGroupNames; /**< */
-} xcb_xkb_get_names_value_list_t;
-
-/**
- * @brief xcb_xkb_get_names_reply_t
- **/
-typedef struct xcb_xkb_get_names_reply_t {
- uint8_t response_type; /**< */
- uint8_t deviceID; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- uint32_t which; /**< */
- xcb_keycode_t minKeyCode; /**< */
- xcb_keycode_t maxKeyCode; /**< */
- uint8_t nTypes; /**< */
- uint8_t groupNames; /**< */
- uint16_t virtualMods; /**< */
- xcb_keycode_t firstKey; /**< */
- uint8_t nKeys; /**< */
- uint32_t indicators; /**< */
- uint8_t nRadioGroups; /**< */
- uint8_t nKeyAliases; /**< */
- uint16_t nKTLevels; /**< */
- uint8_t pad0[4]; /**< */
-} xcb_xkb_get_names_reply_t;
-
-/**
- * @brief xcb_xkb_set_names_values_t
- **/
-typedef struct xcb_xkb_set_names_values_t {
- xcb_atom_t keycodesName; /**< */
- xcb_atom_t geometryName; /**< */
- xcb_atom_t symbolsName; /**< */
- xcb_atom_t physSymbolsName; /**< */
- xcb_atom_t typesName; /**< */
- xcb_atom_t compatName; /**< */
- xcb_atom_t *typeNames; /**< */
- uint8_t *nLevelsPerType; /**< */
- xcb_atom_t *ktLevelNames; /**< */
- xcb_atom_t *indicatorNames; /**< */
- xcb_atom_t *virtualModNames; /**< */
- xcb_atom_t *groups; /**< */
- xcb_xkb_key_name_t *keyNames; /**< */
- xcb_xkb_key_alias_t *keyAliases; /**< */
- xcb_atom_t *radioGroupNames; /**< */
-} xcb_xkb_set_names_values_t;
-
-/** Opcode for xcb_xkb_set_names. */
-#define XCB_XKB_SET_NAMES 18
-
-/**
- * @brief xcb_xkb_set_names_request_t
- **/
-typedef struct xcb_xkb_set_names_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_xkb_device_spec_t deviceSpec; /**< */
- uint16_t virtualMods; /**< */
- uint32_t which; /**< */
- uint8_t firstType; /**< */
- uint8_t nTypes; /**< */
- uint8_t firstKTLevelt; /**< */
- uint8_t nKTLevels; /**< */
- uint32_t indicators; /**< */
- uint8_t groupNames; /**< */
- uint8_t nRadioGroups; /**< */
- xcb_keycode_t firstKey; /**< */
- uint8_t nKeys; /**< */
- uint8_t nKeyAliases; /**< */
- uint8_t pad0; /**< */
- uint16_t totalKTLevelNames; /**< */
-} xcb_xkb_set_names_request_t;
-
-/**
- * @brief xcb_xkb_per_client_flags_cookie_t
- **/
-typedef struct xcb_xkb_per_client_flags_cookie_t {
- unsigned int sequence; /**< */
-} xcb_xkb_per_client_flags_cookie_t;
-
-/** Opcode for xcb_xkb_per_client_flags. */
-#define XCB_XKB_PER_CLIENT_FLAGS 21
-
-/**
- * @brief xcb_xkb_per_client_flags_request_t
- **/
-typedef struct xcb_xkb_per_client_flags_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_xkb_device_spec_t deviceSpec; /**< */
- uint8_t pad0[2]; /**< */
- uint32_t change; /**< */
- uint32_t value; /**< */
- uint32_t ctrlsToChange; /**< */
- uint32_t autoCtrls; /**< */
- uint32_t autoCtrlsValues; /**< */
-} xcb_xkb_per_client_flags_request_t;
-
-/**
- * @brief xcb_xkb_per_client_flags_reply_t
- **/
-typedef struct xcb_xkb_per_client_flags_reply_t {
- uint8_t response_type; /**< */
- uint8_t deviceID; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- uint32_t supported; /**< */
- uint32_t value; /**< */
- uint32_t autoCtrls; /**< */
- uint32_t autoCtrlsValues; /**< */
- uint8_t pad0[8]; /**< */
-} xcb_xkb_per_client_flags_reply_t;
-
-/**
- * @brief xcb_xkb_list_components_cookie_t
- **/
-typedef struct xcb_xkb_list_components_cookie_t {
- unsigned int sequence; /**< */
-} xcb_xkb_list_components_cookie_t;
-
-/** Opcode for xcb_xkb_list_components. */
-#define XCB_XKB_LIST_COMPONENTS 22
-
-/**
- * @brief xcb_xkb_list_components_request_t
- **/
-typedef struct xcb_xkb_list_components_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_xkb_device_spec_t deviceSpec; /**< */
- uint16_t maxNames; /**< */
-} xcb_xkb_list_components_request_t;
-
-/**
- * @brief xcb_xkb_list_components_reply_t
- **/
-typedef struct xcb_xkb_list_components_reply_t {
- uint8_t response_type; /**< */
- uint8_t deviceID; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- uint16_t nKeymaps; /**< */
- uint16_t nKeycodes; /**< */
- uint16_t nTypes; /**< */
- uint16_t nCompatMaps; /**< */
- uint16_t nSymbols; /**< */
- uint16_t nGeometries; /**< */
- uint16_t extra; /**< */
- uint8_t pad0[10]; /**< */
-} xcb_xkb_list_components_reply_t;
-
-/**
- * @brief xcb_xkb_get_kbd_by_name_cookie_t
- **/
-typedef struct xcb_xkb_get_kbd_by_name_cookie_t {
- unsigned int sequence; /**< */
-} xcb_xkb_get_kbd_by_name_cookie_t;
-
-/** Opcode for xcb_xkb_get_kbd_by_name. */
-#define XCB_XKB_GET_KBD_BY_NAME 23
-
-/**
- * @brief xcb_xkb_get_kbd_by_name_request_t
- **/
-typedef struct xcb_xkb_get_kbd_by_name_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_xkb_device_spec_t deviceSpec; /**< */
- uint16_t need; /**< */
- uint16_t want; /**< */
- uint8_t load; /**< */
- uint8_t pad0; /**< */
-} xcb_xkb_get_kbd_by_name_request_t;
-
-/**
- * @brief xcb_xkb_get_kbd_by_name_replies_types_map_t
- **/
-typedef struct xcb_xkb_get_kbd_by_name_replies_types_map_t {
- xcb_xkb_key_type_t *types_rtrn; /**< */
- xcb_xkb_key_sym_map_t *syms_rtrn; /**< */
- uint8_t *acts_rtrn_count; /**< */
- xcb_xkb_action_t *acts_rtrn_acts; /**< */
- xcb_xkb_set_behavior_t *behaviors_rtrn; /**< */
- uint8_t *vmods_rtrn; /**< */
- xcb_xkb_set_explicit_t *explicit_rtrn; /**< */
- xcb_xkb_key_mod_map_t *modmap_rtrn; /**< */
- xcb_xkb_key_v_mod_map_t *vmodmap_rtrn; /**< */
-} xcb_xkb_get_kbd_by_name_replies_types_map_t;
-
-/**
- * @brief xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t
- **/
-typedef struct xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t {
- xcb_atom_t keycodesName; /**< */
- xcb_atom_t geometryName; /**< */
- xcb_atom_t symbolsName; /**< */
- xcb_atom_t physSymbolsName; /**< */
- xcb_atom_t typesName; /**< */
- xcb_atom_t compatName; /**< */
- xcb_atom_t *typeNames; /**< */
- uint8_t *nLevelsPerType; /**< */
- xcb_atom_t *ktLevelNames; /**< */
- xcb_atom_t *indicatorNames; /**< */
- xcb_atom_t *virtualModNames; /**< */
- xcb_atom_t *groups; /**< */
- xcb_xkb_key_name_t *keyNames; /**< */
- xcb_xkb_key_alias_t *keyAliases; /**< */
- xcb_atom_t *radioGroupNames; /**< */
-} xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t;
-
-/**
- * @brief xcb_xkb_get_kbd_by_name_replies_t
- **/
-typedef struct xcb_xkb_get_kbd_by_name_replies_t {
- struct _types {
- uint8_t getmap_type; /**< */
- uint8_t typeDeviceID; /**< */
- uint16_t getmap_sequence; /**< */
- uint32_t getmap_length; /**< */
- uint8_t pad0[2]; /**< */
- xcb_keycode_t typeMinKeyCode; /**< */
- xcb_keycode_t typeMaxKeyCode; /**< */
- uint16_t present; /**< */
- uint8_t firstType; /**< */
- uint8_t nTypes; /**< */
- uint8_t totalTypes; /**< */
- xcb_keycode_t firstKeySym; /**< */
- uint16_t totalSyms; /**< */
- uint8_t nKeySyms; /**< */
- xcb_keycode_t firstKeyAction; /**< */
- uint16_t totalActions; /**< */
- uint8_t nKeyActions; /**< */
- xcb_keycode_t firstKeyBehavior; /**< */
- uint8_t nKeyBehaviors; /**< */
- uint8_t totalKeyBehaviors; /**< */
- xcb_keycode_t firstKeyExplicit; /**< */
- uint8_t nKeyExplicit; /**< */
- uint8_t totalKeyExplicit; /**< */
- xcb_keycode_t firstModMapKey; /**< */
- uint8_t nModMapKeys; /**< */
- uint8_t totalModMapKeys; /**< */
- xcb_keycode_t firstVModMapKey; /**< */
- uint8_t nVModMapKeys; /**< */
- uint8_t totalVModMapKeys; /**< */
- uint8_t pad1; /**< */
- uint16_t virtualMods; /**< */
- xcb_xkb_get_kbd_by_name_replies_types_map_t map; /**< */
- } types;
- struct _compat_map {
- uint8_t compatmap_type; /**< */
- uint8_t compatDeviceID; /**< */
- uint16_t compatmap_sequence; /**< */
- uint32_t compatmap_length; /**< */
- uint8_t groupsRtrn; /**< */
- uint8_t pad0; /**< */
- uint16_t firstSIRtrn; /**< */
- uint16_t nSIRtrn; /**< */
- uint16_t nTotalSI; /**< */
- uint8_t pad1[16]; /**< */
- xcb_xkb_sym_interpret_t *si_rtrn; /**< */
- xcb_xkb_mod_def_t *group_rtrn; /**< */
- } compat_map;
- struct _indicator_maps {
- uint8_t indicatormap_type; /**< */
- uint8_t indicatorDeviceID; /**< */
- uint16_t indicatormap_sequence; /**< */
- uint32_t indicatormap_length; /**< */
- uint32_t which; /**< */
- uint32_t realIndicators; /**< */
- uint8_t nIndicators; /**< */
- uint8_t pad0[15]; /**< */
- xcb_xkb_indicator_map_t *maps; /**< */
- } indicator_maps;
- struct _key_names {
- uint8_t keyname_type; /**< */
- uint8_t keyDeviceID; /**< */
- uint16_t keyname_sequence; /**< */
- uint32_t keyname_length; /**< */
- uint32_t which; /**< */
- xcb_keycode_t keyMinKeyCode; /**< */
- xcb_keycode_t keyMaxKeyCode; /**< */
- uint8_t nTypes; /**< */
- uint8_t groupNames; /**< */
- uint16_t virtualMods; /**< */
- xcb_keycode_t firstKey; /**< */
- uint8_t nKeys; /**< */
- uint32_t indicators; /**< */
- uint8_t nRadioGroups; /**< */
- uint8_t nKeyAliases; /**< */
- uint16_t nKTLevels; /**< */
- uint8_t pad0[4]; /**< */
- xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t valueList; /**< */
- } key_names;
- struct _geometry {
- uint8_t geometry_type; /**< */
- uint8_t geometryDeviceID; /**< */
- uint16_t geometry_sequence; /**< */
- uint32_t geometry_length; /**< */
- xcb_atom_t name; /**< */
- uint8_t geometryFound; /**< */
- uint8_t pad0; /**< */
- uint16_t widthMM; /**< */
- uint16_t heightMM; /**< */
- uint16_t nProperties; /**< */
- uint16_t nColors; /**< */
- uint16_t nShapes; /**< */
- uint16_t nSections; /**< */
- uint16_t nDoodads; /**< */
- uint16_t nKeyAliases; /**< */
- uint8_t baseColorNdx; /**< */
- uint8_t labelColorNdx; /**< */
- xcb_xkb_counted_string_16_t *labelFont; /**< */
- } geometry;
-} xcb_xkb_get_kbd_by_name_replies_t;
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_kbd_by_name_replies_types_map_t * xcb_xkb_get_kbd_by_name_replies_types_map
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *R
- ** @returns xcb_xkb_get_kbd_by_name_replies_types_map_t *
- **
- *****************************************************************************/
-
-xcb_xkb_get_kbd_by_name_replies_types_map_t *
-xcb_xkb_get_kbd_by_name_replies_types_map (const xcb_xkb_get_kbd_by_name_replies_t *R /**< */);
-
-/**
- * @brief xcb_xkb_get_kbd_by_name_reply_t
- **/
-typedef struct xcb_xkb_get_kbd_by_name_reply_t {
- uint8_t response_type; /**< */
- uint8_t deviceID; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- xcb_keycode_t minKeyCode; /**< */
- xcb_keycode_t maxKeyCode; /**< */
- uint8_t loaded; /**< */
- uint8_t newKeyboard; /**< */
- uint16_t found; /**< */
- uint16_t reported; /**< */
- uint8_t pad0[16]; /**< */
-} xcb_xkb_get_kbd_by_name_reply_t;
-
-/**
- * @brief xcb_xkb_get_device_info_cookie_t
- **/
-typedef struct xcb_xkb_get_device_info_cookie_t {
- unsigned int sequence; /**< */
-} xcb_xkb_get_device_info_cookie_t;
-
-/** Opcode for xcb_xkb_get_device_info. */
-#define XCB_XKB_GET_DEVICE_INFO 24
-
-/**
- * @brief xcb_xkb_get_device_info_request_t
- **/
-typedef struct xcb_xkb_get_device_info_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_xkb_device_spec_t deviceSpec; /**< */
- uint16_t wanted; /**< */
- uint8_t allButtons; /**< */
- uint8_t firstButton; /**< */
- uint8_t nButtons; /**< */
- uint8_t pad0; /**< */
- xcb_xkb_led_class_spec_t ledClass; /**< */
- xcb_xkb_id_spec_t ledID; /**< */
-} xcb_xkb_get_device_info_request_t;
-
-/**
- * @brief xcb_xkb_get_device_info_reply_t
- **/
-typedef struct xcb_xkb_get_device_info_reply_t {
- uint8_t response_type; /**< */
- uint8_t deviceID; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- uint16_t present; /**< */
- uint16_t supported; /**< */
- uint16_t unsupported; /**< */
- uint16_t nDeviceLedFBs; /**< */
- uint8_t firstBtnWanted; /**< */
- uint8_t nBtnsWanted; /**< */
- uint8_t firstBtnRtrn; /**< */
- uint8_t nBtnsRtrn; /**< */
- uint8_t totalBtns; /**< */
- uint8_t hasOwnState; /**< */
- uint16_t dfltKbdFB; /**< */
- uint16_t dfltLedFB; /**< */
- uint8_t pad0[2]; /**< */
- xcb_atom_t devType; /**< */
- uint16_t nameLen; /**< */
-} xcb_xkb_get_device_info_reply_t;
-
-/** Opcode for xcb_xkb_set_device_info. */
-#define XCB_XKB_SET_DEVICE_INFO 25
-
-/**
- * @brief xcb_xkb_set_device_info_request_t
- **/
-typedef struct xcb_xkb_set_device_info_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- xcb_xkb_device_spec_t deviceSpec; /**< */
- uint8_t firstBtn; /**< */
- uint8_t nBtns; /**< */
- uint16_t change; /**< */
- uint16_t nDeviceLedFBs; /**< */
-} xcb_xkb_set_device_info_request_t;
-
-/**
- * @brief xcb_xkb_set_debugging_flags_cookie_t
- **/
-typedef struct xcb_xkb_set_debugging_flags_cookie_t {
- unsigned int sequence; /**< */
-} xcb_xkb_set_debugging_flags_cookie_t;
-
-/** Opcode for xcb_xkb_set_debugging_flags. */
-#define XCB_XKB_SET_DEBUGGING_FLAGS 101
-
-/**
- * @brief xcb_xkb_set_debugging_flags_request_t
- **/
-typedef struct xcb_xkb_set_debugging_flags_request_t {
- uint8_t major_opcode; /**< */
- uint8_t minor_opcode; /**< */
- uint16_t length; /**< */
- uint16_t msgLength; /**< */
- uint8_t pad0[2]; /**< */
- uint32_t affectFlags; /**< */
- uint32_t flags; /**< */
- uint32_t affectCtrls; /**< */
- uint32_t ctrls; /**< */
-} xcb_xkb_set_debugging_flags_request_t;
-
-/**
- * @brief xcb_xkb_set_debugging_flags_reply_t
- **/
-typedef struct xcb_xkb_set_debugging_flags_reply_t {
- uint8_t response_type; /**< */
- uint8_t pad0; /**< */
- uint16_t sequence; /**< */
- uint32_t length; /**< */
- uint32_t currentFlags; /**< */
- uint32_t currentCtrls; /**< */
- uint32_t supportedFlags; /**< */
- uint32_t supportedCtrls; /**< */
- uint8_t pad1[8]; /**< */
-} xcb_xkb_set_debugging_flags_reply_t;
-
-/** Opcode for xcb_xkb_new_keyboard_notify. */
-#define XCB_XKB_NEW_KEYBOARD_NOTIFY 0
-
-/**
- * @brief xcb_xkb_new_keyboard_notify_event_t
- **/
-typedef struct xcb_xkb_new_keyboard_notify_event_t {
- uint8_t response_type; /**< */
- uint8_t xkbType; /**< */
- uint16_t sequence; /**< */
- xcb_timestamp_t time; /**< */
- uint8_t deviceID; /**< */
- uint8_t oldDeviceID; /**< */
- xcb_keycode_t minKeyCode; /**< */
- xcb_keycode_t maxKeyCode; /**< */
- xcb_keycode_t oldMinKeyCode; /**< */
- xcb_keycode_t oldMaxKeyCode; /**< */
- uint8_t requestMajor; /**< */
- uint8_t requestMinor; /**< */
- uint16_t changed; /**< */
- uint8_t pad0[14]; /**< */
-} xcb_xkb_new_keyboard_notify_event_t;
-
-/** Opcode for xcb_xkb_map_notify. */
-#define XCB_XKB_MAP_NOTIFY 1
-
-/**
- * @brief xcb_xkb_map_notify_event_t
- **/
-typedef struct xcb_xkb_map_notify_event_t {
- uint8_t response_type; /**< */
- uint8_t xkbType; /**< */
- uint16_t sequence; /**< */
- xcb_timestamp_t time; /**< */
- uint8_t deviceID; /**< */
- uint8_t ptrBtnActions; /**< */
- uint16_t changed; /**< */
- xcb_keycode_t minKeyCode; /**< */
- xcb_keycode_t maxKeyCode; /**< */
- uint8_t firstType; /**< */
- uint8_t nTypes; /**< */
- xcb_keycode_t firstKeySym; /**< */
- uint8_t nKeySyms; /**< */
- xcb_keycode_t firstKeyAct; /**< */
- uint8_t nKeyActs; /**< */
- xcb_keycode_t firstKeyBehavior; /**< */
- uint8_t nKeyBehavior; /**< */
- xcb_keycode_t firstKeyExplicit; /**< */
- uint8_t nKeyExplicit; /**< */
- xcb_keycode_t firstModMapKey; /**< */
- uint8_t nModMapKeys; /**< */
- xcb_keycode_t firstVModMapKey; /**< */
- uint8_t nVModMapKeys; /**< */
- uint16_t virtualMods; /**< */
- uint8_t pad0[2]; /**< */
-} xcb_xkb_map_notify_event_t;
-
-/** Opcode for xcb_xkb_state_notify. */
-#define XCB_XKB_STATE_NOTIFY 2
-
-/**
- * @brief xcb_xkb_state_notify_event_t
- **/
-typedef struct xcb_xkb_state_notify_event_t {
- uint8_t response_type; /**< */
- uint8_t xkbType; /**< */
- uint16_t sequence; /**< */
- xcb_timestamp_t time; /**< */
- uint8_t deviceID; /**< */
- uint8_t mods; /**< */
- uint8_t baseMods; /**< */
- uint8_t latchedMods; /**< */
- uint8_t lockedMods; /**< */
- uint8_t group; /**< */
- int16_t baseGroup; /**< */
- int16_t latchedGroup; /**< */
- uint8_t lockedGroup; /**< */
- uint8_t compatState; /**< */
- uint8_t grabMods; /**< */
- uint8_t compatGrabMods; /**< */
- uint8_t lookupMods; /**< */
- uint8_t compatLoockupMods; /**< */
- uint16_t ptrBtnState; /**< */
- uint16_t changed; /**< */
- xcb_keycode_t keycode; /**< */
- uint8_t eventType; /**< */
- uint8_t requestMajor; /**< */
- uint8_t requestMinor; /**< */
-} xcb_xkb_state_notify_event_t;
-
-/** Opcode for xcb_xkb_controls_notify. */
-#define XCB_XKB_CONTROLS_NOTIFY 3
-
-/**
- * @brief xcb_xkb_controls_notify_event_t
- **/
-typedef struct xcb_xkb_controls_notify_event_t {
- uint8_t response_type; /**< */
- uint8_t xkbType; /**< */
- uint16_t sequence; /**< */
- xcb_timestamp_t time; /**< */
- uint8_t deviceID; /**< */
- uint8_t numGroups; /**< */
- uint8_t pad0[2]; /**< */
- uint32_t changedControls; /**< */
- uint32_t enabledControls; /**< */
- uint32_t enabledControlChanges; /**< */
- xcb_keycode_t keycode; /**< */
- uint8_t eventType; /**< */
- uint8_t requestMajor; /**< */
- uint8_t requestMinor; /**< */
- uint8_t pad1[4]; /**< */
-} xcb_xkb_controls_notify_event_t;
-
-/** Opcode for xcb_xkb_indicator_state_notify. */
-#define XCB_XKB_INDICATOR_STATE_NOTIFY 4
-
-/**
- * @brief xcb_xkb_indicator_state_notify_event_t
- **/
-typedef struct xcb_xkb_indicator_state_notify_event_t {
- uint8_t response_type; /**< */
- uint8_t xkbType; /**< */
- uint16_t sequence; /**< */
- xcb_timestamp_t time; /**< */
- uint8_t deviceID; /**< */
- uint8_t pad0[3]; /**< */
- uint32_t state; /**< */
- uint32_t stateChanged; /**< */
- uint8_t pad1[12]; /**< */
-} xcb_xkb_indicator_state_notify_event_t;
-
-/** Opcode for xcb_xkb_indicator_map_notify. */
-#define XCB_XKB_INDICATOR_MAP_NOTIFY 5
-
-/**
- * @brief xcb_xkb_indicator_map_notify_event_t
- **/
-typedef struct xcb_xkb_indicator_map_notify_event_t {
- uint8_t response_type; /**< */
- uint8_t xkbType; /**< */
- uint16_t sequence; /**< */
- xcb_timestamp_t time; /**< */
- uint8_t deviceID; /**< */
- uint8_t pad0[3]; /**< */
- uint32_t state; /**< */
- uint32_t mapChanged; /**< */
- uint8_t pad1[12]; /**< */
-} xcb_xkb_indicator_map_notify_event_t;
-
-/** Opcode for xcb_xkb_names_notify. */
-#define XCB_XKB_NAMES_NOTIFY 6
-
-/**
- * @brief xcb_xkb_names_notify_event_t
- **/
-typedef struct xcb_xkb_names_notify_event_t {
- uint8_t response_type; /**< */
- uint8_t xkbType; /**< */
- uint16_t sequence; /**< */
- xcb_timestamp_t time; /**< */
- uint8_t deviceID; /**< */
- uint8_t pad0; /**< */
- uint16_t changed; /**< */
- uint8_t firstType; /**< */
- uint8_t nTypes; /**< */
- uint8_t firstLevelName; /**< */
- uint8_t nLevelNames; /**< */
- uint8_t pad1; /**< */
- uint8_t nRadioGroups; /**< */
- uint8_t nKeyAliases; /**< */
- uint8_t changedGroupNames; /**< */
- uint16_t changedVirtualMods; /**< */
- xcb_keycode_t firstKey; /**< */
- uint8_t nKeys; /**< */
- uint32_t changedIndicators; /**< */
- uint8_t pad2[4]; /**< */
-} xcb_xkb_names_notify_event_t;
-
-/** Opcode for xcb_xkb_compat_map_notify. */
-#define XCB_XKB_COMPAT_MAP_NOTIFY 7
-
-/**
- * @brief xcb_xkb_compat_map_notify_event_t
- **/
-typedef struct xcb_xkb_compat_map_notify_event_t {
- uint8_t response_type; /**< */
- uint8_t xkbType; /**< */
- uint16_t sequence; /**< */
- xcb_timestamp_t time; /**< */
- uint8_t deviceID; /**< */
- uint8_t changedGroups; /**< */
- uint16_t firstSI; /**< */
- uint16_t nSI; /**< */
- uint16_t nTotalSI; /**< */
- uint8_t pad0[16]; /**< */
-} xcb_xkb_compat_map_notify_event_t;
-
-/** Opcode for xcb_xkb_bell_notify. */
-#define XCB_XKB_BELL_NOTIFY 8
-
-/**
- * @brief xcb_xkb_bell_notify_event_t
- **/
-typedef struct xcb_xkb_bell_notify_event_t {
- uint8_t response_type; /**< */
- uint8_t xkbType; /**< */
- uint16_t sequence; /**< */
- xcb_timestamp_t time; /**< */
- uint8_t deviceID; /**< */
- uint8_t bellClass; /**< */
- uint8_t bellID; /**< */
- uint8_t percent; /**< */
- uint16_t pitch; /**< */
- uint16_t duration; /**< */
- xcb_atom_t name; /**< */
- xcb_window_t window; /**< */
- uint8_t eventOnly; /**< */
- uint8_t pad0[7]; /**< */
-} xcb_xkb_bell_notify_event_t;
-
-/** Opcode for xcb_xkb_action_message. */
-#define XCB_XKB_ACTION_MESSAGE 9
-
-/**
- * @brief xcb_xkb_action_message_event_t
- **/
-typedef struct xcb_xkb_action_message_event_t {
- uint8_t response_type; /**< */
- uint8_t xkbType; /**< */
- uint16_t sequence; /**< */
- xcb_timestamp_t time; /**< */
- uint8_t deviceID; /**< */
- xcb_keycode_t keycode; /**< */
- uint8_t press; /**< */
- uint8_t keyEventFollows; /**< */
- uint8_t mods; /**< */
- uint8_t group; /**< */
- xcb_xkb_string8_t message[8]; /**< */
- uint8_t pad0[10]; /**< */
-} xcb_xkb_action_message_event_t;
-
-/** Opcode for xcb_xkb_access_x_notify. */
-#define XCB_XKB_ACCESS_X_NOTIFY 10
-
-/**
- * @brief xcb_xkb_access_x_notify_event_t
- **/
-typedef struct xcb_xkb_access_x_notify_event_t {
- uint8_t response_type; /**< */
- uint8_t xkbType; /**< */
- uint16_t sequence; /**< */
- xcb_timestamp_t time; /**< */
- uint8_t deviceID; /**< */
- xcb_keycode_t keycode; /**< */
- uint16_t detailt; /**< */
- uint16_t slowKeysDelay; /**< */
- uint16_t debounceDelay; /**< */
- uint8_t pad0[16]; /**< */
-} xcb_xkb_access_x_notify_event_t;
-
-/** Opcode for xcb_xkb_extension_device_notify. */
-#define XCB_XKB_EXTENSION_DEVICE_NOTIFY 11
-
-/**
- * @brief xcb_xkb_extension_device_notify_event_t
- **/
-typedef struct xcb_xkb_extension_device_notify_event_t {
- uint8_t response_type; /**< */
- uint8_t xkbType; /**< */
- uint16_t sequence; /**< */
- xcb_timestamp_t time; /**< */
- uint8_t deviceID; /**< */
- uint8_t pad0; /**< */
- uint16_t reason; /**< */
- uint16_t ledClass; /**< */
- uint16_t ledID; /**< */
- uint32_t ledsDefined; /**< */
- uint32_t ledState; /**< */
- uint8_t firstButton; /**< */
- uint8_t nButtons; /**< */
- uint16_t supported; /**< */
- uint16_t unsupported; /**< */
- uint8_t pad1[2]; /**< */
-} xcb_xkb_extension_device_notify_event_t;
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_device_spec_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_device_spec_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_device_spec_next
- **
- ** @param xcb_xkb_device_spec_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_device_spec_next (xcb_xkb_device_spec_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_device_spec_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_device_spec_end
- **
- ** @param xcb_xkb_device_spec_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_device_spec_end (xcb_xkb_device_spec_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_led_class_spec_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_led_class_spec_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_led_class_spec_next
- **
- ** @param xcb_xkb_led_class_spec_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_led_class_spec_next (xcb_xkb_led_class_spec_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_led_class_spec_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_led_class_spec_end
- **
- ** @param xcb_xkb_led_class_spec_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_led_class_spec_end (xcb_xkb_led_class_spec_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_bell_class_spec_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_bell_class_spec_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_bell_class_spec_next
- **
- ** @param xcb_xkb_bell_class_spec_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_bell_class_spec_next (xcb_xkb_bell_class_spec_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_bell_class_spec_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_bell_class_spec_end
- **
- ** @param xcb_xkb_bell_class_spec_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_bell_class_spec_end (xcb_xkb_bell_class_spec_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_id_spec_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_id_spec_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_id_spec_next
- **
- ** @param xcb_xkb_id_spec_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_id_spec_next (xcb_xkb_id_spec_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_id_spec_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_id_spec_end
- **
- ** @param xcb_xkb_id_spec_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_id_spec_end (xcb_xkb_id_spec_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_indicator_map_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_indicator_map_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_indicator_map_next
- **
- ** @param xcb_xkb_indicator_map_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_indicator_map_next (xcb_xkb_indicator_map_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_indicator_map_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_indicator_map_end
- **
- ** @param xcb_xkb_indicator_map_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_indicator_map_end (xcb_xkb_indicator_map_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_mod_def_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_mod_def_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_mod_def_next
- **
- ** @param xcb_xkb_mod_def_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_mod_def_next (xcb_xkb_mod_def_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_mod_def_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_mod_def_end
- **
- ** @param xcb_xkb_mod_def_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_mod_def_end (xcb_xkb_mod_def_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_key_name_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_key_name_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_key_name_next
- **
- ** @param xcb_xkb_key_name_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_key_name_next (xcb_xkb_key_name_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_key_name_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_key_name_end
- **
- ** @param xcb_xkb_key_name_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_key_name_end (xcb_xkb_key_name_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_key_alias_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_key_alias_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_key_alias_next
- **
- ** @param xcb_xkb_key_alias_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_key_alias_next (xcb_xkb_key_alias_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_key_alias_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_key_alias_end
- **
- ** @param xcb_xkb_key_alias_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_key_alias_end (xcb_xkb_key_alias_iterator_t i /**< */);
-
-int
-xcb_xkb_counted_string_16_sizeof (const void *_buffer /**< */);
-
-
-/*****************************************************************************
- **
- ** char * xcb_xkb_counted_string_16_string
- **
- ** @param const xcb_xkb_counted_string_16_t *R
- ** @returns char *
- **
- *****************************************************************************/
-
-char *
-xcb_xkb_counted_string_16_string (const xcb_xkb_counted_string_16_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_counted_string_16_string_length
- **
- ** @param const xcb_xkb_counted_string_16_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_counted_string_16_string_length (const xcb_xkb_counted_string_16_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_counted_string_16_string_end
- **
- ** @param const xcb_xkb_counted_string_16_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_counted_string_16_string_end (const xcb_xkb_counted_string_16_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** void * xcb_xkb_counted_string_16_alignment_pad
- **
- ** @param const xcb_xkb_counted_string_16_t *R
- ** @returns void *
- **
- *****************************************************************************/
-
-void *
-xcb_xkb_counted_string_16_alignment_pad (const xcb_xkb_counted_string_16_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_counted_string_16_alignment_pad_length
- **
- ** @param const xcb_xkb_counted_string_16_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_counted_string_16_alignment_pad_length (const xcb_xkb_counted_string_16_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_counted_string_16_alignment_pad_end
- **
- ** @param const xcb_xkb_counted_string_16_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_counted_string_16_alignment_pad_end (const xcb_xkb_counted_string_16_t *R /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_counted_string_16_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_counted_string_16_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_counted_string_16_next
- **
- ** @param xcb_xkb_counted_string_16_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_counted_string_16_next (xcb_xkb_counted_string_16_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_counted_string_16_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_counted_string_16_end
- **
- ** @param xcb_xkb_counted_string_16_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_counted_string_16_end (xcb_xkb_counted_string_16_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_kt_map_entry_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_kt_map_entry_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_kt_map_entry_next
- **
- ** @param xcb_xkb_kt_map_entry_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_kt_map_entry_next (xcb_xkb_kt_map_entry_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_kt_map_entry_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_kt_map_entry_end
- **
- ** @param xcb_xkb_kt_map_entry_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_kt_map_entry_end (xcb_xkb_kt_map_entry_iterator_t i /**< */);
-
-int
-xcb_xkb_key_type_sizeof (const void *_buffer /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_kt_map_entry_t * xcb_xkb_key_type_map
- **
- ** @param const xcb_xkb_key_type_t *R
- ** @returns xcb_xkb_kt_map_entry_t *
- **
- *****************************************************************************/
-
-xcb_xkb_kt_map_entry_t *
-xcb_xkb_key_type_map (const xcb_xkb_key_type_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_key_type_map_length
- **
- ** @param const xcb_xkb_key_type_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_key_type_map_length (const xcb_xkb_key_type_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_kt_map_entry_iterator_t xcb_xkb_key_type_map_iterator
- **
- ** @param const xcb_xkb_key_type_t *R
- ** @returns xcb_xkb_kt_map_entry_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_kt_map_entry_iterator_t
-xcb_xkb_key_type_map_iterator (const xcb_xkb_key_type_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_mod_def_t * xcb_xkb_key_type_preserve
- **
- ** @param const xcb_xkb_key_type_t *R
- ** @returns xcb_xkb_mod_def_t *
- **
- *****************************************************************************/
-
-xcb_xkb_mod_def_t *
-xcb_xkb_key_type_preserve (const xcb_xkb_key_type_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_key_type_preserve_length
- **
- ** @param const xcb_xkb_key_type_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_key_type_preserve_length (const xcb_xkb_key_type_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_mod_def_iterator_t xcb_xkb_key_type_preserve_iterator
- **
- ** @param const xcb_xkb_key_type_t *R
- ** @returns xcb_xkb_mod_def_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_mod_def_iterator_t
-xcb_xkb_key_type_preserve_iterator (const xcb_xkb_key_type_t *R /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_key_type_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_key_type_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_key_type_next
- **
- ** @param xcb_xkb_key_type_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_key_type_next (xcb_xkb_key_type_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_key_type_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_key_type_end
- **
- ** @param xcb_xkb_key_type_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_key_type_end (xcb_xkb_key_type_iterator_t i /**< */);
-
-int
-xcb_xkb_key_sym_map_sizeof (const void *_buffer /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_keysym_t * xcb_xkb_key_sym_map_syms
- **
- ** @param const xcb_xkb_key_sym_map_t *R
- ** @returns xcb_keysym_t *
- **
- *****************************************************************************/
-
-xcb_keysym_t *
-xcb_xkb_key_sym_map_syms (const xcb_xkb_key_sym_map_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_key_sym_map_syms_length
- **
- ** @param const xcb_xkb_key_sym_map_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_key_sym_map_syms_length (const xcb_xkb_key_sym_map_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_key_sym_map_syms_end
- **
- ** @param const xcb_xkb_key_sym_map_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_key_sym_map_syms_end (const xcb_xkb_key_sym_map_t *R /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_key_sym_map_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_key_sym_map_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_key_sym_map_next
- **
- ** @param xcb_xkb_key_sym_map_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_key_sym_map_next (xcb_xkb_key_sym_map_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_key_sym_map_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_key_sym_map_end
- **
- ** @param xcb_xkb_key_sym_map_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_key_sym_map_end (xcb_xkb_key_sym_map_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_common_behavior_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_common_behavior_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_common_behavior_next
- **
- ** @param xcb_xkb_common_behavior_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_common_behavior_next (xcb_xkb_common_behavior_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_common_behavior_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_common_behavior_end
- **
- ** @param xcb_xkb_common_behavior_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_common_behavior_end (xcb_xkb_common_behavior_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_default_behavior_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_default_behavior_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_default_behavior_next
- **
- ** @param xcb_xkb_default_behavior_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_default_behavior_next (xcb_xkb_default_behavior_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_default_behavior_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_default_behavior_end
- **
- ** @param xcb_xkb_default_behavior_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_default_behavior_end (xcb_xkb_default_behavior_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_lock_behavior_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_lock_behavior_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_lock_behavior_next
- **
- ** @param xcb_xkb_lock_behavior_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_lock_behavior_next (xcb_xkb_lock_behavior_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_lock_behavior_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_lock_behavior_end
- **
- ** @param xcb_xkb_lock_behavior_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_lock_behavior_end (xcb_xkb_lock_behavior_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_radio_group_behavior_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_radio_group_behavior_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_radio_group_behavior_next
- **
- ** @param xcb_xkb_radio_group_behavior_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_radio_group_behavior_next (xcb_xkb_radio_group_behavior_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_radio_group_behavior_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_radio_group_behavior_end
- **
- ** @param xcb_xkb_radio_group_behavior_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_radio_group_behavior_end (xcb_xkb_radio_group_behavior_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_overlay_behavior_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_overlay_behavior_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_overlay_behavior_next
- **
- ** @param xcb_xkb_overlay_behavior_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_overlay_behavior_next (xcb_xkb_overlay_behavior_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_overlay_behavior_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_overlay_behavior_end
- **
- ** @param xcb_xkb_overlay_behavior_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_overlay_behavior_end (xcb_xkb_overlay_behavior_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_permament_lock_behavior_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_permament_lock_behavior_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_permament_lock_behavior_next
- **
- ** @param xcb_xkb_permament_lock_behavior_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_permament_lock_behavior_next (xcb_xkb_permament_lock_behavior_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_permament_lock_behavior_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_permament_lock_behavior_end
- **
- ** @param xcb_xkb_permament_lock_behavior_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_permament_lock_behavior_end (xcb_xkb_permament_lock_behavior_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_permament_radio_group_behavior_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_permament_radio_group_behavior_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_permament_radio_group_behavior_next
- **
- ** @param xcb_xkb_permament_radio_group_behavior_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_permament_radio_group_behavior_next (xcb_xkb_permament_radio_group_behavior_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_permament_radio_group_behavior_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_permament_radio_group_behavior_end
- **
- ** @param xcb_xkb_permament_radio_group_behavior_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_permament_radio_group_behavior_end (xcb_xkb_permament_radio_group_behavior_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_permament_overlay_behavior_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_permament_overlay_behavior_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_permament_overlay_behavior_next
- **
- ** @param xcb_xkb_permament_overlay_behavior_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_permament_overlay_behavior_next (xcb_xkb_permament_overlay_behavior_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_permament_overlay_behavior_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_permament_overlay_behavior_end
- **
- ** @param xcb_xkb_permament_overlay_behavior_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_permament_overlay_behavior_end (xcb_xkb_permament_overlay_behavior_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_behavior_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_behavior_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_behavior_next
- **
- ** @param xcb_xkb_behavior_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_behavior_next (xcb_xkb_behavior_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_behavior_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_behavior_end
- **
- ** @param xcb_xkb_behavior_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_behavior_end (xcb_xkb_behavior_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_set_behavior_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_set_behavior_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_set_behavior_next
- **
- ** @param xcb_xkb_set_behavior_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_set_behavior_next (xcb_xkb_set_behavior_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_set_behavior_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_set_behavior_end
- **
- ** @param xcb_xkb_set_behavior_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_set_behavior_end (xcb_xkb_set_behavior_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_set_explicit_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_set_explicit_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_set_explicit_next
- **
- ** @param xcb_xkb_set_explicit_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_set_explicit_next (xcb_xkb_set_explicit_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_set_explicit_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_set_explicit_end
- **
- ** @param xcb_xkb_set_explicit_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_set_explicit_end (xcb_xkb_set_explicit_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_key_mod_map_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_key_mod_map_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_key_mod_map_next
- **
- ** @param xcb_xkb_key_mod_map_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_key_mod_map_next (xcb_xkb_key_mod_map_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_key_mod_map_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_key_mod_map_end
- **
- ** @param xcb_xkb_key_mod_map_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_key_mod_map_end (xcb_xkb_key_mod_map_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_key_v_mod_map_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_key_v_mod_map_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_key_v_mod_map_next
- **
- ** @param xcb_xkb_key_v_mod_map_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_key_v_mod_map_next (xcb_xkb_key_v_mod_map_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_key_v_mod_map_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_key_v_mod_map_end
- **
- ** @param xcb_xkb_key_v_mod_map_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_key_v_mod_map_end (xcb_xkb_key_v_mod_map_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_kt_set_map_entry_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_kt_set_map_entry_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_kt_set_map_entry_next
- **
- ** @param xcb_xkb_kt_set_map_entry_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_kt_set_map_entry_next (xcb_xkb_kt_set_map_entry_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_kt_set_map_entry_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_kt_set_map_entry_end
- **
- ** @param xcb_xkb_kt_set_map_entry_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_kt_set_map_entry_end (xcb_xkb_kt_set_map_entry_iterator_t i /**< */);
-
-int
-xcb_xkb_set_key_type_sizeof (const void *_buffer /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_kt_set_map_entry_t * xcb_xkb_set_key_type_entries
- **
- ** @param const xcb_xkb_set_key_type_t *R
- ** @returns xcb_xkb_kt_set_map_entry_t *
- **
- *****************************************************************************/
-
-xcb_xkb_kt_set_map_entry_t *
-xcb_xkb_set_key_type_entries (const xcb_xkb_set_key_type_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_set_key_type_entries_length
- **
- ** @param const xcb_xkb_set_key_type_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_set_key_type_entries_length (const xcb_xkb_set_key_type_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_kt_set_map_entry_iterator_t xcb_xkb_set_key_type_entries_iterator
- **
- ** @param const xcb_xkb_set_key_type_t *R
- ** @returns xcb_xkb_kt_set_map_entry_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_kt_set_map_entry_iterator_t
-xcb_xkb_set_key_type_entries_iterator (const xcb_xkb_set_key_type_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_kt_set_map_entry_t * xcb_xkb_set_key_type_preserve_entries
- **
- ** @param const xcb_xkb_set_key_type_t *R
- ** @returns xcb_xkb_kt_set_map_entry_t *
- **
- *****************************************************************************/
-
-xcb_xkb_kt_set_map_entry_t *
-xcb_xkb_set_key_type_preserve_entries (const xcb_xkb_set_key_type_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_set_key_type_preserve_entries_length
- **
- ** @param const xcb_xkb_set_key_type_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_set_key_type_preserve_entries_length (const xcb_xkb_set_key_type_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_kt_set_map_entry_iterator_t xcb_xkb_set_key_type_preserve_entries_iterator
- **
- ** @param const xcb_xkb_set_key_type_t *R
- ** @returns xcb_xkb_kt_set_map_entry_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_kt_set_map_entry_iterator_t
-xcb_xkb_set_key_type_preserve_entries_iterator (const xcb_xkb_set_key_type_t *R /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_set_key_type_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_set_key_type_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_set_key_type_next
- **
- ** @param xcb_xkb_set_key_type_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_set_key_type_next (xcb_xkb_set_key_type_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_set_key_type_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_set_key_type_end
- **
- ** @param xcb_xkb_set_key_type_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_set_key_type_end (xcb_xkb_set_key_type_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_string8_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_string8_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_string8_next
- **
- ** @param xcb_xkb_string8_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_string8_next (xcb_xkb_string8_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_string8_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_string8_end
- **
- ** @param xcb_xkb_string8_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_string8_end (xcb_xkb_string8_iterator_t i /**< */);
-
-int
-xcb_xkb_outline_sizeof (const void *_buffer /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_point_t * xcb_xkb_outline_points
- **
- ** @param const xcb_xkb_outline_t *R
- ** @returns xcb_point_t *
- **
- *****************************************************************************/
-
-xcb_point_t *
-xcb_xkb_outline_points (const xcb_xkb_outline_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_outline_points_length
- **
- ** @param const xcb_xkb_outline_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_outline_points_length (const xcb_xkb_outline_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_point_iterator_t xcb_xkb_outline_points_iterator
- **
- ** @param const xcb_xkb_outline_t *R
- ** @returns xcb_point_iterator_t
- **
- *****************************************************************************/
-
-xcb_point_iterator_t
-xcb_xkb_outline_points_iterator (const xcb_xkb_outline_t *R /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_outline_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_outline_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_outline_next
- **
- ** @param xcb_xkb_outline_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_outline_next (xcb_xkb_outline_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_outline_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_outline_end
- **
- ** @param xcb_xkb_outline_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_outline_end (xcb_xkb_outline_iterator_t i /**< */);
-
-int
-xcb_xkb_shape_sizeof (const void *_buffer /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_shape_outlines_length
- **
- ** @param const xcb_xkb_shape_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_shape_outlines_length (const xcb_xkb_shape_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_outline_iterator_t xcb_xkb_shape_outlines_iterator
- **
- ** @param const xcb_xkb_shape_t *R
- ** @returns xcb_xkb_outline_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_outline_iterator_t
-xcb_xkb_shape_outlines_iterator (const xcb_xkb_shape_t *R /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_shape_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_shape_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_shape_next
- **
- ** @param xcb_xkb_shape_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_shape_next (xcb_xkb_shape_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_shape_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_shape_end
- **
- ** @param xcb_xkb_shape_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_shape_end (xcb_xkb_shape_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_key_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_key_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_key_next
- **
- ** @param xcb_xkb_key_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_key_next (xcb_xkb_key_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_key_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_key_end
- **
- ** @param xcb_xkb_key_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_key_end (xcb_xkb_key_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_overlay_key_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_overlay_key_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_overlay_key_next
- **
- ** @param xcb_xkb_overlay_key_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_overlay_key_next (xcb_xkb_overlay_key_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_overlay_key_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_overlay_key_end
- **
- ** @param xcb_xkb_overlay_key_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_overlay_key_end (xcb_xkb_overlay_key_iterator_t i /**< */);
-
-int
-xcb_xkb_overlay_row_sizeof (const void *_buffer /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_overlay_key_t * xcb_xkb_overlay_row_keys
- **
- ** @param const xcb_xkb_overlay_row_t *R
- ** @returns xcb_xkb_overlay_key_t *
- **
- *****************************************************************************/
-
-xcb_xkb_overlay_key_t *
-xcb_xkb_overlay_row_keys (const xcb_xkb_overlay_row_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_overlay_row_keys_length
- **
- ** @param const xcb_xkb_overlay_row_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_overlay_row_keys_length (const xcb_xkb_overlay_row_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_overlay_key_iterator_t xcb_xkb_overlay_row_keys_iterator
- **
- ** @param const xcb_xkb_overlay_row_t *R
- ** @returns xcb_xkb_overlay_key_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_overlay_key_iterator_t
-xcb_xkb_overlay_row_keys_iterator (const xcb_xkb_overlay_row_t *R /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_overlay_row_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_overlay_row_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_overlay_row_next
- **
- ** @param xcb_xkb_overlay_row_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_overlay_row_next (xcb_xkb_overlay_row_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_overlay_row_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_overlay_row_end
- **
- ** @param xcb_xkb_overlay_row_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_overlay_row_end (xcb_xkb_overlay_row_iterator_t i /**< */);
-
-int
-xcb_xkb_overlay_sizeof (const void *_buffer /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_overlay_rows_length
- **
- ** @param const xcb_xkb_overlay_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_overlay_rows_length (const xcb_xkb_overlay_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_overlay_row_iterator_t xcb_xkb_overlay_rows_iterator
- **
- ** @param const xcb_xkb_overlay_t *R
- ** @returns xcb_xkb_overlay_row_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_overlay_row_iterator_t
-xcb_xkb_overlay_rows_iterator (const xcb_xkb_overlay_t *R /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_overlay_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_overlay_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_overlay_next
- **
- ** @param xcb_xkb_overlay_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_overlay_next (xcb_xkb_overlay_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_overlay_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_overlay_end
- **
- ** @param xcb_xkb_overlay_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_overlay_end (xcb_xkb_overlay_iterator_t i /**< */);
-
-int
-xcb_xkb_row_sizeof (const void *_buffer /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_t * xcb_xkb_row_keys
- **
- ** @param const xcb_xkb_row_t *R
- ** @returns xcb_xkb_key_t *
- **
- *****************************************************************************/
-
-xcb_xkb_key_t *
-xcb_xkb_row_keys (const xcb_xkb_row_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_row_keys_length
- **
- ** @param const xcb_xkb_row_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_row_keys_length (const xcb_xkb_row_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_iterator_t xcb_xkb_row_keys_iterator
- **
- ** @param const xcb_xkb_row_t *R
- ** @returns xcb_xkb_key_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_key_iterator_t
-xcb_xkb_row_keys_iterator (const xcb_xkb_row_t *R /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_row_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_row_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_row_next
- **
- ** @param xcb_xkb_row_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_row_next (xcb_xkb_row_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_row_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_row_end
- **
- ** @param xcb_xkb_row_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_row_end (xcb_xkb_row_iterator_t i /**< */);
-
-int
-xcb_xkb_listing_sizeof (const void *_buffer /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_string8_t * xcb_xkb_listing_string
- **
- ** @param const xcb_xkb_listing_t *R
- ** @returns xcb_xkb_string8_t *
- **
- *****************************************************************************/
-
-xcb_xkb_string8_t *
-xcb_xkb_listing_string (const xcb_xkb_listing_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_listing_string_length
- **
- ** @param const xcb_xkb_listing_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_listing_string_length (const xcb_xkb_listing_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_listing_string_end
- **
- ** @param const xcb_xkb_listing_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_listing_string_end (const xcb_xkb_listing_t *R /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_listing_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_listing_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_listing_next
- **
- ** @param xcb_xkb_listing_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_listing_next (xcb_xkb_listing_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_listing_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_listing_end
- **
- ** @param xcb_xkb_listing_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_listing_end (xcb_xkb_listing_iterator_t i /**< */);
-
-int
-xcb_xkb_device_led_info_sizeof (const void *_buffer /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_atom_t * xcb_xkb_device_led_info_names
- **
- ** @param const xcb_xkb_device_led_info_t *R
- ** @returns xcb_atom_t *
- **
- *****************************************************************************/
-
-xcb_atom_t *
-xcb_xkb_device_led_info_names (const xcb_xkb_device_led_info_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_device_led_info_names_length
- **
- ** @param const xcb_xkb_device_led_info_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_device_led_info_names_length (const xcb_xkb_device_led_info_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_device_led_info_names_end
- **
- ** @param const xcb_xkb_device_led_info_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_device_led_info_names_end (const xcb_xkb_device_led_info_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_indicator_map_t * xcb_xkb_device_led_info_maps
- **
- ** @param const xcb_xkb_device_led_info_t *R
- ** @returns xcb_xkb_indicator_map_t *
- **
- *****************************************************************************/
-
-xcb_xkb_indicator_map_t *
-xcb_xkb_device_led_info_maps (const xcb_xkb_device_led_info_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_device_led_info_maps_length
- **
- ** @param const xcb_xkb_device_led_info_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_device_led_info_maps_length (const xcb_xkb_device_led_info_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_indicator_map_iterator_t xcb_xkb_device_led_info_maps_iterator
- **
- ** @param const xcb_xkb_device_led_info_t *R
- ** @returns xcb_xkb_indicator_map_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_indicator_map_iterator_t
-xcb_xkb_device_led_info_maps_iterator (const xcb_xkb_device_led_info_t *R /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_device_led_info_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_device_led_info_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_device_led_info_next
- **
- ** @param xcb_xkb_device_led_info_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_device_led_info_next (xcb_xkb_device_led_info_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_device_led_info_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_device_led_info_end
- **
- ** @param xcb_xkb_device_led_info_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_device_led_info_end (xcb_xkb_device_led_info_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_sa_no_action_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_sa_no_action_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_sa_no_action_next
- **
- ** @param xcb_xkb_sa_no_action_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_sa_no_action_next (xcb_xkb_sa_no_action_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_sa_no_action_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_sa_no_action_end
- **
- ** @param xcb_xkb_sa_no_action_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_sa_no_action_end (xcb_xkb_sa_no_action_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_sa_set_mods_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_sa_set_mods_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_sa_set_mods_next
- **
- ** @param xcb_xkb_sa_set_mods_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_sa_set_mods_next (xcb_xkb_sa_set_mods_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_sa_set_mods_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_sa_set_mods_end
- **
- ** @param xcb_xkb_sa_set_mods_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_sa_set_mods_end (xcb_xkb_sa_set_mods_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_sa_latch_mods_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_sa_latch_mods_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_sa_latch_mods_next
- **
- ** @param xcb_xkb_sa_latch_mods_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_sa_latch_mods_next (xcb_xkb_sa_latch_mods_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_sa_latch_mods_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_sa_latch_mods_end
- **
- ** @param xcb_xkb_sa_latch_mods_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_sa_latch_mods_end (xcb_xkb_sa_latch_mods_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_sa_lock_mods_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_sa_lock_mods_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_sa_lock_mods_next
- **
- ** @param xcb_xkb_sa_lock_mods_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_sa_lock_mods_next (xcb_xkb_sa_lock_mods_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_sa_lock_mods_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_sa_lock_mods_end
- **
- ** @param xcb_xkb_sa_lock_mods_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_sa_lock_mods_end (xcb_xkb_sa_lock_mods_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_sa_set_group_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_sa_set_group_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_sa_set_group_next
- **
- ** @param xcb_xkb_sa_set_group_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_sa_set_group_next (xcb_xkb_sa_set_group_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_sa_set_group_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_sa_set_group_end
- **
- ** @param xcb_xkb_sa_set_group_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_sa_set_group_end (xcb_xkb_sa_set_group_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_sa_latch_group_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_sa_latch_group_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_sa_latch_group_next
- **
- ** @param xcb_xkb_sa_latch_group_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_sa_latch_group_next (xcb_xkb_sa_latch_group_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_sa_latch_group_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_sa_latch_group_end
- **
- ** @param xcb_xkb_sa_latch_group_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_sa_latch_group_end (xcb_xkb_sa_latch_group_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_sa_lock_group_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_sa_lock_group_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_sa_lock_group_next
- **
- ** @param xcb_xkb_sa_lock_group_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_sa_lock_group_next (xcb_xkb_sa_lock_group_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_sa_lock_group_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_sa_lock_group_end
- **
- ** @param xcb_xkb_sa_lock_group_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_sa_lock_group_end (xcb_xkb_sa_lock_group_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_sa_move_ptr_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_sa_move_ptr_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_sa_move_ptr_next
- **
- ** @param xcb_xkb_sa_move_ptr_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_sa_move_ptr_next (xcb_xkb_sa_move_ptr_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_sa_move_ptr_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_sa_move_ptr_end
- **
- ** @param xcb_xkb_sa_move_ptr_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_sa_move_ptr_end (xcb_xkb_sa_move_ptr_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_sa_ptr_btn_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_sa_ptr_btn_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_sa_ptr_btn_next
- **
- ** @param xcb_xkb_sa_ptr_btn_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_sa_ptr_btn_next (xcb_xkb_sa_ptr_btn_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_sa_ptr_btn_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_sa_ptr_btn_end
- **
- ** @param xcb_xkb_sa_ptr_btn_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_sa_ptr_btn_end (xcb_xkb_sa_ptr_btn_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_sa_lock_ptr_btn_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_sa_lock_ptr_btn_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_sa_lock_ptr_btn_next
- **
- ** @param xcb_xkb_sa_lock_ptr_btn_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_sa_lock_ptr_btn_next (xcb_xkb_sa_lock_ptr_btn_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_sa_lock_ptr_btn_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_sa_lock_ptr_btn_end
- **
- ** @param xcb_xkb_sa_lock_ptr_btn_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_sa_lock_ptr_btn_end (xcb_xkb_sa_lock_ptr_btn_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_sa_set_ptr_dflt_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_sa_set_ptr_dflt_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_sa_set_ptr_dflt_next
- **
- ** @param xcb_xkb_sa_set_ptr_dflt_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_sa_set_ptr_dflt_next (xcb_xkb_sa_set_ptr_dflt_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_sa_set_ptr_dflt_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_sa_set_ptr_dflt_end
- **
- ** @param xcb_xkb_sa_set_ptr_dflt_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_sa_set_ptr_dflt_end (xcb_xkb_sa_set_ptr_dflt_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_sa_iso_lock_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_sa_iso_lock_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_sa_iso_lock_next
- **
- ** @param xcb_xkb_sa_iso_lock_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_sa_iso_lock_next (xcb_xkb_sa_iso_lock_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_sa_iso_lock_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_sa_iso_lock_end
- **
- ** @param xcb_xkb_sa_iso_lock_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_sa_iso_lock_end (xcb_xkb_sa_iso_lock_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_sa_terminate_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_sa_terminate_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_sa_terminate_next
- **
- ** @param xcb_xkb_sa_terminate_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_sa_terminate_next (xcb_xkb_sa_terminate_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_sa_terminate_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_sa_terminate_end
- **
- ** @param xcb_xkb_sa_terminate_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_sa_terminate_end (xcb_xkb_sa_terminate_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_sa_switch_screen_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_sa_switch_screen_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_sa_switch_screen_next
- **
- ** @param xcb_xkb_sa_switch_screen_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_sa_switch_screen_next (xcb_xkb_sa_switch_screen_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_sa_switch_screen_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_sa_switch_screen_end
- **
- ** @param xcb_xkb_sa_switch_screen_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_sa_switch_screen_end (xcb_xkb_sa_switch_screen_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_sa_set_controls_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_sa_set_controls_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_sa_set_controls_next
- **
- ** @param xcb_xkb_sa_set_controls_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_sa_set_controls_next (xcb_xkb_sa_set_controls_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_sa_set_controls_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_sa_set_controls_end
- **
- ** @param xcb_xkb_sa_set_controls_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_sa_set_controls_end (xcb_xkb_sa_set_controls_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_sa_lock_controls_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_sa_lock_controls_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_sa_lock_controls_next
- **
- ** @param xcb_xkb_sa_lock_controls_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_sa_lock_controls_next (xcb_xkb_sa_lock_controls_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_sa_lock_controls_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_sa_lock_controls_end
- **
- ** @param xcb_xkb_sa_lock_controls_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_sa_lock_controls_end (xcb_xkb_sa_lock_controls_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_sa_action_message_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_sa_action_message_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_sa_action_message_next
- **
- ** @param xcb_xkb_sa_action_message_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_sa_action_message_next (xcb_xkb_sa_action_message_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_sa_action_message_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_sa_action_message_end
- **
- ** @param xcb_xkb_sa_action_message_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_sa_action_message_end (xcb_xkb_sa_action_message_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_sa_redirect_key_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_sa_redirect_key_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_sa_redirect_key_next
- **
- ** @param xcb_xkb_sa_redirect_key_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_sa_redirect_key_next (xcb_xkb_sa_redirect_key_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_sa_redirect_key_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_sa_redirect_key_end
- **
- ** @param xcb_xkb_sa_redirect_key_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_sa_redirect_key_end (xcb_xkb_sa_redirect_key_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_sa_device_btn_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_sa_device_btn_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_sa_device_btn_next
- **
- ** @param xcb_xkb_sa_device_btn_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_sa_device_btn_next (xcb_xkb_sa_device_btn_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_sa_device_btn_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_sa_device_btn_end
- **
- ** @param xcb_xkb_sa_device_btn_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_sa_device_btn_end (xcb_xkb_sa_device_btn_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_sa_lock_device_btn_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_sa_lock_device_btn_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_sa_lock_device_btn_next
- **
- ** @param xcb_xkb_sa_lock_device_btn_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_sa_lock_device_btn_next (xcb_xkb_sa_lock_device_btn_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_sa_lock_device_btn_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_sa_lock_device_btn_end
- **
- ** @param xcb_xkb_sa_lock_device_btn_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_sa_lock_device_btn_end (xcb_xkb_sa_lock_device_btn_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_sa_device_valuator_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_sa_device_valuator_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_sa_device_valuator_next
- **
- ** @param xcb_xkb_sa_device_valuator_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_sa_device_valuator_next (xcb_xkb_sa_device_valuator_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_sa_device_valuator_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_sa_device_valuator_end
- **
- ** @param xcb_xkb_sa_device_valuator_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_sa_device_valuator_end (xcb_xkb_sa_device_valuator_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_si_action_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_si_action_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_si_action_next
- **
- ** @param xcb_xkb_si_action_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_si_action_next (xcb_xkb_si_action_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_si_action_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_si_action_end
- **
- ** @param xcb_xkb_si_action_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_si_action_end (xcb_xkb_si_action_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_sym_interpret_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_sym_interpret_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_sym_interpret_next
- **
- ** @param xcb_xkb_sym_interpret_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_sym_interpret_next (xcb_xkb_sym_interpret_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_sym_interpret_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_sym_interpret_end
- **
- ** @param xcb_xkb_sym_interpret_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_sym_interpret_end (xcb_xkb_sym_interpret_iterator_t i /**< */);
-
-/**
- * Get the next element of the iterator
- * @param i Pointer to a xcb_xkb_action_iterator_t
- *
- * Get the next element in the iterator. The member rem is
- * decreased by one. The member data points to the next
- * element. The member index is increased by sizeof(xcb_xkb_action_t)
- */
-
-/*****************************************************************************
- **
- ** void xcb_xkb_action_next
- **
- ** @param xcb_xkb_action_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_action_next (xcb_xkb_action_iterator_t *i /**< */);
-
-/**
- * Return the iterator pointing to the last element
- * @param i An xcb_xkb_action_iterator_t
- * @return The iterator pointing to the last element
- *
- * Set the current element in the iterator to the last element.
- * The member rem is set to 0. The member data points to the
- * last element.
- */
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_action_end
- **
- ** @param xcb_xkb_action_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_action_end (xcb_xkb_action_iterator_t i /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_xkb_use_extension_cookie_t xcb_xkb_use_extension
- **
- ** @param xcb_connection_t *c
- ** @param uint16_t wantedMajor
- ** @param uint16_t wantedMinor
- ** @returns xcb_xkb_use_extension_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_use_extension_cookie_t
-xcb_xkb_use_extension (xcb_connection_t *c /**< */,
- uint16_t wantedMajor /**< */,
- uint16_t wantedMinor /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_xkb_use_extension_cookie_t xcb_xkb_use_extension_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param uint16_t wantedMajor
- ** @param uint16_t wantedMinor
- ** @returns xcb_xkb_use_extension_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_use_extension_cookie_t
-xcb_xkb_use_extension_unchecked (xcb_connection_t *c /**< */,
- uint16_t wantedMajor /**< */,
- uint16_t wantedMinor /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_xkb_use_extension_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_xkb_use_extension_reply_t * xcb_xkb_use_extension_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_use_extension_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xkb_use_extension_reply_t *
- **
- *****************************************************************************/
-
-xcb_xkb_use_extension_reply_t *
-xcb_xkb_use_extension_reply (xcb_connection_t *c /**< */,
- xcb_xkb_use_extension_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-int
-xcb_xkb_select_events_details_serialize (void **_buffer /**< */,
- uint16_t affectWhich /**< */,
- uint16_t clear /**< */,
- uint16_t selectAll /**< */,
- const xcb_xkb_select_events_details_t *_aux /**< */);
-
-int
-xcb_xkb_select_events_details_unpack (const void *_buffer /**< */,
- uint16_t affectWhich /**< */,
- uint16_t clear /**< */,
- uint16_t selectAll /**< */,
- xcb_xkb_select_events_details_t *_aux /**< */);
-
-int
-xcb_xkb_select_events_details_sizeof (const void *_buffer /**< */,
- uint16_t affectWhich /**< */,
- uint16_t clear /**< */,
- uint16_t selectAll /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_select_events_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint16_t affectWhich
- ** @param uint16_t clear
- ** @param uint16_t selectAll
- ** @param uint16_t affectMap
- ** @param uint16_t map
- ** @param const void *details
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_select_events_checked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint16_t affectWhich /**< */,
- uint16_t clear /**< */,
- uint16_t selectAll /**< */,
- uint16_t affectMap /**< */,
- uint16_t map /**< */,
- const void *details /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_select_events
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint16_t affectWhich
- ** @param uint16_t clear
- ** @param uint16_t selectAll
- ** @param uint16_t affectMap
- ** @param uint16_t map
- ** @param const void *details
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_select_events (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint16_t affectWhich /**< */,
- uint16_t clear /**< */,
- uint16_t selectAll /**< */,
- uint16_t affectMap /**< */,
- uint16_t map /**< */,
- const void *details /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_select_events_aux_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint16_t affectWhich
- ** @param uint16_t clear
- ** @param uint16_t selectAll
- ** @param uint16_t affectMap
- ** @param uint16_t map
- ** @param const xcb_xkb_select_events_details_t *details
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_select_events_aux_checked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint16_t affectWhich /**< */,
- uint16_t clear /**< */,
- uint16_t selectAll /**< */,
- uint16_t affectMap /**< */,
- uint16_t map /**< */,
- const xcb_xkb_select_events_details_t *details /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_select_events_aux
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint16_t affectWhich
- ** @param uint16_t clear
- ** @param uint16_t selectAll
- ** @param uint16_t affectMap
- ** @param uint16_t map
- ** @param const xcb_xkb_select_events_details_t *details
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_select_events_aux (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint16_t affectWhich /**< */,
- uint16_t clear /**< */,
- uint16_t selectAll /**< */,
- uint16_t affectMap /**< */,
- uint16_t map /**< */,
- const xcb_xkb_select_events_details_t *details /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_bell_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param xcb_xkb_bell_class_spec_t bellClass
- ** @param xcb_xkb_id_spec_t bellID
- ** @param int8_t percent
- ** @param uint8_t forceSound
- ** @param uint8_t eventOnly
- ** @param int16_t pitch
- ** @param int16_t duration
- ** @param xcb_atom_t name
- ** @param xcb_window_t window
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_bell_checked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- xcb_xkb_bell_class_spec_t bellClass /**< */,
- xcb_xkb_id_spec_t bellID /**< */,
- int8_t percent /**< */,
- uint8_t forceSound /**< */,
- uint8_t eventOnly /**< */,
- int16_t pitch /**< */,
- int16_t duration /**< */,
- xcb_atom_t name /**< */,
- xcb_window_t window /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_bell
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param xcb_xkb_bell_class_spec_t bellClass
- ** @param xcb_xkb_id_spec_t bellID
- ** @param int8_t percent
- ** @param uint8_t forceSound
- ** @param uint8_t eventOnly
- ** @param int16_t pitch
- ** @param int16_t duration
- ** @param xcb_atom_t name
- ** @param xcb_window_t window
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_bell (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- xcb_xkb_bell_class_spec_t bellClass /**< */,
- xcb_xkb_id_spec_t bellID /**< */,
- int8_t percent /**< */,
- uint8_t forceSound /**< */,
- uint8_t eventOnly /**< */,
- int16_t pitch /**< */,
- int16_t duration /**< */,
- xcb_atom_t name /**< */,
- xcb_window_t window /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_state_cookie_t xcb_xkb_get_state
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @returns xcb_xkb_get_state_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_get_state_cookie_t
-xcb_xkb_get_state (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_state_cookie_t xcb_xkb_get_state_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @returns xcb_xkb_get_state_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_get_state_cookie_t
-xcb_xkb_get_state_unchecked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_xkb_get_state_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_state_reply_t * xcb_xkb_get_state_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_get_state_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xkb_get_state_reply_t *
- **
- *****************************************************************************/
-
-xcb_xkb_get_state_reply_t *
-xcb_xkb_get_state_reply (xcb_connection_t *c /**< */,
- xcb_xkb_get_state_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_latch_lock_state_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint8_t affectModLocks
- ** @param uint8_t modLocks
- ** @param uint8_t lockGroup
- ** @param uint8_t groupLock
- ** @param uint8_t affectModLatches
- ** @param uint8_t latchGroup
- ** @param uint16_t groupLatch
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_latch_lock_state_checked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint8_t affectModLocks /**< */,
- uint8_t modLocks /**< */,
- uint8_t lockGroup /**< */,
- uint8_t groupLock /**< */,
- uint8_t affectModLatches /**< */,
- uint8_t latchGroup /**< */,
- uint16_t groupLatch /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_latch_lock_state
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint8_t affectModLocks
- ** @param uint8_t modLocks
- ** @param uint8_t lockGroup
- ** @param uint8_t groupLock
- ** @param uint8_t affectModLatches
- ** @param uint8_t latchGroup
- ** @param uint16_t groupLatch
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_latch_lock_state (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint8_t affectModLocks /**< */,
- uint8_t modLocks /**< */,
- uint8_t lockGroup /**< */,
- uint8_t groupLock /**< */,
- uint8_t affectModLatches /**< */,
- uint8_t latchGroup /**< */,
- uint16_t groupLatch /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_controls_cookie_t xcb_xkb_get_controls
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @returns xcb_xkb_get_controls_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_get_controls_cookie_t
-xcb_xkb_get_controls (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_controls_cookie_t xcb_xkb_get_controls_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @returns xcb_xkb_get_controls_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_get_controls_cookie_t
-xcb_xkb_get_controls_unchecked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_xkb_get_controls_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_controls_reply_t * xcb_xkb_get_controls_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_get_controls_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xkb_get_controls_reply_t *
- **
- *****************************************************************************/
-
-xcb_xkb_get_controls_reply_t *
-xcb_xkb_get_controls_reply (xcb_connection_t *c /**< */,
- xcb_xkb_get_controls_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_set_controls_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint8_t affectInternalRealMods
- ** @param uint8_t internalRealMods
- ** @param uint8_t affectIgnoreLockRealMods
- ** @param uint8_t ignoreLockRealMods
- ** @param uint16_t affectInternalVirtualMods
- ** @param uint16_t internalVirtualMods
- ** @param uint16_t affectIgnoreLockVirtualMods
- ** @param uint16_t ignoreLockVirtualMods
- ** @param uint8_t mouseKeysDfltBtn
- ** @param uint8_t groupsWrap
- ** @param uint16_t accessXOptions
- ** @param uint32_t affectEnabledControls
- ** @param uint32_t enabledControls
- ** @param uint32_t changeControls
- ** @param uint16_t repeatDelay
- ** @param uint16_t repeatInterval
- ** @param uint16_t slowKeysDelay
- ** @param uint16_t debounceDelay
- ** @param uint16_t mouseKeysDelay
- ** @param uint16_t mouseKeysInterval
- ** @param uint16_t mouseKeysTimeToMax
- ** @param uint16_t mouseKeysMaxSpeed
- ** @param int16_t mouseKeysCurve
- ** @param uint16_t accessXTimeout
- ** @param uint32_t accessXTimeoutMask
- ** @param uint32_t accessXTimeoutValues
- ** @param uint16_t accessXTimeoutOptionsMask
- ** @param uint16_t accessXTimeoutOptionsValues
- ** @param const uint8_t *perKeyRepeat
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_set_controls_checked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint8_t affectInternalRealMods /**< */,
- uint8_t internalRealMods /**< */,
- uint8_t affectIgnoreLockRealMods /**< */,
- uint8_t ignoreLockRealMods /**< */,
- uint16_t affectInternalVirtualMods /**< */,
- uint16_t internalVirtualMods /**< */,
- uint16_t affectIgnoreLockVirtualMods /**< */,
- uint16_t ignoreLockVirtualMods /**< */,
- uint8_t mouseKeysDfltBtn /**< */,
- uint8_t groupsWrap /**< */,
- uint16_t accessXOptions /**< */,
- uint32_t affectEnabledControls /**< */,
- uint32_t enabledControls /**< */,
- uint32_t changeControls /**< */,
- uint16_t repeatDelay /**< */,
- uint16_t repeatInterval /**< */,
- uint16_t slowKeysDelay /**< */,
- uint16_t debounceDelay /**< */,
- uint16_t mouseKeysDelay /**< */,
- uint16_t mouseKeysInterval /**< */,
- uint16_t mouseKeysTimeToMax /**< */,
- uint16_t mouseKeysMaxSpeed /**< */,
- int16_t mouseKeysCurve /**< */,
- uint16_t accessXTimeout /**< */,
- uint32_t accessXTimeoutMask /**< */,
- uint32_t accessXTimeoutValues /**< */,
- uint16_t accessXTimeoutOptionsMask /**< */,
- uint16_t accessXTimeoutOptionsValues /**< */,
- const uint8_t *perKeyRepeat /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_set_controls
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint8_t affectInternalRealMods
- ** @param uint8_t internalRealMods
- ** @param uint8_t affectIgnoreLockRealMods
- ** @param uint8_t ignoreLockRealMods
- ** @param uint16_t affectInternalVirtualMods
- ** @param uint16_t internalVirtualMods
- ** @param uint16_t affectIgnoreLockVirtualMods
- ** @param uint16_t ignoreLockVirtualMods
- ** @param uint8_t mouseKeysDfltBtn
- ** @param uint8_t groupsWrap
- ** @param uint16_t accessXOptions
- ** @param uint32_t affectEnabledControls
- ** @param uint32_t enabledControls
- ** @param uint32_t changeControls
- ** @param uint16_t repeatDelay
- ** @param uint16_t repeatInterval
- ** @param uint16_t slowKeysDelay
- ** @param uint16_t debounceDelay
- ** @param uint16_t mouseKeysDelay
- ** @param uint16_t mouseKeysInterval
- ** @param uint16_t mouseKeysTimeToMax
- ** @param uint16_t mouseKeysMaxSpeed
- ** @param int16_t mouseKeysCurve
- ** @param uint16_t accessXTimeout
- ** @param uint32_t accessXTimeoutMask
- ** @param uint32_t accessXTimeoutValues
- ** @param uint16_t accessXTimeoutOptionsMask
- ** @param uint16_t accessXTimeoutOptionsValues
- ** @param const uint8_t *perKeyRepeat
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_set_controls (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint8_t affectInternalRealMods /**< */,
- uint8_t internalRealMods /**< */,
- uint8_t affectIgnoreLockRealMods /**< */,
- uint8_t ignoreLockRealMods /**< */,
- uint16_t affectInternalVirtualMods /**< */,
- uint16_t internalVirtualMods /**< */,
- uint16_t affectIgnoreLockVirtualMods /**< */,
- uint16_t ignoreLockVirtualMods /**< */,
- uint8_t mouseKeysDfltBtn /**< */,
- uint8_t groupsWrap /**< */,
- uint16_t accessXOptions /**< */,
- uint32_t affectEnabledControls /**< */,
- uint32_t enabledControls /**< */,
- uint32_t changeControls /**< */,
- uint16_t repeatDelay /**< */,
- uint16_t repeatInterval /**< */,
- uint16_t slowKeysDelay /**< */,
- uint16_t debounceDelay /**< */,
- uint16_t mouseKeysDelay /**< */,
- uint16_t mouseKeysInterval /**< */,
- uint16_t mouseKeysTimeToMax /**< */,
- uint16_t mouseKeysMaxSpeed /**< */,
- int16_t mouseKeysCurve /**< */,
- uint16_t accessXTimeout /**< */,
- uint32_t accessXTimeoutMask /**< */,
- uint32_t accessXTimeoutValues /**< */,
- uint16_t accessXTimeoutOptionsMask /**< */,
- uint16_t accessXTimeoutOptionsValues /**< */,
- const uint8_t *perKeyRepeat /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_map_map_types_rtrn_length
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_map_map_types_rtrn_length (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_type_iterator_t xcb_xkb_get_map_map_types_rtrn_iterator
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns xcb_xkb_key_type_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_key_type_iterator_t
-xcb_xkb_get_map_map_types_rtrn_iterator (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_map_map_syms_rtrn_length
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_map_map_syms_rtrn_length (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_sym_map_iterator_t xcb_xkb_get_map_map_syms_rtrn_iterator
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns xcb_xkb_key_sym_map_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_key_sym_map_iterator_t
-xcb_xkb_get_map_map_syms_rtrn_iterator (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** uint8_t * xcb_xkb_get_map_map_acts_rtrn_count
- **
- ** @param const xcb_xkb_get_map_map_t *S
- ** @returns uint8_t *
- **
- *****************************************************************************/
-
-uint8_t *
-xcb_xkb_get_map_map_acts_rtrn_count (const xcb_xkb_get_map_map_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_map_map_acts_rtrn_count_length
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_map_map_acts_rtrn_count_length (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_get_map_map_acts_rtrn_count_end
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_get_map_map_acts_rtrn_count_end (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** uint8_t * xcb_xkb_get_map_map_alignment_pad
- **
- ** @param const xcb_xkb_get_map_map_t *S
- ** @returns uint8_t *
- **
- *****************************************************************************/
-
-uint8_t *
-xcb_xkb_get_map_map_alignment_pad (const xcb_xkb_get_map_map_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_map_map_alignment_pad_length
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_map_map_alignment_pad_length (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_get_map_map_alignment_pad_end
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_get_map_map_alignment_pad_end (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_action_t * xcb_xkb_get_map_map_acts_rtrn_acts
- **
- ** @param const xcb_xkb_get_map_map_t *S
- ** @returns xcb_xkb_action_t *
- **
- *****************************************************************************/
-
-xcb_xkb_action_t *
-xcb_xkb_get_map_map_acts_rtrn_acts (const xcb_xkb_get_map_map_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_map_map_acts_rtrn_acts_length
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_map_map_acts_rtrn_acts_length (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_action_iterator_t xcb_xkb_get_map_map_acts_rtrn_acts_iterator
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns xcb_xkb_action_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_action_iterator_t
-xcb_xkb_get_map_map_acts_rtrn_acts_iterator (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_set_behavior_t * xcb_xkb_get_map_map_behaviors_rtrn
- **
- ** @param const xcb_xkb_get_map_map_t *S
- ** @returns xcb_xkb_set_behavior_t *
- **
- *****************************************************************************/
-
-xcb_xkb_set_behavior_t *
-xcb_xkb_get_map_map_behaviors_rtrn (const xcb_xkb_get_map_map_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_map_map_behaviors_rtrn_length
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_map_map_behaviors_rtrn_length (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_set_behavior_iterator_t xcb_xkb_get_map_map_behaviors_rtrn_iterator
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns xcb_xkb_set_behavior_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_set_behavior_iterator_t
-xcb_xkb_get_map_map_behaviors_rtrn_iterator (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** uint8_t * xcb_xkb_get_map_map_vmods_rtrn
- **
- ** @param const xcb_xkb_get_map_map_t *S
- ** @returns uint8_t *
- **
- *****************************************************************************/
-
-uint8_t *
-xcb_xkb_get_map_map_vmods_rtrn (const xcb_xkb_get_map_map_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_map_map_vmods_rtrn_length
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_map_map_vmods_rtrn_length (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_get_map_map_vmods_rtrn_end
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_get_map_map_vmods_rtrn_end (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** uint8_t * xcb_xkb_get_map_map_alignment_pad_2
- **
- ** @param const xcb_xkb_get_map_map_t *S
- ** @returns uint8_t *
- **
- *****************************************************************************/
-
-uint8_t *
-xcb_xkb_get_map_map_alignment_pad_2 (const xcb_xkb_get_map_map_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_map_map_alignment_pad_2_length
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_map_map_alignment_pad_2_length (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_get_map_map_alignment_pad_2_end
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_get_map_map_alignment_pad_2_end (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_set_explicit_t * xcb_xkb_get_map_map_explicit_rtrn
- **
- ** @param const xcb_xkb_get_map_map_t *S
- ** @returns xcb_xkb_set_explicit_t *
- **
- *****************************************************************************/
-
-xcb_xkb_set_explicit_t *
-xcb_xkb_get_map_map_explicit_rtrn (const xcb_xkb_get_map_map_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_map_map_explicit_rtrn_length
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_map_map_explicit_rtrn_length (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_set_explicit_iterator_t xcb_xkb_get_map_map_explicit_rtrn_iterator
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns xcb_xkb_set_explicit_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_set_explicit_iterator_t
-xcb_xkb_get_map_map_explicit_rtrn_iterator (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** uint16_t * xcb_xkb_get_map_map_alignment_pad_3
- **
- ** @param const xcb_xkb_get_map_map_t *S
- ** @returns uint16_t *
- **
- *****************************************************************************/
-
-uint16_t *
-xcb_xkb_get_map_map_alignment_pad_3 (const xcb_xkb_get_map_map_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_map_map_alignment_pad_3_length
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_map_map_alignment_pad_3_length (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_get_map_map_alignment_pad_3_end
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_get_map_map_alignment_pad_3_end (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_mod_map_t * xcb_xkb_get_map_map_modmap_rtrn
- **
- ** @param const xcb_xkb_get_map_map_t *S
- ** @returns xcb_xkb_key_mod_map_t *
- **
- *****************************************************************************/
-
-xcb_xkb_key_mod_map_t *
-xcb_xkb_get_map_map_modmap_rtrn (const xcb_xkb_get_map_map_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_map_map_modmap_rtrn_length
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_map_map_modmap_rtrn_length (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_mod_map_iterator_t xcb_xkb_get_map_map_modmap_rtrn_iterator
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns xcb_xkb_key_mod_map_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_key_mod_map_iterator_t
-xcb_xkb_get_map_map_modmap_rtrn_iterator (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** uint16_t * xcb_xkb_get_map_map_alignment_pad_4
- **
- ** @param const xcb_xkb_get_map_map_t *S
- ** @returns uint16_t *
- **
- *****************************************************************************/
-
-uint16_t *
-xcb_xkb_get_map_map_alignment_pad_4 (const xcb_xkb_get_map_map_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_map_map_alignment_pad_4_length
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_map_map_alignment_pad_4_length (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_get_map_map_alignment_pad_4_end
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_get_map_map_alignment_pad_4_end (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_v_mod_map_t * xcb_xkb_get_map_map_vmodmap_rtrn
- **
- ** @param const xcb_xkb_get_map_map_t *S
- ** @returns xcb_xkb_key_v_mod_map_t *
- **
- *****************************************************************************/
-
-xcb_xkb_key_v_mod_map_t *
-xcb_xkb_get_map_map_vmodmap_rtrn (const xcb_xkb_get_map_map_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_map_map_vmodmap_rtrn_length
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_map_map_vmodmap_rtrn_length (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_v_mod_map_iterator_t xcb_xkb_get_map_map_vmodmap_rtrn_iterator
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns xcb_xkb_key_v_mod_map_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_key_v_mod_map_iterator_t
-xcb_xkb_get_map_map_vmodmap_rtrn_iterator (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */);
-
-int
-xcb_xkb_get_map_map_serialize (void **_buffer /**< */,
- uint8_t nTypes /**< */,
- uint8_t nKeySyms /**< */,
- uint8_t nKeyActions /**< */,
- uint16_t totalActions /**< */,
- uint8_t totalKeyBehaviors /**< */,
- uint16_t virtualMods /**< */,
- uint8_t totalKeyExplicit /**< */,
- uint8_t totalModMapKeys /**< */,
- uint8_t totalVModMapKeys /**< */,
- uint16_t present /**< */,
- const xcb_xkb_get_map_map_t *_aux /**< */);
-
-int
-xcb_xkb_get_map_map_unpack (const void *_buffer /**< */,
- uint8_t nTypes /**< */,
- uint8_t nKeySyms /**< */,
- uint8_t nKeyActions /**< */,
- uint16_t totalActions /**< */,
- uint8_t totalKeyBehaviors /**< */,
- uint16_t virtualMods /**< */,
- uint8_t totalKeyExplicit /**< */,
- uint8_t totalModMapKeys /**< */,
- uint8_t totalVModMapKeys /**< */,
- uint16_t present /**< */,
- xcb_xkb_get_map_map_t *_aux /**< */);
-
-int
-xcb_xkb_get_map_map_sizeof (const void *_buffer /**< */,
- uint8_t nTypes /**< */,
- uint8_t nKeySyms /**< */,
- uint8_t nKeyActions /**< */,
- uint16_t totalActions /**< */,
- uint8_t totalKeyBehaviors /**< */,
- uint16_t virtualMods /**< */,
- uint8_t totalKeyExplicit /**< */,
- uint8_t totalModMapKeys /**< */,
- uint8_t totalVModMapKeys /**< */,
- uint16_t present /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_map_cookie_t xcb_xkb_get_map
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint16_t full
- ** @param uint16_t partial
- ** @param uint8_t firstType
- ** @param uint8_t nTypes
- ** @param xcb_keycode_t firstKeySym
- ** @param uint8_t nKeySyms
- ** @param xcb_keycode_t firstKeyAction
- ** @param uint8_t nKeyActions
- ** @param xcb_keycode_t firstKeyBehavior
- ** @param uint8_t nKeyBehaviors
- ** @param uint16_t virtualMods
- ** @param xcb_keycode_t firstKeyExplicit
- ** @param uint8_t nKeyExplicit
- ** @param xcb_keycode_t firstModMapKey
- ** @param uint8_t nModMapKeys
- ** @param xcb_keycode_t firstVModMapKey
- ** @param uint8_t nVModMapKeys
- ** @returns xcb_xkb_get_map_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_get_map_cookie_t
-xcb_xkb_get_map (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint16_t full /**< */,
- uint16_t partial /**< */,
- uint8_t firstType /**< */,
- uint8_t nTypes /**< */,
- xcb_keycode_t firstKeySym /**< */,
- uint8_t nKeySyms /**< */,
- xcb_keycode_t firstKeyAction /**< */,
- uint8_t nKeyActions /**< */,
- xcb_keycode_t firstKeyBehavior /**< */,
- uint8_t nKeyBehaviors /**< */,
- uint16_t virtualMods /**< */,
- xcb_keycode_t firstKeyExplicit /**< */,
- uint8_t nKeyExplicit /**< */,
- xcb_keycode_t firstModMapKey /**< */,
- uint8_t nModMapKeys /**< */,
- xcb_keycode_t firstVModMapKey /**< */,
- uint8_t nVModMapKeys /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_map_cookie_t xcb_xkb_get_map_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint16_t full
- ** @param uint16_t partial
- ** @param uint8_t firstType
- ** @param uint8_t nTypes
- ** @param xcb_keycode_t firstKeySym
- ** @param uint8_t nKeySyms
- ** @param xcb_keycode_t firstKeyAction
- ** @param uint8_t nKeyActions
- ** @param xcb_keycode_t firstKeyBehavior
- ** @param uint8_t nKeyBehaviors
- ** @param uint16_t virtualMods
- ** @param xcb_keycode_t firstKeyExplicit
- ** @param uint8_t nKeyExplicit
- ** @param xcb_keycode_t firstModMapKey
- ** @param uint8_t nModMapKeys
- ** @param xcb_keycode_t firstVModMapKey
- ** @param uint8_t nVModMapKeys
- ** @returns xcb_xkb_get_map_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_get_map_cookie_t
-xcb_xkb_get_map_unchecked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint16_t full /**< */,
- uint16_t partial /**< */,
- uint8_t firstType /**< */,
- uint8_t nTypes /**< */,
- xcb_keycode_t firstKeySym /**< */,
- uint8_t nKeySyms /**< */,
- xcb_keycode_t firstKeyAction /**< */,
- uint8_t nKeyActions /**< */,
- xcb_keycode_t firstKeyBehavior /**< */,
- uint8_t nKeyBehaviors /**< */,
- uint16_t virtualMods /**< */,
- xcb_keycode_t firstKeyExplicit /**< */,
- uint8_t nKeyExplicit /**< */,
- xcb_keycode_t firstModMapKey /**< */,
- uint8_t nModMapKeys /**< */,
- xcb_keycode_t firstVModMapKey /**< */,
- uint8_t nVModMapKeys /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_map_map_t * xcb_xkb_get_map_map
- **
- ** @param const xcb_xkb_get_map_reply_t *R
- ** @returns xcb_xkb_get_map_map_t *
- **
- *****************************************************************************/
-
-void *
-xcb_xkb_get_map_map (const xcb_xkb_get_map_reply_t *R /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_xkb_get_map_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_map_reply_t * xcb_xkb_get_map_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_get_map_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xkb_get_map_reply_t *
- **
- *****************************************************************************/
-
-xcb_xkb_get_map_reply_t *
-xcb_xkb_get_map_reply (xcb_connection_t *c /**< */,
- xcb_xkb_get_map_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_set_map_values_types_length
- **
- ** @param const xcb_xkb_set_map_values_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_set_map_values_types_length (const xcb_xkb_set_map_request_t *R /**< */,
- const xcb_xkb_set_map_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_set_key_type_iterator_t xcb_xkb_set_map_values_types_iterator
- **
- ** @param const xcb_xkb_set_map_values_t *R
- ** @returns xcb_xkb_set_key_type_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_set_key_type_iterator_t
-xcb_xkb_set_map_values_types_iterator (const xcb_xkb_set_map_request_t *R /**< */,
- const xcb_xkb_set_map_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_set_map_values_syms_length
- **
- ** @param const xcb_xkb_set_map_values_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_set_map_values_syms_length (const xcb_xkb_set_map_request_t *R /**< */,
- const xcb_xkb_set_map_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_sym_map_iterator_t xcb_xkb_set_map_values_syms_iterator
- **
- ** @param const xcb_xkb_set_map_values_t *R
- ** @returns xcb_xkb_key_sym_map_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_key_sym_map_iterator_t
-xcb_xkb_set_map_values_syms_iterator (const xcb_xkb_set_map_request_t *R /**< */,
- const xcb_xkb_set_map_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** uint8_t * xcb_xkb_set_map_values_actions_count
- **
- ** @param const xcb_xkb_set_map_values_t *S
- ** @returns uint8_t *
- **
- *****************************************************************************/
-
-uint8_t *
-xcb_xkb_set_map_values_actions_count (const xcb_xkb_set_map_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_set_map_values_actions_count_length
- **
- ** @param const xcb_xkb_set_map_values_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_set_map_values_actions_count_length (const xcb_xkb_set_map_request_t *R /**< */,
- const xcb_xkb_set_map_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_set_map_values_actions_count_end
- **
- ** @param const xcb_xkb_set_map_values_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_set_map_values_actions_count_end (const xcb_xkb_set_map_request_t *R /**< */,
- const xcb_xkb_set_map_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_action_t * xcb_xkb_set_map_values_actions
- **
- ** @param const xcb_xkb_set_map_values_t *S
- ** @returns xcb_xkb_action_t *
- **
- *****************************************************************************/
-
-xcb_xkb_action_t *
-xcb_xkb_set_map_values_actions (const xcb_xkb_set_map_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_set_map_values_actions_length
- **
- ** @param const xcb_xkb_set_map_values_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_set_map_values_actions_length (const xcb_xkb_set_map_request_t *R /**< */,
- const xcb_xkb_set_map_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_action_iterator_t xcb_xkb_set_map_values_actions_iterator
- **
- ** @param const xcb_xkb_set_map_values_t *R
- ** @returns xcb_xkb_action_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_action_iterator_t
-xcb_xkb_set_map_values_actions_iterator (const xcb_xkb_set_map_request_t *R /**< */,
- const xcb_xkb_set_map_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_set_behavior_t * xcb_xkb_set_map_values_behaviors
- **
- ** @param const xcb_xkb_set_map_values_t *S
- ** @returns xcb_xkb_set_behavior_t *
- **
- *****************************************************************************/
-
-xcb_xkb_set_behavior_t *
-xcb_xkb_set_map_values_behaviors (const xcb_xkb_set_map_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_set_map_values_behaviors_length
- **
- ** @param const xcb_xkb_set_map_values_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_set_map_values_behaviors_length (const xcb_xkb_set_map_request_t *R /**< */,
- const xcb_xkb_set_map_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_set_behavior_iterator_t xcb_xkb_set_map_values_behaviors_iterator
- **
- ** @param const xcb_xkb_set_map_values_t *R
- ** @returns xcb_xkb_set_behavior_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_set_behavior_iterator_t
-xcb_xkb_set_map_values_behaviors_iterator (const xcb_xkb_set_map_request_t *R /**< */,
- const xcb_xkb_set_map_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** uint8_t * xcb_xkb_set_map_values_vmods
- **
- ** @param const xcb_xkb_set_map_values_t *S
- ** @returns uint8_t *
- **
- *****************************************************************************/
-
-uint8_t *
-xcb_xkb_set_map_values_vmods (const xcb_xkb_set_map_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_set_map_values_vmods_length
- **
- ** @param const xcb_xkb_set_map_values_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_set_map_values_vmods_length (const xcb_xkb_set_map_request_t *R /**< */,
- const xcb_xkb_set_map_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_set_map_values_vmods_end
- **
- ** @param const xcb_xkb_set_map_values_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_set_map_values_vmods_end (const xcb_xkb_set_map_request_t *R /**< */,
- const xcb_xkb_set_map_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_set_explicit_t * xcb_xkb_set_map_values_explicit
- **
- ** @param const xcb_xkb_set_map_values_t *S
- ** @returns xcb_xkb_set_explicit_t *
- **
- *****************************************************************************/
-
-xcb_xkb_set_explicit_t *
-xcb_xkb_set_map_values_explicit (const xcb_xkb_set_map_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_set_map_values_explicit_length
- **
- ** @param const xcb_xkb_set_map_values_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_set_map_values_explicit_length (const xcb_xkb_set_map_request_t *R /**< */,
- const xcb_xkb_set_map_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_set_explicit_iterator_t xcb_xkb_set_map_values_explicit_iterator
- **
- ** @param const xcb_xkb_set_map_values_t *R
- ** @returns xcb_xkb_set_explicit_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_set_explicit_iterator_t
-xcb_xkb_set_map_values_explicit_iterator (const xcb_xkb_set_map_request_t *R /**< */,
- const xcb_xkb_set_map_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_mod_map_t * xcb_xkb_set_map_values_modmap
- **
- ** @param const xcb_xkb_set_map_values_t *S
- ** @returns xcb_xkb_key_mod_map_t *
- **
- *****************************************************************************/
-
-xcb_xkb_key_mod_map_t *
-xcb_xkb_set_map_values_modmap (const xcb_xkb_set_map_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_set_map_values_modmap_length
- **
- ** @param const xcb_xkb_set_map_values_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_set_map_values_modmap_length (const xcb_xkb_set_map_request_t *R /**< */,
- const xcb_xkb_set_map_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_mod_map_iterator_t xcb_xkb_set_map_values_modmap_iterator
- **
- ** @param const xcb_xkb_set_map_values_t *R
- ** @returns xcb_xkb_key_mod_map_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_key_mod_map_iterator_t
-xcb_xkb_set_map_values_modmap_iterator (const xcb_xkb_set_map_request_t *R /**< */,
- const xcb_xkb_set_map_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_v_mod_map_t * xcb_xkb_set_map_values_vmodmap
- **
- ** @param const xcb_xkb_set_map_values_t *S
- ** @returns xcb_xkb_key_v_mod_map_t *
- **
- *****************************************************************************/
-
-xcb_xkb_key_v_mod_map_t *
-xcb_xkb_set_map_values_vmodmap (const xcb_xkb_set_map_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_set_map_values_vmodmap_length
- **
- ** @param const xcb_xkb_set_map_values_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_set_map_values_vmodmap_length (const xcb_xkb_set_map_request_t *R /**< */,
- const xcb_xkb_set_map_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_v_mod_map_iterator_t xcb_xkb_set_map_values_vmodmap_iterator
- **
- ** @param const xcb_xkb_set_map_values_t *R
- ** @returns xcb_xkb_key_v_mod_map_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_key_v_mod_map_iterator_t
-xcb_xkb_set_map_values_vmodmap_iterator (const xcb_xkb_set_map_request_t *R /**< */,
- const xcb_xkb_set_map_values_t *S /**< */);
-
-int
-xcb_xkb_set_map_values_serialize (void **_buffer /**< */,
- uint8_t nTypes /**< */,
- uint8_t nKeySyms /**< */,
- uint8_t nKeyActions /**< */,
- uint16_t totalActions /**< */,
- uint8_t totalKeyBehaviors /**< */,
- uint16_t virtualMods /**< */,
- uint8_t totalKeyExplicit /**< */,
- uint8_t totalModMapKeys /**< */,
- uint8_t totalVModMapKeys /**< */,
- uint16_t present /**< */,
- const xcb_xkb_set_map_values_t *_aux /**< */);
-
-int
-xcb_xkb_set_map_values_unpack (const void *_buffer /**< */,
- uint8_t nTypes /**< */,
- uint8_t nKeySyms /**< */,
- uint8_t nKeyActions /**< */,
- uint16_t totalActions /**< */,
- uint8_t totalKeyBehaviors /**< */,
- uint16_t virtualMods /**< */,
- uint8_t totalKeyExplicit /**< */,
- uint8_t totalModMapKeys /**< */,
- uint8_t totalVModMapKeys /**< */,
- uint16_t present /**< */,
- xcb_xkb_set_map_values_t *_aux /**< */);
-
-int
-xcb_xkb_set_map_values_sizeof (const void *_buffer /**< */,
- uint8_t nTypes /**< */,
- uint8_t nKeySyms /**< */,
- uint8_t nKeyActions /**< */,
- uint16_t totalActions /**< */,
- uint8_t totalKeyBehaviors /**< */,
- uint16_t virtualMods /**< */,
- uint8_t totalKeyExplicit /**< */,
- uint8_t totalModMapKeys /**< */,
- uint8_t totalVModMapKeys /**< */,
- uint16_t present /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_set_map_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint16_t present
- ** @param uint16_t flags
- ** @param xcb_keycode_t minKeyCode
- ** @param xcb_keycode_t maxKeyCode
- ** @param uint8_t firstType
- ** @param uint8_t nTypes
- ** @param xcb_keycode_t firstKeySym
- ** @param uint8_t nKeySyms
- ** @param uint16_t totalSyms
- ** @param xcb_keycode_t firstKeyAction
- ** @param uint8_t nKeyActions
- ** @param uint16_t totalActions
- ** @param xcb_keycode_t firstKeyBehavior
- ** @param uint8_t nKeyBehaviors
- ** @param uint8_t totalKeyBehaviors
- ** @param xcb_keycode_t firstKeyExplicit
- ** @param uint8_t nKeyExplicit
- ** @param uint8_t totalKeyExplicit
- ** @param xcb_keycode_t firstModMapKey
- ** @param uint8_t nModMapKeys
- ** @param uint8_t totalModMapKeys
- ** @param xcb_keycode_t firstVModMapKey
- ** @param uint8_t nVModMapKeys
- ** @param uint8_t totalVModMapKeys
- ** @param uint16_t virtualMods
- ** @param const void *values
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_set_map_checked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint16_t present /**< */,
- uint16_t flags /**< */,
- xcb_keycode_t minKeyCode /**< */,
- xcb_keycode_t maxKeyCode /**< */,
- uint8_t firstType /**< */,
- uint8_t nTypes /**< */,
- xcb_keycode_t firstKeySym /**< */,
- uint8_t nKeySyms /**< */,
- uint16_t totalSyms /**< */,
- xcb_keycode_t firstKeyAction /**< */,
- uint8_t nKeyActions /**< */,
- uint16_t totalActions /**< */,
- xcb_keycode_t firstKeyBehavior /**< */,
- uint8_t nKeyBehaviors /**< */,
- uint8_t totalKeyBehaviors /**< */,
- xcb_keycode_t firstKeyExplicit /**< */,
- uint8_t nKeyExplicit /**< */,
- uint8_t totalKeyExplicit /**< */,
- xcb_keycode_t firstModMapKey /**< */,
- uint8_t nModMapKeys /**< */,
- uint8_t totalModMapKeys /**< */,
- xcb_keycode_t firstVModMapKey /**< */,
- uint8_t nVModMapKeys /**< */,
- uint8_t totalVModMapKeys /**< */,
- uint16_t virtualMods /**< */,
- const void *values /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_set_map
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint16_t present
- ** @param uint16_t flags
- ** @param xcb_keycode_t minKeyCode
- ** @param xcb_keycode_t maxKeyCode
- ** @param uint8_t firstType
- ** @param uint8_t nTypes
- ** @param xcb_keycode_t firstKeySym
- ** @param uint8_t nKeySyms
- ** @param uint16_t totalSyms
- ** @param xcb_keycode_t firstKeyAction
- ** @param uint8_t nKeyActions
- ** @param uint16_t totalActions
- ** @param xcb_keycode_t firstKeyBehavior
- ** @param uint8_t nKeyBehaviors
- ** @param uint8_t totalKeyBehaviors
- ** @param xcb_keycode_t firstKeyExplicit
- ** @param uint8_t nKeyExplicit
- ** @param uint8_t totalKeyExplicit
- ** @param xcb_keycode_t firstModMapKey
- ** @param uint8_t nModMapKeys
- ** @param uint8_t totalModMapKeys
- ** @param xcb_keycode_t firstVModMapKey
- ** @param uint8_t nVModMapKeys
- ** @param uint8_t totalVModMapKeys
- ** @param uint16_t virtualMods
- ** @param const void *values
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_set_map (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint16_t present /**< */,
- uint16_t flags /**< */,
- xcb_keycode_t minKeyCode /**< */,
- xcb_keycode_t maxKeyCode /**< */,
- uint8_t firstType /**< */,
- uint8_t nTypes /**< */,
- xcb_keycode_t firstKeySym /**< */,
- uint8_t nKeySyms /**< */,
- uint16_t totalSyms /**< */,
- xcb_keycode_t firstKeyAction /**< */,
- uint8_t nKeyActions /**< */,
- uint16_t totalActions /**< */,
- xcb_keycode_t firstKeyBehavior /**< */,
- uint8_t nKeyBehaviors /**< */,
- uint8_t totalKeyBehaviors /**< */,
- xcb_keycode_t firstKeyExplicit /**< */,
- uint8_t nKeyExplicit /**< */,
- uint8_t totalKeyExplicit /**< */,
- xcb_keycode_t firstModMapKey /**< */,
- uint8_t nModMapKeys /**< */,
- uint8_t totalModMapKeys /**< */,
- xcb_keycode_t firstVModMapKey /**< */,
- uint8_t nVModMapKeys /**< */,
- uint8_t totalVModMapKeys /**< */,
- uint16_t virtualMods /**< */,
- const void *values /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_set_map_aux_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint16_t present
- ** @param uint16_t flags
- ** @param xcb_keycode_t minKeyCode
- ** @param xcb_keycode_t maxKeyCode
- ** @param uint8_t firstType
- ** @param uint8_t nTypes
- ** @param xcb_keycode_t firstKeySym
- ** @param uint8_t nKeySyms
- ** @param uint16_t totalSyms
- ** @param xcb_keycode_t firstKeyAction
- ** @param uint8_t nKeyActions
- ** @param uint16_t totalActions
- ** @param xcb_keycode_t firstKeyBehavior
- ** @param uint8_t nKeyBehaviors
- ** @param uint8_t totalKeyBehaviors
- ** @param xcb_keycode_t firstKeyExplicit
- ** @param uint8_t nKeyExplicit
- ** @param uint8_t totalKeyExplicit
- ** @param xcb_keycode_t firstModMapKey
- ** @param uint8_t nModMapKeys
- ** @param uint8_t totalModMapKeys
- ** @param xcb_keycode_t firstVModMapKey
- ** @param uint8_t nVModMapKeys
- ** @param uint8_t totalVModMapKeys
- ** @param uint16_t virtualMods
- ** @param const xcb_xkb_set_map_values_t *values
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_set_map_aux_checked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint16_t present /**< */,
- uint16_t flags /**< */,
- xcb_keycode_t minKeyCode /**< */,
- xcb_keycode_t maxKeyCode /**< */,
- uint8_t firstType /**< */,
- uint8_t nTypes /**< */,
- xcb_keycode_t firstKeySym /**< */,
- uint8_t nKeySyms /**< */,
- uint16_t totalSyms /**< */,
- xcb_keycode_t firstKeyAction /**< */,
- uint8_t nKeyActions /**< */,
- uint16_t totalActions /**< */,
- xcb_keycode_t firstKeyBehavior /**< */,
- uint8_t nKeyBehaviors /**< */,
- uint8_t totalKeyBehaviors /**< */,
- xcb_keycode_t firstKeyExplicit /**< */,
- uint8_t nKeyExplicit /**< */,
- uint8_t totalKeyExplicit /**< */,
- xcb_keycode_t firstModMapKey /**< */,
- uint8_t nModMapKeys /**< */,
- uint8_t totalModMapKeys /**< */,
- xcb_keycode_t firstVModMapKey /**< */,
- uint8_t nVModMapKeys /**< */,
- uint8_t totalVModMapKeys /**< */,
- uint16_t virtualMods /**< */,
- const xcb_xkb_set_map_values_t *values /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_set_map_aux
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint16_t present
- ** @param uint16_t flags
- ** @param xcb_keycode_t minKeyCode
- ** @param xcb_keycode_t maxKeyCode
- ** @param uint8_t firstType
- ** @param uint8_t nTypes
- ** @param xcb_keycode_t firstKeySym
- ** @param uint8_t nKeySyms
- ** @param uint16_t totalSyms
- ** @param xcb_keycode_t firstKeyAction
- ** @param uint8_t nKeyActions
- ** @param uint16_t totalActions
- ** @param xcb_keycode_t firstKeyBehavior
- ** @param uint8_t nKeyBehaviors
- ** @param uint8_t totalKeyBehaviors
- ** @param xcb_keycode_t firstKeyExplicit
- ** @param uint8_t nKeyExplicit
- ** @param uint8_t totalKeyExplicit
- ** @param xcb_keycode_t firstModMapKey
- ** @param uint8_t nModMapKeys
- ** @param uint8_t totalModMapKeys
- ** @param xcb_keycode_t firstVModMapKey
- ** @param uint8_t nVModMapKeys
- ** @param uint8_t totalVModMapKeys
- ** @param uint16_t virtualMods
- ** @param const xcb_xkb_set_map_values_t *values
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_set_map_aux (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint16_t present /**< */,
- uint16_t flags /**< */,
- xcb_keycode_t minKeyCode /**< */,
- xcb_keycode_t maxKeyCode /**< */,
- uint8_t firstType /**< */,
- uint8_t nTypes /**< */,
- xcb_keycode_t firstKeySym /**< */,
- uint8_t nKeySyms /**< */,
- uint16_t totalSyms /**< */,
- xcb_keycode_t firstKeyAction /**< */,
- uint8_t nKeyActions /**< */,
- uint16_t totalActions /**< */,
- xcb_keycode_t firstKeyBehavior /**< */,
- uint8_t nKeyBehaviors /**< */,
- uint8_t totalKeyBehaviors /**< */,
- xcb_keycode_t firstKeyExplicit /**< */,
- uint8_t nKeyExplicit /**< */,
- uint8_t totalKeyExplicit /**< */,
- xcb_keycode_t firstModMapKey /**< */,
- uint8_t nModMapKeys /**< */,
- uint8_t totalModMapKeys /**< */,
- xcb_keycode_t firstVModMapKey /**< */,
- uint8_t nVModMapKeys /**< */,
- uint8_t totalVModMapKeys /**< */,
- uint16_t virtualMods /**< */,
- const xcb_xkb_set_map_values_t *values /**< */);
-
-int
-xcb_xkb_get_compat_map_sizeof (const void *_buffer /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_compat_map_cookie_t xcb_xkb_get_compat_map
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint8_t groups
- ** @param uint8_t getAllSI
- ** @param uint16_t firstSI
- ** @param uint16_t nSI
- ** @returns xcb_xkb_get_compat_map_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_get_compat_map_cookie_t
-xcb_xkb_get_compat_map (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint8_t groups /**< */,
- uint8_t getAllSI /**< */,
- uint16_t firstSI /**< */,
- uint16_t nSI /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_compat_map_cookie_t xcb_xkb_get_compat_map_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint8_t groups
- ** @param uint8_t getAllSI
- ** @param uint16_t firstSI
- ** @param uint16_t nSI
- ** @returns xcb_xkb_get_compat_map_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_get_compat_map_cookie_t
-xcb_xkb_get_compat_map_unchecked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint8_t groups /**< */,
- uint8_t getAllSI /**< */,
- uint16_t firstSI /**< */,
- uint16_t nSI /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_sym_interpret_t * xcb_xkb_get_compat_map_si_rtrn
- **
- ** @param const xcb_xkb_get_compat_map_reply_t *R
- ** @returns xcb_xkb_sym_interpret_t *
- **
- *****************************************************************************/
-
-xcb_xkb_sym_interpret_t *
-xcb_xkb_get_compat_map_si_rtrn (const xcb_xkb_get_compat_map_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_compat_map_si_rtrn_length
- **
- ** @param const xcb_xkb_get_compat_map_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_compat_map_si_rtrn_length (const xcb_xkb_get_compat_map_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_sym_interpret_iterator_t xcb_xkb_get_compat_map_si_rtrn_iterator
- **
- ** @param const xcb_xkb_get_compat_map_reply_t *R
- ** @returns xcb_xkb_sym_interpret_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_sym_interpret_iterator_t
-xcb_xkb_get_compat_map_si_rtrn_iterator (const xcb_xkb_get_compat_map_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_mod_def_t * xcb_xkb_get_compat_map_group_rtrn
- **
- ** @param const xcb_xkb_get_compat_map_reply_t *R
- ** @returns xcb_xkb_mod_def_t *
- **
- *****************************************************************************/
-
-xcb_xkb_mod_def_t *
-xcb_xkb_get_compat_map_group_rtrn (const xcb_xkb_get_compat_map_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_compat_map_group_rtrn_length
- **
- ** @param const xcb_xkb_get_compat_map_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_compat_map_group_rtrn_length (const xcb_xkb_get_compat_map_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_mod_def_iterator_t xcb_xkb_get_compat_map_group_rtrn_iterator
- **
- ** @param const xcb_xkb_get_compat_map_reply_t *R
- ** @returns xcb_xkb_mod_def_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_mod_def_iterator_t
-xcb_xkb_get_compat_map_group_rtrn_iterator (const xcb_xkb_get_compat_map_reply_t *R /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_xkb_get_compat_map_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_compat_map_reply_t * xcb_xkb_get_compat_map_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_get_compat_map_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xkb_get_compat_map_reply_t *
- **
- *****************************************************************************/
-
-xcb_xkb_get_compat_map_reply_t *
-xcb_xkb_get_compat_map_reply (xcb_connection_t *c /**< */,
- xcb_xkb_get_compat_map_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-int
-xcb_xkb_set_compat_map_sizeof (const void *_buffer /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_set_compat_map_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint8_t recomputeActions
- ** @param uint8_t truncateSI
- ** @param uint8_t groups
- ** @param uint16_t firstSI
- ** @param uint16_t nSI
- ** @param const xcb_xkb_sym_interpret_t *si
- ** @param const xcb_xkb_mod_def_t *groupMaps
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_set_compat_map_checked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint8_t recomputeActions /**< */,
- uint8_t truncateSI /**< */,
- uint8_t groups /**< */,
- uint16_t firstSI /**< */,
- uint16_t nSI /**< */,
- const xcb_xkb_sym_interpret_t *si /**< */,
- const xcb_xkb_mod_def_t *groupMaps /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_set_compat_map
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint8_t recomputeActions
- ** @param uint8_t truncateSI
- ** @param uint8_t groups
- ** @param uint16_t firstSI
- ** @param uint16_t nSI
- ** @param const xcb_xkb_sym_interpret_t *si
- ** @param const xcb_xkb_mod_def_t *groupMaps
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_set_compat_map (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint8_t recomputeActions /**< */,
- uint8_t truncateSI /**< */,
- uint8_t groups /**< */,
- uint16_t firstSI /**< */,
- uint16_t nSI /**< */,
- const xcb_xkb_sym_interpret_t *si /**< */,
- const xcb_xkb_mod_def_t *groupMaps /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_indicator_state_cookie_t xcb_xkb_get_indicator_state
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @returns xcb_xkb_get_indicator_state_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_get_indicator_state_cookie_t
-xcb_xkb_get_indicator_state (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_indicator_state_cookie_t xcb_xkb_get_indicator_state_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @returns xcb_xkb_get_indicator_state_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_get_indicator_state_cookie_t
-xcb_xkb_get_indicator_state_unchecked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_xkb_get_indicator_state_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_indicator_state_reply_t * xcb_xkb_get_indicator_state_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_get_indicator_state_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xkb_get_indicator_state_reply_t *
- **
- *****************************************************************************/
-
-xcb_xkb_get_indicator_state_reply_t *
-xcb_xkb_get_indicator_state_reply (xcb_connection_t *c /**< */,
- xcb_xkb_get_indicator_state_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-int
-xcb_xkb_get_indicator_map_sizeof (const void *_buffer /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_indicator_map_cookie_t xcb_xkb_get_indicator_map
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint32_t which
- ** @returns xcb_xkb_get_indicator_map_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_get_indicator_map_cookie_t
-xcb_xkb_get_indicator_map (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint32_t which /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_indicator_map_cookie_t xcb_xkb_get_indicator_map_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint32_t which
- ** @returns xcb_xkb_get_indicator_map_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_get_indicator_map_cookie_t
-xcb_xkb_get_indicator_map_unchecked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint32_t which /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_indicator_map_t * xcb_xkb_get_indicator_map_maps
- **
- ** @param const xcb_xkb_get_indicator_map_reply_t *R
- ** @returns xcb_xkb_indicator_map_t *
- **
- *****************************************************************************/
-
-xcb_xkb_indicator_map_t *
-xcb_xkb_get_indicator_map_maps (const xcb_xkb_get_indicator_map_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_indicator_map_maps_length
- **
- ** @param const xcb_xkb_get_indicator_map_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_indicator_map_maps_length (const xcb_xkb_get_indicator_map_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_indicator_map_iterator_t xcb_xkb_get_indicator_map_maps_iterator
- **
- ** @param const xcb_xkb_get_indicator_map_reply_t *R
- ** @returns xcb_xkb_indicator_map_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_indicator_map_iterator_t
-xcb_xkb_get_indicator_map_maps_iterator (const xcb_xkb_get_indicator_map_reply_t *R /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_xkb_get_indicator_map_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_indicator_map_reply_t * xcb_xkb_get_indicator_map_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_get_indicator_map_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xkb_get_indicator_map_reply_t *
- **
- *****************************************************************************/
-
-xcb_xkb_get_indicator_map_reply_t *
-xcb_xkb_get_indicator_map_reply (xcb_connection_t *c /**< */,
- xcb_xkb_get_indicator_map_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-int
-xcb_xkb_set_indicator_map_sizeof (const void *_buffer /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_set_indicator_map_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint32_t which
- ** @param const xcb_xkb_indicator_map_t *maps
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_set_indicator_map_checked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint32_t which /**< */,
- const xcb_xkb_indicator_map_t *maps /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_set_indicator_map
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint32_t which
- ** @param const xcb_xkb_indicator_map_t *maps
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_set_indicator_map (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint32_t which /**< */,
- const xcb_xkb_indicator_map_t *maps /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_named_indicator_cookie_t xcb_xkb_get_named_indicator
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param xcb_xkb_led_class_spec_t ledClass
- ** @param xcb_xkb_id_spec_t ledID
- ** @param xcb_atom_t indicator
- ** @returns xcb_xkb_get_named_indicator_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_get_named_indicator_cookie_t
-xcb_xkb_get_named_indicator (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- xcb_xkb_led_class_spec_t ledClass /**< */,
- xcb_xkb_id_spec_t ledID /**< */,
- xcb_atom_t indicator /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_named_indicator_cookie_t xcb_xkb_get_named_indicator_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param xcb_xkb_led_class_spec_t ledClass
- ** @param xcb_xkb_id_spec_t ledID
- ** @param xcb_atom_t indicator
- ** @returns xcb_xkb_get_named_indicator_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_get_named_indicator_cookie_t
-xcb_xkb_get_named_indicator_unchecked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- xcb_xkb_led_class_spec_t ledClass /**< */,
- xcb_xkb_id_spec_t ledID /**< */,
- xcb_atom_t indicator /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_xkb_get_named_indicator_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_named_indicator_reply_t * xcb_xkb_get_named_indicator_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_get_named_indicator_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xkb_get_named_indicator_reply_t *
- **
- *****************************************************************************/
-
-xcb_xkb_get_named_indicator_reply_t *
-xcb_xkb_get_named_indicator_reply (xcb_connection_t *c /**< */,
- xcb_xkb_get_named_indicator_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_set_named_indicator_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param xcb_xkb_led_class_spec_t ledClass
- ** @param xcb_xkb_id_spec_t ledID
- ** @param xcb_atom_t indicator
- ** @param uint8_t setState
- ** @param uint8_t on
- ** @param uint8_t setMap
- ** @param uint8_t createMap
- ** @param uint8_t map_flags
- ** @param uint8_t map_whichGroups
- ** @param uint8_t map_groups
- ** @param uint8_t map_whichMods
- ** @param uint8_t map_realMods
- ** @param uint16_t map_vmods
- ** @param uint32_t map_ctrls
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_set_named_indicator_checked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- xcb_xkb_led_class_spec_t ledClass /**< */,
- xcb_xkb_id_spec_t ledID /**< */,
- xcb_atom_t indicator /**< */,
- uint8_t setState /**< */,
- uint8_t on /**< */,
- uint8_t setMap /**< */,
- uint8_t createMap /**< */,
- uint8_t map_flags /**< */,
- uint8_t map_whichGroups /**< */,
- uint8_t map_groups /**< */,
- uint8_t map_whichMods /**< */,
- uint8_t map_realMods /**< */,
- uint16_t map_vmods /**< */,
- uint32_t map_ctrls /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_set_named_indicator
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param xcb_xkb_led_class_spec_t ledClass
- ** @param xcb_xkb_id_spec_t ledID
- ** @param xcb_atom_t indicator
- ** @param uint8_t setState
- ** @param uint8_t on
- ** @param uint8_t setMap
- ** @param uint8_t createMap
- ** @param uint8_t map_flags
- ** @param uint8_t map_whichGroups
- ** @param uint8_t map_groups
- ** @param uint8_t map_whichMods
- ** @param uint8_t map_realMods
- ** @param uint16_t map_vmods
- ** @param uint32_t map_ctrls
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_set_named_indicator (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- xcb_xkb_led_class_spec_t ledClass /**< */,
- xcb_xkb_id_spec_t ledID /**< */,
- xcb_atom_t indicator /**< */,
- uint8_t setState /**< */,
- uint8_t on /**< */,
- uint8_t setMap /**< */,
- uint8_t createMap /**< */,
- uint8_t map_flags /**< */,
- uint8_t map_whichGroups /**< */,
- uint8_t map_groups /**< */,
- uint8_t map_whichMods /**< */,
- uint8_t map_realMods /**< */,
- uint16_t map_vmods /**< */,
- uint32_t map_ctrls /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_atom_t * xcb_xkb_get_names_value_list_type_names
- **
- ** @param const xcb_xkb_get_names_value_list_t *S
- ** @returns xcb_atom_t *
- **
- *****************************************************************************/
-
-xcb_atom_t *
-xcb_xkb_get_names_value_list_type_names (const xcb_xkb_get_names_value_list_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_names_value_list_type_names_length
- **
- ** @param const xcb_xkb_get_names_value_list_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_names_value_list_type_names_length (const xcb_xkb_get_names_reply_t *R /**< */,
- const xcb_xkb_get_names_value_list_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_get_names_value_list_type_names_end
- **
- ** @param const xcb_xkb_get_names_value_list_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_get_names_value_list_type_names_end (const xcb_xkb_get_names_reply_t *R /**< */,
- const xcb_xkb_get_names_value_list_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** uint8_t * xcb_xkb_get_names_value_list_n_levels_per_type
- **
- ** @param const xcb_xkb_get_names_value_list_t *S
- ** @returns uint8_t *
- **
- *****************************************************************************/
-
-uint8_t *
-xcb_xkb_get_names_value_list_n_levels_per_type (const xcb_xkb_get_names_value_list_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_names_value_list_n_levels_per_type_length
- **
- ** @param const xcb_xkb_get_names_value_list_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_names_value_list_n_levels_per_type_length (const xcb_xkb_get_names_reply_t *R /**< */,
- const xcb_xkb_get_names_value_list_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_get_names_value_list_n_levels_per_type_end
- **
- ** @param const xcb_xkb_get_names_value_list_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_get_names_value_list_n_levels_per_type_end (const xcb_xkb_get_names_reply_t *R /**< */,
- const xcb_xkb_get_names_value_list_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** uint8_t * xcb_xkb_get_names_value_list_alignment_pad
- **
- ** @param const xcb_xkb_get_names_value_list_t *S
- ** @returns uint8_t *
- **
- *****************************************************************************/
-
-uint8_t *
-xcb_xkb_get_names_value_list_alignment_pad (const xcb_xkb_get_names_value_list_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_names_value_list_alignment_pad_length
- **
- ** @param const xcb_xkb_get_names_value_list_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_names_value_list_alignment_pad_length (const xcb_xkb_get_names_reply_t *R /**< */,
- const xcb_xkb_get_names_value_list_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_get_names_value_list_alignment_pad_end
- **
- ** @param const xcb_xkb_get_names_value_list_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_get_names_value_list_alignment_pad_end (const xcb_xkb_get_names_reply_t *R /**< */,
- const xcb_xkb_get_names_value_list_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_atom_t * xcb_xkb_get_names_value_list_kt_level_names
- **
- ** @param const xcb_xkb_get_names_value_list_t *S
- ** @returns xcb_atom_t *
- **
- *****************************************************************************/
-
-xcb_atom_t *
-xcb_xkb_get_names_value_list_kt_level_names (const xcb_xkb_get_names_value_list_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_names_value_list_kt_level_names_length
- **
- ** @param const xcb_xkb_get_names_value_list_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_names_value_list_kt_level_names_length (const xcb_xkb_get_names_reply_t *R /**< */,
- const xcb_xkb_get_names_value_list_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_get_names_value_list_kt_level_names_end
- **
- ** @param const xcb_xkb_get_names_value_list_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_get_names_value_list_kt_level_names_end (const xcb_xkb_get_names_reply_t *R /**< */,
- const xcb_xkb_get_names_value_list_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_atom_t * xcb_xkb_get_names_value_list_indicator_names
- **
- ** @param const xcb_xkb_get_names_value_list_t *S
- ** @returns xcb_atom_t *
- **
- *****************************************************************************/
-
-xcb_atom_t *
-xcb_xkb_get_names_value_list_indicator_names (const xcb_xkb_get_names_value_list_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_names_value_list_indicator_names_length
- **
- ** @param const xcb_xkb_get_names_value_list_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_names_value_list_indicator_names_length (const xcb_xkb_get_names_reply_t *R /**< */,
- const xcb_xkb_get_names_value_list_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_get_names_value_list_indicator_names_end
- **
- ** @param const xcb_xkb_get_names_value_list_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_get_names_value_list_indicator_names_end (const xcb_xkb_get_names_reply_t *R /**< */,
- const xcb_xkb_get_names_value_list_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_atom_t * xcb_xkb_get_names_value_list_virtual_mod_names
- **
- ** @param const xcb_xkb_get_names_value_list_t *S
- ** @returns xcb_atom_t *
- **
- *****************************************************************************/
-
-xcb_atom_t *
-xcb_xkb_get_names_value_list_virtual_mod_names (const xcb_xkb_get_names_value_list_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_names_value_list_virtual_mod_names_length
- **
- ** @param const xcb_xkb_get_names_value_list_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_names_value_list_virtual_mod_names_length (const xcb_xkb_get_names_reply_t *R /**< */,
- const xcb_xkb_get_names_value_list_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_get_names_value_list_virtual_mod_names_end
- **
- ** @param const xcb_xkb_get_names_value_list_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_get_names_value_list_virtual_mod_names_end (const xcb_xkb_get_names_reply_t *R /**< */,
- const xcb_xkb_get_names_value_list_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_atom_t * xcb_xkb_get_names_value_list_groups
- **
- ** @param const xcb_xkb_get_names_value_list_t *S
- ** @returns xcb_atom_t *
- **
- *****************************************************************************/
-
-xcb_atom_t *
-xcb_xkb_get_names_value_list_groups (const xcb_xkb_get_names_value_list_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_names_value_list_groups_length
- **
- ** @param const xcb_xkb_get_names_value_list_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_names_value_list_groups_length (const xcb_xkb_get_names_reply_t *R /**< */,
- const xcb_xkb_get_names_value_list_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_get_names_value_list_groups_end
- **
- ** @param const xcb_xkb_get_names_value_list_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_get_names_value_list_groups_end (const xcb_xkb_get_names_reply_t *R /**< */,
- const xcb_xkb_get_names_value_list_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_name_t * xcb_xkb_get_names_value_list_key_names
- **
- ** @param const xcb_xkb_get_names_value_list_t *S
- ** @returns xcb_xkb_key_name_t *
- **
- *****************************************************************************/
-
-xcb_xkb_key_name_t *
-xcb_xkb_get_names_value_list_key_names (const xcb_xkb_get_names_value_list_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_names_value_list_key_names_length
- **
- ** @param const xcb_xkb_get_names_value_list_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_names_value_list_key_names_length (const xcb_xkb_get_names_reply_t *R /**< */,
- const xcb_xkb_get_names_value_list_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_name_iterator_t xcb_xkb_get_names_value_list_key_names_iterator
- **
- ** @param const xcb_xkb_get_names_value_list_t *R
- ** @returns xcb_xkb_key_name_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_key_name_iterator_t
-xcb_xkb_get_names_value_list_key_names_iterator (const xcb_xkb_get_names_reply_t *R /**< */,
- const xcb_xkb_get_names_value_list_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_alias_t * xcb_xkb_get_names_value_list_key_aliases
- **
- ** @param const xcb_xkb_get_names_value_list_t *S
- ** @returns xcb_xkb_key_alias_t *
- **
- *****************************************************************************/
-
-xcb_xkb_key_alias_t *
-xcb_xkb_get_names_value_list_key_aliases (const xcb_xkb_get_names_value_list_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_names_value_list_key_aliases_length
- **
- ** @param const xcb_xkb_get_names_value_list_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_names_value_list_key_aliases_length (const xcb_xkb_get_names_reply_t *R /**< */,
- const xcb_xkb_get_names_value_list_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_alias_iterator_t xcb_xkb_get_names_value_list_key_aliases_iterator
- **
- ** @param const xcb_xkb_get_names_value_list_t *R
- ** @returns xcb_xkb_key_alias_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_key_alias_iterator_t
-xcb_xkb_get_names_value_list_key_aliases_iterator (const xcb_xkb_get_names_reply_t *R /**< */,
- const xcb_xkb_get_names_value_list_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_atom_t * xcb_xkb_get_names_value_list_radio_group_names
- **
- ** @param const xcb_xkb_get_names_value_list_t *S
- ** @returns xcb_atom_t *
- **
- *****************************************************************************/
-
-xcb_atom_t *
-xcb_xkb_get_names_value_list_radio_group_names (const xcb_xkb_get_names_value_list_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_names_value_list_radio_group_names_length
- **
- ** @param const xcb_xkb_get_names_value_list_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_names_value_list_radio_group_names_length (const xcb_xkb_get_names_reply_t *R /**< */,
- const xcb_xkb_get_names_value_list_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_get_names_value_list_radio_group_names_end
- **
- ** @param const xcb_xkb_get_names_value_list_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_get_names_value_list_radio_group_names_end (const xcb_xkb_get_names_reply_t *R /**< */,
- const xcb_xkb_get_names_value_list_t *S /**< */);
-
-int
-xcb_xkb_get_names_value_list_serialize (void **_buffer /**< */,
- uint8_t nTypes /**< */,
- uint32_t indicators /**< */,
- uint16_t virtualMods /**< */,
- uint8_t groupNames /**< */,
- uint8_t nKeys /**< */,
- uint8_t nKeyAliases /**< */,
- uint8_t nRadioGroups /**< */,
- uint32_t which /**< */,
- const xcb_xkb_get_names_value_list_t *_aux /**< */);
-
-int
-xcb_xkb_get_names_value_list_unpack (const void *_buffer /**< */,
- uint8_t nTypes /**< */,
- uint32_t indicators /**< */,
- uint16_t virtualMods /**< */,
- uint8_t groupNames /**< */,
- uint8_t nKeys /**< */,
- uint8_t nKeyAliases /**< */,
- uint8_t nRadioGroups /**< */,
- uint32_t which /**< */,
- xcb_xkb_get_names_value_list_t *_aux /**< */);
-
-int
-xcb_xkb_get_names_value_list_sizeof (const void *_buffer /**< */,
- uint8_t nTypes /**< */,
- uint32_t indicators /**< */,
- uint16_t virtualMods /**< */,
- uint8_t groupNames /**< */,
- uint8_t nKeys /**< */,
- uint8_t nKeyAliases /**< */,
- uint8_t nRadioGroups /**< */,
- uint32_t which /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_names_cookie_t xcb_xkb_get_names
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint32_t which
- ** @returns xcb_xkb_get_names_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_get_names_cookie_t
-xcb_xkb_get_names (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint32_t which /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_names_cookie_t xcb_xkb_get_names_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint32_t which
- ** @returns xcb_xkb_get_names_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_get_names_cookie_t
-xcb_xkb_get_names_unchecked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint32_t which /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_names_value_list_t * xcb_xkb_get_names_value_list
- **
- ** @param const xcb_xkb_get_names_reply_t *R
- ** @returns xcb_xkb_get_names_value_list_t *
- **
- *****************************************************************************/
-
-void *
-xcb_xkb_get_names_value_list (const xcb_xkb_get_names_reply_t *R /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_xkb_get_names_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_names_reply_t * xcb_xkb_get_names_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_get_names_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xkb_get_names_reply_t *
- **
- *****************************************************************************/
-
-xcb_xkb_get_names_reply_t *
-xcb_xkb_get_names_reply (xcb_connection_t *c /**< */,
- xcb_xkb_get_names_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_atom_t * xcb_xkb_set_names_values_type_names
- **
- ** @param const xcb_xkb_set_names_values_t *S
- ** @returns xcb_atom_t *
- **
- *****************************************************************************/
-
-xcb_atom_t *
-xcb_xkb_set_names_values_type_names (const xcb_xkb_set_names_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_set_names_values_type_names_length
- **
- ** @param const xcb_xkb_set_names_values_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_set_names_values_type_names_length (const xcb_xkb_set_names_request_t *R /**< */,
- const xcb_xkb_set_names_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_set_names_values_type_names_end
- **
- ** @param const xcb_xkb_set_names_values_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_set_names_values_type_names_end (const xcb_xkb_set_names_request_t *R /**< */,
- const xcb_xkb_set_names_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** uint8_t * xcb_xkb_set_names_values_n_levels_per_type
- **
- ** @param const xcb_xkb_set_names_values_t *S
- ** @returns uint8_t *
- **
- *****************************************************************************/
-
-uint8_t *
-xcb_xkb_set_names_values_n_levels_per_type (const xcb_xkb_set_names_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_set_names_values_n_levels_per_type_length
- **
- ** @param const xcb_xkb_set_names_values_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_set_names_values_n_levels_per_type_length (const xcb_xkb_set_names_request_t *R /**< */,
- const xcb_xkb_set_names_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_set_names_values_n_levels_per_type_end
- **
- ** @param const xcb_xkb_set_names_values_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_set_names_values_n_levels_per_type_end (const xcb_xkb_set_names_request_t *R /**< */,
- const xcb_xkb_set_names_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_atom_t * xcb_xkb_set_names_values_kt_level_names
- **
- ** @param const xcb_xkb_set_names_values_t *S
- ** @returns xcb_atom_t *
- **
- *****************************************************************************/
-
-xcb_atom_t *
-xcb_xkb_set_names_values_kt_level_names (const xcb_xkb_set_names_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_set_names_values_kt_level_names_length
- **
- ** @param const xcb_xkb_set_names_values_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_set_names_values_kt_level_names_length (const xcb_xkb_set_names_request_t *R /**< */,
- const xcb_xkb_set_names_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_set_names_values_kt_level_names_end
- **
- ** @param const xcb_xkb_set_names_values_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_set_names_values_kt_level_names_end (const xcb_xkb_set_names_request_t *R /**< */,
- const xcb_xkb_set_names_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_atom_t * xcb_xkb_set_names_values_indicator_names
- **
- ** @param const xcb_xkb_set_names_values_t *S
- ** @returns xcb_atom_t *
- **
- *****************************************************************************/
-
-xcb_atom_t *
-xcb_xkb_set_names_values_indicator_names (const xcb_xkb_set_names_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_set_names_values_indicator_names_length
- **
- ** @param const xcb_xkb_set_names_values_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_set_names_values_indicator_names_length (const xcb_xkb_set_names_request_t *R /**< */,
- const xcb_xkb_set_names_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_set_names_values_indicator_names_end
- **
- ** @param const xcb_xkb_set_names_values_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_set_names_values_indicator_names_end (const xcb_xkb_set_names_request_t *R /**< */,
- const xcb_xkb_set_names_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_atom_t * xcb_xkb_set_names_values_virtual_mod_names
- **
- ** @param const xcb_xkb_set_names_values_t *S
- ** @returns xcb_atom_t *
- **
- *****************************************************************************/
-
-xcb_atom_t *
-xcb_xkb_set_names_values_virtual_mod_names (const xcb_xkb_set_names_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_set_names_values_virtual_mod_names_length
- **
- ** @param const xcb_xkb_set_names_values_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_set_names_values_virtual_mod_names_length (const xcb_xkb_set_names_request_t *R /**< */,
- const xcb_xkb_set_names_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_set_names_values_virtual_mod_names_end
- **
- ** @param const xcb_xkb_set_names_values_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_set_names_values_virtual_mod_names_end (const xcb_xkb_set_names_request_t *R /**< */,
- const xcb_xkb_set_names_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_atom_t * xcb_xkb_set_names_values_groups
- **
- ** @param const xcb_xkb_set_names_values_t *S
- ** @returns xcb_atom_t *
- **
- *****************************************************************************/
-
-xcb_atom_t *
-xcb_xkb_set_names_values_groups (const xcb_xkb_set_names_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_set_names_values_groups_length
- **
- ** @param const xcb_xkb_set_names_values_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_set_names_values_groups_length (const xcb_xkb_set_names_request_t *R /**< */,
- const xcb_xkb_set_names_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_set_names_values_groups_end
- **
- ** @param const xcb_xkb_set_names_values_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_set_names_values_groups_end (const xcb_xkb_set_names_request_t *R /**< */,
- const xcb_xkb_set_names_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_name_t * xcb_xkb_set_names_values_key_names
- **
- ** @param const xcb_xkb_set_names_values_t *S
- ** @returns xcb_xkb_key_name_t *
- **
- *****************************************************************************/
-
-xcb_xkb_key_name_t *
-xcb_xkb_set_names_values_key_names (const xcb_xkb_set_names_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_set_names_values_key_names_length
- **
- ** @param const xcb_xkb_set_names_values_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_set_names_values_key_names_length (const xcb_xkb_set_names_request_t *R /**< */,
- const xcb_xkb_set_names_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_name_iterator_t xcb_xkb_set_names_values_key_names_iterator
- **
- ** @param const xcb_xkb_set_names_values_t *R
- ** @returns xcb_xkb_key_name_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_key_name_iterator_t
-xcb_xkb_set_names_values_key_names_iterator (const xcb_xkb_set_names_request_t *R /**< */,
- const xcb_xkb_set_names_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_alias_t * xcb_xkb_set_names_values_key_aliases
- **
- ** @param const xcb_xkb_set_names_values_t *S
- ** @returns xcb_xkb_key_alias_t *
- **
- *****************************************************************************/
-
-xcb_xkb_key_alias_t *
-xcb_xkb_set_names_values_key_aliases (const xcb_xkb_set_names_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_set_names_values_key_aliases_length
- **
- ** @param const xcb_xkb_set_names_values_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_set_names_values_key_aliases_length (const xcb_xkb_set_names_request_t *R /**< */,
- const xcb_xkb_set_names_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_alias_iterator_t xcb_xkb_set_names_values_key_aliases_iterator
- **
- ** @param const xcb_xkb_set_names_values_t *R
- ** @returns xcb_xkb_key_alias_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_key_alias_iterator_t
-xcb_xkb_set_names_values_key_aliases_iterator (const xcb_xkb_set_names_request_t *R /**< */,
- const xcb_xkb_set_names_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_atom_t * xcb_xkb_set_names_values_radio_group_names
- **
- ** @param const xcb_xkb_set_names_values_t *S
- ** @returns xcb_atom_t *
- **
- *****************************************************************************/
-
-xcb_atom_t *
-xcb_xkb_set_names_values_radio_group_names (const xcb_xkb_set_names_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_set_names_values_radio_group_names_length
- **
- ** @param const xcb_xkb_set_names_values_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_set_names_values_radio_group_names_length (const xcb_xkb_set_names_request_t *R /**< */,
- const xcb_xkb_set_names_values_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_set_names_values_radio_group_names_end
- **
- ** @param const xcb_xkb_set_names_values_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_set_names_values_radio_group_names_end (const xcb_xkb_set_names_request_t *R /**< */,
- const xcb_xkb_set_names_values_t *S /**< */);
-
-int
-xcb_xkb_set_names_values_serialize (void **_buffer /**< */,
- uint8_t nTypes /**< */,
- uint8_t nKTLevels /**< */,
- uint32_t indicators /**< */,
- uint16_t virtualMods /**< */,
- uint8_t groupNames /**< */,
- uint8_t nKeys /**< */,
- uint8_t nKeyAliases /**< */,
- uint8_t nRadioGroups /**< */,
- uint32_t which /**< */,
- const xcb_xkb_set_names_values_t *_aux /**< */);
-
-int
-xcb_xkb_set_names_values_unpack (const void *_buffer /**< */,
- uint8_t nTypes /**< */,
- uint8_t nKTLevels /**< */,
- uint32_t indicators /**< */,
- uint16_t virtualMods /**< */,
- uint8_t groupNames /**< */,
- uint8_t nKeys /**< */,
- uint8_t nKeyAliases /**< */,
- uint8_t nRadioGroups /**< */,
- uint32_t which /**< */,
- xcb_xkb_set_names_values_t *_aux /**< */);
-
-int
-xcb_xkb_set_names_values_sizeof (const void *_buffer /**< */,
- uint8_t nTypes /**< */,
- uint8_t nKTLevels /**< */,
- uint32_t indicators /**< */,
- uint16_t virtualMods /**< */,
- uint8_t groupNames /**< */,
- uint8_t nKeys /**< */,
- uint8_t nKeyAliases /**< */,
- uint8_t nRadioGroups /**< */,
- uint32_t which /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_set_names_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint16_t virtualMods
- ** @param uint32_t which
- ** @param uint8_t firstType
- ** @param uint8_t nTypes
- ** @param uint8_t firstKTLevelt
- ** @param uint8_t nKTLevels
- ** @param uint32_t indicators
- ** @param uint8_t groupNames
- ** @param uint8_t nRadioGroups
- ** @param xcb_keycode_t firstKey
- ** @param uint8_t nKeys
- ** @param uint8_t nKeyAliases
- ** @param uint16_t totalKTLevelNames
- ** @param const void *values
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_set_names_checked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint16_t virtualMods /**< */,
- uint32_t which /**< */,
- uint8_t firstType /**< */,
- uint8_t nTypes /**< */,
- uint8_t firstKTLevelt /**< */,
- uint8_t nKTLevels /**< */,
- uint32_t indicators /**< */,
- uint8_t groupNames /**< */,
- uint8_t nRadioGroups /**< */,
- xcb_keycode_t firstKey /**< */,
- uint8_t nKeys /**< */,
- uint8_t nKeyAliases /**< */,
- uint16_t totalKTLevelNames /**< */,
- const void *values /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_set_names
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint16_t virtualMods
- ** @param uint32_t which
- ** @param uint8_t firstType
- ** @param uint8_t nTypes
- ** @param uint8_t firstKTLevelt
- ** @param uint8_t nKTLevels
- ** @param uint32_t indicators
- ** @param uint8_t groupNames
- ** @param uint8_t nRadioGroups
- ** @param xcb_keycode_t firstKey
- ** @param uint8_t nKeys
- ** @param uint8_t nKeyAliases
- ** @param uint16_t totalKTLevelNames
- ** @param const void *values
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_set_names (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint16_t virtualMods /**< */,
- uint32_t which /**< */,
- uint8_t firstType /**< */,
- uint8_t nTypes /**< */,
- uint8_t firstKTLevelt /**< */,
- uint8_t nKTLevels /**< */,
- uint32_t indicators /**< */,
- uint8_t groupNames /**< */,
- uint8_t nRadioGroups /**< */,
- xcb_keycode_t firstKey /**< */,
- uint8_t nKeys /**< */,
- uint8_t nKeyAliases /**< */,
- uint16_t totalKTLevelNames /**< */,
- const void *values /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_set_names_aux_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint16_t virtualMods
- ** @param uint32_t which
- ** @param uint8_t firstType
- ** @param uint8_t nTypes
- ** @param uint8_t firstKTLevelt
- ** @param uint8_t nKTLevels
- ** @param uint32_t indicators
- ** @param uint8_t groupNames
- ** @param uint8_t nRadioGroups
- ** @param xcb_keycode_t firstKey
- ** @param uint8_t nKeys
- ** @param uint8_t nKeyAliases
- ** @param uint16_t totalKTLevelNames
- ** @param const xcb_xkb_set_names_values_t *values
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_set_names_aux_checked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint16_t virtualMods /**< */,
- uint32_t which /**< */,
- uint8_t firstType /**< */,
- uint8_t nTypes /**< */,
- uint8_t firstKTLevelt /**< */,
- uint8_t nKTLevels /**< */,
- uint32_t indicators /**< */,
- uint8_t groupNames /**< */,
- uint8_t nRadioGroups /**< */,
- xcb_keycode_t firstKey /**< */,
- uint8_t nKeys /**< */,
- uint8_t nKeyAliases /**< */,
- uint16_t totalKTLevelNames /**< */,
- const xcb_xkb_set_names_values_t *values /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_set_names_aux
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint16_t virtualMods
- ** @param uint32_t which
- ** @param uint8_t firstType
- ** @param uint8_t nTypes
- ** @param uint8_t firstKTLevelt
- ** @param uint8_t nKTLevels
- ** @param uint32_t indicators
- ** @param uint8_t groupNames
- ** @param uint8_t nRadioGroups
- ** @param xcb_keycode_t firstKey
- ** @param uint8_t nKeys
- ** @param uint8_t nKeyAliases
- ** @param uint16_t totalKTLevelNames
- ** @param const xcb_xkb_set_names_values_t *values
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_set_names_aux (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint16_t virtualMods /**< */,
- uint32_t which /**< */,
- uint8_t firstType /**< */,
- uint8_t nTypes /**< */,
- uint8_t firstKTLevelt /**< */,
- uint8_t nKTLevels /**< */,
- uint32_t indicators /**< */,
- uint8_t groupNames /**< */,
- uint8_t nRadioGroups /**< */,
- xcb_keycode_t firstKey /**< */,
- uint8_t nKeys /**< */,
- uint8_t nKeyAliases /**< */,
- uint16_t totalKTLevelNames /**< */,
- const xcb_xkb_set_names_values_t *values /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_xkb_per_client_flags_cookie_t xcb_xkb_per_client_flags
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint32_t change
- ** @param uint32_t value
- ** @param uint32_t ctrlsToChange
- ** @param uint32_t autoCtrls
- ** @param uint32_t autoCtrlsValues
- ** @returns xcb_xkb_per_client_flags_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_per_client_flags_cookie_t
-xcb_xkb_per_client_flags (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint32_t change /**< */,
- uint32_t value /**< */,
- uint32_t ctrlsToChange /**< */,
- uint32_t autoCtrls /**< */,
- uint32_t autoCtrlsValues /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_xkb_per_client_flags_cookie_t xcb_xkb_per_client_flags_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint32_t change
- ** @param uint32_t value
- ** @param uint32_t ctrlsToChange
- ** @param uint32_t autoCtrls
- ** @param uint32_t autoCtrlsValues
- ** @returns xcb_xkb_per_client_flags_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_per_client_flags_cookie_t
-xcb_xkb_per_client_flags_unchecked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint32_t change /**< */,
- uint32_t value /**< */,
- uint32_t ctrlsToChange /**< */,
- uint32_t autoCtrls /**< */,
- uint32_t autoCtrlsValues /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_xkb_per_client_flags_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_xkb_per_client_flags_reply_t * xcb_xkb_per_client_flags_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_per_client_flags_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xkb_per_client_flags_reply_t *
- **
- *****************************************************************************/
-
-xcb_xkb_per_client_flags_reply_t *
-xcb_xkb_per_client_flags_reply (xcb_connection_t *c /**< */,
- xcb_xkb_per_client_flags_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-int
-xcb_xkb_list_components_sizeof (const void *_buffer /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_xkb_list_components_cookie_t xcb_xkb_list_components
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint16_t maxNames
- ** @returns xcb_xkb_list_components_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_list_components_cookie_t
-xcb_xkb_list_components (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint16_t maxNames /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_xkb_list_components_cookie_t xcb_xkb_list_components_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint16_t maxNames
- ** @returns xcb_xkb_list_components_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_list_components_cookie_t
-xcb_xkb_list_components_unchecked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint16_t maxNames /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_list_components_keymaps_length
- **
- ** @param const xcb_xkb_list_components_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_list_components_keymaps_length (const xcb_xkb_list_components_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_listing_iterator_t xcb_xkb_list_components_keymaps_iterator
- **
- ** @param const xcb_xkb_list_components_reply_t *R
- ** @returns xcb_xkb_listing_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_listing_iterator_t
-xcb_xkb_list_components_keymaps_iterator (const xcb_xkb_list_components_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_list_components_keycodes_length
- **
- ** @param const xcb_xkb_list_components_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_list_components_keycodes_length (const xcb_xkb_list_components_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_listing_iterator_t xcb_xkb_list_components_keycodes_iterator
- **
- ** @param const xcb_xkb_list_components_reply_t *R
- ** @returns xcb_xkb_listing_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_listing_iterator_t
-xcb_xkb_list_components_keycodes_iterator (const xcb_xkb_list_components_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_list_components_types_length
- **
- ** @param const xcb_xkb_list_components_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_list_components_types_length (const xcb_xkb_list_components_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_listing_iterator_t xcb_xkb_list_components_types_iterator
- **
- ** @param const xcb_xkb_list_components_reply_t *R
- ** @returns xcb_xkb_listing_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_listing_iterator_t
-xcb_xkb_list_components_types_iterator (const xcb_xkb_list_components_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_list_components_compat_maps_length
- **
- ** @param const xcb_xkb_list_components_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_list_components_compat_maps_length (const xcb_xkb_list_components_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_listing_iterator_t xcb_xkb_list_components_compat_maps_iterator
- **
- ** @param const xcb_xkb_list_components_reply_t *R
- ** @returns xcb_xkb_listing_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_listing_iterator_t
-xcb_xkb_list_components_compat_maps_iterator (const xcb_xkb_list_components_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_list_components_symbols_length
- **
- ** @param const xcb_xkb_list_components_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_list_components_symbols_length (const xcb_xkb_list_components_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_listing_iterator_t xcb_xkb_list_components_symbols_iterator
- **
- ** @param const xcb_xkb_list_components_reply_t *R
- ** @returns xcb_xkb_listing_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_listing_iterator_t
-xcb_xkb_list_components_symbols_iterator (const xcb_xkb_list_components_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_list_components_geometries_length
- **
- ** @param const xcb_xkb_list_components_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_list_components_geometries_length (const xcb_xkb_list_components_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_listing_iterator_t xcb_xkb_list_components_geometries_iterator
- **
- ** @param const xcb_xkb_list_components_reply_t *R
- ** @returns xcb_xkb_listing_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_listing_iterator_t
-xcb_xkb_list_components_geometries_iterator (const xcb_xkb_list_components_reply_t *R /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_xkb_list_components_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_xkb_list_components_reply_t * xcb_xkb_list_components_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_list_components_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xkb_list_components_reply_t *
- **
- *****************************************************************************/
-
-xcb_xkb_list_components_reply_t *
-xcb_xkb_list_components_reply (xcb_connection_t *c /**< */,
- xcb_xkb_list_components_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_kbd_by_name_replies_types_map_types_rtrn_length
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_types_map_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_kbd_by_name_replies_types_map_types_rtrn_length (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_type_iterator_t xcb_xkb_get_kbd_by_name_replies_types_map_types_rtrn_iterator
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_types_map_t *R
- ** @returns xcb_xkb_key_type_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_key_type_iterator_t
-xcb_xkb_get_kbd_by_name_replies_types_map_types_rtrn_iterator (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_kbd_by_name_replies_types_map_syms_rtrn_length
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_types_map_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_kbd_by_name_replies_types_map_syms_rtrn_length (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_sym_map_iterator_t xcb_xkb_get_kbd_by_name_replies_types_map_syms_rtrn_iterator
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_types_map_t *R
- ** @returns xcb_xkb_key_sym_map_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_key_sym_map_iterator_t
-xcb_xkb_get_kbd_by_name_replies_types_map_syms_rtrn_iterator (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** uint8_t * xcb_xkb_get_kbd_by_name_replies_types_map_acts_rtrn_count
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *S
- ** @returns uint8_t *
- **
- *****************************************************************************/
-
-uint8_t *
-xcb_xkb_get_kbd_by_name_replies_types_map_acts_rtrn_count (const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_kbd_by_name_replies_types_map_acts_rtrn_count_length
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_types_map_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_kbd_by_name_replies_types_map_acts_rtrn_count_length (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_get_kbd_by_name_replies_types_map_acts_rtrn_count_end
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_types_map_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_get_kbd_by_name_replies_types_map_acts_rtrn_count_end (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_action_t * xcb_xkb_get_kbd_by_name_replies_types_map_acts_rtrn_acts
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *S
- ** @returns xcb_xkb_action_t *
- **
- *****************************************************************************/
-
-xcb_xkb_action_t *
-xcb_xkb_get_kbd_by_name_replies_types_map_acts_rtrn_acts (const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_kbd_by_name_replies_types_map_acts_rtrn_acts_length
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_types_map_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_kbd_by_name_replies_types_map_acts_rtrn_acts_length (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_action_iterator_t xcb_xkb_get_kbd_by_name_replies_types_map_acts_rtrn_acts_iterator
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_types_map_t *R
- ** @returns xcb_xkb_action_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_action_iterator_t
-xcb_xkb_get_kbd_by_name_replies_types_map_acts_rtrn_acts_iterator (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_set_behavior_t * xcb_xkb_get_kbd_by_name_replies_types_map_behaviors_rtrn
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *S
- ** @returns xcb_xkb_set_behavior_t *
- **
- *****************************************************************************/
-
-xcb_xkb_set_behavior_t *
-xcb_xkb_get_kbd_by_name_replies_types_map_behaviors_rtrn (const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_kbd_by_name_replies_types_map_behaviors_rtrn_length
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_types_map_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_kbd_by_name_replies_types_map_behaviors_rtrn_length (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_set_behavior_iterator_t xcb_xkb_get_kbd_by_name_replies_types_map_behaviors_rtrn_iterator
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_types_map_t *R
- ** @returns xcb_xkb_set_behavior_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_set_behavior_iterator_t
-xcb_xkb_get_kbd_by_name_replies_types_map_behaviors_rtrn_iterator (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** uint8_t * xcb_xkb_get_kbd_by_name_replies_types_map_vmods_rtrn
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *S
- ** @returns uint8_t *
- **
- *****************************************************************************/
-
-uint8_t *
-xcb_xkb_get_kbd_by_name_replies_types_map_vmods_rtrn (const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_kbd_by_name_replies_types_map_vmods_rtrn_length
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_types_map_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_kbd_by_name_replies_types_map_vmods_rtrn_length (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_get_kbd_by_name_replies_types_map_vmods_rtrn_end
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_types_map_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_get_kbd_by_name_replies_types_map_vmods_rtrn_end (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_set_explicit_t * xcb_xkb_get_kbd_by_name_replies_types_map_explicit_rtrn
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *S
- ** @returns xcb_xkb_set_explicit_t *
- **
- *****************************************************************************/
-
-xcb_xkb_set_explicit_t *
-xcb_xkb_get_kbd_by_name_replies_types_map_explicit_rtrn (const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_kbd_by_name_replies_types_map_explicit_rtrn_length
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_types_map_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_kbd_by_name_replies_types_map_explicit_rtrn_length (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_set_explicit_iterator_t xcb_xkb_get_kbd_by_name_replies_types_map_explicit_rtrn_iterator
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_types_map_t *R
- ** @returns xcb_xkb_set_explicit_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_set_explicit_iterator_t
-xcb_xkb_get_kbd_by_name_replies_types_map_explicit_rtrn_iterator (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_mod_map_t * xcb_xkb_get_kbd_by_name_replies_types_map_modmap_rtrn
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *S
- ** @returns xcb_xkb_key_mod_map_t *
- **
- *****************************************************************************/
-
-xcb_xkb_key_mod_map_t *
-xcb_xkb_get_kbd_by_name_replies_types_map_modmap_rtrn (const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_kbd_by_name_replies_types_map_modmap_rtrn_length
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_types_map_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_kbd_by_name_replies_types_map_modmap_rtrn_length (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_mod_map_iterator_t xcb_xkb_get_kbd_by_name_replies_types_map_modmap_rtrn_iterator
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_types_map_t *R
- ** @returns xcb_xkb_key_mod_map_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_key_mod_map_iterator_t
-xcb_xkb_get_kbd_by_name_replies_types_map_modmap_rtrn_iterator (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_v_mod_map_t * xcb_xkb_get_kbd_by_name_replies_types_map_vmodmap_rtrn
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *S
- ** @returns xcb_xkb_key_v_mod_map_t *
- **
- *****************************************************************************/
-
-xcb_xkb_key_v_mod_map_t *
-xcb_xkb_get_kbd_by_name_replies_types_map_vmodmap_rtrn (const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_kbd_by_name_replies_types_map_vmodmap_rtrn_length
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_types_map_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_kbd_by_name_replies_types_map_vmodmap_rtrn_length (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_v_mod_map_iterator_t xcb_xkb_get_kbd_by_name_replies_types_map_vmodmap_rtrn_iterator
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_types_map_t *R
- ** @returns xcb_xkb_key_v_mod_map_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_key_v_mod_map_iterator_t
-xcb_xkb_get_kbd_by_name_replies_types_map_vmodmap_rtrn_iterator (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-int
-xcb_xkb_get_kbd_by_name_replies_types_map_serialize (void **_buffer /**< */,
- uint8_t nTypes /**< */,
- uint8_t nKeySyms /**< */,
- uint8_t nKeyActions /**< */,
- uint16_t totalActions /**< */,
- uint8_t totalKeyBehaviors /**< */,
- uint16_t virtualMods /**< */,
- uint8_t totalKeyExplicit /**< */,
- uint8_t totalModMapKeys /**< */,
- uint8_t totalVModMapKeys /**< */,
- uint16_t present /**< */,
- const xcb_xkb_get_kbd_by_name_replies_types_map_t *_aux /**< */);
-
-int
-xcb_xkb_get_kbd_by_name_replies_types_map_unpack (const void *_buffer /**< */,
- uint8_t nTypes /**< */,
- uint8_t nKeySyms /**< */,
- uint8_t nKeyActions /**< */,
- uint16_t totalActions /**< */,
- uint8_t totalKeyBehaviors /**< */,
- uint16_t virtualMods /**< */,
- uint8_t totalKeyExplicit /**< */,
- uint8_t totalModMapKeys /**< */,
- uint8_t totalVModMapKeys /**< */,
- uint16_t present /**< */,
- xcb_xkb_get_kbd_by_name_replies_types_map_t *_aux /**< */);
-
-int
-xcb_xkb_get_kbd_by_name_replies_types_map_sizeof (const void *_buffer /**< */,
- uint8_t nTypes /**< */,
- uint8_t nKeySyms /**< */,
- uint8_t nKeyActions /**< */,
- uint16_t totalActions /**< */,
- uint8_t totalKeyBehaviors /**< */,
- uint16_t virtualMods /**< */,
- uint8_t totalKeyExplicit /**< */,
- uint8_t totalModMapKeys /**< */,
- uint8_t totalVModMapKeys /**< */,
- uint16_t present /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_atom_t * xcb_xkb_get_kbd_by_name_replies_key_names_value_list_type_names
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *S
- ** @returns xcb_atom_t *
- **
- *****************************************************************************/
-
-xcb_atom_t *
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_type_names (const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_kbd_by_name_replies_key_names_value_list_type_names_length
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_type_names_length (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_get_kbd_by_name_replies_key_names_value_list_type_names_end
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_type_names_end (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** uint8_t * xcb_xkb_get_kbd_by_name_replies_key_names_value_list_n_levels_per_type
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *S
- ** @returns uint8_t *
- **
- *****************************************************************************/
-
-uint8_t *
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_n_levels_per_type (const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_kbd_by_name_replies_key_names_value_list_n_levels_per_type_length
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_n_levels_per_type_length (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_get_kbd_by_name_replies_key_names_value_list_n_levels_per_type_end
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_n_levels_per_type_end (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_atom_t * xcb_xkb_get_kbd_by_name_replies_key_names_value_list_kt_level_names
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *S
- ** @returns xcb_atom_t *
- **
- *****************************************************************************/
-
-xcb_atom_t *
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_kt_level_names (const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_kbd_by_name_replies_key_names_value_list_kt_level_names_length
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_kt_level_names_length (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_get_kbd_by_name_replies_key_names_value_list_kt_level_names_end
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_kt_level_names_end (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_atom_t * xcb_xkb_get_kbd_by_name_replies_key_names_value_list_indicator_names
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *S
- ** @returns xcb_atom_t *
- **
- *****************************************************************************/
-
-xcb_atom_t *
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_indicator_names (const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_kbd_by_name_replies_key_names_value_list_indicator_names_length
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_indicator_names_length (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_get_kbd_by_name_replies_key_names_value_list_indicator_names_end
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_indicator_names_end (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_atom_t * xcb_xkb_get_kbd_by_name_replies_key_names_value_list_virtual_mod_names
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *S
- ** @returns xcb_atom_t *
- **
- *****************************************************************************/
-
-xcb_atom_t *
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_virtual_mod_names (const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_kbd_by_name_replies_key_names_value_list_virtual_mod_names_length
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_virtual_mod_names_length (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_get_kbd_by_name_replies_key_names_value_list_virtual_mod_names_end
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_virtual_mod_names_end (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_atom_t * xcb_xkb_get_kbd_by_name_replies_key_names_value_list_groups
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *S
- ** @returns xcb_atom_t *
- **
- *****************************************************************************/
-
-xcb_atom_t *
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_groups (const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_kbd_by_name_replies_key_names_value_list_groups_length
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_groups_length (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_get_kbd_by_name_replies_key_names_value_list_groups_end
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_groups_end (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_name_t * xcb_xkb_get_kbd_by_name_replies_key_names_value_list_key_names
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *S
- ** @returns xcb_xkb_key_name_t *
- **
- *****************************************************************************/
-
-xcb_xkb_key_name_t *
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_key_names (const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_kbd_by_name_replies_key_names_value_list_key_names_length
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_key_names_length (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_name_iterator_t xcb_xkb_get_kbd_by_name_replies_key_names_value_list_key_names_iterator
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t *R
- ** @returns xcb_xkb_key_name_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_key_name_iterator_t
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_key_names_iterator (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_alias_t * xcb_xkb_get_kbd_by_name_replies_key_names_value_list_key_aliases
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *S
- ** @returns xcb_xkb_key_alias_t *
- **
- *****************************************************************************/
-
-xcb_xkb_key_alias_t *
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_key_aliases (const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_kbd_by_name_replies_key_names_value_list_key_aliases_length
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_key_aliases_length (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_alias_iterator_t xcb_xkb_get_kbd_by_name_replies_key_names_value_list_key_aliases_iterator
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t *R
- ** @returns xcb_xkb_key_alias_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_key_alias_iterator_t
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_key_aliases_iterator (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_atom_t * xcb_xkb_get_kbd_by_name_replies_key_names_value_list_radio_group_names
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *S
- ** @returns xcb_atom_t *
- **
- *****************************************************************************/
-
-xcb_atom_t *
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_radio_group_names (const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_kbd_by_name_replies_key_names_value_list_radio_group_names_length
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_radio_group_names_length (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_get_kbd_by_name_replies_key_names_value_list_radio_group_names_end
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_radio_group_names_end (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-int
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_serialize (void **_buffer /**< */,
- uint8_t nTypes /**< */,
- uint16_t nKTLevels /**< */,
- uint32_t indicators /**< */,
- uint16_t virtualMods /**< */,
- uint8_t groupNames /**< */,
- uint8_t nKeys /**< */,
- uint8_t nKeyAliases /**< */,
- uint8_t nRadioGroups /**< */,
- uint32_t which /**< */,
- const xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t *_aux /**< */);
-
-int
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_unpack (const void *_buffer /**< */,
- uint8_t nTypes /**< */,
- uint16_t nKTLevels /**< */,
- uint32_t indicators /**< */,
- uint16_t virtualMods /**< */,
- uint8_t groupNames /**< */,
- uint8_t nKeys /**< */,
- uint8_t nKeyAliases /**< */,
- uint8_t nRadioGroups /**< */,
- uint32_t which /**< */,
- xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t *_aux /**< */);
-
-int
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_sizeof (const void *_buffer /**< */,
- uint8_t nTypes /**< */,
- uint16_t nKTLevels /**< */,
- uint32_t indicators /**< */,
- uint16_t virtualMods /**< */,
- uint8_t groupNames /**< */,
- uint8_t nKeys /**< */,
- uint8_t nKeyAliases /**< */,
- uint8_t nRadioGroups /**< */,
- uint32_t which /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_sym_interpret_t * xcb_xkb_get_kbd_by_name_replies_compat_map_si_rtrn
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *S
- ** @returns xcb_xkb_sym_interpret_t *
- **
- *****************************************************************************/
-
-xcb_xkb_sym_interpret_t *
-xcb_xkb_get_kbd_by_name_replies_compat_map_si_rtrn (const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_kbd_by_name_replies_compat_map_si_rtrn_length
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_kbd_by_name_replies_compat_map_si_rtrn_length (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_sym_interpret_iterator_t xcb_xkb_get_kbd_by_name_replies_compat_map_si_rtrn_iterator
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *R
- ** @returns xcb_xkb_sym_interpret_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_sym_interpret_iterator_t
-xcb_xkb_get_kbd_by_name_replies_compat_map_si_rtrn_iterator (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_mod_def_t * xcb_xkb_get_kbd_by_name_replies_compat_map_group_rtrn
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *S
- ** @returns xcb_xkb_mod_def_t *
- **
- *****************************************************************************/
-
-xcb_xkb_mod_def_t *
-xcb_xkb_get_kbd_by_name_replies_compat_map_group_rtrn (const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_kbd_by_name_replies_compat_map_group_rtrn_length
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_kbd_by_name_replies_compat_map_group_rtrn_length (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_mod_def_iterator_t xcb_xkb_get_kbd_by_name_replies_compat_map_group_rtrn_iterator
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *R
- ** @returns xcb_xkb_mod_def_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_mod_def_iterator_t
-xcb_xkb_get_kbd_by_name_replies_compat_map_group_rtrn_iterator (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_indicator_map_t * xcb_xkb_get_kbd_by_name_replies_indicator_maps_maps
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *S
- ** @returns xcb_xkb_indicator_map_t *
- **
- *****************************************************************************/
-
-xcb_xkb_indicator_map_t *
-xcb_xkb_get_kbd_by_name_replies_indicator_maps_maps (const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_kbd_by_name_replies_indicator_maps_maps_length
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_kbd_by_name_replies_indicator_maps_maps_length (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_indicator_map_iterator_t xcb_xkb_get_kbd_by_name_replies_indicator_maps_maps_iterator
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *R
- ** @returns xcb_xkb_indicator_map_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_indicator_map_iterator_t
-xcb_xkb_get_kbd_by_name_replies_indicator_maps_maps_iterator (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t * xcb_xkb_get_kbd_by_name_replies_key_names_value_list
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *R
- ** @returns xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t *
- **
- *****************************************************************************/
-
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t *
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list (const xcb_xkb_get_kbd_by_name_replies_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_counted_string_16_t * xcb_xkb_get_kbd_by_name_replies_geometry_label_font
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *R
- ** @returns xcb_xkb_counted_string_16_t *
- **
- *****************************************************************************/
-
-xcb_xkb_counted_string_16_t *
-xcb_xkb_get_kbd_by_name_replies_geometry_label_font (const xcb_xkb_get_kbd_by_name_replies_t *R /**< */);
-
-int
-xcb_xkb_get_kbd_by_name_replies_serialize (void **_buffer /**< */,
- uint16_t reported /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *_aux /**< */);
-
-int
-xcb_xkb_get_kbd_by_name_replies_unpack (const void *_buffer /**< */,
- uint16_t reported /**< */,
- xcb_xkb_get_kbd_by_name_replies_t *_aux /**< */);
-
-int
-xcb_xkb_get_kbd_by_name_replies_sizeof (const void *_buffer /**< */,
- uint16_t reported /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_kbd_by_name_cookie_t xcb_xkb_get_kbd_by_name
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint16_t need
- ** @param uint16_t want
- ** @param uint8_t load
- ** @returns xcb_xkb_get_kbd_by_name_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_get_kbd_by_name_cookie_t
-xcb_xkb_get_kbd_by_name (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint16_t need /**< */,
- uint16_t want /**< */,
- uint8_t load /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_kbd_by_name_cookie_t xcb_xkb_get_kbd_by_name_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint16_t need
- ** @param uint16_t want
- ** @param uint8_t load
- ** @returns xcb_xkb_get_kbd_by_name_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_get_kbd_by_name_cookie_t
-xcb_xkb_get_kbd_by_name_unchecked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint16_t need /**< */,
- uint16_t want /**< */,
- uint8_t load /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_kbd_by_name_replies_t * xcb_xkb_get_kbd_by_name_replies
- **
- ** @param const xcb_xkb_get_kbd_by_name_reply_t *R
- ** @returns xcb_xkb_get_kbd_by_name_replies_t *
- **
- *****************************************************************************/
-
-void *
-xcb_xkb_get_kbd_by_name_replies (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_xkb_get_kbd_by_name_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_kbd_by_name_reply_t * xcb_xkb_get_kbd_by_name_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_get_kbd_by_name_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xkb_get_kbd_by_name_reply_t *
- **
- *****************************************************************************/
-
-xcb_xkb_get_kbd_by_name_reply_t *
-xcb_xkb_get_kbd_by_name_reply (xcb_connection_t *c /**< */,
- xcb_xkb_get_kbd_by_name_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-int
-xcb_xkb_get_device_info_sizeof (const void *_buffer /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_device_info_cookie_t xcb_xkb_get_device_info
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint16_t wanted
- ** @param uint8_t allButtons
- ** @param uint8_t firstButton
- ** @param uint8_t nButtons
- ** @param xcb_xkb_led_class_spec_t ledClass
- ** @param xcb_xkb_id_spec_t ledID
- ** @returns xcb_xkb_get_device_info_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_get_device_info_cookie_t
-xcb_xkb_get_device_info (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint16_t wanted /**< */,
- uint8_t allButtons /**< */,
- uint8_t firstButton /**< */,
- uint8_t nButtons /**< */,
- xcb_xkb_led_class_spec_t ledClass /**< */,
- xcb_xkb_id_spec_t ledID /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_device_info_cookie_t xcb_xkb_get_device_info_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint16_t wanted
- ** @param uint8_t allButtons
- ** @param uint8_t firstButton
- ** @param uint8_t nButtons
- ** @param xcb_xkb_led_class_spec_t ledClass
- ** @param xcb_xkb_id_spec_t ledID
- ** @returns xcb_xkb_get_device_info_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_get_device_info_cookie_t
-xcb_xkb_get_device_info_unchecked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint16_t wanted /**< */,
- uint8_t allButtons /**< */,
- uint8_t firstButton /**< */,
- uint8_t nButtons /**< */,
- xcb_xkb_led_class_spec_t ledClass /**< */,
- xcb_xkb_id_spec_t ledID /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_string8_t * xcb_xkb_get_device_info_name
- **
- ** @param const xcb_xkb_get_device_info_reply_t *R
- ** @returns xcb_xkb_string8_t *
- **
- *****************************************************************************/
-
-xcb_xkb_string8_t *
-xcb_xkb_get_device_info_name (const xcb_xkb_get_device_info_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_device_info_name_length
- **
- ** @param const xcb_xkb_get_device_info_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_device_info_name_length (const xcb_xkb_get_device_info_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_get_device_info_name_end
- **
- ** @param const xcb_xkb_get_device_info_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_get_device_info_name_end (const xcb_xkb_get_device_info_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_action_t * xcb_xkb_get_device_info_btn_actions
- **
- ** @param const xcb_xkb_get_device_info_reply_t *R
- ** @returns xcb_xkb_action_t *
- **
- *****************************************************************************/
-
-xcb_xkb_action_t *
-xcb_xkb_get_device_info_btn_actions (const xcb_xkb_get_device_info_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_device_info_btn_actions_length
- **
- ** @param const xcb_xkb_get_device_info_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_device_info_btn_actions_length (const xcb_xkb_get_device_info_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_action_iterator_t xcb_xkb_get_device_info_btn_actions_iterator
- **
- ** @param const xcb_xkb_get_device_info_reply_t *R
- ** @returns xcb_xkb_action_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_action_iterator_t
-xcb_xkb_get_device_info_btn_actions_iterator (const xcb_xkb_get_device_info_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_device_info_leds_length
- **
- ** @param const xcb_xkb_get_device_info_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_device_info_leds_length (const xcb_xkb_get_device_info_reply_t *R /**< */);
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_device_led_info_iterator_t xcb_xkb_get_device_info_leds_iterator
- **
- ** @param const xcb_xkb_get_device_info_reply_t *R
- ** @returns xcb_xkb_device_led_info_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_device_led_info_iterator_t
-xcb_xkb_get_device_info_leds_iterator (const xcb_xkb_get_device_info_reply_t *R /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_xkb_get_device_info_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_device_info_reply_t * xcb_xkb_get_device_info_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_get_device_info_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xkb_get_device_info_reply_t *
- **
- *****************************************************************************/
-
-xcb_xkb_get_device_info_reply_t *
-xcb_xkb_get_device_info_reply (xcb_connection_t *c /**< */,
- xcb_xkb_get_device_info_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-int
-xcb_xkb_set_device_info_sizeof (const void *_buffer /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will not cause
- * a reply to be generated. Any returned error will be
- * saved for handling by xcb_request_check().
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_set_device_info_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint8_t firstBtn
- ** @param uint8_t nBtns
- ** @param uint16_t change
- ** @param uint16_t nDeviceLedFBs
- ** @param const xcb_xkb_action_t *btnActions
- ** @param const xcb_xkb_device_led_info_t *leds
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_set_device_info_checked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint8_t firstBtn /**< */,
- uint8_t nBtns /**< */,
- uint16_t change /**< */,
- uint16_t nDeviceLedFBs /**< */,
- const xcb_xkb_action_t *btnActions /**< */,
- const xcb_xkb_device_led_info_t *leds /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_set_device_info
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint8_t firstBtn
- ** @param uint8_t nBtns
- ** @param uint16_t change
- ** @param uint16_t nDeviceLedFBs
- ** @param const xcb_xkb_action_t *btnActions
- ** @param const xcb_xkb_device_led_info_t *leds
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_set_device_info (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint8_t firstBtn /**< */,
- uint8_t nBtns /**< */,
- uint16_t change /**< */,
- uint16_t nDeviceLedFBs /**< */,
- const xcb_xkb_action_t *btnActions /**< */,
- const xcb_xkb_device_led_info_t *leds /**< */);
-
-int
-xcb_xkb_set_debugging_flags_sizeof (const void *_buffer /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- */
-
-/*****************************************************************************
- **
- ** xcb_xkb_set_debugging_flags_cookie_t xcb_xkb_set_debugging_flags
- **
- ** @param xcb_connection_t *c
- ** @param uint16_t msgLength
- ** @param uint32_t affectFlags
- ** @param uint32_t flags
- ** @param uint32_t affectCtrls
- ** @param uint32_t ctrls
- ** @param const xcb_xkb_string8_t *message
- ** @returns xcb_xkb_set_debugging_flags_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_set_debugging_flags_cookie_t
-xcb_xkb_set_debugging_flags (xcb_connection_t *c /**< */,
- uint16_t msgLength /**< */,
- uint32_t affectFlags /**< */,
- uint32_t flags /**< */,
- uint32_t affectCtrls /**< */,
- uint32_t ctrls /**< */,
- const xcb_xkb_string8_t *message /**< */);
-
-/**
- *
- * @param c The connection
- * @return A cookie
- *
- * Delivers a request to the X server.
- *
- * This form can be used only if the request will cause
- * a reply to be generated. Any returned error will be
- * placed in the event queue.
- */
-
-/*****************************************************************************
- **
- ** xcb_xkb_set_debugging_flags_cookie_t xcb_xkb_set_debugging_flags_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param uint16_t msgLength
- ** @param uint32_t affectFlags
- ** @param uint32_t flags
- ** @param uint32_t affectCtrls
- ** @param uint32_t ctrls
- ** @param const xcb_xkb_string8_t *message
- ** @returns xcb_xkb_set_debugging_flags_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_set_debugging_flags_cookie_t
-xcb_xkb_set_debugging_flags_unchecked (xcb_connection_t *c /**< */,
- uint16_t msgLength /**< */,
- uint32_t affectFlags /**< */,
- uint32_t flags /**< */,
- uint32_t affectCtrls /**< */,
- uint32_t ctrls /**< */,
- const xcb_xkb_string8_t *message /**< */);
-
-/**
- * Return the reply
- * @param c The connection
- * @param cookie The cookie
- * @param e The xcb_generic_error_t supplied
- *
- * Returns the reply of the request asked by
- *
- * The parameter @p e supplied to this function must be NULL if
- * xcb_xkb_set_debugging_flags_unchecked(). is used.
- * Otherwise, it stores the error if any.
- *
- * The returned value must be freed by the caller using free().
- */
-
-/*****************************************************************************
- **
- ** xcb_xkb_set_debugging_flags_reply_t * xcb_xkb_set_debugging_flags_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_set_debugging_flags_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xkb_set_debugging_flags_reply_t *
- **
- *****************************************************************************/
-
-xcb_xkb_set_debugging_flags_reply_t *
-xcb_xkb_set_debugging_flags_reply (xcb_connection_t *c /**< */,
- xcb_xkb_set_debugging_flags_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-/**
- * @}
- */
diff --git a/src/3rdparty/xcb/libxcb/fix_compiler_warning_on_32bit_systems.patch b/src/3rdparty/xcb/libxcb/fix_compiler_warning_on_32bit_systems.patch
deleted file mode 100644
index 240c20d2ac..0000000000
--- a/src/3rdparty/xcb/libxcb/fix_compiler_warning_on_32bit_systems.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-diff --git a/src/3rdparty/xcb/include/xcb/xkb.h b/src/3rdparty/xcb/include/xcb/xkb.h
-index 44b0a8d..0180ec8 100644
---- a/src/3rdparty/xcb/include/xcb/xkb.h
-+++ b/src/3rdparty/xcb/include/xcb/xkb.h
-@@ -114,8 +114,8 @@ typedef enum xcb_xkb_control_t {
- XCB_XKB_CONTROL_GROUPS_WRAP = 134217728,
- XCB_XKB_CONTROL_INTERNAL_MODS = 268435456,
- XCB_XKB_CONTROL_IGNORE_LOCK_MODS = 536870912,
-- XCB_XKB_CONTROL_PER_KEY_REPEAT = 1073741824,
-- XCB_XKB_CONTROL_CONTROLS_ENABLED = 2147483648
-+ XCB_XKB_CONTROL_PER_KEY_REPEAT = 1073741824u,
-+ XCB_XKB_CONTROL_CONTROLS_ENABLED = 2147483648u
- } xcb_xkb_control_t;
-
- typedef enum xcb_xkb_axfb_opt_t {
diff --git a/src/3rdparty/xcb/libxcb/fixup-xinput-c.patch b/src/3rdparty/xcb/libxcb/fixup-xinput-c.patch
new file mode 100644
index 0000000000..9ddaf6c59a
--- /dev/null
+++ b/src/3rdparty/xcb/libxcb/fixup-xinput-c.patch
@@ -0,0 +1,19 @@
+diff --git a/src/3rdparty/xcb/libxcb/xinput.c b/src/3rdparty/xcb/libxcb/xinput.c
+index 0edfde656c..d4e3c250bc 100644
+--- a/src/3rdparty/xcb/libxcb/xinput.c
++++ b/src/3rdparty/xcb/libxcb/xinput.c
+@@ -10,11 +10,11 @@
+ #include <string.h>
+ #include <assert.h>
+ #include <stddef.h> /* for offsetof() */
+-#include "xcbext.h"
+-#include "xinput.h"
++#include <xcb/xcbext.h>
++#include <xcb/xinput.h>
+
+ #define ALIGNOF(type) offsetof(struct { char dummy; type member; }, member)
+-#include "xfixes.h"
++#include <xcb/xfixes.h>
+
+ xcb_extension_t xcb_input_id = { "XInputExtension", 0 };
+
diff --git a/src/3rdparty/xcb/libxcb/randr.c b/src/3rdparty/xcb/libxcb/randr.c
deleted file mode 100644
index 0232af802f..0000000000
--- a/src/3rdparty/xcb/libxcb/randr.c
+++ /dev/null
@@ -1,5640 +0,0 @@
-/*
- * This file generated automatically from randr.xml by c_client.py.
- * Edit at your peril.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-#include <stddef.h> /* for offsetof() */
-#include "xcbext.h"
-#include "randr.h"
-
-#define ALIGNOF(type) offsetof(struct { char dummy; type member; }, member)
-#include "xproto.h"
-#include "render.h"
-
-xcb_extension_t xcb_randr_id = { "RANDR", 0 };
-
-
-/*****************************************************************************
- **
- ** void xcb_randr_mode_next
- **
- ** @param xcb_randr_mode_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_randr_mode_next (xcb_randr_mode_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_randr_mode_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_mode_end
- **
- ** @param xcb_randr_mode_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_mode_end (xcb_randr_mode_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_randr_crtc_next
- **
- ** @param xcb_randr_crtc_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_randr_crtc_next (xcb_randr_crtc_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_randr_crtc_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_crtc_end
- **
- ** @param xcb_randr_crtc_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_crtc_end (xcb_randr_crtc_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_randr_output_next
- **
- ** @param xcb_randr_output_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_randr_output_next (xcb_randr_output_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_randr_output_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_output_end
- **
- ** @param xcb_randr_output_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_output_end (xcb_randr_output_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_randr_screen_size_next
- **
- ** @param xcb_randr_screen_size_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_randr_screen_size_next (xcb_randr_screen_size_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_randr_screen_size_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_screen_size_end
- **
- ** @param xcb_randr_screen_size_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_screen_size_end (xcb_randr_screen_size_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-int
-xcb_randr_refresh_rates_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_randr_refresh_rates_t *_aux = (xcb_randr_refresh_rates_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_randr_refresh_rates_t);
- xcb_tmp += xcb_block_len;
- /* rates */
- xcb_block_len += _aux->nRates * sizeof(uint16_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(uint16_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** uint16_t * xcb_randr_refresh_rates_rates
- **
- ** @param const xcb_randr_refresh_rates_t *R
- ** @returns uint16_t *
- **
- *****************************************************************************/
-
-uint16_t *
-xcb_randr_refresh_rates_rates (const xcb_randr_refresh_rates_t *R /**< */)
-{
- return (uint16_t *) (R + 1);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_refresh_rates_rates_length
- **
- ** @param const xcb_randr_refresh_rates_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_refresh_rates_rates_length (const xcb_randr_refresh_rates_t *R /**< */)
-{
- return R->nRates;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_refresh_rates_rates_end
- **
- ** @param const xcb_randr_refresh_rates_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_refresh_rates_rates_end (const xcb_randr_refresh_rates_t *R /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = ((uint16_t *) (R + 1)) + (R->nRates);
- i.rem = 0;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_randr_refresh_rates_next
- **
- ** @param xcb_randr_refresh_rates_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_randr_refresh_rates_next (xcb_randr_refresh_rates_iterator_t *i /**< */)
-{
- xcb_randr_refresh_rates_t *R = i->data;
- xcb_generic_iterator_t child;
- child.data = (xcb_randr_refresh_rates_t *)(((char *)R) + xcb_randr_refresh_rates_sizeof(R));
- i->index = (char *) child.data - (char *) i->data;
- --i->rem;
- i->data = (xcb_randr_refresh_rates_t *) child.data;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_refresh_rates_end
- **
- ** @param xcb_randr_refresh_rates_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_refresh_rates_end (xcb_randr_refresh_rates_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- while(i.rem > 0)
- xcb_randr_refresh_rates_next(&i);
- ret.data = i.data;
- ret.rem = i.rem;
- ret.index = i.index;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_query_version_cookie_t xcb_randr_query_version
- **
- ** @param xcb_connection_t *c
- ** @param uint32_t major_version
- ** @param uint32_t minor_version
- ** @returns xcb_randr_query_version_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_query_version_cookie_t
-xcb_randr_query_version (xcb_connection_t *c /**< */,
- uint32_t major_version /**< */,
- uint32_t minor_version /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_QUERY_VERSION,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_randr_query_version_cookie_t xcb_ret;
- xcb_randr_query_version_request_t xcb_out;
-
- xcb_out.major_version = major_version;
- xcb_out.minor_version = minor_version;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_query_version_cookie_t xcb_randr_query_version_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param uint32_t major_version
- ** @param uint32_t minor_version
- ** @returns xcb_randr_query_version_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_query_version_cookie_t
-xcb_randr_query_version_unchecked (xcb_connection_t *c /**< */,
- uint32_t major_version /**< */,
- uint32_t minor_version /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_QUERY_VERSION,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_randr_query_version_cookie_t xcb_ret;
- xcb_randr_query_version_request_t xcb_out;
-
- xcb_out.major_version = major_version;
- xcb_out.minor_version = minor_version;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_query_version_reply_t * xcb_randr_query_version_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_query_version_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_randr_query_version_reply_t *
- **
- *****************************************************************************/
-
-xcb_randr_query_version_reply_t *
-xcb_randr_query_version_reply (xcb_connection_t *c /**< */,
- xcb_randr_query_version_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_randr_query_version_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_set_screen_config_cookie_t xcb_randr_set_screen_config
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @param xcb_timestamp_t timestamp
- ** @param xcb_timestamp_t config_timestamp
- ** @param uint16_t sizeID
- ** @param uint16_t rotation
- ** @param uint16_t rate
- ** @returns xcb_randr_set_screen_config_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_set_screen_config_cookie_t
-xcb_randr_set_screen_config (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */,
- xcb_timestamp_t timestamp /**< */,
- xcb_timestamp_t config_timestamp /**< */,
- uint16_t sizeID /**< */,
- uint16_t rotation /**< */,
- uint16_t rate /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_SET_SCREEN_CONFIG,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_randr_set_screen_config_cookie_t xcb_ret;
- xcb_randr_set_screen_config_request_t xcb_out;
-
- xcb_out.window = window;
- xcb_out.timestamp = timestamp;
- xcb_out.config_timestamp = config_timestamp;
- xcb_out.sizeID = sizeID;
- xcb_out.rotation = rotation;
- xcb_out.rate = rate;
- memset(xcb_out.pad0, 0, 2);
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_set_screen_config_cookie_t xcb_randr_set_screen_config_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @param xcb_timestamp_t timestamp
- ** @param xcb_timestamp_t config_timestamp
- ** @param uint16_t sizeID
- ** @param uint16_t rotation
- ** @param uint16_t rate
- ** @returns xcb_randr_set_screen_config_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_set_screen_config_cookie_t
-xcb_randr_set_screen_config_unchecked (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */,
- xcb_timestamp_t timestamp /**< */,
- xcb_timestamp_t config_timestamp /**< */,
- uint16_t sizeID /**< */,
- uint16_t rotation /**< */,
- uint16_t rate /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_SET_SCREEN_CONFIG,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_randr_set_screen_config_cookie_t xcb_ret;
- xcb_randr_set_screen_config_request_t xcb_out;
-
- xcb_out.window = window;
- xcb_out.timestamp = timestamp;
- xcb_out.config_timestamp = config_timestamp;
- xcb_out.sizeID = sizeID;
- xcb_out.rotation = rotation;
- xcb_out.rate = rate;
- memset(xcb_out.pad0, 0, 2);
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_set_screen_config_reply_t * xcb_randr_set_screen_config_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_set_screen_config_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_randr_set_screen_config_reply_t *
- **
- *****************************************************************************/
-
-xcb_randr_set_screen_config_reply_t *
-xcb_randr_set_screen_config_reply (xcb_connection_t *c /**< */,
- xcb_randr_set_screen_config_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_randr_set_screen_config_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_randr_select_input_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @param uint16_t enable
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_randr_select_input_checked (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */,
- uint16_t enable /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_SELECT_INPUT,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_randr_select_input_request_t xcb_out;
-
- xcb_out.window = window;
- xcb_out.enable = enable;
- memset(xcb_out.pad0, 0, 2);
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_randr_select_input
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @param uint16_t enable
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_randr_select_input (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */,
- uint16_t enable /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_SELECT_INPUT,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_randr_select_input_request_t xcb_out;
-
- xcb_out.window = window;
- xcb_out.enable = enable;
- memset(xcb_out.pad0, 0, 2);
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-int
-xcb_randr_get_screen_info_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_randr_get_screen_info_reply_t *_aux = (xcb_randr_get_screen_info_reply_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
- unsigned int i;
- unsigned int xcb_tmp_len;
-
- xcb_block_len += sizeof(xcb_randr_get_screen_info_reply_t);
- xcb_tmp += xcb_block_len;
- /* sizes */
- xcb_block_len += _aux->nSizes * sizeof(xcb_randr_screen_size_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_randr_screen_size_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* rates */
- for(i=0; i<(_aux->nInfo - _aux->nSizes); i++) {
- xcb_tmp_len = xcb_randr_refresh_rates_sizeof(xcb_tmp);
- xcb_block_len += xcb_tmp_len;
- xcb_tmp += xcb_tmp_len;
- }
- xcb_align_to = ALIGNOF(xcb_randr_refresh_rates_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_get_screen_info_cookie_t xcb_randr_get_screen_info
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @returns xcb_randr_get_screen_info_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_get_screen_info_cookie_t
-xcb_randr_get_screen_info (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_GET_SCREEN_INFO,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_randr_get_screen_info_cookie_t xcb_ret;
- xcb_randr_get_screen_info_request_t xcb_out;
-
- xcb_out.window = window;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_get_screen_info_cookie_t xcb_randr_get_screen_info_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @returns xcb_randr_get_screen_info_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_get_screen_info_cookie_t
-xcb_randr_get_screen_info_unchecked (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_GET_SCREEN_INFO,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_randr_get_screen_info_cookie_t xcb_ret;
- xcb_randr_get_screen_info_request_t xcb_out;
-
- xcb_out.window = window;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_screen_size_t * xcb_randr_get_screen_info_sizes
- **
- ** @param const xcb_randr_get_screen_info_reply_t *R
- ** @returns xcb_randr_screen_size_t *
- **
- *****************************************************************************/
-
-xcb_randr_screen_size_t *
-xcb_randr_get_screen_info_sizes (const xcb_randr_get_screen_info_reply_t *R /**< */)
-{
- return (xcb_randr_screen_size_t *) (R + 1);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_get_screen_info_sizes_length
- **
- ** @param const xcb_randr_get_screen_info_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_get_screen_info_sizes_length (const xcb_randr_get_screen_info_reply_t *R /**< */)
-{
- return R->nSizes;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_screen_size_iterator_t xcb_randr_get_screen_info_sizes_iterator
- **
- ** @param const xcb_randr_get_screen_info_reply_t *R
- ** @returns xcb_randr_screen_size_iterator_t
- **
- *****************************************************************************/
-
-xcb_randr_screen_size_iterator_t
-xcb_randr_get_screen_info_sizes_iterator (const xcb_randr_get_screen_info_reply_t *R /**< */)
-{
- xcb_randr_screen_size_iterator_t i;
- i.data = (xcb_randr_screen_size_t *) (R + 1);
- i.rem = R->nSizes;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_get_screen_info_rates_length
- **
- ** @param const xcb_randr_get_screen_info_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_get_screen_info_rates_length (const xcb_randr_get_screen_info_reply_t *R /**< */)
-{
- return (R->nInfo - R->nSizes);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_refresh_rates_iterator_t xcb_randr_get_screen_info_rates_iterator
- **
- ** @param const xcb_randr_get_screen_info_reply_t *R
- ** @returns xcb_randr_refresh_rates_iterator_t
- **
- *****************************************************************************/
-
-xcb_randr_refresh_rates_iterator_t
-xcb_randr_get_screen_info_rates_iterator (const xcb_randr_get_screen_info_reply_t *R /**< */)
-{
- xcb_randr_refresh_rates_iterator_t i;
- xcb_generic_iterator_t prev = xcb_randr_screen_size_end(xcb_randr_get_screen_info_sizes_iterator(R));
- i.data = (xcb_randr_refresh_rates_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_randr_refresh_rates_t, prev.index));
- i.rem = (R->nInfo - R->nSizes);
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_get_screen_info_reply_t * xcb_randr_get_screen_info_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_get_screen_info_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_randr_get_screen_info_reply_t *
- **
- *****************************************************************************/
-
-xcb_randr_get_screen_info_reply_t *
-xcb_randr_get_screen_info_reply (xcb_connection_t *c /**< */,
- xcb_randr_get_screen_info_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_randr_get_screen_info_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_get_screen_size_range_cookie_t xcb_randr_get_screen_size_range
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @returns xcb_randr_get_screen_size_range_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_get_screen_size_range_cookie_t
-xcb_randr_get_screen_size_range (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_GET_SCREEN_SIZE_RANGE,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_randr_get_screen_size_range_cookie_t xcb_ret;
- xcb_randr_get_screen_size_range_request_t xcb_out;
-
- xcb_out.window = window;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_get_screen_size_range_cookie_t xcb_randr_get_screen_size_range_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @returns xcb_randr_get_screen_size_range_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_get_screen_size_range_cookie_t
-xcb_randr_get_screen_size_range_unchecked (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_GET_SCREEN_SIZE_RANGE,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_randr_get_screen_size_range_cookie_t xcb_ret;
- xcb_randr_get_screen_size_range_request_t xcb_out;
-
- xcb_out.window = window;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_get_screen_size_range_reply_t * xcb_randr_get_screen_size_range_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_get_screen_size_range_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_randr_get_screen_size_range_reply_t *
- **
- *****************************************************************************/
-
-xcb_randr_get_screen_size_range_reply_t *
-xcb_randr_get_screen_size_range_reply (xcb_connection_t *c /**< */,
- xcb_randr_get_screen_size_range_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_randr_get_screen_size_range_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_randr_set_screen_size_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @param uint16_t width
- ** @param uint16_t height
- ** @param uint32_t mm_width
- ** @param uint32_t mm_height
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_randr_set_screen_size_checked (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */,
- uint16_t width /**< */,
- uint16_t height /**< */,
- uint32_t mm_width /**< */,
- uint32_t mm_height /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_SET_SCREEN_SIZE,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_randr_set_screen_size_request_t xcb_out;
-
- xcb_out.window = window;
- xcb_out.width = width;
- xcb_out.height = height;
- xcb_out.mm_width = mm_width;
- xcb_out.mm_height = mm_height;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_randr_set_screen_size
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @param uint16_t width
- ** @param uint16_t height
- ** @param uint32_t mm_width
- ** @param uint32_t mm_height
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_randr_set_screen_size (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */,
- uint16_t width /**< */,
- uint16_t height /**< */,
- uint32_t mm_width /**< */,
- uint32_t mm_height /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_SET_SCREEN_SIZE,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_randr_set_screen_size_request_t xcb_out;
-
- xcb_out.window = window;
- xcb_out.width = width;
- xcb_out.height = height;
- xcb_out.mm_width = mm_width;
- xcb_out.mm_height = mm_height;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_randr_mode_info_next
- **
- ** @param xcb_randr_mode_info_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_randr_mode_info_next (xcb_randr_mode_info_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_randr_mode_info_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_mode_info_end
- **
- ** @param xcb_randr_mode_info_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_mode_info_end (xcb_randr_mode_info_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-int
-xcb_randr_get_screen_resources_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_randr_get_screen_resources_reply_t *_aux = (xcb_randr_get_screen_resources_reply_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_randr_get_screen_resources_reply_t);
- xcb_tmp += xcb_block_len;
- /* crtcs */
- xcb_block_len += _aux->num_crtcs * sizeof(uint32_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_randr_crtc_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* outputs */
- xcb_block_len += _aux->num_outputs * sizeof(uint32_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_randr_output_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* modes */
- xcb_block_len += _aux->num_modes * sizeof(xcb_randr_mode_info_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_randr_mode_info_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* names */
- xcb_block_len += _aux->names_len * sizeof(uint8_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(uint8_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_get_screen_resources_cookie_t xcb_randr_get_screen_resources
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @returns xcb_randr_get_screen_resources_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_get_screen_resources_cookie_t
-xcb_randr_get_screen_resources (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_GET_SCREEN_RESOURCES,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_randr_get_screen_resources_cookie_t xcb_ret;
- xcb_randr_get_screen_resources_request_t xcb_out;
-
- xcb_out.window = window;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_get_screen_resources_cookie_t xcb_randr_get_screen_resources_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @returns xcb_randr_get_screen_resources_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_get_screen_resources_cookie_t
-xcb_randr_get_screen_resources_unchecked (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_GET_SCREEN_RESOURCES,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_randr_get_screen_resources_cookie_t xcb_ret;
- xcb_randr_get_screen_resources_request_t xcb_out;
-
- xcb_out.window = window;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_crtc_t * xcb_randr_get_screen_resources_crtcs
- **
- ** @param const xcb_randr_get_screen_resources_reply_t *R
- ** @returns xcb_randr_crtc_t *
- **
- *****************************************************************************/
-
-xcb_randr_crtc_t *
-xcb_randr_get_screen_resources_crtcs (const xcb_randr_get_screen_resources_reply_t *R /**< */)
-{
- return (xcb_randr_crtc_t *) (R + 1);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_get_screen_resources_crtcs_length
- **
- ** @param const xcb_randr_get_screen_resources_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_get_screen_resources_crtcs_length (const xcb_randr_get_screen_resources_reply_t *R /**< */)
-{
- return R->num_crtcs;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_get_screen_resources_crtcs_end
- **
- ** @param const xcb_randr_get_screen_resources_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_get_screen_resources_crtcs_end (const xcb_randr_get_screen_resources_reply_t *R /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = ((xcb_randr_crtc_t *) (R + 1)) + (R->num_crtcs);
- i.rem = 0;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_output_t * xcb_randr_get_screen_resources_outputs
- **
- ** @param const xcb_randr_get_screen_resources_reply_t *R
- ** @returns xcb_randr_output_t *
- **
- *****************************************************************************/
-
-xcb_randr_output_t *
-xcb_randr_get_screen_resources_outputs (const xcb_randr_get_screen_resources_reply_t *R /**< */)
-{
- xcb_generic_iterator_t prev = xcb_randr_get_screen_resources_crtcs_end(R);
- return (xcb_randr_output_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_randr_output_t, prev.index) + 0);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_get_screen_resources_outputs_length
- **
- ** @param const xcb_randr_get_screen_resources_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_get_screen_resources_outputs_length (const xcb_randr_get_screen_resources_reply_t *R /**< */)
-{
- return R->num_outputs;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_get_screen_resources_outputs_end
- **
- ** @param const xcb_randr_get_screen_resources_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_get_screen_resources_outputs_end (const xcb_randr_get_screen_resources_reply_t *R /**< */)
-{
- xcb_generic_iterator_t i;
- xcb_generic_iterator_t child = xcb_randr_get_screen_resources_crtcs_end(R);
- i.data = ((xcb_randr_output_t *) child.data) + (R->num_outputs);
- i.rem = 0;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_mode_info_t * xcb_randr_get_screen_resources_modes
- **
- ** @param const xcb_randr_get_screen_resources_reply_t *R
- ** @returns xcb_randr_mode_info_t *
- **
- *****************************************************************************/
-
-xcb_randr_mode_info_t *
-xcb_randr_get_screen_resources_modes (const xcb_randr_get_screen_resources_reply_t *R /**< */)
-{
- xcb_generic_iterator_t prev = xcb_randr_get_screen_resources_outputs_end(R);
- return (xcb_randr_mode_info_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_randr_mode_info_t, prev.index) + 0);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_get_screen_resources_modes_length
- **
- ** @param const xcb_randr_get_screen_resources_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_get_screen_resources_modes_length (const xcb_randr_get_screen_resources_reply_t *R /**< */)
-{
- return R->num_modes;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_mode_info_iterator_t xcb_randr_get_screen_resources_modes_iterator
- **
- ** @param const xcb_randr_get_screen_resources_reply_t *R
- ** @returns xcb_randr_mode_info_iterator_t
- **
- *****************************************************************************/
-
-xcb_randr_mode_info_iterator_t
-xcb_randr_get_screen_resources_modes_iterator (const xcb_randr_get_screen_resources_reply_t *R /**< */)
-{
- xcb_randr_mode_info_iterator_t i;
- xcb_generic_iterator_t prev = xcb_randr_get_screen_resources_outputs_end(R);
- i.data = (xcb_randr_mode_info_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_randr_mode_info_t, prev.index));
- i.rem = R->num_modes;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** uint8_t * xcb_randr_get_screen_resources_names
- **
- ** @param const xcb_randr_get_screen_resources_reply_t *R
- ** @returns uint8_t *
- **
- *****************************************************************************/
-
-uint8_t *
-xcb_randr_get_screen_resources_names (const xcb_randr_get_screen_resources_reply_t *R /**< */)
-{
- xcb_generic_iterator_t prev = xcb_randr_mode_info_end(xcb_randr_get_screen_resources_modes_iterator(R));
- return (uint8_t *) ((char *) prev.data + XCB_TYPE_PAD(uint8_t, prev.index) + 0);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_get_screen_resources_names_length
- **
- ** @param const xcb_randr_get_screen_resources_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_get_screen_resources_names_length (const xcb_randr_get_screen_resources_reply_t *R /**< */)
-{
- return R->names_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_get_screen_resources_names_end
- **
- ** @param const xcb_randr_get_screen_resources_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_get_screen_resources_names_end (const xcb_randr_get_screen_resources_reply_t *R /**< */)
-{
- xcb_generic_iterator_t i;
- xcb_generic_iterator_t child = xcb_randr_mode_info_end(xcb_randr_get_screen_resources_modes_iterator(R));
- i.data = ((uint8_t *) child.data) + (R->names_len);
- i.rem = 0;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_get_screen_resources_reply_t * xcb_randr_get_screen_resources_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_get_screen_resources_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_randr_get_screen_resources_reply_t *
- **
- *****************************************************************************/
-
-xcb_randr_get_screen_resources_reply_t *
-xcb_randr_get_screen_resources_reply (xcb_connection_t *c /**< */,
- xcb_randr_get_screen_resources_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_randr_get_screen_resources_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-int
-xcb_randr_get_output_info_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_randr_get_output_info_reply_t *_aux = (xcb_randr_get_output_info_reply_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_randr_get_output_info_reply_t);
- xcb_tmp += xcb_block_len;
- /* crtcs */
- xcb_block_len += _aux->num_crtcs * sizeof(xcb_randr_output_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_randr_crtc_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* modes */
- xcb_block_len += _aux->num_modes * sizeof(xcb_randr_output_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_randr_mode_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* clones */
- xcb_block_len += _aux->num_clones * sizeof(xcb_randr_output_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_randr_output_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* name */
- xcb_block_len += _aux->name_len * sizeof(uint8_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(uint8_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_get_output_info_cookie_t xcb_randr_get_output_info
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_output_t output
- ** @param xcb_timestamp_t config_timestamp
- ** @returns xcb_randr_get_output_info_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_get_output_info_cookie_t
-xcb_randr_get_output_info (xcb_connection_t *c /**< */,
- xcb_randr_output_t output /**< */,
- xcb_timestamp_t config_timestamp /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_GET_OUTPUT_INFO,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_randr_get_output_info_cookie_t xcb_ret;
- xcb_randr_get_output_info_request_t xcb_out;
-
- xcb_out.output = output;
- xcb_out.config_timestamp = config_timestamp;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_get_output_info_cookie_t xcb_randr_get_output_info_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_output_t output
- ** @param xcb_timestamp_t config_timestamp
- ** @returns xcb_randr_get_output_info_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_get_output_info_cookie_t
-xcb_randr_get_output_info_unchecked (xcb_connection_t *c /**< */,
- xcb_randr_output_t output /**< */,
- xcb_timestamp_t config_timestamp /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_GET_OUTPUT_INFO,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_randr_get_output_info_cookie_t xcb_ret;
- xcb_randr_get_output_info_request_t xcb_out;
-
- xcb_out.output = output;
- xcb_out.config_timestamp = config_timestamp;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_crtc_t * xcb_randr_get_output_info_crtcs
- **
- ** @param const xcb_randr_get_output_info_reply_t *R
- ** @returns xcb_randr_crtc_t *
- **
- *****************************************************************************/
-
-xcb_randr_crtc_t *
-xcb_randr_get_output_info_crtcs (const xcb_randr_get_output_info_reply_t *R /**< */)
-{
- return (xcb_randr_crtc_t *) (R + 1);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_get_output_info_crtcs_length
- **
- ** @param const xcb_randr_get_output_info_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_get_output_info_crtcs_length (const xcb_randr_get_output_info_reply_t *R /**< */)
-{
- return R->num_crtcs;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_get_output_info_crtcs_end
- **
- ** @param const xcb_randr_get_output_info_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_get_output_info_crtcs_end (const xcb_randr_get_output_info_reply_t *R /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = ((xcb_randr_crtc_t *) (R + 1)) + (R->num_crtcs);
- i.rem = 0;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_mode_t * xcb_randr_get_output_info_modes
- **
- ** @param const xcb_randr_get_output_info_reply_t *R
- ** @returns xcb_randr_mode_t *
- **
- *****************************************************************************/
-
-xcb_randr_mode_t *
-xcb_randr_get_output_info_modes (const xcb_randr_get_output_info_reply_t *R /**< */)
-{
- xcb_generic_iterator_t prev = xcb_randr_get_output_info_crtcs_end(R);
- return (xcb_randr_mode_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_randr_mode_t, prev.index) + 0);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_get_output_info_modes_length
- **
- ** @param const xcb_randr_get_output_info_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_get_output_info_modes_length (const xcb_randr_get_output_info_reply_t *R /**< */)
-{
- return R->num_modes;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_get_output_info_modes_end
- **
- ** @param const xcb_randr_get_output_info_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_get_output_info_modes_end (const xcb_randr_get_output_info_reply_t *R /**< */)
-{
- xcb_generic_iterator_t i;
- xcb_generic_iterator_t child = xcb_randr_get_output_info_crtcs_end(R);
- i.data = ((xcb_randr_mode_t *) child.data) + (R->num_modes);
- i.rem = 0;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_output_t * xcb_randr_get_output_info_clones
- **
- ** @param const xcb_randr_get_output_info_reply_t *R
- ** @returns xcb_randr_output_t *
- **
- *****************************************************************************/
-
-xcb_randr_output_t *
-xcb_randr_get_output_info_clones (const xcb_randr_get_output_info_reply_t *R /**< */)
-{
- xcb_generic_iterator_t prev = xcb_randr_get_output_info_modes_end(R);
- return (xcb_randr_output_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_randr_output_t, prev.index) + 0);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_get_output_info_clones_length
- **
- ** @param const xcb_randr_get_output_info_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_get_output_info_clones_length (const xcb_randr_get_output_info_reply_t *R /**< */)
-{
- return R->num_clones;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_get_output_info_clones_end
- **
- ** @param const xcb_randr_get_output_info_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_get_output_info_clones_end (const xcb_randr_get_output_info_reply_t *R /**< */)
-{
- xcb_generic_iterator_t i;
- xcb_generic_iterator_t child = xcb_randr_get_output_info_modes_end(R);
- i.data = ((xcb_randr_output_t *) child.data) + (R->num_clones);
- i.rem = 0;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** uint8_t * xcb_randr_get_output_info_name
- **
- ** @param const xcb_randr_get_output_info_reply_t *R
- ** @returns uint8_t *
- **
- *****************************************************************************/
-
-uint8_t *
-xcb_randr_get_output_info_name (const xcb_randr_get_output_info_reply_t *R /**< */)
-{
- xcb_generic_iterator_t prev = xcb_randr_get_output_info_clones_end(R);
- return (uint8_t *) ((char *) prev.data + XCB_TYPE_PAD(uint8_t, prev.index) + 0);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_get_output_info_name_length
- **
- ** @param const xcb_randr_get_output_info_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_get_output_info_name_length (const xcb_randr_get_output_info_reply_t *R /**< */)
-{
- return R->name_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_get_output_info_name_end
- **
- ** @param const xcb_randr_get_output_info_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_get_output_info_name_end (const xcb_randr_get_output_info_reply_t *R /**< */)
-{
- xcb_generic_iterator_t i;
- xcb_generic_iterator_t child = xcb_randr_get_output_info_clones_end(R);
- i.data = ((uint8_t *) child.data) + (R->name_len);
- i.rem = 0;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_get_output_info_reply_t * xcb_randr_get_output_info_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_get_output_info_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_randr_get_output_info_reply_t *
- **
- *****************************************************************************/
-
-xcb_randr_get_output_info_reply_t *
-xcb_randr_get_output_info_reply (xcb_connection_t *c /**< */,
- xcb_randr_get_output_info_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_randr_get_output_info_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-int
-xcb_randr_list_output_properties_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_randr_list_output_properties_reply_t *_aux = (xcb_randr_list_output_properties_reply_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_randr_list_output_properties_reply_t);
- xcb_tmp += xcb_block_len;
- /* atoms */
- xcb_block_len += _aux->num_atoms * sizeof(xcb_atom_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_list_output_properties_cookie_t xcb_randr_list_output_properties
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_output_t output
- ** @returns xcb_randr_list_output_properties_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_list_output_properties_cookie_t
-xcb_randr_list_output_properties (xcb_connection_t *c /**< */,
- xcb_randr_output_t output /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_LIST_OUTPUT_PROPERTIES,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_randr_list_output_properties_cookie_t xcb_ret;
- xcb_randr_list_output_properties_request_t xcb_out;
-
- xcb_out.output = output;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_list_output_properties_cookie_t xcb_randr_list_output_properties_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_output_t output
- ** @returns xcb_randr_list_output_properties_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_list_output_properties_cookie_t
-xcb_randr_list_output_properties_unchecked (xcb_connection_t *c /**< */,
- xcb_randr_output_t output /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_LIST_OUTPUT_PROPERTIES,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_randr_list_output_properties_cookie_t xcb_ret;
- xcb_randr_list_output_properties_request_t xcb_out;
-
- xcb_out.output = output;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_atom_t * xcb_randr_list_output_properties_atoms
- **
- ** @param const xcb_randr_list_output_properties_reply_t *R
- ** @returns xcb_atom_t *
- **
- *****************************************************************************/
-
-xcb_atom_t *
-xcb_randr_list_output_properties_atoms (const xcb_randr_list_output_properties_reply_t *R /**< */)
-{
- return (xcb_atom_t *) (R + 1);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_list_output_properties_atoms_length
- **
- ** @param const xcb_randr_list_output_properties_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_list_output_properties_atoms_length (const xcb_randr_list_output_properties_reply_t *R /**< */)
-{
- return R->num_atoms;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_list_output_properties_atoms_end
- **
- ** @param const xcb_randr_list_output_properties_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_list_output_properties_atoms_end (const xcb_randr_list_output_properties_reply_t *R /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = ((xcb_atom_t *) (R + 1)) + (R->num_atoms);
- i.rem = 0;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_list_output_properties_reply_t * xcb_randr_list_output_properties_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_list_output_properties_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_randr_list_output_properties_reply_t *
- **
- *****************************************************************************/
-
-xcb_randr_list_output_properties_reply_t *
-xcb_randr_list_output_properties_reply (xcb_connection_t *c /**< */,
- xcb_randr_list_output_properties_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_randr_list_output_properties_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-int
-xcb_randr_query_output_property_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_randr_query_output_property_reply_t *_aux = (xcb_randr_query_output_property_reply_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_randr_query_output_property_reply_t);
- xcb_tmp += xcb_block_len;
- /* validValues */
- xcb_block_len += _aux->length * sizeof(int32_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(int32_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_query_output_property_cookie_t xcb_randr_query_output_property
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_output_t output
- ** @param xcb_atom_t property
- ** @returns xcb_randr_query_output_property_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_query_output_property_cookie_t
-xcb_randr_query_output_property (xcb_connection_t *c /**< */,
- xcb_randr_output_t output /**< */,
- xcb_atom_t property /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_QUERY_OUTPUT_PROPERTY,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_randr_query_output_property_cookie_t xcb_ret;
- xcb_randr_query_output_property_request_t xcb_out;
-
- xcb_out.output = output;
- xcb_out.property = property;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_query_output_property_cookie_t xcb_randr_query_output_property_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_output_t output
- ** @param xcb_atom_t property
- ** @returns xcb_randr_query_output_property_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_query_output_property_cookie_t
-xcb_randr_query_output_property_unchecked (xcb_connection_t *c /**< */,
- xcb_randr_output_t output /**< */,
- xcb_atom_t property /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_QUERY_OUTPUT_PROPERTY,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_randr_query_output_property_cookie_t xcb_ret;
- xcb_randr_query_output_property_request_t xcb_out;
-
- xcb_out.output = output;
- xcb_out.property = property;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** int32_t * xcb_randr_query_output_property_valid_values
- **
- ** @param const xcb_randr_query_output_property_reply_t *R
- ** @returns int32_t *
- **
- *****************************************************************************/
-
-int32_t *
-xcb_randr_query_output_property_valid_values (const xcb_randr_query_output_property_reply_t *R /**< */)
-{
- return (int32_t *) (R + 1);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_query_output_property_valid_values_length
- **
- ** @param const xcb_randr_query_output_property_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_query_output_property_valid_values_length (const xcb_randr_query_output_property_reply_t *R /**< */)
-{
- return R->length;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_query_output_property_valid_values_end
- **
- ** @param const xcb_randr_query_output_property_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_query_output_property_valid_values_end (const xcb_randr_query_output_property_reply_t *R /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = ((int32_t *) (R + 1)) + (R->length);
- i.rem = 0;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_query_output_property_reply_t * xcb_randr_query_output_property_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_query_output_property_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_randr_query_output_property_reply_t *
- **
- *****************************************************************************/
-
-xcb_randr_query_output_property_reply_t *
-xcb_randr_query_output_property_reply (xcb_connection_t *c /**< */,
- xcb_randr_query_output_property_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_randr_query_output_property_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-int
-xcb_randr_configure_output_property_sizeof (const void *_buffer /**< */,
- uint32_t values_len /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_randr_configure_output_property_request_t);
- xcb_tmp += xcb_block_len;
- /* values */
- xcb_block_len += values_len * sizeof(int32_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(int32_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_randr_configure_output_property_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_output_t output
- ** @param xcb_atom_t property
- ** @param uint8_t pending
- ** @param uint8_t range
- ** @param uint32_t values_len
- ** @param const int32_t *values
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_randr_configure_output_property_checked (xcb_connection_t *c /**< */,
- xcb_randr_output_t output /**< */,
- xcb_atom_t property /**< */,
- uint8_t pending /**< */,
- uint8_t range /**< */,
- uint32_t values_len /**< */,
- const int32_t *values /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_CONFIGURE_OUTPUT_PROPERTY,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_randr_configure_output_property_request_t xcb_out;
-
- xcb_out.output = output;
- xcb_out.property = property;
- xcb_out.pending = pending;
- xcb_out.range = range;
- memset(xcb_out.pad0, 0, 2);
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* int32_t values */
- xcb_parts[4].iov_base = (char *) values;
- xcb_parts[4].iov_len = values_len * sizeof(int32_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_randr_configure_output_property
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_output_t output
- ** @param xcb_atom_t property
- ** @param uint8_t pending
- ** @param uint8_t range
- ** @param uint32_t values_len
- ** @param const int32_t *values
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_randr_configure_output_property (xcb_connection_t *c /**< */,
- xcb_randr_output_t output /**< */,
- xcb_atom_t property /**< */,
- uint8_t pending /**< */,
- uint8_t range /**< */,
- uint32_t values_len /**< */,
- const int32_t *values /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_CONFIGURE_OUTPUT_PROPERTY,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_randr_configure_output_property_request_t xcb_out;
-
- xcb_out.output = output;
- xcb_out.property = property;
- xcb_out.pending = pending;
- xcb_out.range = range;
- memset(xcb_out.pad0, 0, 2);
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* int32_t values */
- xcb_parts[4].iov_base = (char *) values;
- xcb_parts[4].iov_len = values_len * sizeof(int32_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-int
-xcb_randr_change_output_property_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_randr_change_output_property_request_t *_aux = (xcb_randr_change_output_property_request_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_randr_change_output_property_request_t);
- xcb_tmp += xcb_block_len;
- /* data */
- xcb_block_len += ((_aux->num_units * _aux->format) / 8) * sizeof(char);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(char);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_randr_change_output_property_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_output_t output
- ** @param xcb_atom_t property
- ** @param xcb_atom_t type
- ** @param uint8_t format
- ** @param uint8_t mode
- ** @param uint32_t num_units
- ** @param const void *data
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_randr_change_output_property_checked (xcb_connection_t *c /**< */,
- xcb_randr_output_t output /**< */,
- xcb_atom_t property /**< */,
- xcb_atom_t type /**< */,
- uint8_t format /**< */,
- uint8_t mode /**< */,
- uint32_t num_units /**< */,
- const void *data /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_CHANGE_OUTPUT_PROPERTY,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_randr_change_output_property_request_t xcb_out;
-
- xcb_out.output = output;
- xcb_out.property = property;
- xcb_out.type = type;
- xcb_out.format = format;
- xcb_out.mode = mode;
- memset(xcb_out.pad0, 0, 2);
- xcb_out.num_units = num_units;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* void data */
- xcb_parts[4].iov_base = (char *) data;
- xcb_parts[4].iov_len = ((num_units * format) / 8) * sizeof(char);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_randr_change_output_property
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_output_t output
- ** @param xcb_atom_t property
- ** @param xcb_atom_t type
- ** @param uint8_t format
- ** @param uint8_t mode
- ** @param uint32_t num_units
- ** @param const void *data
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_randr_change_output_property (xcb_connection_t *c /**< */,
- xcb_randr_output_t output /**< */,
- xcb_atom_t property /**< */,
- xcb_atom_t type /**< */,
- uint8_t format /**< */,
- uint8_t mode /**< */,
- uint32_t num_units /**< */,
- const void *data /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_CHANGE_OUTPUT_PROPERTY,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_randr_change_output_property_request_t xcb_out;
-
- xcb_out.output = output;
- xcb_out.property = property;
- xcb_out.type = type;
- xcb_out.format = format;
- xcb_out.mode = mode;
- memset(xcb_out.pad0, 0, 2);
- xcb_out.num_units = num_units;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* void data */
- xcb_parts[4].iov_base = (char *) data;
- xcb_parts[4].iov_len = ((num_units * format) / 8) * sizeof(char);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_randr_delete_output_property_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_output_t output
- ** @param xcb_atom_t property
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_randr_delete_output_property_checked (xcb_connection_t *c /**< */,
- xcb_randr_output_t output /**< */,
- xcb_atom_t property /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_DELETE_OUTPUT_PROPERTY,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_randr_delete_output_property_request_t xcb_out;
-
- xcb_out.output = output;
- xcb_out.property = property;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_randr_delete_output_property
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_output_t output
- ** @param xcb_atom_t property
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_randr_delete_output_property (xcb_connection_t *c /**< */,
- xcb_randr_output_t output /**< */,
- xcb_atom_t property /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_DELETE_OUTPUT_PROPERTY,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_randr_delete_output_property_request_t xcb_out;
-
- xcb_out.output = output;
- xcb_out.property = property;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-int
-xcb_randr_get_output_property_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_randr_get_output_property_reply_t *_aux = (xcb_randr_get_output_property_reply_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_randr_get_output_property_reply_t);
- xcb_tmp += xcb_block_len;
- /* data */
- xcb_block_len += (_aux->num_items * (_aux->format / 8)) * sizeof(uint8_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(uint8_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_get_output_property_cookie_t xcb_randr_get_output_property
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_output_t output
- ** @param xcb_atom_t property
- ** @param xcb_atom_t type
- ** @param uint32_t long_offset
- ** @param uint32_t long_length
- ** @param uint8_t _delete
- ** @param uint8_t pending
- ** @returns xcb_randr_get_output_property_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_get_output_property_cookie_t
-xcb_randr_get_output_property (xcb_connection_t *c /**< */,
- xcb_randr_output_t output /**< */,
- xcb_atom_t property /**< */,
- xcb_atom_t type /**< */,
- uint32_t long_offset /**< */,
- uint32_t long_length /**< */,
- uint8_t _delete /**< */,
- uint8_t pending /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_GET_OUTPUT_PROPERTY,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_randr_get_output_property_cookie_t xcb_ret;
- xcb_randr_get_output_property_request_t xcb_out;
-
- xcb_out.output = output;
- xcb_out.property = property;
- xcb_out.type = type;
- xcb_out.long_offset = long_offset;
- xcb_out.long_length = long_length;
- xcb_out._delete = _delete;
- xcb_out.pending = pending;
- memset(xcb_out.pad0, 0, 2);
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_get_output_property_cookie_t xcb_randr_get_output_property_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_output_t output
- ** @param xcb_atom_t property
- ** @param xcb_atom_t type
- ** @param uint32_t long_offset
- ** @param uint32_t long_length
- ** @param uint8_t _delete
- ** @param uint8_t pending
- ** @returns xcb_randr_get_output_property_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_get_output_property_cookie_t
-xcb_randr_get_output_property_unchecked (xcb_connection_t *c /**< */,
- xcb_randr_output_t output /**< */,
- xcb_atom_t property /**< */,
- xcb_atom_t type /**< */,
- uint32_t long_offset /**< */,
- uint32_t long_length /**< */,
- uint8_t _delete /**< */,
- uint8_t pending /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_GET_OUTPUT_PROPERTY,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_randr_get_output_property_cookie_t xcb_ret;
- xcb_randr_get_output_property_request_t xcb_out;
-
- xcb_out.output = output;
- xcb_out.property = property;
- xcb_out.type = type;
- xcb_out.long_offset = long_offset;
- xcb_out.long_length = long_length;
- xcb_out._delete = _delete;
- xcb_out.pending = pending;
- memset(xcb_out.pad0, 0, 2);
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** uint8_t * xcb_randr_get_output_property_data
- **
- ** @param const xcb_randr_get_output_property_reply_t *R
- ** @returns uint8_t *
- **
- *****************************************************************************/
-
-uint8_t *
-xcb_randr_get_output_property_data (const xcb_randr_get_output_property_reply_t *R /**< */)
-{
- return (uint8_t *) (R + 1);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_get_output_property_data_length
- **
- ** @param const xcb_randr_get_output_property_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_get_output_property_data_length (const xcb_randr_get_output_property_reply_t *R /**< */)
-{
- return (R->num_items * (R->format / 8));
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_get_output_property_data_end
- **
- ** @param const xcb_randr_get_output_property_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_get_output_property_data_end (const xcb_randr_get_output_property_reply_t *R /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = ((uint8_t *) (R + 1)) + ((R->num_items * (R->format / 8)));
- i.rem = 0;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_get_output_property_reply_t * xcb_randr_get_output_property_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_get_output_property_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_randr_get_output_property_reply_t *
- **
- *****************************************************************************/
-
-xcb_randr_get_output_property_reply_t *
-xcb_randr_get_output_property_reply (xcb_connection_t *c /**< */,
- xcb_randr_get_output_property_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_randr_get_output_property_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-int
-xcb_randr_create_mode_sizeof (const void *_buffer /**< */,
- uint32_t name_len /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_randr_create_mode_request_t);
- xcb_tmp += xcb_block_len;
- /* name */
- xcb_block_len += name_len * sizeof(char);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(char);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_create_mode_cookie_t xcb_randr_create_mode
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @param xcb_randr_mode_info_t mode_info
- ** @param uint32_t name_len
- ** @param const char *name
- ** @returns xcb_randr_create_mode_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_create_mode_cookie_t
-xcb_randr_create_mode (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */,
- xcb_randr_mode_info_t mode_info /**< */,
- uint32_t name_len /**< */,
- const char *name /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_CREATE_MODE,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[6];
- xcb_randr_create_mode_cookie_t xcb_ret;
- xcb_randr_create_mode_request_t xcb_out;
-
- xcb_out.window = window;
- xcb_out.mode_info = mode_info;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* char name */
- xcb_parts[4].iov_base = (char *) name;
- xcb_parts[4].iov_len = name_len * sizeof(char);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_create_mode_cookie_t xcb_randr_create_mode_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @param xcb_randr_mode_info_t mode_info
- ** @param uint32_t name_len
- ** @param const char *name
- ** @returns xcb_randr_create_mode_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_create_mode_cookie_t
-xcb_randr_create_mode_unchecked (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */,
- xcb_randr_mode_info_t mode_info /**< */,
- uint32_t name_len /**< */,
- const char *name /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_CREATE_MODE,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[6];
- xcb_randr_create_mode_cookie_t xcb_ret;
- xcb_randr_create_mode_request_t xcb_out;
-
- xcb_out.window = window;
- xcb_out.mode_info = mode_info;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* char name */
- xcb_parts[4].iov_base = (char *) name;
- xcb_parts[4].iov_len = name_len * sizeof(char);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_create_mode_reply_t * xcb_randr_create_mode_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_create_mode_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_randr_create_mode_reply_t *
- **
- *****************************************************************************/
-
-xcb_randr_create_mode_reply_t *
-xcb_randr_create_mode_reply (xcb_connection_t *c /**< */,
- xcb_randr_create_mode_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_randr_create_mode_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_randr_destroy_mode_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_mode_t mode
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_randr_destroy_mode_checked (xcb_connection_t *c /**< */,
- xcb_randr_mode_t mode /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_DESTROY_MODE,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_randr_destroy_mode_request_t xcb_out;
-
- xcb_out.mode = mode;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_randr_destroy_mode
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_mode_t mode
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_randr_destroy_mode (xcb_connection_t *c /**< */,
- xcb_randr_mode_t mode /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_DESTROY_MODE,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_randr_destroy_mode_request_t xcb_out;
-
- xcb_out.mode = mode;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_randr_add_output_mode_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_output_t output
- ** @param xcb_randr_mode_t mode
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_randr_add_output_mode_checked (xcb_connection_t *c /**< */,
- xcb_randr_output_t output /**< */,
- xcb_randr_mode_t mode /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_ADD_OUTPUT_MODE,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_randr_add_output_mode_request_t xcb_out;
-
- xcb_out.output = output;
- xcb_out.mode = mode;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_randr_add_output_mode
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_output_t output
- ** @param xcb_randr_mode_t mode
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_randr_add_output_mode (xcb_connection_t *c /**< */,
- xcb_randr_output_t output /**< */,
- xcb_randr_mode_t mode /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_ADD_OUTPUT_MODE,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_randr_add_output_mode_request_t xcb_out;
-
- xcb_out.output = output;
- xcb_out.mode = mode;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_randr_delete_output_mode_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_output_t output
- ** @param xcb_randr_mode_t mode
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_randr_delete_output_mode_checked (xcb_connection_t *c /**< */,
- xcb_randr_output_t output /**< */,
- xcb_randr_mode_t mode /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_DELETE_OUTPUT_MODE,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_randr_delete_output_mode_request_t xcb_out;
-
- xcb_out.output = output;
- xcb_out.mode = mode;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_randr_delete_output_mode
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_output_t output
- ** @param xcb_randr_mode_t mode
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_randr_delete_output_mode (xcb_connection_t *c /**< */,
- xcb_randr_output_t output /**< */,
- xcb_randr_mode_t mode /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_DELETE_OUTPUT_MODE,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_randr_delete_output_mode_request_t xcb_out;
-
- xcb_out.output = output;
- xcb_out.mode = mode;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-int
-xcb_randr_get_crtc_info_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_randr_get_crtc_info_reply_t *_aux = (xcb_randr_get_crtc_info_reply_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_randr_get_crtc_info_reply_t);
- xcb_tmp += xcb_block_len;
- /* outputs */
- xcb_block_len += _aux->num_outputs * sizeof(xcb_randr_output_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_randr_output_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* possible */
- xcb_block_len += _aux->num_possible_outputs * sizeof(xcb_randr_output_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_randr_output_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_get_crtc_info_cookie_t xcb_randr_get_crtc_info
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_crtc_t crtc
- ** @param xcb_timestamp_t config_timestamp
- ** @returns xcb_randr_get_crtc_info_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_get_crtc_info_cookie_t
-xcb_randr_get_crtc_info (xcb_connection_t *c /**< */,
- xcb_randr_crtc_t crtc /**< */,
- xcb_timestamp_t config_timestamp /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_GET_CRTC_INFO,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_randr_get_crtc_info_cookie_t xcb_ret;
- xcb_randr_get_crtc_info_request_t xcb_out;
-
- xcb_out.crtc = crtc;
- xcb_out.config_timestamp = config_timestamp;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_get_crtc_info_cookie_t xcb_randr_get_crtc_info_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_crtc_t crtc
- ** @param xcb_timestamp_t config_timestamp
- ** @returns xcb_randr_get_crtc_info_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_get_crtc_info_cookie_t
-xcb_randr_get_crtc_info_unchecked (xcb_connection_t *c /**< */,
- xcb_randr_crtc_t crtc /**< */,
- xcb_timestamp_t config_timestamp /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_GET_CRTC_INFO,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_randr_get_crtc_info_cookie_t xcb_ret;
- xcb_randr_get_crtc_info_request_t xcb_out;
-
- xcb_out.crtc = crtc;
- xcb_out.config_timestamp = config_timestamp;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_output_t * xcb_randr_get_crtc_info_outputs
- **
- ** @param const xcb_randr_get_crtc_info_reply_t *R
- ** @returns xcb_randr_output_t *
- **
- *****************************************************************************/
-
-xcb_randr_output_t *
-xcb_randr_get_crtc_info_outputs (const xcb_randr_get_crtc_info_reply_t *R /**< */)
-{
- return (xcb_randr_output_t *) (R + 1);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_get_crtc_info_outputs_length
- **
- ** @param const xcb_randr_get_crtc_info_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_get_crtc_info_outputs_length (const xcb_randr_get_crtc_info_reply_t *R /**< */)
-{
- return R->num_outputs;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_get_crtc_info_outputs_end
- **
- ** @param const xcb_randr_get_crtc_info_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_get_crtc_info_outputs_end (const xcb_randr_get_crtc_info_reply_t *R /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = ((xcb_randr_output_t *) (R + 1)) + (R->num_outputs);
- i.rem = 0;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_output_t * xcb_randr_get_crtc_info_possible
- **
- ** @param const xcb_randr_get_crtc_info_reply_t *R
- ** @returns xcb_randr_output_t *
- **
- *****************************************************************************/
-
-xcb_randr_output_t *
-xcb_randr_get_crtc_info_possible (const xcb_randr_get_crtc_info_reply_t *R /**< */)
-{
- xcb_generic_iterator_t prev = xcb_randr_get_crtc_info_outputs_end(R);
- return (xcb_randr_output_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_randr_output_t, prev.index) + 0);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_get_crtc_info_possible_length
- **
- ** @param const xcb_randr_get_crtc_info_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_get_crtc_info_possible_length (const xcb_randr_get_crtc_info_reply_t *R /**< */)
-{
- return R->num_possible_outputs;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_get_crtc_info_possible_end
- **
- ** @param const xcb_randr_get_crtc_info_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_get_crtc_info_possible_end (const xcb_randr_get_crtc_info_reply_t *R /**< */)
-{
- xcb_generic_iterator_t i;
- xcb_generic_iterator_t child = xcb_randr_get_crtc_info_outputs_end(R);
- i.data = ((xcb_randr_output_t *) child.data) + (R->num_possible_outputs);
- i.rem = 0;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_get_crtc_info_reply_t * xcb_randr_get_crtc_info_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_get_crtc_info_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_randr_get_crtc_info_reply_t *
- **
- *****************************************************************************/
-
-xcb_randr_get_crtc_info_reply_t *
-xcb_randr_get_crtc_info_reply (xcb_connection_t *c /**< */,
- xcb_randr_get_crtc_info_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_randr_get_crtc_info_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-int
-xcb_randr_set_crtc_config_sizeof (const void *_buffer /**< */,
- uint32_t outputs_len /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_randr_set_crtc_config_request_t);
- xcb_tmp += xcb_block_len;
- /* outputs */
- xcb_block_len += outputs_len * sizeof(xcb_randr_output_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_randr_output_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_set_crtc_config_cookie_t xcb_randr_set_crtc_config
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_crtc_t crtc
- ** @param xcb_timestamp_t timestamp
- ** @param xcb_timestamp_t config_timestamp
- ** @param int16_t x
- ** @param int16_t y
- ** @param xcb_randr_mode_t mode
- ** @param uint16_t rotation
- ** @param uint32_t outputs_len
- ** @param const xcb_randr_output_t *outputs
- ** @returns xcb_randr_set_crtc_config_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_set_crtc_config_cookie_t
-xcb_randr_set_crtc_config (xcb_connection_t *c /**< */,
- xcb_randr_crtc_t crtc /**< */,
- xcb_timestamp_t timestamp /**< */,
- xcb_timestamp_t config_timestamp /**< */,
- int16_t x /**< */,
- int16_t y /**< */,
- xcb_randr_mode_t mode /**< */,
- uint16_t rotation /**< */,
- uint32_t outputs_len /**< */,
- const xcb_randr_output_t *outputs /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_SET_CRTC_CONFIG,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[6];
- xcb_randr_set_crtc_config_cookie_t xcb_ret;
- xcb_randr_set_crtc_config_request_t xcb_out;
-
- xcb_out.crtc = crtc;
- xcb_out.timestamp = timestamp;
- xcb_out.config_timestamp = config_timestamp;
- xcb_out.x = x;
- xcb_out.y = y;
- xcb_out.mode = mode;
- xcb_out.rotation = rotation;
- memset(xcb_out.pad0, 0, 2);
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_randr_output_t outputs */
- xcb_parts[4].iov_base = (char *) outputs;
- xcb_parts[4].iov_len = outputs_len * sizeof(xcb_timestamp_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_set_crtc_config_cookie_t xcb_randr_set_crtc_config_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_crtc_t crtc
- ** @param xcb_timestamp_t timestamp
- ** @param xcb_timestamp_t config_timestamp
- ** @param int16_t x
- ** @param int16_t y
- ** @param xcb_randr_mode_t mode
- ** @param uint16_t rotation
- ** @param uint32_t outputs_len
- ** @param const xcb_randr_output_t *outputs
- ** @returns xcb_randr_set_crtc_config_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_set_crtc_config_cookie_t
-xcb_randr_set_crtc_config_unchecked (xcb_connection_t *c /**< */,
- xcb_randr_crtc_t crtc /**< */,
- xcb_timestamp_t timestamp /**< */,
- xcb_timestamp_t config_timestamp /**< */,
- int16_t x /**< */,
- int16_t y /**< */,
- xcb_randr_mode_t mode /**< */,
- uint16_t rotation /**< */,
- uint32_t outputs_len /**< */,
- const xcb_randr_output_t *outputs /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_SET_CRTC_CONFIG,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[6];
- xcb_randr_set_crtc_config_cookie_t xcb_ret;
- xcb_randr_set_crtc_config_request_t xcb_out;
-
- xcb_out.crtc = crtc;
- xcb_out.timestamp = timestamp;
- xcb_out.config_timestamp = config_timestamp;
- xcb_out.x = x;
- xcb_out.y = y;
- xcb_out.mode = mode;
- xcb_out.rotation = rotation;
- memset(xcb_out.pad0, 0, 2);
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_randr_output_t outputs */
- xcb_parts[4].iov_base = (char *) outputs;
- xcb_parts[4].iov_len = outputs_len * sizeof(xcb_timestamp_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_set_crtc_config_reply_t * xcb_randr_set_crtc_config_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_set_crtc_config_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_randr_set_crtc_config_reply_t *
- **
- *****************************************************************************/
-
-xcb_randr_set_crtc_config_reply_t *
-xcb_randr_set_crtc_config_reply (xcb_connection_t *c /**< */,
- xcb_randr_set_crtc_config_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_randr_set_crtc_config_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_get_crtc_gamma_size_cookie_t xcb_randr_get_crtc_gamma_size
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_crtc_t crtc
- ** @returns xcb_randr_get_crtc_gamma_size_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_get_crtc_gamma_size_cookie_t
-xcb_randr_get_crtc_gamma_size (xcb_connection_t *c /**< */,
- xcb_randr_crtc_t crtc /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_GET_CRTC_GAMMA_SIZE,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_randr_get_crtc_gamma_size_cookie_t xcb_ret;
- xcb_randr_get_crtc_gamma_size_request_t xcb_out;
-
- xcb_out.crtc = crtc;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_get_crtc_gamma_size_cookie_t xcb_randr_get_crtc_gamma_size_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_crtc_t crtc
- ** @returns xcb_randr_get_crtc_gamma_size_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_get_crtc_gamma_size_cookie_t
-xcb_randr_get_crtc_gamma_size_unchecked (xcb_connection_t *c /**< */,
- xcb_randr_crtc_t crtc /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_GET_CRTC_GAMMA_SIZE,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_randr_get_crtc_gamma_size_cookie_t xcb_ret;
- xcb_randr_get_crtc_gamma_size_request_t xcb_out;
-
- xcb_out.crtc = crtc;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_get_crtc_gamma_size_reply_t * xcb_randr_get_crtc_gamma_size_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_get_crtc_gamma_size_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_randr_get_crtc_gamma_size_reply_t *
- **
- *****************************************************************************/
-
-xcb_randr_get_crtc_gamma_size_reply_t *
-xcb_randr_get_crtc_gamma_size_reply (xcb_connection_t *c /**< */,
- xcb_randr_get_crtc_gamma_size_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_randr_get_crtc_gamma_size_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-int
-xcb_randr_get_crtc_gamma_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_randr_get_crtc_gamma_reply_t *_aux = (xcb_randr_get_crtc_gamma_reply_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_randr_get_crtc_gamma_reply_t);
- xcb_tmp += xcb_block_len;
- /* red */
- xcb_block_len += _aux->size * sizeof(uint16_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(uint16_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* green */
- xcb_block_len += _aux->size * sizeof(uint16_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(uint16_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* blue */
- xcb_block_len += _aux->size * sizeof(uint16_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(uint16_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_get_crtc_gamma_cookie_t xcb_randr_get_crtc_gamma
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_crtc_t crtc
- ** @returns xcb_randr_get_crtc_gamma_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_get_crtc_gamma_cookie_t
-xcb_randr_get_crtc_gamma (xcb_connection_t *c /**< */,
- xcb_randr_crtc_t crtc /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_GET_CRTC_GAMMA,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_randr_get_crtc_gamma_cookie_t xcb_ret;
- xcb_randr_get_crtc_gamma_request_t xcb_out;
-
- xcb_out.crtc = crtc;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_get_crtc_gamma_cookie_t xcb_randr_get_crtc_gamma_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_crtc_t crtc
- ** @returns xcb_randr_get_crtc_gamma_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_get_crtc_gamma_cookie_t
-xcb_randr_get_crtc_gamma_unchecked (xcb_connection_t *c /**< */,
- xcb_randr_crtc_t crtc /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_GET_CRTC_GAMMA,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_randr_get_crtc_gamma_cookie_t xcb_ret;
- xcb_randr_get_crtc_gamma_request_t xcb_out;
-
- xcb_out.crtc = crtc;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** uint16_t * xcb_randr_get_crtc_gamma_red
- **
- ** @param const xcb_randr_get_crtc_gamma_reply_t *R
- ** @returns uint16_t *
- **
- *****************************************************************************/
-
-uint16_t *
-xcb_randr_get_crtc_gamma_red (const xcb_randr_get_crtc_gamma_reply_t *R /**< */)
-{
- return (uint16_t *) (R + 1);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_get_crtc_gamma_red_length
- **
- ** @param const xcb_randr_get_crtc_gamma_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_get_crtc_gamma_red_length (const xcb_randr_get_crtc_gamma_reply_t *R /**< */)
-{
- return R->size;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_get_crtc_gamma_red_end
- **
- ** @param const xcb_randr_get_crtc_gamma_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_get_crtc_gamma_red_end (const xcb_randr_get_crtc_gamma_reply_t *R /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = ((uint16_t *) (R + 1)) + (R->size);
- i.rem = 0;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** uint16_t * xcb_randr_get_crtc_gamma_green
- **
- ** @param const xcb_randr_get_crtc_gamma_reply_t *R
- ** @returns uint16_t *
- **
- *****************************************************************************/
-
-uint16_t *
-xcb_randr_get_crtc_gamma_green (const xcb_randr_get_crtc_gamma_reply_t *R /**< */)
-{
- xcb_generic_iterator_t prev = xcb_randr_get_crtc_gamma_red_end(R);
- return (uint16_t *) ((char *) prev.data + XCB_TYPE_PAD(uint16_t, prev.index) + 0);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_get_crtc_gamma_green_length
- **
- ** @param const xcb_randr_get_crtc_gamma_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_get_crtc_gamma_green_length (const xcb_randr_get_crtc_gamma_reply_t *R /**< */)
-{
- return R->size;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_get_crtc_gamma_green_end
- **
- ** @param const xcb_randr_get_crtc_gamma_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_get_crtc_gamma_green_end (const xcb_randr_get_crtc_gamma_reply_t *R /**< */)
-{
- xcb_generic_iterator_t i;
- xcb_generic_iterator_t child = xcb_randr_get_crtc_gamma_red_end(R);
- i.data = ((uint16_t *) child.data) + (R->size);
- i.rem = 0;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** uint16_t * xcb_randr_get_crtc_gamma_blue
- **
- ** @param const xcb_randr_get_crtc_gamma_reply_t *R
- ** @returns uint16_t *
- **
- *****************************************************************************/
-
-uint16_t *
-xcb_randr_get_crtc_gamma_blue (const xcb_randr_get_crtc_gamma_reply_t *R /**< */)
-{
- xcb_generic_iterator_t prev = xcb_randr_get_crtc_gamma_green_end(R);
- return (uint16_t *) ((char *) prev.data + XCB_TYPE_PAD(uint16_t, prev.index) + 0);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_get_crtc_gamma_blue_length
- **
- ** @param const xcb_randr_get_crtc_gamma_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_get_crtc_gamma_blue_length (const xcb_randr_get_crtc_gamma_reply_t *R /**< */)
-{
- return R->size;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_get_crtc_gamma_blue_end
- **
- ** @param const xcb_randr_get_crtc_gamma_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_get_crtc_gamma_blue_end (const xcb_randr_get_crtc_gamma_reply_t *R /**< */)
-{
- xcb_generic_iterator_t i;
- xcb_generic_iterator_t child = xcb_randr_get_crtc_gamma_green_end(R);
- i.data = ((uint16_t *) child.data) + (R->size);
- i.rem = 0;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_get_crtc_gamma_reply_t * xcb_randr_get_crtc_gamma_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_get_crtc_gamma_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_randr_get_crtc_gamma_reply_t *
- **
- *****************************************************************************/
-
-xcb_randr_get_crtc_gamma_reply_t *
-xcb_randr_get_crtc_gamma_reply (xcb_connection_t *c /**< */,
- xcb_randr_get_crtc_gamma_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_randr_get_crtc_gamma_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-int
-xcb_randr_set_crtc_gamma_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_randr_set_crtc_gamma_request_t *_aux = (xcb_randr_set_crtc_gamma_request_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_randr_set_crtc_gamma_request_t);
- xcb_tmp += xcb_block_len;
- /* red */
- xcb_block_len += _aux->size * sizeof(uint16_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(uint16_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* green */
- xcb_block_len += _aux->size * sizeof(uint16_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(uint16_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* blue */
- xcb_block_len += _aux->size * sizeof(uint16_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(uint16_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_randr_set_crtc_gamma_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_crtc_t crtc
- ** @param uint16_t size
- ** @param const uint16_t *red
- ** @param const uint16_t *green
- ** @param const uint16_t *blue
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_randr_set_crtc_gamma_checked (xcb_connection_t *c /**< */,
- xcb_randr_crtc_t crtc /**< */,
- uint16_t size /**< */,
- const uint16_t *red /**< */,
- const uint16_t *green /**< */,
- const uint16_t *blue /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 8,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_SET_CRTC_GAMMA,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[10];
- xcb_void_cookie_t xcb_ret;
- xcb_randr_set_crtc_gamma_request_t xcb_out;
-
- xcb_out.crtc = crtc;
- xcb_out.size = size;
- memset(xcb_out.pad0, 0, 2);
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* uint16_t red */
- xcb_parts[4].iov_base = (char *) red;
- xcb_parts[4].iov_len = size * sizeof(uint16_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
- /* uint16_t green */
- xcb_parts[6].iov_base = (char *) green;
- xcb_parts[6].iov_len = size * sizeof(uint16_t);
- xcb_parts[7].iov_base = 0;
- xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3;
- /* uint16_t blue */
- xcb_parts[8].iov_base = (char *) blue;
- xcb_parts[8].iov_len = size * sizeof(uint16_t);
- xcb_parts[9].iov_base = 0;
- xcb_parts[9].iov_len = -xcb_parts[8].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_randr_set_crtc_gamma
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_crtc_t crtc
- ** @param uint16_t size
- ** @param const uint16_t *red
- ** @param const uint16_t *green
- ** @param const uint16_t *blue
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_randr_set_crtc_gamma (xcb_connection_t *c /**< */,
- xcb_randr_crtc_t crtc /**< */,
- uint16_t size /**< */,
- const uint16_t *red /**< */,
- const uint16_t *green /**< */,
- const uint16_t *blue /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 8,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_SET_CRTC_GAMMA,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[10];
- xcb_void_cookie_t xcb_ret;
- xcb_randr_set_crtc_gamma_request_t xcb_out;
-
- xcb_out.crtc = crtc;
- xcb_out.size = size;
- memset(xcb_out.pad0, 0, 2);
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* uint16_t red */
- xcb_parts[4].iov_base = (char *) red;
- xcb_parts[4].iov_len = size * sizeof(uint16_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
- /* uint16_t green */
- xcb_parts[6].iov_base = (char *) green;
- xcb_parts[6].iov_len = size * sizeof(uint16_t);
- xcb_parts[7].iov_base = 0;
- xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3;
- /* uint16_t blue */
- xcb_parts[8].iov_base = (char *) blue;
- xcb_parts[8].iov_len = size * sizeof(uint16_t);
- xcb_parts[9].iov_base = 0;
- xcb_parts[9].iov_len = -xcb_parts[8].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-int
-xcb_randr_get_screen_resources_current_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_randr_get_screen_resources_current_reply_t *_aux = (xcb_randr_get_screen_resources_current_reply_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_randr_get_screen_resources_current_reply_t);
- xcb_tmp += xcb_block_len;
- /* crtcs */
- xcb_block_len += _aux->num_crtcs * sizeof(uint32_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_randr_crtc_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* outputs */
- xcb_block_len += _aux->num_outputs * sizeof(uint32_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_randr_output_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* modes */
- xcb_block_len += _aux->num_modes * sizeof(xcb_randr_mode_info_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_randr_mode_info_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* names */
- xcb_block_len += _aux->names_len * sizeof(uint8_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(uint8_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_get_screen_resources_current_cookie_t xcb_randr_get_screen_resources_current
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @returns xcb_randr_get_screen_resources_current_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_get_screen_resources_current_cookie_t
-xcb_randr_get_screen_resources_current (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_GET_SCREEN_RESOURCES_CURRENT,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_randr_get_screen_resources_current_cookie_t xcb_ret;
- xcb_randr_get_screen_resources_current_request_t xcb_out;
-
- xcb_out.window = window;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_get_screen_resources_current_cookie_t xcb_randr_get_screen_resources_current_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @returns xcb_randr_get_screen_resources_current_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_get_screen_resources_current_cookie_t
-xcb_randr_get_screen_resources_current_unchecked (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_GET_SCREEN_RESOURCES_CURRENT,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_randr_get_screen_resources_current_cookie_t xcb_ret;
- xcb_randr_get_screen_resources_current_request_t xcb_out;
-
- xcb_out.window = window;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_crtc_t * xcb_randr_get_screen_resources_current_crtcs
- **
- ** @param const xcb_randr_get_screen_resources_current_reply_t *R
- ** @returns xcb_randr_crtc_t *
- **
- *****************************************************************************/
-
-xcb_randr_crtc_t *
-xcb_randr_get_screen_resources_current_crtcs (const xcb_randr_get_screen_resources_current_reply_t *R /**< */)
-{
- return (xcb_randr_crtc_t *) (R + 1);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_get_screen_resources_current_crtcs_length
- **
- ** @param const xcb_randr_get_screen_resources_current_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_get_screen_resources_current_crtcs_length (const xcb_randr_get_screen_resources_current_reply_t *R /**< */)
-{
- return R->num_crtcs;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_get_screen_resources_current_crtcs_end
- **
- ** @param const xcb_randr_get_screen_resources_current_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_get_screen_resources_current_crtcs_end (const xcb_randr_get_screen_resources_current_reply_t *R /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = ((xcb_randr_crtc_t *) (R + 1)) + (R->num_crtcs);
- i.rem = 0;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_output_t * xcb_randr_get_screen_resources_current_outputs
- **
- ** @param const xcb_randr_get_screen_resources_current_reply_t *R
- ** @returns xcb_randr_output_t *
- **
- *****************************************************************************/
-
-xcb_randr_output_t *
-xcb_randr_get_screen_resources_current_outputs (const xcb_randr_get_screen_resources_current_reply_t *R /**< */)
-{
- xcb_generic_iterator_t prev = xcb_randr_get_screen_resources_current_crtcs_end(R);
- return (xcb_randr_output_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_randr_output_t, prev.index) + 0);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_get_screen_resources_current_outputs_length
- **
- ** @param const xcb_randr_get_screen_resources_current_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_get_screen_resources_current_outputs_length (const xcb_randr_get_screen_resources_current_reply_t *R /**< */)
-{
- return R->num_outputs;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_get_screen_resources_current_outputs_end
- **
- ** @param const xcb_randr_get_screen_resources_current_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_get_screen_resources_current_outputs_end (const xcb_randr_get_screen_resources_current_reply_t *R /**< */)
-{
- xcb_generic_iterator_t i;
- xcb_generic_iterator_t child = xcb_randr_get_screen_resources_current_crtcs_end(R);
- i.data = ((xcb_randr_output_t *) child.data) + (R->num_outputs);
- i.rem = 0;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_mode_info_t * xcb_randr_get_screen_resources_current_modes
- **
- ** @param const xcb_randr_get_screen_resources_current_reply_t *R
- ** @returns xcb_randr_mode_info_t *
- **
- *****************************************************************************/
-
-xcb_randr_mode_info_t *
-xcb_randr_get_screen_resources_current_modes (const xcb_randr_get_screen_resources_current_reply_t *R /**< */)
-{
- xcb_generic_iterator_t prev = xcb_randr_get_screen_resources_current_outputs_end(R);
- return (xcb_randr_mode_info_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_randr_mode_info_t, prev.index) + 0);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_get_screen_resources_current_modes_length
- **
- ** @param const xcb_randr_get_screen_resources_current_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_get_screen_resources_current_modes_length (const xcb_randr_get_screen_resources_current_reply_t *R /**< */)
-{
- return R->num_modes;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_mode_info_iterator_t xcb_randr_get_screen_resources_current_modes_iterator
- **
- ** @param const xcb_randr_get_screen_resources_current_reply_t *R
- ** @returns xcb_randr_mode_info_iterator_t
- **
- *****************************************************************************/
-
-xcb_randr_mode_info_iterator_t
-xcb_randr_get_screen_resources_current_modes_iterator (const xcb_randr_get_screen_resources_current_reply_t *R /**< */)
-{
- xcb_randr_mode_info_iterator_t i;
- xcb_generic_iterator_t prev = xcb_randr_get_screen_resources_current_outputs_end(R);
- i.data = (xcb_randr_mode_info_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_randr_mode_info_t, prev.index));
- i.rem = R->num_modes;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** uint8_t * xcb_randr_get_screen_resources_current_names
- **
- ** @param const xcb_randr_get_screen_resources_current_reply_t *R
- ** @returns uint8_t *
- **
- *****************************************************************************/
-
-uint8_t *
-xcb_randr_get_screen_resources_current_names (const xcb_randr_get_screen_resources_current_reply_t *R /**< */)
-{
- xcb_generic_iterator_t prev = xcb_randr_mode_info_end(xcb_randr_get_screen_resources_current_modes_iterator(R));
- return (uint8_t *) ((char *) prev.data + XCB_TYPE_PAD(uint8_t, prev.index) + 0);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_get_screen_resources_current_names_length
- **
- ** @param const xcb_randr_get_screen_resources_current_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_get_screen_resources_current_names_length (const xcb_randr_get_screen_resources_current_reply_t *R /**< */)
-{
- return R->names_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_get_screen_resources_current_names_end
- **
- ** @param const xcb_randr_get_screen_resources_current_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_get_screen_resources_current_names_end (const xcb_randr_get_screen_resources_current_reply_t *R /**< */)
-{
- xcb_generic_iterator_t i;
- xcb_generic_iterator_t child = xcb_randr_mode_info_end(xcb_randr_get_screen_resources_current_modes_iterator(R));
- i.data = ((uint8_t *) child.data) + (R->names_len);
- i.rem = 0;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_get_screen_resources_current_reply_t * xcb_randr_get_screen_resources_current_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_get_screen_resources_current_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_randr_get_screen_resources_current_reply_t *
- **
- *****************************************************************************/
-
-xcb_randr_get_screen_resources_current_reply_t *
-xcb_randr_get_screen_resources_current_reply (xcb_connection_t *c /**< */,
- xcb_randr_get_screen_resources_current_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_randr_get_screen_resources_current_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-int
-xcb_randr_set_crtc_transform_sizeof (const void *_buffer /**< */,
- uint32_t filter_params_len /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_randr_set_crtc_transform_request_t *_aux = (xcb_randr_set_crtc_transform_request_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_randr_set_crtc_transform_request_t);
- xcb_tmp += xcb_block_len;
- /* filter_name */
- xcb_block_len += _aux->filter_len * sizeof(char);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(char);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* filter_params */
- xcb_block_len += filter_params_len * sizeof(xcb_render_fixed_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_render_fixed_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_randr_set_crtc_transform_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_crtc_t crtc
- ** @param xcb_render_transform_t transform
- ** @param uint16_t filter_len
- ** @param const char *filter_name
- ** @param uint32_t filter_params_len
- ** @param const xcb_render_fixed_t *filter_params
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_randr_set_crtc_transform_checked (xcb_connection_t *c /**< */,
- xcb_randr_crtc_t crtc /**< */,
- xcb_render_transform_t transform /**< */,
- uint16_t filter_len /**< */,
- const char *filter_name /**< */,
- uint32_t filter_params_len /**< */,
- const xcb_render_fixed_t *filter_params /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 6,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_SET_CRTC_TRANSFORM,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[8];
- xcb_void_cookie_t xcb_ret;
- xcb_randr_set_crtc_transform_request_t xcb_out;
-
- xcb_out.crtc = crtc;
- xcb_out.transform = transform;
- xcb_out.filter_len = filter_len;
- memset(xcb_out.pad0, 0, 2);
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* char filter_name */
- xcb_parts[4].iov_base = (char *) filter_name;
- xcb_parts[4].iov_len = filter_len * sizeof(char);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
- /* xcb_render_fixed_t filter_params */
- xcb_parts[6].iov_base = (char *) filter_params;
- xcb_parts[6].iov_len = filter_params_len * sizeof(xcb_render_fixed_t);
- xcb_parts[7].iov_base = 0;
- xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_randr_set_crtc_transform
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_crtc_t crtc
- ** @param xcb_render_transform_t transform
- ** @param uint16_t filter_len
- ** @param const char *filter_name
- ** @param uint32_t filter_params_len
- ** @param const xcb_render_fixed_t *filter_params
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_randr_set_crtc_transform (xcb_connection_t *c /**< */,
- xcb_randr_crtc_t crtc /**< */,
- xcb_render_transform_t transform /**< */,
- uint16_t filter_len /**< */,
- const char *filter_name /**< */,
- uint32_t filter_params_len /**< */,
- const xcb_render_fixed_t *filter_params /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 6,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_SET_CRTC_TRANSFORM,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[8];
- xcb_void_cookie_t xcb_ret;
- xcb_randr_set_crtc_transform_request_t xcb_out;
-
- xcb_out.crtc = crtc;
- xcb_out.transform = transform;
- xcb_out.filter_len = filter_len;
- memset(xcb_out.pad0, 0, 2);
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* char filter_name */
- xcb_parts[4].iov_base = (char *) filter_name;
- xcb_parts[4].iov_len = filter_len * sizeof(char);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
- /* xcb_render_fixed_t filter_params */
- xcb_parts[6].iov_base = (char *) filter_params;
- xcb_parts[6].iov_len = filter_params_len * sizeof(xcb_render_fixed_t);
- xcb_parts[7].iov_base = 0;
- xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-int
-xcb_randr_get_crtc_transform_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_randr_get_crtc_transform_reply_t *_aux = (xcb_randr_get_crtc_transform_reply_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_randr_get_crtc_transform_reply_t);
- xcb_tmp += xcb_block_len;
- /* pending_filter_name */
- xcb_block_len += _aux->pending_len * sizeof(char);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(char);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* pending_params */
- xcb_block_len += _aux->pending_nparams * sizeof(xcb_render_fixed_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_render_fixed_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* current_filter_name */
- xcb_block_len += _aux->current_len * sizeof(char);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(char);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* current_params */
- xcb_block_len += _aux->current_nparams * sizeof(xcb_render_fixed_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_render_fixed_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_get_crtc_transform_cookie_t xcb_randr_get_crtc_transform
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_crtc_t crtc
- ** @returns xcb_randr_get_crtc_transform_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_get_crtc_transform_cookie_t
-xcb_randr_get_crtc_transform (xcb_connection_t *c /**< */,
- xcb_randr_crtc_t crtc /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_GET_CRTC_TRANSFORM,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_randr_get_crtc_transform_cookie_t xcb_ret;
- xcb_randr_get_crtc_transform_request_t xcb_out;
-
- xcb_out.crtc = crtc;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_get_crtc_transform_cookie_t xcb_randr_get_crtc_transform_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_crtc_t crtc
- ** @returns xcb_randr_get_crtc_transform_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_get_crtc_transform_cookie_t
-xcb_randr_get_crtc_transform_unchecked (xcb_connection_t *c /**< */,
- xcb_randr_crtc_t crtc /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_GET_CRTC_TRANSFORM,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_randr_get_crtc_transform_cookie_t xcb_ret;
- xcb_randr_get_crtc_transform_request_t xcb_out;
-
- xcb_out.crtc = crtc;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** char * xcb_randr_get_crtc_transform_pending_filter_name
- **
- ** @param const xcb_randr_get_crtc_transform_reply_t *R
- ** @returns char *
- **
- *****************************************************************************/
-
-char *
-xcb_randr_get_crtc_transform_pending_filter_name (const xcb_randr_get_crtc_transform_reply_t *R /**< */)
-{
- return (char *) (R + 1);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_get_crtc_transform_pending_filter_name_length
- **
- ** @param const xcb_randr_get_crtc_transform_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_get_crtc_transform_pending_filter_name_length (const xcb_randr_get_crtc_transform_reply_t *R /**< */)
-{
- return R->pending_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_get_crtc_transform_pending_filter_name_end
- **
- ** @param const xcb_randr_get_crtc_transform_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_get_crtc_transform_pending_filter_name_end (const xcb_randr_get_crtc_transform_reply_t *R /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = ((char *) (R + 1)) + (R->pending_len);
- i.rem = 0;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_render_fixed_t * xcb_randr_get_crtc_transform_pending_params
- **
- ** @param const xcb_randr_get_crtc_transform_reply_t *R
- ** @returns xcb_render_fixed_t *
- **
- *****************************************************************************/
-
-xcb_render_fixed_t *
-xcb_randr_get_crtc_transform_pending_params (const xcb_randr_get_crtc_transform_reply_t *R /**< */)
-{
- xcb_generic_iterator_t prev = xcb_randr_get_crtc_transform_pending_filter_name_end(R);
- return (xcb_render_fixed_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_render_fixed_t, prev.index) + 0);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_get_crtc_transform_pending_params_length
- **
- ** @param const xcb_randr_get_crtc_transform_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_get_crtc_transform_pending_params_length (const xcb_randr_get_crtc_transform_reply_t *R /**< */)
-{
- return R->pending_nparams;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_get_crtc_transform_pending_params_end
- **
- ** @param const xcb_randr_get_crtc_transform_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_get_crtc_transform_pending_params_end (const xcb_randr_get_crtc_transform_reply_t *R /**< */)
-{
- xcb_generic_iterator_t i;
- xcb_generic_iterator_t child = xcb_randr_get_crtc_transform_pending_filter_name_end(R);
- i.data = ((xcb_render_fixed_t *) child.data) + (R->pending_nparams);
- i.rem = 0;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** char * xcb_randr_get_crtc_transform_current_filter_name
- **
- ** @param const xcb_randr_get_crtc_transform_reply_t *R
- ** @returns char *
- **
- *****************************************************************************/
-
-char *
-xcb_randr_get_crtc_transform_current_filter_name (const xcb_randr_get_crtc_transform_reply_t *R /**< */)
-{
- xcb_generic_iterator_t prev = xcb_randr_get_crtc_transform_pending_params_end(R);
- return (char *) ((char *) prev.data + XCB_TYPE_PAD(char, prev.index) + 0);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_get_crtc_transform_current_filter_name_length
- **
- ** @param const xcb_randr_get_crtc_transform_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_get_crtc_transform_current_filter_name_length (const xcb_randr_get_crtc_transform_reply_t *R /**< */)
-{
- return R->current_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_get_crtc_transform_current_filter_name_end
- **
- ** @param const xcb_randr_get_crtc_transform_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_get_crtc_transform_current_filter_name_end (const xcb_randr_get_crtc_transform_reply_t *R /**< */)
-{
- xcb_generic_iterator_t i;
- xcb_generic_iterator_t child = xcb_randr_get_crtc_transform_pending_params_end(R);
- i.data = ((char *) child.data) + (R->current_len);
- i.rem = 0;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_render_fixed_t * xcb_randr_get_crtc_transform_current_params
- **
- ** @param const xcb_randr_get_crtc_transform_reply_t *R
- ** @returns xcb_render_fixed_t *
- **
- *****************************************************************************/
-
-xcb_render_fixed_t *
-xcb_randr_get_crtc_transform_current_params (const xcb_randr_get_crtc_transform_reply_t *R /**< */)
-{
- xcb_generic_iterator_t prev = xcb_randr_get_crtc_transform_current_filter_name_end(R);
- return (xcb_render_fixed_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_render_fixed_t, prev.index) + 0);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_randr_get_crtc_transform_current_params_length
- **
- ** @param const xcb_randr_get_crtc_transform_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_randr_get_crtc_transform_current_params_length (const xcb_randr_get_crtc_transform_reply_t *R /**< */)
-{
- return R->current_nparams;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_get_crtc_transform_current_params_end
- **
- ** @param const xcb_randr_get_crtc_transform_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_get_crtc_transform_current_params_end (const xcb_randr_get_crtc_transform_reply_t *R /**< */)
-{
- xcb_generic_iterator_t i;
- xcb_generic_iterator_t child = xcb_randr_get_crtc_transform_current_filter_name_end(R);
- i.data = ((xcb_render_fixed_t *) child.data) + (R->current_nparams);
- i.rem = 0;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_get_crtc_transform_reply_t * xcb_randr_get_crtc_transform_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_get_crtc_transform_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_randr_get_crtc_transform_reply_t *
- **
- *****************************************************************************/
-
-xcb_randr_get_crtc_transform_reply_t *
-xcb_randr_get_crtc_transform_reply (xcb_connection_t *c /**< */,
- xcb_randr_get_crtc_transform_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_randr_get_crtc_transform_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_get_panning_cookie_t xcb_randr_get_panning
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_crtc_t crtc
- ** @returns xcb_randr_get_panning_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_get_panning_cookie_t
-xcb_randr_get_panning (xcb_connection_t *c /**< */,
- xcb_randr_crtc_t crtc /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_GET_PANNING,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_randr_get_panning_cookie_t xcb_ret;
- xcb_randr_get_panning_request_t xcb_out;
-
- xcb_out.crtc = crtc;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_get_panning_cookie_t xcb_randr_get_panning_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_crtc_t crtc
- ** @returns xcb_randr_get_panning_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_get_panning_cookie_t
-xcb_randr_get_panning_unchecked (xcb_connection_t *c /**< */,
- xcb_randr_crtc_t crtc /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_GET_PANNING,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_randr_get_panning_cookie_t xcb_ret;
- xcb_randr_get_panning_request_t xcb_out;
-
- xcb_out.crtc = crtc;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_get_panning_reply_t * xcb_randr_get_panning_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_get_panning_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_randr_get_panning_reply_t *
- **
- *****************************************************************************/
-
-xcb_randr_get_panning_reply_t *
-xcb_randr_get_panning_reply (xcb_connection_t *c /**< */,
- xcb_randr_get_panning_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_randr_get_panning_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_set_panning_cookie_t xcb_randr_set_panning
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_crtc_t crtc
- ** @param xcb_timestamp_t timestamp
- ** @param uint16_t left
- ** @param uint16_t top
- ** @param uint16_t width
- ** @param uint16_t height
- ** @param uint16_t track_left
- ** @param uint16_t track_top
- ** @param uint16_t track_width
- ** @param uint16_t track_height
- ** @param int16_t border_left
- ** @param int16_t border_top
- ** @param int16_t border_right
- ** @param int16_t border_bottom
- ** @returns xcb_randr_set_panning_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_set_panning_cookie_t
-xcb_randr_set_panning (xcb_connection_t *c /**< */,
- xcb_randr_crtc_t crtc /**< */,
- xcb_timestamp_t timestamp /**< */,
- uint16_t left /**< */,
- uint16_t top /**< */,
- uint16_t width /**< */,
- uint16_t height /**< */,
- uint16_t track_left /**< */,
- uint16_t track_top /**< */,
- uint16_t track_width /**< */,
- uint16_t track_height /**< */,
- int16_t border_left /**< */,
- int16_t border_top /**< */,
- int16_t border_right /**< */,
- int16_t border_bottom /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_SET_PANNING,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_randr_set_panning_cookie_t xcb_ret;
- xcb_randr_set_panning_request_t xcb_out;
-
- xcb_out.crtc = crtc;
- xcb_out.timestamp = timestamp;
- xcb_out.left = left;
- xcb_out.top = top;
- xcb_out.width = width;
- xcb_out.height = height;
- xcb_out.track_left = track_left;
- xcb_out.track_top = track_top;
- xcb_out.track_width = track_width;
- xcb_out.track_height = track_height;
- xcb_out.border_left = border_left;
- xcb_out.border_top = border_top;
- xcb_out.border_right = border_right;
- xcb_out.border_bottom = border_bottom;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_set_panning_cookie_t xcb_randr_set_panning_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_crtc_t crtc
- ** @param xcb_timestamp_t timestamp
- ** @param uint16_t left
- ** @param uint16_t top
- ** @param uint16_t width
- ** @param uint16_t height
- ** @param uint16_t track_left
- ** @param uint16_t track_top
- ** @param uint16_t track_width
- ** @param uint16_t track_height
- ** @param int16_t border_left
- ** @param int16_t border_top
- ** @param int16_t border_right
- ** @param int16_t border_bottom
- ** @returns xcb_randr_set_panning_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_set_panning_cookie_t
-xcb_randr_set_panning_unchecked (xcb_connection_t *c /**< */,
- xcb_randr_crtc_t crtc /**< */,
- xcb_timestamp_t timestamp /**< */,
- uint16_t left /**< */,
- uint16_t top /**< */,
- uint16_t width /**< */,
- uint16_t height /**< */,
- uint16_t track_left /**< */,
- uint16_t track_top /**< */,
- uint16_t track_width /**< */,
- uint16_t track_height /**< */,
- int16_t border_left /**< */,
- int16_t border_top /**< */,
- int16_t border_right /**< */,
- int16_t border_bottom /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_SET_PANNING,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_randr_set_panning_cookie_t xcb_ret;
- xcb_randr_set_panning_request_t xcb_out;
-
- xcb_out.crtc = crtc;
- xcb_out.timestamp = timestamp;
- xcb_out.left = left;
- xcb_out.top = top;
- xcb_out.width = width;
- xcb_out.height = height;
- xcb_out.track_left = track_left;
- xcb_out.track_top = track_top;
- xcb_out.track_width = track_width;
- xcb_out.track_height = track_height;
- xcb_out.border_left = border_left;
- xcb_out.border_top = border_top;
- xcb_out.border_right = border_right;
- xcb_out.border_bottom = border_bottom;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_set_panning_reply_t * xcb_randr_set_panning_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_set_panning_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_randr_set_panning_reply_t *
- **
- *****************************************************************************/
-
-xcb_randr_set_panning_reply_t *
-xcb_randr_set_panning_reply (xcb_connection_t *c /**< */,
- xcb_randr_set_panning_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_randr_set_panning_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_randr_set_output_primary_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @param xcb_randr_output_t output
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_randr_set_output_primary_checked (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */,
- xcb_randr_output_t output /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_SET_OUTPUT_PRIMARY,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_randr_set_output_primary_request_t xcb_out;
-
- xcb_out.window = window;
- xcb_out.output = output;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_randr_set_output_primary
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @param xcb_randr_output_t output
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_randr_set_output_primary (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */,
- xcb_randr_output_t output /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_SET_OUTPUT_PRIMARY,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_randr_set_output_primary_request_t xcb_out;
-
- xcb_out.window = window;
- xcb_out.output = output;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_get_output_primary_cookie_t xcb_randr_get_output_primary
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @returns xcb_randr_get_output_primary_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_get_output_primary_cookie_t
-xcb_randr_get_output_primary (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_GET_OUTPUT_PRIMARY,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_randr_get_output_primary_cookie_t xcb_ret;
- xcb_randr_get_output_primary_request_t xcb_out;
-
- xcb_out.window = window;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_get_output_primary_cookie_t xcb_randr_get_output_primary_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @returns xcb_randr_get_output_primary_cookie_t
- **
- *****************************************************************************/
-
-xcb_randr_get_output_primary_cookie_t
-xcb_randr_get_output_primary_unchecked (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_randr_id,
- /* opcode */ XCB_RANDR_GET_OUTPUT_PRIMARY,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_randr_get_output_primary_cookie_t xcb_ret;
- xcb_randr_get_output_primary_request_t xcb_out;
-
- xcb_out.window = window;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_randr_get_output_primary_reply_t * xcb_randr_get_output_primary_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_randr_get_output_primary_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_randr_get_output_primary_reply_t *
- **
- *****************************************************************************/
-
-xcb_randr_get_output_primary_reply_t *
-xcb_randr_get_output_primary_reply (xcb_connection_t *c /**< */,
- xcb_randr_get_output_primary_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_randr_get_output_primary_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_randr_crtc_change_next
- **
- ** @param xcb_randr_crtc_change_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_randr_crtc_change_next (xcb_randr_crtc_change_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_randr_crtc_change_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_crtc_change_end
- **
- ** @param xcb_randr_crtc_change_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_crtc_change_end (xcb_randr_crtc_change_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_randr_output_change_next
- **
- ** @param xcb_randr_output_change_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_randr_output_change_next (xcb_randr_output_change_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_randr_output_change_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_output_change_end
- **
- ** @param xcb_randr_output_change_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_output_change_end (xcb_randr_output_change_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_randr_output_property_next
- **
- ** @param xcb_randr_output_property_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_randr_output_property_next (xcb_randr_output_property_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_randr_output_property_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_output_property_end
- **
- ** @param xcb_randr_output_property_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_output_property_end (xcb_randr_output_property_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_randr_notify_data_next
- **
- ** @param xcb_randr_notify_data_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_randr_notify_data_next (xcb_randr_notify_data_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_randr_notify_data_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_randr_notify_data_end
- **
- ** @param xcb_randr_notify_data_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_randr_notify_data_end (xcb_randr_notify_data_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
diff --git a/src/3rdparty/xcb/libxcb/render.c b/src/3rdparty/xcb/libxcb/render.c
deleted file mode 100644
index 7e5379cfcf..0000000000
--- a/src/3rdparty/xcb/libxcb/render.c
+++ /dev/null
@@ -1,5295 +0,0 @@
-/*
- * This file generated automatically from render.xml by c_client.py.
- * Edit at your peril.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-#include <stddef.h> /* for offsetof() */
-#include "xcbext.h"
-#include "render.h"
-
-#define ALIGNOF(type) offsetof(struct { char dummy; type member; }, member)
-#include "xproto.h"
-
-xcb_extension_t xcb_render_id = { "RENDER", 0 };
-
-
-/*****************************************************************************
- **
- ** void xcb_render_glyph_next
- **
- ** @param xcb_render_glyph_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_render_glyph_next (xcb_render_glyph_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_render_glyph_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_render_glyph_end
- **
- ** @param xcb_render_glyph_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_render_glyph_end (xcb_render_glyph_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_render_glyphset_next
- **
- ** @param xcb_render_glyphset_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_render_glyphset_next (xcb_render_glyphset_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_render_glyphset_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_render_glyphset_end
- **
- ** @param xcb_render_glyphset_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_render_glyphset_end (xcb_render_glyphset_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_render_picture_next
- **
- ** @param xcb_render_picture_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_render_picture_next (xcb_render_picture_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_render_picture_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_render_picture_end
- **
- ** @param xcb_render_picture_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_render_picture_end (xcb_render_picture_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_render_pictformat_next
- **
- ** @param xcb_render_pictformat_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_render_pictformat_next (xcb_render_pictformat_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_render_pictformat_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_render_pictformat_end
- **
- ** @param xcb_render_pictformat_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_render_pictformat_end (xcb_render_pictformat_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_render_fixed_next
- **
- ** @param xcb_render_fixed_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_render_fixed_next (xcb_render_fixed_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_render_fixed_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_render_fixed_end
- **
- ** @param xcb_render_fixed_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_render_fixed_end (xcb_render_fixed_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_render_directformat_next
- **
- ** @param xcb_render_directformat_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_render_directformat_next (xcb_render_directformat_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_render_directformat_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_render_directformat_end
- **
- ** @param xcb_render_directformat_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_render_directformat_end (xcb_render_directformat_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_render_pictforminfo_next
- **
- ** @param xcb_render_pictforminfo_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_render_pictforminfo_next (xcb_render_pictforminfo_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_render_pictforminfo_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_render_pictforminfo_end
- **
- ** @param xcb_render_pictforminfo_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_render_pictforminfo_end (xcb_render_pictforminfo_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_render_pictvisual_next
- **
- ** @param xcb_render_pictvisual_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_render_pictvisual_next (xcb_render_pictvisual_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_render_pictvisual_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_render_pictvisual_end
- **
- ** @param xcb_render_pictvisual_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_render_pictvisual_end (xcb_render_pictvisual_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-int
-xcb_render_pictdepth_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_render_pictdepth_t *_aux = (xcb_render_pictdepth_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_render_pictdepth_t);
- xcb_tmp += xcb_block_len;
- /* visuals */
- xcb_block_len += _aux->num_visuals * sizeof(xcb_render_pictvisual_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_render_pictvisual_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_render_pictvisual_t * xcb_render_pictdepth_visuals
- **
- ** @param const xcb_render_pictdepth_t *R
- ** @returns xcb_render_pictvisual_t *
- **
- *****************************************************************************/
-
-xcb_render_pictvisual_t *
-xcb_render_pictdepth_visuals (const xcb_render_pictdepth_t *R /**< */)
-{
- return (xcb_render_pictvisual_t *) (R + 1);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_render_pictdepth_visuals_length
- **
- ** @param const xcb_render_pictdepth_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_render_pictdepth_visuals_length (const xcb_render_pictdepth_t *R /**< */)
-{
- return R->num_visuals;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_render_pictvisual_iterator_t xcb_render_pictdepth_visuals_iterator
- **
- ** @param const xcb_render_pictdepth_t *R
- ** @returns xcb_render_pictvisual_iterator_t
- **
- *****************************************************************************/
-
-xcb_render_pictvisual_iterator_t
-xcb_render_pictdepth_visuals_iterator (const xcb_render_pictdepth_t *R /**< */)
-{
- xcb_render_pictvisual_iterator_t i;
- i.data = (xcb_render_pictvisual_t *) (R + 1);
- i.rem = R->num_visuals;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_render_pictdepth_next
- **
- ** @param xcb_render_pictdepth_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_render_pictdepth_next (xcb_render_pictdepth_iterator_t *i /**< */)
-{
- xcb_render_pictdepth_t *R = i->data;
- xcb_generic_iterator_t child;
- child.data = (xcb_render_pictdepth_t *)(((char *)R) + xcb_render_pictdepth_sizeof(R));
- i->index = (char *) child.data - (char *) i->data;
- --i->rem;
- i->data = (xcb_render_pictdepth_t *) child.data;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_render_pictdepth_end
- **
- ** @param xcb_render_pictdepth_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_render_pictdepth_end (xcb_render_pictdepth_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- while(i.rem > 0)
- xcb_render_pictdepth_next(&i);
- ret.data = i.data;
- ret.rem = i.rem;
- ret.index = i.index;
- return ret;
-}
-
-int
-xcb_render_pictscreen_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_render_pictscreen_t *_aux = (xcb_render_pictscreen_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
- unsigned int i;
- unsigned int xcb_tmp_len;
-
- xcb_block_len += sizeof(xcb_render_pictscreen_t);
- xcb_tmp += xcb_block_len;
- /* depths */
- for(i=0; i<_aux->num_depths; i++) {
- xcb_tmp_len = xcb_render_pictdepth_sizeof(xcb_tmp);
- xcb_block_len += xcb_tmp_len;
- xcb_tmp += xcb_tmp_len;
- }
- xcb_align_to = ALIGNOF(xcb_render_pictdepth_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_render_pictscreen_depths_length
- **
- ** @param const xcb_render_pictscreen_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_render_pictscreen_depths_length (const xcb_render_pictscreen_t *R /**< */)
-{
- return R->num_depths;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_render_pictdepth_iterator_t xcb_render_pictscreen_depths_iterator
- **
- ** @param const xcb_render_pictscreen_t *R
- ** @returns xcb_render_pictdepth_iterator_t
- **
- *****************************************************************************/
-
-xcb_render_pictdepth_iterator_t
-xcb_render_pictscreen_depths_iterator (const xcb_render_pictscreen_t *R /**< */)
-{
- xcb_render_pictdepth_iterator_t i;
- i.data = (xcb_render_pictdepth_t *) (R + 1);
- i.rem = R->num_depths;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_render_pictscreen_next
- **
- ** @param xcb_render_pictscreen_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_render_pictscreen_next (xcb_render_pictscreen_iterator_t *i /**< */)
-{
- xcb_render_pictscreen_t *R = i->data;
- xcb_generic_iterator_t child;
- child.data = (xcb_render_pictscreen_t *)(((char *)R) + xcb_render_pictscreen_sizeof(R));
- i->index = (char *) child.data - (char *) i->data;
- --i->rem;
- i->data = (xcb_render_pictscreen_t *) child.data;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_render_pictscreen_end
- **
- ** @param xcb_render_pictscreen_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_render_pictscreen_end (xcb_render_pictscreen_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- while(i.rem > 0)
- xcb_render_pictscreen_next(&i);
- ret.data = i.data;
- ret.rem = i.rem;
- ret.index = i.index;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_render_indexvalue_next
- **
- ** @param xcb_render_indexvalue_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_render_indexvalue_next (xcb_render_indexvalue_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_render_indexvalue_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_render_indexvalue_end
- **
- ** @param xcb_render_indexvalue_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_render_indexvalue_end (xcb_render_indexvalue_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_render_color_next
- **
- ** @param xcb_render_color_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_render_color_next (xcb_render_color_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_render_color_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_render_color_end
- **
- ** @param xcb_render_color_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_render_color_end (xcb_render_color_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_render_pointfix_next
- **
- ** @param xcb_render_pointfix_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_render_pointfix_next (xcb_render_pointfix_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_render_pointfix_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_render_pointfix_end
- **
- ** @param xcb_render_pointfix_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_render_pointfix_end (xcb_render_pointfix_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_render_linefix_next
- **
- ** @param xcb_render_linefix_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_render_linefix_next (xcb_render_linefix_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_render_linefix_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_render_linefix_end
- **
- ** @param xcb_render_linefix_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_render_linefix_end (xcb_render_linefix_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_render_triangle_next
- **
- ** @param xcb_render_triangle_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_render_triangle_next (xcb_render_triangle_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_render_triangle_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_render_triangle_end
- **
- ** @param xcb_render_triangle_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_render_triangle_end (xcb_render_triangle_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_render_trapezoid_next
- **
- ** @param xcb_render_trapezoid_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_render_trapezoid_next (xcb_render_trapezoid_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_render_trapezoid_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_render_trapezoid_end
- **
- ** @param xcb_render_trapezoid_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_render_trapezoid_end (xcb_render_trapezoid_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_render_glyphinfo_next
- **
- ** @param xcb_render_glyphinfo_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_render_glyphinfo_next (xcb_render_glyphinfo_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_render_glyphinfo_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_render_glyphinfo_end
- **
- ** @param xcb_render_glyphinfo_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_render_glyphinfo_end (xcb_render_glyphinfo_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_render_query_version_cookie_t xcb_render_query_version
- **
- ** @param xcb_connection_t *c
- ** @param uint32_t client_major_version
- ** @param uint32_t client_minor_version
- ** @returns xcb_render_query_version_cookie_t
- **
- *****************************************************************************/
-
-xcb_render_query_version_cookie_t
-xcb_render_query_version (xcb_connection_t *c /**< */,
- uint32_t client_major_version /**< */,
- uint32_t client_minor_version /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_QUERY_VERSION,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_render_query_version_cookie_t xcb_ret;
- xcb_render_query_version_request_t xcb_out;
-
- xcb_out.client_major_version = client_major_version;
- xcb_out.client_minor_version = client_minor_version;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_render_query_version_cookie_t xcb_render_query_version_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param uint32_t client_major_version
- ** @param uint32_t client_minor_version
- ** @returns xcb_render_query_version_cookie_t
- **
- *****************************************************************************/
-
-xcb_render_query_version_cookie_t
-xcb_render_query_version_unchecked (xcb_connection_t *c /**< */,
- uint32_t client_major_version /**< */,
- uint32_t client_minor_version /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_QUERY_VERSION,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_render_query_version_cookie_t xcb_ret;
- xcb_render_query_version_request_t xcb_out;
-
- xcb_out.client_major_version = client_major_version;
- xcb_out.client_minor_version = client_minor_version;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_render_query_version_reply_t * xcb_render_query_version_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_query_version_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_render_query_version_reply_t *
- **
- *****************************************************************************/
-
-xcb_render_query_version_reply_t *
-xcb_render_query_version_reply (xcb_connection_t *c /**< */,
- xcb_render_query_version_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_render_query_version_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-int
-xcb_render_query_pict_formats_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_render_query_pict_formats_reply_t *_aux = (xcb_render_query_pict_formats_reply_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
- unsigned int i;
- unsigned int xcb_tmp_len;
-
- xcb_block_len += sizeof(xcb_render_query_pict_formats_reply_t);
- xcb_tmp += xcb_block_len;
- /* formats */
- xcb_block_len += _aux->num_formats * sizeof(xcb_render_pictforminfo_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_render_pictforminfo_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* screens */
- for(i=0; i<_aux->num_screens; i++) {
- xcb_tmp_len = xcb_render_pictscreen_sizeof(xcb_tmp);
- xcb_block_len += xcb_tmp_len;
- xcb_tmp += xcb_tmp_len;
- }
- xcb_align_to = ALIGNOF(xcb_render_pictscreen_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* subpixels */
- xcb_block_len += _aux->num_subpixel * sizeof(uint32_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(uint32_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_render_query_pict_formats_cookie_t xcb_render_query_pict_formats
- **
- ** @param xcb_connection_t *c
- ** @returns xcb_render_query_pict_formats_cookie_t
- **
- *****************************************************************************/
-
-xcb_render_query_pict_formats_cookie_t
-xcb_render_query_pict_formats (xcb_connection_t *c /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_QUERY_PICT_FORMATS,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_render_query_pict_formats_cookie_t xcb_ret;
- xcb_render_query_pict_formats_request_t xcb_out;
-
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_render_query_pict_formats_cookie_t xcb_render_query_pict_formats_unchecked
- **
- ** @param xcb_connection_t *c
- ** @returns xcb_render_query_pict_formats_cookie_t
- **
- *****************************************************************************/
-
-xcb_render_query_pict_formats_cookie_t
-xcb_render_query_pict_formats_unchecked (xcb_connection_t *c /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_QUERY_PICT_FORMATS,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_render_query_pict_formats_cookie_t xcb_ret;
- xcb_render_query_pict_formats_request_t xcb_out;
-
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_render_pictforminfo_t * xcb_render_query_pict_formats_formats
- **
- ** @param const xcb_render_query_pict_formats_reply_t *R
- ** @returns xcb_render_pictforminfo_t *
- **
- *****************************************************************************/
-
-xcb_render_pictforminfo_t *
-xcb_render_query_pict_formats_formats (const xcb_render_query_pict_formats_reply_t *R /**< */)
-{
- return (xcb_render_pictforminfo_t *) (R + 1);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_render_query_pict_formats_formats_length
- **
- ** @param const xcb_render_query_pict_formats_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_render_query_pict_formats_formats_length (const xcb_render_query_pict_formats_reply_t *R /**< */)
-{
- return R->num_formats;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_render_pictforminfo_iterator_t xcb_render_query_pict_formats_formats_iterator
- **
- ** @param const xcb_render_query_pict_formats_reply_t *R
- ** @returns xcb_render_pictforminfo_iterator_t
- **
- *****************************************************************************/
-
-xcb_render_pictforminfo_iterator_t
-xcb_render_query_pict_formats_formats_iterator (const xcb_render_query_pict_formats_reply_t *R /**< */)
-{
- xcb_render_pictforminfo_iterator_t i;
- i.data = (xcb_render_pictforminfo_t *) (R + 1);
- i.rem = R->num_formats;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_render_query_pict_formats_screens_length
- **
- ** @param const xcb_render_query_pict_formats_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_render_query_pict_formats_screens_length (const xcb_render_query_pict_formats_reply_t *R /**< */)
-{
- return R->num_screens;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_render_pictscreen_iterator_t xcb_render_query_pict_formats_screens_iterator
- **
- ** @param const xcb_render_query_pict_formats_reply_t *R
- ** @returns xcb_render_pictscreen_iterator_t
- **
- *****************************************************************************/
-
-xcb_render_pictscreen_iterator_t
-xcb_render_query_pict_formats_screens_iterator (const xcb_render_query_pict_formats_reply_t *R /**< */)
-{
- xcb_render_pictscreen_iterator_t i;
- xcb_generic_iterator_t prev = xcb_render_pictforminfo_end(xcb_render_query_pict_formats_formats_iterator(R));
- i.data = (xcb_render_pictscreen_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_render_pictscreen_t, prev.index));
- i.rem = R->num_screens;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** uint32_t * xcb_render_query_pict_formats_subpixels
- **
- ** @param const xcb_render_query_pict_formats_reply_t *R
- ** @returns uint32_t *
- **
- *****************************************************************************/
-
-uint32_t *
-xcb_render_query_pict_formats_subpixels (const xcb_render_query_pict_formats_reply_t *R /**< */)
-{
- xcb_generic_iterator_t prev = xcb_render_pictscreen_end(xcb_render_query_pict_formats_screens_iterator(R));
- return (uint32_t *) ((char *) prev.data + XCB_TYPE_PAD(uint32_t, prev.index) + 0);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_render_query_pict_formats_subpixels_length
- **
- ** @param const xcb_render_query_pict_formats_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_render_query_pict_formats_subpixels_length (const xcb_render_query_pict_formats_reply_t *R /**< */)
-{
- return R->num_subpixel;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_render_query_pict_formats_subpixels_end
- **
- ** @param const xcb_render_query_pict_formats_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_render_query_pict_formats_subpixels_end (const xcb_render_query_pict_formats_reply_t *R /**< */)
-{
- xcb_generic_iterator_t i;
- xcb_generic_iterator_t child = xcb_render_pictscreen_end(xcb_render_query_pict_formats_screens_iterator(R));
- i.data = ((uint32_t *) child.data) + (R->num_subpixel);
- i.rem = 0;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_render_query_pict_formats_reply_t * xcb_render_query_pict_formats_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_query_pict_formats_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_render_query_pict_formats_reply_t *
- **
- *****************************************************************************/
-
-xcb_render_query_pict_formats_reply_t *
-xcb_render_query_pict_formats_reply (xcb_connection_t *c /**< */,
- xcb_render_query_pict_formats_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_render_query_pict_formats_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-int
-xcb_render_query_pict_index_values_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_render_query_pict_index_values_reply_t *_aux = (xcb_render_query_pict_index_values_reply_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_render_query_pict_index_values_reply_t);
- xcb_tmp += xcb_block_len;
- /* values */
- xcb_block_len += _aux->num_values * sizeof(xcb_render_indexvalue_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_render_indexvalue_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_render_query_pict_index_values_cookie_t xcb_render_query_pict_index_values
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_pictformat_t format
- ** @returns xcb_render_query_pict_index_values_cookie_t
- **
- *****************************************************************************/
-
-xcb_render_query_pict_index_values_cookie_t
-xcb_render_query_pict_index_values (xcb_connection_t *c /**< */,
- xcb_render_pictformat_t format /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_QUERY_PICT_INDEX_VALUES,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_render_query_pict_index_values_cookie_t xcb_ret;
- xcb_render_query_pict_index_values_request_t xcb_out;
-
- xcb_out.format = format;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_render_query_pict_index_values_cookie_t xcb_render_query_pict_index_values_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_pictformat_t format
- ** @returns xcb_render_query_pict_index_values_cookie_t
- **
- *****************************************************************************/
-
-xcb_render_query_pict_index_values_cookie_t
-xcb_render_query_pict_index_values_unchecked (xcb_connection_t *c /**< */,
- xcb_render_pictformat_t format /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_QUERY_PICT_INDEX_VALUES,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_render_query_pict_index_values_cookie_t xcb_ret;
- xcb_render_query_pict_index_values_request_t xcb_out;
-
- xcb_out.format = format;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_render_indexvalue_t * xcb_render_query_pict_index_values_values
- **
- ** @param const xcb_render_query_pict_index_values_reply_t *R
- ** @returns xcb_render_indexvalue_t *
- **
- *****************************************************************************/
-
-xcb_render_indexvalue_t *
-xcb_render_query_pict_index_values_values (const xcb_render_query_pict_index_values_reply_t *R /**< */)
-{
- return (xcb_render_indexvalue_t *) (R + 1);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_render_query_pict_index_values_values_length
- **
- ** @param const xcb_render_query_pict_index_values_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_render_query_pict_index_values_values_length (const xcb_render_query_pict_index_values_reply_t *R /**< */)
-{
- return R->num_values;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_render_indexvalue_iterator_t xcb_render_query_pict_index_values_values_iterator
- **
- ** @param const xcb_render_query_pict_index_values_reply_t *R
- ** @returns xcb_render_indexvalue_iterator_t
- **
- *****************************************************************************/
-
-xcb_render_indexvalue_iterator_t
-xcb_render_query_pict_index_values_values_iterator (const xcb_render_query_pict_index_values_reply_t *R /**< */)
-{
- xcb_render_indexvalue_iterator_t i;
- i.data = (xcb_render_indexvalue_t *) (R + 1);
- i.rem = R->num_values;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_render_query_pict_index_values_reply_t * xcb_render_query_pict_index_values_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_query_pict_index_values_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_render_query_pict_index_values_reply_t *
- **
- *****************************************************************************/
-
-xcb_render_query_pict_index_values_reply_t *
-xcb_render_query_pict_index_values_reply (xcb_connection_t *c /**< */,
- xcb_render_query_pict_index_values_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_render_query_pict_index_values_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-int
-xcb_render_create_picture_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_render_create_picture_request_t *_aux = (xcb_render_create_picture_request_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_render_create_picture_request_t);
- xcb_tmp += xcb_block_len;
- /* value_list */
- xcb_block_len += xcb_popcount(_aux->value_mask) * sizeof(uint32_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(uint32_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_create_picture_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_picture_t pid
- ** @param xcb_drawable_t drawable
- ** @param xcb_render_pictformat_t format
- ** @param uint32_t value_mask
- ** @param const uint32_t *value_list
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_create_picture_checked (xcb_connection_t *c /**< */,
- xcb_render_picture_t pid /**< */,
- xcb_drawable_t drawable /**< */,
- xcb_render_pictformat_t format /**< */,
- uint32_t value_mask /**< */,
- const uint32_t *value_list /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_CREATE_PICTURE,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_render_create_picture_request_t xcb_out;
-
- xcb_out.pid = pid;
- xcb_out.drawable = drawable;
- xcb_out.format = format;
- xcb_out.value_mask = value_mask;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* uint32_t value_list */
- xcb_parts[4].iov_base = (char *) value_list;
- xcb_parts[4].iov_len = xcb_popcount(value_mask) * sizeof(uint32_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_create_picture
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_picture_t pid
- ** @param xcb_drawable_t drawable
- ** @param xcb_render_pictformat_t format
- ** @param uint32_t value_mask
- ** @param const uint32_t *value_list
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_create_picture (xcb_connection_t *c /**< */,
- xcb_render_picture_t pid /**< */,
- xcb_drawable_t drawable /**< */,
- xcb_render_pictformat_t format /**< */,
- uint32_t value_mask /**< */,
- const uint32_t *value_list /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_CREATE_PICTURE,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_render_create_picture_request_t xcb_out;
-
- xcb_out.pid = pid;
- xcb_out.drawable = drawable;
- xcb_out.format = format;
- xcb_out.value_mask = value_mask;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* uint32_t value_list */
- xcb_parts[4].iov_base = (char *) value_list;
- xcb_parts[4].iov_len = xcb_popcount(value_mask) * sizeof(uint32_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-int
-xcb_render_change_picture_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_render_change_picture_request_t *_aux = (xcb_render_change_picture_request_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_render_change_picture_request_t);
- xcb_tmp += xcb_block_len;
- /* value_list */
- xcb_block_len += xcb_popcount(_aux->value_mask) * sizeof(uint32_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(uint32_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_change_picture_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_picture_t picture
- ** @param uint32_t value_mask
- ** @param const uint32_t *value_list
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_change_picture_checked (xcb_connection_t *c /**< */,
- xcb_render_picture_t picture /**< */,
- uint32_t value_mask /**< */,
- const uint32_t *value_list /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_CHANGE_PICTURE,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_render_change_picture_request_t xcb_out;
-
- xcb_out.picture = picture;
- xcb_out.value_mask = value_mask;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* uint32_t value_list */
- xcb_parts[4].iov_base = (char *) value_list;
- xcb_parts[4].iov_len = xcb_popcount(value_mask) * sizeof(uint32_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_change_picture
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_picture_t picture
- ** @param uint32_t value_mask
- ** @param const uint32_t *value_list
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_change_picture (xcb_connection_t *c /**< */,
- xcb_render_picture_t picture /**< */,
- uint32_t value_mask /**< */,
- const uint32_t *value_list /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_CHANGE_PICTURE,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_render_change_picture_request_t xcb_out;
-
- xcb_out.picture = picture;
- xcb_out.value_mask = value_mask;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* uint32_t value_list */
- xcb_parts[4].iov_base = (char *) value_list;
- xcb_parts[4].iov_len = xcb_popcount(value_mask) * sizeof(uint32_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-int
-xcb_render_set_picture_clip_rectangles_sizeof (const void *_buffer /**< */,
- uint32_t rectangles_len /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_render_set_picture_clip_rectangles_request_t);
- xcb_tmp += xcb_block_len;
- /* rectangles */
- xcb_block_len += rectangles_len * sizeof(xcb_rectangle_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_rectangle_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_set_picture_clip_rectangles_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_picture_t picture
- ** @param int16_t clip_x_origin
- ** @param int16_t clip_y_origin
- ** @param uint32_t rectangles_len
- ** @param const xcb_rectangle_t *rectangles
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_set_picture_clip_rectangles_checked (xcb_connection_t *c /**< */,
- xcb_render_picture_t picture /**< */,
- int16_t clip_x_origin /**< */,
- int16_t clip_y_origin /**< */,
- uint32_t rectangles_len /**< */,
- const xcb_rectangle_t *rectangles /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_SET_PICTURE_CLIP_RECTANGLES,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_render_set_picture_clip_rectangles_request_t xcb_out;
-
- xcb_out.picture = picture;
- xcb_out.clip_x_origin = clip_x_origin;
- xcb_out.clip_y_origin = clip_y_origin;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_rectangle_t rectangles */
- xcb_parts[4].iov_base = (char *) rectangles;
- xcb_parts[4].iov_len = rectangles_len * sizeof(xcb_rectangle_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_set_picture_clip_rectangles
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_picture_t picture
- ** @param int16_t clip_x_origin
- ** @param int16_t clip_y_origin
- ** @param uint32_t rectangles_len
- ** @param const xcb_rectangle_t *rectangles
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_set_picture_clip_rectangles (xcb_connection_t *c /**< */,
- xcb_render_picture_t picture /**< */,
- int16_t clip_x_origin /**< */,
- int16_t clip_y_origin /**< */,
- uint32_t rectangles_len /**< */,
- const xcb_rectangle_t *rectangles /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_SET_PICTURE_CLIP_RECTANGLES,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_render_set_picture_clip_rectangles_request_t xcb_out;
-
- xcb_out.picture = picture;
- xcb_out.clip_x_origin = clip_x_origin;
- xcb_out.clip_y_origin = clip_y_origin;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_rectangle_t rectangles */
- xcb_parts[4].iov_base = (char *) rectangles;
- xcb_parts[4].iov_len = rectangles_len * sizeof(xcb_rectangle_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_free_picture_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_picture_t picture
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_free_picture_checked (xcb_connection_t *c /**< */,
- xcb_render_picture_t picture /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_FREE_PICTURE,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_render_free_picture_request_t xcb_out;
-
- xcb_out.picture = picture;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_free_picture
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_picture_t picture
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_free_picture (xcb_connection_t *c /**< */,
- xcb_render_picture_t picture /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_FREE_PICTURE,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_render_free_picture_request_t xcb_out;
-
- xcb_out.picture = picture;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_composite_checked
- **
- ** @param xcb_connection_t *c
- ** @param uint8_t op
- ** @param xcb_render_picture_t src
- ** @param xcb_render_picture_t mask
- ** @param xcb_render_picture_t dst
- ** @param int16_t src_x
- ** @param int16_t src_y
- ** @param int16_t mask_x
- ** @param int16_t mask_y
- ** @param int16_t dst_x
- ** @param int16_t dst_y
- ** @param uint16_t width
- ** @param uint16_t height
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_composite_checked (xcb_connection_t *c /**< */,
- uint8_t op /**< */,
- xcb_render_picture_t src /**< */,
- xcb_render_picture_t mask /**< */,
- xcb_render_picture_t dst /**< */,
- int16_t src_x /**< */,
- int16_t src_y /**< */,
- int16_t mask_x /**< */,
- int16_t mask_y /**< */,
- int16_t dst_x /**< */,
- int16_t dst_y /**< */,
- uint16_t width /**< */,
- uint16_t height /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_COMPOSITE,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_render_composite_request_t xcb_out;
-
- xcb_out.op = op;
- memset(xcb_out.pad0, 0, 3);
- xcb_out.src = src;
- xcb_out.mask = mask;
- xcb_out.dst = dst;
- xcb_out.src_x = src_x;
- xcb_out.src_y = src_y;
- xcb_out.mask_x = mask_x;
- xcb_out.mask_y = mask_y;
- xcb_out.dst_x = dst_x;
- xcb_out.dst_y = dst_y;
- xcb_out.width = width;
- xcb_out.height = height;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_composite
- **
- ** @param xcb_connection_t *c
- ** @param uint8_t op
- ** @param xcb_render_picture_t src
- ** @param xcb_render_picture_t mask
- ** @param xcb_render_picture_t dst
- ** @param int16_t src_x
- ** @param int16_t src_y
- ** @param int16_t mask_x
- ** @param int16_t mask_y
- ** @param int16_t dst_x
- ** @param int16_t dst_y
- ** @param uint16_t width
- ** @param uint16_t height
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_composite (xcb_connection_t *c /**< */,
- uint8_t op /**< */,
- xcb_render_picture_t src /**< */,
- xcb_render_picture_t mask /**< */,
- xcb_render_picture_t dst /**< */,
- int16_t src_x /**< */,
- int16_t src_y /**< */,
- int16_t mask_x /**< */,
- int16_t mask_y /**< */,
- int16_t dst_x /**< */,
- int16_t dst_y /**< */,
- uint16_t width /**< */,
- uint16_t height /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_COMPOSITE,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_render_composite_request_t xcb_out;
-
- xcb_out.op = op;
- memset(xcb_out.pad0, 0, 3);
- xcb_out.src = src;
- xcb_out.mask = mask;
- xcb_out.dst = dst;
- xcb_out.src_x = src_x;
- xcb_out.src_y = src_y;
- xcb_out.mask_x = mask_x;
- xcb_out.mask_y = mask_y;
- xcb_out.dst_x = dst_x;
- xcb_out.dst_y = dst_y;
- xcb_out.width = width;
- xcb_out.height = height;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-int
-xcb_render_trapezoids_sizeof (const void *_buffer /**< */,
- uint32_t traps_len /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_render_trapezoids_request_t);
- xcb_tmp += xcb_block_len;
- /* traps */
- xcb_block_len += traps_len * sizeof(xcb_render_trapezoid_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_render_trapezoid_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_trapezoids_checked
- **
- ** @param xcb_connection_t *c
- ** @param uint8_t op
- ** @param xcb_render_picture_t src
- ** @param xcb_render_picture_t dst
- ** @param xcb_render_pictformat_t mask_format
- ** @param int16_t src_x
- ** @param int16_t src_y
- ** @param uint32_t traps_len
- ** @param const xcb_render_trapezoid_t *traps
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_trapezoids_checked (xcb_connection_t *c /**< */,
- uint8_t op /**< */,
- xcb_render_picture_t src /**< */,
- xcb_render_picture_t dst /**< */,
- xcb_render_pictformat_t mask_format /**< */,
- int16_t src_x /**< */,
- int16_t src_y /**< */,
- uint32_t traps_len /**< */,
- const xcb_render_trapezoid_t *traps /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_TRAPEZOIDS,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_render_trapezoids_request_t xcb_out;
-
- xcb_out.op = op;
- memset(xcb_out.pad0, 0, 3);
- xcb_out.src = src;
- xcb_out.dst = dst;
- xcb_out.mask_format = mask_format;
- xcb_out.src_x = src_x;
- xcb_out.src_y = src_y;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_render_trapezoid_t traps */
- xcb_parts[4].iov_base = (char *) traps;
- xcb_parts[4].iov_len = traps_len * sizeof(xcb_render_trapezoid_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_trapezoids
- **
- ** @param xcb_connection_t *c
- ** @param uint8_t op
- ** @param xcb_render_picture_t src
- ** @param xcb_render_picture_t dst
- ** @param xcb_render_pictformat_t mask_format
- ** @param int16_t src_x
- ** @param int16_t src_y
- ** @param uint32_t traps_len
- ** @param const xcb_render_trapezoid_t *traps
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_trapezoids (xcb_connection_t *c /**< */,
- uint8_t op /**< */,
- xcb_render_picture_t src /**< */,
- xcb_render_picture_t dst /**< */,
- xcb_render_pictformat_t mask_format /**< */,
- int16_t src_x /**< */,
- int16_t src_y /**< */,
- uint32_t traps_len /**< */,
- const xcb_render_trapezoid_t *traps /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_TRAPEZOIDS,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_render_trapezoids_request_t xcb_out;
-
- xcb_out.op = op;
- memset(xcb_out.pad0, 0, 3);
- xcb_out.src = src;
- xcb_out.dst = dst;
- xcb_out.mask_format = mask_format;
- xcb_out.src_x = src_x;
- xcb_out.src_y = src_y;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_render_trapezoid_t traps */
- xcb_parts[4].iov_base = (char *) traps;
- xcb_parts[4].iov_len = traps_len * sizeof(xcb_render_trapezoid_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-int
-xcb_render_triangles_sizeof (const void *_buffer /**< */,
- uint32_t triangles_len /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_render_triangles_request_t);
- xcb_tmp += xcb_block_len;
- /* triangles */
- xcb_block_len += triangles_len * sizeof(xcb_render_triangle_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_render_triangle_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_triangles_checked
- **
- ** @param xcb_connection_t *c
- ** @param uint8_t op
- ** @param xcb_render_picture_t src
- ** @param xcb_render_picture_t dst
- ** @param xcb_render_pictformat_t mask_format
- ** @param int16_t src_x
- ** @param int16_t src_y
- ** @param uint32_t triangles_len
- ** @param const xcb_render_triangle_t *triangles
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_triangles_checked (xcb_connection_t *c /**< */,
- uint8_t op /**< */,
- xcb_render_picture_t src /**< */,
- xcb_render_picture_t dst /**< */,
- xcb_render_pictformat_t mask_format /**< */,
- int16_t src_x /**< */,
- int16_t src_y /**< */,
- uint32_t triangles_len /**< */,
- const xcb_render_triangle_t *triangles /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_TRIANGLES,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_render_triangles_request_t xcb_out;
-
- xcb_out.op = op;
- memset(xcb_out.pad0, 0, 3);
- xcb_out.src = src;
- xcb_out.dst = dst;
- xcb_out.mask_format = mask_format;
- xcb_out.src_x = src_x;
- xcb_out.src_y = src_y;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_render_triangle_t triangles */
- xcb_parts[4].iov_base = (char *) triangles;
- xcb_parts[4].iov_len = triangles_len * sizeof(xcb_render_triangle_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_triangles
- **
- ** @param xcb_connection_t *c
- ** @param uint8_t op
- ** @param xcb_render_picture_t src
- ** @param xcb_render_picture_t dst
- ** @param xcb_render_pictformat_t mask_format
- ** @param int16_t src_x
- ** @param int16_t src_y
- ** @param uint32_t triangles_len
- ** @param const xcb_render_triangle_t *triangles
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_triangles (xcb_connection_t *c /**< */,
- uint8_t op /**< */,
- xcb_render_picture_t src /**< */,
- xcb_render_picture_t dst /**< */,
- xcb_render_pictformat_t mask_format /**< */,
- int16_t src_x /**< */,
- int16_t src_y /**< */,
- uint32_t triangles_len /**< */,
- const xcb_render_triangle_t *triangles /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_TRIANGLES,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_render_triangles_request_t xcb_out;
-
- xcb_out.op = op;
- memset(xcb_out.pad0, 0, 3);
- xcb_out.src = src;
- xcb_out.dst = dst;
- xcb_out.mask_format = mask_format;
- xcb_out.src_x = src_x;
- xcb_out.src_y = src_y;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_render_triangle_t triangles */
- xcb_parts[4].iov_base = (char *) triangles;
- xcb_parts[4].iov_len = triangles_len * sizeof(xcb_render_triangle_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-int
-xcb_render_tri_strip_sizeof (const void *_buffer /**< */,
- uint32_t points_len /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_render_tri_strip_request_t);
- xcb_tmp += xcb_block_len;
- /* points */
- xcb_block_len += points_len * sizeof(xcb_render_pointfix_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_render_pointfix_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_tri_strip_checked
- **
- ** @param xcb_connection_t *c
- ** @param uint8_t op
- ** @param xcb_render_picture_t src
- ** @param xcb_render_picture_t dst
- ** @param xcb_render_pictformat_t mask_format
- ** @param int16_t src_x
- ** @param int16_t src_y
- ** @param uint32_t points_len
- ** @param const xcb_render_pointfix_t *points
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_tri_strip_checked (xcb_connection_t *c /**< */,
- uint8_t op /**< */,
- xcb_render_picture_t src /**< */,
- xcb_render_picture_t dst /**< */,
- xcb_render_pictformat_t mask_format /**< */,
- int16_t src_x /**< */,
- int16_t src_y /**< */,
- uint32_t points_len /**< */,
- const xcb_render_pointfix_t *points /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_TRI_STRIP,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_render_tri_strip_request_t xcb_out;
-
- xcb_out.op = op;
- memset(xcb_out.pad0, 0, 3);
- xcb_out.src = src;
- xcb_out.dst = dst;
- xcb_out.mask_format = mask_format;
- xcb_out.src_x = src_x;
- xcb_out.src_y = src_y;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_render_pointfix_t points */
- xcb_parts[4].iov_base = (char *) points;
- xcb_parts[4].iov_len = points_len * sizeof(xcb_render_pointfix_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_tri_strip
- **
- ** @param xcb_connection_t *c
- ** @param uint8_t op
- ** @param xcb_render_picture_t src
- ** @param xcb_render_picture_t dst
- ** @param xcb_render_pictformat_t mask_format
- ** @param int16_t src_x
- ** @param int16_t src_y
- ** @param uint32_t points_len
- ** @param const xcb_render_pointfix_t *points
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_tri_strip (xcb_connection_t *c /**< */,
- uint8_t op /**< */,
- xcb_render_picture_t src /**< */,
- xcb_render_picture_t dst /**< */,
- xcb_render_pictformat_t mask_format /**< */,
- int16_t src_x /**< */,
- int16_t src_y /**< */,
- uint32_t points_len /**< */,
- const xcb_render_pointfix_t *points /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_TRI_STRIP,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_render_tri_strip_request_t xcb_out;
-
- xcb_out.op = op;
- memset(xcb_out.pad0, 0, 3);
- xcb_out.src = src;
- xcb_out.dst = dst;
- xcb_out.mask_format = mask_format;
- xcb_out.src_x = src_x;
- xcb_out.src_y = src_y;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_render_pointfix_t points */
- xcb_parts[4].iov_base = (char *) points;
- xcb_parts[4].iov_len = points_len * sizeof(xcb_render_pointfix_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-int
-xcb_render_tri_fan_sizeof (const void *_buffer /**< */,
- uint32_t points_len /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_render_tri_fan_request_t);
- xcb_tmp += xcb_block_len;
- /* points */
- xcb_block_len += points_len * sizeof(xcb_render_pointfix_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_render_pointfix_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_tri_fan_checked
- **
- ** @param xcb_connection_t *c
- ** @param uint8_t op
- ** @param xcb_render_picture_t src
- ** @param xcb_render_picture_t dst
- ** @param xcb_render_pictformat_t mask_format
- ** @param int16_t src_x
- ** @param int16_t src_y
- ** @param uint32_t points_len
- ** @param const xcb_render_pointfix_t *points
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_tri_fan_checked (xcb_connection_t *c /**< */,
- uint8_t op /**< */,
- xcb_render_picture_t src /**< */,
- xcb_render_picture_t dst /**< */,
- xcb_render_pictformat_t mask_format /**< */,
- int16_t src_x /**< */,
- int16_t src_y /**< */,
- uint32_t points_len /**< */,
- const xcb_render_pointfix_t *points /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_TRI_FAN,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_render_tri_fan_request_t xcb_out;
-
- xcb_out.op = op;
- memset(xcb_out.pad0, 0, 3);
- xcb_out.src = src;
- xcb_out.dst = dst;
- xcb_out.mask_format = mask_format;
- xcb_out.src_x = src_x;
- xcb_out.src_y = src_y;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_render_pointfix_t points */
- xcb_parts[4].iov_base = (char *) points;
- xcb_parts[4].iov_len = points_len * sizeof(xcb_render_pointfix_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_tri_fan
- **
- ** @param xcb_connection_t *c
- ** @param uint8_t op
- ** @param xcb_render_picture_t src
- ** @param xcb_render_picture_t dst
- ** @param xcb_render_pictformat_t mask_format
- ** @param int16_t src_x
- ** @param int16_t src_y
- ** @param uint32_t points_len
- ** @param const xcb_render_pointfix_t *points
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_tri_fan (xcb_connection_t *c /**< */,
- uint8_t op /**< */,
- xcb_render_picture_t src /**< */,
- xcb_render_picture_t dst /**< */,
- xcb_render_pictformat_t mask_format /**< */,
- int16_t src_x /**< */,
- int16_t src_y /**< */,
- uint32_t points_len /**< */,
- const xcb_render_pointfix_t *points /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_TRI_FAN,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_render_tri_fan_request_t xcb_out;
-
- xcb_out.op = op;
- memset(xcb_out.pad0, 0, 3);
- xcb_out.src = src;
- xcb_out.dst = dst;
- xcb_out.mask_format = mask_format;
- xcb_out.src_x = src_x;
- xcb_out.src_y = src_y;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_render_pointfix_t points */
- xcb_parts[4].iov_base = (char *) points;
- xcb_parts[4].iov_len = points_len * sizeof(xcb_render_pointfix_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_create_glyph_set_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_glyphset_t gsid
- ** @param xcb_render_pictformat_t format
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_create_glyph_set_checked (xcb_connection_t *c /**< */,
- xcb_render_glyphset_t gsid /**< */,
- xcb_render_pictformat_t format /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_CREATE_GLYPH_SET,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_render_create_glyph_set_request_t xcb_out;
-
- xcb_out.gsid = gsid;
- xcb_out.format = format;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_create_glyph_set
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_glyphset_t gsid
- ** @param xcb_render_pictformat_t format
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_create_glyph_set (xcb_connection_t *c /**< */,
- xcb_render_glyphset_t gsid /**< */,
- xcb_render_pictformat_t format /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_CREATE_GLYPH_SET,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_render_create_glyph_set_request_t xcb_out;
-
- xcb_out.gsid = gsid;
- xcb_out.format = format;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_reference_glyph_set_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_glyphset_t gsid
- ** @param xcb_render_glyphset_t existing
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_reference_glyph_set_checked (xcb_connection_t *c /**< */,
- xcb_render_glyphset_t gsid /**< */,
- xcb_render_glyphset_t existing /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_REFERENCE_GLYPH_SET,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_render_reference_glyph_set_request_t xcb_out;
-
- xcb_out.gsid = gsid;
- xcb_out.existing = existing;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_reference_glyph_set
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_glyphset_t gsid
- ** @param xcb_render_glyphset_t existing
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_reference_glyph_set (xcb_connection_t *c /**< */,
- xcb_render_glyphset_t gsid /**< */,
- xcb_render_glyphset_t existing /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_REFERENCE_GLYPH_SET,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_render_reference_glyph_set_request_t xcb_out;
-
- xcb_out.gsid = gsid;
- xcb_out.existing = existing;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_free_glyph_set_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_glyphset_t glyphset
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_free_glyph_set_checked (xcb_connection_t *c /**< */,
- xcb_render_glyphset_t glyphset /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_FREE_GLYPH_SET,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_render_free_glyph_set_request_t xcb_out;
-
- xcb_out.glyphset = glyphset;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_free_glyph_set
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_glyphset_t glyphset
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_free_glyph_set (xcb_connection_t *c /**< */,
- xcb_render_glyphset_t glyphset /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_FREE_GLYPH_SET,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_render_free_glyph_set_request_t xcb_out;
-
- xcb_out.glyphset = glyphset;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-int
-xcb_render_add_glyphs_sizeof (const void *_buffer /**< */,
- uint32_t data_len /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_render_add_glyphs_request_t *_aux = (xcb_render_add_glyphs_request_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_render_add_glyphs_request_t);
- xcb_tmp += xcb_block_len;
- /* glyphids */
- xcb_block_len += _aux->glyphs_len * sizeof(uint32_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(uint32_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* glyphs */
- xcb_block_len += _aux->glyphs_len * sizeof(xcb_render_glyphinfo_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_render_glyphinfo_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* data */
- xcb_block_len += data_len * sizeof(uint8_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(uint8_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_add_glyphs_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_glyphset_t glyphset
- ** @param uint32_t glyphs_len
- ** @param const uint32_t *glyphids
- ** @param const xcb_render_glyphinfo_t *glyphs
- ** @param uint32_t data_len
- ** @param const uint8_t *data
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_add_glyphs_checked (xcb_connection_t *c /**< */,
- xcb_render_glyphset_t glyphset /**< */,
- uint32_t glyphs_len /**< */,
- const uint32_t *glyphids /**< */,
- const xcb_render_glyphinfo_t *glyphs /**< */,
- uint32_t data_len /**< */,
- const uint8_t *data /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 8,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_ADD_GLYPHS,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[10];
- xcb_void_cookie_t xcb_ret;
- xcb_render_add_glyphs_request_t xcb_out;
-
- xcb_out.glyphset = glyphset;
- xcb_out.glyphs_len = glyphs_len;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* uint32_t glyphids */
- xcb_parts[4].iov_base = (char *) glyphids;
- xcb_parts[4].iov_len = glyphs_len * sizeof(uint32_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
- /* xcb_render_glyphinfo_t glyphs */
- xcb_parts[6].iov_base = (char *) glyphs;
- xcb_parts[6].iov_len = glyphs_len * sizeof(xcb_render_glyphinfo_t);
- xcb_parts[7].iov_base = 0;
- xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3;
- /* uint8_t data */
- xcb_parts[8].iov_base = (char *) data;
- xcb_parts[8].iov_len = data_len * sizeof(uint8_t);
- xcb_parts[9].iov_base = 0;
- xcb_parts[9].iov_len = -xcb_parts[8].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_add_glyphs
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_glyphset_t glyphset
- ** @param uint32_t glyphs_len
- ** @param const uint32_t *glyphids
- ** @param const xcb_render_glyphinfo_t *glyphs
- ** @param uint32_t data_len
- ** @param const uint8_t *data
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_add_glyphs (xcb_connection_t *c /**< */,
- xcb_render_glyphset_t glyphset /**< */,
- uint32_t glyphs_len /**< */,
- const uint32_t *glyphids /**< */,
- const xcb_render_glyphinfo_t *glyphs /**< */,
- uint32_t data_len /**< */,
- const uint8_t *data /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 8,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_ADD_GLYPHS,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[10];
- xcb_void_cookie_t xcb_ret;
- xcb_render_add_glyphs_request_t xcb_out;
-
- xcb_out.glyphset = glyphset;
- xcb_out.glyphs_len = glyphs_len;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* uint32_t glyphids */
- xcb_parts[4].iov_base = (char *) glyphids;
- xcb_parts[4].iov_len = glyphs_len * sizeof(uint32_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
- /* xcb_render_glyphinfo_t glyphs */
- xcb_parts[6].iov_base = (char *) glyphs;
- xcb_parts[6].iov_len = glyphs_len * sizeof(xcb_render_glyphinfo_t);
- xcb_parts[7].iov_base = 0;
- xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3;
- /* uint8_t data */
- xcb_parts[8].iov_base = (char *) data;
- xcb_parts[8].iov_len = data_len * sizeof(uint8_t);
- xcb_parts[9].iov_base = 0;
- xcb_parts[9].iov_len = -xcb_parts[8].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-int
-xcb_render_free_glyphs_sizeof (const void *_buffer /**< */,
- uint32_t glyphs_len /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_render_free_glyphs_request_t);
- xcb_tmp += xcb_block_len;
- /* glyphs */
- xcb_block_len += glyphs_len * sizeof(xcb_render_glyph_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_render_glyph_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_free_glyphs_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_glyphset_t glyphset
- ** @param uint32_t glyphs_len
- ** @param const xcb_render_glyph_t *glyphs
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_free_glyphs_checked (xcb_connection_t *c /**< */,
- xcb_render_glyphset_t glyphset /**< */,
- uint32_t glyphs_len /**< */,
- const xcb_render_glyph_t *glyphs /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_FREE_GLYPHS,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_render_free_glyphs_request_t xcb_out;
-
- xcb_out.glyphset = glyphset;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_render_glyph_t glyphs */
- xcb_parts[4].iov_base = (char *) glyphs;
- xcb_parts[4].iov_len = glyphs_len * sizeof(xcb_render_glyph_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_free_glyphs
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_glyphset_t glyphset
- ** @param uint32_t glyphs_len
- ** @param const xcb_render_glyph_t *glyphs
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_free_glyphs (xcb_connection_t *c /**< */,
- xcb_render_glyphset_t glyphset /**< */,
- uint32_t glyphs_len /**< */,
- const xcb_render_glyph_t *glyphs /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_FREE_GLYPHS,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_render_free_glyphs_request_t xcb_out;
-
- xcb_out.glyphset = glyphset;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_render_glyph_t glyphs */
- xcb_parts[4].iov_base = (char *) glyphs;
- xcb_parts[4].iov_len = glyphs_len * sizeof(xcb_render_glyph_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-int
-xcb_render_composite_glyphs_8_sizeof (const void *_buffer /**< */,
- uint32_t glyphcmds_len /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_render_composite_glyphs_8_request_t);
- xcb_tmp += xcb_block_len;
- /* glyphcmds */
- xcb_block_len += glyphcmds_len * sizeof(uint8_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(uint8_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_composite_glyphs_8_checked
- **
- ** @param xcb_connection_t *c
- ** @param uint8_t op
- ** @param xcb_render_picture_t src
- ** @param xcb_render_picture_t dst
- ** @param xcb_render_pictformat_t mask_format
- ** @param xcb_render_glyphset_t glyphset
- ** @param int16_t src_x
- ** @param int16_t src_y
- ** @param uint32_t glyphcmds_len
- ** @param const uint8_t *glyphcmds
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_composite_glyphs_8_checked (xcb_connection_t *c /**< */,
- uint8_t op /**< */,
- xcb_render_picture_t src /**< */,
- xcb_render_picture_t dst /**< */,
- xcb_render_pictformat_t mask_format /**< */,
- xcb_render_glyphset_t glyphset /**< */,
- int16_t src_x /**< */,
- int16_t src_y /**< */,
- uint32_t glyphcmds_len /**< */,
- const uint8_t *glyphcmds /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_COMPOSITE_GLYPHS_8,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_render_composite_glyphs_8_request_t xcb_out;
-
- xcb_out.op = op;
- memset(xcb_out.pad0, 0, 3);
- xcb_out.src = src;
- xcb_out.dst = dst;
- xcb_out.mask_format = mask_format;
- xcb_out.glyphset = glyphset;
- xcb_out.src_x = src_x;
- xcb_out.src_y = src_y;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* uint8_t glyphcmds */
- xcb_parts[4].iov_base = (char *) glyphcmds;
- xcb_parts[4].iov_len = glyphcmds_len * sizeof(uint8_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_composite_glyphs_8
- **
- ** @param xcb_connection_t *c
- ** @param uint8_t op
- ** @param xcb_render_picture_t src
- ** @param xcb_render_picture_t dst
- ** @param xcb_render_pictformat_t mask_format
- ** @param xcb_render_glyphset_t glyphset
- ** @param int16_t src_x
- ** @param int16_t src_y
- ** @param uint32_t glyphcmds_len
- ** @param const uint8_t *glyphcmds
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_composite_glyphs_8 (xcb_connection_t *c /**< */,
- uint8_t op /**< */,
- xcb_render_picture_t src /**< */,
- xcb_render_picture_t dst /**< */,
- xcb_render_pictformat_t mask_format /**< */,
- xcb_render_glyphset_t glyphset /**< */,
- int16_t src_x /**< */,
- int16_t src_y /**< */,
- uint32_t glyphcmds_len /**< */,
- const uint8_t *glyphcmds /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_COMPOSITE_GLYPHS_8,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_render_composite_glyphs_8_request_t xcb_out;
-
- xcb_out.op = op;
- memset(xcb_out.pad0, 0, 3);
- xcb_out.src = src;
- xcb_out.dst = dst;
- xcb_out.mask_format = mask_format;
- xcb_out.glyphset = glyphset;
- xcb_out.src_x = src_x;
- xcb_out.src_y = src_y;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* uint8_t glyphcmds */
- xcb_parts[4].iov_base = (char *) glyphcmds;
- xcb_parts[4].iov_len = glyphcmds_len * sizeof(uint8_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-int
-xcb_render_composite_glyphs_16_sizeof (const void *_buffer /**< */,
- uint32_t glyphcmds_len /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_render_composite_glyphs_16_request_t);
- xcb_tmp += xcb_block_len;
- /* glyphcmds */
- xcb_block_len += glyphcmds_len * sizeof(uint8_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(uint8_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_composite_glyphs_16_checked
- **
- ** @param xcb_connection_t *c
- ** @param uint8_t op
- ** @param xcb_render_picture_t src
- ** @param xcb_render_picture_t dst
- ** @param xcb_render_pictformat_t mask_format
- ** @param xcb_render_glyphset_t glyphset
- ** @param int16_t src_x
- ** @param int16_t src_y
- ** @param uint32_t glyphcmds_len
- ** @param const uint8_t *glyphcmds
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_composite_glyphs_16_checked (xcb_connection_t *c /**< */,
- uint8_t op /**< */,
- xcb_render_picture_t src /**< */,
- xcb_render_picture_t dst /**< */,
- xcb_render_pictformat_t mask_format /**< */,
- xcb_render_glyphset_t glyphset /**< */,
- int16_t src_x /**< */,
- int16_t src_y /**< */,
- uint32_t glyphcmds_len /**< */,
- const uint8_t *glyphcmds /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_COMPOSITE_GLYPHS_16,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_render_composite_glyphs_16_request_t xcb_out;
-
- xcb_out.op = op;
- memset(xcb_out.pad0, 0, 3);
- xcb_out.src = src;
- xcb_out.dst = dst;
- xcb_out.mask_format = mask_format;
- xcb_out.glyphset = glyphset;
- xcb_out.src_x = src_x;
- xcb_out.src_y = src_y;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* uint8_t glyphcmds */
- xcb_parts[4].iov_base = (char *) glyphcmds;
- xcb_parts[4].iov_len = glyphcmds_len * sizeof(uint8_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_composite_glyphs_16
- **
- ** @param xcb_connection_t *c
- ** @param uint8_t op
- ** @param xcb_render_picture_t src
- ** @param xcb_render_picture_t dst
- ** @param xcb_render_pictformat_t mask_format
- ** @param xcb_render_glyphset_t glyphset
- ** @param int16_t src_x
- ** @param int16_t src_y
- ** @param uint32_t glyphcmds_len
- ** @param const uint8_t *glyphcmds
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_composite_glyphs_16 (xcb_connection_t *c /**< */,
- uint8_t op /**< */,
- xcb_render_picture_t src /**< */,
- xcb_render_picture_t dst /**< */,
- xcb_render_pictformat_t mask_format /**< */,
- xcb_render_glyphset_t glyphset /**< */,
- int16_t src_x /**< */,
- int16_t src_y /**< */,
- uint32_t glyphcmds_len /**< */,
- const uint8_t *glyphcmds /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_COMPOSITE_GLYPHS_16,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_render_composite_glyphs_16_request_t xcb_out;
-
- xcb_out.op = op;
- memset(xcb_out.pad0, 0, 3);
- xcb_out.src = src;
- xcb_out.dst = dst;
- xcb_out.mask_format = mask_format;
- xcb_out.glyphset = glyphset;
- xcb_out.src_x = src_x;
- xcb_out.src_y = src_y;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* uint8_t glyphcmds */
- xcb_parts[4].iov_base = (char *) glyphcmds;
- xcb_parts[4].iov_len = glyphcmds_len * sizeof(uint8_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-int
-xcb_render_composite_glyphs_32_sizeof (const void *_buffer /**< */,
- uint32_t glyphcmds_len /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_render_composite_glyphs_32_request_t);
- xcb_tmp += xcb_block_len;
- /* glyphcmds */
- xcb_block_len += glyphcmds_len * sizeof(uint8_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(uint8_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_composite_glyphs_32_checked
- **
- ** @param xcb_connection_t *c
- ** @param uint8_t op
- ** @param xcb_render_picture_t src
- ** @param xcb_render_picture_t dst
- ** @param xcb_render_pictformat_t mask_format
- ** @param xcb_render_glyphset_t glyphset
- ** @param int16_t src_x
- ** @param int16_t src_y
- ** @param uint32_t glyphcmds_len
- ** @param const uint8_t *glyphcmds
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_composite_glyphs_32_checked (xcb_connection_t *c /**< */,
- uint8_t op /**< */,
- xcb_render_picture_t src /**< */,
- xcb_render_picture_t dst /**< */,
- xcb_render_pictformat_t mask_format /**< */,
- xcb_render_glyphset_t glyphset /**< */,
- int16_t src_x /**< */,
- int16_t src_y /**< */,
- uint32_t glyphcmds_len /**< */,
- const uint8_t *glyphcmds /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_COMPOSITE_GLYPHS_32,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_render_composite_glyphs_32_request_t xcb_out;
-
- xcb_out.op = op;
- memset(xcb_out.pad0, 0, 3);
- xcb_out.src = src;
- xcb_out.dst = dst;
- xcb_out.mask_format = mask_format;
- xcb_out.glyphset = glyphset;
- xcb_out.src_x = src_x;
- xcb_out.src_y = src_y;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* uint8_t glyphcmds */
- xcb_parts[4].iov_base = (char *) glyphcmds;
- xcb_parts[4].iov_len = glyphcmds_len * sizeof(uint8_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_composite_glyphs_32
- **
- ** @param xcb_connection_t *c
- ** @param uint8_t op
- ** @param xcb_render_picture_t src
- ** @param xcb_render_picture_t dst
- ** @param xcb_render_pictformat_t mask_format
- ** @param xcb_render_glyphset_t glyphset
- ** @param int16_t src_x
- ** @param int16_t src_y
- ** @param uint32_t glyphcmds_len
- ** @param const uint8_t *glyphcmds
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_composite_glyphs_32 (xcb_connection_t *c /**< */,
- uint8_t op /**< */,
- xcb_render_picture_t src /**< */,
- xcb_render_picture_t dst /**< */,
- xcb_render_pictformat_t mask_format /**< */,
- xcb_render_glyphset_t glyphset /**< */,
- int16_t src_x /**< */,
- int16_t src_y /**< */,
- uint32_t glyphcmds_len /**< */,
- const uint8_t *glyphcmds /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_COMPOSITE_GLYPHS_32,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_render_composite_glyphs_32_request_t xcb_out;
-
- xcb_out.op = op;
- memset(xcb_out.pad0, 0, 3);
- xcb_out.src = src;
- xcb_out.dst = dst;
- xcb_out.mask_format = mask_format;
- xcb_out.glyphset = glyphset;
- xcb_out.src_x = src_x;
- xcb_out.src_y = src_y;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* uint8_t glyphcmds */
- xcb_parts[4].iov_base = (char *) glyphcmds;
- xcb_parts[4].iov_len = glyphcmds_len * sizeof(uint8_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-int
-xcb_render_fill_rectangles_sizeof (const void *_buffer /**< */,
- uint32_t rects_len /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_render_fill_rectangles_request_t);
- xcb_tmp += xcb_block_len;
- /* rects */
- xcb_block_len += rects_len * sizeof(xcb_rectangle_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_rectangle_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_fill_rectangles_checked
- **
- ** @param xcb_connection_t *c
- ** @param uint8_t op
- ** @param xcb_render_picture_t dst
- ** @param xcb_render_color_t color
- ** @param uint32_t rects_len
- ** @param const xcb_rectangle_t *rects
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_fill_rectangles_checked (xcb_connection_t *c /**< */,
- uint8_t op /**< */,
- xcb_render_picture_t dst /**< */,
- xcb_render_color_t color /**< */,
- uint32_t rects_len /**< */,
- const xcb_rectangle_t *rects /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_FILL_RECTANGLES,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_render_fill_rectangles_request_t xcb_out;
-
- xcb_out.op = op;
- memset(xcb_out.pad0, 0, 3);
- xcb_out.dst = dst;
- xcb_out.color = color;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_rectangle_t rects */
- xcb_parts[4].iov_base = (char *) rects;
- xcb_parts[4].iov_len = rects_len * sizeof(xcb_rectangle_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_fill_rectangles
- **
- ** @param xcb_connection_t *c
- ** @param uint8_t op
- ** @param xcb_render_picture_t dst
- ** @param xcb_render_color_t color
- ** @param uint32_t rects_len
- ** @param const xcb_rectangle_t *rects
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_fill_rectangles (xcb_connection_t *c /**< */,
- uint8_t op /**< */,
- xcb_render_picture_t dst /**< */,
- xcb_render_color_t color /**< */,
- uint32_t rects_len /**< */,
- const xcb_rectangle_t *rects /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_FILL_RECTANGLES,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_render_fill_rectangles_request_t xcb_out;
-
- xcb_out.op = op;
- memset(xcb_out.pad0, 0, 3);
- xcb_out.dst = dst;
- xcb_out.color = color;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_rectangle_t rects */
- xcb_parts[4].iov_base = (char *) rects;
- xcb_parts[4].iov_len = rects_len * sizeof(xcb_rectangle_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_create_cursor_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_cursor_t cid
- ** @param xcb_render_picture_t source
- ** @param uint16_t x
- ** @param uint16_t y
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_create_cursor_checked (xcb_connection_t *c /**< */,
- xcb_cursor_t cid /**< */,
- xcb_render_picture_t source /**< */,
- uint16_t x /**< */,
- uint16_t y /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_CREATE_CURSOR,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_render_create_cursor_request_t xcb_out;
-
- xcb_out.cid = cid;
- xcb_out.source = source;
- xcb_out.x = x;
- xcb_out.y = y;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_create_cursor
- **
- ** @param xcb_connection_t *c
- ** @param xcb_cursor_t cid
- ** @param xcb_render_picture_t source
- ** @param uint16_t x
- ** @param uint16_t y
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_create_cursor (xcb_connection_t *c /**< */,
- xcb_cursor_t cid /**< */,
- xcb_render_picture_t source /**< */,
- uint16_t x /**< */,
- uint16_t y /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_CREATE_CURSOR,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_render_create_cursor_request_t xcb_out;
-
- xcb_out.cid = cid;
- xcb_out.source = source;
- xcb_out.x = x;
- xcb_out.y = y;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_render_transform_next
- **
- ** @param xcb_render_transform_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_render_transform_next (xcb_render_transform_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_render_transform_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_render_transform_end
- **
- ** @param xcb_render_transform_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_render_transform_end (xcb_render_transform_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_set_picture_transform_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_picture_t picture
- ** @param xcb_render_transform_t transform
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_set_picture_transform_checked (xcb_connection_t *c /**< */,
- xcb_render_picture_t picture /**< */,
- xcb_render_transform_t transform /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_SET_PICTURE_TRANSFORM,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_render_set_picture_transform_request_t xcb_out;
-
- xcb_out.picture = picture;
- xcb_out.transform = transform;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_set_picture_transform
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_picture_t picture
- ** @param xcb_render_transform_t transform
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_set_picture_transform (xcb_connection_t *c /**< */,
- xcb_render_picture_t picture /**< */,
- xcb_render_transform_t transform /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_SET_PICTURE_TRANSFORM,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_render_set_picture_transform_request_t xcb_out;
-
- xcb_out.picture = picture;
- xcb_out.transform = transform;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-int
-xcb_render_query_filters_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_render_query_filters_reply_t *_aux = (xcb_render_query_filters_reply_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
- unsigned int i;
- unsigned int xcb_tmp_len;
-
- xcb_block_len += sizeof(xcb_render_query_filters_reply_t);
- xcb_tmp += xcb_block_len;
- /* aliases */
- xcb_block_len += _aux->num_aliases * sizeof(uint16_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(uint16_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* filters */
- for(i=0; i<_aux->num_filters; i++) {
- xcb_tmp_len = xcb_str_sizeof(xcb_tmp);
- xcb_block_len += xcb_tmp_len;
- xcb_tmp += xcb_tmp_len;
- }
- xcb_align_to = ALIGNOF(xcb_str_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_render_query_filters_cookie_t xcb_render_query_filters
- **
- ** @param xcb_connection_t *c
- ** @param xcb_drawable_t drawable
- ** @returns xcb_render_query_filters_cookie_t
- **
- *****************************************************************************/
-
-xcb_render_query_filters_cookie_t
-xcb_render_query_filters (xcb_connection_t *c /**< */,
- xcb_drawable_t drawable /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_QUERY_FILTERS,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_render_query_filters_cookie_t xcb_ret;
- xcb_render_query_filters_request_t xcb_out;
-
- xcb_out.drawable = drawable;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_render_query_filters_cookie_t xcb_render_query_filters_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_drawable_t drawable
- ** @returns xcb_render_query_filters_cookie_t
- **
- *****************************************************************************/
-
-xcb_render_query_filters_cookie_t
-xcb_render_query_filters_unchecked (xcb_connection_t *c /**< */,
- xcb_drawable_t drawable /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_QUERY_FILTERS,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_render_query_filters_cookie_t xcb_ret;
- xcb_render_query_filters_request_t xcb_out;
-
- xcb_out.drawable = drawable;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** uint16_t * xcb_render_query_filters_aliases
- **
- ** @param const xcb_render_query_filters_reply_t *R
- ** @returns uint16_t *
- **
- *****************************************************************************/
-
-uint16_t *
-xcb_render_query_filters_aliases (const xcb_render_query_filters_reply_t *R /**< */)
-{
- return (uint16_t *) (R + 1);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_render_query_filters_aliases_length
- **
- ** @param const xcb_render_query_filters_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_render_query_filters_aliases_length (const xcb_render_query_filters_reply_t *R /**< */)
-{
- return R->num_aliases;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_render_query_filters_aliases_end
- **
- ** @param const xcb_render_query_filters_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_render_query_filters_aliases_end (const xcb_render_query_filters_reply_t *R /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = ((uint16_t *) (R + 1)) + (R->num_aliases);
- i.rem = 0;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_render_query_filters_filters_length
- **
- ** @param const xcb_render_query_filters_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_render_query_filters_filters_length (const xcb_render_query_filters_reply_t *R /**< */)
-{
- return R->num_filters;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_str_iterator_t xcb_render_query_filters_filters_iterator
- **
- ** @param const xcb_render_query_filters_reply_t *R
- ** @returns xcb_str_iterator_t
- **
- *****************************************************************************/
-
-xcb_str_iterator_t
-xcb_render_query_filters_filters_iterator (const xcb_render_query_filters_reply_t *R /**< */)
-{
- xcb_str_iterator_t i;
- xcb_generic_iterator_t prev = xcb_render_query_filters_aliases_end(R);
- i.data = (xcb_str_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_str_t, prev.index));
- i.rem = R->num_filters;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_render_query_filters_reply_t * xcb_render_query_filters_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_query_filters_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_render_query_filters_reply_t *
- **
- *****************************************************************************/
-
-xcb_render_query_filters_reply_t *
-xcb_render_query_filters_reply (xcb_connection_t *c /**< */,
- xcb_render_query_filters_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_render_query_filters_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-int
-xcb_render_set_picture_filter_sizeof (const void *_buffer /**< */,
- uint32_t values_len /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_render_set_picture_filter_request_t *_aux = (xcb_render_set_picture_filter_request_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_render_set_picture_filter_request_t);
- xcb_tmp += xcb_block_len;
- /* filter */
- xcb_block_len += _aux->filter_len * sizeof(char);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(char);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* values */
- xcb_block_len += values_len * sizeof(xcb_render_fixed_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_render_fixed_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_set_picture_filter_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_picture_t picture
- ** @param uint16_t filter_len
- ** @param const char *filter
- ** @param uint32_t values_len
- ** @param const xcb_render_fixed_t *values
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_set_picture_filter_checked (xcb_connection_t *c /**< */,
- xcb_render_picture_t picture /**< */,
- uint16_t filter_len /**< */,
- const char *filter /**< */,
- uint32_t values_len /**< */,
- const xcb_render_fixed_t *values /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 6,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_SET_PICTURE_FILTER,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[8];
- xcb_void_cookie_t xcb_ret;
- xcb_render_set_picture_filter_request_t xcb_out;
-
- xcb_out.picture = picture;
- xcb_out.filter_len = filter_len;
- memset(xcb_out.pad0, 0, 2);
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* char filter */
- xcb_parts[4].iov_base = (char *) filter;
- xcb_parts[4].iov_len = filter_len * sizeof(char);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
- /* xcb_render_fixed_t values */
- xcb_parts[6].iov_base = (char *) values;
- xcb_parts[6].iov_len = values_len * sizeof(xcb_render_fixed_t);
- xcb_parts[7].iov_base = 0;
- xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_set_picture_filter
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_picture_t picture
- ** @param uint16_t filter_len
- ** @param const char *filter
- ** @param uint32_t values_len
- ** @param const xcb_render_fixed_t *values
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_set_picture_filter (xcb_connection_t *c /**< */,
- xcb_render_picture_t picture /**< */,
- uint16_t filter_len /**< */,
- const char *filter /**< */,
- uint32_t values_len /**< */,
- const xcb_render_fixed_t *values /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 6,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_SET_PICTURE_FILTER,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[8];
- xcb_void_cookie_t xcb_ret;
- xcb_render_set_picture_filter_request_t xcb_out;
-
- xcb_out.picture = picture;
- xcb_out.filter_len = filter_len;
- memset(xcb_out.pad0, 0, 2);
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* char filter */
- xcb_parts[4].iov_base = (char *) filter;
- xcb_parts[4].iov_len = filter_len * sizeof(char);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
- /* xcb_render_fixed_t values */
- xcb_parts[6].iov_base = (char *) values;
- xcb_parts[6].iov_len = values_len * sizeof(xcb_render_fixed_t);
- xcb_parts[7].iov_base = 0;
- xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_render_animcursorelt_next
- **
- ** @param xcb_render_animcursorelt_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_render_animcursorelt_next (xcb_render_animcursorelt_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_render_animcursorelt_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_render_animcursorelt_end
- **
- ** @param xcb_render_animcursorelt_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_render_animcursorelt_end (xcb_render_animcursorelt_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-int
-xcb_render_create_anim_cursor_sizeof (const void *_buffer /**< */,
- uint32_t cursors_len /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_render_create_anim_cursor_request_t);
- xcb_tmp += xcb_block_len;
- /* cursors */
- xcb_block_len += cursors_len * sizeof(xcb_render_animcursorelt_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_render_animcursorelt_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_create_anim_cursor_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_cursor_t cid
- ** @param uint32_t cursors_len
- ** @param const xcb_render_animcursorelt_t *cursors
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_create_anim_cursor_checked (xcb_connection_t *c /**< */,
- xcb_cursor_t cid /**< */,
- uint32_t cursors_len /**< */,
- const xcb_render_animcursorelt_t *cursors /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_CREATE_ANIM_CURSOR,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_render_create_anim_cursor_request_t xcb_out;
-
- xcb_out.cid = cid;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_render_animcursorelt_t cursors */
- xcb_parts[4].iov_base = (char *) cursors;
- xcb_parts[4].iov_len = cursors_len * sizeof(xcb_render_animcursorelt_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_create_anim_cursor
- **
- ** @param xcb_connection_t *c
- ** @param xcb_cursor_t cid
- ** @param uint32_t cursors_len
- ** @param const xcb_render_animcursorelt_t *cursors
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_create_anim_cursor (xcb_connection_t *c /**< */,
- xcb_cursor_t cid /**< */,
- uint32_t cursors_len /**< */,
- const xcb_render_animcursorelt_t *cursors /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_CREATE_ANIM_CURSOR,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_render_create_anim_cursor_request_t xcb_out;
-
- xcb_out.cid = cid;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_render_animcursorelt_t cursors */
- xcb_parts[4].iov_base = (char *) cursors;
- xcb_parts[4].iov_len = cursors_len * sizeof(xcb_render_animcursorelt_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_render_spanfix_next
- **
- ** @param xcb_render_spanfix_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_render_spanfix_next (xcb_render_spanfix_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_render_spanfix_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_render_spanfix_end
- **
- ** @param xcb_render_spanfix_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_render_spanfix_end (xcb_render_spanfix_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_render_trap_next
- **
- ** @param xcb_render_trap_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_render_trap_next (xcb_render_trap_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_render_trap_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_render_trap_end
- **
- ** @param xcb_render_trap_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_render_trap_end (xcb_render_trap_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-int
-xcb_render_add_traps_sizeof (const void *_buffer /**< */,
- uint32_t traps_len /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_render_add_traps_request_t);
- xcb_tmp += xcb_block_len;
- /* traps */
- xcb_block_len += traps_len * sizeof(xcb_render_trap_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_render_trap_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_add_traps_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_picture_t picture
- ** @param int16_t x_off
- ** @param int16_t y_off
- ** @param uint32_t traps_len
- ** @param const xcb_render_trap_t *traps
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_add_traps_checked (xcb_connection_t *c /**< */,
- xcb_render_picture_t picture /**< */,
- int16_t x_off /**< */,
- int16_t y_off /**< */,
- uint32_t traps_len /**< */,
- const xcb_render_trap_t *traps /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_ADD_TRAPS,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_render_add_traps_request_t xcb_out;
-
- xcb_out.picture = picture;
- xcb_out.x_off = x_off;
- xcb_out.y_off = y_off;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_render_trap_t traps */
- xcb_parts[4].iov_base = (char *) traps;
- xcb_parts[4].iov_len = traps_len * sizeof(xcb_render_trap_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_add_traps
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_picture_t picture
- ** @param int16_t x_off
- ** @param int16_t y_off
- ** @param uint32_t traps_len
- ** @param const xcb_render_trap_t *traps
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_add_traps (xcb_connection_t *c /**< */,
- xcb_render_picture_t picture /**< */,
- int16_t x_off /**< */,
- int16_t y_off /**< */,
- uint32_t traps_len /**< */,
- const xcb_render_trap_t *traps /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_ADD_TRAPS,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_render_add_traps_request_t xcb_out;
-
- xcb_out.picture = picture;
- xcb_out.x_off = x_off;
- xcb_out.y_off = y_off;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_render_trap_t traps */
- xcb_parts[4].iov_base = (char *) traps;
- xcb_parts[4].iov_len = traps_len * sizeof(xcb_render_trap_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_create_solid_fill_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_picture_t picture
- ** @param xcb_render_color_t color
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_create_solid_fill_checked (xcb_connection_t *c /**< */,
- xcb_render_picture_t picture /**< */,
- xcb_render_color_t color /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_CREATE_SOLID_FILL,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_render_create_solid_fill_request_t xcb_out;
-
- xcb_out.picture = picture;
- xcb_out.color = color;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_create_solid_fill
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_picture_t picture
- ** @param xcb_render_color_t color
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_create_solid_fill (xcb_connection_t *c /**< */,
- xcb_render_picture_t picture /**< */,
- xcb_render_color_t color /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_CREATE_SOLID_FILL,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_render_create_solid_fill_request_t xcb_out;
-
- xcb_out.picture = picture;
- xcb_out.color = color;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-int
-xcb_render_create_linear_gradient_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_render_create_linear_gradient_request_t *_aux = (xcb_render_create_linear_gradient_request_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_render_create_linear_gradient_request_t);
- xcb_tmp += xcb_block_len;
- /* stops */
- xcb_block_len += _aux->num_stops * sizeof(xcb_render_fixed_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_render_fixed_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* colors */
- xcb_block_len += _aux->num_stops * sizeof(xcb_render_color_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_render_color_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_create_linear_gradient_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_picture_t picture
- ** @param xcb_render_pointfix_t p1
- ** @param xcb_render_pointfix_t p2
- ** @param uint32_t num_stops
- ** @param const xcb_render_fixed_t *stops
- ** @param const xcb_render_color_t *colors
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_create_linear_gradient_checked (xcb_connection_t *c /**< */,
- xcb_render_picture_t picture /**< */,
- xcb_render_pointfix_t p1 /**< */,
- xcb_render_pointfix_t p2 /**< */,
- uint32_t num_stops /**< */,
- const xcb_render_fixed_t *stops /**< */,
- const xcb_render_color_t *colors /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 6,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_CREATE_LINEAR_GRADIENT,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[8];
- xcb_void_cookie_t xcb_ret;
- xcb_render_create_linear_gradient_request_t xcb_out;
-
- xcb_out.picture = picture;
- xcb_out.p1 = p1;
- xcb_out.p2 = p2;
- xcb_out.num_stops = num_stops;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_render_fixed_t stops */
- xcb_parts[4].iov_base = (char *) stops;
- xcb_parts[4].iov_len = num_stops * sizeof(xcb_render_fixed_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
- /* xcb_render_color_t colors */
- xcb_parts[6].iov_base = (char *) colors;
- xcb_parts[6].iov_len = num_stops * sizeof(xcb_render_color_t);
- xcb_parts[7].iov_base = 0;
- xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_create_linear_gradient
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_picture_t picture
- ** @param xcb_render_pointfix_t p1
- ** @param xcb_render_pointfix_t p2
- ** @param uint32_t num_stops
- ** @param const xcb_render_fixed_t *stops
- ** @param const xcb_render_color_t *colors
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_create_linear_gradient (xcb_connection_t *c /**< */,
- xcb_render_picture_t picture /**< */,
- xcb_render_pointfix_t p1 /**< */,
- xcb_render_pointfix_t p2 /**< */,
- uint32_t num_stops /**< */,
- const xcb_render_fixed_t *stops /**< */,
- const xcb_render_color_t *colors /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 6,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_CREATE_LINEAR_GRADIENT,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[8];
- xcb_void_cookie_t xcb_ret;
- xcb_render_create_linear_gradient_request_t xcb_out;
-
- xcb_out.picture = picture;
- xcb_out.p1 = p1;
- xcb_out.p2 = p2;
- xcb_out.num_stops = num_stops;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_render_fixed_t stops */
- xcb_parts[4].iov_base = (char *) stops;
- xcb_parts[4].iov_len = num_stops * sizeof(xcb_render_fixed_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
- /* xcb_render_color_t colors */
- xcb_parts[6].iov_base = (char *) colors;
- xcb_parts[6].iov_len = num_stops * sizeof(xcb_render_color_t);
- xcb_parts[7].iov_base = 0;
- xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-int
-xcb_render_create_radial_gradient_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_render_create_radial_gradient_request_t *_aux = (xcb_render_create_radial_gradient_request_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_render_create_radial_gradient_request_t);
- xcb_tmp += xcb_block_len;
- /* stops */
- xcb_block_len += _aux->num_stops * sizeof(xcb_render_fixed_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_render_fixed_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* colors */
- xcb_block_len += _aux->num_stops * sizeof(xcb_render_color_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_render_color_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_create_radial_gradient_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_picture_t picture
- ** @param xcb_render_pointfix_t inner
- ** @param xcb_render_pointfix_t outer
- ** @param xcb_render_fixed_t inner_radius
- ** @param xcb_render_fixed_t outer_radius
- ** @param uint32_t num_stops
- ** @param const xcb_render_fixed_t *stops
- ** @param const xcb_render_color_t *colors
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_create_radial_gradient_checked (xcb_connection_t *c /**< */,
- xcb_render_picture_t picture /**< */,
- xcb_render_pointfix_t inner /**< */,
- xcb_render_pointfix_t outer /**< */,
- xcb_render_fixed_t inner_radius /**< */,
- xcb_render_fixed_t outer_radius /**< */,
- uint32_t num_stops /**< */,
- const xcb_render_fixed_t *stops /**< */,
- const xcb_render_color_t *colors /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 6,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_CREATE_RADIAL_GRADIENT,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[8];
- xcb_void_cookie_t xcb_ret;
- xcb_render_create_radial_gradient_request_t xcb_out;
-
- xcb_out.picture = picture;
- xcb_out.inner = inner;
- xcb_out.outer = outer;
- xcb_out.inner_radius = inner_radius;
- xcb_out.outer_radius = outer_radius;
- xcb_out.num_stops = num_stops;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_render_fixed_t stops */
- xcb_parts[4].iov_base = (char *) stops;
- xcb_parts[4].iov_len = num_stops * sizeof(xcb_render_fixed_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
- /* xcb_render_color_t colors */
- xcb_parts[6].iov_base = (char *) colors;
- xcb_parts[6].iov_len = num_stops * sizeof(xcb_render_color_t);
- xcb_parts[7].iov_base = 0;
- xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_create_radial_gradient
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_picture_t picture
- ** @param xcb_render_pointfix_t inner
- ** @param xcb_render_pointfix_t outer
- ** @param xcb_render_fixed_t inner_radius
- ** @param xcb_render_fixed_t outer_radius
- ** @param uint32_t num_stops
- ** @param const xcb_render_fixed_t *stops
- ** @param const xcb_render_color_t *colors
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_create_radial_gradient (xcb_connection_t *c /**< */,
- xcb_render_picture_t picture /**< */,
- xcb_render_pointfix_t inner /**< */,
- xcb_render_pointfix_t outer /**< */,
- xcb_render_fixed_t inner_radius /**< */,
- xcb_render_fixed_t outer_radius /**< */,
- uint32_t num_stops /**< */,
- const xcb_render_fixed_t *stops /**< */,
- const xcb_render_color_t *colors /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 6,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_CREATE_RADIAL_GRADIENT,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[8];
- xcb_void_cookie_t xcb_ret;
- xcb_render_create_radial_gradient_request_t xcb_out;
-
- xcb_out.picture = picture;
- xcb_out.inner = inner;
- xcb_out.outer = outer;
- xcb_out.inner_radius = inner_radius;
- xcb_out.outer_radius = outer_radius;
- xcb_out.num_stops = num_stops;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_render_fixed_t stops */
- xcb_parts[4].iov_base = (char *) stops;
- xcb_parts[4].iov_len = num_stops * sizeof(xcb_render_fixed_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
- /* xcb_render_color_t colors */
- xcb_parts[6].iov_base = (char *) colors;
- xcb_parts[6].iov_len = num_stops * sizeof(xcb_render_color_t);
- xcb_parts[7].iov_base = 0;
- xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-int
-xcb_render_create_conical_gradient_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_render_create_conical_gradient_request_t *_aux = (xcb_render_create_conical_gradient_request_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_render_create_conical_gradient_request_t);
- xcb_tmp += xcb_block_len;
- /* stops */
- xcb_block_len += _aux->num_stops * sizeof(xcb_render_fixed_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_render_fixed_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* colors */
- xcb_block_len += _aux->num_stops * sizeof(xcb_render_color_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_render_color_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_create_conical_gradient_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_picture_t picture
- ** @param xcb_render_pointfix_t center
- ** @param xcb_render_fixed_t angle
- ** @param uint32_t num_stops
- ** @param const xcb_render_fixed_t *stops
- ** @param const xcb_render_color_t *colors
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_create_conical_gradient_checked (xcb_connection_t *c /**< */,
- xcb_render_picture_t picture /**< */,
- xcb_render_pointfix_t center /**< */,
- xcb_render_fixed_t angle /**< */,
- uint32_t num_stops /**< */,
- const xcb_render_fixed_t *stops /**< */,
- const xcb_render_color_t *colors /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 6,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_CREATE_CONICAL_GRADIENT,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[8];
- xcb_void_cookie_t xcb_ret;
- xcb_render_create_conical_gradient_request_t xcb_out;
-
- xcb_out.picture = picture;
- xcb_out.center = center;
- xcb_out.angle = angle;
- xcb_out.num_stops = num_stops;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_render_fixed_t stops */
- xcb_parts[4].iov_base = (char *) stops;
- xcb_parts[4].iov_len = num_stops * sizeof(xcb_render_fixed_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
- /* xcb_render_color_t colors */
- xcb_parts[6].iov_base = (char *) colors;
- xcb_parts[6].iov_len = num_stops * sizeof(xcb_render_color_t);
- xcb_parts[7].iov_base = 0;
- xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_render_create_conical_gradient
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_picture_t picture
- ** @param xcb_render_pointfix_t center
- ** @param xcb_render_fixed_t angle
- ** @param uint32_t num_stops
- ** @param const xcb_render_fixed_t *stops
- ** @param const xcb_render_color_t *colors
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_render_create_conical_gradient (xcb_connection_t *c /**< */,
- xcb_render_picture_t picture /**< */,
- xcb_render_pointfix_t center /**< */,
- xcb_render_fixed_t angle /**< */,
- uint32_t num_stops /**< */,
- const xcb_render_fixed_t *stops /**< */,
- const xcb_render_color_t *colors /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 6,
- /* ext */ &xcb_render_id,
- /* opcode */ XCB_RENDER_CREATE_CONICAL_GRADIENT,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[8];
- xcb_void_cookie_t xcb_ret;
- xcb_render_create_conical_gradient_request_t xcb_out;
-
- xcb_out.picture = picture;
- xcb_out.center = center;
- xcb_out.angle = angle;
- xcb_out.num_stops = num_stops;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_render_fixed_t stops */
- xcb_parts[4].iov_base = (char *) stops;
- xcb_parts[4].iov_len = num_stops * sizeof(xcb_render_fixed_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
- /* xcb_render_color_t colors */
- xcb_parts[6].iov_base = (char *) colors;
- xcb_parts[6].iov_len = num_stops * sizeof(xcb_render_color_t);
- xcb_parts[7].iov_base = 0;
- xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
diff --git a/src/3rdparty/xcb/libxcb/shape.c b/src/3rdparty/xcb/libxcb/shape.c
deleted file mode 100644
index 98621c4983..0000000000
--- a/src/3rdparty/xcb/libxcb/shape.c
+++ /dev/null
@@ -1,1102 +0,0 @@
-/*
- * This file generated automatically from shape.xml by c_client.py.
- * Edit at your peril.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-#include <stddef.h> /* for offsetof() */
-#include "xcbext.h"
-#include "shape.h"
-
-#define ALIGNOF(type) offsetof(struct { char dummy; type member; }, member)
-#include "xproto.h"
-
-xcb_extension_t xcb_shape_id = { "SHAPE", 0 };
-
-
-/*****************************************************************************
- **
- ** void xcb_shape_op_next
- **
- ** @param xcb_shape_op_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_shape_op_next (xcb_shape_op_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_shape_op_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_shape_op_end
- **
- ** @param xcb_shape_op_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_shape_op_end (xcb_shape_op_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_shape_kind_next
- **
- ** @param xcb_shape_kind_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_shape_kind_next (xcb_shape_kind_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_shape_kind_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_shape_kind_end
- **
- ** @param xcb_shape_kind_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_shape_kind_end (xcb_shape_kind_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_shape_query_version_cookie_t xcb_shape_query_version
- **
- ** @param xcb_connection_t *c
- ** @returns xcb_shape_query_version_cookie_t
- **
- *****************************************************************************/
-
-xcb_shape_query_version_cookie_t
-xcb_shape_query_version (xcb_connection_t *c /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_shape_id,
- /* opcode */ XCB_SHAPE_QUERY_VERSION,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_shape_query_version_cookie_t xcb_ret;
- xcb_shape_query_version_request_t xcb_out;
-
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_shape_query_version_cookie_t xcb_shape_query_version_unchecked
- **
- ** @param xcb_connection_t *c
- ** @returns xcb_shape_query_version_cookie_t
- **
- *****************************************************************************/
-
-xcb_shape_query_version_cookie_t
-xcb_shape_query_version_unchecked (xcb_connection_t *c /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_shape_id,
- /* opcode */ XCB_SHAPE_QUERY_VERSION,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_shape_query_version_cookie_t xcb_ret;
- xcb_shape_query_version_request_t xcb_out;
-
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_shape_query_version_reply_t * xcb_shape_query_version_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_shape_query_version_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_shape_query_version_reply_t *
- **
- *****************************************************************************/
-
-xcb_shape_query_version_reply_t *
-xcb_shape_query_version_reply (xcb_connection_t *c /**< */,
- xcb_shape_query_version_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_shape_query_version_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-int
-xcb_shape_rectangles_sizeof (const void *_buffer /**< */,
- uint32_t rectangles_len /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_shape_rectangles_request_t);
- xcb_tmp += xcb_block_len;
- /* rectangles */
- xcb_block_len += rectangles_len * sizeof(xcb_rectangle_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_rectangle_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_shape_rectangles_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_shape_op_t operation
- ** @param xcb_shape_kind_t destination_kind
- ** @param uint8_t ordering
- ** @param xcb_window_t destination_window
- ** @param int16_t x_offset
- ** @param int16_t y_offset
- ** @param uint32_t rectangles_len
- ** @param const xcb_rectangle_t *rectangles
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_shape_rectangles_checked (xcb_connection_t *c /**< */,
- xcb_shape_op_t operation /**< */,
- xcb_shape_kind_t destination_kind /**< */,
- uint8_t ordering /**< */,
- xcb_window_t destination_window /**< */,
- int16_t x_offset /**< */,
- int16_t y_offset /**< */,
- uint32_t rectangles_len /**< */,
- const xcb_rectangle_t *rectangles /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_shape_id,
- /* opcode */ XCB_SHAPE_RECTANGLES,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_shape_rectangles_request_t xcb_out;
-
- xcb_out.operation = operation;
- xcb_out.destination_kind = destination_kind;
- xcb_out.ordering = ordering;
- xcb_out.pad0 = 0;
- xcb_out.destination_window = destination_window;
- xcb_out.x_offset = x_offset;
- xcb_out.y_offset = y_offset;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_rectangle_t rectangles */
- xcb_parts[4].iov_base = (char *) rectangles;
- xcb_parts[4].iov_len = rectangles_len * sizeof(xcb_rectangle_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_shape_rectangles
- **
- ** @param xcb_connection_t *c
- ** @param xcb_shape_op_t operation
- ** @param xcb_shape_kind_t destination_kind
- ** @param uint8_t ordering
- ** @param xcb_window_t destination_window
- ** @param int16_t x_offset
- ** @param int16_t y_offset
- ** @param uint32_t rectangles_len
- ** @param const xcb_rectangle_t *rectangles
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_shape_rectangles (xcb_connection_t *c /**< */,
- xcb_shape_op_t operation /**< */,
- xcb_shape_kind_t destination_kind /**< */,
- uint8_t ordering /**< */,
- xcb_window_t destination_window /**< */,
- int16_t x_offset /**< */,
- int16_t y_offset /**< */,
- uint32_t rectangles_len /**< */,
- const xcb_rectangle_t *rectangles /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_shape_id,
- /* opcode */ XCB_SHAPE_RECTANGLES,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_shape_rectangles_request_t xcb_out;
-
- xcb_out.operation = operation;
- xcb_out.destination_kind = destination_kind;
- xcb_out.ordering = ordering;
- xcb_out.pad0 = 0;
- xcb_out.destination_window = destination_window;
- xcb_out.x_offset = x_offset;
- xcb_out.y_offset = y_offset;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_rectangle_t rectangles */
- xcb_parts[4].iov_base = (char *) rectangles;
- xcb_parts[4].iov_len = rectangles_len * sizeof(xcb_rectangle_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_shape_mask_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_shape_op_t operation
- ** @param xcb_shape_kind_t destination_kind
- ** @param xcb_window_t destination_window
- ** @param int16_t x_offset
- ** @param int16_t y_offset
- ** @param xcb_pixmap_t source_bitmap
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_shape_mask_checked (xcb_connection_t *c /**< */,
- xcb_shape_op_t operation /**< */,
- xcb_shape_kind_t destination_kind /**< */,
- xcb_window_t destination_window /**< */,
- int16_t x_offset /**< */,
- int16_t y_offset /**< */,
- xcb_pixmap_t source_bitmap /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_shape_id,
- /* opcode */ XCB_SHAPE_MASK,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_shape_mask_request_t xcb_out;
-
- xcb_out.operation = operation;
- xcb_out.destination_kind = destination_kind;
- memset(xcb_out.pad0, 0, 2);
- xcb_out.destination_window = destination_window;
- xcb_out.x_offset = x_offset;
- xcb_out.y_offset = y_offset;
- xcb_out.source_bitmap = source_bitmap;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_shape_mask
- **
- ** @param xcb_connection_t *c
- ** @param xcb_shape_op_t operation
- ** @param xcb_shape_kind_t destination_kind
- ** @param xcb_window_t destination_window
- ** @param int16_t x_offset
- ** @param int16_t y_offset
- ** @param xcb_pixmap_t source_bitmap
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_shape_mask (xcb_connection_t *c /**< */,
- xcb_shape_op_t operation /**< */,
- xcb_shape_kind_t destination_kind /**< */,
- xcb_window_t destination_window /**< */,
- int16_t x_offset /**< */,
- int16_t y_offset /**< */,
- xcb_pixmap_t source_bitmap /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_shape_id,
- /* opcode */ XCB_SHAPE_MASK,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_shape_mask_request_t xcb_out;
-
- xcb_out.operation = operation;
- xcb_out.destination_kind = destination_kind;
- memset(xcb_out.pad0, 0, 2);
- xcb_out.destination_window = destination_window;
- xcb_out.x_offset = x_offset;
- xcb_out.y_offset = y_offset;
- xcb_out.source_bitmap = source_bitmap;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_shape_combine_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_shape_op_t operation
- ** @param xcb_shape_kind_t destination_kind
- ** @param xcb_shape_kind_t source_kind
- ** @param xcb_window_t destination_window
- ** @param int16_t x_offset
- ** @param int16_t y_offset
- ** @param xcb_window_t source_window
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_shape_combine_checked (xcb_connection_t *c /**< */,
- xcb_shape_op_t operation /**< */,
- xcb_shape_kind_t destination_kind /**< */,
- xcb_shape_kind_t source_kind /**< */,
- xcb_window_t destination_window /**< */,
- int16_t x_offset /**< */,
- int16_t y_offset /**< */,
- xcb_window_t source_window /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_shape_id,
- /* opcode */ XCB_SHAPE_COMBINE,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_shape_combine_request_t xcb_out;
-
- xcb_out.operation = operation;
- xcb_out.destination_kind = destination_kind;
- xcb_out.source_kind = source_kind;
- xcb_out.pad0 = 0;
- xcb_out.destination_window = destination_window;
- xcb_out.x_offset = x_offset;
- xcb_out.y_offset = y_offset;
- xcb_out.source_window = source_window;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_shape_combine
- **
- ** @param xcb_connection_t *c
- ** @param xcb_shape_op_t operation
- ** @param xcb_shape_kind_t destination_kind
- ** @param xcb_shape_kind_t source_kind
- ** @param xcb_window_t destination_window
- ** @param int16_t x_offset
- ** @param int16_t y_offset
- ** @param xcb_window_t source_window
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_shape_combine (xcb_connection_t *c /**< */,
- xcb_shape_op_t operation /**< */,
- xcb_shape_kind_t destination_kind /**< */,
- xcb_shape_kind_t source_kind /**< */,
- xcb_window_t destination_window /**< */,
- int16_t x_offset /**< */,
- int16_t y_offset /**< */,
- xcb_window_t source_window /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_shape_id,
- /* opcode */ XCB_SHAPE_COMBINE,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_shape_combine_request_t xcb_out;
-
- xcb_out.operation = operation;
- xcb_out.destination_kind = destination_kind;
- xcb_out.source_kind = source_kind;
- xcb_out.pad0 = 0;
- xcb_out.destination_window = destination_window;
- xcb_out.x_offset = x_offset;
- xcb_out.y_offset = y_offset;
- xcb_out.source_window = source_window;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_shape_offset_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_shape_kind_t destination_kind
- ** @param xcb_window_t destination_window
- ** @param int16_t x_offset
- ** @param int16_t y_offset
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_shape_offset_checked (xcb_connection_t *c /**< */,
- xcb_shape_kind_t destination_kind /**< */,
- xcb_window_t destination_window /**< */,
- int16_t x_offset /**< */,
- int16_t y_offset /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_shape_id,
- /* opcode */ XCB_SHAPE_OFFSET,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_shape_offset_request_t xcb_out;
-
- xcb_out.destination_kind = destination_kind;
- memset(xcb_out.pad0, 0, 3);
- xcb_out.destination_window = destination_window;
- xcb_out.x_offset = x_offset;
- xcb_out.y_offset = y_offset;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_shape_offset
- **
- ** @param xcb_connection_t *c
- ** @param xcb_shape_kind_t destination_kind
- ** @param xcb_window_t destination_window
- ** @param int16_t x_offset
- ** @param int16_t y_offset
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_shape_offset (xcb_connection_t *c /**< */,
- xcb_shape_kind_t destination_kind /**< */,
- xcb_window_t destination_window /**< */,
- int16_t x_offset /**< */,
- int16_t y_offset /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_shape_id,
- /* opcode */ XCB_SHAPE_OFFSET,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_shape_offset_request_t xcb_out;
-
- xcb_out.destination_kind = destination_kind;
- memset(xcb_out.pad0, 0, 3);
- xcb_out.destination_window = destination_window;
- xcb_out.x_offset = x_offset;
- xcb_out.y_offset = y_offset;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_shape_query_extents_cookie_t xcb_shape_query_extents
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t destination_window
- ** @returns xcb_shape_query_extents_cookie_t
- **
- *****************************************************************************/
-
-xcb_shape_query_extents_cookie_t
-xcb_shape_query_extents (xcb_connection_t *c /**< */,
- xcb_window_t destination_window /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_shape_id,
- /* opcode */ XCB_SHAPE_QUERY_EXTENTS,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_shape_query_extents_cookie_t xcb_ret;
- xcb_shape_query_extents_request_t xcb_out;
-
- xcb_out.destination_window = destination_window;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_shape_query_extents_cookie_t xcb_shape_query_extents_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t destination_window
- ** @returns xcb_shape_query_extents_cookie_t
- **
- *****************************************************************************/
-
-xcb_shape_query_extents_cookie_t
-xcb_shape_query_extents_unchecked (xcb_connection_t *c /**< */,
- xcb_window_t destination_window /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_shape_id,
- /* opcode */ XCB_SHAPE_QUERY_EXTENTS,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_shape_query_extents_cookie_t xcb_ret;
- xcb_shape_query_extents_request_t xcb_out;
-
- xcb_out.destination_window = destination_window;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_shape_query_extents_reply_t * xcb_shape_query_extents_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_shape_query_extents_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_shape_query_extents_reply_t *
- **
- *****************************************************************************/
-
-xcb_shape_query_extents_reply_t *
-xcb_shape_query_extents_reply (xcb_connection_t *c /**< */,
- xcb_shape_query_extents_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_shape_query_extents_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_shape_select_input_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t destination_window
- ** @param uint8_t enable
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_shape_select_input_checked (xcb_connection_t *c /**< */,
- xcb_window_t destination_window /**< */,
- uint8_t enable /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_shape_id,
- /* opcode */ XCB_SHAPE_SELECT_INPUT,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_shape_select_input_request_t xcb_out;
-
- xcb_out.destination_window = destination_window;
- xcb_out.enable = enable;
- memset(xcb_out.pad0, 0, 3);
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_shape_select_input
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t destination_window
- ** @param uint8_t enable
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_shape_select_input (xcb_connection_t *c /**< */,
- xcb_window_t destination_window /**< */,
- uint8_t enable /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_shape_id,
- /* opcode */ XCB_SHAPE_SELECT_INPUT,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_shape_select_input_request_t xcb_out;
-
- xcb_out.destination_window = destination_window;
- xcb_out.enable = enable;
- memset(xcb_out.pad0, 0, 3);
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_shape_input_selected_cookie_t xcb_shape_input_selected
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t destination_window
- ** @returns xcb_shape_input_selected_cookie_t
- **
- *****************************************************************************/
-
-xcb_shape_input_selected_cookie_t
-xcb_shape_input_selected (xcb_connection_t *c /**< */,
- xcb_window_t destination_window /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_shape_id,
- /* opcode */ XCB_SHAPE_INPUT_SELECTED,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_shape_input_selected_cookie_t xcb_ret;
- xcb_shape_input_selected_request_t xcb_out;
-
- xcb_out.destination_window = destination_window;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_shape_input_selected_cookie_t xcb_shape_input_selected_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t destination_window
- ** @returns xcb_shape_input_selected_cookie_t
- **
- *****************************************************************************/
-
-xcb_shape_input_selected_cookie_t
-xcb_shape_input_selected_unchecked (xcb_connection_t *c /**< */,
- xcb_window_t destination_window /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_shape_id,
- /* opcode */ XCB_SHAPE_INPUT_SELECTED,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_shape_input_selected_cookie_t xcb_ret;
- xcb_shape_input_selected_request_t xcb_out;
-
- xcb_out.destination_window = destination_window;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_shape_input_selected_reply_t * xcb_shape_input_selected_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_shape_input_selected_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_shape_input_selected_reply_t *
- **
- *****************************************************************************/
-
-xcb_shape_input_selected_reply_t *
-xcb_shape_input_selected_reply (xcb_connection_t *c /**< */,
- xcb_shape_input_selected_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_shape_input_selected_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-int
-xcb_shape_get_rectangles_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_shape_get_rectangles_reply_t *_aux = (xcb_shape_get_rectangles_reply_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_shape_get_rectangles_reply_t);
- xcb_tmp += xcb_block_len;
- /* rectangles */
- xcb_block_len += _aux->rectangles_len * sizeof(xcb_rectangle_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_rectangle_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_shape_get_rectangles_cookie_t xcb_shape_get_rectangles
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @param xcb_shape_kind_t source_kind
- ** @returns xcb_shape_get_rectangles_cookie_t
- **
- *****************************************************************************/
-
-xcb_shape_get_rectangles_cookie_t
-xcb_shape_get_rectangles (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */,
- xcb_shape_kind_t source_kind /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_shape_id,
- /* opcode */ XCB_SHAPE_GET_RECTANGLES,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_shape_get_rectangles_cookie_t xcb_ret;
- xcb_shape_get_rectangles_request_t xcb_out;
-
- xcb_out.window = window;
- xcb_out.source_kind = source_kind;
- memset(xcb_out.pad0, 0, 3);
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_shape_get_rectangles_cookie_t xcb_shape_get_rectangles_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @param xcb_shape_kind_t source_kind
- ** @returns xcb_shape_get_rectangles_cookie_t
- **
- *****************************************************************************/
-
-xcb_shape_get_rectangles_cookie_t
-xcb_shape_get_rectangles_unchecked (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */,
- xcb_shape_kind_t source_kind /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_shape_id,
- /* opcode */ XCB_SHAPE_GET_RECTANGLES,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_shape_get_rectangles_cookie_t xcb_ret;
- xcb_shape_get_rectangles_request_t xcb_out;
-
- xcb_out.window = window;
- xcb_out.source_kind = source_kind;
- memset(xcb_out.pad0, 0, 3);
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_rectangle_t * xcb_shape_get_rectangles_rectangles
- **
- ** @param const xcb_shape_get_rectangles_reply_t *R
- ** @returns xcb_rectangle_t *
- **
- *****************************************************************************/
-
-xcb_rectangle_t *
-xcb_shape_get_rectangles_rectangles (const xcb_shape_get_rectangles_reply_t *R /**< */)
-{
- return (xcb_rectangle_t *) (R + 1);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_shape_get_rectangles_rectangles_length
- **
- ** @param const xcb_shape_get_rectangles_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_shape_get_rectangles_rectangles_length (const xcb_shape_get_rectangles_reply_t *R /**< */)
-{
- return R->rectangles_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_rectangle_iterator_t xcb_shape_get_rectangles_rectangles_iterator
- **
- ** @param const xcb_shape_get_rectangles_reply_t *R
- ** @returns xcb_rectangle_iterator_t
- **
- *****************************************************************************/
-
-xcb_rectangle_iterator_t
-xcb_shape_get_rectangles_rectangles_iterator (const xcb_shape_get_rectangles_reply_t *R /**< */)
-{
- xcb_rectangle_iterator_t i;
- i.data = (xcb_rectangle_t *) (R + 1);
- i.rem = R->rectangles_len;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_shape_get_rectangles_reply_t * xcb_shape_get_rectangles_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_shape_get_rectangles_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_shape_get_rectangles_reply_t *
- **
- *****************************************************************************/
-
-xcb_shape_get_rectangles_reply_t *
-xcb_shape_get_rectangles_reply (xcb_connection_t *c /**< */,
- xcb_shape_get_rectangles_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_shape_get_rectangles_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
diff --git a/src/3rdparty/xcb/libxcb/shm.c b/src/3rdparty/xcb/libxcb/shm.c
deleted file mode 100644
index 0a1c238732..0000000000
--- a/src/3rdparty/xcb/libxcb/shm.c
+++ /dev/null
@@ -1,724 +0,0 @@
-/*
- * This file generated automatically from shm.xml by c_client.py.
- * Edit at your peril.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-#include <stddef.h> /* for offsetof() */
-#include "xcbext.h"
-#include "shm.h"
-
-#define ALIGNOF(type) offsetof(struct { char dummy; type member; }, member)
-#include "xproto.h"
-
-xcb_extension_t xcb_shm_id = { "MIT-SHM", 0 };
-
-
-/*****************************************************************************
- **
- ** void xcb_shm_seg_next
- **
- ** @param xcb_shm_seg_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_shm_seg_next (xcb_shm_seg_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_shm_seg_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_shm_seg_end
- **
- ** @param xcb_shm_seg_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_shm_seg_end (xcb_shm_seg_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_shm_query_version_cookie_t xcb_shm_query_version
- **
- ** @param xcb_connection_t *c
- ** @returns xcb_shm_query_version_cookie_t
- **
- *****************************************************************************/
-
-xcb_shm_query_version_cookie_t
-xcb_shm_query_version (xcb_connection_t *c /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_shm_id,
- /* opcode */ XCB_SHM_QUERY_VERSION,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_shm_query_version_cookie_t xcb_ret;
- xcb_shm_query_version_request_t xcb_out;
-
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_shm_query_version_cookie_t xcb_shm_query_version_unchecked
- **
- ** @param xcb_connection_t *c
- ** @returns xcb_shm_query_version_cookie_t
- **
- *****************************************************************************/
-
-xcb_shm_query_version_cookie_t
-xcb_shm_query_version_unchecked (xcb_connection_t *c /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_shm_id,
- /* opcode */ XCB_SHM_QUERY_VERSION,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_shm_query_version_cookie_t xcb_ret;
- xcb_shm_query_version_request_t xcb_out;
-
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_shm_query_version_reply_t * xcb_shm_query_version_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_shm_query_version_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_shm_query_version_reply_t *
- **
- *****************************************************************************/
-
-xcb_shm_query_version_reply_t *
-xcb_shm_query_version_reply (xcb_connection_t *c /**< */,
- xcb_shm_query_version_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_shm_query_version_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_shm_attach_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_shm_seg_t shmseg
- ** @param uint32_t shmid
- ** @param uint8_t read_only
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_shm_attach_checked (xcb_connection_t *c /**< */,
- xcb_shm_seg_t shmseg /**< */,
- uint32_t shmid /**< */,
- uint8_t read_only /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_shm_id,
- /* opcode */ XCB_SHM_ATTACH,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_shm_attach_request_t xcb_out;
-
- xcb_out.shmseg = shmseg;
- xcb_out.shmid = shmid;
- xcb_out.read_only = read_only;
- memset(xcb_out.pad0, 0, 3);
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_shm_attach
- **
- ** @param xcb_connection_t *c
- ** @param xcb_shm_seg_t shmseg
- ** @param uint32_t shmid
- ** @param uint8_t read_only
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_shm_attach (xcb_connection_t *c /**< */,
- xcb_shm_seg_t shmseg /**< */,
- uint32_t shmid /**< */,
- uint8_t read_only /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_shm_id,
- /* opcode */ XCB_SHM_ATTACH,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_shm_attach_request_t xcb_out;
-
- xcb_out.shmseg = shmseg;
- xcb_out.shmid = shmid;
- xcb_out.read_only = read_only;
- memset(xcb_out.pad0, 0, 3);
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_shm_detach_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_shm_seg_t shmseg
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_shm_detach_checked (xcb_connection_t *c /**< */,
- xcb_shm_seg_t shmseg /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_shm_id,
- /* opcode */ XCB_SHM_DETACH,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_shm_detach_request_t xcb_out;
-
- xcb_out.shmseg = shmseg;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_shm_detach
- **
- ** @param xcb_connection_t *c
- ** @param xcb_shm_seg_t shmseg
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_shm_detach (xcb_connection_t *c /**< */,
- xcb_shm_seg_t shmseg /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_shm_id,
- /* opcode */ XCB_SHM_DETACH,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_shm_detach_request_t xcb_out;
-
- xcb_out.shmseg = shmseg;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_shm_put_image_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_drawable_t drawable
- ** @param xcb_gcontext_t gc
- ** @param uint16_t total_width
- ** @param uint16_t total_height
- ** @param uint16_t src_x
- ** @param uint16_t src_y
- ** @param uint16_t src_width
- ** @param uint16_t src_height
- ** @param int16_t dst_x
- ** @param int16_t dst_y
- ** @param uint8_t depth
- ** @param uint8_t format
- ** @param uint8_t send_event
- ** @param xcb_shm_seg_t shmseg
- ** @param uint32_t offset
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_shm_put_image_checked (xcb_connection_t *c /**< */,
- xcb_drawable_t drawable /**< */,
- xcb_gcontext_t gc /**< */,
- uint16_t total_width /**< */,
- uint16_t total_height /**< */,
- uint16_t src_x /**< */,
- uint16_t src_y /**< */,
- uint16_t src_width /**< */,
- uint16_t src_height /**< */,
- int16_t dst_x /**< */,
- int16_t dst_y /**< */,
- uint8_t depth /**< */,
- uint8_t format /**< */,
- uint8_t send_event /**< */,
- xcb_shm_seg_t shmseg /**< */,
- uint32_t offset /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_shm_id,
- /* opcode */ XCB_SHM_PUT_IMAGE,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_shm_put_image_request_t xcb_out;
-
- xcb_out.drawable = drawable;
- xcb_out.gc = gc;
- xcb_out.total_width = total_width;
- xcb_out.total_height = total_height;
- xcb_out.src_x = src_x;
- xcb_out.src_y = src_y;
- xcb_out.src_width = src_width;
- xcb_out.src_height = src_height;
- xcb_out.dst_x = dst_x;
- xcb_out.dst_y = dst_y;
- xcb_out.depth = depth;
- xcb_out.format = format;
- xcb_out.send_event = send_event;
- xcb_out.pad0 = 0;
- xcb_out.shmseg = shmseg;
- xcb_out.offset = offset;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_shm_put_image
- **
- ** @param xcb_connection_t *c
- ** @param xcb_drawable_t drawable
- ** @param xcb_gcontext_t gc
- ** @param uint16_t total_width
- ** @param uint16_t total_height
- ** @param uint16_t src_x
- ** @param uint16_t src_y
- ** @param uint16_t src_width
- ** @param uint16_t src_height
- ** @param int16_t dst_x
- ** @param int16_t dst_y
- ** @param uint8_t depth
- ** @param uint8_t format
- ** @param uint8_t send_event
- ** @param xcb_shm_seg_t shmseg
- ** @param uint32_t offset
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_shm_put_image (xcb_connection_t *c /**< */,
- xcb_drawable_t drawable /**< */,
- xcb_gcontext_t gc /**< */,
- uint16_t total_width /**< */,
- uint16_t total_height /**< */,
- uint16_t src_x /**< */,
- uint16_t src_y /**< */,
- uint16_t src_width /**< */,
- uint16_t src_height /**< */,
- int16_t dst_x /**< */,
- int16_t dst_y /**< */,
- uint8_t depth /**< */,
- uint8_t format /**< */,
- uint8_t send_event /**< */,
- xcb_shm_seg_t shmseg /**< */,
- uint32_t offset /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_shm_id,
- /* opcode */ XCB_SHM_PUT_IMAGE,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_shm_put_image_request_t xcb_out;
-
- xcb_out.drawable = drawable;
- xcb_out.gc = gc;
- xcb_out.total_width = total_width;
- xcb_out.total_height = total_height;
- xcb_out.src_x = src_x;
- xcb_out.src_y = src_y;
- xcb_out.src_width = src_width;
- xcb_out.src_height = src_height;
- xcb_out.dst_x = dst_x;
- xcb_out.dst_y = dst_y;
- xcb_out.depth = depth;
- xcb_out.format = format;
- xcb_out.send_event = send_event;
- xcb_out.pad0 = 0;
- xcb_out.shmseg = shmseg;
- xcb_out.offset = offset;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_shm_get_image_cookie_t xcb_shm_get_image
- **
- ** @param xcb_connection_t *c
- ** @param xcb_drawable_t drawable
- ** @param int16_t x
- ** @param int16_t y
- ** @param uint16_t width
- ** @param uint16_t height
- ** @param uint32_t plane_mask
- ** @param uint8_t format
- ** @param xcb_shm_seg_t shmseg
- ** @param uint32_t offset
- ** @returns xcb_shm_get_image_cookie_t
- **
- *****************************************************************************/
-
-xcb_shm_get_image_cookie_t
-xcb_shm_get_image (xcb_connection_t *c /**< */,
- xcb_drawable_t drawable /**< */,
- int16_t x /**< */,
- int16_t y /**< */,
- uint16_t width /**< */,
- uint16_t height /**< */,
- uint32_t plane_mask /**< */,
- uint8_t format /**< */,
- xcb_shm_seg_t shmseg /**< */,
- uint32_t offset /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_shm_id,
- /* opcode */ XCB_SHM_GET_IMAGE,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_shm_get_image_cookie_t xcb_ret;
- xcb_shm_get_image_request_t xcb_out;
-
- xcb_out.drawable = drawable;
- xcb_out.x = x;
- xcb_out.y = y;
- xcb_out.width = width;
- xcb_out.height = height;
- xcb_out.plane_mask = plane_mask;
- xcb_out.format = format;
- memset(xcb_out.pad0, 0, 3);
- xcb_out.shmseg = shmseg;
- xcb_out.offset = offset;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_shm_get_image_cookie_t xcb_shm_get_image_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_drawable_t drawable
- ** @param int16_t x
- ** @param int16_t y
- ** @param uint16_t width
- ** @param uint16_t height
- ** @param uint32_t plane_mask
- ** @param uint8_t format
- ** @param xcb_shm_seg_t shmseg
- ** @param uint32_t offset
- ** @returns xcb_shm_get_image_cookie_t
- **
- *****************************************************************************/
-
-xcb_shm_get_image_cookie_t
-xcb_shm_get_image_unchecked (xcb_connection_t *c /**< */,
- xcb_drawable_t drawable /**< */,
- int16_t x /**< */,
- int16_t y /**< */,
- uint16_t width /**< */,
- uint16_t height /**< */,
- uint32_t plane_mask /**< */,
- uint8_t format /**< */,
- xcb_shm_seg_t shmseg /**< */,
- uint32_t offset /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_shm_id,
- /* opcode */ XCB_SHM_GET_IMAGE,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_shm_get_image_cookie_t xcb_ret;
- xcb_shm_get_image_request_t xcb_out;
-
- xcb_out.drawable = drawable;
- xcb_out.x = x;
- xcb_out.y = y;
- xcb_out.width = width;
- xcb_out.height = height;
- xcb_out.plane_mask = plane_mask;
- xcb_out.format = format;
- memset(xcb_out.pad0, 0, 3);
- xcb_out.shmseg = shmseg;
- xcb_out.offset = offset;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_shm_get_image_reply_t * xcb_shm_get_image_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_shm_get_image_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_shm_get_image_reply_t *
- **
- *****************************************************************************/
-
-xcb_shm_get_image_reply_t *
-xcb_shm_get_image_reply (xcb_connection_t *c /**< */,
- xcb_shm_get_image_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_shm_get_image_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_shm_create_pixmap_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_pixmap_t pid
- ** @param xcb_drawable_t drawable
- ** @param uint16_t width
- ** @param uint16_t height
- ** @param uint8_t depth
- ** @param xcb_shm_seg_t shmseg
- ** @param uint32_t offset
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_shm_create_pixmap_checked (xcb_connection_t *c /**< */,
- xcb_pixmap_t pid /**< */,
- xcb_drawable_t drawable /**< */,
- uint16_t width /**< */,
- uint16_t height /**< */,
- uint8_t depth /**< */,
- xcb_shm_seg_t shmseg /**< */,
- uint32_t offset /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_shm_id,
- /* opcode */ XCB_SHM_CREATE_PIXMAP,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_shm_create_pixmap_request_t xcb_out;
-
- xcb_out.pid = pid;
- xcb_out.drawable = drawable;
- xcb_out.width = width;
- xcb_out.height = height;
- xcb_out.depth = depth;
- memset(xcb_out.pad0, 0, 3);
- xcb_out.shmseg = shmseg;
- xcb_out.offset = offset;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_shm_create_pixmap
- **
- ** @param xcb_connection_t *c
- ** @param xcb_pixmap_t pid
- ** @param xcb_drawable_t drawable
- ** @param uint16_t width
- ** @param uint16_t height
- ** @param uint8_t depth
- ** @param xcb_shm_seg_t shmseg
- ** @param uint32_t offset
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_shm_create_pixmap (xcb_connection_t *c /**< */,
- xcb_pixmap_t pid /**< */,
- xcb_drawable_t drawable /**< */,
- uint16_t width /**< */,
- uint16_t height /**< */,
- uint8_t depth /**< */,
- xcb_shm_seg_t shmseg /**< */,
- uint32_t offset /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_shm_id,
- /* opcode */ XCB_SHM_CREATE_PIXMAP,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_shm_create_pixmap_request_t xcb_out;
-
- xcb_out.pid = pid;
- xcb_out.drawable = drawable;
- xcb_out.width = width;
- xcb_out.height = height;
- xcb_out.depth = depth;
- memset(xcb_out.pad0, 0, 3);
- xcb_out.shmseg = shmseg;
- xcb_out.offset = offset;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
diff --git a/src/3rdparty/xcb/libxcb/sync.c b/src/3rdparty/xcb/libxcb/sync.c
deleted file mode 100644
index 1f352756d8..0000000000
--- a/src/3rdparty/xcb/libxcb/sync.c
+++ /dev/null
@@ -1,2258 +0,0 @@
-/*
- * This file generated automatically from sync.xml by c_client.py.
- * Edit at your peril.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-#include <stddef.h> /* for offsetof() */
-#include "xcbext.h"
-#include "sync.h"
-
-#define ALIGNOF(type) offsetof(struct { char dummy; type member; }, member)
-#include "xproto.h"
-
-xcb_extension_t xcb_sync_id = { "SYNC", 0 };
-
-
-/*****************************************************************************
- **
- ** void xcb_sync_alarm_next
- **
- ** @param xcb_sync_alarm_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_sync_alarm_next (xcb_sync_alarm_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_sync_alarm_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_sync_alarm_end
- **
- ** @param xcb_sync_alarm_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_sync_alarm_end (xcb_sync_alarm_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_sync_counter_next
- **
- ** @param xcb_sync_counter_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_sync_counter_next (xcb_sync_counter_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_sync_counter_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_sync_counter_end
- **
- ** @param xcb_sync_counter_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_sync_counter_end (xcb_sync_counter_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_sync_fence_next
- **
- ** @param xcb_sync_fence_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_sync_fence_next (xcb_sync_fence_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_sync_fence_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_sync_fence_end
- **
- ** @param xcb_sync_fence_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_sync_fence_end (xcb_sync_fence_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_sync_int64_next
- **
- ** @param xcb_sync_int64_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_sync_int64_next (xcb_sync_int64_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_sync_int64_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_sync_int64_end
- **
- ** @param xcb_sync_int64_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_sync_int64_end (xcb_sync_int64_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-int
-xcb_sync_systemcounter_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_sync_systemcounter_t *_aux = (xcb_sync_systemcounter_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_sync_systemcounter_t);
- xcb_tmp += xcb_block_len;
- /* name */
- xcb_block_len += _aux->name_len * sizeof(char);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(char);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** char * xcb_sync_systemcounter_name
- **
- ** @param const xcb_sync_systemcounter_t *R
- ** @returns char *
- **
- *****************************************************************************/
-
-char *
-xcb_sync_systemcounter_name (const xcb_sync_systemcounter_t *R /**< */)
-{
- return (char *) (R + 1);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_sync_systemcounter_name_length
- **
- ** @param const xcb_sync_systemcounter_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_sync_systemcounter_name_length (const xcb_sync_systemcounter_t *R /**< */)
-{
- return R->name_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_sync_systemcounter_name_end
- **
- ** @param const xcb_sync_systemcounter_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_sync_systemcounter_name_end (const xcb_sync_systemcounter_t *R /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = ((char *) (R + 1)) + (R->name_len);
- i.rem = 0;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_sync_systemcounter_next
- **
- ** @param xcb_sync_systemcounter_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_sync_systemcounter_next (xcb_sync_systemcounter_iterator_t *i /**< */)
-{
- xcb_sync_systemcounter_t *R = i->data;
- xcb_generic_iterator_t child;
- child.data = (xcb_sync_systemcounter_t *)(((char *)R) + xcb_sync_systemcounter_sizeof(R));
- i->index = (char *) child.data - (char *) i->data;
- --i->rem;
- i->data = (xcb_sync_systemcounter_t *) child.data;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_sync_systemcounter_end
- **
- ** @param xcb_sync_systemcounter_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_sync_systemcounter_end (xcb_sync_systemcounter_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- while(i.rem > 0)
- xcb_sync_systemcounter_next(&i);
- ret.data = i.data;
- ret.rem = i.rem;
- ret.index = i.index;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_sync_trigger_next
- **
- ** @param xcb_sync_trigger_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_sync_trigger_next (xcb_sync_trigger_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_sync_trigger_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_sync_trigger_end
- **
- ** @param xcb_sync_trigger_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_sync_trigger_end (xcb_sync_trigger_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_sync_waitcondition_next
- **
- ** @param xcb_sync_waitcondition_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_sync_waitcondition_next (xcb_sync_waitcondition_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_sync_waitcondition_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_sync_waitcondition_end
- **
- ** @param xcb_sync_waitcondition_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_sync_waitcondition_end (xcb_sync_waitcondition_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_sync_initialize_cookie_t xcb_sync_initialize
- **
- ** @param xcb_connection_t *c
- ** @param uint8_t desired_major_version
- ** @param uint8_t desired_minor_version
- ** @returns xcb_sync_initialize_cookie_t
- **
- *****************************************************************************/
-
-xcb_sync_initialize_cookie_t
-xcb_sync_initialize (xcb_connection_t *c /**< */,
- uint8_t desired_major_version /**< */,
- uint8_t desired_minor_version /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_sync_id,
- /* opcode */ XCB_SYNC_INITIALIZE,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_sync_initialize_cookie_t xcb_ret;
- xcb_sync_initialize_request_t xcb_out;
-
- xcb_out.desired_major_version = desired_major_version;
- xcb_out.desired_minor_version = desired_minor_version;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_sync_initialize_cookie_t xcb_sync_initialize_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param uint8_t desired_major_version
- ** @param uint8_t desired_minor_version
- ** @returns xcb_sync_initialize_cookie_t
- **
- *****************************************************************************/
-
-xcb_sync_initialize_cookie_t
-xcb_sync_initialize_unchecked (xcb_connection_t *c /**< */,
- uint8_t desired_major_version /**< */,
- uint8_t desired_minor_version /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_sync_id,
- /* opcode */ XCB_SYNC_INITIALIZE,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_sync_initialize_cookie_t xcb_ret;
- xcb_sync_initialize_request_t xcb_out;
-
- xcb_out.desired_major_version = desired_major_version;
- xcb_out.desired_minor_version = desired_minor_version;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_sync_initialize_reply_t * xcb_sync_initialize_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_initialize_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_sync_initialize_reply_t *
- **
- *****************************************************************************/
-
-xcb_sync_initialize_reply_t *
-xcb_sync_initialize_reply (xcb_connection_t *c /**< */,
- xcb_sync_initialize_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_sync_initialize_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-int
-xcb_sync_list_system_counters_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_sync_list_system_counters_reply_t *_aux = (xcb_sync_list_system_counters_reply_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
- unsigned int i;
- unsigned int xcb_tmp_len;
-
- xcb_block_len += sizeof(xcb_sync_list_system_counters_reply_t);
- xcb_tmp += xcb_block_len;
- /* counters */
- for(i=0; i<_aux->counters_len; i++) {
- xcb_tmp_len = xcb_sync_systemcounter_sizeof(xcb_tmp);
- xcb_block_len += xcb_tmp_len;
- xcb_tmp += xcb_tmp_len;
- }
- xcb_align_to = ALIGNOF(xcb_sync_systemcounter_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_sync_list_system_counters_cookie_t xcb_sync_list_system_counters
- **
- ** @param xcb_connection_t *c
- ** @returns xcb_sync_list_system_counters_cookie_t
- **
- *****************************************************************************/
-
-xcb_sync_list_system_counters_cookie_t
-xcb_sync_list_system_counters (xcb_connection_t *c /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_sync_id,
- /* opcode */ XCB_SYNC_LIST_SYSTEM_COUNTERS,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_sync_list_system_counters_cookie_t xcb_ret;
- xcb_sync_list_system_counters_request_t xcb_out;
-
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_sync_list_system_counters_cookie_t xcb_sync_list_system_counters_unchecked
- **
- ** @param xcb_connection_t *c
- ** @returns xcb_sync_list_system_counters_cookie_t
- **
- *****************************************************************************/
-
-xcb_sync_list_system_counters_cookie_t
-xcb_sync_list_system_counters_unchecked (xcb_connection_t *c /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_sync_id,
- /* opcode */ XCB_SYNC_LIST_SYSTEM_COUNTERS,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_sync_list_system_counters_cookie_t xcb_ret;
- xcb_sync_list_system_counters_request_t xcb_out;
-
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_sync_list_system_counters_counters_length
- **
- ** @param const xcb_sync_list_system_counters_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_sync_list_system_counters_counters_length (const xcb_sync_list_system_counters_reply_t *R /**< */)
-{
- return R->counters_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_sync_systemcounter_iterator_t xcb_sync_list_system_counters_counters_iterator
- **
- ** @param const xcb_sync_list_system_counters_reply_t *R
- ** @returns xcb_sync_systemcounter_iterator_t
- **
- *****************************************************************************/
-
-xcb_sync_systemcounter_iterator_t
-xcb_sync_list_system_counters_counters_iterator (const xcb_sync_list_system_counters_reply_t *R /**< */)
-{
- xcb_sync_systemcounter_iterator_t i;
- i.data = (xcb_sync_systemcounter_t *) (R + 1);
- i.rem = R->counters_len;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_sync_list_system_counters_reply_t * xcb_sync_list_system_counters_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_list_system_counters_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_sync_list_system_counters_reply_t *
- **
- *****************************************************************************/
-
-xcb_sync_list_system_counters_reply_t *
-xcb_sync_list_system_counters_reply (xcb_connection_t *c /**< */,
- xcb_sync_list_system_counters_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_sync_list_system_counters_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_create_counter_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_counter_t id
- ** @param xcb_sync_int64_t initial_value
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_create_counter_checked (xcb_connection_t *c /**< */,
- xcb_sync_counter_t id /**< */,
- xcb_sync_int64_t initial_value /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_sync_id,
- /* opcode */ XCB_SYNC_CREATE_COUNTER,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_sync_create_counter_request_t xcb_out;
-
- xcb_out.id = id;
- xcb_out.initial_value = initial_value;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_create_counter
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_counter_t id
- ** @param xcb_sync_int64_t initial_value
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_create_counter (xcb_connection_t *c /**< */,
- xcb_sync_counter_t id /**< */,
- xcb_sync_int64_t initial_value /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_sync_id,
- /* opcode */ XCB_SYNC_CREATE_COUNTER,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_sync_create_counter_request_t xcb_out;
-
- xcb_out.id = id;
- xcb_out.initial_value = initial_value;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_destroy_counter_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_counter_t counter
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_destroy_counter_checked (xcb_connection_t *c /**< */,
- xcb_sync_counter_t counter /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_sync_id,
- /* opcode */ XCB_SYNC_DESTROY_COUNTER,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_sync_destroy_counter_request_t xcb_out;
-
- xcb_out.counter = counter;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_destroy_counter
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_counter_t counter
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_destroy_counter (xcb_connection_t *c /**< */,
- xcb_sync_counter_t counter /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_sync_id,
- /* opcode */ XCB_SYNC_DESTROY_COUNTER,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_sync_destroy_counter_request_t xcb_out;
-
- xcb_out.counter = counter;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_sync_query_counter_cookie_t xcb_sync_query_counter
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_counter_t counter
- ** @returns xcb_sync_query_counter_cookie_t
- **
- *****************************************************************************/
-
-xcb_sync_query_counter_cookie_t
-xcb_sync_query_counter (xcb_connection_t *c /**< */,
- xcb_sync_counter_t counter /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_sync_id,
- /* opcode */ XCB_SYNC_QUERY_COUNTER,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_sync_query_counter_cookie_t xcb_ret;
- xcb_sync_query_counter_request_t xcb_out;
-
- xcb_out.counter = counter;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_sync_query_counter_cookie_t xcb_sync_query_counter_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_counter_t counter
- ** @returns xcb_sync_query_counter_cookie_t
- **
- *****************************************************************************/
-
-xcb_sync_query_counter_cookie_t
-xcb_sync_query_counter_unchecked (xcb_connection_t *c /**< */,
- xcb_sync_counter_t counter /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_sync_id,
- /* opcode */ XCB_SYNC_QUERY_COUNTER,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_sync_query_counter_cookie_t xcb_ret;
- xcb_sync_query_counter_request_t xcb_out;
-
- xcb_out.counter = counter;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_sync_query_counter_reply_t * xcb_sync_query_counter_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_query_counter_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_sync_query_counter_reply_t *
- **
- *****************************************************************************/
-
-xcb_sync_query_counter_reply_t *
-xcb_sync_query_counter_reply (xcb_connection_t *c /**< */,
- xcb_sync_query_counter_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_sync_query_counter_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-int
-xcb_sync_await_sizeof (const void *_buffer /**< */,
- uint32_t wait_list_len /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_sync_await_request_t);
- xcb_tmp += xcb_block_len;
- /* wait_list */
- xcb_block_len += wait_list_len * sizeof(xcb_sync_waitcondition_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_sync_waitcondition_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_await_checked
- **
- ** @param xcb_connection_t *c
- ** @param uint32_t wait_list_len
- ** @param const xcb_sync_waitcondition_t *wait_list
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_await_checked (xcb_connection_t *c /**< */,
- uint32_t wait_list_len /**< */,
- const xcb_sync_waitcondition_t *wait_list /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_sync_id,
- /* opcode */ XCB_SYNC_AWAIT,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_sync_await_request_t xcb_out;
-
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_sync_waitcondition_t wait_list */
- xcb_parts[4].iov_base = (char *) wait_list;
- xcb_parts[4].iov_len = wait_list_len * sizeof(xcb_sync_waitcondition_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_await
- **
- ** @param xcb_connection_t *c
- ** @param uint32_t wait_list_len
- ** @param const xcb_sync_waitcondition_t *wait_list
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_await (xcb_connection_t *c /**< */,
- uint32_t wait_list_len /**< */,
- const xcb_sync_waitcondition_t *wait_list /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_sync_id,
- /* opcode */ XCB_SYNC_AWAIT,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_sync_await_request_t xcb_out;
-
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_sync_waitcondition_t wait_list */
- xcb_parts[4].iov_base = (char *) wait_list;
- xcb_parts[4].iov_len = wait_list_len * sizeof(xcb_sync_waitcondition_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_change_counter_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_counter_t counter
- ** @param xcb_sync_int64_t amount
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_change_counter_checked (xcb_connection_t *c /**< */,
- xcb_sync_counter_t counter /**< */,
- xcb_sync_int64_t amount /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_sync_id,
- /* opcode */ XCB_SYNC_CHANGE_COUNTER,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_sync_change_counter_request_t xcb_out;
-
- xcb_out.counter = counter;
- xcb_out.amount = amount;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_change_counter
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_counter_t counter
- ** @param xcb_sync_int64_t amount
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_change_counter (xcb_connection_t *c /**< */,
- xcb_sync_counter_t counter /**< */,
- xcb_sync_int64_t amount /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_sync_id,
- /* opcode */ XCB_SYNC_CHANGE_COUNTER,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_sync_change_counter_request_t xcb_out;
-
- xcb_out.counter = counter;
- xcb_out.amount = amount;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_set_counter_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_counter_t counter
- ** @param xcb_sync_int64_t value
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_set_counter_checked (xcb_connection_t *c /**< */,
- xcb_sync_counter_t counter /**< */,
- xcb_sync_int64_t value /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_sync_id,
- /* opcode */ XCB_SYNC_SET_COUNTER,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_sync_set_counter_request_t xcb_out;
-
- xcb_out.counter = counter;
- xcb_out.value = value;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_set_counter
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_counter_t counter
- ** @param xcb_sync_int64_t value
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_set_counter (xcb_connection_t *c /**< */,
- xcb_sync_counter_t counter /**< */,
- xcb_sync_int64_t value /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_sync_id,
- /* opcode */ XCB_SYNC_SET_COUNTER,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_sync_set_counter_request_t xcb_out;
-
- xcb_out.counter = counter;
- xcb_out.value = value;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-int
-xcb_sync_create_alarm_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_sync_create_alarm_request_t *_aux = (xcb_sync_create_alarm_request_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_sync_create_alarm_request_t);
- xcb_tmp += xcb_block_len;
- /* value_list */
- xcb_block_len += xcb_popcount(_aux->value_mask) * sizeof(uint32_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(uint32_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_create_alarm_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_alarm_t id
- ** @param uint32_t value_mask
- ** @param const uint32_t *value_list
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_create_alarm_checked (xcb_connection_t *c /**< */,
- xcb_sync_alarm_t id /**< */,
- uint32_t value_mask /**< */,
- const uint32_t *value_list /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_sync_id,
- /* opcode */ XCB_SYNC_CREATE_ALARM,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_sync_create_alarm_request_t xcb_out;
-
- xcb_out.id = id;
- xcb_out.value_mask = value_mask;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* uint32_t value_list */
- xcb_parts[4].iov_base = (char *) value_list;
- xcb_parts[4].iov_len = xcb_popcount(value_mask) * sizeof(uint32_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_create_alarm
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_alarm_t id
- ** @param uint32_t value_mask
- ** @param const uint32_t *value_list
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_create_alarm (xcb_connection_t *c /**< */,
- xcb_sync_alarm_t id /**< */,
- uint32_t value_mask /**< */,
- const uint32_t *value_list /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_sync_id,
- /* opcode */ XCB_SYNC_CREATE_ALARM,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_sync_create_alarm_request_t xcb_out;
-
- xcb_out.id = id;
- xcb_out.value_mask = value_mask;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* uint32_t value_list */
- xcb_parts[4].iov_base = (char *) value_list;
- xcb_parts[4].iov_len = xcb_popcount(value_mask) * sizeof(uint32_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-int
-xcb_sync_change_alarm_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_sync_change_alarm_request_t *_aux = (xcb_sync_change_alarm_request_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_sync_change_alarm_request_t);
- xcb_tmp += xcb_block_len;
- /* value_list */
- xcb_block_len += xcb_popcount(_aux->value_mask) * sizeof(uint32_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(uint32_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_change_alarm_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_alarm_t id
- ** @param uint32_t value_mask
- ** @param const uint32_t *value_list
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_change_alarm_checked (xcb_connection_t *c /**< */,
- xcb_sync_alarm_t id /**< */,
- uint32_t value_mask /**< */,
- const uint32_t *value_list /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_sync_id,
- /* opcode */ XCB_SYNC_CHANGE_ALARM,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_sync_change_alarm_request_t xcb_out;
-
- xcb_out.id = id;
- xcb_out.value_mask = value_mask;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* uint32_t value_list */
- xcb_parts[4].iov_base = (char *) value_list;
- xcb_parts[4].iov_len = xcb_popcount(value_mask) * sizeof(uint32_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_change_alarm
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_alarm_t id
- ** @param uint32_t value_mask
- ** @param const uint32_t *value_list
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_change_alarm (xcb_connection_t *c /**< */,
- xcb_sync_alarm_t id /**< */,
- uint32_t value_mask /**< */,
- const uint32_t *value_list /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_sync_id,
- /* opcode */ XCB_SYNC_CHANGE_ALARM,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_sync_change_alarm_request_t xcb_out;
-
- xcb_out.id = id;
- xcb_out.value_mask = value_mask;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* uint32_t value_list */
- xcb_parts[4].iov_base = (char *) value_list;
- xcb_parts[4].iov_len = xcb_popcount(value_mask) * sizeof(uint32_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_destroy_alarm_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_alarm_t alarm
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_destroy_alarm_checked (xcb_connection_t *c /**< */,
- xcb_sync_alarm_t alarm /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_sync_id,
- /* opcode */ XCB_SYNC_DESTROY_ALARM,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_sync_destroy_alarm_request_t xcb_out;
-
- xcb_out.alarm = alarm;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_destroy_alarm
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_alarm_t alarm
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_destroy_alarm (xcb_connection_t *c /**< */,
- xcb_sync_alarm_t alarm /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_sync_id,
- /* opcode */ XCB_SYNC_DESTROY_ALARM,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_sync_destroy_alarm_request_t xcb_out;
-
- xcb_out.alarm = alarm;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_sync_query_alarm_cookie_t xcb_sync_query_alarm
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_alarm_t alarm
- ** @returns xcb_sync_query_alarm_cookie_t
- **
- *****************************************************************************/
-
-xcb_sync_query_alarm_cookie_t
-xcb_sync_query_alarm (xcb_connection_t *c /**< */,
- xcb_sync_alarm_t alarm /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_sync_id,
- /* opcode */ XCB_SYNC_QUERY_ALARM,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_sync_query_alarm_cookie_t xcb_ret;
- xcb_sync_query_alarm_request_t xcb_out;
-
- xcb_out.alarm = alarm;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_sync_query_alarm_cookie_t xcb_sync_query_alarm_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_alarm_t alarm
- ** @returns xcb_sync_query_alarm_cookie_t
- **
- *****************************************************************************/
-
-xcb_sync_query_alarm_cookie_t
-xcb_sync_query_alarm_unchecked (xcb_connection_t *c /**< */,
- xcb_sync_alarm_t alarm /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_sync_id,
- /* opcode */ XCB_SYNC_QUERY_ALARM,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_sync_query_alarm_cookie_t xcb_ret;
- xcb_sync_query_alarm_request_t xcb_out;
-
- xcb_out.alarm = alarm;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_sync_query_alarm_reply_t * xcb_sync_query_alarm_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_query_alarm_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_sync_query_alarm_reply_t *
- **
- *****************************************************************************/
-
-xcb_sync_query_alarm_reply_t *
-xcb_sync_query_alarm_reply (xcb_connection_t *c /**< */,
- xcb_sync_query_alarm_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_sync_query_alarm_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_set_priority_checked
- **
- ** @param xcb_connection_t *c
- ** @param uint32_t id
- ** @param int32_t priority
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_set_priority_checked (xcb_connection_t *c /**< */,
- uint32_t id /**< */,
- int32_t priority /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_sync_id,
- /* opcode */ XCB_SYNC_SET_PRIORITY,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_sync_set_priority_request_t xcb_out;
-
- xcb_out.id = id;
- xcb_out.priority = priority;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_set_priority
- **
- ** @param xcb_connection_t *c
- ** @param uint32_t id
- ** @param int32_t priority
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_set_priority (xcb_connection_t *c /**< */,
- uint32_t id /**< */,
- int32_t priority /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_sync_id,
- /* opcode */ XCB_SYNC_SET_PRIORITY,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_sync_set_priority_request_t xcb_out;
-
- xcb_out.id = id;
- xcb_out.priority = priority;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_sync_get_priority_cookie_t xcb_sync_get_priority
- **
- ** @param xcb_connection_t *c
- ** @param uint32_t id
- ** @returns xcb_sync_get_priority_cookie_t
- **
- *****************************************************************************/
-
-xcb_sync_get_priority_cookie_t
-xcb_sync_get_priority (xcb_connection_t *c /**< */,
- uint32_t id /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_sync_id,
- /* opcode */ XCB_SYNC_GET_PRIORITY,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_sync_get_priority_cookie_t xcb_ret;
- xcb_sync_get_priority_request_t xcb_out;
-
- xcb_out.id = id;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_sync_get_priority_cookie_t xcb_sync_get_priority_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param uint32_t id
- ** @returns xcb_sync_get_priority_cookie_t
- **
- *****************************************************************************/
-
-xcb_sync_get_priority_cookie_t
-xcb_sync_get_priority_unchecked (xcb_connection_t *c /**< */,
- uint32_t id /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_sync_id,
- /* opcode */ XCB_SYNC_GET_PRIORITY,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_sync_get_priority_cookie_t xcb_ret;
- xcb_sync_get_priority_request_t xcb_out;
-
- xcb_out.id = id;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_sync_get_priority_reply_t * xcb_sync_get_priority_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_get_priority_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_sync_get_priority_reply_t *
- **
- *****************************************************************************/
-
-xcb_sync_get_priority_reply_t *
-xcb_sync_get_priority_reply (xcb_connection_t *c /**< */,
- xcb_sync_get_priority_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_sync_get_priority_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_create_fence_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_drawable_t drawable
- ** @param xcb_sync_fence_t fence
- ** @param uint8_t initially_triggered
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_create_fence_checked (xcb_connection_t *c /**< */,
- xcb_drawable_t drawable /**< */,
- xcb_sync_fence_t fence /**< */,
- uint8_t initially_triggered /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_sync_id,
- /* opcode */ XCB_SYNC_CREATE_FENCE,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_sync_create_fence_request_t xcb_out;
-
- xcb_out.drawable = drawable;
- xcb_out.fence = fence;
- xcb_out.initially_triggered = initially_triggered;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_create_fence
- **
- ** @param xcb_connection_t *c
- ** @param xcb_drawable_t drawable
- ** @param xcb_sync_fence_t fence
- ** @param uint8_t initially_triggered
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_create_fence (xcb_connection_t *c /**< */,
- xcb_drawable_t drawable /**< */,
- xcb_sync_fence_t fence /**< */,
- uint8_t initially_triggered /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_sync_id,
- /* opcode */ XCB_SYNC_CREATE_FENCE,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_sync_create_fence_request_t xcb_out;
-
- xcb_out.drawable = drawable;
- xcb_out.fence = fence;
- xcb_out.initially_triggered = initially_triggered;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_trigger_fence_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_fence_t fence
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_trigger_fence_checked (xcb_connection_t *c /**< */,
- xcb_sync_fence_t fence /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_sync_id,
- /* opcode */ XCB_SYNC_TRIGGER_FENCE,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_sync_trigger_fence_request_t xcb_out;
-
- xcb_out.fence = fence;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_trigger_fence
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_fence_t fence
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_trigger_fence (xcb_connection_t *c /**< */,
- xcb_sync_fence_t fence /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_sync_id,
- /* opcode */ XCB_SYNC_TRIGGER_FENCE,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_sync_trigger_fence_request_t xcb_out;
-
- xcb_out.fence = fence;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_reset_fence_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_fence_t fence
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_reset_fence_checked (xcb_connection_t *c /**< */,
- xcb_sync_fence_t fence /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_sync_id,
- /* opcode */ XCB_SYNC_RESET_FENCE,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_sync_reset_fence_request_t xcb_out;
-
- xcb_out.fence = fence;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_reset_fence
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_fence_t fence
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_reset_fence (xcb_connection_t *c /**< */,
- xcb_sync_fence_t fence /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_sync_id,
- /* opcode */ XCB_SYNC_RESET_FENCE,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_sync_reset_fence_request_t xcb_out;
-
- xcb_out.fence = fence;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_destroy_fence_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_fence_t fence
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_destroy_fence_checked (xcb_connection_t *c /**< */,
- xcb_sync_fence_t fence /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_sync_id,
- /* opcode */ XCB_SYNC_DESTROY_FENCE,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_sync_destroy_fence_request_t xcb_out;
-
- xcb_out.fence = fence;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_destroy_fence
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_fence_t fence
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_destroy_fence (xcb_connection_t *c /**< */,
- xcb_sync_fence_t fence /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_sync_id,
- /* opcode */ XCB_SYNC_DESTROY_FENCE,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_sync_destroy_fence_request_t xcb_out;
-
- xcb_out.fence = fence;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_sync_query_fence_cookie_t xcb_sync_query_fence
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_fence_t fence
- ** @returns xcb_sync_query_fence_cookie_t
- **
- *****************************************************************************/
-
-xcb_sync_query_fence_cookie_t
-xcb_sync_query_fence (xcb_connection_t *c /**< */,
- xcb_sync_fence_t fence /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_sync_id,
- /* opcode */ XCB_SYNC_QUERY_FENCE,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_sync_query_fence_cookie_t xcb_ret;
- xcb_sync_query_fence_request_t xcb_out;
-
- xcb_out.fence = fence;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_sync_query_fence_cookie_t xcb_sync_query_fence_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_fence_t fence
- ** @returns xcb_sync_query_fence_cookie_t
- **
- *****************************************************************************/
-
-xcb_sync_query_fence_cookie_t
-xcb_sync_query_fence_unchecked (xcb_connection_t *c /**< */,
- xcb_sync_fence_t fence /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_sync_id,
- /* opcode */ XCB_SYNC_QUERY_FENCE,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_sync_query_fence_cookie_t xcb_ret;
- xcb_sync_query_fence_request_t xcb_out;
-
- xcb_out.fence = fence;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_sync_query_fence_reply_t * xcb_sync_query_fence_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_sync_query_fence_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_sync_query_fence_reply_t *
- **
- *****************************************************************************/
-
-xcb_sync_query_fence_reply_t *
-xcb_sync_query_fence_reply (xcb_connection_t *c /**< */,
- xcb_sync_query_fence_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_sync_query_fence_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-int
-xcb_sync_await_fence_sizeof (const void *_buffer /**< */,
- uint32_t fence_list_len /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_sync_await_fence_request_t);
- xcb_tmp += xcb_block_len;
- /* fence_list */
- xcb_block_len += fence_list_len * sizeof(xcb_sync_fence_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_sync_fence_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_await_fence_checked
- **
- ** @param xcb_connection_t *c
- ** @param uint32_t fence_list_len
- ** @param const xcb_sync_fence_t *fence_list
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_await_fence_checked (xcb_connection_t *c /**< */,
- uint32_t fence_list_len /**< */,
- const xcb_sync_fence_t *fence_list /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_sync_id,
- /* opcode */ XCB_SYNC_AWAIT_FENCE,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_sync_await_fence_request_t xcb_out;
-
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_sync_fence_t fence_list */
- xcb_parts[4].iov_base = (char *) fence_list;
- xcb_parts[4].iov_len = fence_list_len * sizeof(xcb_sync_fence_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_sync_await_fence
- **
- ** @param xcb_connection_t *c
- ** @param uint32_t fence_list_len
- ** @param const xcb_sync_fence_t *fence_list
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_sync_await_fence (xcb_connection_t *c /**< */,
- uint32_t fence_list_len /**< */,
- const xcb_sync_fence_t *fence_list /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_sync_id,
- /* opcode */ XCB_SYNC_AWAIT_FENCE,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_sync_await_fence_request_t xcb_out;
-
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_sync_fence_t fence_list */
- xcb_parts[4].iov_base = (char *) fence_list;
- xcb_parts[4].iov_len = fence_list_len * sizeof(xcb_sync_fence_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
diff --git a/src/3rdparty/xcb/libxcb/xfixes.c b/src/3rdparty/xcb/libxcb/xfixes.c
deleted file mode 100644
index 4c0dc84b64..0000000000
--- a/src/3rdparty/xcb/libxcb/xfixes.c
+++ /dev/null
@@ -1,3274 +0,0 @@
-/*
- * This file generated automatically from xfixes.xml by c_client.py.
- * Edit at your peril.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-#include <stddef.h> /* for offsetof() */
-#include "xcbext.h"
-#include "xfixes.h"
-
-#define ALIGNOF(type) offsetof(struct { char dummy; type member; }, member)
-#include "xproto.h"
-#include "render.h"
-#include "shape.h"
-
-xcb_extension_t xcb_xfixes_id = { "XFIXES", 0 };
-
-
-/*****************************************************************************
- **
- ** xcb_xfixes_query_version_cookie_t xcb_xfixes_query_version
- **
- ** @param xcb_connection_t *c
- ** @param uint32_t client_major_version
- ** @param uint32_t client_minor_version
- ** @returns xcb_xfixes_query_version_cookie_t
- **
- *****************************************************************************/
-
-xcb_xfixes_query_version_cookie_t
-xcb_xfixes_query_version (xcb_connection_t *c /**< */,
- uint32_t client_major_version /**< */,
- uint32_t client_minor_version /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_QUERY_VERSION,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_xfixes_query_version_cookie_t xcb_ret;
- xcb_xfixes_query_version_request_t xcb_out;
-
- xcb_out.client_major_version = client_major_version;
- xcb_out.client_minor_version = client_minor_version;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xfixes_query_version_cookie_t xcb_xfixes_query_version_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param uint32_t client_major_version
- ** @param uint32_t client_minor_version
- ** @returns xcb_xfixes_query_version_cookie_t
- **
- *****************************************************************************/
-
-xcb_xfixes_query_version_cookie_t
-xcb_xfixes_query_version_unchecked (xcb_connection_t *c /**< */,
- uint32_t client_major_version /**< */,
- uint32_t client_minor_version /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_QUERY_VERSION,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_xfixes_query_version_cookie_t xcb_ret;
- xcb_xfixes_query_version_request_t xcb_out;
-
- xcb_out.client_major_version = client_major_version;
- xcb_out.client_minor_version = client_minor_version;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xfixes_query_version_reply_t * xcb_xfixes_query_version_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_query_version_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xfixes_query_version_reply_t *
- **
- *****************************************************************************/
-
-xcb_xfixes_query_version_reply_t *
-xcb_xfixes_query_version_reply (xcb_connection_t *c /**< */,
- xcb_xfixes_query_version_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_xfixes_query_version_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_change_save_set_checked
- **
- ** @param xcb_connection_t *c
- ** @param uint8_t mode
- ** @param uint8_t target
- ** @param uint8_t map
- ** @param xcb_window_t window
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_change_save_set_checked (xcb_connection_t *c /**< */,
- uint8_t mode /**< */,
- uint8_t target /**< */,
- uint8_t map /**< */,
- xcb_window_t window /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_CHANGE_SAVE_SET,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_change_save_set_request_t xcb_out;
-
- xcb_out.mode = mode;
- xcb_out.target = target;
- xcb_out.map = map;
- xcb_out.pad0 = 0;
- xcb_out.window = window;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_change_save_set
- **
- ** @param xcb_connection_t *c
- ** @param uint8_t mode
- ** @param uint8_t target
- ** @param uint8_t map
- ** @param xcb_window_t window
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_change_save_set (xcb_connection_t *c /**< */,
- uint8_t mode /**< */,
- uint8_t target /**< */,
- uint8_t map /**< */,
- xcb_window_t window /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_CHANGE_SAVE_SET,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_change_save_set_request_t xcb_out;
-
- xcb_out.mode = mode;
- xcb_out.target = target;
- xcb_out.map = map;
- xcb_out.pad0 = 0;
- xcb_out.window = window;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_select_selection_input_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @param xcb_atom_t selection
- ** @param uint32_t event_mask
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_select_selection_input_checked (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */,
- xcb_atom_t selection /**< */,
- uint32_t event_mask /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_SELECT_SELECTION_INPUT,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_select_selection_input_request_t xcb_out;
-
- xcb_out.window = window;
- xcb_out.selection = selection;
- xcb_out.event_mask = event_mask;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_select_selection_input
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @param xcb_atom_t selection
- ** @param uint32_t event_mask
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_select_selection_input (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */,
- xcb_atom_t selection /**< */,
- uint32_t event_mask /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_SELECT_SELECTION_INPUT,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_select_selection_input_request_t xcb_out;
-
- xcb_out.window = window;
- xcb_out.selection = selection;
- xcb_out.event_mask = event_mask;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_select_cursor_input_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @param uint32_t event_mask
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_select_cursor_input_checked (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */,
- uint32_t event_mask /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_SELECT_CURSOR_INPUT,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_select_cursor_input_request_t xcb_out;
-
- xcb_out.window = window;
- xcb_out.event_mask = event_mask;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_select_cursor_input
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @param uint32_t event_mask
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_select_cursor_input (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */,
- uint32_t event_mask /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_SELECT_CURSOR_INPUT,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_select_cursor_input_request_t xcb_out;
-
- xcb_out.window = window;
- xcb_out.event_mask = event_mask;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-int
-xcb_xfixes_get_cursor_image_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_xfixes_get_cursor_image_reply_t *_aux = (xcb_xfixes_get_cursor_image_reply_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_xfixes_get_cursor_image_reply_t);
- xcb_tmp += xcb_block_len;
- /* cursor_image */
- xcb_block_len += (_aux->width * _aux->height) * sizeof(uint32_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(uint32_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xfixes_get_cursor_image_cookie_t xcb_xfixes_get_cursor_image
- **
- ** @param xcb_connection_t *c
- ** @returns xcb_xfixes_get_cursor_image_cookie_t
- **
- *****************************************************************************/
-
-xcb_xfixes_get_cursor_image_cookie_t
-xcb_xfixes_get_cursor_image (xcb_connection_t *c /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_GET_CURSOR_IMAGE,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_xfixes_get_cursor_image_cookie_t xcb_ret;
- xcb_xfixes_get_cursor_image_request_t xcb_out;
-
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xfixes_get_cursor_image_cookie_t xcb_xfixes_get_cursor_image_unchecked
- **
- ** @param xcb_connection_t *c
- ** @returns xcb_xfixes_get_cursor_image_cookie_t
- **
- *****************************************************************************/
-
-xcb_xfixes_get_cursor_image_cookie_t
-xcb_xfixes_get_cursor_image_unchecked (xcb_connection_t *c /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_GET_CURSOR_IMAGE,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_xfixes_get_cursor_image_cookie_t xcb_ret;
- xcb_xfixes_get_cursor_image_request_t xcb_out;
-
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** uint32_t * xcb_xfixes_get_cursor_image_cursor_image
- **
- ** @param const xcb_xfixes_get_cursor_image_reply_t *R
- ** @returns uint32_t *
- **
- *****************************************************************************/
-
-uint32_t *
-xcb_xfixes_get_cursor_image_cursor_image (const xcb_xfixes_get_cursor_image_reply_t *R /**< */)
-{
- return (uint32_t *) (R + 1);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xfixes_get_cursor_image_cursor_image_length
- **
- ** @param const xcb_xfixes_get_cursor_image_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xfixes_get_cursor_image_cursor_image_length (const xcb_xfixes_get_cursor_image_reply_t *R /**< */)
-{
- return (R->width * R->height);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xfixes_get_cursor_image_cursor_image_end
- **
- ** @param const xcb_xfixes_get_cursor_image_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xfixes_get_cursor_image_cursor_image_end (const xcb_xfixes_get_cursor_image_reply_t *R /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = ((uint32_t *) (R + 1)) + ((R->width * R->height));
- i.rem = 0;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xfixes_get_cursor_image_reply_t * xcb_xfixes_get_cursor_image_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_get_cursor_image_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xfixes_get_cursor_image_reply_t *
- **
- *****************************************************************************/
-
-xcb_xfixes_get_cursor_image_reply_t *
-xcb_xfixes_get_cursor_image_reply (xcb_connection_t *c /**< */,
- xcb_xfixes_get_cursor_image_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_xfixes_get_cursor_image_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xfixes_region_next
- **
- ** @param xcb_xfixes_region_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xfixes_region_next (xcb_xfixes_region_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xfixes_region_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xfixes_region_end
- **
- ** @param xcb_xfixes_region_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xfixes_region_end (xcb_xfixes_region_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-int
-xcb_xfixes_create_region_sizeof (const void *_buffer /**< */,
- uint32_t rectangles_len /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_xfixes_create_region_request_t);
- xcb_tmp += xcb_block_len;
- /* rectangles */
- xcb_block_len += rectangles_len * sizeof(xcb_rectangle_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_rectangle_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_create_region_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t region
- ** @param uint32_t rectangles_len
- ** @param const xcb_rectangle_t *rectangles
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_create_region_checked (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t region /**< */,
- uint32_t rectangles_len /**< */,
- const xcb_rectangle_t *rectangles /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_CREATE_REGION,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_create_region_request_t xcb_out;
-
- xcb_out.region = region;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_rectangle_t rectangles */
- xcb_parts[4].iov_base = (char *) rectangles;
- xcb_parts[4].iov_len = rectangles_len * sizeof(xcb_rectangle_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_create_region
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t region
- ** @param uint32_t rectangles_len
- ** @param const xcb_rectangle_t *rectangles
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_create_region (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t region /**< */,
- uint32_t rectangles_len /**< */,
- const xcb_rectangle_t *rectangles /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_CREATE_REGION,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_create_region_request_t xcb_out;
-
- xcb_out.region = region;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_rectangle_t rectangles */
- xcb_parts[4].iov_base = (char *) rectangles;
- xcb_parts[4].iov_len = rectangles_len * sizeof(xcb_rectangle_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_create_region_from_bitmap_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t region
- ** @param xcb_pixmap_t bitmap
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_create_region_from_bitmap_checked (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t region /**< */,
- xcb_pixmap_t bitmap /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_CREATE_REGION_FROM_BITMAP,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_create_region_from_bitmap_request_t xcb_out;
-
- xcb_out.region = region;
- xcb_out.bitmap = bitmap;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_create_region_from_bitmap
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t region
- ** @param xcb_pixmap_t bitmap
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_create_region_from_bitmap (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t region /**< */,
- xcb_pixmap_t bitmap /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_CREATE_REGION_FROM_BITMAP,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_create_region_from_bitmap_request_t xcb_out;
-
- xcb_out.region = region;
- xcb_out.bitmap = bitmap;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_create_region_from_window_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t region
- ** @param xcb_window_t window
- ** @param xcb_shape_kind_t kind
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_create_region_from_window_checked (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t region /**< */,
- xcb_window_t window /**< */,
- xcb_shape_kind_t kind /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_CREATE_REGION_FROM_WINDOW,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_create_region_from_window_request_t xcb_out;
-
- xcb_out.region = region;
- xcb_out.window = window;
- xcb_out.kind = kind;
- memset(xcb_out.pad0, 0, 3);
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_create_region_from_window
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t region
- ** @param xcb_window_t window
- ** @param xcb_shape_kind_t kind
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_create_region_from_window (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t region /**< */,
- xcb_window_t window /**< */,
- xcb_shape_kind_t kind /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_CREATE_REGION_FROM_WINDOW,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_create_region_from_window_request_t xcb_out;
-
- xcb_out.region = region;
- xcb_out.window = window;
- xcb_out.kind = kind;
- memset(xcb_out.pad0, 0, 3);
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_create_region_from_gc_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t region
- ** @param xcb_gcontext_t gc
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_create_region_from_gc_checked (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t region /**< */,
- xcb_gcontext_t gc /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_CREATE_REGION_FROM_GC,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_create_region_from_gc_request_t xcb_out;
-
- xcb_out.region = region;
- xcb_out.gc = gc;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_create_region_from_gc
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t region
- ** @param xcb_gcontext_t gc
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_create_region_from_gc (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t region /**< */,
- xcb_gcontext_t gc /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_CREATE_REGION_FROM_GC,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_create_region_from_gc_request_t xcb_out;
-
- xcb_out.region = region;
- xcb_out.gc = gc;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_create_region_from_picture_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t region
- ** @param xcb_render_picture_t picture
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_create_region_from_picture_checked (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t region /**< */,
- xcb_render_picture_t picture /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_CREATE_REGION_FROM_PICTURE,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_create_region_from_picture_request_t xcb_out;
-
- xcb_out.region = region;
- xcb_out.picture = picture;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_create_region_from_picture
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t region
- ** @param xcb_render_picture_t picture
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_create_region_from_picture (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t region /**< */,
- xcb_render_picture_t picture /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_CREATE_REGION_FROM_PICTURE,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_create_region_from_picture_request_t xcb_out;
-
- xcb_out.region = region;
- xcb_out.picture = picture;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_destroy_region_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t region
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_destroy_region_checked (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t region /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_DESTROY_REGION,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_destroy_region_request_t xcb_out;
-
- xcb_out.region = region;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_destroy_region
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t region
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_destroy_region (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t region /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_DESTROY_REGION,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_destroy_region_request_t xcb_out;
-
- xcb_out.region = region;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-int
-xcb_xfixes_set_region_sizeof (const void *_buffer /**< */,
- uint32_t rectangles_len /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_xfixes_set_region_request_t);
- xcb_tmp += xcb_block_len;
- /* rectangles */
- xcb_block_len += rectangles_len * sizeof(xcb_rectangle_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_rectangle_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_set_region_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t region
- ** @param uint32_t rectangles_len
- ** @param const xcb_rectangle_t *rectangles
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_set_region_checked (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t region /**< */,
- uint32_t rectangles_len /**< */,
- const xcb_rectangle_t *rectangles /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_SET_REGION,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_set_region_request_t xcb_out;
-
- xcb_out.region = region;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_rectangle_t rectangles */
- xcb_parts[4].iov_base = (char *) rectangles;
- xcb_parts[4].iov_len = rectangles_len * sizeof(xcb_rectangle_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_set_region
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t region
- ** @param uint32_t rectangles_len
- ** @param const xcb_rectangle_t *rectangles
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_set_region (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t region /**< */,
- uint32_t rectangles_len /**< */,
- const xcb_rectangle_t *rectangles /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_SET_REGION,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_set_region_request_t xcb_out;
-
- xcb_out.region = region;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_rectangle_t rectangles */
- xcb_parts[4].iov_base = (char *) rectangles;
- xcb_parts[4].iov_len = rectangles_len * sizeof(xcb_rectangle_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_copy_region_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t source
- ** @param xcb_xfixes_region_t destination
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_copy_region_checked (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t source /**< */,
- xcb_xfixes_region_t destination /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_COPY_REGION,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_copy_region_request_t xcb_out;
-
- xcb_out.source = source;
- xcb_out.destination = destination;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_copy_region
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t source
- ** @param xcb_xfixes_region_t destination
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_copy_region (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t source /**< */,
- xcb_xfixes_region_t destination /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_COPY_REGION,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_copy_region_request_t xcb_out;
-
- xcb_out.source = source;
- xcb_out.destination = destination;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_union_region_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t source1
- ** @param xcb_xfixes_region_t source2
- ** @param xcb_xfixes_region_t destination
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_union_region_checked (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t source1 /**< */,
- xcb_xfixes_region_t source2 /**< */,
- xcb_xfixes_region_t destination /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_UNION_REGION,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_union_region_request_t xcb_out;
-
- xcb_out.source1 = source1;
- xcb_out.source2 = source2;
- xcb_out.destination = destination;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_union_region
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t source1
- ** @param xcb_xfixes_region_t source2
- ** @param xcb_xfixes_region_t destination
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_union_region (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t source1 /**< */,
- xcb_xfixes_region_t source2 /**< */,
- xcb_xfixes_region_t destination /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_UNION_REGION,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_union_region_request_t xcb_out;
-
- xcb_out.source1 = source1;
- xcb_out.source2 = source2;
- xcb_out.destination = destination;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_intersect_region_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t source1
- ** @param xcb_xfixes_region_t source2
- ** @param xcb_xfixes_region_t destination
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_intersect_region_checked (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t source1 /**< */,
- xcb_xfixes_region_t source2 /**< */,
- xcb_xfixes_region_t destination /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_INTERSECT_REGION,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_intersect_region_request_t xcb_out;
-
- xcb_out.source1 = source1;
- xcb_out.source2 = source2;
- xcb_out.destination = destination;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_intersect_region
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t source1
- ** @param xcb_xfixes_region_t source2
- ** @param xcb_xfixes_region_t destination
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_intersect_region (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t source1 /**< */,
- xcb_xfixes_region_t source2 /**< */,
- xcb_xfixes_region_t destination /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_INTERSECT_REGION,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_intersect_region_request_t xcb_out;
-
- xcb_out.source1 = source1;
- xcb_out.source2 = source2;
- xcb_out.destination = destination;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_subtract_region_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t source1
- ** @param xcb_xfixes_region_t source2
- ** @param xcb_xfixes_region_t destination
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_subtract_region_checked (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t source1 /**< */,
- xcb_xfixes_region_t source2 /**< */,
- xcb_xfixes_region_t destination /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_SUBTRACT_REGION,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_subtract_region_request_t xcb_out;
-
- xcb_out.source1 = source1;
- xcb_out.source2 = source2;
- xcb_out.destination = destination;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_subtract_region
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t source1
- ** @param xcb_xfixes_region_t source2
- ** @param xcb_xfixes_region_t destination
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_subtract_region (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t source1 /**< */,
- xcb_xfixes_region_t source2 /**< */,
- xcb_xfixes_region_t destination /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_SUBTRACT_REGION,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_subtract_region_request_t xcb_out;
-
- xcb_out.source1 = source1;
- xcb_out.source2 = source2;
- xcb_out.destination = destination;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_invert_region_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t source
- ** @param xcb_rectangle_t bounds
- ** @param xcb_xfixes_region_t destination
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_invert_region_checked (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t source /**< */,
- xcb_rectangle_t bounds /**< */,
- xcb_xfixes_region_t destination /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_INVERT_REGION,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_invert_region_request_t xcb_out;
-
- xcb_out.source = source;
- xcb_out.bounds = bounds;
- xcb_out.destination = destination;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_invert_region
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t source
- ** @param xcb_rectangle_t bounds
- ** @param xcb_xfixes_region_t destination
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_invert_region (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t source /**< */,
- xcb_rectangle_t bounds /**< */,
- xcb_xfixes_region_t destination /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_INVERT_REGION,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_invert_region_request_t xcb_out;
-
- xcb_out.source = source;
- xcb_out.bounds = bounds;
- xcb_out.destination = destination;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_translate_region_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t region
- ** @param int16_t dx
- ** @param int16_t dy
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_translate_region_checked (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t region /**< */,
- int16_t dx /**< */,
- int16_t dy /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_TRANSLATE_REGION,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_translate_region_request_t xcb_out;
-
- xcb_out.region = region;
- xcb_out.dx = dx;
- xcb_out.dy = dy;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_translate_region
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t region
- ** @param int16_t dx
- ** @param int16_t dy
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_translate_region (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t region /**< */,
- int16_t dx /**< */,
- int16_t dy /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_TRANSLATE_REGION,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_translate_region_request_t xcb_out;
-
- xcb_out.region = region;
- xcb_out.dx = dx;
- xcb_out.dy = dy;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_region_extents_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t source
- ** @param xcb_xfixes_region_t destination
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_region_extents_checked (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t source /**< */,
- xcb_xfixes_region_t destination /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_REGION_EXTENTS,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_region_extents_request_t xcb_out;
-
- xcb_out.source = source;
- xcb_out.destination = destination;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_region_extents
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t source
- ** @param xcb_xfixes_region_t destination
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_region_extents (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t source /**< */,
- xcb_xfixes_region_t destination /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_REGION_EXTENTS,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_region_extents_request_t xcb_out;
-
- xcb_out.source = source;
- xcb_out.destination = destination;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-int
-xcb_xfixes_fetch_region_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_xfixes_fetch_region_reply_t *_aux = (xcb_xfixes_fetch_region_reply_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_xfixes_fetch_region_reply_t);
- xcb_tmp += xcb_block_len;
- /* rectangles */
- xcb_block_len += (_aux->length / 2) * sizeof(xcb_rectangle_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_rectangle_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xfixes_fetch_region_cookie_t xcb_xfixes_fetch_region
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t region
- ** @returns xcb_xfixes_fetch_region_cookie_t
- **
- *****************************************************************************/
-
-xcb_xfixes_fetch_region_cookie_t
-xcb_xfixes_fetch_region (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t region /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_FETCH_REGION,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_xfixes_fetch_region_cookie_t xcb_ret;
- xcb_xfixes_fetch_region_request_t xcb_out;
-
- xcb_out.region = region;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xfixes_fetch_region_cookie_t xcb_xfixes_fetch_region_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t region
- ** @returns xcb_xfixes_fetch_region_cookie_t
- **
- *****************************************************************************/
-
-xcb_xfixes_fetch_region_cookie_t
-xcb_xfixes_fetch_region_unchecked (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t region /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_FETCH_REGION,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_xfixes_fetch_region_cookie_t xcb_ret;
- xcb_xfixes_fetch_region_request_t xcb_out;
-
- xcb_out.region = region;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_rectangle_t * xcb_xfixes_fetch_region_rectangles
- **
- ** @param const xcb_xfixes_fetch_region_reply_t *R
- ** @returns xcb_rectangle_t *
- **
- *****************************************************************************/
-
-xcb_rectangle_t *
-xcb_xfixes_fetch_region_rectangles (const xcb_xfixes_fetch_region_reply_t *R /**< */)
-{
- return (xcb_rectangle_t *) (R + 1);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xfixes_fetch_region_rectangles_length
- **
- ** @param const xcb_xfixes_fetch_region_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xfixes_fetch_region_rectangles_length (const xcb_xfixes_fetch_region_reply_t *R /**< */)
-{
- return (R->length / 2);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_rectangle_iterator_t xcb_xfixes_fetch_region_rectangles_iterator
- **
- ** @param const xcb_xfixes_fetch_region_reply_t *R
- ** @returns xcb_rectangle_iterator_t
- **
- *****************************************************************************/
-
-xcb_rectangle_iterator_t
-xcb_xfixes_fetch_region_rectangles_iterator (const xcb_xfixes_fetch_region_reply_t *R /**< */)
-{
- xcb_rectangle_iterator_t i;
- i.data = (xcb_rectangle_t *) (R + 1);
- i.rem = (R->length / 2);
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xfixes_fetch_region_reply_t * xcb_xfixes_fetch_region_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_fetch_region_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xfixes_fetch_region_reply_t *
- **
- *****************************************************************************/
-
-xcb_xfixes_fetch_region_reply_t *
-xcb_xfixes_fetch_region_reply (xcb_connection_t *c /**< */,
- xcb_xfixes_fetch_region_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_xfixes_fetch_region_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_set_gc_clip_region_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_gcontext_t gc
- ** @param xcb_xfixes_region_t region
- ** @param int16_t x_origin
- ** @param int16_t y_origin
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_set_gc_clip_region_checked (xcb_connection_t *c /**< */,
- xcb_gcontext_t gc /**< */,
- xcb_xfixes_region_t region /**< */,
- int16_t x_origin /**< */,
- int16_t y_origin /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_SET_GC_CLIP_REGION,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_set_gc_clip_region_request_t xcb_out;
-
- xcb_out.gc = gc;
- xcb_out.region = region;
- xcb_out.x_origin = x_origin;
- xcb_out.y_origin = y_origin;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_set_gc_clip_region
- **
- ** @param xcb_connection_t *c
- ** @param xcb_gcontext_t gc
- ** @param xcb_xfixes_region_t region
- ** @param int16_t x_origin
- ** @param int16_t y_origin
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_set_gc_clip_region (xcb_connection_t *c /**< */,
- xcb_gcontext_t gc /**< */,
- xcb_xfixes_region_t region /**< */,
- int16_t x_origin /**< */,
- int16_t y_origin /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_SET_GC_CLIP_REGION,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_set_gc_clip_region_request_t xcb_out;
-
- xcb_out.gc = gc;
- xcb_out.region = region;
- xcb_out.x_origin = x_origin;
- xcb_out.y_origin = y_origin;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_set_window_shape_region_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t dest
- ** @param xcb_shape_kind_t dest_kind
- ** @param int16_t x_offset
- ** @param int16_t y_offset
- ** @param xcb_xfixes_region_t region
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_set_window_shape_region_checked (xcb_connection_t *c /**< */,
- xcb_window_t dest /**< */,
- xcb_shape_kind_t dest_kind /**< */,
- int16_t x_offset /**< */,
- int16_t y_offset /**< */,
- xcb_xfixes_region_t region /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_SET_WINDOW_SHAPE_REGION,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_set_window_shape_region_request_t xcb_out;
-
- xcb_out.dest = dest;
- xcb_out.dest_kind = dest_kind;
- memset(xcb_out.pad0, 0, 3);
- xcb_out.x_offset = x_offset;
- xcb_out.y_offset = y_offset;
- xcb_out.region = region;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_set_window_shape_region
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t dest
- ** @param xcb_shape_kind_t dest_kind
- ** @param int16_t x_offset
- ** @param int16_t y_offset
- ** @param xcb_xfixes_region_t region
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_set_window_shape_region (xcb_connection_t *c /**< */,
- xcb_window_t dest /**< */,
- xcb_shape_kind_t dest_kind /**< */,
- int16_t x_offset /**< */,
- int16_t y_offset /**< */,
- xcb_xfixes_region_t region /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_SET_WINDOW_SHAPE_REGION,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_set_window_shape_region_request_t xcb_out;
-
- xcb_out.dest = dest;
- xcb_out.dest_kind = dest_kind;
- memset(xcb_out.pad0, 0, 3);
- xcb_out.x_offset = x_offset;
- xcb_out.y_offset = y_offset;
- xcb_out.region = region;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_set_picture_clip_region_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_picture_t picture
- ** @param xcb_xfixes_region_t region
- ** @param int16_t x_origin
- ** @param int16_t y_origin
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_set_picture_clip_region_checked (xcb_connection_t *c /**< */,
- xcb_render_picture_t picture /**< */,
- xcb_xfixes_region_t region /**< */,
- int16_t x_origin /**< */,
- int16_t y_origin /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_SET_PICTURE_CLIP_REGION,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_set_picture_clip_region_request_t xcb_out;
-
- xcb_out.picture = picture;
- xcb_out.region = region;
- xcb_out.x_origin = x_origin;
- xcb_out.y_origin = y_origin;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_set_picture_clip_region
- **
- ** @param xcb_connection_t *c
- ** @param xcb_render_picture_t picture
- ** @param xcb_xfixes_region_t region
- ** @param int16_t x_origin
- ** @param int16_t y_origin
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_set_picture_clip_region (xcb_connection_t *c /**< */,
- xcb_render_picture_t picture /**< */,
- xcb_xfixes_region_t region /**< */,
- int16_t x_origin /**< */,
- int16_t y_origin /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_SET_PICTURE_CLIP_REGION,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_set_picture_clip_region_request_t xcb_out;
-
- xcb_out.picture = picture;
- xcb_out.region = region;
- xcb_out.x_origin = x_origin;
- xcb_out.y_origin = y_origin;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-int
-xcb_xfixes_set_cursor_name_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_xfixes_set_cursor_name_request_t *_aux = (xcb_xfixes_set_cursor_name_request_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_xfixes_set_cursor_name_request_t);
- xcb_tmp += xcb_block_len;
- /* name */
- xcb_block_len += _aux->nbytes * sizeof(char);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(char);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_set_cursor_name_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_cursor_t cursor
- ** @param uint16_t nbytes
- ** @param const char *name
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_set_cursor_name_checked (xcb_connection_t *c /**< */,
- xcb_cursor_t cursor /**< */,
- uint16_t nbytes /**< */,
- const char *name /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_SET_CURSOR_NAME,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_set_cursor_name_request_t xcb_out;
-
- xcb_out.cursor = cursor;
- xcb_out.nbytes = nbytes;
- memset(xcb_out.pad0, 0, 2);
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* char name */
- xcb_parts[4].iov_base = (char *) name;
- xcb_parts[4].iov_len = nbytes * sizeof(char);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_set_cursor_name
- **
- ** @param xcb_connection_t *c
- ** @param xcb_cursor_t cursor
- ** @param uint16_t nbytes
- ** @param const char *name
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_set_cursor_name (xcb_connection_t *c /**< */,
- xcb_cursor_t cursor /**< */,
- uint16_t nbytes /**< */,
- const char *name /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_SET_CURSOR_NAME,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_set_cursor_name_request_t xcb_out;
-
- xcb_out.cursor = cursor;
- xcb_out.nbytes = nbytes;
- memset(xcb_out.pad0, 0, 2);
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* char name */
- xcb_parts[4].iov_base = (char *) name;
- xcb_parts[4].iov_len = nbytes * sizeof(char);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-int
-xcb_xfixes_get_cursor_name_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_xfixes_get_cursor_name_reply_t *_aux = (xcb_xfixes_get_cursor_name_reply_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_xfixes_get_cursor_name_reply_t);
- xcb_tmp += xcb_block_len;
- /* name */
- xcb_block_len += _aux->nbytes * sizeof(char);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(char);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xfixes_get_cursor_name_cookie_t xcb_xfixes_get_cursor_name
- **
- ** @param xcb_connection_t *c
- ** @param xcb_cursor_t cursor
- ** @returns xcb_xfixes_get_cursor_name_cookie_t
- **
- *****************************************************************************/
-
-xcb_xfixes_get_cursor_name_cookie_t
-xcb_xfixes_get_cursor_name (xcb_connection_t *c /**< */,
- xcb_cursor_t cursor /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_GET_CURSOR_NAME,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_xfixes_get_cursor_name_cookie_t xcb_ret;
- xcb_xfixes_get_cursor_name_request_t xcb_out;
-
- xcb_out.cursor = cursor;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xfixes_get_cursor_name_cookie_t xcb_xfixes_get_cursor_name_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_cursor_t cursor
- ** @returns xcb_xfixes_get_cursor_name_cookie_t
- **
- *****************************************************************************/
-
-xcb_xfixes_get_cursor_name_cookie_t
-xcb_xfixes_get_cursor_name_unchecked (xcb_connection_t *c /**< */,
- xcb_cursor_t cursor /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_GET_CURSOR_NAME,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_xfixes_get_cursor_name_cookie_t xcb_ret;
- xcb_xfixes_get_cursor_name_request_t xcb_out;
-
- xcb_out.cursor = cursor;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** char * xcb_xfixes_get_cursor_name_name
- **
- ** @param const xcb_xfixes_get_cursor_name_reply_t *R
- ** @returns char *
- **
- *****************************************************************************/
-
-char *
-xcb_xfixes_get_cursor_name_name (const xcb_xfixes_get_cursor_name_reply_t *R /**< */)
-{
- return (char *) (R + 1);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xfixes_get_cursor_name_name_length
- **
- ** @param const xcb_xfixes_get_cursor_name_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xfixes_get_cursor_name_name_length (const xcb_xfixes_get_cursor_name_reply_t *R /**< */)
-{
- return R->nbytes;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xfixes_get_cursor_name_name_end
- **
- ** @param const xcb_xfixes_get_cursor_name_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xfixes_get_cursor_name_name_end (const xcb_xfixes_get_cursor_name_reply_t *R /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = ((char *) (R + 1)) + (R->nbytes);
- i.rem = 0;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xfixes_get_cursor_name_reply_t * xcb_xfixes_get_cursor_name_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_get_cursor_name_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xfixes_get_cursor_name_reply_t *
- **
- *****************************************************************************/
-
-xcb_xfixes_get_cursor_name_reply_t *
-xcb_xfixes_get_cursor_name_reply (xcb_connection_t *c /**< */,
- xcb_xfixes_get_cursor_name_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_xfixes_get_cursor_name_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-int
-xcb_xfixes_get_cursor_image_and_name_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_xfixes_get_cursor_image_and_name_reply_t *_aux = (xcb_xfixes_get_cursor_image_and_name_reply_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_xfixes_get_cursor_image_and_name_reply_t);
- xcb_tmp += xcb_block_len;
- /* name */
- xcb_block_len += _aux->nbytes * sizeof(char);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(char);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* cursor_image */
- xcb_block_len += (_aux->width * _aux->height) * sizeof(uint32_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(uint32_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xfixes_get_cursor_image_and_name_cookie_t xcb_xfixes_get_cursor_image_and_name
- **
- ** @param xcb_connection_t *c
- ** @returns xcb_xfixes_get_cursor_image_and_name_cookie_t
- **
- *****************************************************************************/
-
-xcb_xfixes_get_cursor_image_and_name_cookie_t
-xcb_xfixes_get_cursor_image_and_name (xcb_connection_t *c /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_GET_CURSOR_IMAGE_AND_NAME,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_xfixes_get_cursor_image_and_name_cookie_t xcb_ret;
- xcb_xfixes_get_cursor_image_and_name_request_t xcb_out;
-
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xfixes_get_cursor_image_and_name_cookie_t xcb_xfixes_get_cursor_image_and_name_unchecked
- **
- ** @param xcb_connection_t *c
- ** @returns xcb_xfixes_get_cursor_image_and_name_cookie_t
- **
- *****************************************************************************/
-
-xcb_xfixes_get_cursor_image_and_name_cookie_t
-xcb_xfixes_get_cursor_image_and_name_unchecked (xcb_connection_t *c /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_GET_CURSOR_IMAGE_AND_NAME,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_xfixes_get_cursor_image_and_name_cookie_t xcb_ret;
- xcb_xfixes_get_cursor_image_and_name_request_t xcb_out;
-
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** char * xcb_xfixes_get_cursor_image_and_name_name
- **
- ** @param const xcb_xfixes_get_cursor_image_and_name_reply_t *R
- ** @returns char *
- **
- *****************************************************************************/
-
-char *
-xcb_xfixes_get_cursor_image_and_name_name (const xcb_xfixes_get_cursor_image_and_name_reply_t *R /**< */)
-{
- return (char *) (R + 1);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xfixes_get_cursor_image_and_name_name_length
- **
- ** @param const xcb_xfixes_get_cursor_image_and_name_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xfixes_get_cursor_image_and_name_name_length (const xcb_xfixes_get_cursor_image_and_name_reply_t *R /**< */)
-{
- return R->nbytes;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xfixes_get_cursor_image_and_name_name_end
- **
- ** @param const xcb_xfixes_get_cursor_image_and_name_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xfixes_get_cursor_image_and_name_name_end (const xcb_xfixes_get_cursor_image_and_name_reply_t *R /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = ((char *) (R + 1)) + (R->nbytes);
- i.rem = 0;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** uint32_t * xcb_xfixes_get_cursor_image_and_name_cursor_image
- **
- ** @param const xcb_xfixes_get_cursor_image_and_name_reply_t *R
- ** @returns uint32_t *
- **
- *****************************************************************************/
-
-uint32_t *
-xcb_xfixes_get_cursor_image_and_name_cursor_image (const xcb_xfixes_get_cursor_image_and_name_reply_t *R /**< */)
-{
- xcb_generic_iterator_t prev = xcb_xfixes_get_cursor_image_and_name_name_end(R);
- return (uint32_t *) ((char *) prev.data + XCB_TYPE_PAD(uint32_t, prev.index) + 0);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xfixes_get_cursor_image_and_name_cursor_image_length
- **
- ** @param const xcb_xfixes_get_cursor_image_and_name_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xfixes_get_cursor_image_and_name_cursor_image_length (const xcb_xfixes_get_cursor_image_and_name_reply_t *R /**< */)
-{
- return (R->width * R->height);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xfixes_get_cursor_image_and_name_cursor_image_end
- **
- ** @param const xcb_xfixes_get_cursor_image_and_name_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xfixes_get_cursor_image_and_name_cursor_image_end (const xcb_xfixes_get_cursor_image_and_name_reply_t *R /**< */)
-{
- xcb_generic_iterator_t i;
- xcb_generic_iterator_t child = xcb_xfixes_get_cursor_image_and_name_name_end(R);
- i.data = ((uint32_t *) child.data) + ((R->width * R->height));
- i.rem = 0;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xfixes_get_cursor_image_and_name_reply_t * xcb_xfixes_get_cursor_image_and_name_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_get_cursor_image_and_name_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xfixes_get_cursor_image_and_name_reply_t *
- **
- *****************************************************************************/
-
-xcb_xfixes_get_cursor_image_and_name_reply_t *
-xcb_xfixes_get_cursor_image_and_name_reply (xcb_connection_t *c /**< */,
- xcb_xfixes_get_cursor_image_and_name_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_xfixes_get_cursor_image_and_name_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_change_cursor_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_cursor_t source
- ** @param xcb_cursor_t destination
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_change_cursor_checked (xcb_connection_t *c /**< */,
- xcb_cursor_t source /**< */,
- xcb_cursor_t destination /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_CHANGE_CURSOR,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_change_cursor_request_t xcb_out;
-
- xcb_out.source = source;
- xcb_out.destination = destination;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_change_cursor
- **
- ** @param xcb_connection_t *c
- ** @param xcb_cursor_t source
- ** @param xcb_cursor_t destination
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_change_cursor (xcb_connection_t *c /**< */,
- xcb_cursor_t source /**< */,
- xcb_cursor_t destination /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_CHANGE_CURSOR,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_change_cursor_request_t xcb_out;
-
- xcb_out.source = source;
- xcb_out.destination = destination;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-int
-xcb_xfixes_change_cursor_by_name_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_xfixes_change_cursor_by_name_request_t *_aux = (xcb_xfixes_change_cursor_by_name_request_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_xfixes_change_cursor_by_name_request_t);
- xcb_tmp += xcb_block_len;
- /* name */
- xcb_block_len += _aux->nbytes * sizeof(char);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(char);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_change_cursor_by_name_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_cursor_t src
- ** @param uint16_t nbytes
- ** @param const char *name
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_change_cursor_by_name_checked (xcb_connection_t *c /**< */,
- xcb_cursor_t src /**< */,
- uint16_t nbytes /**< */,
- const char *name /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_CHANGE_CURSOR_BY_NAME,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_change_cursor_by_name_request_t xcb_out;
-
- xcb_out.src = src;
- xcb_out.nbytes = nbytes;
- memset(xcb_out.pad0, 0, 2);
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* char name */
- xcb_parts[4].iov_base = (char *) name;
- xcb_parts[4].iov_len = nbytes * sizeof(char);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_change_cursor_by_name
- **
- ** @param xcb_connection_t *c
- ** @param xcb_cursor_t src
- ** @param uint16_t nbytes
- ** @param const char *name
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_change_cursor_by_name (xcb_connection_t *c /**< */,
- xcb_cursor_t src /**< */,
- uint16_t nbytes /**< */,
- const char *name /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_CHANGE_CURSOR_BY_NAME,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_change_cursor_by_name_request_t xcb_out;
-
- xcb_out.src = src;
- xcb_out.nbytes = nbytes;
- memset(xcb_out.pad0, 0, 2);
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* char name */
- xcb_parts[4].iov_base = (char *) name;
- xcb_parts[4].iov_len = nbytes * sizeof(char);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_expand_region_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t source
- ** @param xcb_xfixes_region_t destination
- ** @param uint16_t left
- ** @param uint16_t right
- ** @param uint16_t top
- ** @param uint16_t bottom
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_expand_region_checked (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t source /**< */,
- xcb_xfixes_region_t destination /**< */,
- uint16_t left /**< */,
- uint16_t right /**< */,
- uint16_t top /**< */,
- uint16_t bottom /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_EXPAND_REGION,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_expand_region_request_t xcb_out;
-
- xcb_out.source = source;
- xcb_out.destination = destination;
- xcb_out.left = left;
- xcb_out.right = right;
- xcb_out.top = top;
- xcb_out.bottom = bottom;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_expand_region
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xfixes_region_t source
- ** @param xcb_xfixes_region_t destination
- ** @param uint16_t left
- ** @param uint16_t right
- ** @param uint16_t top
- ** @param uint16_t bottom
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_expand_region (xcb_connection_t *c /**< */,
- xcb_xfixes_region_t source /**< */,
- xcb_xfixes_region_t destination /**< */,
- uint16_t left /**< */,
- uint16_t right /**< */,
- uint16_t top /**< */,
- uint16_t bottom /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_EXPAND_REGION,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_expand_region_request_t xcb_out;
-
- xcb_out.source = source;
- xcb_out.destination = destination;
- xcb_out.left = left;
- xcb_out.right = right;
- xcb_out.top = top;
- xcb_out.bottom = bottom;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_hide_cursor_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_hide_cursor_checked (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_HIDE_CURSOR,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_hide_cursor_request_t xcb_out;
-
- xcb_out.window = window;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_hide_cursor
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_hide_cursor (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_HIDE_CURSOR,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_hide_cursor_request_t xcb_out;
-
- xcb_out.window = window;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_show_cursor_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_show_cursor_checked (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_SHOW_CURSOR,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_show_cursor_request_t xcb_out;
-
- xcb_out.window = window;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xfixes_show_cursor
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xfixes_show_cursor (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xfixes_id,
- /* opcode */ XCB_XFIXES_SHOW_CURSOR,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xfixes_show_cursor_request_t xcb_out;
-
- xcb_out.window = window;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
diff --git a/src/3rdparty/xcb/libxcb/xinerama.c b/src/3rdparty/xcb/libxcb/xinerama.c
deleted file mode 100644
index e660be267b..0000000000
--- a/src/3rdparty/xcb/libxcb/xinerama.c
+++ /dev/null
@@ -1,703 +0,0 @@
-/*
- * This file generated automatically from xinerama.xml by c_client.py.
- * Edit at your peril.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-#include <stddef.h> /* for offsetof() */
-#include "xcbext.h"
-#include "xinerama.h"
-
-#define ALIGNOF(type) offsetof(struct { char dummy; type member; }, member)
-#include "xproto.h"
-
-xcb_extension_t xcb_xinerama_id = { "XINERAMA", 0 };
-
-
-/*****************************************************************************
- **
- ** void xcb_xinerama_screen_info_next
- **
- ** @param xcb_xinerama_screen_info_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xinerama_screen_info_next (xcb_xinerama_screen_info_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xinerama_screen_info_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xinerama_screen_info_end
- **
- ** @param xcb_xinerama_screen_info_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xinerama_screen_info_end (xcb_xinerama_screen_info_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xinerama_query_version_cookie_t xcb_xinerama_query_version
- **
- ** @param xcb_connection_t *c
- ** @param uint8_t major
- ** @param uint8_t minor
- ** @returns xcb_xinerama_query_version_cookie_t
- **
- *****************************************************************************/
-
-xcb_xinerama_query_version_cookie_t
-xcb_xinerama_query_version (xcb_connection_t *c /**< */,
- uint8_t major /**< */,
- uint8_t minor /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xinerama_id,
- /* opcode */ XCB_XINERAMA_QUERY_VERSION,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_xinerama_query_version_cookie_t xcb_ret;
- xcb_xinerama_query_version_request_t xcb_out;
-
- xcb_out.major = major;
- xcb_out.minor = minor;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xinerama_query_version_cookie_t xcb_xinerama_query_version_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param uint8_t major
- ** @param uint8_t minor
- ** @returns xcb_xinerama_query_version_cookie_t
- **
- *****************************************************************************/
-
-xcb_xinerama_query_version_cookie_t
-xcb_xinerama_query_version_unchecked (xcb_connection_t *c /**< */,
- uint8_t major /**< */,
- uint8_t minor /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xinerama_id,
- /* opcode */ XCB_XINERAMA_QUERY_VERSION,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_xinerama_query_version_cookie_t xcb_ret;
- xcb_xinerama_query_version_request_t xcb_out;
-
- xcb_out.major = major;
- xcb_out.minor = minor;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xinerama_query_version_reply_t * xcb_xinerama_query_version_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xinerama_query_version_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xinerama_query_version_reply_t *
- **
- *****************************************************************************/
-
-xcb_xinerama_query_version_reply_t *
-xcb_xinerama_query_version_reply (xcb_connection_t *c /**< */,
- xcb_xinerama_query_version_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_xinerama_query_version_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xinerama_get_state_cookie_t xcb_xinerama_get_state
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @returns xcb_xinerama_get_state_cookie_t
- **
- *****************************************************************************/
-
-xcb_xinerama_get_state_cookie_t
-xcb_xinerama_get_state (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xinerama_id,
- /* opcode */ XCB_XINERAMA_GET_STATE,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_xinerama_get_state_cookie_t xcb_ret;
- xcb_xinerama_get_state_request_t xcb_out;
-
- xcb_out.window = window;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xinerama_get_state_cookie_t xcb_xinerama_get_state_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @returns xcb_xinerama_get_state_cookie_t
- **
- *****************************************************************************/
-
-xcb_xinerama_get_state_cookie_t
-xcb_xinerama_get_state_unchecked (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xinerama_id,
- /* opcode */ XCB_XINERAMA_GET_STATE,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_xinerama_get_state_cookie_t xcb_ret;
- xcb_xinerama_get_state_request_t xcb_out;
-
- xcb_out.window = window;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xinerama_get_state_reply_t * xcb_xinerama_get_state_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xinerama_get_state_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xinerama_get_state_reply_t *
- **
- *****************************************************************************/
-
-xcb_xinerama_get_state_reply_t *
-xcb_xinerama_get_state_reply (xcb_connection_t *c /**< */,
- xcb_xinerama_get_state_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_xinerama_get_state_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xinerama_get_screen_count_cookie_t xcb_xinerama_get_screen_count
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @returns xcb_xinerama_get_screen_count_cookie_t
- **
- *****************************************************************************/
-
-xcb_xinerama_get_screen_count_cookie_t
-xcb_xinerama_get_screen_count (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xinerama_id,
- /* opcode */ XCB_XINERAMA_GET_SCREEN_COUNT,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_xinerama_get_screen_count_cookie_t xcb_ret;
- xcb_xinerama_get_screen_count_request_t xcb_out;
-
- xcb_out.window = window;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xinerama_get_screen_count_cookie_t xcb_xinerama_get_screen_count_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @returns xcb_xinerama_get_screen_count_cookie_t
- **
- *****************************************************************************/
-
-xcb_xinerama_get_screen_count_cookie_t
-xcb_xinerama_get_screen_count_unchecked (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xinerama_id,
- /* opcode */ XCB_XINERAMA_GET_SCREEN_COUNT,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_xinerama_get_screen_count_cookie_t xcb_ret;
- xcb_xinerama_get_screen_count_request_t xcb_out;
-
- xcb_out.window = window;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xinerama_get_screen_count_reply_t * xcb_xinerama_get_screen_count_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xinerama_get_screen_count_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xinerama_get_screen_count_reply_t *
- **
- *****************************************************************************/
-
-xcb_xinerama_get_screen_count_reply_t *
-xcb_xinerama_get_screen_count_reply (xcb_connection_t *c /**< */,
- xcb_xinerama_get_screen_count_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_xinerama_get_screen_count_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xinerama_get_screen_size_cookie_t xcb_xinerama_get_screen_size
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @param uint32_t screen
- ** @returns xcb_xinerama_get_screen_size_cookie_t
- **
- *****************************************************************************/
-
-xcb_xinerama_get_screen_size_cookie_t
-xcb_xinerama_get_screen_size (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */,
- uint32_t screen /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xinerama_id,
- /* opcode */ XCB_XINERAMA_GET_SCREEN_SIZE,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_xinerama_get_screen_size_cookie_t xcb_ret;
- xcb_xinerama_get_screen_size_request_t xcb_out;
-
- xcb_out.window = window;
- xcb_out.screen = screen;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xinerama_get_screen_size_cookie_t xcb_xinerama_get_screen_size_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_window_t window
- ** @param uint32_t screen
- ** @returns xcb_xinerama_get_screen_size_cookie_t
- **
- *****************************************************************************/
-
-xcb_xinerama_get_screen_size_cookie_t
-xcb_xinerama_get_screen_size_unchecked (xcb_connection_t *c /**< */,
- xcb_window_t window /**< */,
- uint32_t screen /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xinerama_id,
- /* opcode */ XCB_XINERAMA_GET_SCREEN_SIZE,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_xinerama_get_screen_size_cookie_t xcb_ret;
- xcb_xinerama_get_screen_size_request_t xcb_out;
-
- xcb_out.window = window;
- xcb_out.screen = screen;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xinerama_get_screen_size_reply_t * xcb_xinerama_get_screen_size_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xinerama_get_screen_size_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xinerama_get_screen_size_reply_t *
- **
- *****************************************************************************/
-
-xcb_xinerama_get_screen_size_reply_t *
-xcb_xinerama_get_screen_size_reply (xcb_connection_t *c /**< */,
- xcb_xinerama_get_screen_size_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_xinerama_get_screen_size_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xinerama_is_active_cookie_t xcb_xinerama_is_active
- **
- ** @param xcb_connection_t *c
- ** @returns xcb_xinerama_is_active_cookie_t
- **
- *****************************************************************************/
-
-xcb_xinerama_is_active_cookie_t
-xcb_xinerama_is_active (xcb_connection_t *c /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xinerama_id,
- /* opcode */ XCB_XINERAMA_IS_ACTIVE,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_xinerama_is_active_cookie_t xcb_ret;
- xcb_xinerama_is_active_request_t xcb_out;
-
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xinerama_is_active_cookie_t xcb_xinerama_is_active_unchecked
- **
- ** @param xcb_connection_t *c
- ** @returns xcb_xinerama_is_active_cookie_t
- **
- *****************************************************************************/
-
-xcb_xinerama_is_active_cookie_t
-xcb_xinerama_is_active_unchecked (xcb_connection_t *c /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xinerama_id,
- /* opcode */ XCB_XINERAMA_IS_ACTIVE,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_xinerama_is_active_cookie_t xcb_ret;
- xcb_xinerama_is_active_request_t xcb_out;
-
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xinerama_is_active_reply_t * xcb_xinerama_is_active_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xinerama_is_active_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xinerama_is_active_reply_t *
- **
- *****************************************************************************/
-
-xcb_xinerama_is_active_reply_t *
-xcb_xinerama_is_active_reply (xcb_connection_t *c /**< */,
- xcb_xinerama_is_active_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_xinerama_is_active_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-int
-xcb_xinerama_query_screens_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_xinerama_query_screens_reply_t *_aux = (xcb_xinerama_query_screens_reply_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to;
-
-
- xcb_block_len += sizeof(xcb_xinerama_query_screens_reply_t);
- xcb_tmp += xcb_block_len;
- /* screen_info */
- xcb_block_len += _aux->number * sizeof(xcb_xinerama_screen_info_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_xinerama_screen_info_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xinerama_query_screens_cookie_t xcb_xinerama_query_screens
- **
- ** @param xcb_connection_t *c
- ** @returns xcb_xinerama_query_screens_cookie_t
- **
- *****************************************************************************/
-
-xcb_xinerama_query_screens_cookie_t
-xcb_xinerama_query_screens (xcb_connection_t *c /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xinerama_id,
- /* opcode */ XCB_XINERAMA_QUERY_SCREENS,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_xinerama_query_screens_cookie_t xcb_ret;
- xcb_xinerama_query_screens_request_t xcb_out;
-
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xinerama_query_screens_cookie_t xcb_xinerama_query_screens_unchecked
- **
- ** @param xcb_connection_t *c
- ** @returns xcb_xinerama_query_screens_cookie_t
- **
- *****************************************************************************/
-
-xcb_xinerama_query_screens_cookie_t
-xcb_xinerama_query_screens_unchecked (xcb_connection_t *c /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xinerama_id,
- /* opcode */ XCB_XINERAMA_QUERY_SCREENS,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_xinerama_query_screens_cookie_t xcb_ret;
- xcb_xinerama_query_screens_request_t xcb_out;
-
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xinerama_screen_info_t * xcb_xinerama_query_screens_screen_info
- **
- ** @param const xcb_xinerama_query_screens_reply_t *R
- ** @returns xcb_xinerama_screen_info_t *
- **
- *****************************************************************************/
-
-xcb_xinerama_screen_info_t *
-xcb_xinerama_query_screens_screen_info (const xcb_xinerama_query_screens_reply_t *R /**< */)
-{
- return (xcb_xinerama_screen_info_t *) (R + 1);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xinerama_query_screens_screen_info_length
- **
- ** @param const xcb_xinerama_query_screens_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xinerama_query_screens_screen_info_length (const xcb_xinerama_query_screens_reply_t *R /**< */)
-{
- return R->number;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xinerama_screen_info_iterator_t xcb_xinerama_query_screens_screen_info_iterator
- **
- ** @param const xcb_xinerama_query_screens_reply_t *R
- ** @returns xcb_xinerama_screen_info_iterator_t
- **
- *****************************************************************************/
-
-xcb_xinerama_screen_info_iterator_t
-xcb_xinerama_query_screens_screen_info_iterator (const xcb_xinerama_query_screens_reply_t *R /**< */)
-{
- xcb_xinerama_screen_info_iterator_t i;
- i.data = (xcb_xinerama_screen_info_t *) (R + 1);
- i.rem = R->number;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xinerama_query_screens_reply_t * xcb_xinerama_query_screens_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xinerama_query_screens_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xinerama_query_screens_reply_t *
- **
- *****************************************************************************/
-
-xcb_xinerama_query_screens_reply_t *
-xcb_xinerama_query_screens_reply (xcb_connection_t *c /**< */,
- xcb_xinerama_query_screens_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_xinerama_query_screens_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
diff --git a/src/3rdparty/xcb/libxcb/xinput.c b/src/3rdparty/xcb/libxcb/xinput.c
index 0edfde656c..d4e3c250bc 100644
--- a/src/3rdparty/xcb/libxcb/xinput.c
+++ b/src/3rdparty/xcb/libxcb/xinput.c
@@ -10,11 +10,11 @@
#include <string.h>
#include <assert.h>
#include <stddef.h> /* for offsetof() */
-#include "xcbext.h"
-#include "xinput.h"
+#include <xcb/xcbext.h>
+#include <xcb/xinput.h>
#define ALIGNOF(type) offsetof(struct { char dummy; type member; }, member)
-#include "xfixes.h"
+#include <xcb/xfixes.h>
xcb_extension_t xcb_input_id = { "XInputExtension", 0 };
diff --git a/src/3rdparty/xcb/libxcb/xkb.c b/src/3rdparty/xcb/libxcb/xkb.c
deleted file mode 100644
index d55bd76f10..0000000000
--- a/src/3rdparty/xcb/libxcb/xkb.c
+++ /dev/null
@@ -1,15959 +0,0 @@
-/*
- * This file generated automatically from xkb.xml by c_client.py.
- * Edit at your peril.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-#include <stddef.h> /* for offsetof() */
-#include "xcbext.h"
-#include "xkb.h"
-
-#define ALIGNOF(type) offsetof(struct { char dummy; type member; }, member)
-#include "xproto.h"
-
-xcb_extension_t xcb_xkb_id = { "XKEYBOARD", 0 };
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_device_spec_next
- **
- ** @param xcb_xkb_device_spec_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_device_spec_next (xcb_xkb_device_spec_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_device_spec_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_device_spec_end
- **
- ** @param xcb_xkb_device_spec_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_device_spec_end (xcb_xkb_device_spec_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_led_class_spec_next
- **
- ** @param xcb_xkb_led_class_spec_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_led_class_spec_next (xcb_xkb_led_class_spec_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_led_class_spec_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_led_class_spec_end
- **
- ** @param xcb_xkb_led_class_spec_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_led_class_spec_end (xcb_xkb_led_class_spec_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_bell_class_spec_next
- **
- ** @param xcb_xkb_bell_class_spec_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_bell_class_spec_next (xcb_xkb_bell_class_spec_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_bell_class_spec_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_bell_class_spec_end
- **
- ** @param xcb_xkb_bell_class_spec_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_bell_class_spec_end (xcb_xkb_bell_class_spec_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_id_spec_next
- **
- ** @param xcb_xkb_id_spec_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_id_spec_next (xcb_xkb_id_spec_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_id_spec_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_id_spec_end
- **
- ** @param xcb_xkb_id_spec_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_id_spec_end (xcb_xkb_id_spec_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_indicator_map_next
- **
- ** @param xcb_xkb_indicator_map_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_indicator_map_next (xcb_xkb_indicator_map_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_indicator_map_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_indicator_map_end
- **
- ** @param xcb_xkb_indicator_map_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_indicator_map_end (xcb_xkb_indicator_map_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_mod_def_next
- **
- ** @param xcb_xkb_mod_def_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_mod_def_next (xcb_xkb_mod_def_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_mod_def_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_mod_def_end
- **
- ** @param xcb_xkb_mod_def_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_mod_def_end (xcb_xkb_mod_def_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_key_name_next
- **
- ** @param xcb_xkb_key_name_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_key_name_next (xcb_xkb_key_name_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_key_name_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_key_name_end
- **
- ** @param xcb_xkb_key_name_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_key_name_end (xcb_xkb_key_name_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_key_alias_next
- **
- ** @param xcb_xkb_key_alias_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_key_alias_next (xcb_xkb_key_alias_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_key_alias_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_key_alias_end
- **
- ** @param xcb_xkb_key_alias_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_key_alias_end (xcb_xkb_key_alias_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-int
-xcb_xkb_counted_string_16_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_xkb_counted_string_16_t *_aux = (xcb_xkb_counted_string_16_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to = 0;
-
-
- xcb_block_len += sizeof(xcb_xkb_counted_string_16_t);
- xcb_tmp += xcb_block_len;
- xcb_buffer_len += xcb_block_len;
- xcb_block_len = 0;
- /* string */
- xcb_block_len += _aux->length * sizeof(char);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(char);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* alignment_pad */
- xcb_block_len += (((_aux->length + 5) & (~3)) - (_aux->length + 2)) * sizeof(char);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(char);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** char * xcb_xkb_counted_string_16_string
- **
- ** @param const xcb_xkb_counted_string_16_t *R
- ** @returns char *
- **
- *****************************************************************************/
-
-char *
-xcb_xkb_counted_string_16_string (const xcb_xkb_counted_string_16_t *R /**< */)
-{
- return (char *) (R + 1);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_counted_string_16_string_length
- **
- ** @param const xcb_xkb_counted_string_16_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_counted_string_16_string_length (const xcb_xkb_counted_string_16_t *R /**< */)
-{
- return R->length;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_counted_string_16_string_end
- **
- ** @param const xcb_xkb_counted_string_16_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_counted_string_16_string_end (const xcb_xkb_counted_string_16_t *R /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = ((char *) (R + 1)) + (R->length);
- i.rem = 0;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** void * xcb_xkb_counted_string_16_alignment_pad
- **
- ** @param const xcb_xkb_counted_string_16_t *R
- ** @returns void *
- **
- *****************************************************************************/
-
-void *
-xcb_xkb_counted_string_16_alignment_pad (const xcb_xkb_counted_string_16_t *R /**< */)
-{
- xcb_generic_iterator_t prev = xcb_xkb_counted_string_16_string_end(R);
- return (void *) ((char *) prev.data + XCB_TYPE_PAD(char, prev.index) + 0);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_counted_string_16_alignment_pad_length
- **
- ** @param const xcb_xkb_counted_string_16_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_counted_string_16_alignment_pad_length (const xcb_xkb_counted_string_16_t *R /**< */)
-{
- return (((R->length + 5) & (~3)) - (R->length + 2));
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_counted_string_16_alignment_pad_end
- **
- ** @param const xcb_xkb_counted_string_16_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_counted_string_16_alignment_pad_end (const xcb_xkb_counted_string_16_t *R /**< */)
-{
- xcb_generic_iterator_t i;
- xcb_generic_iterator_t child = xcb_xkb_counted_string_16_string_end(R);
- i.data = ((char *) child.data) + ((((R->length + 5) & (~3)) - (R->length + 2)));
- i.rem = 0;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_counted_string_16_next
- **
- ** @param xcb_xkb_counted_string_16_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_counted_string_16_next (xcb_xkb_counted_string_16_iterator_t *i /**< */)
-{
- xcb_xkb_counted_string_16_t *R = i->data;
- xcb_generic_iterator_t child;
- child.data = (xcb_xkb_counted_string_16_t *)(((char *)R) + xcb_xkb_counted_string_16_sizeof(R));
- i->index = (char *) child.data - (char *) i->data;
- --i->rem;
- i->data = (xcb_xkb_counted_string_16_t *) child.data;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_counted_string_16_end
- **
- ** @param xcb_xkb_counted_string_16_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_counted_string_16_end (xcb_xkb_counted_string_16_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- while(i.rem > 0)
- xcb_xkb_counted_string_16_next(&i);
- ret.data = i.data;
- ret.rem = i.rem;
- ret.index = i.index;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_kt_map_entry_next
- **
- ** @param xcb_xkb_kt_map_entry_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_kt_map_entry_next (xcb_xkb_kt_map_entry_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_kt_map_entry_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_kt_map_entry_end
- **
- ** @param xcb_xkb_kt_map_entry_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_kt_map_entry_end (xcb_xkb_kt_map_entry_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-int
-xcb_xkb_key_type_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_xkb_key_type_t *_aux = (xcb_xkb_key_type_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to = 0;
-
-
- xcb_block_len += sizeof(xcb_xkb_key_type_t);
- xcb_tmp += xcb_block_len;
- xcb_buffer_len += xcb_block_len;
- xcb_block_len = 0;
- /* map */
- xcb_block_len += _aux->nMapEntries * sizeof(xcb_xkb_kt_map_entry_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_xkb_kt_map_entry_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* preserve */
- xcb_block_len += (_aux->hasPreserve * _aux->nMapEntries) * sizeof(xcb_xkb_mod_def_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_xkb_mod_def_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_kt_map_entry_t * xcb_xkb_key_type_map
- **
- ** @param const xcb_xkb_key_type_t *R
- ** @returns xcb_xkb_kt_map_entry_t *
- **
- *****************************************************************************/
-
-xcb_xkb_kt_map_entry_t *
-xcb_xkb_key_type_map (const xcb_xkb_key_type_t *R /**< */)
-{
- return (xcb_xkb_kt_map_entry_t *) (R + 1);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_key_type_map_length
- **
- ** @param const xcb_xkb_key_type_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_key_type_map_length (const xcb_xkb_key_type_t *R /**< */)
-{
- return R->nMapEntries;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_kt_map_entry_iterator_t xcb_xkb_key_type_map_iterator
- **
- ** @param const xcb_xkb_key_type_t *R
- ** @returns xcb_xkb_kt_map_entry_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_kt_map_entry_iterator_t
-xcb_xkb_key_type_map_iterator (const xcb_xkb_key_type_t *R /**< */)
-{
- xcb_xkb_kt_map_entry_iterator_t i;
- i.data = (xcb_xkb_kt_map_entry_t *) (R + 1);
- i.rem = R->nMapEntries;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_mod_def_t * xcb_xkb_key_type_preserve
- **
- ** @param const xcb_xkb_key_type_t *R
- ** @returns xcb_xkb_mod_def_t *
- **
- *****************************************************************************/
-
-xcb_xkb_mod_def_t *
-xcb_xkb_key_type_preserve (const xcb_xkb_key_type_t *R /**< */)
-{
- xcb_generic_iterator_t prev = xcb_xkb_kt_map_entry_end(xcb_xkb_key_type_map_iterator(R));
- return (xcb_xkb_mod_def_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_xkb_mod_def_t, prev.index) + 0);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_key_type_preserve_length
- **
- ** @param const xcb_xkb_key_type_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_key_type_preserve_length (const xcb_xkb_key_type_t *R /**< */)
-{
- return (R->hasPreserve * R->nMapEntries);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_mod_def_iterator_t xcb_xkb_key_type_preserve_iterator
- **
- ** @param const xcb_xkb_key_type_t *R
- ** @returns xcb_xkb_mod_def_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_mod_def_iterator_t
-xcb_xkb_key_type_preserve_iterator (const xcb_xkb_key_type_t *R /**< */)
-{
- xcb_xkb_mod_def_iterator_t i;
- xcb_generic_iterator_t prev = xcb_xkb_kt_map_entry_end(xcb_xkb_key_type_map_iterator(R));
- i.data = (xcb_xkb_mod_def_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_xkb_mod_def_t, prev.index));
- i.rem = (R->hasPreserve * R->nMapEntries);
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_key_type_next
- **
- ** @param xcb_xkb_key_type_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_key_type_next (xcb_xkb_key_type_iterator_t *i /**< */)
-{
- xcb_xkb_key_type_t *R = i->data;
- xcb_generic_iterator_t child;
- child.data = (xcb_xkb_key_type_t *)(((char *)R) + xcb_xkb_key_type_sizeof(R));
- i->index = (char *) child.data - (char *) i->data;
- --i->rem;
- i->data = (xcb_xkb_key_type_t *) child.data;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_key_type_end
- **
- ** @param xcb_xkb_key_type_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_key_type_end (xcb_xkb_key_type_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- while(i.rem > 0)
- xcb_xkb_key_type_next(&i);
- ret.data = i.data;
- ret.rem = i.rem;
- ret.index = i.index;
- return ret;
-}
-
-int
-xcb_xkb_key_sym_map_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_xkb_key_sym_map_t *_aux = (xcb_xkb_key_sym_map_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to = 0;
-
-
- xcb_block_len += sizeof(xcb_xkb_key_sym_map_t);
- xcb_tmp += xcb_block_len;
- xcb_buffer_len += xcb_block_len;
- xcb_block_len = 0;
- /* syms */
- xcb_block_len += _aux->nSyms * sizeof(xcb_keysym_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_keysym_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_keysym_t * xcb_xkb_key_sym_map_syms
- **
- ** @param const xcb_xkb_key_sym_map_t *R
- ** @returns xcb_keysym_t *
- **
- *****************************************************************************/
-
-xcb_keysym_t *
-xcb_xkb_key_sym_map_syms (const xcb_xkb_key_sym_map_t *R /**< */)
-{
- return (xcb_keysym_t *) (R + 1);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_key_sym_map_syms_length
- **
- ** @param const xcb_xkb_key_sym_map_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_key_sym_map_syms_length (const xcb_xkb_key_sym_map_t *R /**< */)
-{
- return R->nSyms;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_key_sym_map_syms_end
- **
- ** @param const xcb_xkb_key_sym_map_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_key_sym_map_syms_end (const xcb_xkb_key_sym_map_t *R /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = ((xcb_keysym_t *) (R + 1)) + (R->nSyms);
- i.rem = 0;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_key_sym_map_next
- **
- ** @param xcb_xkb_key_sym_map_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_key_sym_map_next (xcb_xkb_key_sym_map_iterator_t *i /**< */)
-{
- xcb_xkb_key_sym_map_t *R = i->data;
- xcb_generic_iterator_t child;
- child.data = (xcb_xkb_key_sym_map_t *)(((char *)R) + xcb_xkb_key_sym_map_sizeof(R));
- i->index = (char *) child.data - (char *) i->data;
- --i->rem;
- i->data = (xcb_xkb_key_sym_map_t *) child.data;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_key_sym_map_end
- **
- ** @param xcb_xkb_key_sym_map_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_key_sym_map_end (xcb_xkb_key_sym_map_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- while(i.rem > 0)
- xcb_xkb_key_sym_map_next(&i);
- ret.data = i.data;
- ret.rem = i.rem;
- ret.index = i.index;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_common_behavior_next
- **
- ** @param xcb_xkb_common_behavior_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_common_behavior_next (xcb_xkb_common_behavior_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_common_behavior_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_common_behavior_end
- **
- ** @param xcb_xkb_common_behavior_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_common_behavior_end (xcb_xkb_common_behavior_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_default_behavior_next
- **
- ** @param xcb_xkb_default_behavior_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_default_behavior_next (xcb_xkb_default_behavior_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_default_behavior_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_default_behavior_end
- **
- ** @param xcb_xkb_default_behavior_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_default_behavior_end (xcb_xkb_default_behavior_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_lock_behavior_next
- **
- ** @param xcb_xkb_lock_behavior_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_lock_behavior_next (xcb_xkb_lock_behavior_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_lock_behavior_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_lock_behavior_end
- **
- ** @param xcb_xkb_lock_behavior_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_lock_behavior_end (xcb_xkb_lock_behavior_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_radio_group_behavior_next
- **
- ** @param xcb_xkb_radio_group_behavior_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_radio_group_behavior_next (xcb_xkb_radio_group_behavior_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_radio_group_behavior_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_radio_group_behavior_end
- **
- ** @param xcb_xkb_radio_group_behavior_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_radio_group_behavior_end (xcb_xkb_radio_group_behavior_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_overlay_behavior_next
- **
- ** @param xcb_xkb_overlay_behavior_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_overlay_behavior_next (xcb_xkb_overlay_behavior_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_overlay_behavior_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_overlay_behavior_end
- **
- ** @param xcb_xkb_overlay_behavior_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_overlay_behavior_end (xcb_xkb_overlay_behavior_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_permament_lock_behavior_next
- **
- ** @param xcb_xkb_permament_lock_behavior_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_permament_lock_behavior_next (xcb_xkb_permament_lock_behavior_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_permament_lock_behavior_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_permament_lock_behavior_end
- **
- ** @param xcb_xkb_permament_lock_behavior_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_permament_lock_behavior_end (xcb_xkb_permament_lock_behavior_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_permament_radio_group_behavior_next
- **
- ** @param xcb_xkb_permament_radio_group_behavior_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_permament_radio_group_behavior_next (xcb_xkb_permament_radio_group_behavior_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_permament_radio_group_behavior_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_permament_radio_group_behavior_end
- **
- ** @param xcb_xkb_permament_radio_group_behavior_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_permament_radio_group_behavior_end (xcb_xkb_permament_radio_group_behavior_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_permament_overlay_behavior_next
- **
- ** @param xcb_xkb_permament_overlay_behavior_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_permament_overlay_behavior_next (xcb_xkb_permament_overlay_behavior_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_permament_overlay_behavior_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_permament_overlay_behavior_end
- **
- ** @param xcb_xkb_permament_overlay_behavior_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_permament_overlay_behavior_end (xcb_xkb_permament_overlay_behavior_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_behavior_next
- **
- ** @param xcb_xkb_behavior_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_behavior_next (xcb_xkb_behavior_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_behavior_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_behavior_end
- **
- ** @param xcb_xkb_behavior_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_behavior_end (xcb_xkb_behavior_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_set_behavior_next
- **
- ** @param xcb_xkb_set_behavior_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_set_behavior_next (xcb_xkb_set_behavior_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_set_behavior_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_set_behavior_end
- **
- ** @param xcb_xkb_set_behavior_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_set_behavior_end (xcb_xkb_set_behavior_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_set_explicit_next
- **
- ** @param xcb_xkb_set_explicit_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_set_explicit_next (xcb_xkb_set_explicit_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_set_explicit_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_set_explicit_end
- **
- ** @param xcb_xkb_set_explicit_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_set_explicit_end (xcb_xkb_set_explicit_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_key_mod_map_next
- **
- ** @param xcb_xkb_key_mod_map_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_key_mod_map_next (xcb_xkb_key_mod_map_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_key_mod_map_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_key_mod_map_end
- **
- ** @param xcb_xkb_key_mod_map_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_key_mod_map_end (xcb_xkb_key_mod_map_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_key_v_mod_map_next
- **
- ** @param xcb_xkb_key_v_mod_map_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_key_v_mod_map_next (xcb_xkb_key_v_mod_map_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_key_v_mod_map_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_key_v_mod_map_end
- **
- ** @param xcb_xkb_key_v_mod_map_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_key_v_mod_map_end (xcb_xkb_key_v_mod_map_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_kt_set_map_entry_next
- **
- ** @param xcb_xkb_kt_set_map_entry_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_kt_set_map_entry_next (xcb_xkb_kt_set_map_entry_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_kt_set_map_entry_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_kt_set_map_entry_end
- **
- ** @param xcb_xkb_kt_set_map_entry_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_kt_set_map_entry_end (xcb_xkb_kt_set_map_entry_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-int
-xcb_xkb_set_key_type_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_xkb_set_key_type_t *_aux = (xcb_xkb_set_key_type_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to = 0;
-
-
- xcb_block_len += sizeof(xcb_xkb_set_key_type_t);
- xcb_tmp += xcb_block_len;
- xcb_buffer_len += xcb_block_len;
- xcb_block_len = 0;
- /* entries */
- xcb_block_len += _aux->nMapEntries * sizeof(xcb_xkb_kt_set_map_entry_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_xkb_kt_set_map_entry_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* preserve_entries */
- xcb_block_len += (_aux->preserve * _aux->nMapEntries) * sizeof(xcb_xkb_kt_set_map_entry_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_xkb_kt_set_map_entry_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_kt_set_map_entry_t * xcb_xkb_set_key_type_entries
- **
- ** @param const xcb_xkb_set_key_type_t *R
- ** @returns xcb_xkb_kt_set_map_entry_t *
- **
- *****************************************************************************/
-
-xcb_xkb_kt_set_map_entry_t *
-xcb_xkb_set_key_type_entries (const xcb_xkb_set_key_type_t *R /**< */)
-{
- return (xcb_xkb_kt_set_map_entry_t *) (R + 1);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_set_key_type_entries_length
- **
- ** @param const xcb_xkb_set_key_type_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_set_key_type_entries_length (const xcb_xkb_set_key_type_t *R /**< */)
-{
- return R->nMapEntries;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_kt_set_map_entry_iterator_t xcb_xkb_set_key_type_entries_iterator
- **
- ** @param const xcb_xkb_set_key_type_t *R
- ** @returns xcb_xkb_kt_set_map_entry_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_kt_set_map_entry_iterator_t
-xcb_xkb_set_key_type_entries_iterator (const xcb_xkb_set_key_type_t *R /**< */)
-{
- xcb_xkb_kt_set_map_entry_iterator_t i;
- i.data = (xcb_xkb_kt_set_map_entry_t *) (R + 1);
- i.rem = R->nMapEntries;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_kt_set_map_entry_t * xcb_xkb_set_key_type_preserve_entries
- **
- ** @param const xcb_xkb_set_key_type_t *R
- ** @returns xcb_xkb_kt_set_map_entry_t *
- **
- *****************************************************************************/
-
-xcb_xkb_kt_set_map_entry_t *
-xcb_xkb_set_key_type_preserve_entries (const xcb_xkb_set_key_type_t *R /**< */)
-{
- xcb_generic_iterator_t prev = xcb_xkb_kt_set_map_entry_end(xcb_xkb_set_key_type_entries_iterator(R));
- return (xcb_xkb_kt_set_map_entry_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_xkb_kt_set_map_entry_t, prev.index) + 0);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_set_key_type_preserve_entries_length
- **
- ** @param const xcb_xkb_set_key_type_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_set_key_type_preserve_entries_length (const xcb_xkb_set_key_type_t *R /**< */)
-{
- return (R->preserve * R->nMapEntries);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_kt_set_map_entry_iterator_t xcb_xkb_set_key_type_preserve_entries_iterator
- **
- ** @param const xcb_xkb_set_key_type_t *R
- ** @returns xcb_xkb_kt_set_map_entry_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_kt_set_map_entry_iterator_t
-xcb_xkb_set_key_type_preserve_entries_iterator (const xcb_xkb_set_key_type_t *R /**< */)
-{
- xcb_xkb_kt_set_map_entry_iterator_t i;
- xcb_generic_iterator_t prev = xcb_xkb_kt_set_map_entry_end(xcb_xkb_set_key_type_entries_iterator(R));
- i.data = (xcb_xkb_kt_set_map_entry_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_xkb_kt_set_map_entry_t, prev.index));
- i.rem = (R->preserve * R->nMapEntries);
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_set_key_type_next
- **
- ** @param xcb_xkb_set_key_type_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_set_key_type_next (xcb_xkb_set_key_type_iterator_t *i /**< */)
-{
- xcb_xkb_set_key_type_t *R = i->data;
- xcb_generic_iterator_t child;
- child.data = (xcb_xkb_set_key_type_t *)(((char *)R) + xcb_xkb_set_key_type_sizeof(R));
- i->index = (char *) child.data - (char *) i->data;
- --i->rem;
- i->data = (xcb_xkb_set_key_type_t *) child.data;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_set_key_type_end
- **
- ** @param xcb_xkb_set_key_type_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_set_key_type_end (xcb_xkb_set_key_type_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- while(i.rem > 0)
- xcb_xkb_set_key_type_next(&i);
- ret.data = i.data;
- ret.rem = i.rem;
- ret.index = i.index;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_string8_next
- **
- ** @param xcb_xkb_string8_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_string8_next (xcb_xkb_string8_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_string8_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_string8_end
- **
- ** @param xcb_xkb_string8_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_string8_end (xcb_xkb_string8_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-int
-xcb_xkb_outline_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_xkb_outline_t *_aux = (xcb_xkb_outline_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to = 0;
-
-
- xcb_block_len += sizeof(xcb_xkb_outline_t);
- xcb_tmp += xcb_block_len;
- xcb_buffer_len += xcb_block_len;
- xcb_block_len = 0;
- /* points */
- xcb_block_len += _aux->nPoints * sizeof(xcb_point_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_point_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_point_t * xcb_xkb_outline_points
- **
- ** @param const xcb_xkb_outline_t *R
- ** @returns xcb_point_t *
- **
- *****************************************************************************/
-
-xcb_point_t *
-xcb_xkb_outline_points (const xcb_xkb_outline_t *R /**< */)
-{
- return (xcb_point_t *) (R + 1);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_outline_points_length
- **
- ** @param const xcb_xkb_outline_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_outline_points_length (const xcb_xkb_outline_t *R /**< */)
-{
- return R->nPoints;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_point_iterator_t xcb_xkb_outline_points_iterator
- **
- ** @param const xcb_xkb_outline_t *R
- ** @returns xcb_point_iterator_t
- **
- *****************************************************************************/
-
-xcb_point_iterator_t
-xcb_xkb_outline_points_iterator (const xcb_xkb_outline_t *R /**< */)
-{
- xcb_point_iterator_t i;
- i.data = (xcb_point_t *) (R + 1);
- i.rem = R->nPoints;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_outline_next
- **
- ** @param xcb_xkb_outline_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_outline_next (xcb_xkb_outline_iterator_t *i /**< */)
-{
- xcb_xkb_outline_t *R = i->data;
- xcb_generic_iterator_t child;
- child.data = (xcb_xkb_outline_t *)(((char *)R) + xcb_xkb_outline_sizeof(R));
- i->index = (char *) child.data - (char *) i->data;
- --i->rem;
- i->data = (xcb_xkb_outline_t *) child.data;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_outline_end
- **
- ** @param xcb_xkb_outline_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_outline_end (xcb_xkb_outline_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- while(i.rem > 0)
- xcb_xkb_outline_next(&i);
- ret.data = i.data;
- ret.rem = i.rem;
- ret.index = i.index;
- return ret;
-}
-
-int
-xcb_xkb_shape_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_xkb_shape_t *_aux = (xcb_xkb_shape_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to = 0;
-
- unsigned int i;
- unsigned int xcb_tmp_len;
-
- xcb_block_len += sizeof(xcb_xkb_shape_t);
- xcb_tmp += xcb_block_len;
- xcb_buffer_len += xcb_block_len;
- xcb_block_len = 0;
- /* outlines */
- for(i=0; i<_aux->nOutlines; i++) {
- xcb_tmp_len = xcb_xkb_outline_sizeof(xcb_tmp);
- xcb_block_len += xcb_tmp_len;
- xcb_tmp += xcb_tmp_len;
- }
- xcb_align_to = ALIGNOF(xcb_xkb_outline_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_shape_outlines_length
- **
- ** @param const xcb_xkb_shape_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_shape_outlines_length (const xcb_xkb_shape_t *R /**< */)
-{
- return R->nOutlines;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_outline_iterator_t xcb_xkb_shape_outlines_iterator
- **
- ** @param const xcb_xkb_shape_t *R
- ** @returns xcb_xkb_outline_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_outline_iterator_t
-xcb_xkb_shape_outlines_iterator (const xcb_xkb_shape_t *R /**< */)
-{
- xcb_xkb_outline_iterator_t i;
- i.data = (xcb_xkb_outline_t *) (R + 1);
- i.rem = R->nOutlines;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_shape_next
- **
- ** @param xcb_xkb_shape_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_shape_next (xcb_xkb_shape_iterator_t *i /**< */)
-{
- xcb_xkb_shape_t *R = i->data;
- xcb_generic_iterator_t child;
- child.data = (xcb_xkb_shape_t *)(((char *)R) + xcb_xkb_shape_sizeof(R));
- i->index = (char *) child.data - (char *) i->data;
- --i->rem;
- i->data = (xcb_xkb_shape_t *) child.data;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_shape_end
- **
- ** @param xcb_xkb_shape_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_shape_end (xcb_xkb_shape_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- while(i.rem > 0)
- xcb_xkb_shape_next(&i);
- ret.data = i.data;
- ret.rem = i.rem;
- ret.index = i.index;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_key_next
- **
- ** @param xcb_xkb_key_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_key_next (xcb_xkb_key_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_key_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_key_end
- **
- ** @param xcb_xkb_key_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_key_end (xcb_xkb_key_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_overlay_key_next
- **
- ** @param xcb_xkb_overlay_key_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_overlay_key_next (xcb_xkb_overlay_key_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_overlay_key_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_overlay_key_end
- **
- ** @param xcb_xkb_overlay_key_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_overlay_key_end (xcb_xkb_overlay_key_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-int
-xcb_xkb_overlay_row_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_xkb_overlay_row_t *_aux = (xcb_xkb_overlay_row_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to = 0;
-
-
- xcb_block_len += sizeof(xcb_xkb_overlay_row_t);
- xcb_tmp += xcb_block_len;
- xcb_buffer_len += xcb_block_len;
- xcb_block_len = 0;
- /* keys */
- xcb_block_len += _aux->nKeys * sizeof(xcb_xkb_overlay_key_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_xkb_overlay_key_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_overlay_key_t * xcb_xkb_overlay_row_keys
- **
- ** @param const xcb_xkb_overlay_row_t *R
- ** @returns xcb_xkb_overlay_key_t *
- **
- *****************************************************************************/
-
-xcb_xkb_overlay_key_t *
-xcb_xkb_overlay_row_keys (const xcb_xkb_overlay_row_t *R /**< */)
-{
- return (xcb_xkb_overlay_key_t *) (R + 1);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_overlay_row_keys_length
- **
- ** @param const xcb_xkb_overlay_row_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_overlay_row_keys_length (const xcb_xkb_overlay_row_t *R /**< */)
-{
- return R->nKeys;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_overlay_key_iterator_t xcb_xkb_overlay_row_keys_iterator
- **
- ** @param const xcb_xkb_overlay_row_t *R
- ** @returns xcb_xkb_overlay_key_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_overlay_key_iterator_t
-xcb_xkb_overlay_row_keys_iterator (const xcb_xkb_overlay_row_t *R /**< */)
-{
- xcb_xkb_overlay_key_iterator_t i;
- i.data = (xcb_xkb_overlay_key_t *) (R + 1);
- i.rem = R->nKeys;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_overlay_row_next
- **
- ** @param xcb_xkb_overlay_row_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_overlay_row_next (xcb_xkb_overlay_row_iterator_t *i /**< */)
-{
- xcb_xkb_overlay_row_t *R = i->data;
- xcb_generic_iterator_t child;
- child.data = (xcb_xkb_overlay_row_t *)(((char *)R) + xcb_xkb_overlay_row_sizeof(R));
- i->index = (char *) child.data - (char *) i->data;
- --i->rem;
- i->data = (xcb_xkb_overlay_row_t *) child.data;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_overlay_row_end
- **
- ** @param xcb_xkb_overlay_row_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_overlay_row_end (xcb_xkb_overlay_row_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- while(i.rem > 0)
- xcb_xkb_overlay_row_next(&i);
- ret.data = i.data;
- ret.rem = i.rem;
- ret.index = i.index;
- return ret;
-}
-
-int
-xcb_xkb_overlay_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_xkb_overlay_t *_aux = (xcb_xkb_overlay_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to = 0;
-
- unsigned int i;
- unsigned int xcb_tmp_len;
-
- xcb_block_len += sizeof(xcb_xkb_overlay_t);
- xcb_tmp += xcb_block_len;
- xcb_buffer_len += xcb_block_len;
- xcb_block_len = 0;
- /* rows */
- for(i=0; i<_aux->nRows; i++) {
- xcb_tmp_len = xcb_xkb_overlay_row_sizeof(xcb_tmp);
- xcb_block_len += xcb_tmp_len;
- xcb_tmp += xcb_tmp_len;
- }
- xcb_align_to = ALIGNOF(xcb_xkb_overlay_row_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_overlay_rows_length
- **
- ** @param const xcb_xkb_overlay_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_overlay_rows_length (const xcb_xkb_overlay_t *R /**< */)
-{
- return R->nRows;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_overlay_row_iterator_t xcb_xkb_overlay_rows_iterator
- **
- ** @param const xcb_xkb_overlay_t *R
- ** @returns xcb_xkb_overlay_row_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_overlay_row_iterator_t
-xcb_xkb_overlay_rows_iterator (const xcb_xkb_overlay_t *R /**< */)
-{
- xcb_xkb_overlay_row_iterator_t i;
- i.data = (xcb_xkb_overlay_row_t *) (R + 1);
- i.rem = R->nRows;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_overlay_next
- **
- ** @param xcb_xkb_overlay_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_overlay_next (xcb_xkb_overlay_iterator_t *i /**< */)
-{
- xcb_xkb_overlay_t *R = i->data;
- xcb_generic_iterator_t child;
- child.data = (xcb_xkb_overlay_t *)(((char *)R) + xcb_xkb_overlay_sizeof(R));
- i->index = (char *) child.data - (char *) i->data;
- --i->rem;
- i->data = (xcb_xkb_overlay_t *) child.data;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_overlay_end
- **
- ** @param xcb_xkb_overlay_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_overlay_end (xcb_xkb_overlay_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- while(i.rem > 0)
- xcb_xkb_overlay_next(&i);
- ret.data = i.data;
- ret.rem = i.rem;
- ret.index = i.index;
- return ret;
-}
-
-int
-xcb_xkb_row_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_xkb_row_t *_aux = (xcb_xkb_row_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to = 0;
-
-
- xcb_block_len += sizeof(xcb_xkb_row_t);
- xcb_tmp += xcb_block_len;
- xcb_buffer_len += xcb_block_len;
- xcb_block_len = 0;
- /* keys */
- xcb_block_len += _aux->nKeys * sizeof(xcb_xkb_key_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_xkb_key_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_t * xcb_xkb_row_keys
- **
- ** @param const xcb_xkb_row_t *R
- ** @returns xcb_xkb_key_t *
- **
- *****************************************************************************/
-
-xcb_xkb_key_t *
-xcb_xkb_row_keys (const xcb_xkb_row_t *R /**< */)
-{
- return (xcb_xkb_key_t *) (R + 1);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_row_keys_length
- **
- ** @param const xcb_xkb_row_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_row_keys_length (const xcb_xkb_row_t *R /**< */)
-{
- return R->nKeys;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_iterator_t xcb_xkb_row_keys_iterator
- **
- ** @param const xcb_xkb_row_t *R
- ** @returns xcb_xkb_key_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_key_iterator_t
-xcb_xkb_row_keys_iterator (const xcb_xkb_row_t *R /**< */)
-{
- xcb_xkb_key_iterator_t i;
- i.data = (xcb_xkb_key_t *) (R + 1);
- i.rem = R->nKeys;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_row_next
- **
- ** @param xcb_xkb_row_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_row_next (xcb_xkb_row_iterator_t *i /**< */)
-{
- xcb_xkb_row_t *R = i->data;
- xcb_generic_iterator_t child;
- child.data = (xcb_xkb_row_t *)(((char *)R) + xcb_xkb_row_sizeof(R));
- i->index = (char *) child.data - (char *) i->data;
- --i->rem;
- i->data = (xcb_xkb_row_t *) child.data;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_row_end
- **
- ** @param xcb_xkb_row_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_row_end (xcb_xkb_row_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- while(i.rem > 0)
- xcb_xkb_row_next(&i);
- ret.data = i.data;
- ret.rem = i.rem;
- ret.index = i.index;
- return ret;
-}
-
-int
-xcb_xkb_listing_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_xkb_listing_t *_aux = (xcb_xkb_listing_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to = 0;
-
-
- xcb_block_len += sizeof(xcb_xkb_listing_t);
- xcb_tmp += xcb_block_len;
- xcb_buffer_len += xcb_block_len;
- xcb_block_len = 0;
- /* string */
- xcb_block_len += _aux->length * sizeof(xcb_xkb_string8_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_xkb_string8_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_string8_t * xcb_xkb_listing_string
- **
- ** @param const xcb_xkb_listing_t *R
- ** @returns xcb_xkb_string8_t *
- **
- *****************************************************************************/
-
-xcb_xkb_string8_t *
-xcb_xkb_listing_string (const xcb_xkb_listing_t *R /**< */)
-{
- return (xcb_xkb_string8_t *) (R + 1);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_listing_string_length
- **
- ** @param const xcb_xkb_listing_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_listing_string_length (const xcb_xkb_listing_t *R /**< */)
-{
- return R->length;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_listing_string_end
- **
- ** @param const xcb_xkb_listing_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_listing_string_end (const xcb_xkb_listing_t *R /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = ((xcb_xkb_string8_t *) (R + 1)) + (R->length);
- i.rem = 0;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_listing_next
- **
- ** @param xcb_xkb_listing_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_listing_next (xcb_xkb_listing_iterator_t *i /**< */)
-{
- xcb_xkb_listing_t *R = i->data;
- xcb_generic_iterator_t child;
- child.data = (xcb_xkb_listing_t *)(((char *)R) + xcb_xkb_listing_sizeof(R));
- i->index = (char *) child.data - (char *) i->data;
- --i->rem;
- i->data = (xcb_xkb_listing_t *) child.data;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_listing_end
- **
- ** @param xcb_xkb_listing_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_listing_end (xcb_xkb_listing_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- while(i.rem > 0)
- xcb_xkb_listing_next(&i);
- ret.data = i.data;
- ret.rem = i.rem;
- ret.index = i.index;
- return ret;
-}
-
-int
-xcb_xkb_device_led_info_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_xkb_device_led_info_t *_aux = (xcb_xkb_device_led_info_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to = 0;
-
-
- xcb_block_len += sizeof(xcb_xkb_device_led_info_t);
- xcb_tmp += xcb_block_len;
- xcb_buffer_len += xcb_block_len;
- xcb_block_len = 0;
- /* names */
- xcb_block_len += xcb_popcount(_aux->namesPresent) * sizeof(uint32_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* maps */
- xcb_block_len += xcb_popcount(_aux->mapsPresent) * sizeof(xcb_xkb_indicator_map_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_xkb_indicator_map_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_atom_t * xcb_xkb_device_led_info_names
- **
- ** @param const xcb_xkb_device_led_info_t *R
- ** @returns xcb_atom_t *
- **
- *****************************************************************************/
-
-xcb_atom_t *
-xcb_xkb_device_led_info_names (const xcb_xkb_device_led_info_t *R /**< */)
-{
- return (xcb_atom_t *) (R + 1);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_device_led_info_names_length
- **
- ** @param const xcb_xkb_device_led_info_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_device_led_info_names_length (const xcb_xkb_device_led_info_t *R /**< */)
-{
- return xcb_popcount(R->namesPresent);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_device_led_info_names_end
- **
- ** @param const xcb_xkb_device_led_info_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_device_led_info_names_end (const xcb_xkb_device_led_info_t *R /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = ((xcb_atom_t *) (R + 1)) + (xcb_popcount(R->namesPresent));
- i.rem = 0;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_indicator_map_t * xcb_xkb_device_led_info_maps
- **
- ** @param const xcb_xkb_device_led_info_t *R
- ** @returns xcb_xkb_indicator_map_t *
- **
- *****************************************************************************/
-
-xcb_xkb_indicator_map_t *
-xcb_xkb_device_led_info_maps (const xcb_xkb_device_led_info_t *R /**< */)
-{
- xcb_generic_iterator_t prev = xcb_xkb_device_led_info_names_end(R);
- return (xcb_xkb_indicator_map_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_xkb_indicator_map_t, prev.index) + 0);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_device_led_info_maps_length
- **
- ** @param const xcb_xkb_device_led_info_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_device_led_info_maps_length (const xcb_xkb_device_led_info_t *R /**< */)
-{
- return xcb_popcount(R->mapsPresent);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_indicator_map_iterator_t xcb_xkb_device_led_info_maps_iterator
- **
- ** @param const xcb_xkb_device_led_info_t *R
- ** @returns xcb_xkb_indicator_map_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_indicator_map_iterator_t
-xcb_xkb_device_led_info_maps_iterator (const xcb_xkb_device_led_info_t *R /**< */)
-{
- xcb_xkb_indicator_map_iterator_t i;
- xcb_generic_iterator_t prev = xcb_xkb_device_led_info_names_end(R);
- i.data = (xcb_xkb_indicator_map_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_xkb_indicator_map_t, prev.index));
- i.rem = xcb_popcount(R->mapsPresent);
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_device_led_info_next
- **
- ** @param xcb_xkb_device_led_info_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_device_led_info_next (xcb_xkb_device_led_info_iterator_t *i /**< */)
-{
- xcb_xkb_device_led_info_t *R = i->data;
- xcb_generic_iterator_t child;
- child.data = (xcb_xkb_device_led_info_t *)(((char *)R) + xcb_xkb_device_led_info_sizeof(R));
- i->index = (char *) child.data - (char *) i->data;
- --i->rem;
- i->data = (xcb_xkb_device_led_info_t *) child.data;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_device_led_info_end
- **
- ** @param xcb_xkb_device_led_info_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_device_led_info_end (xcb_xkb_device_led_info_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- while(i.rem > 0)
- xcb_xkb_device_led_info_next(&i);
- ret.data = i.data;
- ret.rem = i.rem;
- ret.index = i.index;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_sa_no_action_next
- **
- ** @param xcb_xkb_sa_no_action_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_sa_no_action_next (xcb_xkb_sa_no_action_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_sa_no_action_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_sa_no_action_end
- **
- ** @param xcb_xkb_sa_no_action_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_sa_no_action_end (xcb_xkb_sa_no_action_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_sa_set_mods_next
- **
- ** @param xcb_xkb_sa_set_mods_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_sa_set_mods_next (xcb_xkb_sa_set_mods_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_sa_set_mods_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_sa_set_mods_end
- **
- ** @param xcb_xkb_sa_set_mods_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_sa_set_mods_end (xcb_xkb_sa_set_mods_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_sa_latch_mods_next
- **
- ** @param xcb_xkb_sa_latch_mods_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_sa_latch_mods_next (xcb_xkb_sa_latch_mods_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_sa_latch_mods_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_sa_latch_mods_end
- **
- ** @param xcb_xkb_sa_latch_mods_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_sa_latch_mods_end (xcb_xkb_sa_latch_mods_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_sa_lock_mods_next
- **
- ** @param xcb_xkb_sa_lock_mods_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_sa_lock_mods_next (xcb_xkb_sa_lock_mods_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_sa_lock_mods_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_sa_lock_mods_end
- **
- ** @param xcb_xkb_sa_lock_mods_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_sa_lock_mods_end (xcb_xkb_sa_lock_mods_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_sa_set_group_next
- **
- ** @param xcb_xkb_sa_set_group_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_sa_set_group_next (xcb_xkb_sa_set_group_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_sa_set_group_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_sa_set_group_end
- **
- ** @param xcb_xkb_sa_set_group_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_sa_set_group_end (xcb_xkb_sa_set_group_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_sa_latch_group_next
- **
- ** @param xcb_xkb_sa_latch_group_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_sa_latch_group_next (xcb_xkb_sa_latch_group_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_sa_latch_group_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_sa_latch_group_end
- **
- ** @param xcb_xkb_sa_latch_group_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_sa_latch_group_end (xcb_xkb_sa_latch_group_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_sa_lock_group_next
- **
- ** @param xcb_xkb_sa_lock_group_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_sa_lock_group_next (xcb_xkb_sa_lock_group_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_sa_lock_group_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_sa_lock_group_end
- **
- ** @param xcb_xkb_sa_lock_group_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_sa_lock_group_end (xcb_xkb_sa_lock_group_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_sa_move_ptr_next
- **
- ** @param xcb_xkb_sa_move_ptr_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_sa_move_ptr_next (xcb_xkb_sa_move_ptr_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_sa_move_ptr_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_sa_move_ptr_end
- **
- ** @param xcb_xkb_sa_move_ptr_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_sa_move_ptr_end (xcb_xkb_sa_move_ptr_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_sa_ptr_btn_next
- **
- ** @param xcb_xkb_sa_ptr_btn_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_sa_ptr_btn_next (xcb_xkb_sa_ptr_btn_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_sa_ptr_btn_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_sa_ptr_btn_end
- **
- ** @param xcb_xkb_sa_ptr_btn_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_sa_ptr_btn_end (xcb_xkb_sa_ptr_btn_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_sa_lock_ptr_btn_next
- **
- ** @param xcb_xkb_sa_lock_ptr_btn_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_sa_lock_ptr_btn_next (xcb_xkb_sa_lock_ptr_btn_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_sa_lock_ptr_btn_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_sa_lock_ptr_btn_end
- **
- ** @param xcb_xkb_sa_lock_ptr_btn_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_sa_lock_ptr_btn_end (xcb_xkb_sa_lock_ptr_btn_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_sa_set_ptr_dflt_next
- **
- ** @param xcb_xkb_sa_set_ptr_dflt_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_sa_set_ptr_dflt_next (xcb_xkb_sa_set_ptr_dflt_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_sa_set_ptr_dflt_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_sa_set_ptr_dflt_end
- **
- ** @param xcb_xkb_sa_set_ptr_dflt_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_sa_set_ptr_dflt_end (xcb_xkb_sa_set_ptr_dflt_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_sa_iso_lock_next
- **
- ** @param xcb_xkb_sa_iso_lock_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_sa_iso_lock_next (xcb_xkb_sa_iso_lock_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_sa_iso_lock_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_sa_iso_lock_end
- **
- ** @param xcb_xkb_sa_iso_lock_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_sa_iso_lock_end (xcb_xkb_sa_iso_lock_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_sa_terminate_next
- **
- ** @param xcb_xkb_sa_terminate_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_sa_terminate_next (xcb_xkb_sa_terminate_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_sa_terminate_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_sa_terminate_end
- **
- ** @param xcb_xkb_sa_terminate_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_sa_terminate_end (xcb_xkb_sa_terminate_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_sa_switch_screen_next
- **
- ** @param xcb_xkb_sa_switch_screen_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_sa_switch_screen_next (xcb_xkb_sa_switch_screen_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_sa_switch_screen_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_sa_switch_screen_end
- **
- ** @param xcb_xkb_sa_switch_screen_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_sa_switch_screen_end (xcb_xkb_sa_switch_screen_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_sa_set_controls_next
- **
- ** @param xcb_xkb_sa_set_controls_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_sa_set_controls_next (xcb_xkb_sa_set_controls_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_sa_set_controls_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_sa_set_controls_end
- **
- ** @param xcb_xkb_sa_set_controls_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_sa_set_controls_end (xcb_xkb_sa_set_controls_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_sa_lock_controls_next
- **
- ** @param xcb_xkb_sa_lock_controls_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_sa_lock_controls_next (xcb_xkb_sa_lock_controls_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_sa_lock_controls_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_sa_lock_controls_end
- **
- ** @param xcb_xkb_sa_lock_controls_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_sa_lock_controls_end (xcb_xkb_sa_lock_controls_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_sa_action_message_next
- **
- ** @param xcb_xkb_sa_action_message_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_sa_action_message_next (xcb_xkb_sa_action_message_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_sa_action_message_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_sa_action_message_end
- **
- ** @param xcb_xkb_sa_action_message_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_sa_action_message_end (xcb_xkb_sa_action_message_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_sa_redirect_key_next
- **
- ** @param xcb_xkb_sa_redirect_key_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_sa_redirect_key_next (xcb_xkb_sa_redirect_key_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_sa_redirect_key_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_sa_redirect_key_end
- **
- ** @param xcb_xkb_sa_redirect_key_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_sa_redirect_key_end (xcb_xkb_sa_redirect_key_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_sa_device_btn_next
- **
- ** @param xcb_xkb_sa_device_btn_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_sa_device_btn_next (xcb_xkb_sa_device_btn_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_sa_device_btn_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_sa_device_btn_end
- **
- ** @param xcb_xkb_sa_device_btn_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_sa_device_btn_end (xcb_xkb_sa_device_btn_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_sa_lock_device_btn_next
- **
- ** @param xcb_xkb_sa_lock_device_btn_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_sa_lock_device_btn_next (xcb_xkb_sa_lock_device_btn_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_sa_lock_device_btn_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_sa_lock_device_btn_end
- **
- ** @param xcb_xkb_sa_lock_device_btn_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_sa_lock_device_btn_end (xcb_xkb_sa_lock_device_btn_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_sa_device_valuator_next
- **
- ** @param xcb_xkb_sa_device_valuator_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_sa_device_valuator_next (xcb_xkb_sa_device_valuator_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_sa_device_valuator_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_sa_device_valuator_end
- **
- ** @param xcb_xkb_sa_device_valuator_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_sa_device_valuator_end (xcb_xkb_sa_device_valuator_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_si_action_next
- **
- ** @param xcb_xkb_si_action_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_si_action_next (xcb_xkb_si_action_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_si_action_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_si_action_end
- **
- ** @param xcb_xkb_si_action_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_si_action_end (xcb_xkb_si_action_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_sym_interpret_next
- **
- ** @param xcb_xkb_sym_interpret_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_sym_interpret_next (xcb_xkb_sym_interpret_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_sym_interpret_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_sym_interpret_end
- **
- ** @param xcb_xkb_sym_interpret_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_sym_interpret_end (xcb_xkb_sym_interpret_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** void xcb_xkb_action_next
- **
- ** @param xcb_xkb_action_iterator_t *i
- ** @returns void
- **
- *****************************************************************************/
-
-void
-xcb_xkb_action_next (xcb_xkb_action_iterator_t *i /**< */)
-{
- --i->rem;
- ++i->data;
- i->index += sizeof(xcb_xkb_action_t);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_action_end
- **
- ** @param xcb_xkb_action_iterator_t i
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_action_end (xcb_xkb_action_iterator_t i /**< */)
-{
- xcb_generic_iterator_t ret;
- ret.data = i.data + i.rem;
- ret.index = i.index + ((char *) ret.data - (char *) i.data);
- ret.rem = 0;
- return ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_use_extension_cookie_t xcb_xkb_use_extension
- **
- ** @param xcb_connection_t *c
- ** @param uint16_t wantedMajor
- ** @param uint16_t wantedMinor
- ** @returns xcb_xkb_use_extension_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_use_extension_cookie_t
-xcb_xkb_use_extension (xcb_connection_t *c /**< */,
- uint16_t wantedMajor /**< */,
- uint16_t wantedMinor /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_USE_EXTENSION,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_xkb_use_extension_cookie_t xcb_ret;
- xcb_xkb_use_extension_request_t xcb_out;
-
- xcb_out.wantedMajor = wantedMajor;
- xcb_out.wantedMinor = wantedMinor;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_use_extension_cookie_t xcb_xkb_use_extension_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param uint16_t wantedMajor
- ** @param uint16_t wantedMinor
- ** @returns xcb_xkb_use_extension_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_use_extension_cookie_t
-xcb_xkb_use_extension_unchecked (xcb_connection_t *c /**< */,
- uint16_t wantedMajor /**< */,
- uint16_t wantedMinor /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_USE_EXTENSION,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_xkb_use_extension_cookie_t xcb_ret;
- xcb_xkb_use_extension_request_t xcb_out;
-
- xcb_out.wantedMajor = wantedMajor;
- xcb_out.wantedMinor = wantedMinor;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_use_extension_reply_t * xcb_xkb_use_extension_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_use_extension_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xkb_use_extension_reply_t *
- **
- *****************************************************************************/
-
-xcb_xkb_use_extension_reply_t *
-xcb_xkb_use_extension_reply (xcb_connection_t *c /**< */,
- xcb_xkb_use_extension_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_xkb_use_extension_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-int
-xcb_xkb_select_events_details_serialize (void **_buffer /**< */,
- uint16_t affectWhich /**< */,
- uint16_t clear /**< */,
- uint16_t selectAll /**< */,
- const xcb_xkb_select_events_details_t *_aux /**< */)
-{
- char *xcb_out = *_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_align_to = 0;
-
- unsigned int xcb_pad = 0;
- char xcb_pad0[3] = {0, 0, 0};
- struct iovec xcb_parts[23];
- unsigned int xcb_parts_idx = 0;
- unsigned int xcb_block_len = 0;
- unsigned int i;
- char *xcb_tmp;
-
- if((affectWhich & ((~clear) & (~selectAll))) & XCB_XKB_EVENT_TYPE_NEW_KEYBOARD_NOTIFY) {
- /* xcb_xkb_select_events_details_t.affectNewKeyboard */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->affectNewKeyboard;
- xcb_block_len += sizeof(uint16_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_select_events_details_t.newKeyboardDetails */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->newKeyboardDetails;
- xcb_block_len += sizeof(uint16_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint16_t);
- }
- if((affectWhich & ((~clear) & (~selectAll))) & XCB_XKB_EVENT_TYPE_STATE_NOTIFY) {
- /* xcb_xkb_select_events_details_t.affectState */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->affectState;
- xcb_block_len += sizeof(uint16_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_select_events_details_t.stateDetails */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->stateDetails;
- xcb_block_len += sizeof(uint16_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint16_t);
- }
- if((affectWhich & ((~clear) & (~selectAll))) & XCB_XKB_EVENT_TYPE_CONTROLS_NOTIFY) {
- /* xcb_xkb_select_events_details_t.affectCtrls */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->affectCtrls;
- xcb_block_len += sizeof(uint32_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint32_t);
- /* xcb_xkb_select_events_details_t.ctrlDetails */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->ctrlDetails;
- xcb_block_len += sizeof(uint32_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint32_t);
- }
- if((affectWhich & ((~clear) & (~selectAll))) & XCB_XKB_EVENT_TYPE_INDICATOR_STATE_NOTIFY) {
- /* xcb_xkb_select_events_details_t.affectIndicatorState */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->affectIndicatorState;
- xcb_block_len += sizeof(uint32_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint32_t);
- /* xcb_xkb_select_events_details_t.indicatorStateDetails */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->indicatorStateDetails;
- xcb_block_len += sizeof(uint32_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint32_t);
- }
- if((affectWhich & ((~clear) & (~selectAll))) & XCB_XKB_EVENT_TYPE_INDICATOR_MAP_NOTIFY) {
- /* xcb_xkb_select_events_details_t.affectIndicatorMap */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->affectIndicatorMap;
- xcb_block_len += sizeof(uint32_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint32_t);
- /* xcb_xkb_select_events_details_t.indicatorMapDetails */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->indicatorMapDetails;
- xcb_block_len += sizeof(uint32_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint32_t);
- }
- if((affectWhich & ((~clear) & (~selectAll))) & XCB_XKB_EVENT_TYPE_NAMES_NOTIFY) {
- /* xcb_xkb_select_events_details_t.affectNames */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->affectNames;
- xcb_block_len += sizeof(uint16_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_select_events_details_t.namesDetails */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->namesDetails;
- xcb_block_len += sizeof(uint16_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint16_t);
- }
- if((affectWhich & ((~clear) & (~selectAll))) & XCB_XKB_EVENT_TYPE_COMPAT_MAP_NOTIFY) {
- /* xcb_xkb_select_events_details_t.affectCompat */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->affectCompat;
- xcb_block_len += sizeof(uint8_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_select_events_details_t.compatDetails */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->compatDetails;
- xcb_block_len += sizeof(uint8_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- }
- if((affectWhich & ((~clear) & (~selectAll))) & XCB_XKB_EVENT_TYPE_BELL_NOTIFY) {
- /* xcb_xkb_select_events_details_t.affectBell */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->affectBell;
- xcb_block_len += sizeof(uint8_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_select_events_details_t.bellDetails */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->bellDetails;
- xcb_block_len += sizeof(uint8_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- }
- if((affectWhich & ((~clear) & (~selectAll))) & XCB_XKB_EVENT_TYPE_ACTION_MESSAGE) {
- /* xcb_xkb_select_events_details_t.affectMsgDetails */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->affectMsgDetails;
- xcb_block_len += sizeof(uint8_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_select_events_details_t.msgDetails */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->msgDetails;
- xcb_block_len += sizeof(uint8_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- }
- if((affectWhich & ((~clear) & (~selectAll))) & XCB_XKB_EVENT_TYPE_ACCESS_X_NOTIFY) {
- /* xcb_xkb_select_events_details_t.affectAccessX */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->affectAccessX;
- xcb_block_len += sizeof(uint16_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_select_events_details_t.accessXDetails */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->accessXDetails;
- xcb_block_len += sizeof(uint16_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint16_t);
- }
- if((affectWhich & ((~clear) & (~selectAll))) & XCB_XKB_EVENT_TYPE_EXTENSION_DEVICE_NOTIFY) {
- /* xcb_xkb_select_events_details_t.affectExtDev */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->affectExtDev;
- xcb_block_len += sizeof(uint16_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_select_events_details_t.extdevDetails */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->extdevDetails;
- xcb_block_len += sizeof(uint16_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint16_t);
- }
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- if (NULL == xcb_out) {
- /* allocate memory */
- xcb_out = malloc(xcb_buffer_len);
- *_buffer = xcb_out;
- }
-
- xcb_tmp = xcb_out;
- for(i=0; i<xcb_parts_idx; i++) {
- if (0 != xcb_parts[i].iov_base && 0 != xcb_parts[i].iov_len)
- memcpy(xcb_tmp, xcb_parts[i].iov_base, xcb_parts[i].iov_len);
- if (0 != xcb_parts[i].iov_len)
- xcb_tmp += xcb_parts[i].iov_len;
- }
-
- return xcb_buffer_len;
-}
-
-int
-xcb_xkb_select_events_details_unpack (const void *_buffer /**< */,
- uint16_t affectWhich /**< */,
- uint16_t clear /**< */,
- uint16_t selectAll /**< */,
- xcb_xkb_select_events_details_t *_aux /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to = 0;
-
-
- if((affectWhich & ((~clear) & (~selectAll))) & XCB_XKB_EVENT_TYPE_NEW_KEYBOARD_NOTIFY) {
- /* xcb_xkb_select_events_details_t.affectNewKeyboard */
- _aux->affectNewKeyboard = *(uint16_t *)xcb_tmp;
- xcb_block_len += sizeof(uint16_t);
- xcb_tmp += sizeof(uint16_t);
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_select_events_details_t.newKeyboardDetails */
- _aux->newKeyboardDetails = *(uint16_t *)xcb_tmp;
- xcb_block_len += sizeof(uint16_t);
- xcb_tmp += sizeof(uint16_t);
- xcb_align_to = ALIGNOF(uint16_t);
- }
- if((affectWhich & ((~clear) & (~selectAll))) & XCB_XKB_EVENT_TYPE_STATE_NOTIFY) {
- /* xcb_xkb_select_events_details_t.affectState */
- _aux->affectState = *(uint16_t *)xcb_tmp;
- xcb_block_len += sizeof(uint16_t);
- xcb_tmp += sizeof(uint16_t);
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_select_events_details_t.stateDetails */
- _aux->stateDetails = *(uint16_t *)xcb_tmp;
- xcb_block_len += sizeof(uint16_t);
- xcb_tmp += sizeof(uint16_t);
- xcb_align_to = ALIGNOF(uint16_t);
- }
- if((affectWhich & ((~clear) & (~selectAll))) & XCB_XKB_EVENT_TYPE_CONTROLS_NOTIFY) {
- /* xcb_xkb_select_events_details_t.affectCtrls */
- _aux->affectCtrls = *(uint32_t *)xcb_tmp;
- xcb_block_len += sizeof(uint32_t);
- xcb_tmp += sizeof(uint32_t);
- xcb_align_to = ALIGNOF(uint32_t);
- /* xcb_xkb_select_events_details_t.ctrlDetails */
- _aux->ctrlDetails = *(uint32_t *)xcb_tmp;
- xcb_block_len += sizeof(uint32_t);
- xcb_tmp += sizeof(uint32_t);
- xcb_align_to = ALIGNOF(uint32_t);
- }
- if((affectWhich & ((~clear) & (~selectAll))) & XCB_XKB_EVENT_TYPE_INDICATOR_STATE_NOTIFY) {
- /* xcb_xkb_select_events_details_t.affectIndicatorState */
- _aux->affectIndicatorState = *(uint32_t *)xcb_tmp;
- xcb_block_len += sizeof(uint32_t);
- xcb_tmp += sizeof(uint32_t);
- xcb_align_to = ALIGNOF(uint32_t);
- /* xcb_xkb_select_events_details_t.indicatorStateDetails */
- _aux->indicatorStateDetails = *(uint32_t *)xcb_tmp;
- xcb_block_len += sizeof(uint32_t);
- xcb_tmp += sizeof(uint32_t);
- xcb_align_to = ALIGNOF(uint32_t);
- }
- if((affectWhich & ((~clear) & (~selectAll))) & XCB_XKB_EVENT_TYPE_INDICATOR_MAP_NOTIFY) {
- /* xcb_xkb_select_events_details_t.affectIndicatorMap */
- _aux->affectIndicatorMap = *(uint32_t *)xcb_tmp;
- xcb_block_len += sizeof(uint32_t);
- xcb_tmp += sizeof(uint32_t);
- xcb_align_to = ALIGNOF(uint32_t);
- /* xcb_xkb_select_events_details_t.indicatorMapDetails */
- _aux->indicatorMapDetails = *(uint32_t *)xcb_tmp;
- xcb_block_len += sizeof(uint32_t);
- xcb_tmp += sizeof(uint32_t);
- xcb_align_to = ALIGNOF(uint32_t);
- }
- if((affectWhich & ((~clear) & (~selectAll))) & XCB_XKB_EVENT_TYPE_NAMES_NOTIFY) {
- /* xcb_xkb_select_events_details_t.affectNames */
- _aux->affectNames = *(uint16_t *)xcb_tmp;
- xcb_block_len += sizeof(uint16_t);
- xcb_tmp += sizeof(uint16_t);
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_select_events_details_t.namesDetails */
- _aux->namesDetails = *(uint16_t *)xcb_tmp;
- xcb_block_len += sizeof(uint16_t);
- xcb_tmp += sizeof(uint16_t);
- xcb_align_to = ALIGNOF(uint16_t);
- }
- if((affectWhich & ((~clear) & (~selectAll))) & XCB_XKB_EVENT_TYPE_COMPAT_MAP_NOTIFY) {
- /* xcb_xkb_select_events_details_t.affectCompat */
- _aux->affectCompat = *(uint8_t *)xcb_tmp;
- xcb_block_len += sizeof(uint8_t);
- xcb_tmp += sizeof(uint8_t);
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_select_events_details_t.compatDetails */
- _aux->compatDetails = *(uint8_t *)xcb_tmp;
- xcb_block_len += sizeof(uint8_t);
- xcb_tmp += sizeof(uint8_t);
- xcb_align_to = ALIGNOF(uint8_t);
- }
- if((affectWhich & ((~clear) & (~selectAll))) & XCB_XKB_EVENT_TYPE_BELL_NOTIFY) {
- /* xcb_xkb_select_events_details_t.affectBell */
- _aux->affectBell = *(uint8_t *)xcb_tmp;
- xcb_block_len += sizeof(uint8_t);
- xcb_tmp += sizeof(uint8_t);
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_select_events_details_t.bellDetails */
- _aux->bellDetails = *(uint8_t *)xcb_tmp;
- xcb_block_len += sizeof(uint8_t);
- xcb_tmp += sizeof(uint8_t);
- xcb_align_to = ALIGNOF(uint8_t);
- }
- if((affectWhich & ((~clear) & (~selectAll))) & XCB_XKB_EVENT_TYPE_ACTION_MESSAGE) {
- /* xcb_xkb_select_events_details_t.affectMsgDetails */
- _aux->affectMsgDetails = *(uint8_t *)xcb_tmp;
- xcb_block_len += sizeof(uint8_t);
- xcb_tmp += sizeof(uint8_t);
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_select_events_details_t.msgDetails */
- _aux->msgDetails = *(uint8_t *)xcb_tmp;
- xcb_block_len += sizeof(uint8_t);
- xcb_tmp += sizeof(uint8_t);
- xcb_align_to = ALIGNOF(uint8_t);
- }
- if((affectWhich & ((~clear) & (~selectAll))) & XCB_XKB_EVENT_TYPE_ACCESS_X_NOTIFY) {
- /* xcb_xkb_select_events_details_t.affectAccessX */
- _aux->affectAccessX = *(uint16_t *)xcb_tmp;
- xcb_block_len += sizeof(uint16_t);
- xcb_tmp += sizeof(uint16_t);
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_select_events_details_t.accessXDetails */
- _aux->accessXDetails = *(uint16_t *)xcb_tmp;
- xcb_block_len += sizeof(uint16_t);
- xcb_tmp += sizeof(uint16_t);
- xcb_align_to = ALIGNOF(uint16_t);
- }
- if((affectWhich & ((~clear) & (~selectAll))) & XCB_XKB_EVENT_TYPE_EXTENSION_DEVICE_NOTIFY) {
- /* xcb_xkb_select_events_details_t.affectExtDev */
- _aux->affectExtDev = *(uint16_t *)xcb_tmp;
- xcb_block_len += sizeof(uint16_t);
- xcb_tmp += sizeof(uint16_t);
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_select_events_details_t.extdevDetails */
- _aux->extdevDetails = *(uint16_t *)xcb_tmp;
- xcb_block_len += sizeof(uint16_t);
- xcb_tmp += sizeof(uint16_t);
- xcb_align_to = ALIGNOF(uint16_t);
- }
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-int
-xcb_xkb_select_events_details_sizeof (const void *_buffer /**< */,
- uint16_t affectWhich /**< */,
- uint16_t clear /**< */,
- uint16_t selectAll /**< */)
-{
- xcb_xkb_select_events_details_t _aux;
- return xcb_xkb_select_events_details_unpack(_buffer, affectWhich, clear, selectAll, &_aux);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_select_events_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint16_t affectWhich
- ** @param uint16_t clear
- ** @param uint16_t selectAll
- ** @param uint16_t affectMap
- ** @param uint16_t map
- ** @param const void *details
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_select_events_checked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint16_t affectWhich /**< */,
- uint16_t clear /**< */,
- uint16_t selectAll /**< */,
- uint16_t affectMap /**< */,
- uint16_t map /**< */,
- const void *details /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 3,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_SELECT_EVENTS,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[5];
- xcb_void_cookie_t xcb_ret;
- xcb_xkb_select_events_request_t xcb_out;
-
- xcb_out.deviceSpec = deviceSpec;
- xcb_out.affectWhich = affectWhich;
- xcb_out.clear = clear;
- xcb_out.selectAll = selectAll;
- xcb_out.affectMap = affectMap;
- xcb_out.map = map;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_xkb_select_events_details_t details */
- xcb_parts[4].iov_base = (char *) details;
- xcb_parts[4].iov_len =
- xcb_xkb_select_events_details_sizeof (details, affectWhich, clear, selectAll);
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_select_events
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint16_t affectWhich
- ** @param uint16_t clear
- ** @param uint16_t selectAll
- ** @param uint16_t affectMap
- ** @param uint16_t map
- ** @param const void *details
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_select_events (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint16_t affectWhich /**< */,
- uint16_t clear /**< */,
- uint16_t selectAll /**< */,
- uint16_t affectMap /**< */,
- uint16_t map /**< */,
- const void *details /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 3,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_SELECT_EVENTS,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[5];
- xcb_void_cookie_t xcb_ret;
- xcb_xkb_select_events_request_t xcb_out;
-
- xcb_out.deviceSpec = deviceSpec;
- xcb_out.affectWhich = affectWhich;
- xcb_out.clear = clear;
- xcb_out.selectAll = selectAll;
- xcb_out.affectMap = affectMap;
- xcb_out.map = map;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_xkb_select_events_details_t details */
- xcb_parts[4].iov_base = (char *) details;
- xcb_parts[4].iov_len =
- xcb_xkb_select_events_details_sizeof (details, affectWhich, clear, selectAll);
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_select_events_aux_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint16_t affectWhich
- ** @param uint16_t clear
- ** @param uint16_t selectAll
- ** @param uint16_t affectMap
- ** @param uint16_t map
- ** @param const xcb_xkb_select_events_details_t *details
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_select_events_aux_checked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint16_t affectWhich /**< */,
- uint16_t clear /**< */,
- uint16_t selectAll /**< */,
- uint16_t affectMap /**< */,
- uint16_t map /**< */,
- const xcb_xkb_select_events_details_t *details /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 3,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_SELECT_EVENTS,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[5];
- xcb_void_cookie_t xcb_ret;
- xcb_xkb_select_events_request_t xcb_out;
- void *xcb_aux0 = 0;
-
- xcb_out.deviceSpec = deviceSpec;
- xcb_out.affectWhich = affectWhich;
- xcb_out.clear = clear;
- xcb_out.selectAll = selectAll;
- xcb_out.affectMap = affectMap;
- xcb_out.map = map;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_xkb_select_events_details_t details */
- xcb_parts[4].iov_len =
- xcb_xkb_select_events_details_serialize (&xcb_aux0, affectWhich, clear, selectAll, details);
- xcb_parts[4].iov_base = xcb_aux0;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- free(xcb_aux0);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_select_events_aux
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint16_t affectWhich
- ** @param uint16_t clear
- ** @param uint16_t selectAll
- ** @param uint16_t affectMap
- ** @param uint16_t map
- ** @param const xcb_xkb_select_events_details_t *details
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_select_events_aux (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint16_t affectWhich /**< */,
- uint16_t clear /**< */,
- uint16_t selectAll /**< */,
- uint16_t affectMap /**< */,
- uint16_t map /**< */,
- const xcb_xkb_select_events_details_t *details /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 3,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_SELECT_EVENTS,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[5];
- xcb_void_cookie_t xcb_ret;
- xcb_xkb_select_events_request_t xcb_out;
- void *xcb_aux0 = 0;
-
- xcb_out.deviceSpec = deviceSpec;
- xcb_out.affectWhich = affectWhich;
- xcb_out.clear = clear;
- xcb_out.selectAll = selectAll;
- xcb_out.affectMap = affectMap;
- xcb_out.map = map;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_xkb_select_events_details_t details */
- xcb_parts[4].iov_len =
- xcb_xkb_select_events_details_serialize (&xcb_aux0, affectWhich, clear, selectAll, details);
- xcb_parts[4].iov_base = xcb_aux0;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- free(xcb_aux0);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_bell_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param xcb_xkb_bell_class_spec_t bellClass
- ** @param xcb_xkb_id_spec_t bellID
- ** @param int8_t percent
- ** @param uint8_t forceSound
- ** @param uint8_t eventOnly
- ** @param int16_t pitch
- ** @param int16_t duration
- ** @param xcb_atom_t name
- ** @param xcb_window_t window
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_bell_checked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- xcb_xkb_bell_class_spec_t bellClass /**< */,
- xcb_xkb_id_spec_t bellID /**< */,
- int8_t percent /**< */,
- uint8_t forceSound /**< */,
- uint8_t eventOnly /**< */,
- int16_t pitch /**< */,
- int16_t duration /**< */,
- xcb_atom_t name /**< */,
- xcb_window_t window /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_BELL,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xkb_bell_request_t xcb_out;
-
- xcb_out.deviceSpec = deviceSpec;
- xcb_out.bellClass = bellClass;
- xcb_out.bellID = bellID;
- xcb_out.percent = percent;
- xcb_out.forceSound = forceSound;
- xcb_out.eventOnly = eventOnly;
- xcb_out.pad0 = 0;
- xcb_out.pitch = pitch;
- xcb_out.duration = duration;
- memset(xcb_out.pad1, 0, 2);
- xcb_out.name = name;
- xcb_out.window = window;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_bell
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param xcb_xkb_bell_class_spec_t bellClass
- ** @param xcb_xkb_id_spec_t bellID
- ** @param int8_t percent
- ** @param uint8_t forceSound
- ** @param uint8_t eventOnly
- ** @param int16_t pitch
- ** @param int16_t duration
- ** @param xcb_atom_t name
- ** @param xcb_window_t window
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_bell (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- xcb_xkb_bell_class_spec_t bellClass /**< */,
- xcb_xkb_id_spec_t bellID /**< */,
- int8_t percent /**< */,
- uint8_t forceSound /**< */,
- uint8_t eventOnly /**< */,
- int16_t pitch /**< */,
- int16_t duration /**< */,
- xcb_atom_t name /**< */,
- xcb_window_t window /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_BELL,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xkb_bell_request_t xcb_out;
-
- xcb_out.deviceSpec = deviceSpec;
- xcb_out.bellClass = bellClass;
- xcb_out.bellID = bellID;
- xcb_out.percent = percent;
- xcb_out.forceSound = forceSound;
- xcb_out.eventOnly = eventOnly;
- xcb_out.pad0 = 0;
- xcb_out.pitch = pitch;
- xcb_out.duration = duration;
- memset(xcb_out.pad1, 0, 2);
- xcb_out.name = name;
- xcb_out.window = window;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_state_cookie_t xcb_xkb_get_state
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @returns xcb_xkb_get_state_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_get_state_cookie_t
-xcb_xkb_get_state (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_GET_STATE,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_xkb_get_state_cookie_t xcb_ret;
- xcb_xkb_get_state_request_t xcb_out;
-
- xcb_out.deviceSpec = deviceSpec;
- memset(xcb_out.pad0, 0, 2);
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_state_cookie_t xcb_xkb_get_state_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @returns xcb_xkb_get_state_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_get_state_cookie_t
-xcb_xkb_get_state_unchecked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_GET_STATE,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_xkb_get_state_cookie_t xcb_ret;
- xcb_xkb_get_state_request_t xcb_out;
-
- xcb_out.deviceSpec = deviceSpec;
- memset(xcb_out.pad0, 0, 2);
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_state_reply_t * xcb_xkb_get_state_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_get_state_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xkb_get_state_reply_t *
- **
- *****************************************************************************/
-
-xcb_xkb_get_state_reply_t *
-xcb_xkb_get_state_reply (xcb_connection_t *c /**< */,
- xcb_xkb_get_state_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_xkb_get_state_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_latch_lock_state_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint8_t affectModLocks
- ** @param uint8_t modLocks
- ** @param uint8_t lockGroup
- ** @param uint8_t groupLock
- ** @param uint8_t affectModLatches
- ** @param uint8_t latchGroup
- ** @param uint16_t groupLatch
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_latch_lock_state_checked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint8_t affectModLocks /**< */,
- uint8_t modLocks /**< */,
- uint8_t lockGroup /**< */,
- uint8_t groupLock /**< */,
- uint8_t affectModLatches /**< */,
- uint8_t latchGroup /**< */,
- uint16_t groupLatch /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_LATCH_LOCK_STATE,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xkb_latch_lock_state_request_t xcb_out;
-
- xcb_out.deviceSpec = deviceSpec;
- xcb_out.affectModLocks = affectModLocks;
- xcb_out.modLocks = modLocks;
- xcb_out.lockGroup = lockGroup;
- xcb_out.groupLock = groupLock;
- xcb_out.affectModLatches = affectModLatches;
- xcb_out.pad0 = 0;
- xcb_out.latchGroup = latchGroup;
- xcb_out.groupLatch = groupLatch;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_latch_lock_state
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint8_t affectModLocks
- ** @param uint8_t modLocks
- ** @param uint8_t lockGroup
- ** @param uint8_t groupLock
- ** @param uint8_t affectModLatches
- ** @param uint8_t latchGroup
- ** @param uint16_t groupLatch
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_latch_lock_state (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint8_t affectModLocks /**< */,
- uint8_t modLocks /**< */,
- uint8_t lockGroup /**< */,
- uint8_t groupLock /**< */,
- uint8_t affectModLatches /**< */,
- uint8_t latchGroup /**< */,
- uint16_t groupLatch /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_LATCH_LOCK_STATE,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xkb_latch_lock_state_request_t xcb_out;
-
- xcb_out.deviceSpec = deviceSpec;
- xcb_out.affectModLocks = affectModLocks;
- xcb_out.modLocks = modLocks;
- xcb_out.lockGroup = lockGroup;
- xcb_out.groupLock = groupLock;
- xcb_out.affectModLatches = affectModLatches;
- xcb_out.pad0 = 0;
- xcb_out.latchGroup = latchGroup;
- xcb_out.groupLatch = groupLatch;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_controls_cookie_t xcb_xkb_get_controls
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @returns xcb_xkb_get_controls_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_get_controls_cookie_t
-xcb_xkb_get_controls (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_GET_CONTROLS,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_xkb_get_controls_cookie_t xcb_ret;
- xcb_xkb_get_controls_request_t xcb_out;
-
- xcb_out.deviceSpec = deviceSpec;
- memset(xcb_out.pad0, 0, 2);
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_controls_cookie_t xcb_xkb_get_controls_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @returns xcb_xkb_get_controls_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_get_controls_cookie_t
-xcb_xkb_get_controls_unchecked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_GET_CONTROLS,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_xkb_get_controls_cookie_t xcb_ret;
- xcb_xkb_get_controls_request_t xcb_out;
-
- xcb_out.deviceSpec = deviceSpec;
- memset(xcb_out.pad0, 0, 2);
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_controls_reply_t * xcb_xkb_get_controls_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_get_controls_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xkb_get_controls_reply_t *
- **
- *****************************************************************************/
-
-xcb_xkb_get_controls_reply_t *
-xcb_xkb_get_controls_reply (xcb_connection_t *c /**< */,
- xcb_xkb_get_controls_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_xkb_get_controls_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_set_controls_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint8_t affectInternalRealMods
- ** @param uint8_t internalRealMods
- ** @param uint8_t affectIgnoreLockRealMods
- ** @param uint8_t ignoreLockRealMods
- ** @param uint16_t affectInternalVirtualMods
- ** @param uint16_t internalVirtualMods
- ** @param uint16_t affectIgnoreLockVirtualMods
- ** @param uint16_t ignoreLockVirtualMods
- ** @param uint8_t mouseKeysDfltBtn
- ** @param uint8_t groupsWrap
- ** @param uint16_t accessXOptions
- ** @param uint32_t affectEnabledControls
- ** @param uint32_t enabledControls
- ** @param uint32_t changeControls
- ** @param uint16_t repeatDelay
- ** @param uint16_t repeatInterval
- ** @param uint16_t slowKeysDelay
- ** @param uint16_t debounceDelay
- ** @param uint16_t mouseKeysDelay
- ** @param uint16_t mouseKeysInterval
- ** @param uint16_t mouseKeysTimeToMax
- ** @param uint16_t mouseKeysMaxSpeed
- ** @param int16_t mouseKeysCurve
- ** @param uint16_t accessXTimeout
- ** @param uint32_t accessXTimeoutMask
- ** @param uint32_t accessXTimeoutValues
- ** @param uint16_t accessXTimeoutOptionsMask
- ** @param uint16_t accessXTimeoutOptionsValues
- ** @param const uint8_t *perKeyRepeat
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_set_controls_checked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint8_t affectInternalRealMods /**< */,
- uint8_t internalRealMods /**< */,
- uint8_t affectIgnoreLockRealMods /**< */,
- uint8_t ignoreLockRealMods /**< */,
- uint16_t affectInternalVirtualMods /**< */,
- uint16_t internalVirtualMods /**< */,
- uint16_t affectIgnoreLockVirtualMods /**< */,
- uint16_t ignoreLockVirtualMods /**< */,
- uint8_t mouseKeysDfltBtn /**< */,
- uint8_t groupsWrap /**< */,
- uint16_t accessXOptions /**< */,
- uint32_t affectEnabledControls /**< */,
- uint32_t enabledControls /**< */,
- uint32_t changeControls /**< */,
- uint16_t repeatDelay /**< */,
- uint16_t repeatInterval /**< */,
- uint16_t slowKeysDelay /**< */,
- uint16_t debounceDelay /**< */,
- uint16_t mouseKeysDelay /**< */,
- uint16_t mouseKeysInterval /**< */,
- uint16_t mouseKeysTimeToMax /**< */,
- uint16_t mouseKeysMaxSpeed /**< */,
- int16_t mouseKeysCurve /**< */,
- uint16_t accessXTimeout /**< */,
- uint32_t accessXTimeoutMask /**< */,
- uint32_t accessXTimeoutValues /**< */,
- uint16_t accessXTimeoutOptionsMask /**< */,
- uint16_t accessXTimeoutOptionsValues /**< */,
- const uint8_t *perKeyRepeat /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_SET_CONTROLS,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xkb_set_controls_request_t xcb_out;
-
- xcb_out.deviceSpec = deviceSpec;
- xcb_out.affectInternalRealMods = affectInternalRealMods;
- xcb_out.internalRealMods = internalRealMods;
- xcb_out.affectIgnoreLockRealMods = affectIgnoreLockRealMods;
- xcb_out.ignoreLockRealMods = ignoreLockRealMods;
- xcb_out.affectInternalVirtualMods = affectInternalVirtualMods;
- xcb_out.internalVirtualMods = internalVirtualMods;
- xcb_out.affectIgnoreLockVirtualMods = affectIgnoreLockVirtualMods;
- xcb_out.ignoreLockVirtualMods = ignoreLockVirtualMods;
- xcb_out.mouseKeysDfltBtn = mouseKeysDfltBtn;
- xcb_out.groupsWrap = groupsWrap;
- xcb_out.accessXOptions = accessXOptions;
- memset(xcb_out.pad0, 0, 2);
- xcb_out.affectEnabledControls = affectEnabledControls;
- xcb_out.enabledControls = enabledControls;
- xcb_out.changeControls = changeControls;
- xcb_out.repeatDelay = repeatDelay;
- xcb_out.repeatInterval = repeatInterval;
- xcb_out.slowKeysDelay = slowKeysDelay;
- xcb_out.debounceDelay = debounceDelay;
- xcb_out.mouseKeysDelay = mouseKeysDelay;
- xcb_out.mouseKeysInterval = mouseKeysInterval;
- xcb_out.mouseKeysTimeToMax = mouseKeysTimeToMax;
- xcb_out.mouseKeysMaxSpeed = mouseKeysMaxSpeed;
- xcb_out.mouseKeysCurve = mouseKeysCurve;
- xcb_out.accessXTimeout = accessXTimeout;
- xcb_out.accessXTimeoutMask = accessXTimeoutMask;
- xcb_out.accessXTimeoutValues = accessXTimeoutValues;
- xcb_out.accessXTimeoutOptionsMask = accessXTimeoutOptionsMask;
- xcb_out.accessXTimeoutOptionsValues = accessXTimeoutOptionsValues;
- memcpy(xcb_out.perKeyRepeat, perKeyRepeat, 32);
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_set_controls
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint8_t affectInternalRealMods
- ** @param uint8_t internalRealMods
- ** @param uint8_t affectIgnoreLockRealMods
- ** @param uint8_t ignoreLockRealMods
- ** @param uint16_t affectInternalVirtualMods
- ** @param uint16_t internalVirtualMods
- ** @param uint16_t affectIgnoreLockVirtualMods
- ** @param uint16_t ignoreLockVirtualMods
- ** @param uint8_t mouseKeysDfltBtn
- ** @param uint8_t groupsWrap
- ** @param uint16_t accessXOptions
- ** @param uint32_t affectEnabledControls
- ** @param uint32_t enabledControls
- ** @param uint32_t changeControls
- ** @param uint16_t repeatDelay
- ** @param uint16_t repeatInterval
- ** @param uint16_t slowKeysDelay
- ** @param uint16_t debounceDelay
- ** @param uint16_t mouseKeysDelay
- ** @param uint16_t mouseKeysInterval
- ** @param uint16_t mouseKeysTimeToMax
- ** @param uint16_t mouseKeysMaxSpeed
- ** @param int16_t mouseKeysCurve
- ** @param uint16_t accessXTimeout
- ** @param uint32_t accessXTimeoutMask
- ** @param uint32_t accessXTimeoutValues
- ** @param uint16_t accessXTimeoutOptionsMask
- ** @param uint16_t accessXTimeoutOptionsValues
- ** @param const uint8_t *perKeyRepeat
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_set_controls (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint8_t affectInternalRealMods /**< */,
- uint8_t internalRealMods /**< */,
- uint8_t affectIgnoreLockRealMods /**< */,
- uint8_t ignoreLockRealMods /**< */,
- uint16_t affectInternalVirtualMods /**< */,
- uint16_t internalVirtualMods /**< */,
- uint16_t affectIgnoreLockVirtualMods /**< */,
- uint16_t ignoreLockVirtualMods /**< */,
- uint8_t mouseKeysDfltBtn /**< */,
- uint8_t groupsWrap /**< */,
- uint16_t accessXOptions /**< */,
- uint32_t affectEnabledControls /**< */,
- uint32_t enabledControls /**< */,
- uint32_t changeControls /**< */,
- uint16_t repeatDelay /**< */,
- uint16_t repeatInterval /**< */,
- uint16_t slowKeysDelay /**< */,
- uint16_t debounceDelay /**< */,
- uint16_t mouseKeysDelay /**< */,
- uint16_t mouseKeysInterval /**< */,
- uint16_t mouseKeysTimeToMax /**< */,
- uint16_t mouseKeysMaxSpeed /**< */,
- int16_t mouseKeysCurve /**< */,
- uint16_t accessXTimeout /**< */,
- uint32_t accessXTimeoutMask /**< */,
- uint32_t accessXTimeoutValues /**< */,
- uint16_t accessXTimeoutOptionsMask /**< */,
- uint16_t accessXTimeoutOptionsValues /**< */,
- const uint8_t *perKeyRepeat /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_SET_CONTROLS,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xkb_set_controls_request_t xcb_out;
-
- xcb_out.deviceSpec = deviceSpec;
- xcb_out.affectInternalRealMods = affectInternalRealMods;
- xcb_out.internalRealMods = internalRealMods;
- xcb_out.affectIgnoreLockRealMods = affectIgnoreLockRealMods;
- xcb_out.ignoreLockRealMods = ignoreLockRealMods;
- xcb_out.affectInternalVirtualMods = affectInternalVirtualMods;
- xcb_out.internalVirtualMods = internalVirtualMods;
- xcb_out.affectIgnoreLockVirtualMods = affectIgnoreLockVirtualMods;
- xcb_out.ignoreLockVirtualMods = ignoreLockVirtualMods;
- xcb_out.mouseKeysDfltBtn = mouseKeysDfltBtn;
- xcb_out.groupsWrap = groupsWrap;
- xcb_out.accessXOptions = accessXOptions;
- memset(xcb_out.pad0, 0, 2);
- xcb_out.affectEnabledControls = affectEnabledControls;
- xcb_out.enabledControls = enabledControls;
- xcb_out.changeControls = changeControls;
- xcb_out.repeatDelay = repeatDelay;
- xcb_out.repeatInterval = repeatInterval;
- xcb_out.slowKeysDelay = slowKeysDelay;
- xcb_out.debounceDelay = debounceDelay;
- xcb_out.mouseKeysDelay = mouseKeysDelay;
- xcb_out.mouseKeysInterval = mouseKeysInterval;
- xcb_out.mouseKeysTimeToMax = mouseKeysTimeToMax;
- xcb_out.mouseKeysMaxSpeed = mouseKeysMaxSpeed;
- xcb_out.mouseKeysCurve = mouseKeysCurve;
- xcb_out.accessXTimeout = accessXTimeout;
- xcb_out.accessXTimeoutMask = accessXTimeoutMask;
- xcb_out.accessXTimeoutValues = accessXTimeoutValues;
- xcb_out.accessXTimeoutOptionsMask = accessXTimeoutOptionsMask;
- xcb_out.accessXTimeoutOptionsValues = accessXTimeoutOptionsValues;
- memcpy(xcb_out.perKeyRepeat, perKeyRepeat, 32);
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_map_map_types_rtrn_length
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_map_map_types_rtrn_length (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */)
-{
- return R->nTypes;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_type_iterator_t xcb_xkb_get_map_map_types_rtrn_iterator
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns xcb_xkb_key_type_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_key_type_iterator_t
-xcb_xkb_get_map_map_types_rtrn_iterator (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */)
-{
- xcb_xkb_key_type_iterator_t i;
- i.data = /* map */ S->types_rtrn;
- i.rem = R->nTypes;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_map_map_syms_rtrn_length
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_map_map_syms_rtrn_length (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */)
-{
- return R->nKeySyms;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_sym_map_iterator_t xcb_xkb_get_map_map_syms_rtrn_iterator
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns xcb_xkb_key_sym_map_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_key_sym_map_iterator_t
-xcb_xkb_get_map_map_syms_rtrn_iterator (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */)
-{
- xcb_xkb_key_sym_map_iterator_t i;
- i.data = /* map */ S->syms_rtrn;
- i.rem = R->nKeySyms;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** uint8_t * xcb_xkb_get_map_map_acts_rtrn_count
- **
- ** @param const xcb_xkb_get_map_map_t *S
- ** @returns uint8_t *
- **
- *****************************************************************************/
-
-uint8_t *
-xcb_xkb_get_map_map_acts_rtrn_count (const xcb_xkb_get_map_map_t *S /**< */)
-{
- return /* map */ S->acts_rtrn_count;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_map_map_acts_rtrn_count_length
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_map_map_acts_rtrn_count_length (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */)
-{
- return R->nKeyActions;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_get_map_map_acts_rtrn_count_end
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_get_map_map_acts_rtrn_count_end (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = /* map */ S->acts_rtrn_count + R->nKeyActions;
- i.rem = 0;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** uint8_t * xcb_xkb_get_map_map_alignment_pad
- **
- ** @param const xcb_xkb_get_map_map_t *S
- ** @returns uint8_t *
- **
- *****************************************************************************/
-
-uint8_t *
-xcb_xkb_get_map_map_alignment_pad (const xcb_xkb_get_map_map_t *S /**< */)
-{
- return /* map */ S->alignment_pad;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_map_map_alignment_pad_length
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_map_map_alignment_pad_length (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */)
-{
- return (((R->nKeyActions + 3) & (~3)) - R->nKeyActions);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_get_map_map_alignment_pad_end
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_get_map_map_alignment_pad_end (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = /* map */ S->alignment_pad + (((R->nKeyActions + 3) & (~3)) - R->nKeyActions);
- i.rem = 0;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_action_t * xcb_xkb_get_map_map_acts_rtrn_acts
- **
- ** @param const xcb_xkb_get_map_map_t *S
- ** @returns xcb_xkb_action_t *
- **
- *****************************************************************************/
-
-xcb_xkb_action_t *
-xcb_xkb_get_map_map_acts_rtrn_acts (const xcb_xkb_get_map_map_t *S /**< */)
-{
- return /* map */ S->acts_rtrn_acts;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_map_map_acts_rtrn_acts_length
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_map_map_acts_rtrn_acts_length (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */)
-{
- return R->totalActions;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_action_iterator_t xcb_xkb_get_map_map_acts_rtrn_acts_iterator
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns xcb_xkb_action_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_action_iterator_t
-xcb_xkb_get_map_map_acts_rtrn_acts_iterator (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */)
-{
- xcb_xkb_action_iterator_t i;
- i.data = /* map */ S->acts_rtrn_acts;
- i.rem = R->totalActions;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_set_behavior_t * xcb_xkb_get_map_map_behaviors_rtrn
- **
- ** @param const xcb_xkb_get_map_map_t *S
- ** @returns xcb_xkb_set_behavior_t *
- **
- *****************************************************************************/
-
-xcb_xkb_set_behavior_t *
-xcb_xkb_get_map_map_behaviors_rtrn (const xcb_xkb_get_map_map_t *S /**< */)
-{
- return /* map */ S->behaviors_rtrn;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_map_map_behaviors_rtrn_length
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_map_map_behaviors_rtrn_length (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */)
-{
- return R->totalKeyBehaviors;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_set_behavior_iterator_t xcb_xkb_get_map_map_behaviors_rtrn_iterator
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns xcb_xkb_set_behavior_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_set_behavior_iterator_t
-xcb_xkb_get_map_map_behaviors_rtrn_iterator (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */)
-{
- xcb_xkb_set_behavior_iterator_t i;
- i.data = /* map */ S->behaviors_rtrn;
- i.rem = R->totalKeyBehaviors;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** uint8_t * xcb_xkb_get_map_map_vmods_rtrn
- **
- ** @param const xcb_xkb_get_map_map_t *S
- ** @returns uint8_t *
- **
- *****************************************************************************/
-
-uint8_t *
-xcb_xkb_get_map_map_vmods_rtrn (const xcb_xkb_get_map_map_t *S /**< */)
-{
- return /* map */ S->vmods_rtrn;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_map_map_vmods_rtrn_length
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_map_map_vmods_rtrn_length (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */)
-{
- return xcb_popcount(R->virtualMods);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_get_map_map_vmods_rtrn_end
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_get_map_map_vmods_rtrn_end (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = /* map */ S->vmods_rtrn + xcb_popcount(R->virtualMods);
- i.rem = 0;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** uint8_t * xcb_xkb_get_map_map_alignment_pad_2
- **
- ** @param const xcb_xkb_get_map_map_t *S
- ** @returns uint8_t *
- **
- *****************************************************************************/
-
-uint8_t *
-xcb_xkb_get_map_map_alignment_pad_2 (const xcb_xkb_get_map_map_t *S /**< */)
-{
- return /* map */ S->alignment_pad2;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_map_map_alignment_pad_2_length
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_map_map_alignment_pad_2_length (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */)
-{
- return (((xcb_popcount(R->virtualMods) + 3) & (~3)) - xcb_popcount(R->virtualMods));
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_get_map_map_alignment_pad_2_end
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_get_map_map_alignment_pad_2_end (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = /* map */ S->alignment_pad2 + (((xcb_popcount(R->virtualMods) + 3) & (~3)) - xcb_popcount(R->virtualMods));
- i.rem = 0;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_set_explicit_t * xcb_xkb_get_map_map_explicit_rtrn
- **
- ** @param const xcb_xkb_get_map_map_t *S
- ** @returns xcb_xkb_set_explicit_t *
- **
- *****************************************************************************/
-
-xcb_xkb_set_explicit_t *
-xcb_xkb_get_map_map_explicit_rtrn (const xcb_xkb_get_map_map_t *S /**< */)
-{
- return /* map */ S->explicit_rtrn;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_map_map_explicit_rtrn_length
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_map_map_explicit_rtrn_length (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */)
-{
- return R->totalKeyExplicit;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_set_explicit_iterator_t xcb_xkb_get_map_map_explicit_rtrn_iterator
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns xcb_xkb_set_explicit_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_set_explicit_iterator_t
-xcb_xkb_get_map_map_explicit_rtrn_iterator (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */)
-{
- xcb_xkb_set_explicit_iterator_t i;
- i.data = /* map */ S->explicit_rtrn;
- i.rem = R->totalKeyExplicit;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** uint16_t * xcb_xkb_get_map_map_alignment_pad_3
- **
- ** @param const xcb_xkb_get_map_map_t *S
- ** @returns uint16_t *
- **
- *****************************************************************************/
-
-uint16_t *
-xcb_xkb_get_map_map_alignment_pad_3 (const xcb_xkb_get_map_map_t *S /**< */)
-{
- return /* map */ S->alignment_pad3;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_map_map_alignment_pad_3_length
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_map_map_alignment_pad_3_length (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */)
-{
- return (((R->totalKeyExplicit + 1) & (~1)) - R->totalKeyExplicit);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_get_map_map_alignment_pad_3_end
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_get_map_map_alignment_pad_3_end (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = /* map */ S->alignment_pad3 + (((R->totalKeyExplicit + 1) & (~1)) - R->totalKeyExplicit);
- i.rem = 0;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_mod_map_t * xcb_xkb_get_map_map_modmap_rtrn
- **
- ** @param const xcb_xkb_get_map_map_t *S
- ** @returns xcb_xkb_key_mod_map_t *
- **
- *****************************************************************************/
-
-xcb_xkb_key_mod_map_t *
-xcb_xkb_get_map_map_modmap_rtrn (const xcb_xkb_get_map_map_t *S /**< */)
-{
- return /* map */ S->modmap_rtrn;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_map_map_modmap_rtrn_length
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_map_map_modmap_rtrn_length (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */)
-{
- return R->totalModMapKeys;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_mod_map_iterator_t xcb_xkb_get_map_map_modmap_rtrn_iterator
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns xcb_xkb_key_mod_map_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_key_mod_map_iterator_t
-xcb_xkb_get_map_map_modmap_rtrn_iterator (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */)
-{
- xcb_xkb_key_mod_map_iterator_t i;
- i.data = /* map */ S->modmap_rtrn;
- i.rem = R->totalModMapKeys;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** uint16_t * xcb_xkb_get_map_map_alignment_pad_4
- **
- ** @param const xcb_xkb_get_map_map_t *S
- ** @returns uint16_t *
- **
- *****************************************************************************/
-
-uint16_t *
-xcb_xkb_get_map_map_alignment_pad_4 (const xcb_xkb_get_map_map_t *S /**< */)
-{
- return /* map */ S->alignment_pad4;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_map_map_alignment_pad_4_length
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_map_map_alignment_pad_4_length (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */)
-{
- return (((R->totalModMapKeys + 1) & (~1)) - R->totalModMapKeys);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_get_map_map_alignment_pad_4_end
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_get_map_map_alignment_pad_4_end (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = /* map */ S->alignment_pad4 + (((R->totalModMapKeys + 1) & (~1)) - R->totalModMapKeys);
- i.rem = 0;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_v_mod_map_t * xcb_xkb_get_map_map_vmodmap_rtrn
- **
- ** @param const xcb_xkb_get_map_map_t *S
- ** @returns xcb_xkb_key_v_mod_map_t *
- **
- *****************************************************************************/
-
-xcb_xkb_key_v_mod_map_t *
-xcb_xkb_get_map_map_vmodmap_rtrn (const xcb_xkb_get_map_map_t *S /**< */)
-{
- return /* map */ S->vmodmap_rtrn;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_map_map_vmodmap_rtrn_length
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_map_map_vmodmap_rtrn_length (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */)
-{
- return R->totalVModMapKeys;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_v_mod_map_iterator_t xcb_xkb_get_map_map_vmodmap_rtrn_iterator
- **
- ** @param const xcb_xkb_get_map_map_t *R
- ** @returns xcb_xkb_key_v_mod_map_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_key_v_mod_map_iterator_t
-xcb_xkb_get_map_map_vmodmap_rtrn_iterator (const xcb_xkb_get_map_reply_t *R /**< */,
- const xcb_xkb_get_map_map_t *S /**< */)
-{
- xcb_xkb_key_v_mod_map_iterator_t i;
- i.data = /* map */ S->vmodmap_rtrn;
- i.rem = R->totalVModMapKeys;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-int
-xcb_xkb_get_map_map_serialize (void **_buffer /**< */,
- uint8_t nTypes /**< */,
- uint8_t nKeySyms /**< */,
- uint8_t nKeyActions /**< */,
- uint16_t totalActions /**< */,
- uint8_t totalKeyBehaviors /**< */,
- uint16_t virtualMods /**< */,
- uint8_t totalKeyExplicit /**< */,
- uint8_t totalModMapKeys /**< */,
- uint8_t totalVModMapKeys /**< */,
- uint16_t present /**< */,
- const xcb_xkb_get_map_map_t *_aux /**< */)
-{
- char *xcb_out = *_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_align_to = 0;
-
- unsigned int xcb_pad = 0;
- char xcb_pad0[3] = {0, 0, 0};
- struct iovec xcb_parts[27];
- unsigned int xcb_parts_idx = 0;
- unsigned int xcb_block_len = 0;
- unsigned int i;
- char *xcb_tmp;
-
- if(present & XCB_XKB_MAP_PART_KEY_TYPES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* types_rtrn */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->types_rtrn;
- xcb_parts[xcb_parts_idx].iov_len = 0;
- xcb_tmp = (char *) _aux->types_rtrn;
- for(i=0; i<nTypes; i++) {
- xcb_block_len = xcb_xkb_key_type_sizeof(xcb_tmp);
- xcb_parts[xcb_parts_idx].iov_len += xcb_block_len;
- }
- xcb_block_len = xcb_parts[xcb_parts_idx].iov_len;
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_xkb_key_type_t);
- }
- if(present & XCB_XKB_MAP_PART_KEY_SYMS) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* syms_rtrn */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->syms_rtrn;
- xcb_parts[xcb_parts_idx].iov_len = 0;
- xcb_tmp = (char *) _aux->syms_rtrn;
- for(i=0; i<nKeySyms; i++) {
- xcb_block_len = xcb_xkb_key_sym_map_sizeof(xcb_tmp);
- xcb_parts[xcb_parts_idx].iov_len += xcb_block_len;
- }
- xcb_block_len = xcb_parts[xcb_parts_idx].iov_len;
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_xkb_key_sym_map_t);
- }
- if(present & XCB_XKB_MAP_PART_KEY_ACTIONS) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* acts_rtrn_count */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->acts_rtrn_count;
- xcb_block_len += nKeyActions * sizeof(xcb_keycode_t);
- xcb_parts[xcb_parts_idx].iov_len = nKeyActions * sizeof(xcb_keycode_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* alignment_pad */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->alignment_pad;
- xcb_block_len += (((nKeyActions + 3) & (~3)) - nKeyActions) * sizeof(xcb_keycode_t);
- xcb_parts[xcb_parts_idx].iov_len = (((nKeyActions + 3) & (~3)) - nKeyActions) * sizeof(xcb_keycode_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* acts_rtrn_acts */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->acts_rtrn_acts;
- xcb_block_len += totalActions * sizeof(xcb_xkb_action_t);
- xcb_parts[xcb_parts_idx].iov_len = totalActions * sizeof(xcb_xkb_action_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_xkb_action_t);
- }
- if(present & XCB_XKB_MAP_PART_KEY_BEHAVIORS) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* behaviors_rtrn */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->behaviors_rtrn;
- xcb_block_len += totalKeyBehaviors * sizeof(xcb_xkb_set_behavior_t);
- xcb_parts[xcb_parts_idx].iov_len = totalKeyBehaviors * sizeof(xcb_xkb_set_behavior_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_xkb_set_behavior_t);
- }
- if(present & XCB_XKB_MAP_PART_VIRTUAL_MODS) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* vmods_rtrn */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->vmods_rtrn;
- xcb_block_len += xcb_popcount(virtualMods) * sizeof(xcb_keycode_t);
- xcb_parts[xcb_parts_idx].iov_len = xcb_popcount(virtualMods) * sizeof(xcb_keycode_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* alignment_pad2 */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->alignment_pad2;
- xcb_block_len += (((xcb_popcount(virtualMods) + 3) & (~3)) - xcb_popcount(virtualMods)) * sizeof(xcb_keycode_t);
- xcb_parts[xcb_parts_idx].iov_len = (((xcb_popcount(virtualMods) + 3) & (~3)) - xcb_popcount(virtualMods)) * sizeof(xcb_keycode_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- }
- if(present & XCB_XKB_MAP_PART_EXPLICIT_COMPONENTS) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* explicit_rtrn */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->explicit_rtrn;
- xcb_block_len += totalKeyExplicit * sizeof(xcb_xkb_set_explicit_t);
- xcb_parts[xcb_parts_idx].iov_len = totalKeyExplicit * sizeof(xcb_xkb_set_explicit_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_xkb_set_explicit_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* alignment_pad3 */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->alignment_pad3;
- xcb_block_len += (((totalKeyExplicit + 1) & (~1)) - totalKeyExplicit) * sizeof(uint16_t);
- xcb_parts[xcb_parts_idx].iov_len = (((totalKeyExplicit + 1) & (~1)) - totalKeyExplicit) * sizeof(uint16_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint16_t);
- }
- if(present & XCB_XKB_MAP_PART_MODIFIER_MAP) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* modmap_rtrn */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->modmap_rtrn;
- xcb_block_len += totalModMapKeys * sizeof(xcb_xkb_key_mod_map_t);
- xcb_parts[xcb_parts_idx].iov_len = totalModMapKeys * sizeof(xcb_xkb_key_mod_map_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_xkb_key_mod_map_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* alignment_pad4 */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->alignment_pad4;
- xcb_block_len += (((totalModMapKeys + 1) & (~1)) - totalModMapKeys) * sizeof(uint16_t);
- xcb_parts[xcb_parts_idx].iov_len = (((totalModMapKeys + 1) & (~1)) - totalModMapKeys) * sizeof(uint16_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint16_t);
- }
- if(present & XCB_XKB_MAP_PART_VIRTUAL_MOD_MAP) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* vmodmap_rtrn */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->vmodmap_rtrn;
- xcb_block_len += totalVModMapKeys * sizeof(xcb_xkb_key_v_mod_map_t);
- xcb_parts[xcb_parts_idx].iov_len = totalVModMapKeys * sizeof(xcb_xkb_key_v_mod_map_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_xkb_key_v_mod_map_t);
- }
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- if (NULL == xcb_out) {
- /* allocate memory */
- xcb_out = malloc(xcb_buffer_len);
- *_buffer = xcb_out;
- }
-
- xcb_tmp = xcb_out;
- for(i=0; i<xcb_parts_idx; i++) {
- if (0 != xcb_parts[i].iov_base && 0 != xcb_parts[i].iov_len)
- memcpy(xcb_tmp, xcb_parts[i].iov_base, xcb_parts[i].iov_len);
- if (0 != xcb_parts[i].iov_len)
- xcb_tmp += xcb_parts[i].iov_len;
- }
-
- return xcb_buffer_len;
-}
-
-int
-xcb_xkb_get_map_map_unpack (const void *_buffer /**< */,
- uint8_t nTypes /**< */,
- uint8_t nKeySyms /**< */,
- uint8_t nKeyActions /**< */,
- uint16_t totalActions /**< */,
- uint8_t totalKeyBehaviors /**< */,
- uint16_t virtualMods /**< */,
- uint8_t totalKeyExplicit /**< */,
- uint8_t totalModMapKeys /**< */,
- uint8_t totalVModMapKeys /**< */,
- uint16_t present /**< */,
- xcb_xkb_get_map_map_t *_aux /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to = 0;
-
- unsigned int i;
- unsigned int xcb_tmp_len;
-
- if(present & XCB_XKB_MAP_PART_KEY_TYPES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* types_rtrn */
- _aux->types_rtrn = (xcb_xkb_key_type_t *)xcb_tmp;
- for(i=0; i<nTypes; i++) {
- xcb_tmp_len = xcb_xkb_key_type_sizeof(xcb_tmp);
- xcb_block_len += xcb_tmp_len;
- xcb_tmp += xcb_tmp_len;
- }
- xcb_align_to = ALIGNOF(xcb_xkb_key_type_t);
- }
- if(present & XCB_XKB_MAP_PART_KEY_SYMS) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* syms_rtrn */
- _aux->syms_rtrn = (xcb_xkb_key_sym_map_t *)xcb_tmp;
- for(i=0; i<nKeySyms; i++) {
- xcb_tmp_len = xcb_xkb_key_sym_map_sizeof(xcb_tmp);
- xcb_block_len += xcb_tmp_len;
- xcb_tmp += xcb_tmp_len;
- }
- xcb_align_to = ALIGNOF(xcb_xkb_key_sym_map_t);
- }
- if(present & XCB_XKB_MAP_PART_KEY_ACTIONS) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* acts_rtrn_count */
- _aux->acts_rtrn_count = (uint8_t *)xcb_tmp;
- xcb_block_len += nKeyActions * sizeof(xcb_keycode_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(uint8_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* alignment_pad */
- _aux->alignment_pad = (uint8_t *)xcb_tmp;
- xcb_block_len += (((nKeyActions + 3) & (~3)) - nKeyActions) * sizeof(xcb_keycode_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(uint8_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* acts_rtrn_acts */
- _aux->acts_rtrn_acts = (xcb_xkb_action_t *)xcb_tmp;
- xcb_block_len += totalActions * sizeof(xcb_xkb_action_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_xkb_action_t);
- }
- if(present & XCB_XKB_MAP_PART_KEY_BEHAVIORS) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* behaviors_rtrn */
- _aux->behaviors_rtrn = (xcb_xkb_set_behavior_t *)xcb_tmp;
- xcb_block_len += totalKeyBehaviors * sizeof(xcb_xkb_set_behavior_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_xkb_set_behavior_t);
- }
- if(present & XCB_XKB_MAP_PART_VIRTUAL_MODS) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* vmods_rtrn */
- _aux->vmods_rtrn = (uint8_t *)xcb_tmp;
- xcb_block_len += xcb_popcount(virtualMods) * sizeof(xcb_keycode_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(uint8_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* alignment_pad2 */
- _aux->alignment_pad2 = (uint8_t *)xcb_tmp;
- xcb_block_len += (((xcb_popcount(virtualMods) + 3) & (~3)) - xcb_popcount(virtualMods)) * sizeof(xcb_keycode_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(uint8_t);
- }
- if(present & XCB_XKB_MAP_PART_EXPLICIT_COMPONENTS) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* explicit_rtrn */
- _aux->explicit_rtrn = (xcb_xkb_set_explicit_t *)xcb_tmp;
- xcb_block_len += totalKeyExplicit * sizeof(xcb_xkb_set_explicit_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_xkb_set_explicit_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* alignment_pad3 */
- _aux->alignment_pad3 = (uint16_t *)xcb_tmp;
- xcb_block_len += (((totalKeyExplicit + 1) & (~1)) - totalKeyExplicit) * sizeof(uint16_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(uint16_t);
- }
- if(present & XCB_XKB_MAP_PART_MODIFIER_MAP) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* modmap_rtrn */
- _aux->modmap_rtrn = (xcb_xkb_key_mod_map_t *)xcb_tmp;
- xcb_block_len += totalModMapKeys * sizeof(xcb_xkb_key_mod_map_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_xkb_key_mod_map_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* alignment_pad4 */
- _aux->alignment_pad4 = (uint16_t *)xcb_tmp;
- xcb_block_len += (((totalModMapKeys + 1) & (~1)) - totalModMapKeys) * sizeof(uint16_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(uint16_t);
- }
- if(present & XCB_XKB_MAP_PART_VIRTUAL_MOD_MAP) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* vmodmap_rtrn */
- _aux->vmodmap_rtrn = (xcb_xkb_key_v_mod_map_t *)xcb_tmp;
- xcb_block_len += totalVModMapKeys * sizeof(xcb_xkb_key_v_mod_map_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_xkb_key_v_mod_map_t);
- }
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-int
-xcb_xkb_get_map_map_sizeof (const void *_buffer /**< */,
- uint8_t nTypes /**< */,
- uint8_t nKeySyms /**< */,
- uint8_t nKeyActions /**< */,
- uint16_t totalActions /**< */,
- uint8_t totalKeyBehaviors /**< */,
- uint16_t virtualMods /**< */,
- uint8_t totalKeyExplicit /**< */,
- uint8_t totalModMapKeys /**< */,
- uint8_t totalVModMapKeys /**< */,
- uint16_t present /**< */)
-{
- xcb_xkb_get_map_map_t _aux;
- return xcb_xkb_get_map_map_unpack(_buffer, nTypes, nKeySyms, nKeyActions, totalActions, totalKeyBehaviors, virtualMods, totalKeyExplicit, totalModMapKeys, totalVModMapKeys, present, &_aux);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_map_cookie_t xcb_xkb_get_map
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint16_t full
- ** @param uint16_t partial
- ** @param uint8_t firstType
- ** @param uint8_t nTypes
- ** @param xcb_keycode_t firstKeySym
- ** @param uint8_t nKeySyms
- ** @param xcb_keycode_t firstKeyAction
- ** @param uint8_t nKeyActions
- ** @param xcb_keycode_t firstKeyBehavior
- ** @param uint8_t nKeyBehaviors
- ** @param uint16_t virtualMods
- ** @param xcb_keycode_t firstKeyExplicit
- ** @param uint8_t nKeyExplicit
- ** @param xcb_keycode_t firstModMapKey
- ** @param uint8_t nModMapKeys
- ** @param xcb_keycode_t firstVModMapKey
- ** @param uint8_t nVModMapKeys
- ** @returns xcb_xkb_get_map_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_get_map_cookie_t
-xcb_xkb_get_map (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint16_t full /**< */,
- uint16_t partial /**< */,
- uint8_t firstType /**< */,
- uint8_t nTypes /**< */,
- xcb_keycode_t firstKeySym /**< */,
- uint8_t nKeySyms /**< */,
- xcb_keycode_t firstKeyAction /**< */,
- uint8_t nKeyActions /**< */,
- xcb_keycode_t firstKeyBehavior /**< */,
- uint8_t nKeyBehaviors /**< */,
- uint16_t virtualMods /**< */,
- xcb_keycode_t firstKeyExplicit /**< */,
- uint8_t nKeyExplicit /**< */,
- xcb_keycode_t firstModMapKey /**< */,
- uint8_t nModMapKeys /**< */,
- xcb_keycode_t firstVModMapKey /**< */,
- uint8_t nVModMapKeys /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_GET_MAP,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_xkb_get_map_cookie_t xcb_ret;
- xcb_xkb_get_map_request_t xcb_out;
-
- xcb_out.deviceSpec = deviceSpec;
- xcb_out.full = full;
- xcb_out.partial = partial;
- xcb_out.firstType = firstType;
- xcb_out.nTypes = nTypes;
- xcb_out.firstKeySym = firstKeySym;
- xcb_out.nKeySyms = nKeySyms;
- xcb_out.firstKeyAction = firstKeyAction;
- xcb_out.nKeyActions = nKeyActions;
- xcb_out.firstKeyBehavior = firstKeyBehavior;
- xcb_out.nKeyBehaviors = nKeyBehaviors;
- xcb_out.virtualMods = virtualMods;
- xcb_out.firstKeyExplicit = firstKeyExplicit;
- xcb_out.nKeyExplicit = nKeyExplicit;
- xcb_out.firstModMapKey = firstModMapKey;
- xcb_out.nModMapKeys = nModMapKeys;
- xcb_out.firstVModMapKey = firstVModMapKey;
- xcb_out.nVModMapKeys = nVModMapKeys;
- memset(xcb_out.pad0, 0, 2);
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_map_cookie_t xcb_xkb_get_map_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint16_t full
- ** @param uint16_t partial
- ** @param uint8_t firstType
- ** @param uint8_t nTypes
- ** @param xcb_keycode_t firstKeySym
- ** @param uint8_t nKeySyms
- ** @param xcb_keycode_t firstKeyAction
- ** @param uint8_t nKeyActions
- ** @param xcb_keycode_t firstKeyBehavior
- ** @param uint8_t nKeyBehaviors
- ** @param uint16_t virtualMods
- ** @param xcb_keycode_t firstKeyExplicit
- ** @param uint8_t nKeyExplicit
- ** @param xcb_keycode_t firstModMapKey
- ** @param uint8_t nModMapKeys
- ** @param xcb_keycode_t firstVModMapKey
- ** @param uint8_t nVModMapKeys
- ** @returns xcb_xkb_get_map_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_get_map_cookie_t
-xcb_xkb_get_map_unchecked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint16_t full /**< */,
- uint16_t partial /**< */,
- uint8_t firstType /**< */,
- uint8_t nTypes /**< */,
- xcb_keycode_t firstKeySym /**< */,
- uint8_t nKeySyms /**< */,
- xcb_keycode_t firstKeyAction /**< */,
- uint8_t nKeyActions /**< */,
- xcb_keycode_t firstKeyBehavior /**< */,
- uint8_t nKeyBehaviors /**< */,
- uint16_t virtualMods /**< */,
- xcb_keycode_t firstKeyExplicit /**< */,
- uint8_t nKeyExplicit /**< */,
- xcb_keycode_t firstModMapKey /**< */,
- uint8_t nModMapKeys /**< */,
- xcb_keycode_t firstVModMapKey /**< */,
- uint8_t nVModMapKeys /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_GET_MAP,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_xkb_get_map_cookie_t xcb_ret;
- xcb_xkb_get_map_request_t xcb_out;
-
- xcb_out.deviceSpec = deviceSpec;
- xcb_out.full = full;
- xcb_out.partial = partial;
- xcb_out.firstType = firstType;
- xcb_out.nTypes = nTypes;
- xcb_out.firstKeySym = firstKeySym;
- xcb_out.nKeySyms = nKeySyms;
- xcb_out.firstKeyAction = firstKeyAction;
- xcb_out.nKeyActions = nKeyActions;
- xcb_out.firstKeyBehavior = firstKeyBehavior;
- xcb_out.nKeyBehaviors = nKeyBehaviors;
- xcb_out.virtualMods = virtualMods;
- xcb_out.firstKeyExplicit = firstKeyExplicit;
- xcb_out.nKeyExplicit = nKeyExplicit;
- xcb_out.firstModMapKey = firstModMapKey;
- xcb_out.nModMapKeys = nModMapKeys;
- xcb_out.firstVModMapKey = firstVModMapKey;
- xcb_out.nVModMapKeys = nVModMapKeys;
- memset(xcb_out.pad0, 0, 2);
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_map_map_t * xcb_xkb_get_map_map
- **
- ** @param const xcb_xkb_get_map_reply_t *R
- ** @returns xcb_xkb_get_map_map_t *
- **
- *****************************************************************************/
-
-void *
-xcb_xkb_get_map_map (const xcb_xkb_get_map_reply_t *R /**< */)
-{
- return (void *) (R + 1);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_map_reply_t * xcb_xkb_get_map_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_get_map_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xkb_get_map_reply_t *
- **
- *****************************************************************************/
-
-xcb_xkb_get_map_reply_t *
-xcb_xkb_get_map_reply (xcb_connection_t *c /**< */,
- xcb_xkb_get_map_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_xkb_get_map_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_set_map_values_types_length
- **
- ** @param const xcb_xkb_set_map_values_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_set_map_values_types_length (const xcb_xkb_set_map_request_t *R /**< */,
- const xcb_xkb_set_map_values_t *S /**< */)
-{
- return R->nTypes;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_set_key_type_iterator_t xcb_xkb_set_map_values_types_iterator
- **
- ** @param const xcb_xkb_set_map_values_t *R
- ** @returns xcb_xkb_set_key_type_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_set_key_type_iterator_t
-xcb_xkb_set_map_values_types_iterator (const xcb_xkb_set_map_request_t *R /**< */,
- const xcb_xkb_set_map_values_t *S /**< */)
-{
- xcb_xkb_set_key_type_iterator_t i;
- i.data = /* values */ S->types;
- i.rem = R->nTypes;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_set_map_values_syms_length
- **
- ** @param const xcb_xkb_set_map_values_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_set_map_values_syms_length (const xcb_xkb_set_map_request_t *R /**< */,
- const xcb_xkb_set_map_values_t *S /**< */)
-{
- return R->nKeySyms;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_sym_map_iterator_t xcb_xkb_set_map_values_syms_iterator
- **
- ** @param const xcb_xkb_set_map_values_t *R
- ** @returns xcb_xkb_key_sym_map_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_key_sym_map_iterator_t
-xcb_xkb_set_map_values_syms_iterator (const xcb_xkb_set_map_request_t *R /**< */,
- const xcb_xkb_set_map_values_t *S /**< */)
-{
- xcb_xkb_key_sym_map_iterator_t i;
- i.data = /* values */ S->syms;
- i.rem = R->nKeySyms;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** uint8_t * xcb_xkb_set_map_values_actions_count
- **
- ** @param const xcb_xkb_set_map_values_t *S
- ** @returns uint8_t *
- **
- *****************************************************************************/
-
-uint8_t *
-xcb_xkb_set_map_values_actions_count (const xcb_xkb_set_map_values_t *S /**< */)
-{
- return /* values */ S->actionsCount;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_set_map_values_actions_count_length
- **
- ** @param const xcb_xkb_set_map_values_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_set_map_values_actions_count_length (const xcb_xkb_set_map_request_t *R /**< */,
- const xcb_xkb_set_map_values_t *S /**< */)
-{
- return R->nKeyActions;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_set_map_values_actions_count_end
- **
- ** @param const xcb_xkb_set_map_values_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_set_map_values_actions_count_end (const xcb_xkb_set_map_request_t *R /**< */,
- const xcb_xkb_set_map_values_t *S /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = /* values */ S->actionsCount + R->nKeyActions;
- i.rem = 0;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_action_t * xcb_xkb_set_map_values_actions
- **
- ** @param const xcb_xkb_set_map_values_t *S
- ** @returns xcb_xkb_action_t *
- **
- *****************************************************************************/
-
-xcb_xkb_action_t *
-xcb_xkb_set_map_values_actions (const xcb_xkb_set_map_values_t *S /**< */)
-{
- return /* values */ S->actions;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_set_map_values_actions_length
- **
- ** @param const xcb_xkb_set_map_values_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_set_map_values_actions_length (const xcb_xkb_set_map_request_t *R /**< */,
- const xcb_xkb_set_map_values_t *S /**< */)
-{
- return R->totalActions;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_action_iterator_t xcb_xkb_set_map_values_actions_iterator
- **
- ** @param const xcb_xkb_set_map_values_t *R
- ** @returns xcb_xkb_action_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_action_iterator_t
-xcb_xkb_set_map_values_actions_iterator (const xcb_xkb_set_map_request_t *R /**< */,
- const xcb_xkb_set_map_values_t *S /**< */)
-{
- xcb_xkb_action_iterator_t i;
- i.data = /* values */ S->actions;
- i.rem = R->totalActions;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_set_behavior_t * xcb_xkb_set_map_values_behaviors
- **
- ** @param const xcb_xkb_set_map_values_t *S
- ** @returns xcb_xkb_set_behavior_t *
- **
- *****************************************************************************/
-
-xcb_xkb_set_behavior_t *
-xcb_xkb_set_map_values_behaviors (const xcb_xkb_set_map_values_t *S /**< */)
-{
- return /* values */ S->behaviors;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_set_map_values_behaviors_length
- **
- ** @param const xcb_xkb_set_map_values_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_set_map_values_behaviors_length (const xcb_xkb_set_map_request_t *R /**< */,
- const xcb_xkb_set_map_values_t *S /**< */)
-{
- return R->totalKeyBehaviors;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_set_behavior_iterator_t xcb_xkb_set_map_values_behaviors_iterator
- **
- ** @param const xcb_xkb_set_map_values_t *R
- ** @returns xcb_xkb_set_behavior_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_set_behavior_iterator_t
-xcb_xkb_set_map_values_behaviors_iterator (const xcb_xkb_set_map_request_t *R /**< */,
- const xcb_xkb_set_map_values_t *S /**< */)
-{
- xcb_xkb_set_behavior_iterator_t i;
- i.data = /* values */ S->behaviors;
- i.rem = R->totalKeyBehaviors;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** uint8_t * xcb_xkb_set_map_values_vmods
- **
- ** @param const xcb_xkb_set_map_values_t *S
- ** @returns uint8_t *
- **
- *****************************************************************************/
-
-uint8_t *
-xcb_xkb_set_map_values_vmods (const xcb_xkb_set_map_values_t *S /**< */)
-{
- return /* values */ S->vmods;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_set_map_values_vmods_length
- **
- ** @param const xcb_xkb_set_map_values_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_set_map_values_vmods_length (const xcb_xkb_set_map_request_t *R /**< */,
- const xcb_xkb_set_map_values_t *S /**< */)
-{
- return xcb_popcount(R->virtualMods);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_set_map_values_vmods_end
- **
- ** @param const xcb_xkb_set_map_values_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_set_map_values_vmods_end (const xcb_xkb_set_map_request_t *R /**< */,
- const xcb_xkb_set_map_values_t *S /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = /* values */ S->vmods + xcb_popcount(R->virtualMods);
- i.rem = 0;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_set_explicit_t * xcb_xkb_set_map_values_explicit
- **
- ** @param const xcb_xkb_set_map_values_t *S
- ** @returns xcb_xkb_set_explicit_t *
- **
- *****************************************************************************/
-
-xcb_xkb_set_explicit_t *
-xcb_xkb_set_map_values_explicit (const xcb_xkb_set_map_values_t *S /**< */)
-{
- return /* values */ S->explicit;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_set_map_values_explicit_length
- **
- ** @param const xcb_xkb_set_map_values_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_set_map_values_explicit_length (const xcb_xkb_set_map_request_t *R /**< */,
- const xcb_xkb_set_map_values_t *S /**< */)
-{
- return R->totalKeyExplicit;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_set_explicit_iterator_t xcb_xkb_set_map_values_explicit_iterator
- **
- ** @param const xcb_xkb_set_map_values_t *R
- ** @returns xcb_xkb_set_explicit_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_set_explicit_iterator_t
-xcb_xkb_set_map_values_explicit_iterator (const xcb_xkb_set_map_request_t *R /**< */,
- const xcb_xkb_set_map_values_t *S /**< */)
-{
- xcb_xkb_set_explicit_iterator_t i;
- i.data = /* values */ S->explicit;
- i.rem = R->totalKeyExplicit;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_mod_map_t * xcb_xkb_set_map_values_modmap
- **
- ** @param const xcb_xkb_set_map_values_t *S
- ** @returns xcb_xkb_key_mod_map_t *
- **
- *****************************************************************************/
-
-xcb_xkb_key_mod_map_t *
-xcb_xkb_set_map_values_modmap (const xcb_xkb_set_map_values_t *S /**< */)
-{
- return /* values */ S->modmap;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_set_map_values_modmap_length
- **
- ** @param const xcb_xkb_set_map_values_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_set_map_values_modmap_length (const xcb_xkb_set_map_request_t *R /**< */,
- const xcb_xkb_set_map_values_t *S /**< */)
-{
- return R->totalModMapKeys;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_mod_map_iterator_t xcb_xkb_set_map_values_modmap_iterator
- **
- ** @param const xcb_xkb_set_map_values_t *R
- ** @returns xcb_xkb_key_mod_map_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_key_mod_map_iterator_t
-xcb_xkb_set_map_values_modmap_iterator (const xcb_xkb_set_map_request_t *R /**< */,
- const xcb_xkb_set_map_values_t *S /**< */)
-{
- xcb_xkb_key_mod_map_iterator_t i;
- i.data = /* values */ S->modmap;
- i.rem = R->totalModMapKeys;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_v_mod_map_t * xcb_xkb_set_map_values_vmodmap
- **
- ** @param const xcb_xkb_set_map_values_t *S
- ** @returns xcb_xkb_key_v_mod_map_t *
- **
- *****************************************************************************/
-
-xcb_xkb_key_v_mod_map_t *
-xcb_xkb_set_map_values_vmodmap (const xcb_xkb_set_map_values_t *S /**< */)
-{
- return /* values */ S->vmodmap;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_set_map_values_vmodmap_length
- **
- ** @param const xcb_xkb_set_map_values_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_set_map_values_vmodmap_length (const xcb_xkb_set_map_request_t *R /**< */,
- const xcb_xkb_set_map_values_t *S /**< */)
-{
- return R->totalVModMapKeys;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_v_mod_map_iterator_t xcb_xkb_set_map_values_vmodmap_iterator
- **
- ** @param const xcb_xkb_set_map_values_t *R
- ** @returns xcb_xkb_key_v_mod_map_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_key_v_mod_map_iterator_t
-xcb_xkb_set_map_values_vmodmap_iterator (const xcb_xkb_set_map_request_t *R /**< */,
- const xcb_xkb_set_map_values_t *S /**< */)
-{
- xcb_xkb_key_v_mod_map_iterator_t i;
- i.data = /* values */ S->vmodmap;
- i.rem = R->totalVModMapKeys;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-int
-xcb_xkb_set_map_values_serialize (void **_buffer /**< */,
- uint8_t nTypes /**< */,
- uint8_t nKeySyms /**< */,
- uint8_t nKeyActions /**< */,
- uint16_t totalActions /**< */,
- uint8_t totalKeyBehaviors /**< */,
- uint16_t virtualMods /**< */,
- uint8_t totalKeyExplicit /**< */,
- uint8_t totalModMapKeys /**< */,
- uint8_t totalVModMapKeys /**< */,
- uint16_t present /**< */,
- const xcb_xkb_set_map_values_t *_aux /**< */)
-{
- char *xcb_out = *_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_align_to = 0;
-
- unsigned int xcb_pad = 0;
- char xcb_pad0[3] = {0, 0, 0};
- struct iovec xcb_parts[19];
- unsigned int xcb_parts_idx = 0;
- unsigned int xcb_block_len = 0;
- unsigned int i;
- char *xcb_tmp;
-
- if(present & XCB_XKB_MAP_PART_KEY_TYPES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* types */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->types;
- xcb_parts[xcb_parts_idx].iov_len = 0;
- xcb_tmp = (char *) _aux->types;
- for(i=0; i<nTypes; i++) {
- xcb_block_len = xcb_xkb_set_key_type_sizeof(xcb_tmp);
- xcb_parts[xcb_parts_idx].iov_len += xcb_block_len;
- }
- xcb_block_len = xcb_parts[xcb_parts_idx].iov_len;
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_xkb_set_key_type_t);
- }
- if(present & XCB_XKB_MAP_PART_KEY_SYMS) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* syms */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->syms;
- xcb_parts[xcb_parts_idx].iov_len = 0;
- xcb_tmp = (char *) _aux->syms;
- for(i=0; i<nKeySyms; i++) {
- xcb_block_len = xcb_xkb_key_sym_map_sizeof(xcb_tmp);
- xcb_parts[xcb_parts_idx].iov_len += xcb_block_len;
- }
- xcb_block_len = xcb_parts[xcb_parts_idx].iov_len;
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_xkb_key_sym_map_t);
- }
- if(present & XCB_XKB_MAP_PART_KEY_ACTIONS) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* actionsCount */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->actionsCount;
- xcb_block_len += nKeyActions * sizeof(xcb_keycode_t);
- xcb_parts[xcb_parts_idx].iov_len = nKeyActions * sizeof(xcb_keycode_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* actions */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->actions;
- xcb_block_len += totalActions * sizeof(xcb_xkb_action_t);
- xcb_parts[xcb_parts_idx].iov_len = totalActions * sizeof(xcb_xkb_action_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_xkb_action_t);
- }
- if(present & XCB_XKB_MAP_PART_KEY_BEHAVIORS) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* behaviors */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->behaviors;
- xcb_block_len += totalKeyBehaviors * sizeof(xcb_xkb_set_behavior_t);
- xcb_parts[xcb_parts_idx].iov_len = totalKeyBehaviors * sizeof(xcb_xkb_set_behavior_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_xkb_set_behavior_t);
- }
- if(present & XCB_XKB_MAP_PART_VIRTUAL_MODS) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* vmods */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->vmods;
- xcb_block_len += xcb_popcount(virtualMods) * sizeof(xcb_keycode_t);
- xcb_parts[xcb_parts_idx].iov_len = xcb_popcount(virtualMods) * sizeof(xcb_keycode_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- }
- if(present & XCB_XKB_MAP_PART_EXPLICIT_COMPONENTS) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* explicit */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->explicit;
- xcb_block_len += totalKeyExplicit * sizeof(xcb_xkb_set_explicit_t);
- xcb_parts[xcb_parts_idx].iov_len = totalKeyExplicit * sizeof(xcb_xkb_set_explicit_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_xkb_set_explicit_t);
- }
- if(present & XCB_XKB_MAP_PART_MODIFIER_MAP) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* modmap */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->modmap;
- xcb_block_len += totalModMapKeys * sizeof(xcb_xkb_key_mod_map_t);
- xcb_parts[xcb_parts_idx].iov_len = totalModMapKeys * sizeof(xcb_xkb_key_mod_map_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_xkb_key_mod_map_t);
- }
- if(present & XCB_XKB_MAP_PART_VIRTUAL_MOD_MAP) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* vmodmap */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->vmodmap;
- xcb_block_len += totalVModMapKeys * sizeof(xcb_xkb_key_v_mod_map_t);
- xcb_parts[xcb_parts_idx].iov_len = totalVModMapKeys * sizeof(xcb_xkb_key_v_mod_map_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_xkb_key_v_mod_map_t);
- }
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- if (NULL == xcb_out) {
- /* allocate memory */
- xcb_out = malloc(xcb_buffer_len);
- *_buffer = xcb_out;
- }
-
- xcb_tmp = xcb_out;
- for(i=0; i<xcb_parts_idx; i++) {
- if (0 != xcb_parts[i].iov_base && 0 != xcb_parts[i].iov_len)
- memcpy(xcb_tmp, xcb_parts[i].iov_base, xcb_parts[i].iov_len);
- if (0 != xcb_parts[i].iov_len)
- xcb_tmp += xcb_parts[i].iov_len;
- }
-
- return xcb_buffer_len;
-}
-
-int
-xcb_xkb_set_map_values_unpack (const void *_buffer /**< */,
- uint8_t nTypes /**< */,
- uint8_t nKeySyms /**< */,
- uint8_t nKeyActions /**< */,
- uint16_t totalActions /**< */,
- uint8_t totalKeyBehaviors /**< */,
- uint16_t virtualMods /**< */,
- uint8_t totalKeyExplicit /**< */,
- uint8_t totalModMapKeys /**< */,
- uint8_t totalVModMapKeys /**< */,
- uint16_t present /**< */,
- xcb_xkb_set_map_values_t *_aux /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to = 0;
-
- unsigned int i;
- unsigned int xcb_tmp_len;
-
- if(present & XCB_XKB_MAP_PART_KEY_TYPES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* types */
- _aux->types = (xcb_xkb_set_key_type_t *)xcb_tmp;
- for(i=0; i<nTypes; i++) {
- xcb_tmp_len = xcb_xkb_set_key_type_sizeof(xcb_tmp);
- xcb_block_len += xcb_tmp_len;
- xcb_tmp += xcb_tmp_len;
- }
- xcb_align_to = ALIGNOF(xcb_xkb_set_key_type_t);
- }
- if(present & XCB_XKB_MAP_PART_KEY_SYMS) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* syms */
- _aux->syms = (xcb_xkb_key_sym_map_t *)xcb_tmp;
- for(i=0; i<nKeySyms; i++) {
- xcb_tmp_len = xcb_xkb_key_sym_map_sizeof(xcb_tmp);
- xcb_block_len += xcb_tmp_len;
- xcb_tmp += xcb_tmp_len;
- }
- xcb_align_to = ALIGNOF(xcb_xkb_key_sym_map_t);
- }
- if(present & XCB_XKB_MAP_PART_KEY_ACTIONS) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* actionsCount */
- _aux->actionsCount = (uint8_t *)xcb_tmp;
- xcb_block_len += nKeyActions * sizeof(xcb_keycode_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(uint8_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* actions */
- _aux->actions = (xcb_xkb_action_t *)xcb_tmp;
- xcb_block_len += totalActions * sizeof(xcb_xkb_action_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_xkb_action_t);
- }
- if(present & XCB_XKB_MAP_PART_KEY_BEHAVIORS) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* behaviors */
- _aux->behaviors = (xcb_xkb_set_behavior_t *)xcb_tmp;
- xcb_block_len += totalKeyBehaviors * sizeof(xcb_xkb_set_behavior_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_xkb_set_behavior_t);
- }
- if(present & XCB_XKB_MAP_PART_VIRTUAL_MODS) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* vmods */
- _aux->vmods = (uint8_t *)xcb_tmp;
- xcb_block_len += xcb_popcount(virtualMods) * sizeof(xcb_keycode_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(uint8_t);
- }
- if(present & XCB_XKB_MAP_PART_EXPLICIT_COMPONENTS) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* explicit */
- _aux->explicit = (xcb_xkb_set_explicit_t *)xcb_tmp;
- xcb_block_len += totalKeyExplicit * sizeof(xcb_xkb_set_explicit_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_xkb_set_explicit_t);
- }
- if(present & XCB_XKB_MAP_PART_MODIFIER_MAP) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* modmap */
- _aux->modmap = (xcb_xkb_key_mod_map_t *)xcb_tmp;
- xcb_block_len += totalModMapKeys * sizeof(xcb_xkb_key_mod_map_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_xkb_key_mod_map_t);
- }
- if(present & XCB_XKB_MAP_PART_VIRTUAL_MOD_MAP) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* vmodmap */
- _aux->vmodmap = (xcb_xkb_key_v_mod_map_t *)xcb_tmp;
- xcb_block_len += totalVModMapKeys * sizeof(xcb_xkb_key_v_mod_map_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_xkb_key_v_mod_map_t);
- }
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-int
-xcb_xkb_set_map_values_sizeof (const void *_buffer /**< */,
- uint8_t nTypes /**< */,
- uint8_t nKeySyms /**< */,
- uint8_t nKeyActions /**< */,
- uint16_t totalActions /**< */,
- uint8_t totalKeyBehaviors /**< */,
- uint16_t virtualMods /**< */,
- uint8_t totalKeyExplicit /**< */,
- uint8_t totalModMapKeys /**< */,
- uint8_t totalVModMapKeys /**< */,
- uint16_t present /**< */)
-{
- xcb_xkb_set_map_values_t _aux;
- return xcb_xkb_set_map_values_unpack(_buffer, nTypes, nKeySyms, nKeyActions, totalActions, totalKeyBehaviors, virtualMods, totalKeyExplicit, totalModMapKeys, totalVModMapKeys, present, &_aux);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_set_map_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint16_t present
- ** @param uint16_t flags
- ** @param xcb_keycode_t minKeyCode
- ** @param xcb_keycode_t maxKeyCode
- ** @param uint8_t firstType
- ** @param uint8_t nTypes
- ** @param xcb_keycode_t firstKeySym
- ** @param uint8_t nKeySyms
- ** @param uint16_t totalSyms
- ** @param xcb_keycode_t firstKeyAction
- ** @param uint8_t nKeyActions
- ** @param uint16_t totalActions
- ** @param xcb_keycode_t firstKeyBehavior
- ** @param uint8_t nKeyBehaviors
- ** @param uint8_t totalKeyBehaviors
- ** @param xcb_keycode_t firstKeyExplicit
- ** @param uint8_t nKeyExplicit
- ** @param uint8_t totalKeyExplicit
- ** @param xcb_keycode_t firstModMapKey
- ** @param uint8_t nModMapKeys
- ** @param uint8_t totalModMapKeys
- ** @param xcb_keycode_t firstVModMapKey
- ** @param uint8_t nVModMapKeys
- ** @param uint8_t totalVModMapKeys
- ** @param uint16_t virtualMods
- ** @param const void *values
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_set_map_checked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint16_t present /**< */,
- uint16_t flags /**< */,
- xcb_keycode_t minKeyCode /**< */,
- xcb_keycode_t maxKeyCode /**< */,
- uint8_t firstType /**< */,
- uint8_t nTypes /**< */,
- xcb_keycode_t firstKeySym /**< */,
- uint8_t nKeySyms /**< */,
- uint16_t totalSyms /**< */,
- xcb_keycode_t firstKeyAction /**< */,
- uint8_t nKeyActions /**< */,
- uint16_t totalActions /**< */,
- xcb_keycode_t firstKeyBehavior /**< */,
- uint8_t nKeyBehaviors /**< */,
- uint8_t totalKeyBehaviors /**< */,
- xcb_keycode_t firstKeyExplicit /**< */,
- uint8_t nKeyExplicit /**< */,
- uint8_t totalKeyExplicit /**< */,
- xcb_keycode_t firstModMapKey /**< */,
- uint8_t nModMapKeys /**< */,
- uint8_t totalModMapKeys /**< */,
- xcb_keycode_t firstVModMapKey /**< */,
- uint8_t nVModMapKeys /**< */,
- uint8_t totalVModMapKeys /**< */,
- uint16_t virtualMods /**< */,
- const void *values /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 3,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_SET_MAP,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[5];
- xcb_void_cookie_t xcb_ret;
- xcb_xkb_set_map_request_t xcb_out;
-
- xcb_out.deviceSpec = deviceSpec;
- xcb_out.present = present;
- xcb_out.flags = flags;
- xcb_out.minKeyCode = minKeyCode;
- xcb_out.maxKeyCode = maxKeyCode;
- xcb_out.firstType = firstType;
- xcb_out.nTypes = nTypes;
- xcb_out.firstKeySym = firstKeySym;
- xcb_out.nKeySyms = nKeySyms;
- xcb_out.totalSyms = totalSyms;
- xcb_out.firstKeyAction = firstKeyAction;
- xcb_out.nKeyActions = nKeyActions;
- xcb_out.totalActions = totalActions;
- xcb_out.firstKeyBehavior = firstKeyBehavior;
- xcb_out.nKeyBehaviors = nKeyBehaviors;
- xcb_out.totalKeyBehaviors = totalKeyBehaviors;
- xcb_out.firstKeyExplicit = firstKeyExplicit;
- xcb_out.nKeyExplicit = nKeyExplicit;
- xcb_out.totalKeyExplicit = totalKeyExplicit;
- xcb_out.firstModMapKey = firstModMapKey;
- xcb_out.nModMapKeys = nModMapKeys;
- xcb_out.totalModMapKeys = totalModMapKeys;
- xcb_out.firstVModMapKey = firstVModMapKey;
- xcb_out.nVModMapKeys = nVModMapKeys;
- xcb_out.totalVModMapKeys = totalVModMapKeys;
- xcb_out.virtualMods = virtualMods;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_xkb_set_map_values_t values */
- xcb_parts[4].iov_base = (char *) values;
- xcb_parts[4].iov_len =
- xcb_xkb_set_map_values_sizeof (values, nTypes, nKeySyms, nKeyActions, totalActions, totalKeyBehaviors, virtualMods, totalKeyExplicit, totalModMapKeys, totalVModMapKeys, present);
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_set_map
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint16_t present
- ** @param uint16_t flags
- ** @param xcb_keycode_t minKeyCode
- ** @param xcb_keycode_t maxKeyCode
- ** @param uint8_t firstType
- ** @param uint8_t nTypes
- ** @param xcb_keycode_t firstKeySym
- ** @param uint8_t nKeySyms
- ** @param uint16_t totalSyms
- ** @param xcb_keycode_t firstKeyAction
- ** @param uint8_t nKeyActions
- ** @param uint16_t totalActions
- ** @param xcb_keycode_t firstKeyBehavior
- ** @param uint8_t nKeyBehaviors
- ** @param uint8_t totalKeyBehaviors
- ** @param xcb_keycode_t firstKeyExplicit
- ** @param uint8_t nKeyExplicit
- ** @param uint8_t totalKeyExplicit
- ** @param xcb_keycode_t firstModMapKey
- ** @param uint8_t nModMapKeys
- ** @param uint8_t totalModMapKeys
- ** @param xcb_keycode_t firstVModMapKey
- ** @param uint8_t nVModMapKeys
- ** @param uint8_t totalVModMapKeys
- ** @param uint16_t virtualMods
- ** @param const void *values
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_set_map (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint16_t present /**< */,
- uint16_t flags /**< */,
- xcb_keycode_t minKeyCode /**< */,
- xcb_keycode_t maxKeyCode /**< */,
- uint8_t firstType /**< */,
- uint8_t nTypes /**< */,
- xcb_keycode_t firstKeySym /**< */,
- uint8_t nKeySyms /**< */,
- uint16_t totalSyms /**< */,
- xcb_keycode_t firstKeyAction /**< */,
- uint8_t nKeyActions /**< */,
- uint16_t totalActions /**< */,
- xcb_keycode_t firstKeyBehavior /**< */,
- uint8_t nKeyBehaviors /**< */,
- uint8_t totalKeyBehaviors /**< */,
- xcb_keycode_t firstKeyExplicit /**< */,
- uint8_t nKeyExplicit /**< */,
- uint8_t totalKeyExplicit /**< */,
- xcb_keycode_t firstModMapKey /**< */,
- uint8_t nModMapKeys /**< */,
- uint8_t totalModMapKeys /**< */,
- xcb_keycode_t firstVModMapKey /**< */,
- uint8_t nVModMapKeys /**< */,
- uint8_t totalVModMapKeys /**< */,
- uint16_t virtualMods /**< */,
- const void *values /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 3,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_SET_MAP,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[5];
- xcb_void_cookie_t xcb_ret;
- xcb_xkb_set_map_request_t xcb_out;
-
- xcb_out.deviceSpec = deviceSpec;
- xcb_out.present = present;
- xcb_out.flags = flags;
- xcb_out.minKeyCode = minKeyCode;
- xcb_out.maxKeyCode = maxKeyCode;
- xcb_out.firstType = firstType;
- xcb_out.nTypes = nTypes;
- xcb_out.firstKeySym = firstKeySym;
- xcb_out.nKeySyms = nKeySyms;
- xcb_out.totalSyms = totalSyms;
- xcb_out.firstKeyAction = firstKeyAction;
- xcb_out.nKeyActions = nKeyActions;
- xcb_out.totalActions = totalActions;
- xcb_out.firstKeyBehavior = firstKeyBehavior;
- xcb_out.nKeyBehaviors = nKeyBehaviors;
- xcb_out.totalKeyBehaviors = totalKeyBehaviors;
- xcb_out.firstKeyExplicit = firstKeyExplicit;
- xcb_out.nKeyExplicit = nKeyExplicit;
- xcb_out.totalKeyExplicit = totalKeyExplicit;
- xcb_out.firstModMapKey = firstModMapKey;
- xcb_out.nModMapKeys = nModMapKeys;
- xcb_out.totalModMapKeys = totalModMapKeys;
- xcb_out.firstVModMapKey = firstVModMapKey;
- xcb_out.nVModMapKeys = nVModMapKeys;
- xcb_out.totalVModMapKeys = totalVModMapKeys;
- xcb_out.virtualMods = virtualMods;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_xkb_set_map_values_t values */
- xcb_parts[4].iov_base = (char *) values;
- xcb_parts[4].iov_len =
- xcb_xkb_set_map_values_sizeof (values, nTypes, nKeySyms, nKeyActions, totalActions, totalKeyBehaviors, virtualMods, totalKeyExplicit, totalModMapKeys, totalVModMapKeys, present);
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_set_map_aux_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint16_t present
- ** @param uint16_t flags
- ** @param xcb_keycode_t minKeyCode
- ** @param xcb_keycode_t maxKeyCode
- ** @param uint8_t firstType
- ** @param uint8_t nTypes
- ** @param xcb_keycode_t firstKeySym
- ** @param uint8_t nKeySyms
- ** @param uint16_t totalSyms
- ** @param xcb_keycode_t firstKeyAction
- ** @param uint8_t nKeyActions
- ** @param uint16_t totalActions
- ** @param xcb_keycode_t firstKeyBehavior
- ** @param uint8_t nKeyBehaviors
- ** @param uint8_t totalKeyBehaviors
- ** @param xcb_keycode_t firstKeyExplicit
- ** @param uint8_t nKeyExplicit
- ** @param uint8_t totalKeyExplicit
- ** @param xcb_keycode_t firstModMapKey
- ** @param uint8_t nModMapKeys
- ** @param uint8_t totalModMapKeys
- ** @param xcb_keycode_t firstVModMapKey
- ** @param uint8_t nVModMapKeys
- ** @param uint8_t totalVModMapKeys
- ** @param uint16_t virtualMods
- ** @param const xcb_xkb_set_map_values_t *values
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_set_map_aux_checked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint16_t present /**< */,
- uint16_t flags /**< */,
- xcb_keycode_t minKeyCode /**< */,
- xcb_keycode_t maxKeyCode /**< */,
- uint8_t firstType /**< */,
- uint8_t nTypes /**< */,
- xcb_keycode_t firstKeySym /**< */,
- uint8_t nKeySyms /**< */,
- uint16_t totalSyms /**< */,
- xcb_keycode_t firstKeyAction /**< */,
- uint8_t nKeyActions /**< */,
- uint16_t totalActions /**< */,
- xcb_keycode_t firstKeyBehavior /**< */,
- uint8_t nKeyBehaviors /**< */,
- uint8_t totalKeyBehaviors /**< */,
- xcb_keycode_t firstKeyExplicit /**< */,
- uint8_t nKeyExplicit /**< */,
- uint8_t totalKeyExplicit /**< */,
- xcb_keycode_t firstModMapKey /**< */,
- uint8_t nModMapKeys /**< */,
- uint8_t totalModMapKeys /**< */,
- xcb_keycode_t firstVModMapKey /**< */,
- uint8_t nVModMapKeys /**< */,
- uint8_t totalVModMapKeys /**< */,
- uint16_t virtualMods /**< */,
- const xcb_xkb_set_map_values_t *values /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 3,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_SET_MAP,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[5];
- xcb_void_cookie_t xcb_ret;
- xcb_xkb_set_map_request_t xcb_out;
- void *xcb_aux0 = 0;
-
- xcb_out.deviceSpec = deviceSpec;
- xcb_out.present = present;
- xcb_out.flags = flags;
- xcb_out.minKeyCode = minKeyCode;
- xcb_out.maxKeyCode = maxKeyCode;
- xcb_out.firstType = firstType;
- xcb_out.nTypes = nTypes;
- xcb_out.firstKeySym = firstKeySym;
- xcb_out.nKeySyms = nKeySyms;
- xcb_out.totalSyms = totalSyms;
- xcb_out.firstKeyAction = firstKeyAction;
- xcb_out.nKeyActions = nKeyActions;
- xcb_out.totalActions = totalActions;
- xcb_out.firstKeyBehavior = firstKeyBehavior;
- xcb_out.nKeyBehaviors = nKeyBehaviors;
- xcb_out.totalKeyBehaviors = totalKeyBehaviors;
- xcb_out.firstKeyExplicit = firstKeyExplicit;
- xcb_out.nKeyExplicit = nKeyExplicit;
- xcb_out.totalKeyExplicit = totalKeyExplicit;
- xcb_out.firstModMapKey = firstModMapKey;
- xcb_out.nModMapKeys = nModMapKeys;
- xcb_out.totalModMapKeys = totalModMapKeys;
- xcb_out.firstVModMapKey = firstVModMapKey;
- xcb_out.nVModMapKeys = nVModMapKeys;
- xcb_out.totalVModMapKeys = totalVModMapKeys;
- xcb_out.virtualMods = virtualMods;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_xkb_set_map_values_t values */
- xcb_parts[4].iov_len =
- xcb_xkb_set_map_values_serialize (&xcb_aux0, nTypes, nKeySyms, nKeyActions, totalActions, totalKeyBehaviors, virtualMods, totalKeyExplicit, totalModMapKeys, totalVModMapKeys, present, values);
- xcb_parts[4].iov_base = xcb_aux0;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- free(xcb_aux0);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_set_map_aux
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint16_t present
- ** @param uint16_t flags
- ** @param xcb_keycode_t minKeyCode
- ** @param xcb_keycode_t maxKeyCode
- ** @param uint8_t firstType
- ** @param uint8_t nTypes
- ** @param xcb_keycode_t firstKeySym
- ** @param uint8_t nKeySyms
- ** @param uint16_t totalSyms
- ** @param xcb_keycode_t firstKeyAction
- ** @param uint8_t nKeyActions
- ** @param uint16_t totalActions
- ** @param xcb_keycode_t firstKeyBehavior
- ** @param uint8_t nKeyBehaviors
- ** @param uint8_t totalKeyBehaviors
- ** @param xcb_keycode_t firstKeyExplicit
- ** @param uint8_t nKeyExplicit
- ** @param uint8_t totalKeyExplicit
- ** @param xcb_keycode_t firstModMapKey
- ** @param uint8_t nModMapKeys
- ** @param uint8_t totalModMapKeys
- ** @param xcb_keycode_t firstVModMapKey
- ** @param uint8_t nVModMapKeys
- ** @param uint8_t totalVModMapKeys
- ** @param uint16_t virtualMods
- ** @param const xcb_xkb_set_map_values_t *values
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_set_map_aux (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint16_t present /**< */,
- uint16_t flags /**< */,
- xcb_keycode_t minKeyCode /**< */,
- xcb_keycode_t maxKeyCode /**< */,
- uint8_t firstType /**< */,
- uint8_t nTypes /**< */,
- xcb_keycode_t firstKeySym /**< */,
- uint8_t nKeySyms /**< */,
- uint16_t totalSyms /**< */,
- xcb_keycode_t firstKeyAction /**< */,
- uint8_t nKeyActions /**< */,
- uint16_t totalActions /**< */,
- xcb_keycode_t firstKeyBehavior /**< */,
- uint8_t nKeyBehaviors /**< */,
- uint8_t totalKeyBehaviors /**< */,
- xcb_keycode_t firstKeyExplicit /**< */,
- uint8_t nKeyExplicit /**< */,
- uint8_t totalKeyExplicit /**< */,
- xcb_keycode_t firstModMapKey /**< */,
- uint8_t nModMapKeys /**< */,
- uint8_t totalModMapKeys /**< */,
- xcb_keycode_t firstVModMapKey /**< */,
- uint8_t nVModMapKeys /**< */,
- uint8_t totalVModMapKeys /**< */,
- uint16_t virtualMods /**< */,
- const xcb_xkb_set_map_values_t *values /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 3,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_SET_MAP,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[5];
- xcb_void_cookie_t xcb_ret;
- xcb_xkb_set_map_request_t xcb_out;
- void *xcb_aux0 = 0;
-
- xcb_out.deviceSpec = deviceSpec;
- xcb_out.present = present;
- xcb_out.flags = flags;
- xcb_out.minKeyCode = minKeyCode;
- xcb_out.maxKeyCode = maxKeyCode;
- xcb_out.firstType = firstType;
- xcb_out.nTypes = nTypes;
- xcb_out.firstKeySym = firstKeySym;
- xcb_out.nKeySyms = nKeySyms;
- xcb_out.totalSyms = totalSyms;
- xcb_out.firstKeyAction = firstKeyAction;
- xcb_out.nKeyActions = nKeyActions;
- xcb_out.totalActions = totalActions;
- xcb_out.firstKeyBehavior = firstKeyBehavior;
- xcb_out.nKeyBehaviors = nKeyBehaviors;
- xcb_out.totalKeyBehaviors = totalKeyBehaviors;
- xcb_out.firstKeyExplicit = firstKeyExplicit;
- xcb_out.nKeyExplicit = nKeyExplicit;
- xcb_out.totalKeyExplicit = totalKeyExplicit;
- xcb_out.firstModMapKey = firstModMapKey;
- xcb_out.nModMapKeys = nModMapKeys;
- xcb_out.totalModMapKeys = totalModMapKeys;
- xcb_out.firstVModMapKey = firstVModMapKey;
- xcb_out.nVModMapKeys = nVModMapKeys;
- xcb_out.totalVModMapKeys = totalVModMapKeys;
- xcb_out.virtualMods = virtualMods;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_xkb_set_map_values_t values */
- xcb_parts[4].iov_len =
- xcb_xkb_set_map_values_serialize (&xcb_aux0, nTypes, nKeySyms, nKeyActions, totalActions, totalKeyBehaviors, virtualMods, totalKeyExplicit, totalModMapKeys, totalVModMapKeys, present, values);
- xcb_parts[4].iov_base = xcb_aux0;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- free(xcb_aux0);
- return xcb_ret;
-}
-
-int
-xcb_xkb_get_compat_map_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_xkb_get_compat_map_reply_t *_aux = (xcb_xkb_get_compat_map_reply_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to = 0;
-
-
- xcb_block_len += sizeof(xcb_xkb_get_compat_map_reply_t);
- xcb_tmp += xcb_block_len;
- xcb_buffer_len += xcb_block_len;
- xcb_block_len = 0;
- /* si_rtrn */
- xcb_block_len += _aux->nSIRtrn * sizeof(xcb_xkb_sym_interpret_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_xkb_sym_interpret_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* group_rtrn */
- xcb_block_len += xcb_popcount(_aux->groupsRtrn) * sizeof(xcb_xkb_mod_def_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_xkb_mod_def_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_compat_map_cookie_t xcb_xkb_get_compat_map
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint8_t groups
- ** @param uint8_t getAllSI
- ** @param uint16_t firstSI
- ** @param uint16_t nSI
- ** @returns xcb_xkb_get_compat_map_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_get_compat_map_cookie_t
-xcb_xkb_get_compat_map (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint8_t groups /**< */,
- uint8_t getAllSI /**< */,
- uint16_t firstSI /**< */,
- uint16_t nSI /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_GET_COMPAT_MAP,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_xkb_get_compat_map_cookie_t xcb_ret;
- xcb_xkb_get_compat_map_request_t xcb_out;
-
- xcb_out.deviceSpec = deviceSpec;
- xcb_out.groups = groups;
- xcb_out.getAllSI = getAllSI;
- xcb_out.firstSI = firstSI;
- xcb_out.nSI = nSI;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_compat_map_cookie_t xcb_xkb_get_compat_map_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint8_t groups
- ** @param uint8_t getAllSI
- ** @param uint16_t firstSI
- ** @param uint16_t nSI
- ** @returns xcb_xkb_get_compat_map_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_get_compat_map_cookie_t
-xcb_xkb_get_compat_map_unchecked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint8_t groups /**< */,
- uint8_t getAllSI /**< */,
- uint16_t firstSI /**< */,
- uint16_t nSI /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_GET_COMPAT_MAP,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_xkb_get_compat_map_cookie_t xcb_ret;
- xcb_xkb_get_compat_map_request_t xcb_out;
-
- xcb_out.deviceSpec = deviceSpec;
- xcb_out.groups = groups;
- xcb_out.getAllSI = getAllSI;
- xcb_out.firstSI = firstSI;
- xcb_out.nSI = nSI;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_sym_interpret_t * xcb_xkb_get_compat_map_si_rtrn
- **
- ** @param const xcb_xkb_get_compat_map_reply_t *R
- ** @returns xcb_xkb_sym_interpret_t *
- **
- *****************************************************************************/
-
-xcb_xkb_sym_interpret_t *
-xcb_xkb_get_compat_map_si_rtrn (const xcb_xkb_get_compat_map_reply_t *R /**< */)
-{
- return (xcb_xkb_sym_interpret_t *) (R + 1);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_compat_map_si_rtrn_length
- **
- ** @param const xcb_xkb_get_compat_map_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_compat_map_si_rtrn_length (const xcb_xkb_get_compat_map_reply_t *R /**< */)
-{
- return R->nSIRtrn;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_sym_interpret_iterator_t xcb_xkb_get_compat_map_si_rtrn_iterator
- **
- ** @param const xcb_xkb_get_compat_map_reply_t *R
- ** @returns xcb_xkb_sym_interpret_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_sym_interpret_iterator_t
-xcb_xkb_get_compat_map_si_rtrn_iterator (const xcb_xkb_get_compat_map_reply_t *R /**< */)
-{
- xcb_xkb_sym_interpret_iterator_t i;
- i.data = (xcb_xkb_sym_interpret_t *) (R + 1);
- i.rem = R->nSIRtrn;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_mod_def_t * xcb_xkb_get_compat_map_group_rtrn
- **
- ** @param const xcb_xkb_get_compat_map_reply_t *R
- ** @returns xcb_xkb_mod_def_t *
- **
- *****************************************************************************/
-
-xcb_xkb_mod_def_t *
-xcb_xkb_get_compat_map_group_rtrn (const xcb_xkb_get_compat_map_reply_t *R /**< */)
-{
- xcb_generic_iterator_t prev = xcb_xkb_sym_interpret_end(xcb_xkb_get_compat_map_si_rtrn_iterator(R));
- return (xcb_xkb_mod_def_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_xkb_mod_def_t, prev.index) + 0);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_compat_map_group_rtrn_length
- **
- ** @param const xcb_xkb_get_compat_map_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_compat_map_group_rtrn_length (const xcb_xkb_get_compat_map_reply_t *R /**< */)
-{
- return xcb_popcount(R->groupsRtrn);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_mod_def_iterator_t xcb_xkb_get_compat_map_group_rtrn_iterator
- **
- ** @param const xcb_xkb_get_compat_map_reply_t *R
- ** @returns xcb_xkb_mod_def_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_mod_def_iterator_t
-xcb_xkb_get_compat_map_group_rtrn_iterator (const xcb_xkb_get_compat_map_reply_t *R /**< */)
-{
- xcb_xkb_mod_def_iterator_t i;
- xcb_generic_iterator_t prev = xcb_xkb_sym_interpret_end(xcb_xkb_get_compat_map_si_rtrn_iterator(R));
- i.data = (xcb_xkb_mod_def_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_xkb_mod_def_t, prev.index));
- i.rem = xcb_popcount(R->groupsRtrn);
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_compat_map_reply_t * xcb_xkb_get_compat_map_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_get_compat_map_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xkb_get_compat_map_reply_t *
- **
- *****************************************************************************/
-
-xcb_xkb_get_compat_map_reply_t *
-xcb_xkb_get_compat_map_reply (xcb_connection_t *c /**< */,
- xcb_xkb_get_compat_map_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_xkb_get_compat_map_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-int
-xcb_xkb_set_compat_map_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_xkb_set_compat_map_request_t *_aux = (xcb_xkb_set_compat_map_request_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to = 0;
-
-
- xcb_block_len += sizeof(xcb_xkb_set_compat_map_request_t);
- xcb_tmp += xcb_block_len;
- xcb_buffer_len += xcb_block_len;
- xcb_block_len = 0;
- /* si */
- xcb_block_len += _aux->nSI * sizeof(xcb_xkb_sym_interpret_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_xkb_sym_interpret_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* groupMaps */
- xcb_block_len += xcb_popcount(_aux->groups) * sizeof(xcb_xkb_mod_def_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_xkb_mod_def_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_set_compat_map_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint8_t recomputeActions
- ** @param uint8_t truncateSI
- ** @param uint8_t groups
- ** @param uint16_t firstSI
- ** @param uint16_t nSI
- ** @param const xcb_xkb_sym_interpret_t *si
- ** @param const xcb_xkb_mod_def_t *groupMaps
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_set_compat_map_checked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint8_t recomputeActions /**< */,
- uint8_t truncateSI /**< */,
- uint8_t groups /**< */,
- uint16_t firstSI /**< */,
- uint16_t nSI /**< */,
- const xcb_xkb_sym_interpret_t *si /**< */,
- const xcb_xkb_mod_def_t *groupMaps /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 6,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_SET_COMPAT_MAP,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[8];
- xcb_void_cookie_t xcb_ret;
- xcb_xkb_set_compat_map_request_t xcb_out;
-
- xcb_out.deviceSpec = deviceSpec;
- xcb_out.pad0 = 0;
- xcb_out.recomputeActions = recomputeActions;
- xcb_out.truncateSI = truncateSI;
- xcb_out.groups = groups;
- xcb_out.firstSI = firstSI;
- xcb_out.nSI = nSI;
- memset(xcb_out.pad1, 0, 2);
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_xkb_sym_interpret_t si */
- xcb_parts[4].iov_base = (char *) si;
- xcb_parts[4].iov_len = nSI * sizeof(xcb_xkb_sym_interpret_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
- /* xcb_xkb_mod_def_t groupMaps */
- xcb_parts[6].iov_base = (char *) groupMaps;
- xcb_parts[6].iov_len = xcb_popcount(groups) * sizeof(xcb_xkb_mod_def_t);
- xcb_parts[7].iov_base = 0;
- xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_set_compat_map
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint8_t recomputeActions
- ** @param uint8_t truncateSI
- ** @param uint8_t groups
- ** @param uint16_t firstSI
- ** @param uint16_t nSI
- ** @param const xcb_xkb_sym_interpret_t *si
- ** @param const xcb_xkb_mod_def_t *groupMaps
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_set_compat_map (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint8_t recomputeActions /**< */,
- uint8_t truncateSI /**< */,
- uint8_t groups /**< */,
- uint16_t firstSI /**< */,
- uint16_t nSI /**< */,
- const xcb_xkb_sym_interpret_t *si /**< */,
- const xcb_xkb_mod_def_t *groupMaps /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 6,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_SET_COMPAT_MAP,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[8];
- xcb_void_cookie_t xcb_ret;
- xcb_xkb_set_compat_map_request_t xcb_out;
-
- xcb_out.deviceSpec = deviceSpec;
- xcb_out.pad0 = 0;
- xcb_out.recomputeActions = recomputeActions;
- xcb_out.truncateSI = truncateSI;
- xcb_out.groups = groups;
- xcb_out.firstSI = firstSI;
- xcb_out.nSI = nSI;
- memset(xcb_out.pad1, 0, 2);
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_xkb_sym_interpret_t si */
- xcb_parts[4].iov_base = (char *) si;
- xcb_parts[4].iov_len = nSI * sizeof(xcb_xkb_sym_interpret_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
- /* xcb_xkb_mod_def_t groupMaps */
- xcb_parts[6].iov_base = (char *) groupMaps;
- xcb_parts[6].iov_len = xcb_popcount(groups) * sizeof(xcb_xkb_mod_def_t);
- xcb_parts[7].iov_base = 0;
- xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_indicator_state_cookie_t xcb_xkb_get_indicator_state
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @returns xcb_xkb_get_indicator_state_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_get_indicator_state_cookie_t
-xcb_xkb_get_indicator_state (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_GET_INDICATOR_STATE,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_xkb_get_indicator_state_cookie_t xcb_ret;
- xcb_xkb_get_indicator_state_request_t xcb_out;
-
- xcb_out.deviceSpec = deviceSpec;
- memset(xcb_out.pad0, 0, 2);
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_indicator_state_cookie_t xcb_xkb_get_indicator_state_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @returns xcb_xkb_get_indicator_state_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_get_indicator_state_cookie_t
-xcb_xkb_get_indicator_state_unchecked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_GET_INDICATOR_STATE,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_xkb_get_indicator_state_cookie_t xcb_ret;
- xcb_xkb_get_indicator_state_request_t xcb_out;
-
- xcb_out.deviceSpec = deviceSpec;
- memset(xcb_out.pad0, 0, 2);
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_indicator_state_reply_t * xcb_xkb_get_indicator_state_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_get_indicator_state_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xkb_get_indicator_state_reply_t *
- **
- *****************************************************************************/
-
-xcb_xkb_get_indicator_state_reply_t *
-xcb_xkb_get_indicator_state_reply (xcb_connection_t *c /**< */,
- xcb_xkb_get_indicator_state_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_xkb_get_indicator_state_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-int
-xcb_xkb_get_indicator_map_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_xkb_get_indicator_map_reply_t *_aux = (xcb_xkb_get_indicator_map_reply_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to = 0;
-
-
- xcb_block_len += sizeof(xcb_xkb_get_indicator_map_reply_t);
- xcb_tmp += xcb_block_len;
- xcb_buffer_len += xcb_block_len;
- xcb_block_len = 0;
- /* maps */
- xcb_block_len += xcb_popcount(_aux->which) * sizeof(xcb_xkb_indicator_map_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_xkb_indicator_map_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_indicator_map_cookie_t xcb_xkb_get_indicator_map
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint32_t which
- ** @returns xcb_xkb_get_indicator_map_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_get_indicator_map_cookie_t
-xcb_xkb_get_indicator_map (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint32_t which /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_GET_INDICATOR_MAP,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_xkb_get_indicator_map_cookie_t xcb_ret;
- xcb_xkb_get_indicator_map_request_t xcb_out;
-
- xcb_out.deviceSpec = deviceSpec;
- memset(xcb_out.pad0, 0, 2);
- xcb_out.which = which;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_indicator_map_cookie_t xcb_xkb_get_indicator_map_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint32_t which
- ** @returns xcb_xkb_get_indicator_map_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_get_indicator_map_cookie_t
-xcb_xkb_get_indicator_map_unchecked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint32_t which /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_GET_INDICATOR_MAP,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_xkb_get_indicator_map_cookie_t xcb_ret;
- xcb_xkb_get_indicator_map_request_t xcb_out;
-
- xcb_out.deviceSpec = deviceSpec;
- memset(xcb_out.pad0, 0, 2);
- xcb_out.which = which;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_indicator_map_t * xcb_xkb_get_indicator_map_maps
- **
- ** @param const xcb_xkb_get_indicator_map_reply_t *R
- ** @returns xcb_xkb_indicator_map_t *
- **
- *****************************************************************************/
-
-xcb_xkb_indicator_map_t *
-xcb_xkb_get_indicator_map_maps (const xcb_xkb_get_indicator_map_reply_t *R /**< */)
-{
- return (xcb_xkb_indicator_map_t *) (R + 1);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_indicator_map_maps_length
- **
- ** @param const xcb_xkb_get_indicator_map_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_indicator_map_maps_length (const xcb_xkb_get_indicator_map_reply_t *R /**< */)
-{
- return xcb_popcount(R->which);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_indicator_map_iterator_t xcb_xkb_get_indicator_map_maps_iterator
- **
- ** @param const xcb_xkb_get_indicator_map_reply_t *R
- ** @returns xcb_xkb_indicator_map_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_indicator_map_iterator_t
-xcb_xkb_get_indicator_map_maps_iterator (const xcb_xkb_get_indicator_map_reply_t *R /**< */)
-{
- xcb_xkb_indicator_map_iterator_t i;
- i.data = (xcb_xkb_indicator_map_t *) (R + 1);
- i.rem = xcb_popcount(R->which);
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_indicator_map_reply_t * xcb_xkb_get_indicator_map_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_get_indicator_map_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xkb_get_indicator_map_reply_t *
- **
- *****************************************************************************/
-
-xcb_xkb_get_indicator_map_reply_t *
-xcb_xkb_get_indicator_map_reply (xcb_connection_t *c /**< */,
- xcb_xkb_get_indicator_map_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_xkb_get_indicator_map_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-int
-xcb_xkb_set_indicator_map_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_xkb_set_indicator_map_request_t *_aux = (xcb_xkb_set_indicator_map_request_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to = 0;
-
-
- xcb_block_len += sizeof(xcb_xkb_set_indicator_map_request_t);
- xcb_tmp += xcb_block_len;
- xcb_buffer_len += xcb_block_len;
- xcb_block_len = 0;
- /* maps */
- xcb_block_len += xcb_popcount(_aux->which) * sizeof(xcb_xkb_indicator_map_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_xkb_indicator_map_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_set_indicator_map_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint32_t which
- ** @param const xcb_xkb_indicator_map_t *maps
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_set_indicator_map_checked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint32_t which /**< */,
- const xcb_xkb_indicator_map_t *maps /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_SET_INDICATOR_MAP,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_xkb_set_indicator_map_request_t xcb_out;
-
- xcb_out.deviceSpec = deviceSpec;
- memset(xcb_out.pad0, 0, 2);
- xcb_out.which = which;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_xkb_indicator_map_t maps */
- xcb_parts[4].iov_base = (char *) maps;
- xcb_parts[4].iov_len = xcb_popcount(which) * sizeof(xcb_xkb_indicator_map_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_set_indicator_map
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint32_t which
- ** @param const xcb_xkb_indicator_map_t *maps
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_set_indicator_map (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint32_t which /**< */,
- const xcb_xkb_indicator_map_t *maps /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_SET_INDICATOR_MAP,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[6];
- xcb_void_cookie_t xcb_ret;
- xcb_xkb_set_indicator_map_request_t xcb_out;
-
- xcb_out.deviceSpec = deviceSpec;
- memset(xcb_out.pad0, 0, 2);
- xcb_out.which = which;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_xkb_indicator_map_t maps */
- xcb_parts[4].iov_base = (char *) maps;
- xcb_parts[4].iov_len = xcb_popcount(which) * sizeof(xcb_xkb_indicator_map_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_named_indicator_cookie_t xcb_xkb_get_named_indicator
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param xcb_xkb_led_class_spec_t ledClass
- ** @param xcb_xkb_id_spec_t ledID
- ** @param xcb_atom_t indicator
- ** @returns xcb_xkb_get_named_indicator_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_get_named_indicator_cookie_t
-xcb_xkb_get_named_indicator (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- xcb_xkb_led_class_spec_t ledClass /**< */,
- xcb_xkb_id_spec_t ledID /**< */,
- xcb_atom_t indicator /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_GET_NAMED_INDICATOR,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_xkb_get_named_indicator_cookie_t xcb_ret;
- xcb_xkb_get_named_indicator_request_t xcb_out;
-
- xcb_out.deviceSpec = deviceSpec;
- xcb_out.ledClass = ledClass;
- xcb_out.ledID = ledID;
- memset(xcb_out.pad0, 0, 2);
- xcb_out.indicator = indicator;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_named_indicator_cookie_t xcb_xkb_get_named_indicator_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param xcb_xkb_led_class_spec_t ledClass
- ** @param xcb_xkb_id_spec_t ledID
- ** @param xcb_atom_t indicator
- ** @returns xcb_xkb_get_named_indicator_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_get_named_indicator_cookie_t
-xcb_xkb_get_named_indicator_unchecked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- xcb_xkb_led_class_spec_t ledClass /**< */,
- xcb_xkb_id_spec_t ledID /**< */,
- xcb_atom_t indicator /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_GET_NAMED_INDICATOR,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_xkb_get_named_indicator_cookie_t xcb_ret;
- xcb_xkb_get_named_indicator_request_t xcb_out;
-
- xcb_out.deviceSpec = deviceSpec;
- xcb_out.ledClass = ledClass;
- xcb_out.ledID = ledID;
- memset(xcb_out.pad0, 0, 2);
- xcb_out.indicator = indicator;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_named_indicator_reply_t * xcb_xkb_get_named_indicator_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_get_named_indicator_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xkb_get_named_indicator_reply_t *
- **
- *****************************************************************************/
-
-xcb_xkb_get_named_indicator_reply_t *
-xcb_xkb_get_named_indicator_reply (xcb_connection_t *c /**< */,
- xcb_xkb_get_named_indicator_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_xkb_get_named_indicator_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_set_named_indicator_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param xcb_xkb_led_class_spec_t ledClass
- ** @param xcb_xkb_id_spec_t ledID
- ** @param xcb_atom_t indicator
- ** @param uint8_t setState
- ** @param uint8_t on
- ** @param uint8_t setMap
- ** @param uint8_t createMap
- ** @param uint8_t map_flags
- ** @param uint8_t map_whichGroups
- ** @param uint8_t map_groups
- ** @param uint8_t map_whichMods
- ** @param uint8_t map_realMods
- ** @param uint16_t map_vmods
- ** @param uint32_t map_ctrls
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_set_named_indicator_checked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- xcb_xkb_led_class_spec_t ledClass /**< */,
- xcb_xkb_id_spec_t ledID /**< */,
- xcb_atom_t indicator /**< */,
- uint8_t setState /**< */,
- uint8_t on /**< */,
- uint8_t setMap /**< */,
- uint8_t createMap /**< */,
- uint8_t map_flags /**< */,
- uint8_t map_whichGroups /**< */,
- uint8_t map_groups /**< */,
- uint8_t map_whichMods /**< */,
- uint8_t map_realMods /**< */,
- uint16_t map_vmods /**< */,
- uint32_t map_ctrls /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_SET_NAMED_INDICATOR,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xkb_set_named_indicator_request_t xcb_out;
-
- xcb_out.deviceSpec = deviceSpec;
- xcb_out.ledClass = ledClass;
- xcb_out.ledID = ledID;
- memset(xcb_out.pad0, 0, 2);
- xcb_out.indicator = indicator;
- xcb_out.setState = setState;
- xcb_out.on = on;
- xcb_out.setMap = setMap;
- xcb_out.createMap = createMap;
- xcb_out.pad1 = 0;
- xcb_out.map_flags = map_flags;
- xcb_out.map_whichGroups = map_whichGroups;
- xcb_out.map_groups = map_groups;
- xcb_out.map_whichMods = map_whichMods;
- xcb_out.map_realMods = map_realMods;
- xcb_out.map_vmods = map_vmods;
- xcb_out.map_ctrls = map_ctrls;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_set_named_indicator
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param xcb_xkb_led_class_spec_t ledClass
- ** @param xcb_xkb_id_spec_t ledID
- ** @param xcb_atom_t indicator
- ** @param uint8_t setState
- ** @param uint8_t on
- ** @param uint8_t setMap
- ** @param uint8_t createMap
- ** @param uint8_t map_flags
- ** @param uint8_t map_whichGroups
- ** @param uint8_t map_groups
- ** @param uint8_t map_whichMods
- ** @param uint8_t map_realMods
- ** @param uint16_t map_vmods
- ** @param uint32_t map_ctrls
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_set_named_indicator (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- xcb_xkb_led_class_spec_t ledClass /**< */,
- xcb_xkb_id_spec_t ledID /**< */,
- xcb_atom_t indicator /**< */,
- uint8_t setState /**< */,
- uint8_t on /**< */,
- uint8_t setMap /**< */,
- uint8_t createMap /**< */,
- uint8_t map_flags /**< */,
- uint8_t map_whichGroups /**< */,
- uint8_t map_groups /**< */,
- uint8_t map_whichMods /**< */,
- uint8_t map_realMods /**< */,
- uint16_t map_vmods /**< */,
- uint32_t map_ctrls /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_SET_NAMED_INDICATOR,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[4];
- xcb_void_cookie_t xcb_ret;
- xcb_xkb_set_named_indicator_request_t xcb_out;
-
- xcb_out.deviceSpec = deviceSpec;
- xcb_out.ledClass = ledClass;
- xcb_out.ledID = ledID;
- memset(xcb_out.pad0, 0, 2);
- xcb_out.indicator = indicator;
- xcb_out.setState = setState;
- xcb_out.on = on;
- xcb_out.setMap = setMap;
- xcb_out.createMap = createMap;
- xcb_out.pad1 = 0;
- xcb_out.map_flags = map_flags;
- xcb_out.map_whichGroups = map_whichGroups;
- xcb_out.map_groups = map_groups;
- xcb_out.map_whichMods = map_whichMods;
- xcb_out.map_realMods = map_realMods;
- xcb_out.map_vmods = map_vmods;
- xcb_out.map_ctrls = map_ctrls;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_atom_t * xcb_xkb_get_names_value_list_type_names
- **
- ** @param const xcb_xkb_get_names_value_list_t *S
- ** @returns xcb_atom_t *
- **
- *****************************************************************************/
-
-xcb_atom_t *
-xcb_xkb_get_names_value_list_type_names (const xcb_xkb_get_names_value_list_t *S /**< */)
-{
- return /* valueList */ S->typeNames;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_names_value_list_type_names_length
- **
- ** @param const xcb_xkb_get_names_value_list_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_names_value_list_type_names_length (const xcb_xkb_get_names_reply_t *R /**< */,
- const xcb_xkb_get_names_value_list_t *S /**< */)
-{
- return R->nTypes;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_get_names_value_list_type_names_end
- **
- ** @param const xcb_xkb_get_names_value_list_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_get_names_value_list_type_names_end (const xcb_xkb_get_names_reply_t *R /**< */,
- const xcb_xkb_get_names_value_list_t *S /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = /* valueList */ S->typeNames + R->nTypes;
- i.rem = 0;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** uint8_t * xcb_xkb_get_names_value_list_n_levels_per_type
- **
- ** @param const xcb_xkb_get_names_value_list_t *S
- ** @returns uint8_t *
- **
- *****************************************************************************/
-
-uint8_t *
-xcb_xkb_get_names_value_list_n_levels_per_type (const xcb_xkb_get_names_value_list_t *S /**< */)
-{
- return /* valueList */ S->nLevelsPerType;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_names_value_list_n_levels_per_type_length
- **
- ** @param const xcb_xkb_get_names_value_list_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_names_value_list_n_levels_per_type_length (const xcb_xkb_get_names_reply_t *R /**< */,
- const xcb_xkb_get_names_value_list_t *S /**< */)
-{
- return R->nTypes;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_get_names_value_list_n_levels_per_type_end
- **
- ** @param const xcb_xkb_get_names_value_list_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_get_names_value_list_n_levels_per_type_end (const xcb_xkb_get_names_reply_t *R /**< */,
- const xcb_xkb_get_names_value_list_t *S /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = /* valueList */ S->nLevelsPerType + R->nTypes;
- i.rem = 0;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** uint8_t * xcb_xkb_get_names_value_list_alignment_pad
- **
- ** @param const xcb_xkb_get_names_value_list_t *S
- ** @returns uint8_t *
- **
- *****************************************************************************/
-
-uint8_t *
-xcb_xkb_get_names_value_list_alignment_pad (const xcb_xkb_get_names_value_list_t *S /**< */)
-{
- return /* valueList */ S->alignment_pad;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_names_value_list_alignment_pad_length
- **
- ** @param const xcb_xkb_get_names_value_list_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_names_value_list_alignment_pad_length (const xcb_xkb_get_names_reply_t *R /**< */,
- const xcb_xkb_get_names_value_list_t *S /**< */)
-{
- return (((R->nTypes + 3) & (~3)) - R->nTypes);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_get_names_value_list_alignment_pad_end
- **
- ** @param const xcb_xkb_get_names_value_list_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_get_names_value_list_alignment_pad_end (const xcb_xkb_get_names_reply_t *R /**< */,
- const xcb_xkb_get_names_value_list_t *S /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = /* valueList */ S->alignment_pad + (((R->nTypes + 3) & (~3)) - R->nTypes);
- i.rem = 0;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_atom_t * xcb_xkb_get_names_value_list_kt_level_names
- **
- ** @param const xcb_xkb_get_names_value_list_t *S
- ** @returns xcb_atom_t *
- **
- *****************************************************************************/
-
-xcb_atom_t *
-xcb_xkb_get_names_value_list_kt_level_names (const xcb_xkb_get_names_value_list_t *S /**< */)
-{
- return /* valueList */ S->ktLevelNames;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_names_value_list_kt_level_names_length
- **
- ** @param const xcb_xkb_get_names_value_list_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_names_value_list_kt_level_names_length (const xcb_xkb_get_names_reply_t *R /**< */,
- const xcb_xkb_get_names_value_list_t *S /**< */)
-{
- return xcb_sumof(/* valueList */ S->nLevelsPerType, R->nTypes);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_get_names_value_list_kt_level_names_end
- **
- ** @param const xcb_xkb_get_names_value_list_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_get_names_value_list_kt_level_names_end (const xcb_xkb_get_names_reply_t *R /**< */,
- const xcb_xkb_get_names_value_list_t *S /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = /* valueList */ S->ktLevelNames + xcb_sumof(/* valueList */ S->nLevelsPerType, R->nTypes);
- i.rem = 0;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_atom_t * xcb_xkb_get_names_value_list_indicator_names
- **
- ** @param const xcb_xkb_get_names_value_list_t *S
- ** @returns xcb_atom_t *
- **
- *****************************************************************************/
-
-xcb_atom_t *
-xcb_xkb_get_names_value_list_indicator_names (const xcb_xkb_get_names_value_list_t *S /**< */)
-{
- return /* valueList */ S->indicatorNames;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_names_value_list_indicator_names_length
- **
- ** @param const xcb_xkb_get_names_value_list_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_names_value_list_indicator_names_length (const xcb_xkb_get_names_reply_t *R /**< */,
- const xcb_xkb_get_names_value_list_t *S /**< */)
-{
- return xcb_popcount(R->indicators);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_get_names_value_list_indicator_names_end
- **
- ** @param const xcb_xkb_get_names_value_list_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_get_names_value_list_indicator_names_end (const xcb_xkb_get_names_reply_t *R /**< */,
- const xcb_xkb_get_names_value_list_t *S /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = /* valueList */ S->indicatorNames + xcb_popcount(R->indicators);
- i.rem = 0;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_atom_t * xcb_xkb_get_names_value_list_virtual_mod_names
- **
- ** @param const xcb_xkb_get_names_value_list_t *S
- ** @returns xcb_atom_t *
- **
- *****************************************************************************/
-
-xcb_atom_t *
-xcb_xkb_get_names_value_list_virtual_mod_names (const xcb_xkb_get_names_value_list_t *S /**< */)
-{
- return /* valueList */ S->virtualModNames;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_names_value_list_virtual_mod_names_length
- **
- ** @param const xcb_xkb_get_names_value_list_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_names_value_list_virtual_mod_names_length (const xcb_xkb_get_names_reply_t *R /**< */,
- const xcb_xkb_get_names_value_list_t *S /**< */)
-{
- return xcb_popcount(R->virtualMods);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_get_names_value_list_virtual_mod_names_end
- **
- ** @param const xcb_xkb_get_names_value_list_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_get_names_value_list_virtual_mod_names_end (const xcb_xkb_get_names_reply_t *R /**< */,
- const xcb_xkb_get_names_value_list_t *S /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = /* valueList */ S->virtualModNames + xcb_popcount(R->virtualMods);
- i.rem = 0;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_atom_t * xcb_xkb_get_names_value_list_groups
- **
- ** @param const xcb_xkb_get_names_value_list_t *S
- ** @returns xcb_atom_t *
- **
- *****************************************************************************/
-
-xcb_atom_t *
-xcb_xkb_get_names_value_list_groups (const xcb_xkb_get_names_value_list_t *S /**< */)
-{
- return /* valueList */ S->groups;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_names_value_list_groups_length
- **
- ** @param const xcb_xkb_get_names_value_list_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_names_value_list_groups_length (const xcb_xkb_get_names_reply_t *R /**< */,
- const xcb_xkb_get_names_value_list_t *S /**< */)
-{
- return xcb_popcount(R->groupNames);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_get_names_value_list_groups_end
- **
- ** @param const xcb_xkb_get_names_value_list_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_get_names_value_list_groups_end (const xcb_xkb_get_names_reply_t *R /**< */,
- const xcb_xkb_get_names_value_list_t *S /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = /* valueList */ S->groups + xcb_popcount(R->groupNames);
- i.rem = 0;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_name_t * xcb_xkb_get_names_value_list_key_names
- **
- ** @param const xcb_xkb_get_names_value_list_t *S
- ** @returns xcb_xkb_key_name_t *
- **
- *****************************************************************************/
-
-xcb_xkb_key_name_t *
-xcb_xkb_get_names_value_list_key_names (const xcb_xkb_get_names_value_list_t *S /**< */)
-{
- return /* valueList */ S->keyNames;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_names_value_list_key_names_length
- **
- ** @param const xcb_xkb_get_names_value_list_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_names_value_list_key_names_length (const xcb_xkb_get_names_reply_t *R /**< */,
- const xcb_xkb_get_names_value_list_t *S /**< */)
-{
- return R->nKeys;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_name_iterator_t xcb_xkb_get_names_value_list_key_names_iterator
- **
- ** @param const xcb_xkb_get_names_value_list_t *R
- ** @returns xcb_xkb_key_name_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_key_name_iterator_t
-xcb_xkb_get_names_value_list_key_names_iterator (const xcb_xkb_get_names_reply_t *R /**< */,
- const xcb_xkb_get_names_value_list_t *S /**< */)
-{
- xcb_xkb_key_name_iterator_t i;
- i.data = /* valueList */ S->keyNames;
- i.rem = R->nKeys;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_alias_t * xcb_xkb_get_names_value_list_key_aliases
- **
- ** @param const xcb_xkb_get_names_value_list_t *S
- ** @returns xcb_xkb_key_alias_t *
- **
- *****************************************************************************/
-
-xcb_xkb_key_alias_t *
-xcb_xkb_get_names_value_list_key_aliases (const xcb_xkb_get_names_value_list_t *S /**< */)
-{
- return /* valueList */ S->keyAliases;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_names_value_list_key_aliases_length
- **
- ** @param const xcb_xkb_get_names_value_list_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_names_value_list_key_aliases_length (const xcb_xkb_get_names_reply_t *R /**< */,
- const xcb_xkb_get_names_value_list_t *S /**< */)
-{
- return R->nKeyAliases;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_alias_iterator_t xcb_xkb_get_names_value_list_key_aliases_iterator
- **
- ** @param const xcb_xkb_get_names_value_list_t *R
- ** @returns xcb_xkb_key_alias_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_key_alias_iterator_t
-xcb_xkb_get_names_value_list_key_aliases_iterator (const xcb_xkb_get_names_reply_t *R /**< */,
- const xcb_xkb_get_names_value_list_t *S /**< */)
-{
- xcb_xkb_key_alias_iterator_t i;
- i.data = /* valueList */ S->keyAliases;
- i.rem = R->nKeyAliases;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_atom_t * xcb_xkb_get_names_value_list_radio_group_names
- **
- ** @param const xcb_xkb_get_names_value_list_t *S
- ** @returns xcb_atom_t *
- **
- *****************************************************************************/
-
-xcb_atom_t *
-xcb_xkb_get_names_value_list_radio_group_names (const xcb_xkb_get_names_value_list_t *S /**< */)
-{
- return /* valueList */ S->radioGroupNames;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_names_value_list_radio_group_names_length
- **
- ** @param const xcb_xkb_get_names_value_list_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_names_value_list_radio_group_names_length (const xcb_xkb_get_names_reply_t *R /**< */,
- const xcb_xkb_get_names_value_list_t *S /**< */)
-{
- return R->nRadioGroups;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_get_names_value_list_radio_group_names_end
- **
- ** @param const xcb_xkb_get_names_value_list_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_get_names_value_list_radio_group_names_end (const xcb_xkb_get_names_reply_t *R /**< */,
- const xcb_xkb_get_names_value_list_t *S /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = /* valueList */ S->radioGroupNames + R->nRadioGroups;
- i.rem = 0;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-int
-xcb_xkb_get_names_value_list_serialize (void **_buffer /**< */,
- uint8_t nTypes /**< */,
- uint32_t indicators /**< */,
- uint16_t virtualMods /**< */,
- uint8_t groupNames /**< */,
- uint8_t nKeys /**< */,
- uint8_t nKeyAliases /**< */,
- uint8_t nRadioGroups /**< */,
- uint32_t which /**< */,
- const xcb_xkb_get_names_value_list_t *_aux /**< */)
-{
- char *xcb_out = *_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_align_to = 0;
-
- unsigned int xcb_pad = 0;
- char xcb_pad0[3] = {0, 0, 0};
- struct iovec xcb_parts[27];
- unsigned int xcb_parts_idx = 0;
- unsigned int xcb_block_len = 0;
- unsigned int i;
- char *xcb_tmp;
-
- if(which & XCB_XKB_NAME_DETAIL_KEYCODES) {
- /* xcb_xkb_get_names_value_list_t.keycodesName */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->keycodesName;
- xcb_block_len += sizeof(xcb_atom_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_atom_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_GEOMETRY) {
- /* xcb_xkb_get_names_value_list_t.geometryName */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->geometryName;
- xcb_block_len += sizeof(xcb_atom_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_atom_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_SYMBOLS) {
- /* xcb_xkb_get_names_value_list_t.symbolsName */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->symbolsName;
- xcb_block_len += sizeof(xcb_atom_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_atom_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_PHYS_SYMBOLS) {
- /* xcb_xkb_get_names_value_list_t.physSymbolsName */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->physSymbolsName;
- xcb_block_len += sizeof(xcb_atom_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_atom_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_TYPES) {
- /* xcb_xkb_get_names_value_list_t.typesName */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->typesName;
- xcb_block_len += sizeof(xcb_atom_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_atom_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_COMPAT) {
- /* xcb_xkb_get_names_value_list_t.compatName */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->compatName;
- xcb_block_len += sizeof(xcb_atom_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_atom_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_KEY_TYPE_NAMES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* typeNames */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->typeNames;
- xcb_block_len += nTypes * sizeof(xcb_atom_t);
- xcb_parts[xcb_parts_idx].iov_len = nTypes * sizeof(xcb_atom_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_KT_LEVEL_NAMES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* nLevelsPerType */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->nLevelsPerType;
- xcb_block_len += nTypes * sizeof(uint8_t);
- xcb_parts[xcb_parts_idx].iov_len = nTypes * sizeof(uint8_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* alignment_pad */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->alignment_pad;
- xcb_block_len += (((nTypes + 3) & (~3)) - nTypes) * sizeof(uint8_t);
- xcb_parts[xcb_parts_idx].iov_len = (((nTypes + 3) & (~3)) - nTypes) * sizeof(uint8_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* ktLevelNames */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->ktLevelNames;
- xcb_block_len += xcb_sumof(_aux->nLevelsPerType, nTypes) * sizeof(xcb_atom_t);
- xcb_parts[xcb_parts_idx].iov_len = xcb_sumof(_aux->nLevelsPerType, nTypes) * sizeof(xcb_atom_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_INDICATOR_NAMES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* indicatorNames */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->indicatorNames;
- xcb_block_len += xcb_popcount(indicators) * sizeof(xcb_atom_t);
- xcb_parts[xcb_parts_idx].iov_len = xcb_popcount(indicators) * sizeof(xcb_atom_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_VIRTUAL_MOD_NAMES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* virtualModNames */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->virtualModNames;
- xcb_block_len += xcb_popcount(virtualMods) * sizeof(xcb_atom_t);
- xcb_parts[xcb_parts_idx].iov_len = xcb_popcount(virtualMods) * sizeof(xcb_atom_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_GROUP_NAMES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* groups */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->groups;
- xcb_block_len += xcb_popcount(groupNames) * sizeof(xcb_atom_t);
- xcb_parts[xcb_parts_idx].iov_len = xcb_popcount(groupNames) * sizeof(xcb_atom_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_KEY_NAMES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* keyNames */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->keyNames;
- xcb_block_len += nKeys * sizeof(xcb_xkb_key_name_t);
- xcb_parts[xcb_parts_idx].iov_len = nKeys * sizeof(xcb_xkb_key_name_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_xkb_key_name_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_KEY_ALIASES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* keyAliases */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->keyAliases;
- xcb_block_len += nKeyAliases * sizeof(xcb_xkb_key_alias_t);
- xcb_parts[xcb_parts_idx].iov_len = nKeyAliases * sizeof(xcb_xkb_key_alias_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_xkb_key_alias_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_RG_NAMES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* radioGroupNames */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->radioGroupNames;
- xcb_block_len += nRadioGroups * sizeof(xcb_atom_t);
- xcb_parts[xcb_parts_idx].iov_len = nRadioGroups * sizeof(xcb_atom_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- if (NULL == xcb_out) {
- /* allocate memory */
- xcb_out = malloc(xcb_buffer_len);
- *_buffer = xcb_out;
- }
-
- xcb_tmp = xcb_out;
- for(i=0; i<xcb_parts_idx; i++) {
- if (0 != xcb_parts[i].iov_base && 0 != xcb_parts[i].iov_len)
- memcpy(xcb_tmp, xcb_parts[i].iov_base, xcb_parts[i].iov_len);
- if (0 != xcb_parts[i].iov_len)
- xcb_tmp += xcb_parts[i].iov_len;
- }
-
- return xcb_buffer_len;
-}
-
-int
-xcb_xkb_get_names_value_list_unpack (const void *_buffer /**< */,
- uint8_t nTypes /**< */,
- uint32_t indicators /**< */,
- uint16_t virtualMods /**< */,
- uint8_t groupNames /**< */,
- uint8_t nKeys /**< */,
- uint8_t nKeyAliases /**< */,
- uint8_t nRadioGroups /**< */,
- uint32_t which /**< */,
- xcb_xkb_get_names_value_list_t *_aux /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to = 0;
-
-
- if(which & XCB_XKB_NAME_DETAIL_KEYCODES) {
- /* xcb_xkb_get_names_value_list_t.keycodesName */
- _aux->keycodesName = *(xcb_atom_t *)xcb_tmp;
- xcb_block_len += sizeof(xcb_atom_t);
- xcb_tmp += sizeof(xcb_atom_t);
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_GEOMETRY) {
- /* xcb_xkb_get_names_value_list_t.geometryName */
- _aux->geometryName = *(xcb_atom_t *)xcb_tmp;
- xcb_block_len += sizeof(xcb_atom_t);
- xcb_tmp += sizeof(xcb_atom_t);
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_SYMBOLS) {
- /* xcb_xkb_get_names_value_list_t.symbolsName */
- _aux->symbolsName = *(xcb_atom_t *)xcb_tmp;
- xcb_block_len += sizeof(xcb_atom_t);
- xcb_tmp += sizeof(xcb_atom_t);
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_PHYS_SYMBOLS) {
- /* xcb_xkb_get_names_value_list_t.physSymbolsName */
- _aux->physSymbolsName = *(xcb_atom_t *)xcb_tmp;
- xcb_block_len += sizeof(xcb_atom_t);
- xcb_tmp += sizeof(xcb_atom_t);
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_TYPES) {
- /* xcb_xkb_get_names_value_list_t.typesName */
- _aux->typesName = *(xcb_atom_t *)xcb_tmp;
- xcb_block_len += sizeof(xcb_atom_t);
- xcb_tmp += sizeof(xcb_atom_t);
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_COMPAT) {
- /* xcb_xkb_get_names_value_list_t.compatName */
- _aux->compatName = *(xcb_atom_t *)xcb_tmp;
- xcb_block_len += sizeof(xcb_atom_t);
- xcb_tmp += sizeof(xcb_atom_t);
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_KEY_TYPE_NAMES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* typeNames */
- _aux->typeNames = (xcb_atom_t *)xcb_tmp;
- xcb_block_len += nTypes * sizeof(xcb_atom_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_KT_LEVEL_NAMES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* nLevelsPerType */
- _aux->nLevelsPerType = (uint8_t *)xcb_tmp;
- xcb_block_len += nTypes * sizeof(uint8_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(uint8_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* alignment_pad */
- _aux->alignment_pad = (uint8_t *)xcb_tmp;
- xcb_block_len += (((nTypes + 3) & (~3)) - nTypes) * sizeof(uint8_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(uint8_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* ktLevelNames */
- _aux->ktLevelNames = (xcb_atom_t *)xcb_tmp;
- xcb_block_len += xcb_sumof(_aux->nLevelsPerType, nTypes) * sizeof(xcb_atom_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_INDICATOR_NAMES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* indicatorNames */
- _aux->indicatorNames = (xcb_atom_t *)xcb_tmp;
- xcb_block_len += xcb_popcount(indicators) * sizeof(xcb_atom_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_VIRTUAL_MOD_NAMES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* virtualModNames */
- _aux->virtualModNames = (xcb_atom_t *)xcb_tmp;
- xcb_block_len += xcb_popcount(virtualMods) * sizeof(xcb_atom_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_GROUP_NAMES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* groups */
- _aux->groups = (xcb_atom_t *)xcb_tmp;
- xcb_block_len += xcb_popcount(groupNames) * sizeof(xcb_atom_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_KEY_NAMES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* keyNames */
- _aux->keyNames = (xcb_xkb_key_name_t *)xcb_tmp;
- xcb_block_len += nKeys * sizeof(xcb_xkb_key_name_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_xkb_key_name_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_KEY_ALIASES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* keyAliases */
- _aux->keyAliases = (xcb_xkb_key_alias_t *)xcb_tmp;
- xcb_block_len += nKeyAliases * sizeof(xcb_xkb_key_alias_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_xkb_key_alias_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_RG_NAMES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* radioGroupNames */
- _aux->radioGroupNames = (xcb_atom_t *)xcb_tmp;
- xcb_block_len += nRadioGroups * sizeof(xcb_atom_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-int
-xcb_xkb_get_names_value_list_sizeof (const void *_buffer /**< */,
- uint8_t nTypes /**< */,
- uint32_t indicators /**< */,
- uint16_t virtualMods /**< */,
- uint8_t groupNames /**< */,
- uint8_t nKeys /**< */,
- uint8_t nKeyAliases /**< */,
- uint8_t nRadioGroups /**< */,
- uint32_t which /**< */)
-{
- xcb_xkb_get_names_value_list_t _aux;
- return xcb_xkb_get_names_value_list_unpack(_buffer, nTypes, indicators, virtualMods, groupNames, nKeys, nKeyAliases, nRadioGroups, which, &_aux);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_names_cookie_t xcb_xkb_get_names
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint32_t which
- ** @returns xcb_xkb_get_names_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_get_names_cookie_t
-xcb_xkb_get_names (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint32_t which /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_GET_NAMES,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_xkb_get_names_cookie_t xcb_ret;
- xcb_xkb_get_names_request_t xcb_out;
-
- xcb_out.deviceSpec = deviceSpec;
- memset(xcb_out.pad0, 0, 2);
- xcb_out.which = which;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_names_cookie_t xcb_xkb_get_names_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint32_t which
- ** @returns xcb_xkb_get_names_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_get_names_cookie_t
-xcb_xkb_get_names_unchecked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint32_t which /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_GET_NAMES,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_xkb_get_names_cookie_t xcb_ret;
- xcb_xkb_get_names_request_t xcb_out;
-
- xcb_out.deviceSpec = deviceSpec;
- memset(xcb_out.pad0, 0, 2);
- xcb_out.which = which;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_names_value_list_t * xcb_xkb_get_names_value_list
- **
- ** @param const xcb_xkb_get_names_reply_t *R
- ** @returns xcb_xkb_get_names_value_list_t *
- **
- *****************************************************************************/
-
-void *
-xcb_xkb_get_names_value_list (const xcb_xkb_get_names_reply_t *R /**< */)
-{
- return (void *) (R + 1);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_names_reply_t * xcb_xkb_get_names_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_get_names_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xkb_get_names_reply_t *
- **
- *****************************************************************************/
-
-xcb_xkb_get_names_reply_t *
-xcb_xkb_get_names_reply (xcb_connection_t *c /**< */,
- xcb_xkb_get_names_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_xkb_get_names_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_atom_t * xcb_xkb_set_names_values_type_names
- **
- ** @param const xcb_xkb_set_names_values_t *S
- ** @returns xcb_atom_t *
- **
- *****************************************************************************/
-
-xcb_atom_t *
-xcb_xkb_set_names_values_type_names (const xcb_xkb_set_names_values_t *S /**< */)
-{
- return /* values */ S->typeNames;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_set_names_values_type_names_length
- **
- ** @param const xcb_xkb_set_names_values_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_set_names_values_type_names_length (const xcb_xkb_set_names_request_t *R /**< */,
- const xcb_xkb_set_names_values_t *S /**< */)
-{
- return R->nTypes;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_set_names_values_type_names_end
- **
- ** @param const xcb_xkb_set_names_values_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_set_names_values_type_names_end (const xcb_xkb_set_names_request_t *R /**< */,
- const xcb_xkb_set_names_values_t *S /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = /* values */ S->typeNames + R->nTypes;
- i.rem = 0;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** uint8_t * xcb_xkb_set_names_values_n_levels_per_type
- **
- ** @param const xcb_xkb_set_names_values_t *S
- ** @returns uint8_t *
- **
- *****************************************************************************/
-
-uint8_t *
-xcb_xkb_set_names_values_n_levels_per_type (const xcb_xkb_set_names_values_t *S /**< */)
-{
- return /* values */ S->nLevelsPerType;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_set_names_values_n_levels_per_type_length
- **
- ** @param const xcb_xkb_set_names_values_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_set_names_values_n_levels_per_type_length (const xcb_xkb_set_names_request_t *R /**< */,
- const xcb_xkb_set_names_values_t *S /**< */)
-{
- return R->nKTLevels;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_set_names_values_n_levels_per_type_end
- **
- ** @param const xcb_xkb_set_names_values_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_set_names_values_n_levels_per_type_end (const xcb_xkb_set_names_request_t *R /**< */,
- const xcb_xkb_set_names_values_t *S /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = /* values */ S->nLevelsPerType + R->nKTLevels;
- i.rem = 0;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_atom_t * xcb_xkb_set_names_values_kt_level_names
- **
- ** @param const xcb_xkb_set_names_values_t *S
- ** @returns xcb_atom_t *
- **
- *****************************************************************************/
-
-xcb_atom_t *
-xcb_xkb_set_names_values_kt_level_names (const xcb_xkb_set_names_values_t *S /**< */)
-{
- return /* values */ S->ktLevelNames;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_set_names_values_kt_level_names_length
- **
- ** @param const xcb_xkb_set_names_values_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_set_names_values_kt_level_names_length (const xcb_xkb_set_names_request_t *R /**< */,
- const xcb_xkb_set_names_values_t *S /**< */)
-{
- return xcb_sumof(/* values */ S->nLevelsPerType, R->nKTLevels);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_set_names_values_kt_level_names_end
- **
- ** @param const xcb_xkb_set_names_values_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_set_names_values_kt_level_names_end (const xcb_xkb_set_names_request_t *R /**< */,
- const xcb_xkb_set_names_values_t *S /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = /* values */ S->ktLevelNames + xcb_sumof(/* values */ S->nLevelsPerType, R->nKTLevels);
- i.rem = 0;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_atom_t * xcb_xkb_set_names_values_indicator_names
- **
- ** @param const xcb_xkb_set_names_values_t *S
- ** @returns xcb_atom_t *
- **
- *****************************************************************************/
-
-xcb_atom_t *
-xcb_xkb_set_names_values_indicator_names (const xcb_xkb_set_names_values_t *S /**< */)
-{
- return /* values */ S->indicatorNames;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_set_names_values_indicator_names_length
- **
- ** @param const xcb_xkb_set_names_values_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_set_names_values_indicator_names_length (const xcb_xkb_set_names_request_t *R /**< */,
- const xcb_xkb_set_names_values_t *S /**< */)
-{
- return xcb_popcount(R->indicators);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_set_names_values_indicator_names_end
- **
- ** @param const xcb_xkb_set_names_values_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_set_names_values_indicator_names_end (const xcb_xkb_set_names_request_t *R /**< */,
- const xcb_xkb_set_names_values_t *S /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = /* values */ S->indicatorNames + xcb_popcount(R->indicators);
- i.rem = 0;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_atom_t * xcb_xkb_set_names_values_virtual_mod_names
- **
- ** @param const xcb_xkb_set_names_values_t *S
- ** @returns xcb_atom_t *
- **
- *****************************************************************************/
-
-xcb_atom_t *
-xcb_xkb_set_names_values_virtual_mod_names (const xcb_xkb_set_names_values_t *S /**< */)
-{
- return /* values */ S->virtualModNames;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_set_names_values_virtual_mod_names_length
- **
- ** @param const xcb_xkb_set_names_values_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_set_names_values_virtual_mod_names_length (const xcb_xkb_set_names_request_t *R /**< */,
- const xcb_xkb_set_names_values_t *S /**< */)
-{
- return xcb_popcount(R->virtualMods);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_set_names_values_virtual_mod_names_end
- **
- ** @param const xcb_xkb_set_names_values_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_set_names_values_virtual_mod_names_end (const xcb_xkb_set_names_request_t *R /**< */,
- const xcb_xkb_set_names_values_t *S /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = /* values */ S->virtualModNames + xcb_popcount(R->virtualMods);
- i.rem = 0;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_atom_t * xcb_xkb_set_names_values_groups
- **
- ** @param const xcb_xkb_set_names_values_t *S
- ** @returns xcb_atom_t *
- **
- *****************************************************************************/
-
-xcb_atom_t *
-xcb_xkb_set_names_values_groups (const xcb_xkb_set_names_values_t *S /**< */)
-{
- return /* values */ S->groups;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_set_names_values_groups_length
- **
- ** @param const xcb_xkb_set_names_values_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_set_names_values_groups_length (const xcb_xkb_set_names_request_t *R /**< */,
- const xcb_xkb_set_names_values_t *S /**< */)
-{
- return xcb_popcount(R->groupNames);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_set_names_values_groups_end
- **
- ** @param const xcb_xkb_set_names_values_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_set_names_values_groups_end (const xcb_xkb_set_names_request_t *R /**< */,
- const xcb_xkb_set_names_values_t *S /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = /* values */ S->groups + xcb_popcount(R->groupNames);
- i.rem = 0;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_name_t * xcb_xkb_set_names_values_key_names
- **
- ** @param const xcb_xkb_set_names_values_t *S
- ** @returns xcb_xkb_key_name_t *
- **
- *****************************************************************************/
-
-xcb_xkb_key_name_t *
-xcb_xkb_set_names_values_key_names (const xcb_xkb_set_names_values_t *S /**< */)
-{
- return /* values */ S->keyNames;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_set_names_values_key_names_length
- **
- ** @param const xcb_xkb_set_names_values_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_set_names_values_key_names_length (const xcb_xkb_set_names_request_t *R /**< */,
- const xcb_xkb_set_names_values_t *S /**< */)
-{
- return R->nKeys;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_name_iterator_t xcb_xkb_set_names_values_key_names_iterator
- **
- ** @param const xcb_xkb_set_names_values_t *R
- ** @returns xcb_xkb_key_name_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_key_name_iterator_t
-xcb_xkb_set_names_values_key_names_iterator (const xcb_xkb_set_names_request_t *R /**< */,
- const xcb_xkb_set_names_values_t *S /**< */)
-{
- xcb_xkb_key_name_iterator_t i;
- i.data = /* values */ S->keyNames;
- i.rem = R->nKeys;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_alias_t * xcb_xkb_set_names_values_key_aliases
- **
- ** @param const xcb_xkb_set_names_values_t *S
- ** @returns xcb_xkb_key_alias_t *
- **
- *****************************************************************************/
-
-xcb_xkb_key_alias_t *
-xcb_xkb_set_names_values_key_aliases (const xcb_xkb_set_names_values_t *S /**< */)
-{
- return /* values */ S->keyAliases;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_set_names_values_key_aliases_length
- **
- ** @param const xcb_xkb_set_names_values_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_set_names_values_key_aliases_length (const xcb_xkb_set_names_request_t *R /**< */,
- const xcb_xkb_set_names_values_t *S /**< */)
-{
- return R->nKeyAliases;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_alias_iterator_t xcb_xkb_set_names_values_key_aliases_iterator
- **
- ** @param const xcb_xkb_set_names_values_t *R
- ** @returns xcb_xkb_key_alias_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_key_alias_iterator_t
-xcb_xkb_set_names_values_key_aliases_iterator (const xcb_xkb_set_names_request_t *R /**< */,
- const xcb_xkb_set_names_values_t *S /**< */)
-{
- xcb_xkb_key_alias_iterator_t i;
- i.data = /* values */ S->keyAliases;
- i.rem = R->nKeyAliases;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_atom_t * xcb_xkb_set_names_values_radio_group_names
- **
- ** @param const xcb_xkb_set_names_values_t *S
- ** @returns xcb_atom_t *
- **
- *****************************************************************************/
-
-xcb_atom_t *
-xcb_xkb_set_names_values_radio_group_names (const xcb_xkb_set_names_values_t *S /**< */)
-{
- return /* values */ S->radioGroupNames;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_set_names_values_radio_group_names_length
- **
- ** @param const xcb_xkb_set_names_values_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_set_names_values_radio_group_names_length (const xcb_xkb_set_names_request_t *R /**< */,
- const xcb_xkb_set_names_values_t *S /**< */)
-{
- return R->nRadioGroups;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_set_names_values_radio_group_names_end
- **
- ** @param const xcb_xkb_set_names_values_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_set_names_values_radio_group_names_end (const xcb_xkb_set_names_request_t *R /**< */,
- const xcb_xkb_set_names_values_t *S /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = /* values */ S->radioGroupNames + R->nRadioGroups;
- i.rem = 0;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-int
-xcb_xkb_set_names_values_serialize (void **_buffer /**< */,
- uint8_t nTypes /**< */,
- uint8_t nKTLevels /**< */,
- uint32_t indicators /**< */,
- uint16_t virtualMods /**< */,
- uint8_t groupNames /**< */,
- uint8_t nKeys /**< */,
- uint8_t nKeyAliases /**< */,
- uint8_t nRadioGroups /**< */,
- uint32_t which /**< */,
- const xcb_xkb_set_names_values_t *_aux /**< */)
-{
- char *xcb_out = *_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_align_to = 0;
-
- unsigned int xcb_pad = 0;
- char xcb_pad0[3] = {0, 0, 0};
- struct iovec xcb_parts[25];
- unsigned int xcb_parts_idx = 0;
- unsigned int xcb_block_len = 0;
- unsigned int i;
- char *xcb_tmp;
-
- if(which & XCB_XKB_NAME_DETAIL_KEYCODES) {
- /* xcb_xkb_set_names_values_t.keycodesName */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->keycodesName;
- xcb_block_len += sizeof(xcb_atom_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_atom_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_GEOMETRY) {
- /* xcb_xkb_set_names_values_t.geometryName */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->geometryName;
- xcb_block_len += sizeof(xcb_atom_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_atom_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_SYMBOLS) {
- /* xcb_xkb_set_names_values_t.symbolsName */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->symbolsName;
- xcb_block_len += sizeof(xcb_atom_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_atom_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_PHYS_SYMBOLS) {
- /* xcb_xkb_set_names_values_t.physSymbolsName */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->physSymbolsName;
- xcb_block_len += sizeof(xcb_atom_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_atom_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_TYPES) {
- /* xcb_xkb_set_names_values_t.typesName */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->typesName;
- xcb_block_len += sizeof(xcb_atom_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_atom_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_COMPAT) {
- /* xcb_xkb_set_names_values_t.compatName */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->compatName;
- xcb_block_len += sizeof(xcb_atom_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_atom_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_KEY_TYPE_NAMES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* typeNames */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->typeNames;
- xcb_block_len += nTypes * sizeof(xcb_atom_t);
- xcb_parts[xcb_parts_idx].iov_len = nTypes * sizeof(xcb_atom_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_KT_LEVEL_NAMES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* nLevelsPerType */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->nLevelsPerType;
- xcb_block_len += nKTLevels * sizeof(uint8_t);
- xcb_parts[xcb_parts_idx].iov_len = nKTLevels * sizeof(uint8_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* ktLevelNames */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->ktLevelNames;
- xcb_block_len += xcb_sumof(_aux->nLevelsPerType, nKTLevels) * sizeof(xcb_atom_t);
- xcb_parts[xcb_parts_idx].iov_len = xcb_sumof(_aux->nLevelsPerType, nKTLevels) * sizeof(xcb_atom_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_INDICATOR_NAMES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* indicatorNames */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->indicatorNames;
- xcb_block_len += xcb_popcount(indicators) * sizeof(xcb_atom_t);
- xcb_parts[xcb_parts_idx].iov_len = xcb_popcount(indicators) * sizeof(xcb_atom_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_VIRTUAL_MOD_NAMES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* virtualModNames */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->virtualModNames;
- xcb_block_len += xcb_popcount(virtualMods) * sizeof(xcb_atom_t);
- xcb_parts[xcb_parts_idx].iov_len = xcb_popcount(virtualMods) * sizeof(xcb_atom_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_GROUP_NAMES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* groups */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->groups;
- xcb_block_len += xcb_popcount(groupNames) * sizeof(xcb_atom_t);
- xcb_parts[xcb_parts_idx].iov_len = xcb_popcount(groupNames) * sizeof(xcb_atom_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_KEY_NAMES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* keyNames */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->keyNames;
- xcb_block_len += nKeys * sizeof(xcb_xkb_key_name_t);
- xcb_parts[xcb_parts_idx].iov_len = nKeys * sizeof(xcb_xkb_key_name_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_xkb_key_name_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_KEY_ALIASES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* keyAliases */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->keyAliases;
- xcb_block_len += nKeyAliases * sizeof(xcb_xkb_key_alias_t);
- xcb_parts[xcb_parts_idx].iov_len = nKeyAliases * sizeof(xcb_xkb_key_alias_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_xkb_key_alias_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_RG_NAMES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* radioGroupNames */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->radioGroupNames;
- xcb_block_len += nRadioGroups * sizeof(xcb_atom_t);
- xcb_parts[xcb_parts_idx].iov_len = nRadioGroups * sizeof(xcb_atom_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- if (NULL == xcb_out) {
- /* allocate memory */
- xcb_out = malloc(xcb_buffer_len);
- *_buffer = xcb_out;
- }
-
- xcb_tmp = xcb_out;
- for(i=0; i<xcb_parts_idx; i++) {
- if (0 != xcb_parts[i].iov_base && 0 != xcb_parts[i].iov_len)
- memcpy(xcb_tmp, xcb_parts[i].iov_base, xcb_parts[i].iov_len);
- if (0 != xcb_parts[i].iov_len)
- xcb_tmp += xcb_parts[i].iov_len;
- }
-
- return xcb_buffer_len;
-}
-
-int
-xcb_xkb_set_names_values_unpack (const void *_buffer /**< */,
- uint8_t nTypes /**< */,
- uint8_t nKTLevels /**< */,
- uint32_t indicators /**< */,
- uint16_t virtualMods /**< */,
- uint8_t groupNames /**< */,
- uint8_t nKeys /**< */,
- uint8_t nKeyAliases /**< */,
- uint8_t nRadioGroups /**< */,
- uint32_t which /**< */,
- xcb_xkb_set_names_values_t *_aux /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to = 0;
-
-
- if(which & XCB_XKB_NAME_DETAIL_KEYCODES) {
- /* xcb_xkb_set_names_values_t.keycodesName */
- _aux->keycodesName = *(xcb_atom_t *)xcb_tmp;
- xcb_block_len += sizeof(xcb_atom_t);
- xcb_tmp += sizeof(xcb_atom_t);
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_GEOMETRY) {
- /* xcb_xkb_set_names_values_t.geometryName */
- _aux->geometryName = *(xcb_atom_t *)xcb_tmp;
- xcb_block_len += sizeof(xcb_atom_t);
- xcb_tmp += sizeof(xcb_atom_t);
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_SYMBOLS) {
- /* xcb_xkb_set_names_values_t.symbolsName */
- _aux->symbolsName = *(xcb_atom_t *)xcb_tmp;
- xcb_block_len += sizeof(xcb_atom_t);
- xcb_tmp += sizeof(xcb_atom_t);
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_PHYS_SYMBOLS) {
- /* xcb_xkb_set_names_values_t.physSymbolsName */
- _aux->physSymbolsName = *(xcb_atom_t *)xcb_tmp;
- xcb_block_len += sizeof(xcb_atom_t);
- xcb_tmp += sizeof(xcb_atom_t);
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_TYPES) {
- /* xcb_xkb_set_names_values_t.typesName */
- _aux->typesName = *(xcb_atom_t *)xcb_tmp;
- xcb_block_len += sizeof(xcb_atom_t);
- xcb_tmp += sizeof(xcb_atom_t);
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_COMPAT) {
- /* xcb_xkb_set_names_values_t.compatName */
- _aux->compatName = *(xcb_atom_t *)xcb_tmp;
- xcb_block_len += sizeof(xcb_atom_t);
- xcb_tmp += sizeof(xcb_atom_t);
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_KEY_TYPE_NAMES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* typeNames */
- _aux->typeNames = (xcb_atom_t *)xcb_tmp;
- xcb_block_len += nTypes * sizeof(xcb_atom_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_KT_LEVEL_NAMES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* nLevelsPerType */
- _aux->nLevelsPerType = (uint8_t *)xcb_tmp;
- xcb_block_len += nKTLevels * sizeof(uint8_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(uint8_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* ktLevelNames */
- _aux->ktLevelNames = (xcb_atom_t *)xcb_tmp;
- xcb_block_len += xcb_sumof(_aux->nLevelsPerType, nKTLevels) * sizeof(xcb_atom_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_INDICATOR_NAMES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* indicatorNames */
- _aux->indicatorNames = (xcb_atom_t *)xcb_tmp;
- xcb_block_len += xcb_popcount(indicators) * sizeof(xcb_atom_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_VIRTUAL_MOD_NAMES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* virtualModNames */
- _aux->virtualModNames = (xcb_atom_t *)xcb_tmp;
- xcb_block_len += xcb_popcount(virtualMods) * sizeof(xcb_atom_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_GROUP_NAMES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* groups */
- _aux->groups = (xcb_atom_t *)xcb_tmp;
- xcb_block_len += xcb_popcount(groupNames) * sizeof(xcb_atom_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_KEY_NAMES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* keyNames */
- _aux->keyNames = (xcb_xkb_key_name_t *)xcb_tmp;
- xcb_block_len += nKeys * sizeof(xcb_xkb_key_name_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_xkb_key_name_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_KEY_ALIASES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* keyAliases */
- _aux->keyAliases = (xcb_xkb_key_alias_t *)xcb_tmp;
- xcb_block_len += nKeyAliases * sizeof(xcb_xkb_key_alias_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_xkb_key_alias_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_RG_NAMES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* radioGroupNames */
- _aux->radioGroupNames = (xcb_atom_t *)xcb_tmp;
- xcb_block_len += nRadioGroups * sizeof(xcb_atom_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-int
-xcb_xkb_set_names_values_sizeof (const void *_buffer /**< */,
- uint8_t nTypes /**< */,
- uint8_t nKTLevels /**< */,
- uint32_t indicators /**< */,
- uint16_t virtualMods /**< */,
- uint8_t groupNames /**< */,
- uint8_t nKeys /**< */,
- uint8_t nKeyAliases /**< */,
- uint8_t nRadioGroups /**< */,
- uint32_t which /**< */)
-{
- xcb_xkb_set_names_values_t _aux;
- return xcb_xkb_set_names_values_unpack(_buffer, nTypes, nKTLevels, indicators, virtualMods, groupNames, nKeys, nKeyAliases, nRadioGroups, which, &_aux);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_set_names_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint16_t virtualMods
- ** @param uint32_t which
- ** @param uint8_t firstType
- ** @param uint8_t nTypes
- ** @param uint8_t firstKTLevelt
- ** @param uint8_t nKTLevels
- ** @param uint32_t indicators
- ** @param uint8_t groupNames
- ** @param uint8_t nRadioGroups
- ** @param xcb_keycode_t firstKey
- ** @param uint8_t nKeys
- ** @param uint8_t nKeyAliases
- ** @param uint16_t totalKTLevelNames
- ** @param const void *values
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_set_names_checked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint16_t virtualMods /**< */,
- uint32_t which /**< */,
- uint8_t firstType /**< */,
- uint8_t nTypes /**< */,
- uint8_t firstKTLevelt /**< */,
- uint8_t nKTLevels /**< */,
- uint32_t indicators /**< */,
- uint8_t groupNames /**< */,
- uint8_t nRadioGroups /**< */,
- xcb_keycode_t firstKey /**< */,
- uint8_t nKeys /**< */,
- uint8_t nKeyAliases /**< */,
- uint16_t totalKTLevelNames /**< */,
- const void *values /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 3,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_SET_NAMES,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[5];
- xcb_void_cookie_t xcb_ret;
- xcb_xkb_set_names_request_t xcb_out;
-
- xcb_out.deviceSpec = deviceSpec;
- xcb_out.virtualMods = virtualMods;
- xcb_out.which = which;
- xcb_out.firstType = firstType;
- xcb_out.nTypes = nTypes;
- xcb_out.firstKTLevelt = firstKTLevelt;
- xcb_out.nKTLevels = nKTLevels;
- xcb_out.indicators = indicators;
- xcb_out.groupNames = groupNames;
- xcb_out.nRadioGroups = nRadioGroups;
- xcb_out.firstKey = firstKey;
- xcb_out.nKeys = nKeys;
- xcb_out.nKeyAliases = nKeyAliases;
- xcb_out.pad0 = 0;
- xcb_out.totalKTLevelNames = totalKTLevelNames;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_xkb_set_names_values_t values */
- xcb_parts[4].iov_base = (char *) values;
- xcb_parts[4].iov_len =
- xcb_xkb_set_names_values_sizeof (values, nTypes, nKTLevels, indicators, virtualMods, groupNames, nKeys, nKeyAliases, nRadioGroups, which);
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_set_names
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint16_t virtualMods
- ** @param uint32_t which
- ** @param uint8_t firstType
- ** @param uint8_t nTypes
- ** @param uint8_t firstKTLevelt
- ** @param uint8_t nKTLevels
- ** @param uint32_t indicators
- ** @param uint8_t groupNames
- ** @param uint8_t nRadioGroups
- ** @param xcb_keycode_t firstKey
- ** @param uint8_t nKeys
- ** @param uint8_t nKeyAliases
- ** @param uint16_t totalKTLevelNames
- ** @param const void *values
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_set_names (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint16_t virtualMods /**< */,
- uint32_t which /**< */,
- uint8_t firstType /**< */,
- uint8_t nTypes /**< */,
- uint8_t firstKTLevelt /**< */,
- uint8_t nKTLevels /**< */,
- uint32_t indicators /**< */,
- uint8_t groupNames /**< */,
- uint8_t nRadioGroups /**< */,
- xcb_keycode_t firstKey /**< */,
- uint8_t nKeys /**< */,
- uint8_t nKeyAliases /**< */,
- uint16_t totalKTLevelNames /**< */,
- const void *values /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 3,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_SET_NAMES,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[5];
- xcb_void_cookie_t xcb_ret;
- xcb_xkb_set_names_request_t xcb_out;
-
- xcb_out.deviceSpec = deviceSpec;
- xcb_out.virtualMods = virtualMods;
- xcb_out.which = which;
- xcb_out.firstType = firstType;
- xcb_out.nTypes = nTypes;
- xcb_out.firstKTLevelt = firstKTLevelt;
- xcb_out.nKTLevels = nKTLevels;
- xcb_out.indicators = indicators;
- xcb_out.groupNames = groupNames;
- xcb_out.nRadioGroups = nRadioGroups;
- xcb_out.firstKey = firstKey;
- xcb_out.nKeys = nKeys;
- xcb_out.nKeyAliases = nKeyAliases;
- xcb_out.pad0 = 0;
- xcb_out.totalKTLevelNames = totalKTLevelNames;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_xkb_set_names_values_t values */
- xcb_parts[4].iov_base = (char *) values;
- xcb_parts[4].iov_len =
- xcb_xkb_set_names_values_sizeof (values, nTypes, nKTLevels, indicators, virtualMods, groupNames, nKeys, nKeyAliases, nRadioGroups, which);
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_set_names_aux_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint16_t virtualMods
- ** @param uint32_t which
- ** @param uint8_t firstType
- ** @param uint8_t nTypes
- ** @param uint8_t firstKTLevelt
- ** @param uint8_t nKTLevels
- ** @param uint32_t indicators
- ** @param uint8_t groupNames
- ** @param uint8_t nRadioGroups
- ** @param xcb_keycode_t firstKey
- ** @param uint8_t nKeys
- ** @param uint8_t nKeyAliases
- ** @param uint16_t totalKTLevelNames
- ** @param const xcb_xkb_set_names_values_t *values
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_set_names_aux_checked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint16_t virtualMods /**< */,
- uint32_t which /**< */,
- uint8_t firstType /**< */,
- uint8_t nTypes /**< */,
- uint8_t firstKTLevelt /**< */,
- uint8_t nKTLevels /**< */,
- uint32_t indicators /**< */,
- uint8_t groupNames /**< */,
- uint8_t nRadioGroups /**< */,
- xcb_keycode_t firstKey /**< */,
- uint8_t nKeys /**< */,
- uint8_t nKeyAliases /**< */,
- uint16_t totalKTLevelNames /**< */,
- const xcb_xkb_set_names_values_t *values /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 3,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_SET_NAMES,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[5];
- xcb_void_cookie_t xcb_ret;
- xcb_xkb_set_names_request_t xcb_out;
- void *xcb_aux0 = 0;
-
- xcb_out.deviceSpec = deviceSpec;
- xcb_out.virtualMods = virtualMods;
- xcb_out.which = which;
- xcb_out.firstType = firstType;
- xcb_out.nTypes = nTypes;
- xcb_out.firstKTLevelt = firstKTLevelt;
- xcb_out.nKTLevels = nKTLevels;
- xcb_out.indicators = indicators;
- xcb_out.groupNames = groupNames;
- xcb_out.nRadioGroups = nRadioGroups;
- xcb_out.firstKey = firstKey;
- xcb_out.nKeys = nKeys;
- xcb_out.nKeyAliases = nKeyAliases;
- xcb_out.pad0 = 0;
- xcb_out.totalKTLevelNames = totalKTLevelNames;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_xkb_set_names_values_t values */
- xcb_parts[4].iov_len =
- xcb_xkb_set_names_values_serialize (&xcb_aux0, nTypes, nKTLevels, indicators, virtualMods, groupNames, nKeys, nKeyAliases, nRadioGroups, which, values);
- xcb_parts[4].iov_base = xcb_aux0;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- free(xcb_aux0);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_set_names_aux
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint16_t virtualMods
- ** @param uint32_t which
- ** @param uint8_t firstType
- ** @param uint8_t nTypes
- ** @param uint8_t firstKTLevelt
- ** @param uint8_t nKTLevels
- ** @param uint32_t indicators
- ** @param uint8_t groupNames
- ** @param uint8_t nRadioGroups
- ** @param xcb_keycode_t firstKey
- ** @param uint8_t nKeys
- ** @param uint8_t nKeyAliases
- ** @param uint16_t totalKTLevelNames
- ** @param const xcb_xkb_set_names_values_t *values
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_set_names_aux (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint16_t virtualMods /**< */,
- uint32_t which /**< */,
- uint8_t firstType /**< */,
- uint8_t nTypes /**< */,
- uint8_t firstKTLevelt /**< */,
- uint8_t nKTLevels /**< */,
- uint32_t indicators /**< */,
- uint8_t groupNames /**< */,
- uint8_t nRadioGroups /**< */,
- xcb_keycode_t firstKey /**< */,
- uint8_t nKeys /**< */,
- uint8_t nKeyAliases /**< */,
- uint16_t totalKTLevelNames /**< */,
- const xcb_xkb_set_names_values_t *values /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 3,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_SET_NAMES,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[5];
- xcb_void_cookie_t xcb_ret;
- xcb_xkb_set_names_request_t xcb_out;
- void *xcb_aux0 = 0;
-
- xcb_out.deviceSpec = deviceSpec;
- xcb_out.virtualMods = virtualMods;
- xcb_out.which = which;
- xcb_out.firstType = firstType;
- xcb_out.nTypes = nTypes;
- xcb_out.firstKTLevelt = firstKTLevelt;
- xcb_out.nKTLevels = nKTLevels;
- xcb_out.indicators = indicators;
- xcb_out.groupNames = groupNames;
- xcb_out.nRadioGroups = nRadioGroups;
- xcb_out.firstKey = firstKey;
- xcb_out.nKeys = nKeys;
- xcb_out.nKeyAliases = nKeyAliases;
- xcb_out.pad0 = 0;
- xcb_out.totalKTLevelNames = totalKTLevelNames;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_xkb_set_names_values_t values */
- xcb_parts[4].iov_len =
- xcb_xkb_set_names_values_serialize (&xcb_aux0, nTypes, nKTLevels, indicators, virtualMods, groupNames, nKeys, nKeyAliases, nRadioGroups, which, values);
- xcb_parts[4].iov_base = xcb_aux0;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- free(xcb_aux0);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_per_client_flags_cookie_t xcb_xkb_per_client_flags
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint32_t change
- ** @param uint32_t value
- ** @param uint32_t ctrlsToChange
- ** @param uint32_t autoCtrls
- ** @param uint32_t autoCtrlsValues
- ** @returns xcb_xkb_per_client_flags_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_per_client_flags_cookie_t
-xcb_xkb_per_client_flags (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint32_t change /**< */,
- uint32_t value /**< */,
- uint32_t ctrlsToChange /**< */,
- uint32_t autoCtrls /**< */,
- uint32_t autoCtrlsValues /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_PER_CLIENT_FLAGS,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_xkb_per_client_flags_cookie_t xcb_ret;
- xcb_xkb_per_client_flags_request_t xcb_out;
-
- xcb_out.deviceSpec = deviceSpec;
- memset(xcb_out.pad0, 0, 2);
- xcb_out.change = change;
- xcb_out.value = value;
- xcb_out.ctrlsToChange = ctrlsToChange;
- xcb_out.autoCtrls = autoCtrls;
- xcb_out.autoCtrlsValues = autoCtrlsValues;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_per_client_flags_cookie_t xcb_xkb_per_client_flags_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint32_t change
- ** @param uint32_t value
- ** @param uint32_t ctrlsToChange
- ** @param uint32_t autoCtrls
- ** @param uint32_t autoCtrlsValues
- ** @returns xcb_xkb_per_client_flags_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_per_client_flags_cookie_t
-xcb_xkb_per_client_flags_unchecked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint32_t change /**< */,
- uint32_t value /**< */,
- uint32_t ctrlsToChange /**< */,
- uint32_t autoCtrls /**< */,
- uint32_t autoCtrlsValues /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_PER_CLIENT_FLAGS,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_xkb_per_client_flags_cookie_t xcb_ret;
- xcb_xkb_per_client_flags_request_t xcb_out;
-
- xcb_out.deviceSpec = deviceSpec;
- memset(xcb_out.pad0, 0, 2);
- xcb_out.change = change;
- xcb_out.value = value;
- xcb_out.ctrlsToChange = ctrlsToChange;
- xcb_out.autoCtrls = autoCtrls;
- xcb_out.autoCtrlsValues = autoCtrlsValues;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_per_client_flags_reply_t * xcb_xkb_per_client_flags_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_per_client_flags_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xkb_per_client_flags_reply_t *
- **
- *****************************************************************************/
-
-xcb_xkb_per_client_flags_reply_t *
-xcb_xkb_per_client_flags_reply (xcb_connection_t *c /**< */,
- xcb_xkb_per_client_flags_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_xkb_per_client_flags_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-int
-xcb_xkb_list_components_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_xkb_list_components_reply_t *_aux = (xcb_xkb_list_components_reply_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to = 0;
-
- unsigned int i;
- unsigned int xcb_tmp_len;
-
- xcb_block_len += sizeof(xcb_xkb_list_components_reply_t);
- xcb_tmp += xcb_block_len;
- xcb_buffer_len += xcb_block_len;
- xcb_block_len = 0;
- /* keymaps */
- for(i=0; i<_aux->nKeymaps; i++) {
- xcb_tmp_len = xcb_xkb_listing_sizeof(xcb_tmp);
- xcb_block_len += xcb_tmp_len;
- xcb_tmp += xcb_tmp_len;
- }
- xcb_align_to = ALIGNOF(xcb_xkb_listing_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* keycodes */
- for(i=0; i<_aux->nKeycodes; i++) {
- xcb_tmp_len = xcb_xkb_listing_sizeof(xcb_tmp);
- xcb_block_len += xcb_tmp_len;
- xcb_tmp += xcb_tmp_len;
- }
- xcb_align_to = ALIGNOF(xcb_xkb_listing_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* types */
- for(i=0; i<_aux->nTypes; i++) {
- xcb_tmp_len = xcb_xkb_listing_sizeof(xcb_tmp);
- xcb_block_len += xcb_tmp_len;
- xcb_tmp += xcb_tmp_len;
- }
- xcb_align_to = ALIGNOF(xcb_xkb_listing_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* compatMaps */
- for(i=0; i<_aux->nCompatMaps; i++) {
- xcb_tmp_len = xcb_xkb_listing_sizeof(xcb_tmp);
- xcb_block_len += xcb_tmp_len;
- xcb_tmp += xcb_tmp_len;
- }
- xcb_align_to = ALIGNOF(xcb_xkb_listing_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* symbols */
- for(i=0; i<_aux->nSymbols; i++) {
- xcb_tmp_len = xcb_xkb_listing_sizeof(xcb_tmp);
- xcb_block_len += xcb_tmp_len;
- xcb_tmp += xcb_tmp_len;
- }
- xcb_align_to = ALIGNOF(xcb_xkb_listing_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* geometries */
- for(i=0; i<_aux->nGeometries; i++) {
- xcb_tmp_len = xcb_xkb_listing_sizeof(xcb_tmp);
- xcb_block_len += xcb_tmp_len;
- xcb_tmp += xcb_tmp_len;
- }
- xcb_align_to = ALIGNOF(xcb_xkb_listing_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_list_components_cookie_t xcb_xkb_list_components
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint16_t maxNames
- ** @returns xcb_xkb_list_components_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_list_components_cookie_t
-xcb_xkb_list_components (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint16_t maxNames /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_LIST_COMPONENTS,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_xkb_list_components_cookie_t xcb_ret;
- xcb_xkb_list_components_request_t xcb_out;
-
- xcb_out.deviceSpec = deviceSpec;
- xcb_out.maxNames = maxNames;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_list_components_cookie_t xcb_xkb_list_components_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint16_t maxNames
- ** @returns xcb_xkb_list_components_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_list_components_cookie_t
-xcb_xkb_list_components_unchecked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint16_t maxNames /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_LIST_COMPONENTS,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_xkb_list_components_cookie_t xcb_ret;
- xcb_xkb_list_components_request_t xcb_out;
-
- xcb_out.deviceSpec = deviceSpec;
- xcb_out.maxNames = maxNames;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_list_components_keymaps_length
- **
- ** @param const xcb_xkb_list_components_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_list_components_keymaps_length (const xcb_xkb_list_components_reply_t *R /**< */)
-{
- return R->nKeymaps;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_listing_iterator_t xcb_xkb_list_components_keymaps_iterator
- **
- ** @param const xcb_xkb_list_components_reply_t *R
- ** @returns xcb_xkb_listing_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_listing_iterator_t
-xcb_xkb_list_components_keymaps_iterator (const xcb_xkb_list_components_reply_t *R /**< */)
-{
- xcb_xkb_listing_iterator_t i;
- i.data = (xcb_xkb_listing_t *) (R + 1);
- i.rem = R->nKeymaps;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_list_components_keycodes_length
- **
- ** @param const xcb_xkb_list_components_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_list_components_keycodes_length (const xcb_xkb_list_components_reply_t *R /**< */)
-{
- return R->nKeycodes;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_listing_iterator_t xcb_xkb_list_components_keycodes_iterator
- **
- ** @param const xcb_xkb_list_components_reply_t *R
- ** @returns xcb_xkb_listing_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_listing_iterator_t
-xcb_xkb_list_components_keycodes_iterator (const xcb_xkb_list_components_reply_t *R /**< */)
-{
- xcb_xkb_listing_iterator_t i;
- xcb_generic_iterator_t prev = xcb_xkb_listing_end(xcb_xkb_list_components_keymaps_iterator(R));
- i.data = (xcb_xkb_listing_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_xkb_listing_t, prev.index));
- i.rem = R->nKeycodes;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_list_components_types_length
- **
- ** @param const xcb_xkb_list_components_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_list_components_types_length (const xcb_xkb_list_components_reply_t *R /**< */)
-{
- return R->nTypes;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_listing_iterator_t xcb_xkb_list_components_types_iterator
- **
- ** @param const xcb_xkb_list_components_reply_t *R
- ** @returns xcb_xkb_listing_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_listing_iterator_t
-xcb_xkb_list_components_types_iterator (const xcb_xkb_list_components_reply_t *R /**< */)
-{
- xcb_xkb_listing_iterator_t i;
- xcb_generic_iterator_t prev = xcb_xkb_listing_end(xcb_xkb_list_components_keycodes_iterator(R));
- i.data = (xcb_xkb_listing_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_xkb_listing_t, prev.index));
- i.rem = R->nTypes;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_list_components_compat_maps_length
- **
- ** @param const xcb_xkb_list_components_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_list_components_compat_maps_length (const xcb_xkb_list_components_reply_t *R /**< */)
-{
- return R->nCompatMaps;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_listing_iterator_t xcb_xkb_list_components_compat_maps_iterator
- **
- ** @param const xcb_xkb_list_components_reply_t *R
- ** @returns xcb_xkb_listing_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_listing_iterator_t
-xcb_xkb_list_components_compat_maps_iterator (const xcb_xkb_list_components_reply_t *R /**< */)
-{
- xcb_xkb_listing_iterator_t i;
- xcb_generic_iterator_t prev = xcb_xkb_listing_end(xcb_xkb_list_components_types_iterator(R));
- i.data = (xcb_xkb_listing_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_xkb_listing_t, prev.index));
- i.rem = R->nCompatMaps;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_list_components_symbols_length
- **
- ** @param const xcb_xkb_list_components_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_list_components_symbols_length (const xcb_xkb_list_components_reply_t *R /**< */)
-{
- return R->nSymbols;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_listing_iterator_t xcb_xkb_list_components_symbols_iterator
- **
- ** @param const xcb_xkb_list_components_reply_t *R
- ** @returns xcb_xkb_listing_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_listing_iterator_t
-xcb_xkb_list_components_symbols_iterator (const xcb_xkb_list_components_reply_t *R /**< */)
-{
- xcb_xkb_listing_iterator_t i;
- xcb_generic_iterator_t prev = xcb_xkb_listing_end(xcb_xkb_list_components_compat_maps_iterator(R));
- i.data = (xcb_xkb_listing_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_xkb_listing_t, prev.index));
- i.rem = R->nSymbols;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_list_components_geometries_length
- **
- ** @param const xcb_xkb_list_components_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_list_components_geometries_length (const xcb_xkb_list_components_reply_t *R /**< */)
-{
- return R->nGeometries;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_listing_iterator_t xcb_xkb_list_components_geometries_iterator
- **
- ** @param const xcb_xkb_list_components_reply_t *R
- ** @returns xcb_xkb_listing_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_listing_iterator_t
-xcb_xkb_list_components_geometries_iterator (const xcb_xkb_list_components_reply_t *R /**< */)
-{
- xcb_xkb_listing_iterator_t i;
- xcb_generic_iterator_t prev = xcb_xkb_listing_end(xcb_xkb_list_components_symbols_iterator(R));
- i.data = (xcb_xkb_listing_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_xkb_listing_t, prev.index));
- i.rem = R->nGeometries;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_list_components_reply_t * xcb_xkb_list_components_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_list_components_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xkb_list_components_reply_t *
- **
- *****************************************************************************/
-
-xcb_xkb_list_components_reply_t *
-xcb_xkb_list_components_reply (xcb_connection_t *c /**< */,
- xcb_xkb_list_components_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_xkb_list_components_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_kbd_by_name_replies_types_map_types_rtrn_length
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_types_map_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_kbd_by_name_replies_types_map_types_rtrn_length (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- return /* replies */ S->types.nTypes;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_type_iterator_t xcb_xkb_get_kbd_by_name_replies_types_map_types_rtrn_iterator
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_types_map_t *R
- ** @returns xcb_xkb_key_type_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_key_type_iterator_t
-xcb_xkb_get_kbd_by_name_replies_types_map_types_rtrn_iterator (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- xcb_xkb_key_type_iterator_t i;
- i.data = /* replies */ S->types.map.types_rtrn;
- i.rem = /* replies */ S->types.nTypes;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_kbd_by_name_replies_types_map_syms_rtrn_length
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_types_map_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_kbd_by_name_replies_types_map_syms_rtrn_length (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- return /* replies */ S->types.nKeySyms;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_sym_map_iterator_t xcb_xkb_get_kbd_by_name_replies_types_map_syms_rtrn_iterator
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_types_map_t *R
- ** @returns xcb_xkb_key_sym_map_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_key_sym_map_iterator_t
-xcb_xkb_get_kbd_by_name_replies_types_map_syms_rtrn_iterator (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- xcb_xkb_key_sym_map_iterator_t i;
- i.data = /* replies */ S->types.map.syms_rtrn;
- i.rem = /* replies */ S->types.nKeySyms;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** uint8_t * xcb_xkb_get_kbd_by_name_replies_types_map_acts_rtrn_count
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *S
- ** @returns uint8_t *
- **
- *****************************************************************************/
-
-uint8_t *
-xcb_xkb_get_kbd_by_name_replies_types_map_acts_rtrn_count (const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- return /* replies */ S->types.map.acts_rtrn_count;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_kbd_by_name_replies_types_map_acts_rtrn_count_length
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_types_map_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_kbd_by_name_replies_types_map_acts_rtrn_count_length (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- return /* replies */ S->types.nKeyActions;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_get_kbd_by_name_replies_types_map_acts_rtrn_count_end
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_types_map_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_get_kbd_by_name_replies_types_map_acts_rtrn_count_end (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = /* replies */ S->types.map.acts_rtrn_count + /* replies */ S->types.nKeyActions;
- i.rem = 0;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_action_t * xcb_xkb_get_kbd_by_name_replies_types_map_acts_rtrn_acts
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *S
- ** @returns xcb_xkb_action_t *
- **
- *****************************************************************************/
-
-xcb_xkb_action_t *
-xcb_xkb_get_kbd_by_name_replies_types_map_acts_rtrn_acts (const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- return /* replies */ S->types.map.acts_rtrn_acts;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_kbd_by_name_replies_types_map_acts_rtrn_acts_length
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_types_map_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_kbd_by_name_replies_types_map_acts_rtrn_acts_length (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- return /* replies */ S->types.totalActions;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_action_iterator_t xcb_xkb_get_kbd_by_name_replies_types_map_acts_rtrn_acts_iterator
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_types_map_t *R
- ** @returns xcb_xkb_action_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_action_iterator_t
-xcb_xkb_get_kbd_by_name_replies_types_map_acts_rtrn_acts_iterator (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- xcb_xkb_action_iterator_t i;
- i.data = /* replies */ S->types.map.acts_rtrn_acts;
- i.rem = /* replies */ S->types.totalActions;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_set_behavior_t * xcb_xkb_get_kbd_by_name_replies_types_map_behaviors_rtrn
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *S
- ** @returns xcb_xkb_set_behavior_t *
- **
- *****************************************************************************/
-
-xcb_xkb_set_behavior_t *
-xcb_xkb_get_kbd_by_name_replies_types_map_behaviors_rtrn (const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- return /* replies */ S->types.map.behaviors_rtrn;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_kbd_by_name_replies_types_map_behaviors_rtrn_length
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_types_map_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_kbd_by_name_replies_types_map_behaviors_rtrn_length (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- return /* replies */ S->types.totalKeyBehaviors;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_set_behavior_iterator_t xcb_xkb_get_kbd_by_name_replies_types_map_behaviors_rtrn_iterator
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_types_map_t *R
- ** @returns xcb_xkb_set_behavior_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_set_behavior_iterator_t
-xcb_xkb_get_kbd_by_name_replies_types_map_behaviors_rtrn_iterator (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- xcb_xkb_set_behavior_iterator_t i;
- i.data = /* replies */ S->types.map.behaviors_rtrn;
- i.rem = /* replies */ S->types.totalKeyBehaviors;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** uint8_t * xcb_xkb_get_kbd_by_name_replies_types_map_vmods_rtrn
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *S
- ** @returns uint8_t *
- **
- *****************************************************************************/
-
-uint8_t *
-xcb_xkb_get_kbd_by_name_replies_types_map_vmods_rtrn (const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- return /* replies */ S->types.map.vmods_rtrn;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_kbd_by_name_replies_types_map_vmods_rtrn_length
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_types_map_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_kbd_by_name_replies_types_map_vmods_rtrn_length (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- return xcb_popcount(/* replies */ S->types.virtualMods);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_get_kbd_by_name_replies_types_map_vmods_rtrn_end
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_types_map_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_get_kbd_by_name_replies_types_map_vmods_rtrn_end (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = /* replies */ S->types.map.vmods_rtrn + xcb_popcount(/* replies */ S->types.virtualMods);
- i.rem = 0;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_set_explicit_t * xcb_xkb_get_kbd_by_name_replies_types_map_explicit_rtrn
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *S
- ** @returns xcb_xkb_set_explicit_t *
- **
- *****************************************************************************/
-
-xcb_xkb_set_explicit_t *
-xcb_xkb_get_kbd_by_name_replies_types_map_explicit_rtrn (const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- return /* replies */ S->types.map.explicit_rtrn;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_kbd_by_name_replies_types_map_explicit_rtrn_length
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_types_map_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_kbd_by_name_replies_types_map_explicit_rtrn_length (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- return /* replies */ S->types.totalKeyExplicit;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_set_explicit_iterator_t xcb_xkb_get_kbd_by_name_replies_types_map_explicit_rtrn_iterator
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_types_map_t *R
- ** @returns xcb_xkb_set_explicit_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_set_explicit_iterator_t
-xcb_xkb_get_kbd_by_name_replies_types_map_explicit_rtrn_iterator (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- xcb_xkb_set_explicit_iterator_t i;
- i.data = /* replies */ S->types.map.explicit_rtrn;
- i.rem = /* replies */ S->types.totalKeyExplicit;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_mod_map_t * xcb_xkb_get_kbd_by_name_replies_types_map_modmap_rtrn
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *S
- ** @returns xcb_xkb_key_mod_map_t *
- **
- *****************************************************************************/
-
-xcb_xkb_key_mod_map_t *
-xcb_xkb_get_kbd_by_name_replies_types_map_modmap_rtrn (const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- return /* replies */ S->types.map.modmap_rtrn;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_kbd_by_name_replies_types_map_modmap_rtrn_length
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_types_map_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_kbd_by_name_replies_types_map_modmap_rtrn_length (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- return /* replies */ S->types.totalModMapKeys;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_mod_map_iterator_t xcb_xkb_get_kbd_by_name_replies_types_map_modmap_rtrn_iterator
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_types_map_t *R
- ** @returns xcb_xkb_key_mod_map_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_key_mod_map_iterator_t
-xcb_xkb_get_kbd_by_name_replies_types_map_modmap_rtrn_iterator (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- xcb_xkb_key_mod_map_iterator_t i;
- i.data = /* replies */ S->types.map.modmap_rtrn;
- i.rem = /* replies */ S->types.totalModMapKeys;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_v_mod_map_t * xcb_xkb_get_kbd_by_name_replies_types_map_vmodmap_rtrn
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *S
- ** @returns xcb_xkb_key_v_mod_map_t *
- **
- *****************************************************************************/
-
-xcb_xkb_key_v_mod_map_t *
-xcb_xkb_get_kbd_by_name_replies_types_map_vmodmap_rtrn (const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- return /* replies */ S->types.map.vmodmap_rtrn;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_kbd_by_name_replies_types_map_vmodmap_rtrn_length
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_types_map_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_kbd_by_name_replies_types_map_vmodmap_rtrn_length (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- return /* replies */ S->types.totalVModMapKeys;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_v_mod_map_iterator_t xcb_xkb_get_kbd_by_name_replies_types_map_vmodmap_rtrn_iterator
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_types_map_t *R
- ** @returns xcb_xkb_key_v_mod_map_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_key_v_mod_map_iterator_t
-xcb_xkb_get_kbd_by_name_replies_types_map_vmodmap_rtrn_iterator (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- xcb_xkb_key_v_mod_map_iterator_t i;
- i.data = /* replies */ S->types.map.vmodmap_rtrn;
- i.rem = /* replies */ S->types.totalVModMapKeys;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-int
-xcb_xkb_get_kbd_by_name_replies_types_map_serialize (void **_buffer /**< */,
- uint8_t nTypes /**< */,
- uint8_t nKeySyms /**< */,
- uint8_t nKeyActions /**< */,
- uint16_t totalActions /**< */,
- uint8_t totalKeyBehaviors /**< */,
- uint16_t virtualMods /**< */,
- uint8_t totalKeyExplicit /**< */,
- uint8_t totalModMapKeys /**< */,
- uint8_t totalVModMapKeys /**< */,
- uint16_t present /**< */,
- const xcb_xkb_get_kbd_by_name_replies_types_map_t *_aux /**< */)
-{
- char *xcb_out = *_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_align_to = 0;
-
- unsigned int xcb_pad = 0;
- char xcb_pad0[3] = {0, 0, 0};
- struct iovec xcb_parts[19];
- unsigned int xcb_parts_idx = 0;
- unsigned int xcb_block_len = 0;
- unsigned int i;
- char *xcb_tmp;
-
- if(present & XCB_XKB_MAP_PART_KEY_TYPES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* types_rtrn */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->types_rtrn;
- xcb_parts[xcb_parts_idx].iov_len = 0;
- xcb_tmp = (char *) _aux->types_rtrn;
- for(i=0; i<nTypes; i++) {
- xcb_block_len = xcb_xkb_key_type_sizeof(xcb_tmp);
- xcb_parts[xcb_parts_idx].iov_len += xcb_block_len;
- }
- xcb_block_len = xcb_parts[xcb_parts_idx].iov_len;
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_xkb_key_type_t);
- }
- if(present & XCB_XKB_MAP_PART_KEY_SYMS) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* syms_rtrn */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->syms_rtrn;
- xcb_parts[xcb_parts_idx].iov_len = 0;
- xcb_tmp = (char *) _aux->syms_rtrn;
- for(i=0; i<nKeySyms; i++) {
- xcb_block_len = xcb_xkb_key_sym_map_sizeof(xcb_tmp);
- xcb_parts[xcb_parts_idx].iov_len += xcb_block_len;
- }
- xcb_block_len = xcb_parts[xcb_parts_idx].iov_len;
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_xkb_key_sym_map_t);
- }
- if(present & XCB_XKB_MAP_PART_KEY_ACTIONS) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* acts_rtrn_count */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->acts_rtrn_count;
- xcb_block_len += nKeyActions * sizeof(xcb_keycode_t);
- xcb_parts[xcb_parts_idx].iov_len = nKeyActions * sizeof(xcb_keycode_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* acts_rtrn_acts */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->acts_rtrn_acts;
- xcb_block_len += totalActions * sizeof(xcb_xkb_action_t);
- xcb_parts[xcb_parts_idx].iov_len = totalActions * sizeof(xcb_xkb_action_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_xkb_action_t);
- }
- if(present & XCB_XKB_MAP_PART_KEY_BEHAVIORS) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* behaviors_rtrn */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->behaviors_rtrn;
- xcb_block_len += totalKeyBehaviors * sizeof(xcb_xkb_set_behavior_t);
- xcb_parts[xcb_parts_idx].iov_len = totalKeyBehaviors * sizeof(xcb_xkb_set_behavior_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_xkb_set_behavior_t);
- }
- if(present & XCB_XKB_MAP_PART_VIRTUAL_MODS) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* vmods_rtrn */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->vmods_rtrn;
- xcb_block_len += xcb_popcount(virtualMods) * sizeof(xcb_keycode_t);
- xcb_parts[xcb_parts_idx].iov_len = xcb_popcount(virtualMods) * sizeof(xcb_keycode_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- }
- if(present & XCB_XKB_MAP_PART_EXPLICIT_COMPONENTS) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* explicit_rtrn */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->explicit_rtrn;
- xcb_block_len += totalKeyExplicit * sizeof(xcb_xkb_set_explicit_t);
- xcb_parts[xcb_parts_idx].iov_len = totalKeyExplicit * sizeof(xcb_xkb_set_explicit_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_xkb_set_explicit_t);
- }
- if(present & XCB_XKB_MAP_PART_MODIFIER_MAP) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* modmap_rtrn */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->modmap_rtrn;
- xcb_block_len += totalModMapKeys * sizeof(xcb_xkb_key_mod_map_t);
- xcb_parts[xcb_parts_idx].iov_len = totalModMapKeys * sizeof(xcb_xkb_key_mod_map_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_xkb_key_mod_map_t);
- }
- if(present & XCB_XKB_MAP_PART_VIRTUAL_MOD_MAP) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* vmodmap_rtrn */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->vmodmap_rtrn;
- xcb_block_len += totalVModMapKeys * sizeof(xcb_xkb_key_v_mod_map_t);
- xcb_parts[xcb_parts_idx].iov_len = totalVModMapKeys * sizeof(xcb_xkb_key_v_mod_map_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_xkb_key_v_mod_map_t);
- }
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- if (NULL == xcb_out) {
- /* allocate memory */
- xcb_out = malloc(xcb_buffer_len);
- *_buffer = xcb_out;
- }
-
- xcb_tmp = xcb_out;
- for(i=0; i<xcb_parts_idx; i++) {
- if (0 != xcb_parts[i].iov_base && 0 != xcb_parts[i].iov_len)
- memcpy(xcb_tmp, xcb_parts[i].iov_base, xcb_parts[i].iov_len);
- if (0 != xcb_parts[i].iov_len)
- xcb_tmp += xcb_parts[i].iov_len;
- }
-
- return xcb_buffer_len;
-}
-
-int
-xcb_xkb_get_kbd_by_name_replies_types_map_unpack (const void *_buffer /**< */,
- uint8_t nTypes /**< */,
- uint8_t nKeySyms /**< */,
- uint8_t nKeyActions /**< */,
- uint16_t totalActions /**< */,
- uint8_t totalKeyBehaviors /**< */,
- uint16_t virtualMods /**< */,
- uint8_t totalKeyExplicit /**< */,
- uint8_t totalModMapKeys /**< */,
- uint8_t totalVModMapKeys /**< */,
- uint16_t present /**< */,
- xcb_xkb_get_kbd_by_name_replies_types_map_t *_aux /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to = 0;
-
- unsigned int i;
- unsigned int xcb_tmp_len;
-
- if(present & XCB_XKB_MAP_PART_KEY_TYPES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* types_rtrn */
- _aux->types_rtrn = (xcb_xkb_key_type_t *)xcb_tmp;
- for(i=0; i<nTypes; i++) {
- xcb_tmp_len = xcb_xkb_key_type_sizeof(xcb_tmp);
- xcb_block_len += xcb_tmp_len;
- xcb_tmp += xcb_tmp_len;
- }
- xcb_align_to = ALIGNOF(xcb_xkb_key_type_t);
- }
- if(present & XCB_XKB_MAP_PART_KEY_SYMS) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* syms_rtrn */
- _aux->syms_rtrn = (xcb_xkb_key_sym_map_t *)xcb_tmp;
- for(i=0; i<nKeySyms; i++) {
- xcb_tmp_len = xcb_xkb_key_sym_map_sizeof(xcb_tmp);
- xcb_block_len += xcb_tmp_len;
- xcb_tmp += xcb_tmp_len;
- }
- xcb_align_to = ALIGNOF(xcb_xkb_key_sym_map_t);
- }
- if(present & XCB_XKB_MAP_PART_KEY_ACTIONS) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* acts_rtrn_count */
- _aux->acts_rtrn_count = (uint8_t *)xcb_tmp;
- xcb_block_len += nKeyActions * sizeof(xcb_keycode_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(uint8_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* acts_rtrn_acts */
- _aux->acts_rtrn_acts = (xcb_xkb_action_t *)xcb_tmp;
- xcb_block_len += totalActions * sizeof(xcb_xkb_action_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_xkb_action_t);
- }
- if(present & XCB_XKB_MAP_PART_KEY_BEHAVIORS) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* behaviors_rtrn */
- _aux->behaviors_rtrn = (xcb_xkb_set_behavior_t *)xcb_tmp;
- xcb_block_len += totalKeyBehaviors * sizeof(xcb_xkb_set_behavior_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_xkb_set_behavior_t);
- }
- if(present & XCB_XKB_MAP_PART_VIRTUAL_MODS) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* vmods_rtrn */
- _aux->vmods_rtrn = (uint8_t *)xcb_tmp;
- xcb_block_len += xcb_popcount(virtualMods) * sizeof(xcb_keycode_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(uint8_t);
- }
- if(present & XCB_XKB_MAP_PART_EXPLICIT_COMPONENTS) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* explicit_rtrn */
- _aux->explicit_rtrn = (xcb_xkb_set_explicit_t *)xcb_tmp;
- xcb_block_len += totalKeyExplicit * sizeof(xcb_xkb_set_explicit_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_xkb_set_explicit_t);
- }
- if(present & XCB_XKB_MAP_PART_MODIFIER_MAP) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* modmap_rtrn */
- _aux->modmap_rtrn = (xcb_xkb_key_mod_map_t *)xcb_tmp;
- xcb_block_len += totalModMapKeys * sizeof(xcb_xkb_key_mod_map_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_xkb_key_mod_map_t);
- }
- if(present & XCB_XKB_MAP_PART_VIRTUAL_MOD_MAP) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* vmodmap_rtrn */
- _aux->vmodmap_rtrn = (xcb_xkb_key_v_mod_map_t *)xcb_tmp;
- xcb_block_len += totalVModMapKeys * sizeof(xcb_xkb_key_v_mod_map_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_xkb_key_v_mod_map_t);
- }
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-int
-xcb_xkb_get_kbd_by_name_replies_types_map_sizeof (const void *_buffer /**< */,
- uint8_t nTypes /**< */,
- uint8_t nKeySyms /**< */,
- uint8_t nKeyActions /**< */,
- uint16_t totalActions /**< */,
- uint8_t totalKeyBehaviors /**< */,
- uint16_t virtualMods /**< */,
- uint8_t totalKeyExplicit /**< */,
- uint8_t totalModMapKeys /**< */,
- uint8_t totalVModMapKeys /**< */,
- uint16_t present /**< */)
-{
- xcb_xkb_get_kbd_by_name_replies_types_map_t _aux;
- return xcb_xkb_get_kbd_by_name_replies_types_map_unpack(_buffer, nTypes, nKeySyms, nKeyActions, totalActions, totalKeyBehaviors, virtualMods, totalKeyExplicit, totalModMapKeys, totalVModMapKeys, present, &_aux);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_atom_t * xcb_xkb_get_kbd_by_name_replies_key_names_value_list_type_names
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *S
- ** @returns xcb_atom_t *
- **
- *****************************************************************************/
-
-xcb_atom_t *
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_type_names (const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- return /* replies */ S->key_names.valueList.typeNames;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_kbd_by_name_replies_key_names_value_list_type_names_length
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_type_names_length (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- return /* replies */ S->key_names.nTypes;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_get_kbd_by_name_replies_key_names_value_list_type_names_end
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_type_names_end (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = /* replies */ S->key_names.valueList.typeNames + /* replies */ S->key_names.nTypes;
- i.rem = 0;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** uint8_t * xcb_xkb_get_kbd_by_name_replies_key_names_value_list_n_levels_per_type
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *S
- ** @returns uint8_t *
- **
- *****************************************************************************/
-
-uint8_t *
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_n_levels_per_type (const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- return /* replies */ S->key_names.valueList.nLevelsPerType;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_kbd_by_name_replies_key_names_value_list_n_levels_per_type_length
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_n_levels_per_type_length (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- return /* replies */ S->key_names.nKTLevels;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_get_kbd_by_name_replies_key_names_value_list_n_levels_per_type_end
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_n_levels_per_type_end (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = /* replies */ S->key_names.valueList.nLevelsPerType + /* replies */ S->key_names.nKTLevels;
- i.rem = 0;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_atom_t * xcb_xkb_get_kbd_by_name_replies_key_names_value_list_kt_level_names
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *S
- ** @returns xcb_atom_t *
- **
- *****************************************************************************/
-
-xcb_atom_t *
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_kt_level_names (const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- return /* replies */ S->key_names.valueList.ktLevelNames;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_kbd_by_name_replies_key_names_value_list_kt_level_names_length
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_kt_level_names_length (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- return xcb_sumof(/* replies */ S->key_names.valueList.nLevelsPerType, /* replies */ S->key_names.nKTLevels);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_get_kbd_by_name_replies_key_names_value_list_kt_level_names_end
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_kt_level_names_end (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = /* replies */ S->key_names.valueList.ktLevelNames + xcb_sumof(/* replies */ S->key_names.valueList.nLevelsPerType, /* replies */ S->key_names.nKTLevels);
- i.rem = 0;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_atom_t * xcb_xkb_get_kbd_by_name_replies_key_names_value_list_indicator_names
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *S
- ** @returns xcb_atom_t *
- **
- *****************************************************************************/
-
-xcb_atom_t *
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_indicator_names (const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- return /* replies */ S->key_names.valueList.indicatorNames;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_kbd_by_name_replies_key_names_value_list_indicator_names_length
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_indicator_names_length (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- return xcb_popcount(/* replies */ S->key_names.indicators);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_get_kbd_by_name_replies_key_names_value_list_indicator_names_end
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_indicator_names_end (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = /* replies */ S->key_names.valueList.indicatorNames + xcb_popcount(/* replies */ S->key_names.indicators);
- i.rem = 0;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_atom_t * xcb_xkb_get_kbd_by_name_replies_key_names_value_list_virtual_mod_names
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *S
- ** @returns xcb_atom_t *
- **
- *****************************************************************************/
-
-xcb_atom_t *
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_virtual_mod_names (const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- return /* replies */ S->key_names.valueList.virtualModNames;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_kbd_by_name_replies_key_names_value_list_virtual_mod_names_length
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_virtual_mod_names_length (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- return xcb_popcount(/* replies */ S->key_names.virtualMods);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_get_kbd_by_name_replies_key_names_value_list_virtual_mod_names_end
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_virtual_mod_names_end (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = /* replies */ S->key_names.valueList.virtualModNames + xcb_popcount(/* replies */ S->key_names.virtualMods);
- i.rem = 0;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_atom_t * xcb_xkb_get_kbd_by_name_replies_key_names_value_list_groups
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *S
- ** @returns xcb_atom_t *
- **
- *****************************************************************************/
-
-xcb_atom_t *
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_groups (const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- return /* replies */ S->key_names.valueList.groups;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_kbd_by_name_replies_key_names_value_list_groups_length
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_groups_length (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- return xcb_popcount(/* replies */ S->key_names.groupNames);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_get_kbd_by_name_replies_key_names_value_list_groups_end
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_groups_end (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = /* replies */ S->key_names.valueList.groups + xcb_popcount(/* replies */ S->key_names.groupNames);
- i.rem = 0;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_name_t * xcb_xkb_get_kbd_by_name_replies_key_names_value_list_key_names
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *S
- ** @returns xcb_xkb_key_name_t *
- **
- *****************************************************************************/
-
-xcb_xkb_key_name_t *
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_key_names (const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- return /* replies */ S->key_names.valueList.keyNames;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_kbd_by_name_replies_key_names_value_list_key_names_length
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_key_names_length (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- return /* replies */ S->key_names.nKeys;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_name_iterator_t xcb_xkb_get_kbd_by_name_replies_key_names_value_list_key_names_iterator
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t *R
- ** @returns xcb_xkb_key_name_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_key_name_iterator_t
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_key_names_iterator (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- xcb_xkb_key_name_iterator_t i;
- i.data = /* replies */ S->key_names.valueList.keyNames;
- i.rem = /* replies */ S->key_names.nKeys;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_alias_t * xcb_xkb_get_kbd_by_name_replies_key_names_value_list_key_aliases
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *S
- ** @returns xcb_xkb_key_alias_t *
- **
- *****************************************************************************/
-
-xcb_xkb_key_alias_t *
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_key_aliases (const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- return /* replies */ S->key_names.valueList.keyAliases;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_kbd_by_name_replies_key_names_value_list_key_aliases_length
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_key_aliases_length (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- return /* replies */ S->key_names.nKeyAliases;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_key_alias_iterator_t xcb_xkb_get_kbd_by_name_replies_key_names_value_list_key_aliases_iterator
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t *R
- ** @returns xcb_xkb_key_alias_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_key_alias_iterator_t
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_key_aliases_iterator (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- xcb_xkb_key_alias_iterator_t i;
- i.data = /* replies */ S->key_names.valueList.keyAliases;
- i.rem = /* replies */ S->key_names.nKeyAliases;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_atom_t * xcb_xkb_get_kbd_by_name_replies_key_names_value_list_radio_group_names
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *S
- ** @returns xcb_atom_t *
- **
- *****************************************************************************/
-
-xcb_atom_t *
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_radio_group_names (const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- return /* replies */ S->key_names.valueList.radioGroupNames;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_kbd_by_name_replies_key_names_value_list_radio_group_names_length
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_radio_group_names_length (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- return /* replies */ S->key_names.nRadioGroups;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_get_kbd_by_name_replies_key_names_value_list_radio_group_names_end
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_radio_group_names_end (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = /* replies */ S->key_names.valueList.radioGroupNames + /* replies */ S->key_names.nRadioGroups;
- i.rem = 0;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-int
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_serialize (void **_buffer /**< */,
- uint8_t nTypes /**< */,
- uint16_t nKTLevels /**< */,
- uint32_t indicators /**< */,
- uint16_t virtualMods /**< */,
- uint8_t groupNames /**< */,
- uint8_t nKeys /**< */,
- uint8_t nKeyAliases /**< */,
- uint8_t nRadioGroups /**< */,
- uint32_t which /**< */,
- const xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t *_aux /**< */)
-{
- char *xcb_out = *_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_align_to = 0;
-
- unsigned int xcb_pad = 0;
- char xcb_pad0[3] = {0, 0, 0};
- struct iovec xcb_parts[25];
- unsigned int xcb_parts_idx = 0;
- unsigned int xcb_block_len = 0;
- unsigned int i;
- char *xcb_tmp;
-
- if(which & XCB_XKB_NAME_DETAIL_KEYCODES) {
- /* xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t.keycodesName */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->keycodesName;
- xcb_block_len += sizeof(xcb_atom_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_atom_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_GEOMETRY) {
- /* xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t.geometryName */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->geometryName;
- xcb_block_len += sizeof(xcb_atom_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_atom_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_SYMBOLS) {
- /* xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t.symbolsName */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->symbolsName;
- xcb_block_len += sizeof(xcb_atom_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_atom_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_PHYS_SYMBOLS) {
- /* xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t.physSymbolsName */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->physSymbolsName;
- xcb_block_len += sizeof(xcb_atom_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_atom_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_TYPES) {
- /* xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t.typesName */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->typesName;
- xcb_block_len += sizeof(xcb_atom_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_atom_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_COMPAT) {
- /* xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t.compatName */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->compatName;
- xcb_block_len += sizeof(xcb_atom_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_atom_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_KEY_TYPE_NAMES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* typeNames */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->typeNames;
- xcb_block_len += nTypes * sizeof(xcb_atom_t);
- xcb_parts[xcb_parts_idx].iov_len = nTypes * sizeof(xcb_atom_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_KT_LEVEL_NAMES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* nLevelsPerType */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->nLevelsPerType;
- xcb_block_len += nKTLevels * sizeof(uint8_t);
- xcb_parts[xcb_parts_idx].iov_len = nKTLevels * sizeof(uint8_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* ktLevelNames */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->ktLevelNames;
- xcb_block_len += xcb_sumof(_aux->nLevelsPerType, nKTLevels) * sizeof(xcb_atom_t);
- xcb_parts[xcb_parts_idx].iov_len = xcb_sumof(_aux->nLevelsPerType, nKTLevels) * sizeof(xcb_atom_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_INDICATOR_NAMES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* indicatorNames */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->indicatorNames;
- xcb_block_len += xcb_popcount(indicators) * sizeof(xcb_atom_t);
- xcb_parts[xcb_parts_idx].iov_len = xcb_popcount(indicators) * sizeof(xcb_atom_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_VIRTUAL_MOD_NAMES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* virtualModNames */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->virtualModNames;
- xcb_block_len += xcb_popcount(virtualMods) * sizeof(xcb_atom_t);
- xcb_parts[xcb_parts_idx].iov_len = xcb_popcount(virtualMods) * sizeof(xcb_atom_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_GROUP_NAMES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* groups */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->groups;
- xcb_block_len += xcb_popcount(groupNames) * sizeof(xcb_atom_t);
- xcb_parts[xcb_parts_idx].iov_len = xcb_popcount(groupNames) * sizeof(xcb_atom_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_KEY_NAMES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* keyNames */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->keyNames;
- xcb_block_len += nKeys * sizeof(xcb_xkb_key_name_t);
- xcb_parts[xcb_parts_idx].iov_len = nKeys * sizeof(xcb_xkb_key_name_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_xkb_key_name_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_KEY_ALIASES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* keyAliases */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->keyAliases;
- xcb_block_len += nKeyAliases * sizeof(xcb_xkb_key_alias_t);
- xcb_parts[xcb_parts_idx].iov_len = nKeyAliases * sizeof(xcb_xkb_key_alias_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_xkb_key_alias_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_RG_NAMES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* radioGroupNames */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->radioGroupNames;
- xcb_block_len += nRadioGroups * sizeof(xcb_atom_t);
- xcb_parts[xcb_parts_idx].iov_len = nRadioGroups * sizeof(xcb_atom_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- if (NULL == xcb_out) {
- /* allocate memory */
- xcb_out = malloc(xcb_buffer_len);
- *_buffer = xcb_out;
- }
-
- xcb_tmp = xcb_out;
- for(i=0; i<xcb_parts_idx; i++) {
- if (0 != xcb_parts[i].iov_base && 0 != xcb_parts[i].iov_len)
- memcpy(xcb_tmp, xcb_parts[i].iov_base, xcb_parts[i].iov_len);
- if (0 != xcb_parts[i].iov_len)
- xcb_tmp += xcb_parts[i].iov_len;
- }
-
- return xcb_buffer_len;
-}
-
-int
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_unpack (const void *_buffer /**< */,
- uint8_t nTypes /**< */,
- uint16_t nKTLevels /**< */,
- uint32_t indicators /**< */,
- uint16_t virtualMods /**< */,
- uint8_t groupNames /**< */,
- uint8_t nKeys /**< */,
- uint8_t nKeyAliases /**< */,
- uint8_t nRadioGroups /**< */,
- uint32_t which /**< */,
- xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t *_aux /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to = 0;
-
-
- if(which & XCB_XKB_NAME_DETAIL_KEYCODES) {
- /* xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t.keycodesName */
- _aux->keycodesName = *(xcb_atom_t *)xcb_tmp;
- xcb_block_len += sizeof(xcb_atom_t);
- xcb_tmp += sizeof(xcb_atom_t);
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_GEOMETRY) {
- /* xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t.geometryName */
- _aux->geometryName = *(xcb_atom_t *)xcb_tmp;
- xcb_block_len += sizeof(xcb_atom_t);
- xcb_tmp += sizeof(xcb_atom_t);
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_SYMBOLS) {
- /* xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t.symbolsName */
- _aux->symbolsName = *(xcb_atom_t *)xcb_tmp;
- xcb_block_len += sizeof(xcb_atom_t);
- xcb_tmp += sizeof(xcb_atom_t);
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_PHYS_SYMBOLS) {
- /* xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t.physSymbolsName */
- _aux->physSymbolsName = *(xcb_atom_t *)xcb_tmp;
- xcb_block_len += sizeof(xcb_atom_t);
- xcb_tmp += sizeof(xcb_atom_t);
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_TYPES) {
- /* xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t.typesName */
- _aux->typesName = *(xcb_atom_t *)xcb_tmp;
- xcb_block_len += sizeof(xcb_atom_t);
- xcb_tmp += sizeof(xcb_atom_t);
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_COMPAT) {
- /* xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t.compatName */
- _aux->compatName = *(xcb_atom_t *)xcb_tmp;
- xcb_block_len += sizeof(xcb_atom_t);
- xcb_tmp += sizeof(xcb_atom_t);
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_KEY_TYPE_NAMES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* typeNames */
- _aux->typeNames = (xcb_atom_t *)xcb_tmp;
- xcb_block_len += nTypes * sizeof(xcb_atom_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_KT_LEVEL_NAMES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* nLevelsPerType */
- _aux->nLevelsPerType = (uint8_t *)xcb_tmp;
- xcb_block_len += nKTLevels * sizeof(uint8_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(uint8_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* ktLevelNames */
- _aux->ktLevelNames = (xcb_atom_t *)xcb_tmp;
- xcb_block_len += xcb_sumof(_aux->nLevelsPerType, nKTLevels) * sizeof(xcb_atom_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_INDICATOR_NAMES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* indicatorNames */
- _aux->indicatorNames = (xcb_atom_t *)xcb_tmp;
- xcb_block_len += xcb_popcount(indicators) * sizeof(xcb_atom_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_VIRTUAL_MOD_NAMES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* virtualModNames */
- _aux->virtualModNames = (xcb_atom_t *)xcb_tmp;
- xcb_block_len += xcb_popcount(virtualMods) * sizeof(xcb_atom_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_GROUP_NAMES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* groups */
- _aux->groups = (xcb_atom_t *)xcb_tmp;
- xcb_block_len += xcb_popcount(groupNames) * sizeof(xcb_atom_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_KEY_NAMES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* keyNames */
- _aux->keyNames = (xcb_xkb_key_name_t *)xcb_tmp;
- xcb_block_len += nKeys * sizeof(xcb_xkb_key_name_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_xkb_key_name_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_KEY_ALIASES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* keyAliases */
- _aux->keyAliases = (xcb_xkb_key_alias_t *)xcb_tmp;
- xcb_block_len += nKeyAliases * sizeof(xcb_xkb_key_alias_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_xkb_key_alias_t);
- }
- if(which & XCB_XKB_NAME_DETAIL_RG_NAMES) {
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* radioGroupNames */
- _aux->radioGroupNames = (xcb_atom_t *)xcb_tmp;
- xcb_block_len += nRadioGroups * sizeof(xcb_atom_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- }
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-int
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_sizeof (const void *_buffer /**< */,
- uint8_t nTypes /**< */,
- uint16_t nKTLevels /**< */,
- uint32_t indicators /**< */,
- uint16_t virtualMods /**< */,
- uint8_t groupNames /**< */,
- uint8_t nKeys /**< */,
- uint8_t nKeyAliases /**< */,
- uint8_t nRadioGroups /**< */,
- uint32_t which /**< */)
-{
- xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t _aux;
- return xcb_xkb_get_kbd_by_name_replies_key_names_value_list_unpack(_buffer, nTypes, nKTLevels, indicators, virtualMods, groupNames, nKeys, nKeyAliases, nRadioGroups, which, &_aux);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_kbd_by_name_replies_types_map_t * xcb_xkb_get_kbd_by_name_replies_types_map
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *R
- ** @returns xcb_xkb_get_kbd_by_name_replies_types_map_t *
- **
- *****************************************************************************/
-
-xcb_xkb_get_kbd_by_name_replies_types_map_t *
-xcb_xkb_get_kbd_by_name_replies_types_map (const xcb_xkb_get_kbd_by_name_replies_t *R /**< */)
-{
- return (xcb_xkb_get_kbd_by_name_replies_types_map_t *) (R + 1);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_sym_interpret_t * xcb_xkb_get_kbd_by_name_replies_compat_map_si_rtrn
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *S
- ** @returns xcb_xkb_sym_interpret_t *
- **
- *****************************************************************************/
-
-xcb_xkb_sym_interpret_t *
-xcb_xkb_get_kbd_by_name_replies_compat_map_si_rtrn (const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- return /* replies */ S->compat_map.si_rtrn;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_kbd_by_name_replies_compat_map_si_rtrn_length
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_kbd_by_name_replies_compat_map_si_rtrn_length (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- return /* replies */ S->compat_map.nSIRtrn;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_sym_interpret_iterator_t xcb_xkb_get_kbd_by_name_replies_compat_map_si_rtrn_iterator
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *R
- ** @returns xcb_xkb_sym_interpret_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_sym_interpret_iterator_t
-xcb_xkb_get_kbd_by_name_replies_compat_map_si_rtrn_iterator (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- xcb_xkb_sym_interpret_iterator_t i;
- i.data = /* replies */ S->compat_map.si_rtrn;
- i.rem = /* replies */ S->compat_map.nSIRtrn;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_mod_def_t * xcb_xkb_get_kbd_by_name_replies_compat_map_group_rtrn
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *S
- ** @returns xcb_xkb_mod_def_t *
- **
- *****************************************************************************/
-
-xcb_xkb_mod_def_t *
-xcb_xkb_get_kbd_by_name_replies_compat_map_group_rtrn (const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- return /* replies */ S->compat_map.group_rtrn;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_kbd_by_name_replies_compat_map_group_rtrn_length
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_kbd_by_name_replies_compat_map_group_rtrn_length (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- return xcb_popcount(/* replies */ S->compat_map.groupsRtrn);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_mod_def_iterator_t xcb_xkb_get_kbd_by_name_replies_compat_map_group_rtrn_iterator
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *R
- ** @returns xcb_xkb_mod_def_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_mod_def_iterator_t
-xcb_xkb_get_kbd_by_name_replies_compat_map_group_rtrn_iterator (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- xcb_xkb_mod_def_iterator_t i;
- i.data = /* replies */ S->compat_map.group_rtrn;
- i.rem = xcb_popcount(/* replies */ S->compat_map.groupsRtrn);
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_indicator_map_t * xcb_xkb_get_kbd_by_name_replies_indicator_maps_maps
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *S
- ** @returns xcb_xkb_indicator_map_t *
- **
- *****************************************************************************/
-
-xcb_xkb_indicator_map_t *
-xcb_xkb_get_kbd_by_name_replies_indicator_maps_maps (const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- return /* replies */ S->indicator_maps.maps;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_kbd_by_name_replies_indicator_maps_maps_length
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_kbd_by_name_replies_indicator_maps_maps_length (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- return /* replies */ S->indicator_maps.nIndicators;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_indicator_map_iterator_t xcb_xkb_get_kbd_by_name_replies_indicator_maps_maps_iterator
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *R
- ** @returns xcb_xkb_indicator_map_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_indicator_map_iterator_t
-xcb_xkb_get_kbd_by_name_replies_indicator_maps_maps_iterator (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *S /**< */)
-{
- xcb_xkb_indicator_map_iterator_t i;
- i.data = /* replies */ S->indicator_maps.maps;
- i.rem = /* replies */ S->indicator_maps.nIndicators;
- i.index = (char *) i.data - (char *) S;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t * xcb_xkb_get_kbd_by_name_replies_key_names_value_list
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *R
- ** @returns xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t *
- **
- *****************************************************************************/
-
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t *
-xcb_xkb_get_kbd_by_name_replies_key_names_value_list (const xcb_xkb_get_kbd_by_name_replies_t *R /**< */)
-{
- return (xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t *) (R + 1);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_counted_string_16_t * xcb_xkb_get_kbd_by_name_replies_geometry_label_font
- **
- ** @param const xcb_xkb_get_kbd_by_name_replies_t *R
- ** @returns xcb_xkb_counted_string_16_t *
- **
- *****************************************************************************/
-
-xcb_xkb_counted_string_16_t *
-xcb_xkb_get_kbd_by_name_replies_geometry_label_font (const xcb_xkb_get_kbd_by_name_replies_t *R /**< */)
-{
- return (xcb_xkb_counted_string_16_t *) (R + 1);
-}
-
-int
-xcb_xkb_get_kbd_by_name_replies_serialize (void **_buffer /**< */,
- uint16_t reported /**< */,
- const xcb_xkb_get_kbd_by_name_replies_t *_aux /**< */)
-{
- char *xcb_out = *_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_align_to = 0;
-
- unsigned int xcb_pad = 0;
- char xcb_pad0[3] = {0, 0, 0};
- struct iovec xcb_parts[96];
- unsigned int xcb_parts_idx = 0;
- unsigned int xcb_block_len = 0;
- unsigned int i;
- char *xcb_tmp;
-
- if((reported & XCB_XKB_GBN_DETAIL_TYPES) ||
- (reported & XCB_XKB_GBN_DETAIL_CLIENT_SYMBOLS) ||
- (reported & XCB_XKB_GBN_DETAIL_SERVER_SYMBOLS)) {
- /* xcb_xkb_get_kbd_by_name_replies_t.types.getmap_type */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->types.getmap_type;
- xcb_block_len += sizeof(uint8_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.typeDeviceID */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->types.typeDeviceID;
- xcb_block_len += sizeof(uint8_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.getmap_sequence */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->types.getmap_sequence;
- xcb_block_len += sizeof(uint16_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.getmap_length */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->types.getmap_length;
- xcb_block_len += sizeof(uint32_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint32_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.pad0 */
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_block_len += sizeof(uint8_t)*2;
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t)*2;
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.typeMinKeyCode */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->types.typeMinKeyCode;
- xcb_block_len += sizeof(xcb_keycode_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_keycode_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_keycode_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.typeMaxKeyCode */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->types.typeMaxKeyCode;
- xcb_block_len += sizeof(xcb_keycode_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_keycode_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_keycode_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.present */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->types.present;
- xcb_block_len += sizeof(uint16_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.firstType */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->types.firstType;
- xcb_block_len += sizeof(uint8_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.nTypes */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->types.nTypes;
- xcb_block_len += sizeof(uint8_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.totalTypes */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->types.totalTypes;
- xcb_block_len += sizeof(uint8_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.firstKeySym */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->types.firstKeySym;
- xcb_block_len += sizeof(xcb_keycode_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_keycode_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_keycode_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.totalSyms */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->types.totalSyms;
- xcb_block_len += sizeof(uint16_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.nKeySyms */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->types.nKeySyms;
- xcb_block_len += sizeof(uint8_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.firstKeyAction */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->types.firstKeyAction;
- xcb_block_len += sizeof(xcb_keycode_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_keycode_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_keycode_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.totalActions */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->types.totalActions;
- xcb_block_len += sizeof(uint16_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.nKeyActions */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->types.nKeyActions;
- xcb_block_len += sizeof(uint8_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.firstKeyBehavior */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->types.firstKeyBehavior;
- xcb_block_len += sizeof(xcb_keycode_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_keycode_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_keycode_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.nKeyBehaviors */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->types.nKeyBehaviors;
- xcb_block_len += sizeof(uint8_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.totalKeyBehaviors */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->types.totalKeyBehaviors;
- xcb_block_len += sizeof(uint8_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.firstKeyExplicit */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->types.firstKeyExplicit;
- xcb_block_len += sizeof(xcb_keycode_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_keycode_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_keycode_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.nKeyExplicit */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->types.nKeyExplicit;
- xcb_block_len += sizeof(uint8_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.totalKeyExplicit */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->types.totalKeyExplicit;
- xcb_block_len += sizeof(uint8_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.firstModMapKey */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->types.firstModMapKey;
- xcb_block_len += sizeof(xcb_keycode_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_keycode_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_keycode_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.nModMapKeys */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->types.nModMapKeys;
- xcb_block_len += sizeof(uint8_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.totalModMapKeys */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->types.totalModMapKeys;
- xcb_block_len += sizeof(uint8_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.firstVModMapKey */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->types.firstVModMapKey;
- xcb_block_len += sizeof(xcb_keycode_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_keycode_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_keycode_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.nVModMapKeys */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->types.nVModMapKeys;
- xcb_block_len += sizeof(uint8_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.totalVModMapKeys */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->types.totalVModMapKeys;
- xcb_block_len += sizeof(uint8_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.pad1 */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &xcb_pad;
- xcb_block_len += sizeof(uint8_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.virtualMods */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->types.virtualMods;
- xcb_block_len += sizeof(uint16_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint16_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* map */
- xcb_parts[xcb_parts_idx].iov_base = (char *)0;
- xcb_block_len += xcb_xkb_get_kbd_by_name_replies_types_map_serialize(&xcb_parts[xcb_parts_idx].iov_base, _aux->types.nTypes, _aux->types.nKeySyms, _aux->types.nKeyActions, _aux->types.totalActions, _aux->types.totalKeyBehaviors, _aux->types.virtualMods, _aux->types.totalKeyExplicit, _aux->types.totalModMapKeys, _aux->types.totalVModMapKeys, _aux->types.present, &_aux->types.map);
- xcb_parts[xcb_parts_idx].iov_len = xcb_xkb_get_kbd_by_name_replies_types_map_serialize(&xcb_parts[xcb_parts_idx].iov_base, _aux->types.nTypes, _aux->types.nKeySyms, _aux->types.nKeyActions, _aux->types.totalActions, _aux->types.totalKeyBehaviors, _aux->types.virtualMods, _aux->types.totalKeyExplicit, _aux->types.totalModMapKeys, _aux->types.totalVModMapKeys, _aux->types.present, &_aux->types.map);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_xkb_get_kbd_by_name_replies_types_map_t);
- }
- if(reported & XCB_XKB_GBN_DETAIL_COMPAT_MAP) {
- /* xcb_xkb_get_kbd_by_name_replies_t.compat_map.compatmap_type */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->compat_map.compatmap_type;
- xcb_block_len += sizeof(uint8_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.compat_map.compatDeviceID */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->compat_map.compatDeviceID;
- xcb_block_len += sizeof(uint8_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.compat_map.compatmap_sequence */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->compat_map.compatmap_sequence;
- xcb_block_len += sizeof(uint16_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.compat_map.compatmap_length */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->compat_map.compatmap_length;
- xcb_block_len += sizeof(uint32_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint32_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.compat_map.groupsRtrn */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->compat_map.groupsRtrn;
- xcb_block_len += sizeof(uint8_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.compat_map.pad0 */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &xcb_pad;
- xcb_block_len += sizeof(uint8_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.compat_map.firstSIRtrn */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->compat_map.firstSIRtrn;
- xcb_block_len += sizeof(uint16_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.compat_map.nSIRtrn */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->compat_map.nSIRtrn;
- xcb_block_len += sizeof(uint16_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.compat_map.nTotalSI */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->compat_map.nTotalSI;
- xcb_block_len += sizeof(uint16_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.compat_map.pad1 */
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_block_len += sizeof(uint8_t)*16;
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t)*16;
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* si_rtrn */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->compat_map.si_rtrn;
- xcb_block_len += _aux->compat_map.nSIRtrn * sizeof(xcb_xkb_sym_interpret_t);
- xcb_parts[xcb_parts_idx].iov_len = _aux->compat_map.nSIRtrn * sizeof(xcb_xkb_sym_interpret_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_xkb_sym_interpret_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* group_rtrn */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->compat_map.group_rtrn;
- xcb_block_len += xcb_popcount(_aux->compat_map.groupsRtrn) * sizeof(xcb_xkb_mod_def_t);
- xcb_parts[xcb_parts_idx].iov_len = xcb_popcount(_aux->compat_map.groupsRtrn) * sizeof(xcb_xkb_mod_def_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_xkb_mod_def_t);
- }
- if(reported & XCB_XKB_GBN_DETAIL_INDICATOR_MAPS) {
- /* xcb_xkb_get_kbd_by_name_replies_t.indicator_maps.indicatormap_type */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->indicator_maps.indicatormap_type;
- xcb_block_len += sizeof(uint8_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.indicator_maps.indicatorDeviceID */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->indicator_maps.indicatorDeviceID;
- xcb_block_len += sizeof(uint8_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.indicator_maps.indicatormap_sequence */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->indicator_maps.indicatormap_sequence;
- xcb_block_len += sizeof(uint16_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.indicator_maps.indicatormap_length */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->indicator_maps.indicatormap_length;
- xcb_block_len += sizeof(uint32_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint32_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.indicator_maps.which */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->indicator_maps.which;
- xcb_block_len += sizeof(uint32_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint32_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.indicator_maps.realIndicators */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->indicator_maps.realIndicators;
- xcb_block_len += sizeof(uint32_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint32_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.indicator_maps.nIndicators */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->indicator_maps.nIndicators;
- xcb_block_len += sizeof(uint8_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.indicator_maps.pad0 */
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_block_len += sizeof(uint8_t)*15;
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t)*15;
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* maps */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->indicator_maps.maps;
- xcb_block_len += _aux->indicator_maps.nIndicators * sizeof(xcb_xkb_indicator_map_t);
- xcb_parts[xcb_parts_idx].iov_len = _aux->indicator_maps.nIndicators * sizeof(xcb_xkb_indicator_map_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_xkb_indicator_map_t);
- }
- if((reported & XCB_XKB_GBN_DETAIL_KEY_NAMES) ||
- (reported & XCB_XKB_GBN_DETAIL_OTHER_NAMES)) {
- /* xcb_xkb_get_kbd_by_name_replies_t.key_names.keyname_type */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->key_names.keyname_type;
- xcb_block_len += sizeof(uint8_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.key_names.keyDeviceID */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->key_names.keyDeviceID;
- xcb_block_len += sizeof(uint8_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.key_names.keyname_sequence */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->key_names.keyname_sequence;
- xcb_block_len += sizeof(uint16_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.key_names.keyname_length */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->key_names.keyname_length;
- xcb_block_len += sizeof(uint32_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint32_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.key_names.which */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->key_names.which;
- xcb_block_len += sizeof(uint32_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint32_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.key_names.keyMinKeyCode */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->key_names.keyMinKeyCode;
- xcb_block_len += sizeof(xcb_keycode_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_keycode_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_keycode_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.key_names.keyMaxKeyCode */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->key_names.keyMaxKeyCode;
- xcb_block_len += sizeof(xcb_keycode_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_keycode_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_keycode_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.key_names.nTypes */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->key_names.nTypes;
- xcb_block_len += sizeof(uint8_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.key_names.groupNames */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->key_names.groupNames;
- xcb_block_len += sizeof(uint8_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.key_names.virtualMods */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->key_names.virtualMods;
- xcb_block_len += sizeof(uint16_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.key_names.firstKey */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->key_names.firstKey;
- xcb_block_len += sizeof(xcb_keycode_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_keycode_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_keycode_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.key_names.nKeys */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->key_names.nKeys;
- xcb_block_len += sizeof(uint8_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.key_names.indicators */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->key_names.indicators;
- xcb_block_len += sizeof(uint32_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint32_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.key_names.nRadioGroups */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->key_names.nRadioGroups;
- xcb_block_len += sizeof(uint8_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.key_names.nKeyAliases */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->key_names.nKeyAliases;
- xcb_block_len += sizeof(uint8_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.key_names.nKTLevels */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->key_names.nKTLevels;
- xcb_block_len += sizeof(uint16_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.key_names.pad0 */
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_block_len += sizeof(uint8_t)*4;
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t)*4;
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* valueList */
- xcb_parts[xcb_parts_idx].iov_base = (char *)0;
- xcb_block_len += xcb_xkb_get_kbd_by_name_replies_key_names_value_list_serialize(&xcb_parts[xcb_parts_idx].iov_base, _aux->key_names.nTypes, _aux->key_names.nKTLevels, _aux->key_names.indicators, _aux->key_names.virtualMods, _aux->key_names.groupNames, _aux->key_names.nKeys, _aux->key_names.nKeyAliases, _aux->key_names.nRadioGroups, _aux->key_names.which, &_aux->key_names.valueList);
- xcb_parts[xcb_parts_idx].iov_len = xcb_xkb_get_kbd_by_name_replies_key_names_value_list_serialize(&xcb_parts[xcb_parts_idx].iov_base, _aux->key_names.nTypes, _aux->key_names.nKTLevels, _aux->key_names.indicators, _aux->key_names.virtualMods, _aux->key_names.groupNames, _aux->key_names.nKeys, _aux->key_names.nKeyAliases, _aux->key_names.nRadioGroups, _aux->key_names.which, &_aux->key_names.valueList);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t);
- }
- if(reported & XCB_XKB_GBN_DETAIL_GEOMETRY) {
- /* xcb_xkb_get_kbd_by_name_replies_t.geometry.geometry_type */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->geometry.geometry_type;
- xcb_block_len += sizeof(uint8_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.geometry.geometryDeviceID */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->geometry.geometryDeviceID;
- xcb_block_len += sizeof(uint8_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.geometry.geometry_sequence */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->geometry.geometry_sequence;
- xcb_block_len += sizeof(uint16_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.geometry.geometry_length */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->geometry.geometry_length;
- xcb_block_len += sizeof(uint32_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint32_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.geometry.name */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->geometry.name;
- xcb_block_len += sizeof(xcb_atom_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(xcb_atom_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_atom_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.geometry.geometryFound */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->geometry.geometryFound;
- xcb_block_len += sizeof(uint8_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.geometry.pad0 */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &xcb_pad;
- xcb_block_len += sizeof(uint8_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.geometry.widthMM */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->geometry.widthMM;
- xcb_block_len += sizeof(uint16_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.geometry.heightMM */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->geometry.heightMM;
- xcb_block_len += sizeof(uint16_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.geometry.nProperties */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->geometry.nProperties;
- xcb_block_len += sizeof(uint16_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.geometry.nColors */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->geometry.nColors;
- xcb_block_len += sizeof(uint16_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.geometry.nShapes */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->geometry.nShapes;
- xcb_block_len += sizeof(uint16_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.geometry.nSections */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->geometry.nSections;
- xcb_block_len += sizeof(uint16_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.geometry.nDoodads */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->geometry.nDoodads;
- xcb_block_len += sizeof(uint16_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.geometry.nKeyAliases */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->geometry.nKeyAliases;
- xcb_block_len += sizeof(uint16_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint16_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.geometry.baseColorNdx */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->geometry.baseColorNdx;
- xcb_block_len += sizeof(uint8_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.geometry.labelColorNdx */
- xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->geometry.labelColorNdx;
- xcb_block_len += sizeof(uint8_t);
- xcb_parts[xcb_parts_idx].iov_len = sizeof(uint8_t);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(uint8_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* labelFont */
- xcb_parts[xcb_parts_idx].iov_base = (char *) _aux->geometry.labelFont;
- xcb_block_len += xcb_xkb_counted_string_16_sizeof(_aux->geometry.labelFont);
- xcb_parts[xcb_parts_idx].iov_len = xcb_xkb_counted_string_16_sizeof(_aux->geometry.labelFont);
- xcb_parts_idx++;
- xcb_align_to = ALIGNOF(xcb_xkb_counted_string_16_t);
- }
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
- xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
- xcb_parts_idx++;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- if (NULL == xcb_out) {
- /* allocate memory */
- xcb_out = malloc(xcb_buffer_len);
- *_buffer = xcb_out;
- }
-
- xcb_tmp = xcb_out;
- for(i=0; i<xcb_parts_idx; i++) {
- if (0 != xcb_parts[i].iov_base && 0 != xcb_parts[i].iov_len)
- memcpy(xcb_tmp, xcb_parts[i].iov_base, xcb_parts[i].iov_len);
- if (0 != xcb_parts[i].iov_len)
- xcb_tmp += xcb_parts[i].iov_len;
- }
-
- return xcb_buffer_len;
-}
-
-int
-xcb_xkb_get_kbd_by_name_replies_unpack (const void *_buffer /**< */,
- uint16_t reported /**< */,
- xcb_xkb_get_kbd_by_name_replies_t *_aux /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to = 0;
-
-
- if((reported & XCB_XKB_GBN_DETAIL_TYPES) ||
- (reported & XCB_XKB_GBN_DETAIL_CLIENT_SYMBOLS) ||
- (reported & XCB_XKB_GBN_DETAIL_SERVER_SYMBOLS)) {
- /* xcb_xkb_get_kbd_by_name_replies_t.types.getmap_type */
- _aux->types.getmap_type = *(uint8_t *)xcb_tmp;
- xcb_block_len += sizeof(uint8_t);
- xcb_tmp += sizeof(uint8_t);
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.typeDeviceID */
- _aux->types.typeDeviceID = *(uint8_t *)xcb_tmp;
- xcb_block_len += sizeof(uint8_t);
- xcb_tmp += sizeof(uint8_t);
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.getmap_sequence */
- _aux->types.getmap_sequence = *(uint16_t *)xcb_tmp;
- xcb_block_len += sizeof(uint16_t);
- xcb_tmp += sizeof(uint16_t);
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.getmap_length */
- _aux->types.getmap_length = *(uint32_t *)xcb_tmp;
- xcb_block_len += sizeof(uint32_t);
- xcb_tmp += sizeof(uint32_t);
- xcb_align_to = ALIGNOF(uint32_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.pad0 */
- _aux->types.pad0[0] = *(uint8_t *)xcb_tmp;
- _aux->types.pad0[1] = *(uint8_t *)xcb_tmp;
- xcb_block_len += sizeof(uint8_t) * 2;
- xcb_tmp += sizeof(uint8_t) * 2;
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.typeMinKeyCode */
- _aux->types.typeMinKeyCode = *(xcb_keycode_t *)xcb_tmp;
- xcb_block_len += sizeof(xcb_keycode_t);
- xcb_tmp += sizeof(xcb_keycode_t);
- xcb_align_to = ALIGNOF(xcb_keycode_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.typeMaxKeyCode */
- _aux->types.typeMaxKeyCode = *(xcb_keycode_t *)xcb_tmp;
- xcb_block_len += sizeof(xcb_keycode_t);
- xcb_tmp += sizeof(xcb_keycode_t);
- xcb_align_to = ALIGNOF(xcb_keycode_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.present */
- _aux->types.present = *(uint16_t *)xcb_tmp;
- xcb_block_len += sizeof(uint16_t);
- xcb_tmp += sizeof(uint16_t);
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.firstType */
- _aux->types.firstType = *(uint8_t *)xcb_tmp;
- xcb_block_len += sizeof(uint8_t);
- xcb_tmp += sizeof(uint8_t);
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.nTypes */
- _aux->types.nTypes = *(uint8_t *)xcb_tmp;
- xcb_block_len += sizeof(uint8_t);
- xcb_tmp += sizeof(uint8_t);
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.totalTypes */
- _aux->types.totalTypes = *(uint8_t *)xcb_tmp;
- xcb_block_len += sizeof(uint8_t);
- xcb_tmp += sizeof(uint8_t);
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.firstKeySym */
- _aux->types.firstKeySym = *(xcb_keycode_t *)xcb_tmp;
- xcb_block_len += sizeof(xcb_keycode_t);
- xcb_tmp += sizeof(xcb_keycode_t);
- xcb_align_to = ALIGNOF(xcb_keycode_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.totalSyms */
- _aux->types.totalSyms = *(uint16_t *)xcb_tmp;
- xcb_block_len += sizeof(uint16_t);
- xcb_tmp += sizeof(uint16_t);
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.nKeySyms */
- _aux->types.nKeySyms = *(uint8_t *)xcb_tmp;
- xcb_block_len += sizeof(uint8_t);
- xcb_tmp += sizeof(uint8_t);
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.firstKeyAction */
- _aux->types.firstKeyAction = *(xcb_keycode_t *)xcb_tmp;
- xcb_block_len += sizeof(xcb_keycode_t);
- xcb_tmp += sizeof(xcb_keycode_t);
- xcb_align_to = ALIGNOF(xcb_keycode_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.totalActions */
- _aux->types.totalActions = *(uint16_t *)xcb_tmp;
- xcb_block_len += sizeof(uint16_t);
- xcb_tmp += sizeof(uint16_t);
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.nKeyActions */
- _aux->types.nKeyActions = *(uint8_t *)xcb_tmp;
- xcb_block_len += sizeof(uint8_t);
- xcb_tmp += sizeof(uint8_t);
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.firstKeyBehavior */
- _aux->types.firstKeyBehavior = *(xcb_keycode_t *)xcb_tmp;
- xcb_block_len += sizeof(xcb_keycode_t);
- xcb_tmp += sizeof(xcb_keycode_t);
- xcb_align_to = ALIGNOF(xcb_keycode_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.nKeyBehaviors */
- _aux->types.nKeyBehaviors = *(uint8_t *)xcb_tmp;
- xcb_block_len += sizeof(uint8_t);
- xcb_tmp += sizeof(uint8_t);
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.totalKeyBehaviors */
- _aux->types.totalKeyBehaviors = *(uint8_t *)xcb_tmp;
- xcb_block_len += sizeof(uint8_t);
- xcb_tmp += sizeof(uint8_t);
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.firstKeyExplicit */
- _aux->types.firstKeyExplicit = *(xcb_keycode_t *)xcb_tmp;
- xcb_block_len += sizeof(xcb_keycode_t);
- xcb_tmp += sizeof(xcb_keycode_t);
- xcb_align_to = ALIGNOF(xcb_keycode_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.nKeyExplicit */
- _aux->types.nKeyExplicit = *(uint8_t *)xcb_tmp;
- xcb_block_len += sizeof(uint8_t);
- xcb_tmp += sizeof(uint8_t);
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.totalKeyExplicit */
- _aux->types.totalKeyExplicit = *(uint8_t *)xcb_tmp;
- xcb_block_len += sizeof(uint8_t);
- xcb_tmp += sizeof(uint8_t);
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.firstModMapKey */
- _aux->types.firstModMapKey = *(xcb_keycode_t *)xcb_tmp;
- xcb_block_len += sizeof(xcb_keycode_t);
- xcb_tmp += sizeof(xcb_keycode_t);
- xcb_align_to = ALIGNOF(xcb_keycode_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.nModMapKeys */
- _aux->types.nModMapKeys = *(uint8_t *)xcb_tmp;
- xcb_block_len += sizeof(uint8_t);
- xcb_tmp += sizeof(uint8_t);
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.totalModMapKeys */
- _aux->types.totalModMapKeys = *(uint8_t *)xcb_tmp;
- xcb_block_len += sizeof(uint8_t);
- xcb_tmp += sizeof(uint8_t);
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.firstVModMapKey */
- _aux->types.firstVModMapKey = *(xcb_keycode_t *)xcb_tmp;
- xcb_block_len += sizeof(xcb_keycode_t);
- xcb_tmp += sizeof(xcb_keycode_t);
- xcb_align_to = ALIGNOF(xcb_keycode_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.nVModMapKeys */
- _aux->types.nVModMapKeys = *(uint8_t *)xcb_tmp;
- xcb_block_len += sizeof(uint8_t);
- xcb_tmp += sizeof(uint8_t);
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.totalVModMapKeys */
- _aux->types.totalVModMapKeys = *(uint8_t *)xcb_tmp;
- xcb_block_len += sizeof(uint8_t);
- xcb_tmp += sizeof(uint8_t);
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.pad1 */
- _aux->types.pad1 = *(uint8_t *)xcb_tmp;
- xcb_block_len += sizeof(uint8_t);
- xcb_tmp += sizeof(uint8_t);
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.types.virtualMods */
- _aux->types.virtualMods = *(uint16_t *)xcb_tmp;
- xcb_block_len += sizeof(uint16_t);
- xcb_tmp += sizeof(uint16_t);
- xcb_align_to = ALIGNOF(uint16_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* map */
- xcb_block_len += xcb_xkb_get_kbd_by_name_replies_types_map_unpack(xcb_tmp, _aux->types.nTypes, _aux->types.nKeySyms, _aux->types.nKeyActions, _aux->types.totalActions, _aux->types.totalKeyBehaviors, _aux->types.virtualMods, _aux->types.totalKeyExplicit, _aux->types.totalModMapKeys, _aux->types.totalVModMapKeys, _aux->types.present, &_aux->types.map);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_xkb_get_kbd_by_name_replies_types_map_t);
- }
- if(reported & XCB_XKB_GBN_DETAIL_COMPAT_MAP) {
- /* xcb_xkb_get_kbd_by_name_replies_t.compat_map.compatmap_type */
- _aux->compat_map.compatmap_type = *(uint8_t *)xcb_tmp;
- xcb_block_len += sizeof(uint8_t);
- xcb_tmp += sizeof(uint8_t);
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.compat_map.compatDeviceID */
- _aux->compat_map.compatDeviceID = *(uint8_t *)xcb_tmp;
- xcb_block_len += sizeof(uint8_t);
- xcb_tmp += sizeof(uint8_t);
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.compat_map.compatmap_sequence */
- _aux->compat_map.compatmap_sequence = *(uint16_t *)xcb_tmp;
- xcb_block_len += sizeof(uint16_t);
- xcb_tmp += sizeof(uint16_t);
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.compat_map.compatmap_length */
- _aux->compat_map.compatmap_length = *(uint32_t *)xcb_tmp;
- xcb_block_len += sizeof(uint32_t);
- xcb_tmp += sizeof(uint32_t);
- xcb_align_to = ALIGNOF(uint32_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.compat_map.groupsRtrn */
- _aux->compat_map.groupsRtrn = *(uint8_t *)xcb_tmp;
- xcb_block_len += sizeof(uint8_t);
- xcb_tmp += sizeof(uint8_t);
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.compat_map.pad0 */
- _aux->compat_map.pad0 = *(uint8_t *)xcb_tmp;
- xcb_block_len += sizeof(uint8_t);
- xcb_tmp += sizeof(uint8_t);
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.compat_map.firstSIRtrn */
- _aux->compat_map.firstSIRtrn = *(uint16_t *)xcb_tmp;
- xcb_block_len += sizeof(uint16_t);
- xcb_tmp += sizeof(uint16_t);
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.compat_map.nSIRtrn */
- _aux->compat_map.nSIRtrn = *(uint16_t *)xcb_tmp;
- xcb_block_len += sizeof(uint16_t);
- xcb_tmp += sizeof(uint16_t);
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.compat_map.nTotalSI */
- _aux->compat_map.nTotalSI = *(uint16_t *)xcb_tmp;
- xcb_block_len += sizeof(uint16_t);
- xcb_tmp += sizeof(uint16_t);
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.compat_map.pad1 */
- _aux->compat_map.pad1[0] = *(uint8_t *)xcb_tmp;
- _aux->compat_map.pad1[1] = *(uint8_t *)xcb_tmp;
- _aux->compat_map.pad1[2] = *(uint8_t *)xcb_tmp;
- _aux->compat_map.pad1[3] = *(uint8_t *)xcb_tmp;
- _aux->compat_map.pad1[4] = *(uint8_t *)xcb_tmp;
- _aux->compat_map.pad1[5] = *(uint8_t *)xcb_tmp;
- _aux->compat_map.pad1[6] = *(uint8_t *)xcb_tmp;
- _aux->compat_map.pad1[7] = *(uint8_t *)xcb_tmp;
- _aux->compat_map.pad1[8] = *(uint8_t *)xcb_tmp;
- _aux->compat_map.pad1[9] = *(uint8_t *)xcb_tmp;
- _aux->compat_map.pad1[10] = *(uint8_t *)xcb_tmp;
- _aux->compat_map.pad1[11] = *(uint8_t *)xcb_tmp;
- _aux->compat_map.pad1[12] = *(uint8_t *)xcb_tmp;
- _aux->compat_map.pad1[13] = *(uint8_t *)xcb_tmp;
- _aux->compat_map.pad1[14] = *(uint8_t *)xcb_tmp;
- _aux->compat_map.pad1[15] = *(uint8_t *)xcb_tmp;
- xcb_block_len += sizeof(uint8_t) * 16;
- xcb_tmp += sizeof(uint8_t) * 16;
- xcb_align_to = ALIGNOF(uint8_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* si_rtrn */
- _aux->compat_map.si_rtrn = (xcb_xkb_sym_interpret_t *)xcb_tmp;
- xcb_block_len += _aux->compat_map.nSIRtrn * sizeof(xcb_xkb_sym_interpret_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_xkb_sym_interpret_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* group_rtrn */
- _aux->compat_map.group_rtrn = (xcb_xkb_mod_def_t *)xcb_tmp;
- xcb_block_len += xcb_popcount(_aux->compat_map.groupsRtrn) * sizeof(xcb_xkb_mod_def_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_xkb_mod_def_t);
- }
- if(reported & XCB_XKB_GBN_DETAIL_INDICATOR_MAPS) {
- /* xcb_xkb_get_kbd_by_name_replies_t.indicator_maps.indicatormap_type */
- _aux->indicator_maps.indicatormap_type = *(uint8_t *)xcb_tmp;
- xcb_block_len += sizeof(uint8_t);
- xcb_tmp += sizeof(uint8_t);
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.indicator_maps.indicatorDeviceID */
- _aux->indicator_maps.indicatorDeviceID = *(uint8_t *)xcb_tmp;
- xcb_block_len += sizeof(uint8_t);
- xcb_tmp += sizeof(uint8_t);
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.indicator_maps.indicatormap_sequence */
- _aux->indicator_maps.indicatormap_sequence = *(uint16_t *)xcb_tmp;
- xcb_block_len += sizeof(uint16_t);
- xcb_tmp += sizeof(uint16_t);
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.indicator_maps.indicatormap_length */
- _aux->indicator_maps.indicatormap_length = *(uint32_t *)xcb_tmp;
- xcb_block_len += sizeof(uint32_t);
- xcb_tmp += sizeof(uint32_t);
- xcb_align_to = ALIGNOF(uint32_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.indicator_maps.which */
- _aux->indicator_maps.which = *(uint32_t *)xcb_tmp;
- xcb_block_len += sizeof(uint32_t);
- xcb_tmp += sizeof(uint32_t);
- xcb_align_to = ALIGNOF(uint32_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.indicator_maps.realIndicators */
- _aux->indicator_maps.realIndicators = *(uint32_t *)xcb_tmp;
- xcb_block_len += sizeof(uint32_t);
- xcb_tmp += sizeof(uint32_t);
- xcb_align_to = ALIGNOF(uint32_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.indicator_maps.nIndicators */
- _aux->indicator_maps.nIndicators = *(uint8_t *)xcb_tmp;
- xcb_block_len += sizeof(uint8_t);
- xcb_tmp += sizeof(uint8_t);
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.indicator_maps.pad0 */
- _aux->indicator_maps.pad0[0] = *(uint8_t *)xcb_tmp;
- _aux->indicator_maps.pad0[1] = *(uint8_t *)xcb_tmp;
- _aux->indicator_maps.pad0[2] = *(uint8_t *)xcb_tmp;
- _aux->indicator_maps.pad0[3] = *(uint8_t *)xcb_tmp;
- _aux->indicator_maps.pad0[4] = *(uint8_t *)xcb_tmp;
- _aux->indicator_maps.pad0[5] = *(uint8_t *)xcb_tmp;
- _aux->indicator_maps.pad0[6] = *(uint8_t *)xcb_tmp;
- _aux->indicator_maps.pad0[7] = *(uint8_t *)xcb_tmp;
- _aux->indicator_maps.pad0[8] = *(uint8_t *)xcb_tmp;
- _aux->indicator_maps.pad0[9] = *(uint8_t *)xcb_tmp;
- _aux->indicator_maps.pad0[10] = *(uint8_t *)xcb_tmp;
- _aux->indicator_maps.pad0[11] = *(uint8_t *)xcb_tmp;
- _aux->indicator_maps.pad0[12] = *(uint8_t *)xcb_tmp;
- _aux->indicator_maps.pad0[13] = *(uint8_t *)xcb_tmp;
- _aux->indicator_maps.pad0[14] = *(uint8_t *)xcb_tmp;
- xcb_block_len += sizeof(uint8_t) * 15;
- xcb_tmp += sizeof(uint8_t) * 15;
- xcb_align_to = ALIGNOF(uint8_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* maps */
- _aux->indicator_maps.maps = (xcb_xkb_indicator_map_t *)xcb_tmp;
- xcb_block_len += _aux->indicator_maps.nIndicators * sizeof(xcb_xkb_indicator_map_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_xkb_indicator_map_t);
- }
- if((reported & XCB_XKB_GBN_DETAIL_KEY_NAMES) ||
- (reported & XCB_XKB_GBN_DETAIL_OTHER_NAMES)) {
- /* xcb_xkb_get_kbd_by_name_replies_t.key_names.keyname_type */
- _aux->key_names.keyname_type = *(uint8_t *)xcb_tmp;
- xcb_block_len += sizeof(uint8_t);
- xcb_tmp += sizeof(uint8_t);
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.key_names.keyDeviceID */
- _aux->key_names.keyDeviceID = *(uint8_t *)xcb_tmp;
- xcb_block_len += sizeof(uint8_t);
- xcb_tmp += sizeof(uint8_t);
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.key_names.keyname_sequence */
- _aux->key_names.keyname_sequence = *(uint16_t *)xcb_tmp;
- xcb_block_len += sizeof(uint16_t);
- xcb_tmp += sizeof(uint16_t);
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.key_names.keyname_length */
- _aux->key_names.keyname_length = *(uint32_t *)xcb_tmp;
- xcb_block_len += sizeof(uint32_t);
- xcb_tmp += sizeof(uint32_t);
- xcb_align_to = ALIGNOF(uint32_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.key_names.which */
- _aux->key_names.which = *(uint32_t *)xcb_tmp;
- xcb_block_len += sizeof(uint32_t);
- xcb_tmp += sizeof(uint32_t);
- xcb_align_to = ALIGNOF(uint32_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.key_names.keyMinKeyCode */
- _aux->key_names.keyMinKeyCode = *(xcb_keycode_t *)xcb_tmp;
- xcb_block_len += sizeof(xcb_keycode_t);
- xcb_tmp += sizeof(xcb_keycode_t);
- xcb_align_to = ALIGNOF(xcb_keycode_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.key_names.keyMaxKeyCode */
- _aux->key_names.keyMaxKeyCode = *(xcb_keycode_t *)xcb_tmp;
- xcb_block_len += sizeof(xcb_keycode_t);
- xcb_tmp += sizeof(xcb_keycode_t);
- xcb_align_to = ALIGNOF(xcb_keycode_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.key_names.nTypes */
- _aux->key_names.nTypes = *(uint8_t *)xcb_tmp;
- xcb_block_len += sizeof(uint8_t);
- xcb_tmp += sizeof(uint8_t);
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.key_names.groupNames */
- _aux->key_names.groupNames = *(uint8_t *)xcb_tmp;
- xcb_block_len += sizeof(uint8_t);
- xcb_tmp += sizeof(uint8_t);
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.key_names.virtualMods */
- _aux->key_names.virtualMods = *(uint16_t *)xcb_tmp;
- xcb_block_len += sizeof(uint16_t);
- xcb_tmp += sizeof(uint16_t);
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.key_names.firstKey */
- _aux->key_names.firstKey = *(xcb_keycode_t *)xcb_tmp;
- xcb_block_len += sizeof(xcb_keycode_t);
- xcb_tmp += sizeof(xcb_keycode_t);
- xcb_align_to = ALIGNOF(xcb_keycode_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.key_names.nKeys */
- _aux->key_names.nKeys = *(uint8_t *)xcb_tmp;
- xcb_block_len += sizeof(uint8_t);
- xcb_tmp += sizeof(uint8_t);
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.key_names.indicators */
- _aux->key_names.indicators = *(uint32_t *)xcb_tmp;
- xcb_block_len += sizeof(uint32_t);
- xcb_tmp += sizeof(uint32_t);
- xcb_align_to = ALIGNOF(uint32_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.key_names.nRadioGroups */
- _aux->key_names.nRadioGroups = *(uint8_t *)xcb_tmp;
- xcb_block_len += sizeof(uint8_t);
- xcb_tmp += sizeof(uint8_t);
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.key_names.nKeyAliases */
- _aux->key_names.nKeyAliases = *(uint8_t *)xcb_tmp;
- xcb_block_len += sizeof(uint8_t);
- xcb_tmp += sizeof(uint8_t);
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.key_names.nKTLevels */
- _aux->key_names.nKTLevels = *(uint16_t *)xcb_tmp;
- xcb_block_len += sizeof(uint16_t);
- xcb_tmp += sizeof(uint16_t);
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.key_names.pad0 */
- _aux->key_names.pad0[0] = *(uint8_t *)xcb_tmp;
- _aux->key_names.pad0[1] = *(uint8_t *)xcb_tmp;
- _aux->key_names.pad0[2] = *(uint8_t *)xcb_tmp;
- _aux->key_names.pad0[3] = *(uint8_t *)xcb_tmp;
- xcb_block_len += sizeof(uint8_t) * 4;
- xcb_tmp += sizeof(uint8_t) * 4;
- xcb_align_to = ALIGNOF(uint8_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* valueList */
- xcb_block_len += xcb_xkb_get_kbd_by_name_replies_key_names_value_list_unpack(xcb_tmp, _aux->key_names.nTypes, _aux->key_names.nKTLevels, _aux->key_names.indicators, _aux->key_names.virtualMods, _aux->key_names.groupNames, _aux->key_names.nKeys, _aux->key_names.nKeyAliases, _aux->key_names.nRadioGroups, _aux->key_names.which, &_aux->key_names.valueList);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_xkb_get_kbd_by_name_replies_key_names_value_list_t);
- }
- if(reported & XCB_XKB_GBN_DETAIL_GEOMETRY) {
- /* xcb_xkb_get_kbd_by_name_replies_t.geometry.geometry_type */
- _aux->geometry.geometry_type = *(uint8_t *)xcb_tmp;
- xcb_block_len += sizeof(uint8_t);
- xcb_tmp += sizeof(uint8_t);
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.geometry.geometryDeviceID */
- _aux->geometry.geometryDeviceID = *(uint8_t *)xcb_tmp;
- xcb_block_len += sizeof(uint8_t);
- xcb_tmp += sizeof(uint8_t);
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.geometry.geometry_sequence */
- _aux->geometry.geometry_sequence = *(uint16_t *)xcb_tmp;
- xcb_block_len += sizeof(uint16_t);
- xcb_tmp += sizeof(uint16_t);
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.geometry.geometry_length */
- _aux->geometry.geometry_length = *(uint32_t *)xcb_tmp;
- xcb_block_len += sizeof(uint32_t);
- xcb_tmp += sizeof(uint32_t);
- xcb_align_to = ALIGNOF(uint32_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.geometry.name */
- _aux->geometry.name = *(xcb_atom_t *)xcb_tmp;
- xcb_block_len += sizeof(xcb_atom_t);
- xcb_tmp += sizeof(xcb_atom_t);
- xcb_align_to = ALIGNOF(xcb_atom_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.geometry.geometryFound */
- _aux->geometry.geometryFound = *(uint8_t *)xcb_tmp;
- xcb_block_len += sizeof(uint8_t);
- xcb_tmp += sizeof(uint8_t);
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.geometry.pad0 */
- _aux->geometry.pad0 = *(uint8_t *)xcb_tmp;
- xcb_block_len += sizeof(uint8_t);
- xcb_tmp += sizeof(uint8_t);
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.geometry.widthMM */
- _aux->geometry.widthMM = *(uint16_t *)xcb_tmp;
- xcb_block_len += sizeof(uint16_t);
- xcb_tmp += sizeof(uint16_t);
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.geometry.heightMM */
- _aux->geometry.heightMM = *(uint16_t *)xcb_tmp;
- xcb_block_len += sizeof(uint16_t);
- xcb_tmp += sizeof(uint16_t);
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.geometry.nProperties */
- _aux->geometry.nProperties = *(uint16_t *)xcb_tmp;
- xcb_block_len += sizeof(uint16_t);
- xcb_tmp += sizeof(uint16_t);
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.geometry.nColors */
- _aux->geometry.nColors = *(uint16_t *)xcb_tmp;
- xcb_block_len += sizeof(uint16_t);
- xcb_tmp += sizeof(uint16_t);
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.geometry.nShapes */
- _aux->geometry.nShapes = *(uint16_t *)xcb_tmp;
- xcb_block_len += sizeof(uint16_t);
- xcb_tmp += sizeof(uint16_t);
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.geometry.nSections */
- _aux->geometry.nSections = *(uint16_t *)xcb_tmp;
- xcb_block_len += sizeof(uint16_t);
- xcb_tmp += sizeof(uint16_t);
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.geometry.nDoodads */
- _aux->geometry.nDoodads = *(uint16_t *)xcb_tmp;
- xcb_block_len += sizeof(uint16_t);
- xcb_tmp += sizeof(uint16_t);
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.geometry.nKeyAliases */
- _aux->geometry.nKeyAliases = *(uint16_t *)xcb_tmp;
- xcb_block_len += sizeof(uint16_t);
- xcb_tmp += sizeof(uint16_t);
- xcb_align_to = ALIGNOF(uint16_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.geometry.baseColorNdx */
- _aux->geometry.baseColorNdx = *(uint8_t *)xcb_tmp;
- xcb_block_len += sizeof(uint8_t);
- xcb_tmp += sizeof(uint8_t);
- xcb_align_to = ALIGNOF(uint8_t);
- /* xcb_xkb_get_kbd_by_name_replies_t.geometry.labelColorNdx */
- _aux->geometry.labelColorNdx = *(uint8_t *)xcb_tmp;
- xcb_block_len += sizeof(uint8_t);
- xcb_tmp += sizeof(uint8_t);
- xcb_align_to = ALIGNOF(uint8_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* labelFont */
- _aux->geometry.labelFont = (xcb_xkb_counted_string_16_t *)xcb_tmp;
- xcb_block_len += xcb_xkb_counted_string_16_sizeof(xcb_tmp);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_xkb_counted_string_16_t);
- }
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-int
-xcb_xkb_get_kbd_by_name_replies_sizeof (const void *_buffer /**< */,
- uint16_t reported /**< */)
-{
- xcb_xkb_get_kbd_by_name_replies_t _aux;
- return xcb_xkb_get_kbd_by_name_replies_unpack(_buffer, reported, &_aux);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_kbd_by_name_cookie_t xcb_xkb_get_kbd_by_name
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint16_t need
- ** @param uint16_t want
- ** @param uint8_t load
- ** @returns xcb_xkb_get_kbd_by_name_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_get_kbd_by_name_cookie_t
-xcb_xkb_get_kbd_by_name (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint16_t need /**< */,
- uint16_t want /**< */,
- uint8_t load /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_GET_KBD_BY_NAME,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_xkb_get_kbd_by_name_cookie_t xcb_ret;
- xcb_xkb_get_kbd_by_name_request_t xcb_out;
-
- xcb_out.deviceSpec = deviceSpec;
- xcb_out.need = need;
- xcb_out.want = want;
- xcb_out.load = load;
- xcb_out.pad0 = 0;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_kbd_by_name_cookie_t xcb_xkb_get_kbd_by_name_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint16_t need
- ** @param uint16_t want
- ** @param uint8_t load
- ** @returns xcb_xkb_get_kbd_by_name_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_get_kbd_by_name_cookie_t
-xcb_xkb_get_kbd_by_name_unchecked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint16_t need /**< */,
- uint16_t want /**< */,
- uint8_t load /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_GET_KBD_BY_NAME,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_xkb_get_kbd_by_name_cookie_t xcb_ret;
- xcb_xkb_get_kbd_by_name_request_t xcb_out;
-
- xcb_out.deviceSpec = deviceSpec;
- xcb_out.need = need;
- xcb_out.want = want;
- xcb_out.load = load;
- xcb_out.pad0 = 0;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_kbd_by_name_replies_t * xcb_xkb_get_kbd_by_name_replies
- **
- ** @param const xcb_xkb_get_kbd_by_name_reply_t *R
- ** @returns xcb_xkb_get_kbd_by_name_replies_t *
- **
- *****************************************************************************/
-
-void *
-xcb_xkb_get_kbd_by_name_replies (const xcb_xkb_get_kbd_by_name_reply_t *R /**< */)
-{
- return (void *) (R + 1);
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_kbd_by_name_reply_t * xcb_xkb_get_kbd_by_name_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_get_kbd_by_name_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xkb_get_kbd_by_name_reply_t *
- **
- *****************************************************************************/
-
-xcb_xkb_get_kbd_by_name_reply_t *
-xcb_xkb_get_kbd_by_name_reply (xcb_connection_t *c /**< */,
- xcb_xkb_get_kbd_by_name_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_xkb_get_kbd_by_name_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-int
-xcb_xkb_get_device_info_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_xkb_get_device_info_reply_t *_aux = (xcb_xkb_get_device_info_reply_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to = 0;
-
- unsigned int i;
- unsigned int xcb_tmp_len;
-
- xcb_block_len += sizeof(xcb_xkb_get_device_info_reply_t);
- xcb_tmp += xcb_block_len;
- xcb_buffer_len += xcb_block_len;
- xcb_block_len = 0;
- /* name */
- xcb_block_len += _aux->nameLen * sizeof(xcb_xkb_string8_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_xkb_string8_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* btnActions */
- xcb_block_len += _aux->nBtnsRtrn * sizeof(xcb_xkb_action_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_xkb_action_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* leds */
- for(i=0; i<_aux->nDeviceLedFBs; i++) {
- xcb_tmp_len = xcb_xkb_device_led_info_sizeof(xcb_tmp);
- xcb_block_len += xcb_tmp_len;
- xcb_tmp += xcb_tmp_len;
- }
- xcb_align_to = ALIGNOF(xcb_xkb_device_led_info_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_device_info_cookie_t xcb_xkb_get_device_info
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint16_t wanted
- ** @param uint8_t allButtons
- ** @param uint8_t firstButton
- ** @param uint8_t nButtons
- ** @param xcb_xkb_led_class_spec_t ledClass
- ** @param xcb_xkb_id_spec_t ledID
- ** @returns xcb_xkb_get_device_info_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_get_device_info_cookie_t
-xcb_xkb_get_device_info (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint16_t wanted /**< */,
- uint8_t allButtons /**< */,
- uint8_t firstButton /**< */,
- uint8_t nButtons /**< */,
- xcb_xkb_led_class_spec_t ledClass /**< */,
- xcb_xkb_id_spec_t ledID /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_GET_DEVICE_INFO,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_xkb_get_device_info_cookie_t xcb_ret;
- xcb_xkb_get_device_info_request_t xcb_out;
-
- xcb_out.deviceSpec = deviceSpec;
- xcb_out.wanted = wanted;
- xcb_out.allButtons = allButtons;
- xcb_out.firstButton = firstButton;
- xcb_out.nButtons = nButtons;
- xcb_out.pad0 = 0;
- xcb_out.ledClass = ledClass;
- xcb_out.ledID = ledID;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_device_info_cookie_t xcb_xkb_get_device_info_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint16_t wanted
- ** @param uint8_t allButtons
- ** @param uint8_t firstButton
- ** @param uint8_t nButtons
- ** @param xcb_xkb_led_class_spec_t ledClass
- ** @param xcb_xkb_id_spec_t ledID
- ** @returns xcb_xkb_get_device_info_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_get_device_info_cookie_t
-xcb_xkb_get_device_info_unchecked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint16_t wanted /**< */,
- uint8_t allButtons /**< */,
- uint8_t firstButton /**< */,
- uint8_t nButtons /**< */,
- xcb_xkb_led_class_spec_t ledClass /**< */,
- xcb_xkb_id_spec_t ledID /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 2,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_GET_DEVICE_INFO,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[4];
- xcb_xkb_get_device_info_cookie_t xcb_ret;
- xcb_xkb_get_device_info_request_t xcb_out;
-
- xcb_out.deviceSpec = deviceSpec;
- xcb_out.wanted = wanted;
- xcb_out.allButtons = allButtons;
- xcb_out.firstButton = firstButton;
- xcb_out.nButtons = nButtons;
- xcb_out.pad0 = 0;
- xcb_out.ledClass = ledClass;
- xcb_out.ledID = ledID;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_string8_t * xcb_xkb_get_device_info_name
- **
- ** @param const xcb_xkb_get_device_info_reply_t *R
- ** @returns xcb_xkb_string8_t *
- **
- *****************************************************************************/
-
-xcb_xkb_string8_t *
-xcb_xkb_get_device_info_name (const xcb_xkb_get_device_info_reply_t *R /**< */)
-{
- return (xcb_xkb_string8_t *) (R + 1);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_device_info_name_length
- **
- ** @param const xcb_xkb_get_device_info_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_device_info_name_length (const xcb_xkb_get_device_info_reply_t *R /**< */)
-{
- return R->nameLen;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_generic_iterator_t xcb_xkb_get_device_info_name_end
- **
- ** @param const xcb_xkb_get_device_info_reply_t *R
- ** @returns xcb_generic_iterator_t
- **
- *****************************************************************************/
-
-xcb_generic_iterator_t
-xcb_xkb_get_device_info_name_end (const xcb_xkb_get_device_info_reply_t *R /**< */)
-{
- xcb_generic_iterator_t i;
- i.data = ((xcb_xkb_string8_t *) (R + 1)) + (R->nameLen);
- i.rem = 0;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_action_t * xcb_xkb_get_device_info_btn_actions
- **
- ** @param const xcb_xkb_get_device_info_reply_t *R
- ** @returns xcb_xkb_action_t *
- **
- *****************************************************************************/
-
-xcb_xkb_action_t *
-xcb_xkb_get_device_info_btn_actions (const xcb_xkb_get_device_info_reply_t *R /**< */)
-{
- xcb_generic_iterator_t prev = xcb_xkb_get_device_info_name_end(R);
- return (xcb_xkb_action_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_xkb_action_t, prev.index) + 0);
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_device_info_btn_actions_length
- **
- ** @param const xcb_xkb_get_device_info_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_device_info_btn_actions_length (const xcb_xkb_get_device_info_reply_t *R /**< */)
-{
- return R->nBtnsRtrn;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_action_iterator_t xcb_xkb_get_device_info_btn_actions_iterator
- **
- ** @param const xcb_xkb_get_device_info_reply_t *R
- ** @returns xcb_xkb_action_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_action_iterator_t
-xcb_xkb_get_device_info_btn_actions_iterator (const xcb_xkb_get_device_info_reply_t *R /**< */)
-{
- xcb_xkb_action_iterator_t i;
- xcb_generic_iterator_t prev = xcb_xkb_get_device_info_name_end(R);
- i.data = (xcb_xkb_action_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_xkb_action_t, prev.index));
- i.rem = R->nBtnsRtrn;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** int xcb_xkb_get_device_info_leds_length
- **
- ** @param const xcb_xkb_get_device_info_reply_t *R
- ** @returns int
- **
- *****************************************************************************/
-
-int
-xcb_xkb_get_device_info_leds_length (const xcb_xkb_get_device_info_reply_t *R /**< */)
-{
- return R->nDeviceLedFBs;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_device_led_info_iterator_t xcb_xkb_get_device_info_leds_iterator
- **
- ** @param const xcb_xkb_get_device_info_reply_t *R
- ** @returns xcb_xkb_device_led_info_iterator_t
- **
- *****************************************************************************/
-
-xcb_xkb_device_led_info_iterator_t
-xcb_xkb_get_device_info_leds_iterator (const xcb_xkb_get_device_info_reply_t *R /**< */)
-{
- xcb_xkb_device_led_info_iterator_t i;
- xcb_generic_iterator_t prev = xcb_xkb_action_end(xcb_xkb_get_device_info_btn_actions_iterator(R));
- i.data = (xcb_xkb_device_led_info_t *) ((char *) prev.data + XCB_TYPE_PAD(xcb_xkb_device_led_info_t, prev.index));
- i.rem = R->nDeviceLedFBs;
- i.index = (char *) i.data - (char *) R;
- return i;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_get_device_info_reply_t * xcb_xkb_get_device_info_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_get_device_info_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xkb_get_device_info_reply_t *
- **
- *****************************************************************************/
-
-xcb_xkb_get_device_info_reply_t *
-xcb_xkb_get_device_info_reply (xcb_connection_t *c /**< */,
- xcb_xkb_get_device_info_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_xkb_get_device_info_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
-int
-xcb_xkb_set_device_info_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_xkb_set_device_info_request_t *_aux = (xcb_xkb_set_device_info_request_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to = 0;
-
- unsigned int i;
- unsigned int xcb_tmp_len;
-
- xcb_block_len += sizeof(xcb_xkb_set_device_info_request_t);
- xcb_tmp += xcb_block_len;
- xcb_buffer_len += xcb_block_len;
- xcb_block_len = 0;
- /* btnActions */
- xcb_block_len += _aux->nBtns * sizeof(xcb_xkb_action_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_xkb_action_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
- /* leds */
- for(i=0; i<_aux->nDeviceLedFBs; i++) {
- xcb_tmp_len = xcb_xkb_device_led_info_sizeof(xcb_tmp);
- xcb_block_len += xcb_tmp_len;
- xcb_tmp += xcb_tmp_len;
- }
- xcb_align_to = ALIGNOF(xcb_xkb_device_led_info_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_set_device_info_checked
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint8_t firstBtn
- ** @param uint8_t nBtns
- ** @param uint16_t change
- ** @param uint16_t nDeviceLedFBs
- ** @param const xcb_xkb_action_t *btnActions
- ** @param const xcb_xkb_device_led_info_t *leds
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_set_device_info_checked (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint8_t firstBtn /**< */,
- uint8_t nBtns /**< */,
- uint16_t change /**< */,
- uint16_t nDeviceLedFBs /**< */,
- const xcb_xkb_action_t *btnActions /**< */,
- const xcb_xkb_device_led_info_t *leds /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 6,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_SET_DEVICE_INFO,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[8];
- xcb_void_cookie_t xcb_ret;
- xcb_xkb_set_device_info_request_t xcb_out;
- unsigned int i;
- unsigned int xcb_tmp_len;
- char *xcb_tmp;
-
- xcb_out.deviceSpec = deviceSpec;
- xcb_out.firstBtn = firstBtn;
- xcb_out.nBtns = nBtns;
- xcb_out.change = change;
- xcb_out.nDeviceLedFBs = nDeviceLedFBs;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_xkb_action_t btnActions */
- xcb_parts[4].iov_base = (char *) btnActions;
- xcb_parts[4].iov_len = nBtns * sizeof(xcb_xkb_action_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
- /* xcb_xkb_device_led_info_t leds */
- xcb_parts[6].iov_base = (char *) leds;
- xcb_parts[6].iov_len = 0;
- xcb_tmp = (char *)leds;
- for(i=0; i<nDeviceLedFBs; i++) {
- xcb_tmp_len = xcb_xkb_device_led_info_sizeof(xcb_tmp);
- xcb_parts[6].iov_len += xcb_tmp_len;
- xcb_tmp += xcb_tmp_len;
- }
- xcb_parts[7].iov_base = 0;
- xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_void_cookie_t xcb_xkb_set_device_info
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_device_spec_t deviceSpec
- ** @param uint8_t firstBtn
- ** @param uint8_t nBtns
- ** @param uint16_t change
- ** @param uint16_t nDeviceLedFBs
- ** @param const xcb_xkb_action_t *btnActions
- ** @param const xcb_xkb_device_led_info_t *leds
- ** @returns xcb_void_cookie_t
- **
- *****************************************************************************/
-
-xcb_void_cookie_t
-xcb_xkb_set_device_info (xcb_connection_t *c /**< */,
- xcb_xkb_device_spec_t deviceSpec /**< */,
- uint8_t firstBtn /**< */,
- uint8_t nBtns /**< */,
- uint16_t change /**< */,
- uint16_t nDeviceLedFBs /**< */,
- const xcb_xkb_action_t *btnActions /**< */,
- const xcb_xkb_device_led_info_t *leds /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 6,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_SET_DEVICE_INFO,
- /* isvoid */ 1
- };
-
- struct iovec xcb_parts[8];
- xcb_void_cookie_t xcb_ret;
- xcb_xkb_set_device_info_request_t xcb_out;
- unsigned int i;
- unsigned int xcb_tmp_len;
- char *xcb_tmp;
-
- xcb_out.deviceSpec = deviceSpec;
- xcb_out.firstBtn = firstBtn;
- xcb_out.nBtns = nBtns;
- xcb_out.change = change;
- xcb_out.nDeviceLedFBs = nDeviceLedFBs;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_xkb_action_t btnActions */
- xcb_parts[4].iov_base = (char *) btnActions;
- xcb_parts[4].iov_len = nBtns * sizeof(xcb_xkb_action_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
- /* xcb_xkb_device_led_info_t leds */
- xcb_parts[6].iov_base = (char *) leds;
- xcb_parts[6].iov_len = 0;
- xcb_tmp = (char *)leds;
- for(i=0; i<nDeviceLedFBs; i++) {
- xcb_tmp_len = xcb_xkb_device_led_info_sizeof(xcb_tmp);
- xcb_parts[6].iov_len += xcb_tmp_len;
- xcb_tmp += xcb_tmp_len;
- }
- xcb_parts[7].iov_base = 0;
- xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-int
-xcb_xkb_set_debugging_flags_sizeof (const void *_buffer /**< */)
-{
- char *xcb_tmp = (char *)_buffer;
- const xcb_xkb_set_debugging_flags_request_t *_aux = (xcb_xkb_set_debugging_flags_request_t *)_buffer;
- unsigned int xcb_buffer_len = 0;
- unsigned int xcb_block_len = 0;
- unsigned int xcb_pad = 0;
- unsigned int xcb_align_to = 0;
-
-
- xcb_block_len += sizeof(xcb_xkb_set_debugging_flags_request_t);
- xcb_tmp += xcb_block_len;
- xcb_buffer_len += xcb_block_len;
- xcb_block_len = 0;
- /* message */
- xcb_block_len += _aux->msgLength * sizeof(xcb_xkb_string8_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(xcb_xkb_string8_t);
- /* insert padding */
- xcb_pad = -xcb_block_len & (xcb_align_to - 1);
- xcb_buffer_len += xcb_block_len + xcb_pad;
- if (0 != xcb_pad) {
- xcb_tmp += xcb_pad;
- xcb_pad = 0;
- }
- xcb_block_len = 0;
-
- return xcb_buffer_len;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_set_debugging_flags_cookie_t xcb_xkb_set_debugging_flags
- **
- ** @param xcb_connection_t *c
- ** @param uint16_t msgLength
- ** @param uint32_t affectFlags
- ** @param uint32_t flags
- ** @param uint32_t affectCtrls
- ** @param uint32_t ctrls
- ** @param const xcb_xkb_string8_t *message
- ** @returns xcb_xkb_set_debugging_flags_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_set_debugging_flags_cookie_t
-xcb_xkb_set_debugging_flags (xcb_connection_t *c /**< */,
- uint16_t msgLength /**< */,
- uint32_t affectFlags /**< */,
- uint32_t flags /**< */,
- uint32_t affectCtrls /**< */,
- uint32_t ctrls /**< */,
- const xcb_xkb_string8_t *message /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_SET_DEBUGGING_FLAGS,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[6];
- xcb_xkb_set_debugging_flags_cookie_t xcb_ret;
- xcb_xkb_set_debugging_flags_request_t xcb_out;
-
- xcb_out.msgLength = msgLength;
- memset(xcb_out.pad0, 0, 2);
- xcb_out.affectFlags = affectFlags;
- xcb_out.flags = flags;
- xcb_out.affectCtrls = affectCtrls;
- xcb_out.ctrls = ctrls;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_xkb_string8_t message */
- xcb_parts[4].iov_base = (char *) message;
- xcb_parts[4].iov_len = msgLength * sizeof(xcb_xkb_string8_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_set_debugging_flags_cookie_t xcb_xkb_set_debugging_flags_unchecked
- **
- ** @param xcb_connection_t *c
- ** @param uint16_t msgLength
- ** @param uint32_t affectFlags
- ** @param uint32_t flags
- ** @param uint32_t affectCtrls
- ** @param uint32_t ctrls
- ** @param const xcb_xkb_string8_t *message
- ** @returns xcb_xkb_set_debugging_flags_cookie_t
- **
- *****************************************************************************/
-
-xcb_xkb_set_debugging_flags_cookie_t
-xcb_xkb_set_debugging_flags_unchecked (xcb_connection_t *c /**< */,
- uint16_t msgLength /**< */,
- uint32_t affectFlags /**< */,
- uint32_t flags /**< */,
- uint32_t affectCtrls /**< */,
- uint32_t ctrls /**< */,
- const xcb_xkb_string8_t *message /**< */)
-{
- static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
- /* ext */ &xcb_xkb_id,
- /* opcode */ XCB_XKB_SET_DEBUGGING_FLAGS,
- /* isvoid */ 0
- };
-
- struct iovec xcb_parts[6];
- xcb_xkb_set_debugging_flags_cookie_t xcb_ret;
- xcb_xkb_set_debugging_flags_request_t xcb_out;
-
- xcb_out.msgLength = msgLength;
- memset(xcb_out.pad0, 0, 2);
- xcb_out.affectFlags = affectFlags;
- xcb_out.flags = flags;
- xcb_out.affectCtrls = affectCtrls;
- xcb_out.ctrls = ctrls;
-
- xcb_parts[2].iov_base = (char *) &xcb_out;
- xcb_parts[2].iov_len = sizeof(xcb_out);
- xcb_parts[3].iov_base = 0;
- xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* xcb_xkb_string8_t message */
- xcb_parts[4].iov_base = (char *) message;
- xcb_parts[4].iov_len = msgLength * sizeof(xcb_xkb_string8_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
-
- xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
- return xcb_ret;
-}
-
-
-/*****************************************************************************
- **
- ** xcb_xkb_set_debugging_flags_reply_t * xcb_xkb_set_debugging_flags_reply
- **
- ** @param xcb_connection_t *c
- ** @param xcb_xkb_set_debugging_flags_cookie_t cookie
- ** @param xcb_generic_error_t **e
- ** @returns xcb_xkb_set_debugging_flags_reply_t *
- **
- *****************************************************************************/
-
-xcb_xkb_set_debugging_flags_reply_t *
-xcb_xkb_set_debugging_flags_reply (xcb_connection_t *c /**< */,
- xcb_xkb_set_debugging_flags_cookie_t cookie /**< */,
- xcb_generic_error_t **e /**< */)
-{
- return (xcb_xkb_set_debugging_flags_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
-}
-
diff --git a/src/3rdparty/xcb/qt_attribution.json b/src/3rdparty/xcb/qt_attribution.json
index 30b9af3818..a04e1acdc5 100644
--- a/src/3rdparty/xcb/qt_attribution.json
+++ b/src/3rdparty/xcb/qt_attribution.json
@@ -1,24 +1,14 @@
{
- "Id": "xcb",
- "Name": "XCB",
+ "Id": "xcb-xinput",
+ "Name": "XCB-XInput",
"QDocModule": "qtgui",
- "QtUsage": "Optionally used in xcb platform plugin if configured with -qt-xcb.",
-
- "Description": "Selected xcb libraries.",
+ "QtUsage": "Used in XCB platform plugin if xcb-xinput was not present on the system
+ during Qt configuration or -bundled-xcb-xinput switch was used. To force using xcb-xinput from
+ the system, pass -no-bundled-xcb-xinput.",
+ "Description": "XInput 2 extension for XCB (The X protocol C-language Binding) library.",
"Homepage": "https://xcb.freedesktop.org/",
"License": "MIT License",
"LicenseId": "MIT",
"LicenseFile": "LICENSE",
- "Copyright": "Copyright © 2000 Keith Packard
-Copyright © 2006 Jamey Sharp
-Copyright © 2007-2008 Vincent Torri <vtorri@univ-evry.fr>
-Copyright © 2007 Bart Massey
-Copyright © 2008-2009 Julien Danjou <julien@danjou.info>
-Copyright © 2008 Arnaud Fontaine <arnau@debian.org>
-Copyright © 2008 Bart Massey <bart@cs.pdx.edu>
-Copyright © 2008 Ian Osgood <iano@quirkster.com>
-Copyright © 2008 Jamey Sharp <jamey@minilop.net>
-Copyright © 2008 Josh Triplett <josh@freedesktop.org>
-Copyright © 2008 Ulrich Eckhardt <doomster@knuut.de>
-"
+ "Copyright": "Copyright (C) Free Software Foundation, Inc."
}
diff --git a/src/3rdparty/xcb/sysinclude/render.h b/src/3rdparty/xcb/sysinclude/render.h
deleted file mode 100644
index 00107aa169..0000000000
--- a/src/3rdparty/xcb/sysinclude/render.h
+++ /dev/null
@@ -1 +0,0 @@
-#include <xcb/render.h>
diff --git a/src/3rdparty/xcb/sysinclude/xcb.h b/src/3rdparty/xcb/sysinclude/xcb.h
deleted file mode 100644
index e637314c29..0000000000
--- a/src/3rdparty/xcb/sysinclude/xcb.h
+++ /dev/null
@@ -1 +0,0 @@
-#include <xcb/xcb.h>
diff --git a/src/3rdparty/xcb/sysinclude/xcbext.h b/src/3rdparty/xcb/sysinclude/xcbext.h
deleted file mode 100644
index c54f14d772..0000000000
--- a/src/3rdparty/xcb/sysinclude/xcbext.h
+++ /dev/null
@@ -1 +0,0 @@
-#include <xcb/xcbext.h>
diff --git a/src/3rdparty/xcb/sysinclude/xproto.h b/src/3rdparty/xcb/sysinclude/xproto.h
deleted file mode 100644
index 671249a4d7..0000000000
--- a/src/3rdparty/xcb/sysinclude/xproto.h
+++ /dev/null
@@ -1 +0,0 @@
-#include <xcb/xproto.h>
diff --git a/src/3rdparty/xcb/xcb-util-image/xcb_image.c b/src/3rdparty/xcb/xcb-util-image/xcb_image.c
deleted file mode 100644
index e426cbd00c..0000000000
--- a/src/3rdparty/xcb/xcb-util-image/xcb_image.c
+++ /dev/null
@@ -1,1011 +0,0 @@
-/* Copyright © 2007 Bart Massey
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Except as contained in this notice, the names of the authors or their
- * institutions shall not be used in advertising or otherwise to promote the
- * sale, use or other dealings in this Software without prior written
- * authorization from the authors.
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-#include <xcb/xcb.h>
-#include <xcb/shm.h>
-#include <xcb/xcb_aux.h>
-#include "xcb_bitops.h"
-#include "xcb_image.h"
-#define BUILD
-#include "xcb_pixel.h"
-
-
-static xcb_format_t *
-find_format_by_depth (const xcb_setup_t *setup, uint8_t depth)
-{
- xcb_format_t *fmt = xcb_setup_pixmap_formats(setup);
- xcb_format_t *fmtend = fmt + xcb_setup_pixmap_formats_length(setup);
- for(; fmt != fmtend; ++fmt)
- if(fmt->depth == depth)
- return fmt;
- return 0;
-}
-
-
-static xcb_image_format_t
-effective_format(xcb_image_format_t format, uint8_t bpp)
-{
- if (format == XCB_IMAGE_FORMAT_Z_PIXMAP && bpp != 1)
- return format;
- return XCB_IMAGE_FORMAT_XY_PIXMAP;
-}
-
-
-static int
-format_valid (uint8_t depth, uint8_t bpp, uint8_t unit,
- xcb_image_format_t format, uint8_t xpad)
-{
- xcb_image_format_t ef = effective_format(format, bpp);
- if (depth > bpp)
- return 0;
- switch(ef) {
- case XCB_IMAGE_FORMAT_XY_PIXMAP:
- switch(unit) {
- case 8:
- case 16:
- case 32:
- break;
- default:
- return 0;
- }
- if (xpad < bpp)
- return 0;
- switch (xpad) {
- case 8:
- case 16:
- case 32:
- break;
- default:
- return 0;
- }
- break;
- case XCB_IMAGE_FORMAT_Z_PIXMAP:
- switch (bpp) {
- case 4:
- if (unit != 8)
- return 0;
- break;
- case 8:
- case 16:
- case 24:
- case 32:
- if (unit != bpp)
- return 0;
- break;
- default:
- return 0;
- }
- break;
- default:
- return 0;
- }
- return 1;
-}
-
-
-static int
-image_format_valid (xcb_image_t *image) {
- return format_valid(image->depth,
- image->bpp,
- image->unit,
- image->format,
- image->scanline_pad);
-}
-
-
-void
-xcb_image_annotate (xcb_image_t *image)
-{
- xcb_image_format_t ef = effective_format(image->format, image->bpp);
- switch (ef) {
- case XCB_IMAGE_FORMAT_XY_PIXMAP:
- image->stride = xcb_roundup(image->width, image->scanline_pad) >> 3;
- image->size = image->height * image->stride * image->depth;
- break;
- case XCB_IMAGE_FORMAT_Z_PIXMAP:
- image->stride = xcb_roundup((uint32_t)image->width *
- (uint32_t)image->bpp,
- image->scanline_pad) >> 3;
- image->size = image->height * image->stride;
- break;
- default:
- assert(0);
- }
-}
-
-
-xcb_image_t *
-xcb_image_create_native (xcb_connection_t * c,
- uint16_t width,
- uint16_t height,
- xcb_image_format_t format,
- uint8_t depth,
- void * base,
- uint32_t bytes,
- uint8_t * data)
-{
- const xcb_setup_t * setup = xcb_get_setup(c);
- xcb_format_t * fmt;
- xcb_image_format_t ef = format;
-
- if (ef == XCB_IMAGE_FORMAT_Z_PIXMAP && depth == 1)
- ef = XCB_IMAGE_FORMAT_XY_PIXMAP;
- switch (ef) {
- case XCB_IMAGE_FORMAT_XY_BITMAP:
- if (depth != 1)
- return 0;
- /* fall through */
- case XCB_IMAGE_FORMAT_XY_PIXMAP:
- if (depth > 1) {
- fmt = find_format_by_depth(setup, depth);
- if (!fmt)
- return 0;
- }
- return xcb_image_create(width, height, format,
- setup->bitmap_format_scanline_pad,
- depth, depth, setup->bitmap_format_scanline_unit,
- setup->image_byte_order,
- setup->bitmap_format_bit_order,
- base, bytes, data);
- case XCB_IMAGE_FORMAT_Z_PIXMAP:
- fmt = find_format_by_depth(setup, depth);
- if (!fmt)
- return 0;
- return xcb_image_create(width, height, format,
- fmt->scanline_pad,
- fmt->depth, fmt->bits_per_pixel, 0,
- setup->image_byte_order,
- XCB_IMAGE_ORDER_MSB_FIRST,
- base, bytes, data);
- default:
- assert(0);
- }
- assert(0);
-}
-
-
-xcb_image_t *
-xcb_image_create (uint16_t width,
- uint16_t height,
- xcb_image_format_t format,
- uint8_t xpad,
- uint8_t depth,
- uint8_t bpp,
- uint8_t unit,
- xcb_image_order_t byte_order,
- xcb_image_order_t bit_order,
- void * base,
- uint32_t bytes,
- uint8_t * data)
-{
- xcb_image_t * image;
-
- if (unit == 0) {
- switch (format) {
- case XCB_IMAGE_FORMAT_XY_BITMAP:
- case XCB_IMAGE_FORMAT_XY_PIXMAP:
- unit = 32;
- break;
- case XCB_IMAGE_FORMAT_Z_PIXMAP:
- if (bpp == 1) {
- unit = 32;
- break;
- }
- if (bpp < 8) {
- unit = 8;
- break;
- }
- unit = bpp;
- break;
- }
- }
- if (!format_valid(depth, bpp, unit, format, xpad))
- return 0;
- image = malloc(sizeof(*image));
- if (image == 0)
- return 0;
- image->width = width;
- image->height = height;
- image->format = format;
- image->scanline_pad = xpad;
- image->depth = depth;
- image->bpp = bpp;
- image->unit = unit;
- image->plane_mask = xcb_mask(depth);
- image->byte_order = byte_order;
- image->bit_order = bit_order;
- xcb_image_annotate(image);
-
- /*
- * Ways this function can be called:
- * * with data: we fail if bytes isn't
- * large enough, else leave well enough alone.
- * * with base and !data: if bytes is zero, we
- * default; otherwise we fail if bytes isn't
- * large enough, else fill in data
- * * with !base and !data: we malloc storage
- * for the data, save that address as the base,
- * and fail if malloc does.
- *
- * When successful, we establish the invariant that data
- * points at sufficient storage that may have been
- * supplied, and base is set iff it should be
- * auto-freed when the image is destroyed.
- *
- * Except as a special case when base = 0 && data == 0 &&
- * bytes == ~0 we just return the image structure and let
- * the caller deal with getting the allocation right.
- */
- if (!base && !data && bytes == ~0) {
- image->base = 0;
- image->data = 0;
- return image;
- }
- if (!base && data && bytes == 0)
- bytes = image->size;
- image->base = base;
- image->data = data;
- if (!image->data) {
- if (image->base) {
- image->data = image->base;
- } else {
- bytes = image->size;
- image->base = malloc(bytes);
- image->data = image->base;
- }
- }
- if (!image->data || bytes < image->size) {
- free(image);
- return 0;
- }
- return image;
-}
-
-
-void
-xcb_image_destroy (xcb_image_t *image)
-{
- if (image->base)
- free (image->base);
- free (image);
-}
-
-
-xcb_image_t *
-xcb_image_get (xcb_connection_t * conn,
- xcb_drawable_t draw,
- int16_t x,
- int16_t y,
- uint16_t width,
- uint16_t height,
- uint32_t plane_mask,
- xcb_image_format_t format)
-{
- xcb_get_image_cookie_t image_cookie;
- xcb_get_image_reply_t * imrep;
- xcb_image_t * image = 0;
- uint32_t bytes;
- uint8_t * data;
-
- image_cookie = xcb_get_image(conn, format, draw, x, y,
- width, height, plane_mask);
- imrep = xcb_get_image_reply(conn, image_cookie, 0);
- if (!imrep)
- return 0;
- bytes = xcb_get_image_data_length(imrep);
- data = xcb_get_image_data(imrep);
- switch (format) {
- case XCB_IMAGE_FORMAT_XY_PIXMAP:
- plane_mask &= xcb_mask(imrep->depth);
- if (plane_mask != xcb_mask(imrep->depth)) {
- xcb_image_t * tmp_image =
- xcb_image_create_native(conn, width, height, format,
- imrep->depth, 0, 0, 0);
-
- if (!tmp_image) {
- free(imrep);
- return 0;
- }
-
- int i;
- uint32_t rpm = plane_mask;
- uint8_t * src_plane = image->data;
- uint8_t * dst_plane = tmp_image->data;
- uint32_t size = image->height * image->stride;
-
- if (tmp_image->bit_order == XCB_IMAGE_ORDER_MSB_FIRST)
- rpm = xcb_bit_reverse(plane_mask, imrep->depth);
- for (i = 0; i < imrep->depth; i++) {
- if (rpm & 1) {
- memcpy(dst_plane, src_plane, size);
- src_plane += size;
- } else {
- memset(dst_plane, 0, size);
- }
- dst_plane += size;
- }
- tmp_image->plane_mask = plane_mask;
- image = tmp_image;
- free(imrep);
- break;
- }
- /* fall through */
- case XCB_IMAGE_FORMAT_Z_PIXMAP:
- image = xcb_image_create_native(conn, width, height, format,
- imrep->depth, imrep, bytes, data);
- if (!image) {
- free(imrep);
- return 0;
- }
- break;
- default:
- assert(0);
- }
- assert(bytes == image->size);
- return image;
-}
-
-
-xcb_image_t *
-xcb_image_native (xcb_connection_t * c,
- xcb_image_t * image,
- int convert)
-{
- xcb_image_t * tmp_image = 0;
- const xcb_setup_t * setup = xcb_get_setup(c);
- xcb_format_t * fmt = 0;
- xcb_image_format_t ef = effective_format(image->format, image->bpp);
- uint8_t bpp = 1;
-
- if (image->depth > 1 || ef == XCB_IMAGE_FORMAT_Z_PIXMAP) {
- fmt = find_format_by_depth(setup, image->depth);
- /* XXX For now, we don't do depth conversions, even
- for xy-pixmaps */
- if (!fmt)
- return 0;
- bpp = fmt->bits_per_pixel;
- }
- switch (ef) {
- case XCB_IMAGE_FORMAT_XY_PIXMAP:
- if (setup->bitmap_format_scanline_unit != image->unit ||
- setup->bitmap_format_scanline_pad != image->scanline_pad ||
- setup->image_byte_order != image->byte_order ||
- setup->bitmap_format_bit_order != image->bit_order ||
- bpp != image->bpp) {
- if (!convert)
- return 0;
- tmp_image =
- xcb_image_create(image->width, image->height, image->format,
- setup->bitmap_format_scanline_pad,
- image->depth, bpp,
- setup->bitmap_format_scanline_unit,
- setup->image_byte_order,
- setup->bitmap_format_bit_order,
- 0, 0, 0);
- if (!tmp_image)
- return 0;
- }
- break;
- case XCB_IMAGE_FORMAT_Z_PIXMAP:
- if (fmt->scanline_pad != image->scanline_pad ||
- setup->image_byte_order != image->byte_order ||
- bpp != image->bpp) {
- if (!convert)
- return 0;
- tmp_image =
- xcb_image_create(image->width, image->height, image->format,
- fmt->scanline_pad,
- image->depth, bpp, 0,
- setup->image_byte_order,
- XCB_IMAGE_ORDER_MSB_FIRST,
- 0, 0, 0);
- if (!tmp_image)
- return 0;
- }
- break;
- default:
- assert(0);
- }
- if (tmp_image) {
- if (!xcb_image_convert(image, tmp_image)) {
- xcb_image_destroy(tmp_image);
- return 0;
- }
- image = tmp_image;
- }
- return image;
-}
-
-
-xcb_void_cookie_t
-xcb_image_put (xcb_connection_t * conn,
- xcb_drawable_t draw,
- xcb_gcontext_t gc,
- xcb_image_t * image,
- int16_t x,
- int16_t y,
- uint8_t left_pad)
-{
- return xcb_put_image(conn, image->format, draw, gc,
- image->width, image->height,
- x, y, left_pad,
- image->depth,
- image->size,
- image->data);
-}
-
-
-
-/*
- * Shm stuff
- */
-
-xcb_image_t *
-xcb_image_shm_put (xcb_connection_t * conn,
- xcb_drawable_t draw,
- xcb_gcontext_t gc,
- xcb_image_t * image,
- xcb_shm_segment_info_t shminfo,
- int16_t src_x,
- int16_t src_y,
- int16_t dest_x,
- int16_t dest_y,
- uint16_t src_width,
- uint16_t src_height,
- uint8_t send_event)
-{
- if (!xcb_image_native(conn, image, 0))
- return 0;
- if (!shminfo.shmaddr)
- return 0;
- xcb_shm_put_image(conn, draw, gc,
- image->width, image->height,
- src_x, src_y, src_width, src_height,
- dest_x, dest_y,
- image->depth, image->format,
- send_event,
- shminfo.shmseg,
- image->data - shminfo.shmaddr);
- return image;
-}
-
-
-int
-xcb_image_shm_get (xcb_connection_t * conn,
- xcb_drawable_t draw,
- xcb_image_t * image,
- xcb_shm_segment_info_t shminfo,
- int16_t x,
- int16_t y,
- uint32_t plane_mask)
-{
- xcb_shm_get_image_reply_t * setup;
- xcb_shm_get_image_cookie_t cookie;
- xcb_generic_error_t * err = 0;
-
- if (!shminfo.shmaddr)
- return 0;
- cookie = xcb_shm_get_image(conn, draw,
- x, y,
- image->width, image->height,
- plane_mask,
- image->format,
- shminfo.shmseg,
- image->data - shminfo.shmaddr);
- setup = xcb_shm_get_image_reply(conn, cookie, &err);
- if (err) {
- fprintf(stderr, "ShmGetImageReply error %d\n", (int)err->error_code);
- free(err);
- return 0;
- } else {
- free (setup);
- return 1;
- }
-}
-
-
-static uint32_t
-xy_image_byte (xcb_image_t *image, uint32_t x)
-{
- x >>= 3;
- if (image->byte_order == image->bit_order)
- return x;
- switch (image->unit) {
- default:
- case 8:
- return x;
- case 16:
- return x ^ 1;
- case 32:
- return x ^ 3;
- }
-}
-
-static uint32_t
-xy_image_bit (xcb_image_t *image, uint32_t x)
-{
- x &= 7;
- if (image->bit_order == XCB_IMAGE_ORDER_MSB_FIRST)
- x = 7 - x;
- return x;
-}
-
-/* GetPixel/PutPixel */
-
-/* XXX this is the most hideously done cut-and-paste
- to below. Any bugs fixed there should be fixed here
- and vice versa. */
-void
-xcb_image_put_pixel (xcb_image_t *image,
- uint32_t x,
- uint32_t y,
- uint32_t pixel)
-{
- uint8_t *row;
-
- if (x > image->width || y > image->height)
- return;
- row = image->data + (y * image->stride);
- switch (effective_format(image->format, image->bpp)) {
- case XCB_IMAGE_FORMAT_XY_BITMAP:
- case XCB_IMAGE_FORMAT_XY_PIXMAP:
- /* block */ {
- int p;
- uint32_t plane_mask = image->plane_mask;
- uint8_t * plane = row;
- uint32_t byte = xy_image_byte(image, x);
- uint32_t bit = xy_image_bit(image,x);
- uint8_t mask = 1 << bit;
-
- for (p = image->bpp - 1; p >= 0; p--) {
- if ((plane_mask >> p) & 1) {
- uint8_t * bp = plane + byte;
- uint8_t this_bit = ((pixel >> p) & 1) << bit;
- *bp = (*bp & ~mask) | this_bit;
- }
- plane += image->stride * image->height;
- }
- }
- break;
- case XCB_IMAGE_FORMAT_Z_PIXMAP:
- switch (image->bpp) {
- uint32_t mask;
- case 4:
- mask = 0xf;
- pixel &= 0xf;
- if ((x & 1) ==
- (image->byte_order == XCB_IMAGE_ORDER_MSB_FIRST)) {
- pixel <<= 4;
- mask <<= 4;
- }
- row[x >> 1] = (row[x >> 1] & ~mask) | pixel;
- break;
- case 8:
- row[x] = pixel;
- break;
- case 16:
- switch (image->byte_order) {
- case XCB_IMAGE_ORDER_LSB_FIRST:
- row[x << 1] = pixel;
- row[(x << 1) + 1] = pixel >> 8;
- break;
- case XCB_IMAGE_ORDER_MSB_FIRST:
- row[x << 1] = pixel >> 8;
- row[(x << 1) + 1] = pixel;
- break;
- }
- break;
- case 24:
- switch (image->byte_order) {
- case XCB_IMAGE_ORDER_LSB_FIRST:
- row[x * 3] = pixel;
- row[x * 3 + 1] = pixel >> 8;
- row[x * 3 + 2] = pixel >> 16;
- break;
- case XCB_IMAGE_ORDER_MSB_FIRST:
- row[x * 3] = pixel >> 16;
- row[x * 3 + 1] = pixel >> 8;
- row[x * 3 + 2] = pixel;
- break;
- }
- break;
- case 32:
- switch (image->byte_order) {
- case XCB_IMAGE_ORDER_LSB_FIRST:
- row[x << 2] = pixel;
- row[(x << 2) + 1] = pixel >> 8;
- row[(x << 2) + 2] = pixel >> 16;
- row[(x << 2) + 3] = pixel >> 24;
- break;
- case XCB_IMAGE_ORDER_MSB_FIRST:
- row[x << 2] = pixel >> 24;
- row[(x << 2) + 1] = pixel >> 16;
- row[(x << 2) + 2] = pixel >> 8;
- row[(x << 2) + 3] = pixel;
- break;
- }
- break;
- default:
- assert(0);
- }
- break;
- default:
- assert(0);
- }
-}
-
-
-/* XXX this is the most hideously done cut-and-paste
- from above. Any bugs fixed there should be fixed here
- and vice versa. */
-uint32_t
-xcb_image_get_pixel (xcb_image_t *image,
- uint32_t x,
- uint32_t y)
-{
- uint32_t pixel = 0;
- uint8_t *row;
-
- assert(x < image->width && y < image->height);
- row = image->data + (y * image->stride);
- switch (effective_format(image->format, image->bpp)) {
- case XCB_IMAGE_FORMAT_XY_BITMAP:
- case XCB_IMAGE_FORMAT_XY_PIXMAP:
- /* block */ {
- int p;
- uint32_t plane_mask = image->plane_mask;
- uint8_t * plane = row;
- uint32_t byte = xy_image_byte(image, x);
- uint32_t bit = xy_image_bit(image,x);
-
- for (p = image->bpp - 1; p >= 0; p--) {
- pixel <<= 1;
- if ((plane_mask >> p) & 1) {
- uint8_t * bp = plane + byte;
- pixel |= (*bp >> bit) & 1;
- }
- plane += image->stride * image->height;
- }
- }
- return pixel;
- case XCB_IMAGE_FORMAT_Z_PIXMAP:
- switch (image->bpp) {
- case 4:
- if ((x & 1) == (image->byte_order == XCB_IMAGE_ORDER_MSB_FIRST))
- return row[x >> 1] >> 4;
- return row[x >> 1] & 0xf;
- case 8:
- return row[x];
- case 16:
- switch (image->byte_order) {
- case XCB_IMAGE_ORDER_LSB_FIRST:
- pixel = row[x << 1];
- pixel |= row[(x << 1) + 1] << 8;
- break;
- case XCB_IMAGE_ORDER_MSB_FIRST:
- pixel = row[x << 1] << 8;
- pixel |= row[(x << 1) + 1];
- break;
- }
- break;
- case 24:
- switch (image->byte_order) {
- case XCB_IMAGE_ORDER_LSB_FIRST:
- pixel = row[x * 3];
- pixel |= row[x * 3 + 1] << 8;
- pixel |= row[x * 3 + 2] << 16;
- break;
- case XCB_IMAGE_ORDER_MSB_FIRST:
- pixel = row[x * 3] << 16;
- pixel |= row[x * 3 + 1] << 8;
- pixel |= row[x * 3 + 2];
- break;
- }
- break;
- case 32:
- switch (image->byte_order) {
- case XCB_IMAGE_ORDER_LSB_FIRST:
- pixel = row[x << 2];
- pixel |= row[(x << 2) + 1] << 8;
- pixel |= row[(x << 2) + 2] << 16;
- pixel |= row[(x << 2) + 3] << 24;
- break;
- case XCB_IMAGE_ORDER_MSB_FIRST:
- pixel = row[x << 2] << 24;
- pixel |= row[(x << 2) + 1] << 16;
- pixel |= row[(x << 2) + 2] << 8;
- pixel |= row[(x << 2) + 3];
- break;
- }
- break;
- default:
- assert(0);
- }
- return pixel;
- default:
- assert(0);
- }
-}
-
-
-xcb_image_t *
-xcb_image_create_from_bitmap_data (uint8_t * data,
- uint32_t width,
- uint32_t height)
-{
- return xcb_image_create(width, height, XCB_IMAGE_FORMAT_XY_PIXMAP,
- 8, 1, 1, 8,
- XCB_IMAGE_ORDER_LSB_FIRST,
- XCB_IMAGE_ORDER_LSB_FIRST,
- 0, 0, data);
-}
-
-
-/*
- * (Adapted from libX11.)
- *
- * xcb_create_pixmap_from_bitmap_data: Routine to make a pixmap of
- * given depth from user supplied bitmap data.
- * D is any drawable on the same screen that the pixmap will be used in.
- * Data is a pointer to the bit data, and
- * width & height give the size in bits of the pixmap.
- *
- * The following format is assumed for data:
- *
- * format=XY (will use XYPixmap for depth 1 and XYBitmap for larger)
- * bit_order=LSBFirst
- * padding=8
- * bitmap_unit=8
- */
-xcb_pixmap_t
-xcb_create_pixmap_from_bitmap_data (xcb_connection_t * display,
- xcb_drawable_t d,
- uint8_t * data,
- uint32_t width,
- uint32_t height,
- uint32_t depth,
- uint32_t fg,
- uint32_t bg,
- xcb_gcontext_t * gcp)
-{
- xcb_pixmap_t pix;
- xcb_image_t * image;
- xcb_image_t * final_image;
- xcb_gcontext_t gc;
- uint32_t mask = 0;
- xcb_params_gc_t gcv;
-
- image = xcb_image_create_from_bitmap_data(data, width, height);
- if (!image)
- return 0;
- if (depth > 1)
- image->format = XCB_IMAGE_FORMAT_XY_BITMAP;
- final_image = xcb_image_native(display, image, 1);
- if (!final_image) {
- xcb_image_destroy(image);
- return 0;
- }
- pix = xcb_generate_id(display);
- xcb_create_pixmap(display, depth, pix, d, width, height);
- gc = xcb_generate_id(display);
- XCB_AUX_ADD_PARAM(&mask, &gcv, foreground, fg);
- XCB_AUX_ADD_PARAM(&mask, &gcv, background, bg);
- xcb_aux_create_gc(display, gc, pix, mask, &gcv);
- xcb_image_put(display, pix, gc, final_image, 0, 0, 0);
- if (final_image != image)
- xcb_image_destroy(final_image);
- xcb_image_destroy(image);
- if (gcp)
- *gcp = gc;
- else
- xcb_free_gc(display, gc);
- return pix;
-}
-
-
-/* Thanks to Keith Packard <keithp@keithp.com> for this code */
-static void
-swap_image(uint8_t * src,
- uint32_t src_stride,
- uint8_t * dst,
- uint32_t dst_stride,
- uint32_t height,
- uint32_t byteswap,
- int bitswap,
- int nibbleswap)
-{
- while (height--) {
- uint32_t s;
-
- for (s = 0; s < src_stride; s++) {
- uint8_t b;
- uint32_t d = s ^ byteswap;
-
- if (d > dst_stride)
- continue;
-
- b = src[s];
- if (bitswap)
- b = xcb_bit_reverse(b, 8);
- if (nibbleswap)
- b = (b << 4) | (b >> 4);
- dst[d] = b;
- }
- src += src_stride;
- dst += dst_stride;
- }
-}
-
-/* Which order are bytes in (low two bits), given
- * code which accesses an image one byte at a time
- */
-static uint32_t
-byte_order(xcb_image_t *i)
-{
- uint32_t flip = i->byte_order == XCB_IMAGE_ORDER_MSB_FIRST;
-
- switch (i->bpp) {
- default:
- case 8:
- return 0;
- case 16:
- return flip;
- case 32:
- return flip | (flip << 1);
- }
-}
-
-static uint32_t
-bit_order(xcb_image_t *i)
-{
- uint32_t flip = i->byte_order != i->bit_order;
-
- switch (i->unit) {
- default:
- case 8:
- return 0;
- case 16:
- return flip;
- case 32:
- return flip | (flip << 1);
- }
-}
-
-/* Convert from one byte order to another by flipping the
- * low two bits of the byte index along a scanline
- */
-static uint32_t
-conversion_byte_swap(xcb_image_t *src, xcb_image_t *dst)
-{
- xcb_image_format_t ef = effective_format(src->format, src->bpp);
-
- /* src_ef == dst_ef in all callers of this function */
- if (ef == XCB_IMAGE_FORMAT_XY_PIXMAP) {
- return bit_order(src) ^ bit_order(dst);
- } else {
- /* src_bpp == dst_bpp in all callers of this function */
- return byte_order(src) ^ byte_order(dst);
- }
-}
-
-xcb_image_t *
-xcb_image_convert (xcb_image_t * src,
- xcb_image_t * dst)
-{
- xcb_image_format_t ef = effective_format(src->format, src->bpp);
-
- /* Things will go horribly wrong here if a bad
- image is passed in, so we check some things
- up front just to be nice. */
- assert(image_format_valid(src));
- assert(image_format_valid(dst));
-
- /* images must be the same size
- * (yes, we could copy a sub-set)
- */
- if (src->width != dst->width ||
- src->height != dst->height)
- return 0;
-
- if (ef == effective_format(dst->format, dst->bpp) &&
- src->bpp == dst->bpp)
- {
- if (src->unit == dst->unit &&
- src->scanline_pad == dst->scanline_pad &&
- src->byte_order == dst->byte_order &&
- (ef == XCB_IMAGE_FORMAT_Z_PIXMAP ||
- src->bit_order == dst->bit_order)) {
- memcpy(dst->data, src->data, src->size);
- } else {
- int bitswap = 0;
- int nibbleswap = 0;
- uint32_t byteswap = conversion_byte_swap(src, dst);
- uint32_t height = src->height;;
-
- if (ef == XCB_IMAGE_FORMAT_Z_PIXMAP) {
- if (src->bpp == 4 && src->byte_order != dst->byte_order)
- nibbleswap = 1;
- } else {
- if (src->bit_order != dst->bit_order)
- bitswap = 1;
- height *= src->depth;
- }
- swap_image (src->data, src->stride, dst->data, dst->stride,
- height, byteswap, bitswap, nibbleswap);
- }
- }
- else
- {
- uint32_t x;
- uint32_t y;
- /* General case: Slow pixel copy. Should we optimize
- Z24<->Z32 copies of either endianness? */
- for (y = 0; y < src->height; y++) {
- for (x = 0; x < src->width; x++) {
- uint32_t pixel = xcb_image_get_pixel(src, x, y);
- xcb_image_put_pixel(dst, x, y, pixel);
- }
- }
- }
- return dst;
-}
-
-xcb_image_t *
-xcb_image_subimage(xcb_image_t * image,
- uint32_t x,
- uint32_t y,
- uint32_t width,
- uint32_t height,
- void * base,
- uint32_t bytes,
- uint8_t * data)
-{
- int i, j;
- xcb_image_t * result;
-
- if (x + width > image->width)
- return 0;
- if (y + height > image->height)
- return 0;
- result = xcb_image_create(width, height, image->format,
- image->scanline_pad, image->depth,
- image->bpp, image->unit, image->byte_order,
- image->bit_order,
- base, bytes, data);
- if (!result)
- return 0;
- /* XXX FIXME For now, lose on performance. Sorry. */
- for (j = 0; j < height; j++) {
- for (i = 0; i < width; i++) {
- uint32_t pixel = xcb_image_get_pixel(image, x + i, y + j);
- xcb_image_put_pixel(result, i, j, pixel);
- }
- }
- return result;
-}
diff --git a/src/3rdparty/xcb/xcb-util-keysyms/keysyms.c b/src/3rdparty/xcb/xcb-util-keysyms/keysyms.c
deleted file mode 100644
index 7584cccf39..0000000000
--- a/src/3rdparty/xcb/xcb-util-keysyms/keysyms.c
+++ /dev/null
@@ -1,498 +0,0 @@
-/*
- * Copyright © 2008 Ian Osgood <iano@quirkster.com>
- * Copyright © 2008 Jamey Sharp <jamey@minilop.net>
- * Copyright © 2008 Josh Triplett <josh@freedesktop.org>
- * Copyright © 2008 Ulrich Eckhardt <doomster@knuut.de>
- *
- * Permission is hereby granted, free of charge, to any person
- * obtaining a copy of this software and associated documentation
- * files (the "Software"), to deal in the Software without
- * restriction, including without limitation the rights to use, copy,
- * modify, merge, publish, distribute, sublicense, and/or sell copies
- * of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Except as contained in this notice, the names of the authors or
- * their institutions shall not be used in advertising or otherwise to
- * promote the sale, use or other dealings in this Software without
- * prior written authorization from the authors.
- */
-
-#include <stdlib.h>
-
-#include <xcb/xcb.h>
-#define XK_MISCELLANY
-#define XK_XKB_KEYS
-#define XK_LATIN1
-#define XK_LATIN2
-#define XK_LATIN3
-#define XK_LATIN4
-#define XK_CYRILLIC
-#define XK_GREEK
-#define XK_ARMENIAN
-#include <X11/keysymdef.h>
-
-#include "xcb_keysyms.h"
-
-/* Private declaration */
-enum tag_t {
- TAG_COOKIE,
- TAG_VALUE
-};
-
-struct _XCBKeySymbols
-{
- xcb_connection_t *c;
- enum tag_t tag;
- union {
- xcb_get_keyboard_mapping_cookie_t cookie;
- xcb_get_keyboard_mapping_reply_t *reply;
- } u;
-};
-
-static void xcb_convert_case(xcb_keysym_t sym,
- xcb_keysym_t *lower,
- xcb_keysym_t *upper);
-
-static void xcb_key_symbols_get_reply (xcb_key_symbols_t *syms,
- xcb_generic_error_t **e);
-
-/* public implementation */
-
-xcb_key_symbols_t *
-xcb_key_symbols_alloc (xcb_connection_t *c)
-{
- xcb_key_symbols_t *syms;
- xcb_keycode_t min_keycode;
- xcb_keycode_t max_keycode;
-
- if (!c)
- return NULL;
-
- syms = malloc (sizeof (xcb_key_symbols_t));
- if (!syms)
- return NULL;
-
- syms->c = c;
- syms->tag = TAG_COOKIE;
-
- min_keycode = xcb_get_setup (c)->min_keycode;
- max_keycode = xcb_get_setup (c)->max_keycode;
-
- syms->u.cookie = xcb_get_keyboard_mapping(c,
- min_keycode,
- max_keycode - min_keycode + 1);
-
- return syms;
-}
-
-void
-xcb_key_symbols_free (xcb_key_symbols_t *syms)
-{
- if (syms)
- {
- if (syms->tag == TAG_VALUE)
- free (syms->u.reply);
- free (syms);
- syms = NULL;
- }
-}
-
-/* Use of the 'col' parameter:
-
-A list of KeySyms is associated with each KeyCode. The list is intended
-to convey the set of symbols on the corresponding key. If the list
-(ignoring trailing NoSymbol entries) is a single KeySym ``K'', then the
-list is treated as if it were the list ``K NoSymbol K NoSymbol''. If the
-list (ignoring trailing NoSymbol entries) is a pair of KeySyms ``K1
-K2'', then the list is treated as if it were the list ``K1 K2 K1 K2''.
-If the list (ignoring trailing NoSymbol entries) is a triple of KeySyms
-``K1 K2 K3'', then the list is treated as if it were the list ``K1 K2 K3
-NoSymbol''. When an explicit ``void'' element is desired in the list,
-the value VoidSymbol can be used.
-
-The first four elements of the list are split into two groups of
-KeySyms. Group 1 contains the first and second KeySyms; Group 2 contains
-the third and fourth KeySyms. Within each group, if the second element
-of the group is NoSymbol , then the group should be treated as if the
-second element were the same as the first element, except when the first
-element is an alphabetic KeySym ``K'' for which both lowercase and
-uppercase forms are defined. In that case, the group should be treated
-as if the first element were the lowercase form of ``K'' and the second
-element were the uppercase form of ``K.''
-
-The standard rules for obtaining a KeySym from a KeyPress event make use
-of only the Group 1 and Group 2 KeySyms; no interpretation of other
-KeySyms in the list is given. Which group to use is determined by the
-modifier state. Switching between groups is controlled by the KeySym
-named MODE SWITCH, by attaching that KeySym to some KeyCode and
-attaching that KeyCode to any one of the modifiers Mod1 through Mod5.
-This modifier is called the group modifier. For any KeyCode, Group 1 is
-used when the group modifier is off, and Group 2 is used when the group
-modifier is on.
-
-The Lock modifier is interpreted as CapsLock when the KeySym named
-XK_Caps_Lock is attached to some KeyCode and that KeyCode is attached to
-the Lock modifier. The Lock modifier is interpreted as ShiftLock when
-the KeySym named XK_Shift_Lock is attached to some KeyCode and that
-KeyCode is attached to the Lock modifier. If the Lock modifier could be
-interpreted as both CapsLock and ShiftLock, the CapsLock interpretation
-is used.
-
-The operation of keypad keys is controlled by the KeySym named
-XK_Num_Lock, by attaching that KeySym to some KeyCode and attaching that
-KeyCode to any one of the modifiers Mod1 through Mod5 . This modifier is
-called the numlock modifier. The standard KeySyms with the prefix
-``XK_KP_'' in their name are called keypad KeySyms; these are KeySyms
-with numeric value in the hexadecimal range 0xFF80 to 0xFFBD inclusive.
-In addition, vendor-specific KeySyms in the hexadecimal range 0x11000000
-to 0x1100FFFF are also keypad KeySyms.
-
-Within a group, the choice of KeySym is determined by applying the first
-rule that is satisfied from the following list:
-
-* The numlock modifier is on and the second KeySym is a keypad KeySym. In
- this case, if the Shift modifier is on, or if the Lock modifier is on
- and is interpreted as ShiftLock, then the first KeySym is used,
- otherwise the second KeySym is used.
-
-* The Shift and Lock modifiers are both off. In this case, the first
- KeySym is used.
-
-* The Shift modifier is off, and the Lock modifier is on and is
- interpreted as CapsLock. In this case, the first KeySym is used, but
- if that KeySym is lowercase alphabetic, then the corresponding
- uppercase KeySym is used instead.
-
-* The Shift modifier is on, and the Lock modifier is on and is
- interpreted as CapsLock. In this case, the second KeySym is used, but
- if that KeySym is lowercase alphabetic, then the corresponding
- uppercase KeySym is used instead.
-
-* The Shift modifier is on, or the Lock modifier is on and is
- interpreted as ShiftLock, or both. In this case, the second KeySym is
- used.
-
-*/
-
-xcb_keysym_t xcb_key_symbols_get_keysym (xcb_key_symbols_t *syms,
- xcb_keycode_t keycode,
- int col)
-{
- xcb_keysym_t *keysyms;
- xcb_keysym_t keysym_null = { XCB_NO_SYMBOL };
- xcb_keysym_t lsym;
- xcb_keysym_t usym;
- xcb_keycode_t min_keycode;
- xcb_keycode_t max_keycode;
- int per;
-
- if (!syms)
- return keysym_null;
-
- xcb_key_symbols_get_reply (syms, NULL);
-
- keysyms = xcb_get_keyboard_mapping_keysyms (syms->u.reply);
- min_keycode = xcb_get_setup (syms->c)->min_keycode;
- max_keycode = xcb_get_setup (syms->c)->max_keycode;
-
- per = syms->u.reply->keysyms_per_keycode;
- if ((col < 0) || ((col >= per) && (col > 3)) ||
- (keycode < min_keycode) ||
- (keycode > max_keycode))
- return keysym_null;
-
- keysyms = &keysyms[(keycode - min_keycode) * per];
- if (col < 4)
- {
- if (col > 1)
- {
- while ((per > 2) && (keysyms[per - 1] == XCB_NO_SYMBOL))
- per--;
- if (per < 3)
- col -= 2;
- }
- if ((per <= (col|1)) || (keysyms[col|1] == XCB_NO_SYMBOL))
- {
- xcb_convert_case(keysyms[col&~1], &lsym, &usym);
- if (!(col & 1))
- return lsym;
- else if (usym == lsym)
- return keysym_null;
- else
- return usym;
- }
- }
- return keysyms[col];
-}
-
-xcb_keycode_t *
-xcb_key_symbols_get_keycode(xcb_key_symbols_t *syms,
- xcb_keysym_t keysym)
-{
- xcb_keysym_t ks;
- int j, nresult = 0;
- xcb_keycode_t i, min, max, *result = NULL, *result_np = NULL;
-
- if(syms)
- {
- xcb_key_symbols_get_reply (syms, NULL);
- min = xcb_get_setup(syms->c)->min_keycode;
- max = xcb_get_setup(syms->c)->max_keycode;
-
- for(j = 0; j < syms->u.reply->keysyms_per_keycode; j++)
- for(i = min; i && i <= max; i++)
- {
- ks = xcb_key_symbols_get_keysym(syms, i, j);
- if(ks == keysym)
- {
- nresult++;
- result_np = realloc(result,
- sizeof(xcb_keycode_t) * (nresult + 1));
-
- if(result_np == NULL)
- {
- free(result);
- return NULL;
- }
-
- result = result_np;
- result[nresult - 1] = i;
- result[nresult] = XCB_NO_SYMBOL;
- }
- }
- }
-
- return result;
-}
-
-xcb_keysym_t
-xcb_key_press_lookup_keysym (xcb_key_symbols_t *syms,
- xcb_key_press_event_t *event,
- int col)
-{
- return xcb_key_symbols_get_keysym (syms, event->detail, col);
-}
-
-xcb_keysym_t
-xcb_key_release_lookup_keysym (xcb_key_symbols_t *syms,
- xcb_key_release_event_t *event,
- int col)
-{
- return xcb_key_symbols_get_keysym (syms, event->detail, col);
-}
-
-int
-xcb_refresh_keyboard_mapping (xcb_key_symbols_t *syms,
- xcb_mapping_notify_event_t *event)
-{
- if (event->request == XCB_MAPPING_KEYBOARD && syms) {
- if (syms->tag == TAG_VALUE) {
- xcb_keycode_t min_keycode;
- xcb_keycode_t max_keycode;
-
- if (syms->u.reply) {
- free (syms->u.reply);
- syms->u.reply = NULL;
- }
- syms->tag = TAG_COOKIE;
- min_keycode = xcb_get_setup (syms->c)->min_keycode;
- max_keycode = xcb_get_setup (syms->c)->max_keycode;
-
- syms->u.cookie = xcb_get_keyboard_mapping(syms->c,
- min_keycode,
- max_keycode - min_keycode + 1);
-
- }
- return 1;
- }
- return 0;
-}
-
-
-/* Tests for classes of symbols */
-
-int
-xcb_is_keypad_key (xcb_keysym_t keysym)
-{
- return ((keysym >= XK_KP_Space) && (keysym <= XK_KP_Equal));
-}
-
-int
-xcb_is_private_keypad_key (xcb_keysym_t keysym)
-{
- return ((keysym >= 0x11000000) && (keysym <= 0x1100FFFF));
-}
-
-int
-xcb_is_cursor_key (xcb_keysym_t keysym)
-{
- return ((keysym >= XK_Home) && (keysym <= XK_Select));
-}
-
-int
-xcb_is_pf_key (xcb_keysym_t keysym)
-{
- return ((keysym >= XK_KP_F1) && (keysym <= XK_KP_F4));
-}
-
-int
-xcb_is_function_key (xcb_keysym_t keysym)
-{
- return ((keysym >= XK_F1) && (keysym <= XK_F35));
-}
-
-int
-xcb_is_misc_function_key (xcb_keysym_t keysym)
-{
- return ((keysym >= XK_Select) && (keysym <= XK_Break));
-}
-
-int
-xcb_is_modifier_key (xcb_keysym_t keysym)
-{
- return (((keysym >= XK_Shift_L) && (keysym <= XK_Hyper_R)) ||
- ((keysym >= XK_ISO_Lock) && (keysym <= XK_ISO_Level5_Lock)) ||
- (keysym == XK_Mode_switch) ||
- (keysym == XK_Num_Lock));
-}
-
-/* private functions */
-
-void
-xcb_convert_case(xcb_keysym_t sym,
- xcb_keysym_t *lower,
- xcb_keysym_t *upper)
-{
- *lower = sym;
- *upper = sym;
-
- switch(sym >> 8)
- {
- case 0: /* Latin 1 */
- if ((sym >= XK_A) && (sym <= XK_Z))
- *lower += (XK_a - XK_A);
- else if ((sym >= XK_a) && (sym <= XK_z))
- *upper -= (XK_a - XK_A);
- else if ((sym >= XK_Agrave) && (sym <= XK_Odiaeresis))
- *lower += (XK_agrave - XK_Agrave);
- else if ((sym >= XK_agrave) && (sym <= XK_odiaeresis))
- *upper -= (XK_agrave - XK_Agrave);
- else if ((sym >= XK_Ooblique) && (sym <= XK_Thorn))
- *lower += (XK_oslash - XK_Ooblique);
- else if ((sym >= XK_oslash) && (sym <= XK_thorn))
- *upper -= (XK_oslash - XK_Ooblique);
- break;
- case 1: /* Latin 2 */
- /* Assume the KeySym is a legal value (ignore discontinuities) */
- if (sym == XK_Aogonek)
- *lower = XK_aogonek;
- else if (sym >= XK_Lstroke && sym <= XK_Sacute)
- *lower += (XK_lstroke - XK_Lstroke);
- else if (sym >= XK_Scaron && sym <= XK_Zacute)
- *lower += (XK_scaron - XK_Scaron);
- else if (sym >= XK_Zcaron && sym <= XK_Zabovedot)
- *lower += (XK_zcaron - XK_Zcaron);
- else if (sym == XK_aogonek)
- *upper = XK_Aogonek;
- else if (sym >= XK_lstroke && sym <= XK_sacute)
- *upper -= (XK_lstroke - XK_Lstroke);
- else if (sym >= XK_scaron && sym <= XK_zacute)
- *upper -= (XK_scaron - XK_Scaron);
- else if (sym >= XK_zcaron && sym <= XK_zabovedot)
- *upper -= (XK_zcaron - XK_Zcaron);
- else if (sym >= XK_Racute && sym <= XK_Tcedilla)
- *lower += (XK_racute - XK_Racute);
- else if (sym >= XK_racute && sym <= XK_tcedilla)
- *upper -= (XK_racute - XK_Racute);
- break;
- case 2: /* Latin 3 */
- /* Assume the KeySym is a legal value (ignore discontinuities) */
- if (sym >= XK_Hstroke && sym <= XK_Hcircumflex)
- *lower += (XK_hstroke - XK_Hstroke);
- else if (sym >= XK_Gbreve && sym <= XK_Jcircumflex)
- *lower += (XK_gbreve - XK_Gbreve);
- else if (sym >= XK_hstroke && sym <= XK_hcircumflex)
- *upper -= (XK_hstroke - XK_Hstroke);
- else if (sym >= XK_gbreve && sym <= XK_jcircumflex)
- *upper -= (XK_gbreve - XK_Gbreve);
- else if (sym >= XK_Cabovedot && sym <= XK_Scircumflex)
- *lower += (XK_cabovedot - XK_Cabovedot);
- else if (sym >= XK_cabovedot && sym <= XK_scircumflex)
- *upper -= (XK_cabovedot - XK_Cabovedot);
- break;
- case 3: /* Latin 4 */
- /* Assume the KeySym is a legal value (ignore discontinuities) */
- if (sym >= XK_Rcedilla && sym <= XK_Tslash)
- *lower += (XK_rcedilla - XK_Rcedilla);
- else if (sym >= XK_rcedilla && sym <= XK_tslash)
- *upper -= (XK_rcedilla - XK_Rcedilla);
- else if (sym == XK_ENG)
- *lower = XK_eng;
- else if (sym == XK_eng)
- *upper = XK_ENG;
- else if (sym >= XK_Amacron && sym <= XK_Umacron)
- *lower += (XK_amacron - XK_Amacron);
- else if (sym >= XK_amacron && sym <= XK_umacron)
- *upper -= (XK_amacron - XK_Amacron);
- break;
- case 6: /* Cyrillic */
- /* Assume the KeySym is a legal value (ignore discontinuities) */
- if (sym >= XK_Serbian_DJE && sym <= XK_Serbian_DZE)
- *lower -= (XK_Serbian_DJE - XK_Serbian_dje);
- else if (sym >= XK_Serbian_dje && sym <= XK_Serbian_dze)
- *upper += (XK_Serbian_DJE - XK_Serbian_dje);
- else if (sym >= XK_Cyrillic_YU && sym <= XK_Cyrillic_HARDSIGN)
- *lower -= (XK_Cyrillic_YU - XK_Cyrillic_yu);
- else if (sym >= XK_Cyrillic_yu && sym <= XK_Cyrillic_hardsign)
- *upper += (XK_Cyrillic_YU - XK_Cyrillic_yu);
- break;
- case 7: /* Greek */
- /* Assume the KeySym is a legal value (ignore discontinuities) */
- if (sym >= XK_Greek_ALPHAaccent && sym <= XK_Greek_OMEGAaccent)
- *lower += (XK_Greek_alphaaccent - XK_Greek_ALPHAaccent);
- else if (sym >= XK_Greek_alphaaccent && sym <= XK_Greek_omegaaccent &&
- sym != XK_Greek_iotaaccentdieresis &&
- sym != XK_Greek_upsilonaccentdieresis)
- *upper -= (XK_Greek_alphaaccent - XK_Greek_ALPHAaccent);
- else if (sym >= XK_Greek_ALPHA && sym <= XK_Greek_OMEGA)
- *lower += (XK_Greek_alpha - XK_Greek_ALPHA);
- else if (sym >= XK_Greek_alpha && sym <= XK_Greek_omega &&
- sym != XK_Greek_finalsmallsigma)
- *upper -= (XK_Greek_alpha - XK_Greek_ALPHA);
- break;
- case 0x14: /* Armenian */
- if (sym >= XK_Armenian_AYB && sym <= XK_Armenian_fe) {
- *lower = sym | 1;
- *upper = sym & ~1;
- }
- break;
- }
-}
-
-void
-xcb_key_symbols_get_reply (xcb_key_symbols_t *syms,
- xcb_generic_error_t **e)
-{
- if (!syms)
- return;
-
- if (syms->tag == TAG_COOKIE)
- {
- syms->tag = TAG_VALUE;
- syms->u.reply = xcb_get_keyboard_mapping_reply(syms->c,
- syms->u.cookie,
- e);
- }
-}
diff --git a/src/3rdparty/xcb/xcb-util-renderutil/util.c b/src/3rdparty/xcb/xcb-util-renderutil/util.c
deleted file mode 100644
index 7666c433dd..0000000000
--- a/src/3rdparty/xcb/xcb-util-renderutil/util.c
+++ /dev/null
@@ -1,255 +0,0 @@
-/* Copyright © 2000 Keith Packard
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "xcb_renderutil.h"
-
-xcb_render_pictvisual_t *
-xcb_render_util_find_visual_format (const xcb_render_query_pict_formats_reply_t *formats,
- const xcb_visualid_t visual)
-{
- xcb_render_pictscreen_iterator_t screens;
- xcb_render_pictdepth_iterator_t depths;
- xcb_render_pictvisual_iterator_t visuals;
- if (!formats)
- return 0;
- for (screens = xcb_render_query_pict_formats_screens_iterator(formats); screens.rem; xcb_render_pictscreen_next(&screens))
- for (depths = xcb_render_pictscreen_depths_iterator(screens.data); depths.rem; xcb_render_pictdepth_next(&depths))
- for (visuals = xcb_render_pictdepth_visuals_iterator(depths.data); visuals.rem; xcb_render_pictvisual_next(&visuals))
- if (visuals.data->visual == visual)
- return visuals.data;
- return 0;
-}
-
-xcb_render_pictforminfo_t *
-xcb_render_util_find_format (const xcb_render_query_pict_formats_reply_t *formats,
- unsigned long mask,
- const xcb_render_pictforminfo_t *ptemplate,
- int count)
-{
- xcb_render_pictforminfo_iterator_t i;
- if (!formats)
- return 0;
- for (i = xcb_render_query_pict_formats_formats_iterator(formats); i.rem; xcb_render_pictforminfo_next(&i))
- {
- if (mask & XCB_PICT_FORMAT_ID)
- if (ptemplate->id != i.data->id)
- continue;
- if (mask & XCB_PICT_FORMAT_TYPE)
- if (ptemplate->type != i.data->type)
- continue;
- if (mask & XCB_PICT_FORMAT_DEPTH)
- if (ptemplate->depth != i.data->depth)
- continue;
- if (mask & XCB_PICT_FORMAT_RED)
- if (ptemplate->direct.red_shift != i.data->direct.red_shift)
- continue;
- if (mask & XCB_PICT_FORMAT_RED_MASK)
- if (ptemplate->direct.red_mask != i.data->direct.red_mask)
- continue;
- if (mask & XCB_PICT_FORMAT_GREEN)
- if (ptemplate->direct.green_shift != i.data->direct.green_shift)
- continue;
- if (mask & XCB_PICT_FORMAT_GREEN_MASK)
- if (ptemplate->direct.green_mask != i.data->direct.green_mask)
- continue;
- if (mask & XCB_PICT_FORMAT_BLUE)
- if (ptemplate->direct.blue_shift != i.data->direct.blue_shift)
- continue;
- if (mask & XCB_PICT_FORMAT_BLUE_MASK)
- if (ptemplate->direct.blue_mask != i.data->direct.blue_mask)
- continue;
- if (mask & XCB_PICT_FORMAT_ALPHA)
- if (ptemplate->direct.alpha_shift != i.data->direct.alpha_shift)
- continue;
- if (mask & XCB_PICT_FORMAT_ALPHA_MASK)
- if (ptemplate->direct.alpha_mask != i.data->direct.alpha_mask)
- continue;
- if (mask & XCB_PICT_FORMAT_COLORMAP)
- if (ptemplate->colormap != i.data->colormap)
- continue;
- if (count-- == 0)
- return i.data;
- }
- return 0;
-}
-
-xcb_render_pictforminfo_t *
-xcb_render_util_find_standard_format (const xcb_render_query_pict_formats_reply_t *formats,
- xcb_pict_standard_t format)
-{
- static const struct {
- xcb_render_pictforminfo_t templ;
- unsigned long mask;
- } standardFormats[] = {
- /* XCB_PICT_STANDARD_ARGB_32 */
- {
- {
- 0, /* id */
- XCB_RENDER_PICT_TYPE_DIRECT, /* type */
- 32, /* depth */
- { 0 }, /* pad */
- { /* direct */
- 16, /* direct.red */
- 0xff, /* direct.red_mask */
- 8, /* direct.green */
- 0xff, /* direct.green_mask */
- 0, /* direct.blue */
- 0xff, /* direct.blue_mask */
- 24, /* direct.alpha */
- 0xff, /* direct.alpha_mask */
- },
- 0, /* colormap */
- },
- XCB_PICT_FORMAT_TYPE |
- XCB_PICT_FORMAT_DEPTH |
- XCB_PICT_FORMAT_RED |
- XCB_PICT_FORMAT_RED_MASK |
- XCB_PICT_FORMAT_GREEN |
- XCB_PICT_FORMAT_GREEN_MASK |
- XCB_PICT_FORMAT_BLUE |
- XCB_PICT_FORMAT_BLUE_MASK |
- XCB_PICT_FORMAT_ALPHA |
- XCB_PICT_FORMAT_ALPHA_MASK,
- },
- /* XCB_PICT_STANDARD_RGB_24 */
- {
- {
- 0, /* id */
- XCB_RENDER_PICT_TYPE_DIRECT, /* type */
- 24, /* depth */
- { 0 }, /* pad */
- { /* direct */
- 16, /* direct.red */
- 0xff, /* direct.red_MASK */
- 8, /* direct.green */
- 0xff, /* direct.green_MASK */
- 0, /* direct.blue */
- 0xff, /* direct.blue_MASK */
- 0, /* direct.alpha */
- 0x00, /* direct.alpha_MASK */
- },
- 0, /* colormap */
- },
- XCB_PICT_FORMAT_TYPE |
- XCB_PICT_FORMAT_DEPTH |
- XCB_PICT_FORMAT_RED |
- XCB_PICT_FORMAT_RED_MASK |
- XCB_PICT_FORMAT_GREEN |
- XCB_PICT_FORMAT_GREEN_MASK |
- XCB_PICT_FORMAT_BLUE |
- XCB_PICT_FORMAT_BLUE_MASK |
- XCB_PICT_FORMAT_ALPHA_MASK,
- },
- /* XCB_PICT_STANDARD_A_8 */
- {
- {
- 0, /* id */
- XCB_RENDER_PICT_TYPE_DIRECT, /* type */
- 8, /* depth */
- { 0 }, /* pad */
- { /* direct */
- 0, /* direct.red */
- 0x00, /* direct.red_MASK */
- 0, /* direct.green */
- 0x00, /* direct.green_MASK */
- 0, /* direct.blue */
- 0x00, /* direct.blue_MASK */
- 0, /* direct.alpha */
- 0xff, /* direct.alpha_MASK */
- },
- 0, /* colormap */
- },
- XCB_PICT_FORMAT_TYPE |
- XCB_PICT_FORMAT_DEPTH |
- XCB_PICT_FORMAT_RED_MASK |
- XCB_PICT_FORMAT_GREEN_MASK |
- XCB_PICT_FORMAT_BLUE_MASK |
- XCB_PICT_FORMAT_ALPHA |
- XCB_PICT_FORMAT_ALPHA_MASK,
- },
- /* XCB_PICT_STANDARD_A_4 */
- {
- {
- 0, /* id */
- XCB_RENDER_PICT_TYPE_DIRECT, /* type */
- 4, /* depth */
- { 0 }, /* pad */
- { /* direct */
- 0, /* direct.red */
- 0x00, /* direct.red_MASK */
- 0, /* direct.green */
- 0x00, /* direct.green_MASK */
- 0, /* direct.blue */
- 0x00, /* direct.blue_MASK */
- 0, /* direct.alpha */
- 0x0f, /* direct.alpha_MASK */
- },
- 0, /* colormap */
- },
- XCB_PICT_FORMAT_TYPE |
- XCB_PICT_FORMAT_DEPTH |
- XCB_PICT_FORMAT_RED_MASK |
- XCB_PICT_FORMAT_GREEN_MASK |
- XCB_PICT_FORMAT_BLUE_MASK |
- XCB_PICT_FORMAT_ALPHA |
- XCB_PICT_FORMAT_ALPHA_MASK,
- },
- /* XCB_PICT_STANDARD_A_1 */
- {
- {
- 0, /* id */
- XCB_RENDER_PICT_TYPE_DIRECT, /* type */
- 1, /* depth */
- { 0 }, /* pad */
- { /* direct */
- 0, /* direct.red */
- 0x00, /* direct.red_MASK */
- 0, /* direct.green */
- 0x00, /* direct.green_MASK */
- 0, /* direct.blue */
- 0x00, /* direct.blue_MASK */
- 0, /* direct.alpha */
- 0x01, /* direct.alpha_MASK */
- },
- 0, /* colormap */
- },
- XCB_PICT_FORMAT_TYPE |
- XCB_PICT_FORMAT_DEPTH |
- XCB_PICT_FORMAT_RED_MASK |
- XCB_PICT_FORMAT_GREEN_MASK |
- XCB_PICT_FORMAT_BLUE_MASK |
- XCB_PICT_FORMAT_ALPHA |
- XCB_PICT_FORMAT_ALPHA_MASK,
- },
- };
-
- if (format < 0 || format >= sizeof(standardFormats) / sizeof(*standardFormats))
- return 0;
-
- return xcb_render_util_find_format (formats,
- standardFormats[format].mask,
- &standardFormats[format].templ,
- 0);
-}
diff --git a/src/3rdparty/xcb/xcb-util-wm/icccm.c b/src/3rdparty/xcb/xcb-util-wm/icccm.c
deleted file mode 100644
index ed623d08d1..0000000000
--- a/src/3rdparty/xcb/xcb-util-wm/icccm.c
+++ /dev/null
@@ -1,845 +0,0 @@
-/*
- * Copyright © 2008 Arnaud Fontaine <arnau@debian.org>
- * Copyright © 2007-2008 Vincent Torri <vtorri@univ-evry.fr>
- *
- * Permission is hereby granted, free of charge, to any person
- * obtaining a copy of this software and associated documentation
- * files (the "Software"), to deal in the Software without
- * restriction, including without limitation the rights to use, copy,
- * modify, merge, publish, distribute, sublicense, and/or sell copies
- * of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Except as contained in this notice, the names of the authors or
- * their institutions shall not be used in advertising or otherwise to
- * promote the sale, use or other dealings in this Software without
- * prior written authorization from the authors.
- */
-
-#include <stdlib.h>
-#include <limits.h>
-#include <string.h>
-
-#include <xcb/xcb.h>
-
-#include "xcb_icccm.h"
-
-xcb_get_property_cookie_t
-xcb_icccm_get_text_property(xcb_connection_t *c,
- xcb_window_t window,
- xcb_atom_t property)
-{
- return xcb_get_property(c, 0, window, property, XCB_GET_PROPERTY_TYPE_ANY, 0, UINT_MAX);
-}
-
-xcb_get_property_cookie_t
-xcb_icccm_get_text_property_unchecked(xcb_connection_t *c,
- xcb_window_t window,
- xcb_atom_t property)
-{
- return xcb_get_property_unchecked(c, 0, window, property, XCB_GET_PROPERTY_TYPE_ANY, 0, UINT_MAX);
-}
-
-uint8_t
-xcb_icccm_get_text_property_reply(xcb_connection_t *c,
- xcb_get_property_cookie_t cookie,
- xcb_icccm_get_text_property_reply_t *prop,
- xcb_generic_error_t **e)
-{
- xcb_get_property_reply_t *reply = xcb_get_property_reply(c, cookie, e);
-
- if(!reply || reply->type == XCB_NONE) {
- free(reply);
- return 0;
- }
-
- prop->_reply = reply;
- prop->encoding = prop->_reply->type;
- prop->format = prop->_reply->format;
- prop->name_len = xcb_get_property_value_length(prop->_reply);
- prop->name = xcb_get_property_value(prop->_reply);
-
- return 1;
-}
-
-void
-xcb_icccm_get_text_property_reply_wipe(xcb_icccm_get_text_property_reply_t *prop)
-{
- free(prop->_reply);
-}
-
-/* WM_NAME */
-
-xcb_void_cookie_t
-xcb_icccm_set_wm_name_checked(xcb_connection_t *c, xcb_window_t window,
- xcb_atom_t encoding, uint8_t format,
- uint32_t name_len, const char *name)
-{
- return xcb_change_property_checked(c, XCB_PROP_MODE_REPLACE, window,
- XCB_ATOM_WM_NAME, encoding, format,
- name_len, name);
-}
-
-xcb_void_cookie_t
-xcb_icccm_set_wm_name(xcb_connection_t *c, xcb_window_t window, xcb_atom_t encoding,
- uint8_t format, uint32_t name_len, const char *name)
-{
- return xcb_change_property(c, XCB_PROP_MODE_REPLACE, window,
- XCB_ATOM_WM_NAME, encoding, format, name_len,
- name);
-}
-
-xcb_get_property_cookie_t
-xcb_icccm_get_wm_name(xcb_connection_t *c,
- xcb_window_t window)
-{
- return xcb_icccm_get_text_property(c, window, XCB_ATOM_WM_NAME);
-}
-
-xcb_get_property_cookie_t
-xcb_icccm_get_wm_name_unchecked(xcb_connection_t *c,
- xcb_window_t window)
-{
- return xcb_icccm_get_text_property_unchecked(c, window, XCB_ATOM_WM_NAME);
-}
-
-uint8_t
-xcb_icccm_get_wm_name_reply(xcb_connection_t *c,
- xcb_get_property_cookie_t cookie,
- xcb_icccm_get_text_property_reply_t *prop,
- xcb_generic_error_t **e)
-{
- return xcb_icccm_get_text_property_reply(c, cookie, prop, e);
-}
-
-/* WM_ICON_NAME */
-
-xcb_void_cookie_t
-xcb_icccm_set_wm_icon_name_checked(xcb_connection_t *c, xcb_window_t window,
- xcb_atom_t encoding, uint8_t format,
- uint32_t name_len, const char *name)
-{
- return xcb_change_property_checked(c, XCB_PROP_MODE_REPLACE, window,
- XCB_ATOM_WM_ICON_NAME, encoding, format,
- name_len, name);
-}
-
-xcb_void_cookie_t
-xcb_icccm_set_wm_icon_name(xcb_connection_t *c, xcb_window_t window,
- xcb_atom_t encoding, uint8_t format, uint32_t name_len,
- const char *name)
-{
- return xcb_change_property(c, XCB_PROP_MODE_REPLACE, window,
- XCB_ATOM_WM_ICON_NAME, encoding, format,
- name_len, name);
-}
-
-xcb_get_property_cookie_t
-xcb_icccm_get_wm_icon_name(xcb_connection_t *c,
- xcb_window_t window)
-{
- return xcb_icccm_get_text_property(c, window, XCB_ATOM_WM_ICON_NAME);
-}
-
-xcb_get_property_cookie_t
-xcb_icccm_get_wm_icon_name_unchecked(xcb_connection_t *c,
- xcb_window_t window)
-{
- return xcb_icccm_get_text_property_unchecked(c, window, XCB_ATOM_WM_ICON_NAME);
-}
-
-uint8_t
-xcb_icccm_get_wm_icon_name_reply(xcb_connection_t *c,
- xcb_get_property_cookie_t cookie,
- xcb_icccm_get_text_property_reply_t *prop,
- xcb_generic_error_t **e)
-{
- return xcb_icccm_get_text_property_reply(c, cookie, prop, e);
-}
-
-/* WM_COLORMAP_WINDOWS */
-
-xcb_void_cookie_t
-xcb_icccm_set_wm_colormap_windows_checked(xcb_connection_t *c,
- xcb_window_t window,
- xcb_atom_t wm_colormap_windows_atom,
- uint32_t list_len,
- const xcb_window_t *list)
-{
- return xcb_change_property_checked(c, XCB_PROP_MODE_REPLACE, window,
- wm_colormap_windows_atom, XCB_ATOM_WINDOW,
- 32, list_len, list);
-}
-
-xcb_void_cookie_t
-xcb_icccm_set_wm_colormap_windows(xcb_connection_t *c,
- xcb_window_t window,
- xcb_atom_t wm_colormap_windows_atom,
- uint32_t list_len,
- const xcb_atom_t *list)
-{
- return xcb_change_property(c, XCB_PROP_MODE_REPLACE, window,
- wm_colormap_windows_atom, XCB_ATOM_WINDOW, 32,
- list_len, list);
-}
-
-
-xcb_get_property_cookie_t
-xcb_icccm_get_wm_colormap_windows(xcb_connection_t *c,
- xcb_window_t window,
- xcb_atom_t wm_colormap_windows_atom )
-{
- return xcb_get_property(c, 0, window, wm_colormap_windows_atom,
- XCB_ATOM_WINDOW, 0, UINT_MAX);
-}
-
-xcb_get_property_cookie_t
-xcb_icccm_get_wm_colormap_windows_unchecked(xcb_connection_t *c,
- xcb_window_t window,
- xcb_atom_t wm_colormap_windows_atom)
-{
- return xcb_get_property_unchecked(c, 0, window, wm_colormap_windows_atom,
- XCB_ATOM_WINDOW, 0, UINT_MAX);
-}
-
-uint8_t
-xcb_icccm_get_wm_colormap_windows_from_reply(xcb_get_property_reply_t *reply,
- xcb_icccm_get_wm_colormap_windows_reply_t *colormap_windows)
-{
- if(!reply || reply->type != XCB_ATOM_WINDOW || reply->format != 32)
- return 0;
-
- colormap_windows->_reply = reply;
- colormap_windows->windows_len = xcb_get_property_value_length(colormap_windows->_reply) / (reply->format / 8);
- colormap_windows->windows = (xcb_window_t *) xcb_get_property_value(colormap_windows->_reply);
-
- return 1;
-}
-
-uint8_t
-xcb_icccm_get_wm_colormap_windows_reply(xcb_connection_t *c,
- xcb_get_property_cookie_t cookie,
- xcb_icccm_get_wm_colormap_windows_reply_t *colormap_windows,
- xcb_generic_error_t **e)
-{
- xcb_get_property_reply_t *reply = xcb_get_property_reply(c, cookie, e);
- uint8_t ret = xcb_icccm_get_wm_colormap_windows_from_reply(reply, colormap_windows);
- if(!ret)
- free(reply);
- return ret;
-}
-
-void
-xcb_icccm_get_wm_colormap_windows_reply_wipe(xcb_icccm_get_wm_colormap_windows_reply_t *colormap_windows)
-{
- free(colormap_windows->_reply);
-}
-
-/* WM_CLIENT_MACHINE */
-
-xcb_void_cookie_t
-xcb_icccm_set_wm_client_machine_checked(xcb_connection_t *c, xcb_window_t window,
- xcb_atom_t encoding, uint8_t format,
- uint32_t name_len, const char *name)
-{
- return xcb_change_property_checked(c, XCB_PROP_MODE_REPLACE, window,
- XCB_ATOM_WM_CLIENT_MACHINE, encoding,
- format, name_len, name);
-}
-
-xcb_void_cookie_t
-xcb_icccm_set_wm_client_machine(xcb_connection_t *c, xcb_window_t window,
- xcb_atom_t encoding, uint8_t format,
- uint32_t name_len, const char *name)
-{
- return xcb_change_property(c, XCB_PROP_MODE_REPLACE, window,
- XCB_ATOM_WM_CLIENT_MACHINE, encoding, format,
- name_len, name);
-}
-
-xcb_get_property_cookie_t
-xcb_icccm_get_wm_client_machine(xcb_connection_t *c,
- xcb_window_t window)
-{
- return xcb_icccm_get_text_property(c, window, XCB_ATOM_WM_CLIENT_MACHINE);
-}
-
-xcb_get_property_cookie_t
-xcb_icccm_get_wm_client_machine_unchecked(xcb_connection_t *c,
- xcb_window_t window)
-{
- return xcb_icccm_get_text_property_unchecked(c, window, XCB_ATOM_WM_CLIENT_MACHINE);
-}
-
-uint8_t
-xcb_icccm_get_wm_client_machine_reply(xcb_connection_t *c,
- xcb_get_property_cookie_t cookie,
- xcb_icccm_get_text_property_reply_t *prop,
- xcb_generic_error_t **e)
-{
- return xcb_icccm_get_text_property_reply(c, cookie, prop, e);
-}
-
-/* WM_CLASS */
-
-xcb_void_cookie_t
-xcb_icccm_set_wm_class_checked(xcb_connection_t *c,
- xcb_window_t window,
- uint32_t class_len,
- const char *class)
-{
- return xcb_change_property_checked(c, XCB_PROP_MODE_REPLACE, window,
- XCB_ATOM_WM_CLASS, XCB_ATOM_STRING, 8,
- class_len, class);
-}
-
-xcb_void_cookie_t
-xcb_icccm_set_wm_class(xcb_connection_t *c,
- xcb_window_t window,
- uint32_t class_len,
- const char *class)
-{
- return xcb_change_property(c, XCB_PROP_MODE_REPLACE, window,
- XCB_ATOM_WM_CLASS, XCB_ATOM_STRING, 8,
- class_len, class);
-}
-
-xcb_get_property_cookie_t
-xcb_icccm_get_wm_class(xcb_connection_t *c, xcb_window_t window)
-{
- return xcb_get_property(c, 0, window, XCB_ATOM_WM_CLASS, XCB_ATOM_STRING, 0L, 2048L);
-}
-
-xcb_get_property_cookie_t
-xcb_icccm_get_wm_class_unchecked(xcb_connection_t *c, xcb_window_t window)
-{
- return xcb_get_property_unchecked(c, 0, window, XCB_ATOM_WM_CLASS, XCB_ATOM_STRING, 0L, 2048L);
-}
-
-uint8_t
-xcb_icccm_get_wm_class_from_reply(xcb_icccm_get_wm_class_reply_t *prop,
- xcb_get_property_reply_t *reply)
-{
- if(!reply || reply->type != XCB_ATOM_STRING || reply->format != 8)
- return 0;
-
- prop->_reply = reply;
- prop->instance_name = (char *) xcb_get_property_value(prop->_reply);
-
- int len = xcb_get_property_value_length(prop->_reply);
- /* Ensure there's a C end-of-string at the end of the property.
- Truncate the property if necessary (the spec says there's already
- a 0 in the last position, so this only hurts invalid props). */
- if(len < reply->length * 4)
- prop->instance_name[len] = 0;
- else
- prop->instance_name[len-1] = 0;
-
- int name_len = strlen(prop->instance_name);
- if(name_len == len)
- name_len--;
-
- prop->class_name = prop->instance_name + name_len + 1;
-
- return 1;
-}
-
-uint8_t
-xcb_icccm_get_wm_class_reply(xcb_connection_t *c, xcb_get_property_cookie_t cookie,
- xcb_icccm_get_wm_class_reply_t *prop, xcb_generic_error_t **e)
-{
- xcb_get_property_reply_t *reply = xcb_get_property_reply(c, cookie, e);
- uint8_t ret = xcb_icccm_get_wm_class_from_reply(prop, reply);
- /* if reply parsing failed, free the reply to avoid mem leak */
- if(!ret)
- free(reply);
- return ret;
-}
-
-void
-xcb_icccm_get_wm_class_reply_wipe(xcb_icccm_get_wm_class_reply_t *prop)
-{
- free(prop->_reply);
-}
-
-/* WM_TRANSIENT_FOR */
-
-xcb_void_cookie_t
-xcb_icccm_set_wm_transient_for_checked(xcb_connection_t *c, xcb_window_t window,
- xcb_window_t transient_for_window)
-{
- return xcb_change_property_checked(c, XCB_PROP_MODE_REPLACE, window,
- XCB_ATOM_WM_TRANSIENT_FOR,
- XCB_ATOM_WINDOW, 32, 1,
- &transient_for_window);
-}
-
-xcb_void_cookie_t
-xcb_icccm_set_wm_transient_for(xcb_connection_t *c, xcb_window_t window,
- xcb_window_t transient_for_window)
-{
- return xcb_change_property(c, XCB_PROP_MODE_REPLACE, window,
- XCB_ATOM_WM_TRANSIENT_FOR, XCB_ATOM_WINDOW, 32,
- 1, &transient_for_window);
-}
-
-xcb_get_property_cookie_t
-xcb_icccm_get_wm_transient_for(xcb_connection_t *c, xcb_window_t window)
-{
- return xcb_get_property(c, 0, window, XCB_ATOM_WM_TRANSIENT_FOR, XCB_ATOM_WINDOW, 0, 1);
-}
-
-xcb_get_property_cookie_t
-xcb_icccm_get_wm_transient_for_unchecked(xcb_connection_t *c, xcb_window_t window)
-{
- return xcb_get_property_unchecked(c, 0, window, XCB_ATOM_WM_TRANSIENT_FOR, XCB_ATOM_WINDOW, 0, 1);
-}
-
-uint8_t
-xcb_icccm_get_wm_transient_for_from_reply(xcb_window_t *prop,
- xcb_get_property_reply_t *reply)
-{
- if(!reply || reply->type != XCB_ATOM_WINDOW || reply->format != 32 || !reply->length)
- return 0;
-
- *prop = *((xcb_window_t *) xcb_get_property_value(reply));
-
- return 1;
-}
-
-uint8_t
-xcb_icccm_get_wm_transient_for_reply(xcb_connection_t *c,
- xcb_get_property_cookie_t cookie,
- xcb_window_t *prop,
- xcb_generic_error_t **e)
-{
- xcb_get_property_reply_t *reply = xcb_get_property_reply(c, cookie, e);
- uint8_t ret = xcb_icccm_get_wm_transient_for_from_reply(prop, reply);
- free(reply);
- return ret;
-}
-
-/* WM_SIZE_HINTS */
-
-void
-xcb_icccm_size_hints_set_position(xcb_size_hints_t *hints, int user_specified,
- int32_t x, int32_t y)
-{
- hints->flags &= ~(XCB_ICCCM_SIZE_HINT_US_POSITION | XCB_ICCCM_SIZE_HINT_P_POSITION);
- if (user_specified)
- hints->flags |= XCB_ICCCM_SIZE_HINT_US_POSITION;
- else
- hints->flags |= XCB_ICCCM_SIZE_HINT_P_POSITION;
- hints->x = x;
- hints->y = y;
-}
-
-void
-xcb_icccm_size_hints_set_size(xcb_size_hints_t *hints, int user_specified,
- int32_t width, int32_t height)
-{
- hints->flags &= ~(XCB_ICCCM_SIZE_HINT_US_SIZE | XCB_ICCCM_SIZE_HINT_P_SIZE);
- if (user_specified)
- hints->flags |= XCB_ICCCM_SIZE_HINT_US_SIZE;
- else
- hints->flags |= XCB_ICCCM_SIZE_HINT_P_SIZE;
- hints->width = width;
- hints->height = height;
-}
-
-void
-xcb_icccm_size_hints_set_min_size(xcb_size_hints_t *hints, int32_t min_width,
- int32_t min_height)
-{
- hints->flags |= XCB_ICCCM_SIZE_HINT_P_MIN_SIZE;
- hints->min_width = min_width;
- hints->min_height = min_height;
-}
-
-void
-xcb_icccm_size_hints_set_max_size(xcb_size_hints_t *hints, int32_t max_width,
- int32_t max_height)
-{
- hints->flags |= XCB_ICCCM_SIZE_HINT_P_MAX_SIZE;
- hints->max_width = max_width;
- hints->max_height = max_height;
-}
-
-void
-xcb_icccm_size_hints_set_resize_inc(xcb_size_hints_t *hints, int32_t width_inc,
- int32_t height_inc)
-{
- hints->flags |= XCB_ICCCM_SIZE_HINT_P_RESIZE_INC;
- hints->width_inc = width_inc;
- hints->height_inc = height_inc;
-}
-
-void
-xcb_icccm_size_hints_set_aspect(xcb_size_hints_t *hints, int32_t min_aspect_num,
- int32_t min_aspect_den, int32_t max_aspect_num,
- int32_t max_aspect_den)
-{
- hints->flags |= XCB_ICCCM_SIZE_HINT_P_ASPECT;
- hints->min_aspect_num = min_aspect_num;
- hints->min_aspect_den = min_aspect_den;
- hints->max_aspect_num = max_aspect_num;
- hints->max_aspect_den = max_aspect_den;
-}
-
-void
-xcb_icccm_size_hints_set_base_size(xcb_size_hints_t *hints, int32_t base_width,
- int32_t base_height)
-{
- hints->flags |= XCB_ICCCM_SIZE_HINT_BASE_SIZE;
- hints->base_width = base_width;
- hints->base_height = base_height;
-}
-
-void
-xcb_icccm_size_hints_set_win_gravity(xcb_size_hints_t *hints, xcb_gravity_t win_gravity)
-{
- hints->flags |= XCB_ICCCM_SIZE_HINT_P_WIN_GRAVITY;
- hints->win_gravity = win_gravity;
-}
-
-xcb_void_cookie_t
-xcb_icccm_set_wm_size_hints_checked(xcb_connection_t *c, xcb_window_t window,
- xcb_atom_t property, xcb_size_hints_t *hints)
-{
- return xcb_change_property_checked(c, XCB_PROP_MODE_REPLACE, window, property,
- XCB_ATOM_WM_SIZE_HINTS, 32, sizeof(*hints) >> 2,
- hints);
-}
-
-xcb_void_cookie_t
-xcb_icccm_set_wm_size_hints(xcb_connection_t *c, xcb_window_t window,
- xcb_atom_t property, xcb_size_hints_t *hints)
-{
- return xcb_change_property(c, XCB_PROP_MODE_REPLACE, window, property,
- XCB_ATOM_WM_SIZE_HINTS, 32, sizeof(*hints) >> 2, hints);
-}
-
-xcb_get_property_cookie_t
-xcb_icccm_get_wm_size_hints(xcb_connection_t *c, xcb_window_t window,
- xcb_atom_t property)
-{
- return xcb_get_property(c, 0, window, property, XCB_ATOM_WM_SIZE_HINTS, 0L, XCB_ICCCM_NUM_WM_SIZE_HINTS_ELEMENTS);
-}
-
-xcb_get_property_cookie_t
-xcb_icccm_get_wm_size_hints_unchecked(xcb_connection_t *c, xcb_window_t window,
- xcb_atom_t property)
-{
- return xcb_get_property_unchecked(c, 0, window, property, XCB_ATOM_WM_SIZE_HINTS,
- 0L, XCB_ICCCM_NUM_WM_SIZE_HINTS_ELEMENTS);
-}
-
-uint8_t
-xcb_icccm_get_wm_size_hints_from_reply(xcb_size_hints_t *hints, xcb_get_property_reply_t *reply)
-{
- uint32_t flags;
- int length;
-
- if(!reply)
- return 0;
-
- if (!(reply->type == XCB_ATOM_WM_SIZE_HINTS &&
- reply->format == 32))
- return 0;
-
- length = xcb_get_property_value_length(reply) / (reply->format / 8);
-
- if(length > XCB_ICCCM_NUM_WM_SIZE_HINTS_ELEMENTS)
- length = XCB_ICCCM_NUM_WM_SIZE_HINTS_ELEMENTS;
-
- memcpy(hints, (xcb_size_hints_t *) xcb_get_property_value (reply),
- length * (reply->format / 8));
-
- flags = (XCB_ICCCM_SIZE_HINT_US_POSITION | XCB_ICCCM_SIZE_HINT_US_SIZE |
- XCB_ICCCM_SIZE_HINT_P_POSITION | XCB_ICCCM_SIZE_HINT_P_SIZE |
- XCB_ICCCM_SIZE_HINT_P_MIN_SIZE | XCB_ICCCM_SIZE_HINT_P_MAX_SIZE |
- XCB_ICCCM_SIZE_HINT_P_RESIZE_INC | XCB_ICCCM_SIZE_HINT_P_ASPECT);
-
- /* NumPropSizeElements = 18 (ICCCM version 1) */
- if(length >= 18)
- flags |= (XCB_ICCCM_SIZE_HINT_BASE_SIZE | XCB_ICCCM_SIZE_HINT_P_WIN_GRAVITY);
- else
- {
- hints->base_width = 0;
- hints->base_height = 0;
- hints->win_gravity = 0;
- }
- /* get rid of unwanted bits */
- hints->flags &= flags;
-
- return 1;
-}
-
-uint8_t
-xcb_icccm_get_wm_size_hints_reply(xcb_connection_t *c, xcb_get_property_cookie_t cookie,
- xcb_size_hints_t *hints, xcb_generic_error_t **e)
-{
- xcb_get_property_reply_t *reply = xcb_get_property_reply(c, cookie, e);
- uint8_t ret = xcb_icccm_get_wm_size_hints_from_reply(hints, reply);
- free(reply);
- return ret;
-}
-
-/* WM_NORMAL_HINTS */
-
-xcb_void_cookie_t
-xcb_icccm_set_wm_normal_hints_checked(xcb_connection_t *c, xcb_window_t window,
- xcb_size_hints_t *hints)
-{
- return xcb_icccm_set_wm_size_hints_checked(c, window, XCB_ATOM_WM_NORMAL_HINTS, hints);
-}
-
-xcb_void_cookie_t
-xcb_icccm_set_wm_normal_hints(xcb_connection_t *c, xcb_window_t window,
- xcb_size_hints_t *hints)
-{
- return xcb_icccm_set_wm_size_hints(c, window, XCB_ATOM_WM_NORMAL_HINTS, hints);
-}
-
-xcb_get_property_cookie_t
-xcb_icccm_get_wm_normal_hints(xcb_connection_t *c, xcb_window_t window)
-{
- return xcb_icccm_get_wm_size_hints(c, window, XCB_ATOM_WM_NORMAL_HINTS);
-}
-
-xcb_get_property_cookie_t
-xcb_icccm_get_wm_normal_hints_unchecked(xcb_connection_t *c, xcb_window_t window)
-{
- return xcb_icccm_get_wm_size_hints_unchecked(c, window, XCB_ATOM_WM_NORMAL_HINTS);
-}
-
-uint8_t
-xcb_icccm_get_wm_normal_hints_reply(xcb_connection_t *c,
- xcb_get_property_cookie_t cookie,
- xcb_size_hints_t *hints,
- xcb_generic_error_t **e)
-{
- return xcb_icccm_get_wm_size_hints_reply(c, cookie, hints, e);
-}
-
-/* WM_HINTS */
-
-uint32_t
-xcb_icccm_wm_hints_get_urgency(xcb_icccm_wm_hints_t *hints)
-{
- return (hints->flags & XCB_ICCCM_WM_HINT_X_URGENCY);
-}
-
-void
-xcb_icccm_wm_hints_set_input(xcb_icccm_wm_hints_t *hints, uint8_t input)
-{
- hints->input = input;
- hints->flags |= XCB_ICCCM_WM_HINT_INPUT;
-}
-
-void
-xcb_icccm_wm_hints_set_iconic(xcb_icccm_wm_hints_t *hints)
-{
- hints->initial_state = XCB_ICCCM_WM_STATE_ICONIC;
- hints->flags |= XCB_ICCCM_WM_HINT_STATE;
-}
-
-void
-xcb_icccm_wm_hints_set_normal(xcb_icccm_wm_hints_t *hints)
-{
- hints->initial_state = XCB_ICCCM_WM_STATE_NORMAL;
- hints->flags |= XCB_ICCCM_WM_HINT_STATE;
-}
-
-void
-xcb_icccm_wm_hints_set_withdrawn(xcb_icccm_wm_hints_t *hints)
-{
- hints->initial_state = XCB_ICCCM_WM_STATE_WITHDRAWN;
- hints->flags |= XCB_ICCCM_WM_HINT_STATE;
-}
-
-void
-xcb_icccm_wm_hints_set_none(xcb_icccm_wm_hints_t *hints)
-{
- hints->flags &= ~XCB_ICCCM_WM_HINT_STATE;
-}
-
-void
-xcb_icccm_wm_hints_set_icon_pixmap(xcb_icccm_wm_hints_t *hints, xcb_pixmap_t icon_pixmap)
-{
- hints->icon_pixmap = icon_pixmap;
- hints->flags |= XCB_ICCCM_WM_HINT_ICON_PIXMAP;
-}
-
-void
-xcb_icccm_wm_hints_set_icon_mask(xcb_icccm_wm_hints_t *hints, xcb_pixmap_t icon_mask)
-{
- hints->icon_mask = icon_mask;
- hints->flags |= XCB_ICCCM_WM_HINT_ICON_MASK;
-}
-
-void
-xcb_icccm_wm_hints_set_icon_window(xcb_icccm_wm_hints_t *hints, xcb_window_t icon_window)
-{
- hints->icon_window = icon_window;
- hints->flags |= XCB_ICCCM_WM_HINT_ICON_WINDOW;
-}
-
-void
-xcb_icccm_wm_hints_set_window_group(xcb_icccm_wm_hints_t *hints, xcb_window_t window_group)
-{
- hints->window_group = window_group;
- hints->flags |= XCB_ICCCM_WM_HINT_WINDOW_GROUP;
-}
-
-void
-xcb_icccm_wm_hints_set_urgency(xcb_icccm_wm_hints_t *hints)
-{
- hints->flags |= XCB_ICCCM_WM_HINT_X_URGENCY;
-}
-
-xcb_void_cookie_t
-xcb_icccm_set_wm_hints_checked(xcb_connection_t *c, xcb_window_t window,
- xcb_icccm_wm_hints_t *hints)
-{
- return xcb_change_property_checked(c, XCB_PROP_MODE_REPLACE, window, XCB_ATOM_WM_HINTS,
- XCB_ATOM_WM_HINTS, 32, sizeof(*hints) >> 2, hints);
-}
-
-xcb_void_cookie_t
-xcb_icccm_set_wm_hints(xcb_connection_t *c, xcb_window_t window,
- xcb_icccm_wm_hints_t *hints)
-{
- return xcb_change_property(c, XCB_PROP_MODE_REPLACE, window, XCB_ATOM_WM_HINTS,
- XCB_ATOM_WM_HINTS, 32, sizeof(*hints) >> 2, hints);
-}
-
-xcb_get_property_cookie_t
-xcb_icccm_get_wm_hints(xcb_connection_t *c,
- xcb_window_t window)
-{
- return xcb_get_property(c, 0, window, XCB_ATOM_WM_HINTS, XCB_ATOM_WM_HINTS, 0L,
- XCB_ICCCM_NUM_WM_HINTS_ELEMENTS);
-}
-
-xcb_get_property_cookie_t
-xcb_icccm_get_wm_hints_unchecked(xcb_connection_t *c,
- xcb_window_t window)
-{
- return xcb_get_property_unchecked(c, 0, window, XCB_ATOM_WM_HINTS, XCB_ATOM_WM_HINTS, 0L,
- XCB_ICCCM_NUM_WM_HINTS_ELEMENTS);
-}
-
-uint8_t
-xcb_icccm_get_wm_hints_from_reply(xcb_icccm_wm_hints_t *hints,
- xcb_get_property_reply_t *reply)
-{
- if(!reply || reply->type != XCB_ATOM_WM_HINTS || reply->format != 32)
- return 0;
-
- int length = xcb_get_property_value_length(reply);
- int num_elem = length / (reply->format / 8);
-
- if(num_elem < XCB_ICCCM_NUM_WM_HINTS_ELEMENTS - 1)
- return 0;
-
- if(length > sizeof(xcb_size_hints_t))
- length = sizeof(xcb_size_hints_t);
-
- memcpy(hints, (xcb_size_hints_t *) xcb_get_property_value(reply), length);
-
- if(num_elem < XCB_ICCCM_NUM_WM_HINTS_ELEMENTS)
- hints->window_group = XCB_NONE;
-
- return 1;
-}
-
-uint8_t
-xcb_icccm_get_wm_hints_reply(xcb_connection_t *c,
- xcb_get_property_cookie_t cookie,
- xcb_icccm_wm_hints_t *hints,
- xcb_generic_error_t **e)
-{
- xcb_get_property_reply_t *reply = xcb_get_property_reply(c, cookie, e);
- int ret = xcb_icccm_get_wm_hints_from_reply(hints, reply);
- free(reply);
- return ret;
-}
-
-/* WM_PROTOCOLS */
-
-xcb_void_cookie_t
-xcb_icccm_set_wm_protocols_checked(xcb_connection_t *c, xcb_window_t window,
- xcb_atom_t wm_protocols, uint32_t list_len,
- xcb_atom_t *list)
-{
- return xcb_change_property_checked(c, XCB_PROP_MODE_REPLACE, window,
- wm_protocols, XCB_ATOM_ATOM, 32, list_len, list);
-}
-
-xcb_void_cookie_t
-xcb_icccm_set_wm_protocols(xcb_connection_t *c, xcb_window_t window,
- xcb_atom_t wm_protocols, uint32_t list_len, xcb_atom_t *list)
-{
- return xcb_change_property(c, XCB_PROP_MODE_REPLACE, window, wm_protocols,
- XCB_ATOM_ATOM, 32, list_len, list);
-}
-
-xcb_get_property_cookie_t
-xcb_icccm_get_wm_protocols(xcb_connection_t *c, xcb_window_t window,
- xcb_atom_t wm_protocol_atom)
-{
- return xcb_get_property(c, 0, window, wm_protocol_atom, XCB_ATOM_ATOM, 0, UINT_MAX);
-}
-
-xcb_get_property_cookie_t
-xcb_icccm_get_wm_protocols_unchecked(xcb_connection_t *c,
- xcb_window_t window,
- xcb_atom_t wm_protocol_atom)
-{
- return xcb_get_property_unchecked(c, 0, window, wm_protocol_atom, XCB_ATOM_ATOM, 0,
- UINT_MAX);
-}
-
-uint8_t
-xcb_icccm_get_wm_protocols_from_reply(xcb_get_property_reply_t *reply, xcb_icccm_get_wm_protocols_reply_t *protocols)
-{
- if(!reply || reply->type != XCB_ATOM_ATOM || reply->format != 32)
- return 0;
-
- protocols->_reply = reply;
- protocols->atoms_len = xcb_get_property_value_length(protocols->_reply) / (reply->format / 8);
- protocols->atoms = (xcb_atom_t *) xcb_get_property_value(protocols->_reply);
-
- return 1;
-}
-
-uint8_t
-xcb_icccm_get_wm_protocols_reply(xcb_connection_t *c,
- xcb_get_property_cookie_t cookie,
- xcb_icccm_get_wm_protocols_reply_t *protocols,
- xcb_generic_error_t **e)
-{
- xcb_get_property_reply_t *reply = xcb_get_property_reply(c, cookie, e);
- uint8_t ret = xcb_icccm_get_wm_protocols_from_reply(reply, protocols);
- if(!ret)
- free(reply);
- return ret;
-}
-
-void
-xcb_icccm_get_wm_protocols_reply_wipe(xcb_icccm_get_wm_protocols_reply_t *protocols)
-{
- free(protocols->_reply);
-}
diff --git a/src/3rdparty/xcb/xcb-util/atoms.c b/src/3rdparty/xcb/xcb-util/atoms.c
deleted file mode 100644
index 7b3aec6c0e..0000000000
--- a/src/3rdparty/xcb/xcb-util/atoms.c
+++ /dev/null
@@ -1,76 +0,0 @@
-/* Rely on vasprintf (GNU extension) instead of vsnprintf if
- possible... */
-#ifdef HAVE_VASPRINTF
-#define _GNU_SOURCE
-#include <stdio.h>
-#endif
-
-#include <xcb/xcb.h>
-#include <stdlib.h>
-#include <stdarg.h>
-#include "xcb_atom.h"
-
-static char *makename(const char *fmt, ...)
-{
- char *ret;
- int n;
- va_list ap;
-
-#ifndef HAVE_VASPRINTF
- char *np;
- int size = 64;
-
- /* First allocate 'size' bytes, should be enough usually */
- if((ret = malloc(size)) == NULL)
- return NULL;
-
- while(1)
- {
- va_start(ap, fmt);
- n = vsnprintf(ret, size, fmt, ap);
- va_end(ap);
-
- if(n < 0)
- return NULL;
-
- if(n < size)
- return ret;
-
- size = n + 1;
- if((np = realloc(ret, size)) == NULL)
- {
- free(ret);
- return NULL;
- }
-
- ret = np;
- }
-#else
- va_start(ap, fmt);
- n = vasprintf(&ret, fmt, ap);
- va_end(ap);
-
- if(n < 0)
- return NULL;
-
- return ret;
-#endif
-}
-
-char *xcb_atom_name_by_screen(const char *base, uint8_t screen)
-{
- return makename("%s_S%u", base, screen);
-}
-
-char *xcb_atom_name_by_resource(const char *base, uint32_t resource)
-{
- return makename("%s_R%08X", base, resource);
-}
-
-char *xcb_atom_name_unique(const char *base, uint32_t id)
-{
- if(base)
- return makename("%s_U%lu", base, id);
- else
- return makename("U%lu", id);
-}
diff --git a/src/3rdparty/xcb/xcb-util/event.c b/src/3rdparty/xcb/xcb-util/event.c
deleted file mode 100644
index de8899adcd..0000000000
--- a/src/3rdparty/xcb/xcb-util/event.c
+++ /dev/null
@@ -1,257 +0,0 @@
-/*
- * Copyright © 2008-2009 Julien Danjou <julien@danjou.info>
- *
- * Permission is hereby granted, free of charge, to any person
- * obtaining a copy of this software and associated documentation
- * files (the "Software"), to deal in the Software without
- * restriction, including without limitation the rights to use, copy,
- * modify, merge, publish, distribute, sublicense, and/or sell copies
- * of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Except as contained in this notice, the names of the authors or
- * their institutions shall not be used in advertising or otherwise to
- * promote the sale, use or other dealings in this Software without
- * prior written authorization from the authors.
- */
-
-#include <assert.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "xcb_event.h"
-
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-
-#define ssizeof(foo) (ssize_t)sizeof(foo)
-#define countof(foo) (ssizeof(foo) / ssizeof(foo[0]))
-
-static const char *labelError[] =
-{
- "Success",
- "BadRequest",
- "BadValue",
- "BadWindow",
- "BadPixmap",
- "BadAtom",
- "BadCursor",
- "BadFont",
- "BadMatch",
- "BadDrawable",
- "BadAccess",
- "BadAlloc",
- "BadColor",
- "BadGC",
- "BadIDChoice",
- "BadName",
- "BadLength",
- "BadImplementation",
-};
-
-static const char *labelRequest[] =
-{
- "no request",
- "CreateWindow",
- "ChangeWindowAttributes",
- "GetWindowAttributes",
- "DestroyWindow",
- "DestroySubwindows",
- "ChangeSaveSet",
- "ReparentWindow",
- "MapWindow",
- "MapSubwindows",
- "UnmapWindow",
- "UnmapSubwindows",
- "ConfigureWindow",
- "CirculateWindow",
- "GetGeometry",
- "QueryTree",
- "InternAtom",
- "GetAtomName",
- "ChangeProperty",
- "DeleteProperty",
- "GetProperty",
- "ListProperties",
- "SetSelectionOwner",
- "GetSelectionOwner",
- "ConvertSelection",
- "SendEvent",
- "GrabPointer",
- "UngrabPointer",
- "GrabButton",
- "UngrabButton",
- "ChangeActivePointerGrab",
- "GrabKeyboard",
- "UngrabKeyboard",
- "GrabKey",
- "UngrabKey",
- "AllowEvents",
- "GrabServer",
- "UngrabServer",
- "QueryPointer",
- "GetMotionEvents",
- "TranslateCoords",
- "WarpPointer",
- "SetInputFocus",
- "GetInputFocus",
- "QueryKeymap",
- "OpenFont",
- "CloseFont",
- "QueryFont",
- "QueryTextExtents",
- "ListFonts",
- "ListFontsWithInfo",
- "SetFontPath",
- "GetFontPath",
- "CreatePixmap",
- "FreePixmap",
- "CreateGC",
- "ChangeGC",
- "CopyGC",
- "SetDashes",
- "SetClipRectangles",
- "FreeGC",
- "ClearArea",
- "CopyArea",
- "CopyPlane",
- "PolyPoint",
- "PolyLine",
- "PolySegment",
- "PolyRectangle",
- "PolyArc",
- "FillPoly",
- "PolyFillRectangle",
- "PolyFillArc",
- "PutImage",
- "GetImage",
- "PolyText",
- "PolyText",
- "ImageText",
- "ImageText",
- "CreateColormap",
- "FreeColormap",
- "CopyColormapAndFree",
- "InstallColormap",
- "UninstallColormap",
- "ListInstalledColormaps",
- "AllocColor",
- "AllocNamedColor",
- "AllocColorCells",
- "AllocColorPlanes",
- "FreeColors",
- "StoreColors",
- "StoreNamedColor",
- "QueryColors",
- "LookupColor",
- "CreateCursor",
- "CreateGlyphCursor",
- "FreeCursor",
- "RecolorCursor",
- "QueryBestSize",
- "QueryExtension",
- "ListExtensions",
- "ChangeKeyboardMapping",
- "GetKeyboardMapping",
- "ChangeKeyboardControl",
- "GetKeyboardControl",
- "Bell",
- "ChangePointerControl",
- "GetPointerControl",
- "SetScreenSaver",
- "GetScreenSaver",
- "ChangeHosts",
- "ListHosts",
- "SetAccessControl",
- "SetCloseDownMode",
- "KillClient",
- "RotateProperties",
- "ForceScreenSaver",
- "SetPointerMapping",
- "GetPointerMapping",
- "SetModifierMapping",
- "GetModifierMapping",
- "major 120",
- "major 121",
- "major 122",
- "major 123",
- "major 124",
- "major 125",
- "major 126",
- "NoOperation",
-};
-
-static const char *labelEvent[] =
-{
- "error",
- "reply",
- "KeyPress",
- "KeyRelease",
- "ButtonPress",
- "ButtonRelease",
- "MotionNotify",
- "EnterNotify",
- "LeaveNotify",
- "FocusIn",
- "FocusOut",
- "KeymapNotify",
- "Expose",
- "GraphicsExpose",
- "NoExpose",
- "VisibilityNotify",
- "CreateNotify",
- "DestroyNotify",
- "UnmapNotify",
- "MapNotify",
- "MapRequest",
- "ReparentNotify",
- "ConfigureNotify",
- "ConfigureRequest",
- "GravityNotify",
- "ResizeRequest",
- "CirculateNotify",
- "CirculateRequest",
- "PropertyNotify",
- "SelectionClear",
- "SelectionRequest",
- "SelectionNotify",
- "ColormapNotify",
- "ClientMessage",
- "MappingNotify",
-};
-
-const char *
-xcb_event_get_label(uint8_t type)
-{
- if(type < countof(labelEvent))
- return labelEvent[type];
- return NULL;
-}
-
-const char *
-xcb_event_get_error_label(uint8_t type)
-{
- if(type < countof(labelError))
- return labelError[type];
- return NULL;
-}
-
-const char *
-xcb_event_get_request_label(uint8_t type)
-{
- if(type < countof(labelRequest))
- return labelRequest[type];
- return NULL;
-}
diff --git a/src/3rdparty/xcb/xcb-util/xcb_aux.c b/src/3rdparty/xcb/xcb-util/xcb_aux.c
deleted file mode 100644
index c81039885f..0000000000
--- a/src/3rdparty/xcb/xcb-util/xcb_aux.c
+++ /dev/null
@@ -1,374 +0,0 @@
-/*
- * Copyright © 2008 Bart Massey <bart@cs.pdx.edu>
- * Copyright © 2008 Ian Osgood <iano@quirkster.com>
- * Copyright © 2008 Jamey Sharp <jamey@minilop.net>
- * Copyright © 2008 Josh Triplett <josh@freedesktop.org>
- *
- * Permission is hereby granted, free of charge, to any person
- * obtaining a copy of this software and associated documentation
- * files (the "Software"), to deal in the Software without
- * restriction, including without limitation the rights to use, copy,
- * modify, merge, publish, distribute, sublicense, and/or sell copies
- * of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Except as contained in this notice, the names of the authors or
- * their institutions shall not be used in advertising or otherwise to
- * promote the sale, use or other dealings in this Software without
- * prior written authorization from the authors.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <xcb/xcb.h>
-#include "xcb_aux.h"
-
-/* Connection related functions */
-
-uint8_t
-xcb_aux_get_depth (xcb_connection_t *c,
- xcb_screen_t *screen)
-{
- xcb_drawable_t drawable;
- xcb_get_geometry_reply_t *geom;
- int depth = 0;
-
- drawable = screen->root;
- geom = xcb_get_geometry_reply (c, xcb_get_geometry(c, drawable), 0);
-
- if (geom) {
- depth = geom->depth;
- free (geom);
- }
-
- return depth;
-}
-
-uint8_t
-xcb_aux_get_depth_of_visual (xcb_screen_t *screen,
- xcb_visualid_t id)
-{
- xcb_depth_iterator_t i;
- xcb_visualtype_iterator_t j;
- for (i = xcb_screen_allowed_depths_iterator(screen);
- i.rem; xcb_depth_next(&i))
- for (j = xcb_depth_visuals_iterator(i.data);
- j.rem; xcb_visualtype_next(&j))
- if (j.data->visual_id == id)
- return i.data->depth;
- return 0;
-}
-
-xcb_screen_t *
-xcb_aux_get_screen (xcb_connection_t *c,
- int screen)
-{
- xcb_screen_iterator_t i = xcb_setup_roots_iterator(xcb_get_setup(c));
- for (; i.rem; --screen, xcb_screen_next(&i))
- if (screen == 0)
- return i.data;
- return 0;
-}
-
-xcb_visualtype_t *
-xcb_aux_get_visualtype (xcb_connection_t *c,
- int scr,
- xcb_visualid_t vid)
-{
- xcb_screen_t *screen;
- xcb_depth_t *depth;
- xcb_visualtype_iterator_t iter;
- int cur;
-
- screen = xcb_aux_get_screen (c, scr);
- if (!screen) return NULL;
-
- depth = xcb_screen_allowed_depths_iterator(screen).data;
- if (!depth) return NULL;
-
- iter = xcb_depth_visuals_iterator(depth);
- for (cur = 0 ; cur < iter.rem ; xcb_visualtype_next(&iter), ++cur)
- if (vid == iter.data->visual_id)
- return iter.data;
-
- return NULL;
-}
-
-xcb_visualtype_t *
-xcb_aux_find_visual_by_id (xcb_screen_t *screen,
- xcb_visualid_t id)
-{
- xcb_depth_iterator_t i;
- xcb_visualtype_iterator_t j;
- for (i = xcb_screen_allowed_depths_iterator(screen);
- i.rem; xcb_depth_next(&i))
- for (j = xcb_depth_visuals_iterator(i.data);
- j.rem; xcb_visualtype_next(&j))
- if (j.data->visual_id == id)
- return j.data;
- return 0;
-}
-
-xcb_visualtype_t *
-xcb_aux_find_visual_by_attrs (xcb_screen_t *screen,
- int8_t class,
- int8_t depth)
-{
- xcb_depth_iterator_t i;
- xcb_visualtype_iterator_t j;
- for (i = xcb_screen_allowed_depths_iterator(screen);
- i.rem; xcb_depth_next(&i)) {
- if (depth != -1 && i.data->depth != depth)
- continue;
- for (j = xcb_depth_visuals_iterator(i.data);
- j.rem; xcb_visualtype_next(&j))
- if (class == -1 || j.data->_class == class)
- return j.data;
- }
- return 0;
-}
-
-void
-xcb_aux_sync (xcb_connection_t *c)
-{
- free(xcb_get_input_focus_reply(c, xcb_get_input_focus(c), NULL));
-}
-
-/* structs instead of value lists */
-/* TODO: generate the struct types and functions from protocol masks and descriptions */
-
-/* This generic implementation of pack_list depends on:
- a) structs packed to uint32_t size
- b) structs consist of just uint32_t/int32_t fields in the same order as bitmask
-*/
-
-static void
-pack_list( uint32_t mask, const uint32_t *src, uint32_t *dest )
-{
- for ( ; mask; mask >>= 1, src++)
- if (mask & 1)
- *dest++ = *src;
-}
-
-xcb_void_cookie_t
-xcb_aux_create_window (xcb_connection_t *c,
- uint8_t depth,
- xcb_window_t wid,
- xcb_window_t parent,
- int16_t x,
- int16_t y,
- uint16_t width,
- uint16_t height,
- uint16_t border_width,
- uint16_t _class,
- xcb_visualid_t visual,
- uint32_t mask,
- const xcb_params_cw_t *params)
-{
- uint32_t value_list[16];
- pack_list(mask, (const uint32_t *)params, value_list);
- return xcb_create_window(c, depth, wid, parent,
- x, y, width, height, border_width,
- _class, visual, mask, value_list);
-}
-
-xcb_void_cookie_t
-xcb_aux_create_window_checked (xcb_connection_t *c,
- uint8_t depth,
- xcb_window_t wid,
- xcb_window_t parent,
- int16_t x,
- int16_t y,
- uint16_t width,
- uint16_t height,
- uint16_t border_width,
- uint16_t _class,
- xcb_visualid_t visual,
- uint32_t mask,
- const xcb_params_cw_t *params)
-{
- uint32_t value_list[16];
- pack_list(mask, (const uint32_t *)params, value_list);
- return xcb_create_window_checked(c, depth, wid, parent,
- x, y, width, height, border_width,
- _class, visual, mask, value_list);
-}
-
-xcb_void_cookie_t
-xcb_aux_change_window_attributes_checked (xcb_connection_t *c,
- xcb_window_t window,
- uint32_t mask,
- const xcb_params_cw_t *params)
-{
- uint32_t value_list[16];
- pack_list(mask, (const uint32_t *)params, value_list);
- return xcb_change_window_attributes_checked( c, window, mask, value_list );
-}
-
-xcb_void_cookie_t
-xcb_aux_change_window_attributes (xcb_connection_t *c,
- xcb_window_t window,
- uint32_t mask,
- const xcb_params_cw_t *params)
-{
- uint32_t value_list[16];
- pack_list(mask, (const uint32_t *)params, value_list);
- return xcb_change_window_attributes( c, window, mask, value_list );
-}
-
-xcb_void_cookie_t
-xcb_aux_configure_window (xcb_connection_t *c,
- xcb_window_t window,
- uint16_t mask,
- const xcb_params_configure_window_t *params)
-{
- uint32_t value_list[8];
- pack_list(mask, (const uint32_t *)params, value_list);
- return xcb_configure_window( c, window, mask, value_list );
-}
-
-xcb_void_cookie_t
-xcb_aux_create_gc (xcb_connection_t *c,
- xcb_gcontext_t gid,
- xcb_drawable_t drawable,
- uint32_t mask,
- const xcb_params_gc_t *params)
-{
- uint32_t value_list[32];
- pack_list(mask, (const uint32_t *)params, value_list);
- return xcb_create_gc( c, gid, drawable, mask, value_list );
-}
-
-xcb_void_cookie_t
-xcb_aux_create_gc_checked (xcb_connection_t *c,
- xcb_gcontext_t gid,
- xcb_drawable_t drawable,
- uint32_t mask,
- const xcb_params_gc_t *params)
-{
- uint32_t value_list[32];
- pack_list(mask, (const uint32_t *)params, value_list);
- return xcb_create_gc_checked( c, gid, drawable, mask, value_list);
-}
-
-xcb_void_cookie_t
-xcb_aux_change_gc (xcb_connection_t *c,
- xcb_gcontext_t gc,
- uint32_t mask,
- const xcb_params_gc_t *params)
-{
- uint32_t value_list[32];
- pack_list(mask, (const uint32_t *)params, value_list);
- return xcb_change_gc( c, gc, mask, value_list );
-}
-
-xcb_void_cookie_t
-xcb_aux_change_gc_checked (xcb_connection_t *c,
- xcb_gcontext_t gc,
- uint32_t mask,
- const xcb_params_gc_t *params)
-{
- uint32_t value_list[32];
- pack_list(mask, (const uint32_t *)params, value_list);
- return xcb_change_gc_checked( c, gc, mask, value_list );
-}
-
-xcb_void_cookie_t
-xcb_aux_change_keyboard_control (xcb_connection_t *c,
- uint32_t mask,
- const xcb_params_keyboard_t *params)
-{
- uint32_t value_list[16];
- pack_list(mask, (const uint32_t *)params, value_list);
- return xcb_change_keyboard_control( c, mask, value_list );
-}
-
-/* Color related functions */
-
-/* Return true if the given color name can be translated locally,
- in which case load the components. Otherwise, a lookup_color request
- will be needed, so return false. */
-int
-xcb_aux_parse_color(char *color_name,
- uint16_t *red, uint16_t *green, uint16_t *blue)
-{
- int n, r, g, b, i;
- if (!color_name || *color_name != '#')
- return 0;
- /*
- * Excitingly weird RGB parsing code from Xlib.
- */
- n = strlen (color_name);
- color_name++;
- n--;
- if (n != 3 && n != 6 && n != 9 && n != 12)
- return 0;
- n /= 3;
- g = b = 0;
- do {
- r = g;
- g = b;
- b = 0;
- for (i = n; --i >= 0; ) {
- char c = *color_name++;
- b <<= 4;
- if (c >= '0' && c <= '9')
- b |= c - '0';
- else if (c >= 'A' && c <= 'F')
- b |= c - ('A' - 10);
- else if (c >= 'a' && c <= 'f')
- b |= c - ('a' - 10);
- else return 0;
- }
- } while (*color_name != '\0');
- n <<= 2;
- n = 16 - n;
- *red = r << n;
- *green = g << n;
- *blue = b << n;
- return 1;
-}
-
-/* Drawing related functions */
-
-/* Adapted from Xlib */
-xcb_void_cookie_t
-xcb_aux_set_line_attributes_checked (xcb_connection_t *dpy,
- xcb_gcontext_t gc,
- uint16_t linewidth,
- int32_t linestyle,
- int32_t capstyle,
- int32_t joinstyle)
-{
- uint32_t mask = 0;
- xcb_params_gc_t gv;
-
- XCB_AUX_ADD_PARAM(&mask, &gv, line_width, linewidth);
- XCB_AUX_ADD_PARAM(&mask, &gv, line_style, linestyle);
- XCB_AUX_ADD_PARAM(&mask, &gv, cap_style, capstyle);
- XCB_AUX_ADD_PARAM(&mask, &gv, join_style, joinstyle);
- return xcb_aux_change_gc_checked(dpy, gc, mask, &gv);
-}
-
-/* Adapted from Xlib */
-/* XXX It would be wiser for apps just to call
- clear_area() directly. */
-xcb_void_cookie_t
-xcb_aux_clear_window(xcb_connection_t * dpy,
- xcb_window_t w)
-{
- return xcb_clear_area(dpy, 0, w, 0, 0, 0, 0);
-}
diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java b/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java
index 2df2ed9a1d..0db9441749 100644
--- a/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java
+++ b/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java
@@ -121,6 +121,10 @@ public class QtActivityDelegate
private static final String EXTRACT_STYLE_KEY = "extract.android.style";
private static final String EXTRACT_STYLE_MINIMAL_KEY = "extract.android.style.option";
+ public static final int SYSTEM_UI_VISIBILITY_NORMAL = 0;
+ public static final int SYSTEM_UI_VISIBILITY_FULLSCREEN = 1;
+ public static final int SYSTEM_UI_VISIBILITY_TRANSLUCENT = 2;
+
private static String m_environmentVariables = null;
private static String m_applicationParameters = null;
@@ -131,7 +135,7 @@ public class QtActivityDelegate
private long m_metaState;
private int m_lastChar = 0;
private int m_softInputMode = 0;
- private boolean m_fullScreen = false;
+ private int m_systemUiVisibility = SYSTEM_UI_VISIBILITY_NORMAL;
private boolean m_started = false;
private HashMap<Integer, QtSurface> m_surfaces = null;
private HashMap<Integer, View> m_nativeViews = null;
@@ -153,38 +157,51 @@ public class QtActivityDelegate
private CursorHandle m_rightSelectionHandle;
private EditPopupMenu m_editPopupMenu;
- public void setFullScreen(boolean enterFullScreen)
+
+ public void setSystemUiVisibility(int systemUiVisibility)
{
- if (m_fullScreen == enterFullScreen)
+ if (m_systemUiVisibility == systemUiVisibility)
return;
- if (m_fullScreen = enterFullScreen) {
+ m_systemUiVisibility = systemUiVisibility;
+
+ int systemUiVisibilityFlags = 0;
+ switch (m_systemUiVisibility) {
+ case SYSTEM_UI_VISIBILITY_NORMAL:
+ m_activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
+ m_activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
+ systemUiVisibilityFlags = View.SYSTEM_UI_FLAG_VISIBLE;
+ break;
+ case SYSTEM_UI_VISIBILITY_FULLSCREEN:
m_activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
m_activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
- try {
- int flags = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
- flags |= View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
- flags |= View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION;
- flags |= View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
- flags |= View.SYSTEM_UI_FLAG_FULLSCREEN;
- flags |= View.class.getDeclaredField("SYSTEM_UI_FLAG_IMMERSIVE_STICKY").getInt(null);
- m_activity.getWindow().getDecorView().setSystemUiVisibility(flags | View.INVISIBLE);
- } catch (Exception e) {
- e.printStackTrace();
- }
- } else {
- m_activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
+ systemUiVisibilityFlags = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
+ | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
+ | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
+ | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
+ | View.SYSTEM_UI_FLAG_FULLSCREEN
+ | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
+ | View.INVISIBLE;
+ break;
+ case SYSTEM_UI_VISIBILITY_TRANSLUCENT:
+ m_activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN
+ | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION
+ | WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
m_activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
- m_activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
- }
+ systemUiVisibilityFlags = View.SYSTEM_UI_FLAG_VISIBLE;
+ break;
+ };
+
+ m_activity.getWindow().getDecorView().setSystemUiVisibility(systemUiVisibilityFlags);
+
m_layout.requestLayout();
}
public void updateFullScreen()
{
- if (m_fullScreen) {
- m_fullScreen = false;
- setFullScreen(true);
+ if (m_systemUiVisibility == SYSTEM_UI_VISIBILITY_FULLSCREEN) {
+ m_systemUiVisibility = SYSTEM_UI_VISIBILITY_NORMAL;
+ setSystemUiVisibility(SYSTEM_UI_VISIBILITY_FULLSCREEN);
}
}
@@ -943,7 +960,7 @@ public class QtActivityDelegate
} catch (Exception e) {
e.printStackTrace();
}
- outState.putBoolean("FullScreen", m_fullScreen);
+ outState.putInt("SystemUiVisibility", m_systemUiVisibility);
outState.putBoolean("Started", m_started);
// It should never
}
diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtLayout.java b/src/android/jar/src/org/qtproject/qt5/android/QtLayout.java
index f22b8176c8..63993f81b5 100644
--- a/src/android/jar/src/org/qtproject/qt5/android/QtLayout.java
+++ b/src/android/jar/src/org/qtproject/qt5/android/QtLayout.java
@@ -46,6 +46,7 @@ import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.view.View;
import android.view.ViewGroup;
+import android.view.WindowInsets;
public class QtLayout extends ViewGroup
{
@@ -69,10 +70,32 @@ public class QtLayout extends ViewGroup
@Override
protected void onSizeChanged (int w, int h, int oldw, int oldh)
{
- DisplayMetrics metrics = new DisplayMetrics();
- ((Activity) getContext()).getWindowManager().getDefaultDisplay().getMetrics(metrics);
- QtNative.setApplicationDisplayMetrics(metrics.widthPixels, metrics.heightPixels, w, h,
- metrics.xdpi, metrics.ydpi, metrics.scaledDensity, metrics.density);
+ WindowInsets insets = getRootWindowInsets();
+
+ DisplayMetrics realMetrics = new DisplayMetrics();
+ ((Activity) getContext()).getWindowManager().getDefaultDisplay().getRealMetrics(realMetrics);
+
+ boolean isFullScreenView = h == realMetrics.heightPixels;
+
+ int insetLeft = isFullScreenView ? insets.getSystemWindowInsetLeft() : 0;
+ int insetTop = isFullScreenView ? insets.getSystemWindowInsetTop() : 0;
+ int insetRight = isFullScreenView ? insets.getSystemWindowInsetRight() : 0;
+ int insetBottom = isFullScreenView ? insets.getSystemWindowInsetBottom() : 0;
+
+ int usableAreaWidth = w - insetLeft - insetRight;
+ int usableAreaHeight = h - insetTop - insetBottom;
+
+ QtNative.setApplicationDisplayMetrics(realMetrics.widthPixels,
+ realMetrics.heightPixels,
+ insetLeft,
+ insetTop,
+ usableAreaWidth,
+ usableAreaHeight,
+ realMetrics.xdpi,
+ realMetrics.ydpi,
+ realMetrics.scaledDensity,
+ realMetrics.density);
+
if (m_startApplicationRunnable != null) {
m_startApplicationRunnable.run();
m_startApplicationRunnable = null;
diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtNative.java b/src/android/jar/src/org/qtproject/qt5/android/QtNative.java
index 7db16002ff..dee5628144 100644
--- a/src/android/jar/src/org/qtproject/qt5/android/QtNative.java
+++ b/src/android/jar/src/org/qtproject/qt5/android/QtNative.java
@@ -91,8 +91,10 @@ public class QtNative
private static boolean m_started = false;
private static int m_displayMetricsScreenWidthPixels = 0;
private static int m_displayMetricsScreenHeightPixels = 0;
- private static int m_displayMetricsDesktopWidthPixels = 0;
- private static int m_displayMetricsDesktopHeightPixels = 0;
+ private static int m_displayMetricsAvailableLeftPixels = 0;
+ private static int m_displayMetricsAvailableTopPixels = 0;
+ private static int m_displayMetricsAvailableWidthPixels = 0;
+ private static int m_displayMetricsAvailableHeightPixels = 0;
private static double m_displayMetricsXDpi = .0;
private static double m_displayMetricsYDpi = .0;
private static double m_displayMetricsScaledDensity = 1.0;
@@ -376,8 +378,10 @@ public class QtNative
res[0] = startQtAndroidPlugin(qtParams, environment);
setDisplayMetrics(m_displayMetricsScreenWidthPixels,
m_displayMetricsScreenHeightPixels,
- m_displayMetricsDesktopWidthPixels,
- m_displayMetricsDesktopHeightPixels,
+ m_displayMetricsAvailableLeftPixels,
+ m_displayMetricsAvailableTopPixels,
+ m_displayMetricsAvailableWidthPixels,
+ m_displayMetricsAvailableHeightPixels,
m_displayMetricsXDpi,
m_displayMetricsYDpi,
m_displayMetricsScaledDensity,
@@ -398,8 +402,10 @@ public class QtNative
public static void setApplicationDisplayMetrics(int screenWidthPixels,
int screenHeightPixels,
- int desktopWidthPixels,
- int desktopHeightPixels,
+ int availableLeftPixels,
+ int availableTopPixels,
+ int availableWidthPixels,
+ int availableHeightPixels,
double XDpi,
double YDpi,
double scaledDensity,
@@ -415,8 +421,10 @@ public class QtNative
if (m_started) {
setDisplayMetrics(screenWidthPixels,
screenHeightPixels,
- desktopWidthPixels,
- desktopHeightPixels,
+ availableLeftPixels,
+ availableTopPixels,
+ availableWidthPixels,
+ availableHeightPixels,
XDpi,
YDpi,
scaledDensity,
@@ -424,8 +432,10 @@ public class QtNative
} else {
m_displayMetricsScreenWidthPixels = screenWidthPixels;
m_displayMetricsScreenHeightPixels = screenHeightPixels;
- m_displayMetricsDesktopWidthPixels = desktopWidthPixels;
- m_displayMetricsDesktopHeightPixels = desktopHeightPixels;
+ m_displayMetricsAvailableLeftPixels = availableLeftPixels;
+ m_displayMetricsAvailableTopPixels = availableTopPixels;
+ m_displayMetricsAvailableWidthPixels = availableWidthPixels;
+ m_displayMetricsAvailableHeightPixels = availableHeightPixels;
m_displayMetricsXDpi = XDpi;
m_displayMetricsYDpi = YDpi;
m_displayMetricsScaledDensity = scaledDensity;
@@ -686,13 +696,13 @@ public class QtNative
});
}
- private static void setFullScreen(final boolean fullScreen)
+ private static void setSystemUiVisibility(final int systemUiVisibility)
{
runAction(new Runnable() {
@Override
public void run() {
if (m_activityDelegate != null) {
- m_activityDelegate.setFullScreen(fullScreen);
+ m_activityDelegate.setSystemUiVisibility(systemUiVisibility);
}
updateWindow();
}
@@ -1035,8 +1045,10 @@ public class QtNative
// screen methods
public static native void setDisplayMetrics(int screenWidthPixels,
int screenHeightPixels,
- int desktopWidthPixels,
- int desktopHeightPixels,
+ int availableLeftPixels,
+ int availableTopPixels,
+ int availableWidthPixels,
+ int availableHeightPixels,
double XDpi,
double YDpi,
double scaledDensity,
diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtServiceDelegate.java b/src/android/jar/src/org/qtproject/qt5/android/QtServiceDelegate.java
index 33bcb364de..4cceab50c7 100644
--- a/src/android/jar/src/org/qtproject/qt5/android/QtServiceDelegate.java
+++ b/src/android/jar/src/org/qtproject/qt5/android/QtServiceDelegate.java
@@ -115,7 +115,7 @@ public class QtServiceDelegate
QtNative.setService(m_service, this);
QtNative.setClassLoader(classLoader);
- QtNative.setApplicationDisplayMetrics(10, 10, 10, 10, 120, 120, 1.0, 1.0);
+ QtNative.setApplicationDisplayMetrics(10, 10, 0, 0, 10, 10, 120, 120, 1.0, 1.0);
if (loaderParams.containsKey(STATIC_INIT_CLASSES_KEY)) {
for (String className: loaderParams.getStringArray(STATIC_INIT_CLASSES_KEY)) {
diff --git a/src/corelib/Qt5CoreMacros.cmake b/src/corelib/Qt5CoreMacros.cmake
index 84c75401b1..e298cf7de7 100644
--- a/src/corelib/Qt5CoreMacros.cmake
+++ b/src/corelib/Qt5CoreMacros.cmake
@@ -39,7 +39,7 @@
include(CMakeParseArguments)
# macro used to create the names of output files preserving relative dirs
-macro(QT5_MAKE_OUTPUT_FILE infile prefix ext outfile )
+macro(qt5_make_output_file infile prefix ext outfile )
string(LENGTH ${CMAKE_CURRENT_BINARY_DIR} _binlength)
string(LENGTH ${infile} _infileLength)
set(_checkinfile ${CMAKE_CURRENT_SOURCE_DIR})
@@ -65,7 +65,7 @@ macro(QT5_MAKE_OUTPUT_FILE infile prefix ext outfile )
endmacro()
-macro(QT5_GET_MOC_FLAGS _moc_flags)
+macro(qt5_get_moc_flags _moc_flags)
set(${_moc_flags})
get_directory_property(_inc_DIRS INCLUDE_DIRECTORIES)
@@ -97,7 +97,7 @@ endmacro()
# helper macro to set up a moc rule
-function(QT5_CREATE_MOC_COMMAND infile outfile moc_flags moc_options moc_target moc_depends)
+function(qt5_create_moc_command infile outfile moc_flags moc_options moc_target moc_depends)
# Pass the parameters in a file. Set the working directory to
# be that containing the parameters file and reference it by
# just the file name. This is necessary because the moc tool on
@@ -143,7 +143,7 @@ function(QT5_CREATE_MOC_COMMAND infile outfile moc_flags moc_options moc_target
endfunction()
-function(QT5_GENERATE_MOC infile outfile )
+function(qt5_generate_moc infile outfile )
# get include dirs and flags
qt5_get_moc_flags(moc_flags)
get_filename_component(abs_infile ${infile} ABSOLUTE)
@@ -160,7 +160,7 @@ endfunction()
# qt5_wrap_cpp(outfiles inputfile ... )
-function(QT5_WRAP_CPP outfiles )
+function(qt5_wrap_cpp outfiles )
# get include dirs
qt5_get_moc_flags(moc_flags)
@@ -189,7 +189,7 @@ endfunction()
# _qt5_parse_qrc_file(infile _out_depends _rc_depends)
# internal
-function(_QT5_PARSE_QRC_FILE infile _out_depends _rc_depends)
+function(_qt5_parse_qrc_file infile _out_depends _rc_depends)
get_filename_component(rc_path ${infile} PATH)
if(EXISTS "${infile}")
@@ -222,7 +222,7 @@ endfunction()
# qt5_add_binary_resources(target inputfiles ... )
-function(QT5_ADD_BINARY_RESOURCES target )
+function(qt5_add_binary_resources target )
set(options)
set(oneValueArgs DESTINATION)
@@ -241,7 +241,7 @@ function(QT5_ADD_BINARY_RESOURCES target )
foreach(it ${rcc_files})
get_filename_component(infile ${it} ABSOLUTE)
- _QT5_PARSE_QRC_FILE(${infile} _out_depends _rc_depends)
+ _qt5_parse_qrc_file(${infile} _out_depends _rc_depends)
set_source_files_properties(${infile} PROPERTIES SKIP_AUTORCC ON)
set(infiles ${infiles} ${infile})
set(out_depends ${out_depends} ${_out_depends})
@@ -258,7 +258,7 @@ endfunction()
# qt5_add_resources(outfiles inputfile ... )
-function(QT5_ADD_RESOURCES outfiles )
+function(qt5_add_resources outfiles )
set(options)
set(oneValueArgs)
@@ -278,7 +278,7 @@ function(QT5_ADD_RESOURCES outfiles )
get_filename_component(infile ${it} ABSOLUTE)
set(outfile ${CMAKE_CURRENT_BINARY_DIR}/qrc_${outfilename}.cpp)
- _QT5_PARSE_QRC_FILE(${infile} _out_depends _rc_depends)
+ _qt5_parse_qrc_file(${infile} _out_depends _rc_depends)
set_source_files_properties(${infile} PROPERTIES SKIP_AUTORCC ON)
add_custom_command(OUTPUT ${outfile}
@@ -295,7 +295,7 @@ endfunction()
# qt5_add_big_resources(outfiles inputfile ... )
-function(QT5_ADD_BIG_RESOURCES outfiles )
+function(qt5_add_big_resources outfiles )
if (CMAKE_VERSION VERSION_LESS 3.9)
message(FATAL_ERROR, "qt5_add_big_resources requires CMake 3.9 or newer")
endif()
@@ -319,7 +319,7 @@ function(QT5_ADD_BIG_RESOURCES outfiles )
set(tmpoutfile ${CMAKE_CURRENT_BINARY_DIR}/qrc_${outfilename}tmp.cpp)
set(outfile ${CMAKE_CURRENT_BINARY_DIR}/qrc_${outfilename}.o)
- _QT5_PARSE_QRC_FILE(${infile} _out_depends _rc_depends)
+ _qt5_parse_qrc_file(${infile} _out_depends _rc_depends)
set_source_files_properties(${infile} PROPERTIES SKIP_AUTORCC ON)
add_custom_command(OUTPUT ${tmpoutfile}
COMMAND ${Qt5Core_RCC_EXECUTABLE} ${rcc_options} --name ${outfilename} --pass 1 --output ${tmpoutfile} ${infile}
@@ -343,58 +343,53 @@ endfunction()
set(_Qt5_COMPONENT_PATH "${CMAKE_CURRENT_LIST_DIR}/..")
-if (NOT CMAKE_VERSION VERSION_LESS 2.8.9)
- macro(qt5_use_modules _target _link_type)
- if(NOT CMAKE_MINIMUM_REQUIRED_VERSION VERSION_LESS 2.8.11)
- if(CMAKE_WARN_DEPRECATED)
- set(messageType WARNING)
- endif()
- if(CMAKE_ERROR_DEPRECATED)
- set(messageType FATAL_ERROR)
- endif()
- if(messageType)
- message(${messageType} "The qt5_use_modules macro is obsolete. Use target_link_libraries with IMPORTED targets instead.")
- endif()
- endif()
+macro(qt5_use_modules _target _link_type)
+ if(CMAKE_WARN_DEPRECATED)
+ set(messageType WARNING)
+ endif()
+ if(CMAKE_ERROR_DEPRECATED)
+ set(messageType FATAL_ERROR)
+ endif()
+ if(messageType)
+ message(${messageType} "The qt5_use_modules macro is obsolete. Use target_link_libraries with IMPORTED targets instead.")
+ endif()
- if (NOT TARGET ${_target})
- message(FATAL_ERROR "The first argument to qt5_use_modules must be an existing target.")
- endif()
- if ("${_link_type}" STREQUAL "LINK_PUBLIC" OR "${_link_type}" STREQUAL "LINK_PRIVATE" )
- set(_qt5_modules ${ARGN})
- set(_qt5_link_type ${_link_type})
- else()
- set(_qt5_modules ${_link_type} ${ARGN})
- endif()
+ if (NOT TARGET ${_target})
+ message(FATAL_ERROR "The first argument to qt5_use_modules must be an existing target.")
+ endif()
+ if ("${_link_type}" STREQUAL "LINK_PUBLIC" OR "${_link_type}" STREQUAL "LINK_PRIVATE" )
+ set(_qt5_modules ${ARGN})
+ set(_qt5_link_type ${_link_type})
+ else()
+ set(_qt5_modules ${_link_type} ${ARGN})
+ endif()
- if ("${_qt5_modules}" STREQUAL "")
- message(FATAL_ERROR "qt5_use_modules requires at least one Qt module to use.")
- endif()
+ if ("${_qt5_modules}" STREQUAL "")
+ message(FATAL_ERROR "qt5_use_modules requires at least one Qt module to use.")
+ endif()
- foreach(_module ${_qt5_modules})
+ foreach(_module ${_qt5_modules})
+ if (NOT Qt5${_module}_FOUND)
+ find_package(Qt5${_module} PATHS "${_Qt5_COMPONENT_PATH}" NO_DEFAULT_PATH)
if (NOT Qt5${_module}_FOUND)
- find_package(Qt5${_module} PATHS "${_Qt5_COMPONENT_PATH}" NO_DEFAULT_PATH)
- if (NOT Qt5${_module}_FOUND)
- message(FATAL_ERROR "Cannot use \"${_module}\" module which has not yet been found.")
- endif()
- endif()
- target_link_libraries(${_target} ${_qt5_link_type} ${Qt5${_module}_LIBRARIES})
- set_property(TARGET ${_target} APPEND PROPERTY INCLUDE_DIRECTORIES ${Qt5${_module}_INCLUDE_DIRS})
- set_property(TARGET ${_target} APPEND PROPERTY COMPILE_DEFINITIONS ${Qt5${_module}_COMPILE_DEFINITIONS})
- set_property(TARGET ${_target} APPEND PROPERTY COMPILE_DEFINITIONS_RELEASE QT_NO_DEBUG)
- set_property(TARGET ${_target} APPEND PROPERTY COMPILE_DEFINITIONS_RELWITHDEBINFO QT_NO_DEBUG)
- set_property(TARGET ${_target} APPEND PROPERTY COMPILE_DEFINITIONS_MINSIZEREL QT_NO_DEBUG)
- if (Qt5_POSITION_INDEPENDENT_CODE
- AND (CMAKE_VERSION VERSION_GREATER_EQUAL 2.8.12
- AND (NOT CMAKE_CXX_COMPILER_ID STREQUAL "GNU"
- OR CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.0)))
- set_property(TARGET ${_target} PROPERTY POSITION_INDEPENDENT_CODE ${Qt5_POSITION_INDEPENDENT_CODE})
+ message(FATAL_ERROR "Cannot use \"${_module}\" module which has not yet been found.")
endif()
- endforeach()
- endmacro()
-endif()
+ endif()
+ target_link_libraries(${_target} ${_qt5_link_type} ${Qt5${_module}_LIBRARIES})
+ set_property(TARGET ${_target} APPEND PROPERTY INCLUDE_DIRECTORIES ${Qt5${_module}_INCLUDE_DIRS})
+ set_property(TARGET ${_target} APPEND PROPERTY COMPILE_DEFINITIONS ${Qt5${_module}_COMPILE_DEFINITIONS})
+ set_property(TARGET ${_target} APPEND PROPERTY COMPILE_DEFINITIONS_RELEASE QT_NO_DEBUG)
+ set_property(TARGET ${_target} APPEND PROPERTY COMPILE_DEFINITIONS_RELWITHDEBINFO QT_NO_DEBUG)
+ set_property(TARGET ${_target} APPEND PROPERTY COMPILE_DEFINITIONS_MINSIZEREL QT_NO_DEBUG)
+ if (Qt5_POSITION_INDEPENDENT_CODE
+ AND (NOT CMAKE_CXX_COMPILER_ID STREQUAL "GNU"
+ OR CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.0))
+ set_property(TARGET ${_target} PROPERTY POSITION_INDEPENDENT_CODE ${Qt5_POSITION_INDEPENDENT_CODE})
+ endif()
+ endforeach()
+endmacro()
-function(QT5_IMPORT_PLUGINS TARGET_NAME)
+function(qt5_import_plugins TARGET_NAME)
set(_doing "")
foreach(_arg ${ARGN})
if(_arg STREQUAL "INCLUDE")
diff --git a/src/corelib/animation/qabstractanimation.cpp b/src/corelib/animation/qabstractanimation.cpp
index 46b01449d4..b7136dc055 100644
--- a/src/corelib/animation/qabstractanimation.cpp
+++ b/src/corelib/animation/qabstractanimation.cpp
@@ -220,7 +220,7 @@ QUnifiedTimer::QUnifiedTimer() :
QObject(), defaultDriver(this), lastTick(0), timingInterval(DEFAULT_TIMER_INTERVAL),
currentAnimationIdx(0), insideTick(false), insideRestart(false), consistentTiming(false), slowMode(false),
startTimersPending(false), stopTimerPending(false),
- slowdownFactor(5.0f), profilerCallback(0),
+ slowdownFactor(5.0f), profilerCallback(nullptr),
driverStartTime(0), temporalDrift(0)
{
time.invalidate();
@@ -922,7 +922,7 @@ qint64 QAnimationDriver::elapsed() const
The default animation driver just spins the timer...
*/
QDefaultAnimationDriver::QDefaultAnimationDriver(QUnifiedTimer *timer)
- : QAnimationDriver(0), m_unified_timer(timer)
+ : QAnimationDriver(nullptr), m_unified_timer(timer)
{
connect(this, SIGNAL(started()), this, SLOT(startTimer()));
connect(this, SIGNAL(stopped()), this, SLOT(stopTimer()));
@@ -1035,7 +1035,7 @@ void QAbstractAnimationPrivate::setState(QAbstractAnimation::State newState)
\sa QVariantAnimation, QAnimationGroup
*/
QAbstractAnimation::QAbstractAnimation(QObject *parent)
- : QObject(*new QAbstractAnimationPrivate, 0)
+ : QObject(*new QAbstractAnimationPrivate, nullptr)
{
// Allow auto-add on reparent
setParent(parent);
@@ -1045,7 +1045,7 @@ QAbstractAnimation::QAbstractAnimation(QObject *parent)
\internal
*/
QAbstractAnimation::QAbstractAnimation(QAbstractAnimationPrivate &dd, QObject *parent)
- : QObject(dd, 0)
+ : QObject(dd, nullptr)
{
// Allow auto-add on reparent
setParent(parent);
diff --git a/src/corelib/animation/qanimationgroup.cpp b/src/corelib/animation/qanimationgroup.cpp
index ed40817222..729f55d68f 100644
--- a/src/corelib/animation/qanimationgroup.cpp
+++ b/src/corelib/animation/qanimationgroup.cpp
@@ -133,7 +133,7 @@ QAbstractAnimation *QAnimationGroup::animationAt(int index) const
if (index < 0 || index >= d->animations.size()) {
qWarning("QAnimationGroup::animationAt: index is out of bounds");
- return 0;
+ return nullptr;
}
return d->animations.at(index);
@@ -195,8 +195,11 @@ void QAnimationGroup::insertAnimation(int index, QAbstractAnimation *animation)
return;
}
- if (QAnimationGroup *oldGroup = animation->group())
+ if (QAnimationGroup *oldGroup = animation->group()) {
oldGroup->removeAnimation(animation);
+ // ensure we don't insert out of bounds if oldGroup == this
+ index = qMin(index, d->animations.size());
+ }
d->animations.insert(index, animation);
QAbstractAnimationPrivate::get(animation)->group = this;
@@ -240,14 +243,14 @@ QAbstractAnimation *QAnimationGroup::takeAnimation(int index)
Q_D(QAnimationGroup);
if (index < 0 || index >= d->animations.size()) {
qWarning("QAnimationGroup::takeAnimation: no animation at index %d", index);
- return 0;
+ return nullptr;
}
QAbstractAnimation *animation = d->animations.at(index);
- QAbstractAnimationPrivate::get(animation)->group = 0;
+ QAbstractAnimationPrivate::get(animation)->group = nullptr;
// ### removing from list before doing setParent to avoid inifinite recursion
// in ChildRemoved event
d->animations.removeAt(index);
- animation->setParent(0);
+ animation->setParent(nullptr);
d->animationRemoved(index, animation);
return animation;
}
diff --git a/src/corelib/animation/qpropertyanimation.cpp b/src/corelib/animation/qpropertyanimation.cpp
index 2a3572d441..c71a77e073 100644
--- a/src/corelib/animation/qpropertyanimation.cpp
+++ b/src/corelib/animation/qpropertyanimation.cpp
@@ -259,7 +259,7 @@ void QPropertyAnimation::updateState(QAbstractAnimation::State newState,
QVariantAnimation::updateState(newState, oldState);
- QPropertyAnimation *animToStop = 0;
+ QPropertyAnimation *animToStop = nullptr;
{
static QBasicMutex mutex;
auto locker = qt_unique_lock(mutex);
diff --git a/src/corelib/animation/qsequentialanimationgroup.cpp b/src/corelib/animation/qsequentialanimationgroup.cpp
index 66e346a2fe..98ac04a14f 100644
--- a/src/corelib/animation/qsequentialanimationgroup.cpp
+++ b/src/corelib/animation/qsequentialanimationgroup.cpp
@@ -282,7 +282,7 @@ QPauseAnimation *QSequentialAnimationGroup::insertPause(int index, int msecs)
if (index < 0 || index > d->animations.size()) {
qWarning("QSequentialAnimationGroup::insertPause: index is out of bounds");
- return 0;
+ return nullptr;
}
QPauseAnimation *pause = new QPauseAnimation(msecs);
@@ -430,7 +430,7 @@ void QSequentialAnimationGroupPrivate::setCurrentAnimation(int index, bool inter
if (index == -1) {
Q_ASSERT(animations.isEmpty());
currentAnimationIndex = -1;
- currentAnimation = 0;
+ currentAnimation = nullptr;
return;
}
@@ -503,7 +503,7 @@ void QSequentialAnimationGroupPrivate::_q_uncontrolledAnimationFinished()
*/
void QSequentialAnimationGroupPrivate::animationInsertedAt(int index)
{
- if (currentAnimation == 0)
+ if (currentAnimation == nullptr)
setCurrentAnimation(0); // initialize the current animation
if (currentAnimationIndex == index
diff --git a/src/corelib/animation/qvariantanimation.cpp b/src/corelib/animation/qvariantanimation.cpp
index 216c015732..98b02f0202 100644
--- a/src/corelib/animation/qvariantanimation.cpp
+++ b/src/corelib/animation/qvariantanimation.cpp
@@ -209,7 +209,7 @@ void QVariantAnimationPrivate::updateInterpolator()
if (type == currentInterval.end.second.userType())
interpolator = getInterpolator(type);
else
- interpolator = 0;
+ interpolator = nullptr;
//we make sure that the interpolator is always set to something
if (!interpolator)
@@ -445,7 +445,7 @@ QVariantAnimation::Interpolator QVariantAnimationPrivate::getInterpolator(int in
{
QInterpolatorVector *interpolators = registeredInterpolators();
const auto locker = qt_scoped_lock(registeredInterpolatorsMutex);
- QVariantAnimation::Interpolator ret = 0;
+ QVariantAnimation::Interpolator ret = nullptr;
if (interpolationType < interpolators->count()) {
ret = interpolators->at(interpolationType);
if (ret) return ret;
@@ -479,7 +479,7 @@ QVariantAnimation::Interpolator QVariantAnimationPrivate::getInterpolator(int in
case QMetaType::QRectF:
return castToInterpolator(_q_interpolateVariant<QRectF>);
default:
- return 0; //this type is not handled
+ return nullptr; //this type is not handled
}
}
diff --git a/src/corelib/codecs/qicucodec.cpp b/src/corelib/codecs/qicucodec.cpp
index 5a778c2638..f9092277b2 100644
--- a/src/corelib/codecs/qicucodec.cpp
+++ b/src/corelib/codecs/qicucodec.cpp
@@ -381,7 +381,7 @@ static QTextCodec *loadQtCodec(const char *name)
return QIsciiCodec::create(name);
#endif
- return 0;
+ return nullptr;
}
/// \threadsafe
@@ -438,7 +438,7 @@ QTextCodec *QIcuCodec::defaultCodecUnlocked()
{
QCoreGlobalData *globalData = QCoreGlobalData::instance();
if (!globalData)
- return 0;
+ return nullptr;
QTextCodec *c = globalData->codecForLocale.loadAcquire();
if (c)
return c;
@@ -523,13 +523,13 @@ QTextCodec *QIcuCodec::codecForNameUnlocked(const char *name)
return c;
if (qt_only)
- return 0;
+ return nullptr;
// check whether there is really a converter for the name available.
UConverter *conv = ucnv_open(standardName, &error);
if (!conv) {
qDebug("codecForName: ucnv_open failed %s %s", standardName, u_errorName(error));
- return 0;
+ return nullptr;
}
//qDebug() << "QIcuCodec: Standard name for " << name << "is" << standardName;
ucnv_close(conv);
@@ -552,7 +552,7 @@ QTextCodec *QIcuCodec::codecForMibUnlocked(int mib)
if (mib == 2107)
return codecForNameUnlocked("TSCII");
- return 0;
+ return nullptr;
}
@@ -567,7 +567,7 @@ QIcuCodec::~QIcuCodec()
UConverter *QIcuCodec::getConverter(QTextCodec::ConverterState *state) const
{
- UConverter *conv = 0;
+ UConverter *conv = nullptr;
if (state) {
if (!state->d) {
// first time
@@ -609,7 +609,7 @@ QString QIcuCodec::convertToUnicode(const char *chars, int length, QTextCodec::C
ucnv_toUnicode(conv,
&uc, ucEnd,
&chars, end,
- 0, false, &error);
+ nullptr, false, &error);
if (!U_SUCCESS(error) && error != U_BUFFER_OVERFLOW_ERROR) {
qDebug("convertToUnicode failed: %s", u_errorName(error));
break;
@@ -646,7 +646,7 @@ QByteArray QIcuCodec::convertFromUnicode(const QChar *unicode, int length, QText
ucnv_fromUnicode(conv,
&ch, chEnd,
&uc, end,
- 0, false, &error);
+ nullptr, false, &error);
if (!U_SUCCESS(error))
qDebug("convertFromUnicode failed: %s", u_errorName(error));
convertedChars = ch - string.data();
diff --git a/src/corelib/codecs/qisciicodec.cpp b/src/corelib/codecs/qisciicodec.cpp
index d9a86d77c7..9689818559 100644
--- a/src/corelib/codecs/qisciicodec.cpp
+++ b/src/corelib/codecs/qisciicodec.cpp
@@ -74,7 +74,7 @@ QTextCodec *QIsciiCodec::create(const char *name)
if (qTextCodecNameMatch(name, codecs[i].name))
return new QIsciiCodec(i);
}
- return 0;
+ return nullptr;
}
QIsciiCodec::~QIsciiCodec()
diff --git a/src/corelib/codecs/qsimplecodec.cpp b/src/corelib/codecs/qsimplecodec.cpp
index 16a9b8a7c3..4e82620003 100644
--- a/src/corelib/codecs/qsimplecodec.cpp
+++ b/src/corelib/codecs/qsimplecodec.cpp
@@ -51,7 +51,7 @@ static const struct {
quint16 values[128];
} unicodevalues[QSimpleTextCodec::numSimpleCodecs] = {
// from RFC 1489, ftp://ftp.isi.edu/in-notes/rfc1489.txt
- { "KOI8-R", { "csKOI8R", 0 }, 2084,
+ { "KOI8-R", { "csKOI8R", nullptr }, 2084,
{ 0x2500, 0x2502, 0x250C, 0x2510, 0x2514, 0x2518, 0x251C, 0x2524,
0x252C, 0x2534, 0x253C, 0x2580, 0x2584, 0x2588, 0x258C, 0x2590,
0x2591, 0x2592, 0x2593, 0x2320, 0x25A0, 0x2219/**/, 0x221A, 0x2248,
@@ -72,7 +72,7 @@ static const struct {
// it should be 0x2022 (BULLET).
// from RFC 2319, ftp://ftp.isi.edu/in-notes/rfc2319.txt
- { "KOI8-U", { "KOI8-RU", 0 }, 2088,
+ { "KOI8-U", { "KOI8-RU", nullptr }, 2088,
{ 0x2500, 0x2502, 0x250C, 0x2510, 0x2514, 0x2518, 0x251C, 0x2524,
0x252C, 0x2534, 0x253C, 0x2580, 0x2584, 0x2588, 0x258C, 0x2590,
0x2591, 0x2592, 0x2593, 0x2320, 0x25A0, 0x2219, 0x221A, 0x2248,
@@ -97,7 +97,7 @@ static const struct {
// $ for A in 8 9 A B C D E F ; do for B in 0 1 2 3 4 5 6 7 8 9 A B C D E F ; do echo 0x${A}${B} 0xFFFD ; done ; done > /tmp/digits ; for a in 8859-* ; do (awk '/^0x[89ABCDEF]/{ print $1, $2 }' < $a ; cat /tmp/digits) | sort | uniq -w4 | cut -c6- | paste '-d ' - - - - - - - - | sed -e 's/ /, /g' -e 's/$/,/' -e '$ s/,$/} },/' -e '1 s/^/{ /' > ~/tmp/$a ; done
// then I inserted the files manually.
- { "ISO-8859-2", {"latin2", "iso-ir-101", "csISOLatin2", 0 }, 5,
+ { "ISO-8859-2", {"latin2", "iso-ir-101", "csISOLatin2", nullptr }, 5,
{ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F,
0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
@@ -114,7 +114,7 @@ static const struct {
0x010D, 0x00E9, 0x0119, 0x00EB, 0x011B, 0x00ED, 0x00EE, 0x010F,
0x0111, 0x0144, 0x0148, 0x00F3, 0x00F4, 0x0151, 0x00F6, 0x00F7,
0x0159, 0x016F, 0x00FA, 0x0171, 0x00FC, 0x00FD, 0x0163, 0x02D9} },
- { "ISO-8859-3", { "latin3", "iso-ir-109", "csISOLatin3", 0 }, 6,
+ { "ISO-8859-3", { "latin3", "iso-ir-109", "csISOLatin3", nullptr }, 6,
{ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F,
0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
@@ -131,7 +131,7 @@ static const struct {
0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF,
0xFFFD, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x0121, 0x00F6, 0x00F7,
0x011D, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x016D, 0x015D, 0x02D9} },
- { "ISO-8859-4", { "latin4", "iso-ir-110", "csISOLatin4", 0 }, 7,
+ { "ISO-8859-4", { "latin4", "iso-ir-110", "csISOLatin4", nullptr }, 7,
{ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F,
0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
@@ -148,7 +148,7 @@ static const struct {
0x010D, 0x00E9, 0x0119, 0x00EB, 0x0117, 0x00ED, 0x00EE, 0x012B,
0x0111, 0x0146, 0x014D, 0x0137, 0x00F4, 0x00F5, 0x00F6, 0x00F7,
0x00F8, 0x0173, 0x00FA, 0x00FB, 0x00FC, 0x0169, 0x016B, 0x02D9} },
- { "ISO-8859-5", { "cyrillic", "iso-ir-144", "csISOLatinCyrillic", 0 }, 8,
+ { "ISO-8859-5", { "cyrillic", "iso-ir-144", "csISOLatinCyrillic", nullptr }, 8,
{ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F,
0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
@@ -165,7 +165,7 @@ static const struct {
0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F,
0x2116, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457,
0x0458, 0x0459, 0x045A, 0x045B, 0x045C, 0x00A7, 0x045E, 0x045F} },
- { "ISO-8859-6", { "ISO-8859-6-I", "ECMA-114", "ASMO-708", "arabic", "iso-ir-127", "csISOLatinArabic", 0 }, 82,
+ { "ISO-8859-6", { "ISO-8859-6-I", "ECMA-114", "ASMO-708", "arabic", "iso-ir-127", "csISOLatinArabic", nullptr }, 82,
{ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F,
0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
@@ -182,7 +182,7 @@ static const struct {
0x0648, 0x0649, 0x064A, 0x064B, 0x064C, 0x064D, 0x064E, 0x064F,
0x0650, 0x0651, 0x0652, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD} },
- { "ISO-8859-7", { "ECMA-118", "greek", "iso-ir-126", "csISOLatinGreek", 0 }, 10,
+ { "ISO-8859-7", { "ECMA-118", "greek", "iso-ir-126", "csISOLatinGreek", nullptr }, 10,
{ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F,
0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
@@ -199,7 +199,7 @@ static const struct {
0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF,
0x03C0, 0x03C1, 0x03C2, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7,
0x03C8, 0x03C9, 0x03CA, 0x03CB, 0x03CC, 0x03CD, 0x03CE, 0xFFFD} },
- { "ISO-8859-8", { "ISO 8859-8-I", "iso-ir-138", "hebrew", "csISOLatinHebrew", 0 }, 85,
+ { "ISO-8859-8", { "ISO 8859-8-I", "iso-ir-138", "hebrew", "csISOLatinHebrew", nullptr }, 85,
{ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F,
0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
@@ -216,7 +216,7 @@ static const struct {
0x05D8, 0x05D9, 0x05DA, 0x05DB, 0x05DC, 0x05DD, 0x05DE, 0x05DF,
0x05E0, 0x05E1, 0x05E2, 0x05E3, 0x05E4, 0x05E5, 0x05E6, 0x05E7,
0x05E8, 0x05E9, 0x05EA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD} },
- { "ISO-8859-9", { "iso-ir-148", "latin5", "csISOLatin5", 0 }, 12,
+ { "ISO-8859-9", { "iso-ir-148", "latin5", "csISOLatin5", nullptr }, 12,
{ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F,
0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
@@ -233,7 +233,7 @@ static const struct {
0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF,
0x011F, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7,
0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x0131, 0x015F, 0x00FF} },
- { "ISO-8859-10", { "iso-ir-157", "latin6", "ISO-8859-10:1992", "csISOLatin6", 0 }, 13,
+ { "ISO-8859-10", { "iso-ir-157", "latin6", "ISO-8859-10:1992", "csISOLatin6", nullptr }, 13,
{ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F,
0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
@@ -250,7 +250,7 @@ static const struct {
0x010D, 0x00E9, 0x0119, 0x00EB, 0x0117, 0x00ED, 0x00EE, 0x00EF,
0x00F0, 0x0146, 0x014D, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x0169,
0x00F8, 0x0173, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x0138} },
- { "ISO-8859-13", { 0 }, 109,
+ { "ISO-8859-13", { nullptr }, 109,
{ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F,
0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
@@ -267,7 +267,7 @@ static const struct {
0x010D, 0x00E9, 0x017A, 0x0117, 0x0123, 0x0137, 0x012B, 0x013C,
0x0161, 0x0144, 0x0146, 0x00F3, 0x014D, 0x00F5, 0x00F6, 0x00F7,
0x0173, 0x0142, 0x015B, 0x016B, 0x00FC, 0x017C, 0x017E, 0x2019} },
- { "ISO-8859-14", { "iso-ir-199", "latin8", "iso-celtic", 0 }, 110,
+ { "ISO-8859-14", { "iso-ir-199", "latin8", "iso-celtic", nullptr }, 110,
{ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F,
0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
@@ -284,7 +284,7 @@ static const struct {
0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF,
0x0175, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x1E6B,
0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x0177, 0x00FF} },
- { "ISO-8859-16", { "iso-ir-226", "latin10", 0 }, 112,
+ { "ISO-8859-16", { "iso-ir-226", "latin10", nullptr }, 112,
{ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F,
0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
@@ -305,7 +305,7 @@ static const struct {
// next bits generated again from tables on the Unicode 3.0 CD.
// $ for a in CP* ; do (awk '/^0x[89ABCDEF]/{ print $1, $2 }' < $a) | sort | sed -e 's/#UNDEF.*$/0xFFFD/' | cut -c6- | paste '-d ' - - - - - - - - | sed -e 's/ /, /g' -e 's/$/,/' -e '$ s/,$/} },/' -e '1 s/^/{ /' > ~/tmp/$a ; done
- { "IBM850", { "CP850", "csPC850Multilingual", 0 }, 2009,
+ { "IBM850", { "CP850", "csPC850Multilingual", nullptr }, 2009,
{ 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7,
0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5,
0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9,
@@ -322,7 +322,7 @@ static const struct {
0x00DE, 0x00DA, 0x00DB, 0x00D9, 0x00FD, 0x00DD, 0x00AF, 0x00B4,
0x00AD, 0x00B1, 0x2017, 0x00BE, 0x00B6, 0x00A7, 0x00F7, 0x00B8,
0x00B0, 0x00A8, 0x00B7, 0x00B9, 0x00B3, 0x00B2, 0x25A0, 0x00A0} },
- { "IBM874", { "CP874", 0 }, -874, //### what is the mib?
+ { "IBM874", { "CP874", nullptr }, -874, //### what is the mib?
{ 0x20AC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2026, 0xFFFD, 0xFFFD,
0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
0xFFFD, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
@@ -339,7 +339,7 @@ static const struct {
0x0E48, 0x0E49, 0x0E4A, 0x0E4B, 0x0E4C, 0x0E4D, 0x0E4E, 0x0E4F,
0x0E50, 0x0E51, 0x0E52, 0x0E53, 0x0E54, 0x0E55, 0x0E56, 0x0E57,
0x0E58, 0x0E59, 0x0E5A, 0x0E5B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD} },
- { "IBM866", { "CP866", "csIBM866", 0 }, 2086,
+ { "IBM866", { "CP866", "csIBM866", nullptr }, 2086,
{ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F,
0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
@@ -357,7 +357,7 @@ static const struct {
0x0401, 0x0451, 0x0404, 0x0454, 0x0407, 0x0457, 0x040E, 0x045E,
0x00B0, 0x2219, 0x00B7, 0x221A, 0x2116, 0x00A4, 0x25A0, 0x00A0} },
- { "windows-1250", { "CP1250", 0 }, 2250,
+ { "windows-1250", { "CP1250", nullptr }, 2250,
{ 0x20AC, 0xFFFD, 0x201A, 0xFFFD, 0x201E, 0x2026, 0x2020, 0x2021,
0xFFFD, 0x2030, 0x0160, 0x2039, 0x015A, 0x0164, 0x017D, 0x0179,
0xFFFD, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
@@ -374,7 +374,7 @@ static const struct {
0x010D, 0x00E9, 0x0119, 0x00EB, 0x011B, 0x00ED, 0x00EE, 0x010F,
0x0111, 0x0144, 0x0148, 0x00F3, 0x00F4, 0x0151, 0x00F6, 0x00F7,
0x0159, 0x016F, 0x00FA, 0x0171, 0x00FC, 0x00FD, 0x0163, 0x02D9} },
- { "windows-1251", { "CP1251", 0 }, 2251,
+ { "windows-1251", { "CP1251", nullptr }, 2251,
{ 0x0402, 0x0403, 0x201A, 0x0453, 0x201E, 0x2026, 0x2020, 0x2021,
0x20AC, 0x2030, 0x0409, 0x2039, 0x040A, 0x040C, 0x040B, 0x040F,
0x0452, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
@@ -391,7 +391,7 @@ static const struct {
0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F,
0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F} },
- { "windows-1252", { "CP1252", 0 }, 2252,
+ { "windows-1252", { "CP1252", nullptr }, 2252,
{ 0x20AC, 0xFFFD, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021,
0x02C6, 0x2030, 0x0160, 0x2039, 0x0152, 0xFFFD, 0x017D, 0xFFFD,
0xFFFD, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
@@ -408,7 +408,7 @@ static const struct {
0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF,
0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7,
0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF} },
- { "windows-1253", {"CP1253", 0 }, 2253,
+ { "windows-1253", {"CP1253", nullptr }, 2253,
{ 0x20AC, 0xFFFD, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021,
0xFFFD, 0x2030, 0xFFFD, 0x2039, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
0xFFFD, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
@@ -425,7 +425,7 @@ static const struct {
0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF,
0x03C0, 0x03C1, 0x03C2, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7,
0x03C8, 0x03C9, 0x03CA, 0x03CB, 0x03CC, 0x03CD, 0x03CE, 0xFFFD} },
- { "windows-1254", { "CP1254", 0 }, 2254,
+ { "windows-1254", { "CP1254", nullptr }, 2254,
{ 0x20AC, 0xFFFD, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021,
0x02C6, 0x2030, 0x0160, 0x2039, 0x0152, 0xFFFD, 0xFFFD, 0xFFFD,
0xFFFD, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
@@ -442,7 +442,7 @@ static const struct {
0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF,
0x011F, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7,
0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x0131, 0x015F, 0x00FF} },
- { "windows-1255", { "CP1255", 0 }, 2255,
+ { "windows-1255", { "CP1255", nullptr }, 2255,
{ 0x20AC, 0xFFFD, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021,
0x02C6, 0x2030, 0xFFFD, 0x2039, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
0xFFFD, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
@@ -459,7 +459,7 @@ static const struct {
0x05D8, 0x05D9, 0x05DA, 0x05DB, 0x05DC, 0x05DD, 0x05DE, 0x05DF,
0x05E0, 0x05E1, 0x05E2, 0x05E3, 0x05E4, 0x05E5, 0x05E6, 0x05E7,
0x05E8, 0x05E9, 0x05EA, 0xFFFD, 0xFFFD, 0x200E, 0x200F, 0xFFFD} },
- { "windows-1256", { "CP1256", 0 }, 2256,
+ { "windows-1256", { "CP1256", nullptr }, 2256,
{ 0x20AC, 0x067E, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021,
0x02C6, 0x2030, 0x0679, 0x2039, 0x0152, 0x0686, 0x0698, 0x0688,
0x06AF, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
@@ -476,7 +476,7 @@ static const struct {
0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x0649, 0x064A, 0x00EE, 0x00EF,
0x064B, 0x064C, 0x064D, 0x064E, 0x00F4, 0x064F, 0x0650, 0x00F7,
0x0651, 0x00F9, 0x0652, 0x00FB, 0x00FC, 0x200E, 0x200F, 0x06D2} },
- { "windows-1257", { "CP1257", 0 }, 2257,
+ { "windows-1257", { "CP1257", nullptr }, 2257,
{ 0x20AC, 0xFFFD, 0x201A, 0xFFFD, 0x201E, 0x2026, 0x2020, 0x2021,
0xFFFD, 0x2030, 0xFFFD, 0x2039, 0xFFFD, 0x00A8, 0x02C7, 0x00B8,
0xFFFD, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
@@ -493,7 +493,7 @@ static const struct {
0x010D, 0x00E9, 0x017A, 0x0117, 0x0123, 0x0137, 0x012B, 0x013C,
0x0161, 0x0144, 0x0146, 0x00F3, 0x014D, 0x00F5, 0x00F6, 0x00F7,
0x0173, 0x0142, 0x015B, 0x016B, 0x00FC, 0x017C, 0x017E, 0x02D9} },
- { "windows-1258", { "CP1258", 0 }, 2258,
+ { "windows-1258", { "CP1258", nullptr }, 2258,
{ 0x20AC, 0xFFFD, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021,
0x02C6, 0x2030, 0xFFFD, 0x2039, 0x0152, 0xFFFD, 0xFFFD, 0xFFFD,
0xFFFD, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
@@ -511,7 +511,7 @@ static const struct {
0x0111, 0x00F1, 0x0323, 0x00F3, 0x00F4, 0x01A1, 0x00F6, 0x00F7,
0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x01B0, 0x20AB, 0x00FF} },
- { "macintosh", { "Apple Roman", "MacRoman", 0 }, 2027,
+ { "macintosh", { "Apple Roman", "MacRoman", nullptr }, 2027,
{ 0x00C4, 0x00C5, 0x00C7, 0x00C9, 0x00D1, 0x00D6, 0x00DC, 0x00E1,
0x00E0, 0x00E2, 0x00E4, 0x00E3, 0x00E5, 0x00E7, 0x00E9, 0x00E8,
0x00EA, 0x00EB, 0x00ED, 0x00EC, 0x00EE, 0x00EF, 0x00F1, 0x00F3,
@@ -532,7 +532,7 @@ static const struct {
// This one is based on the charmap file
// /usr/share/i18n/charmaps/SAMI-WS2.gz, which is manually adapted
// to this format by Boerre Gaup <boerre@subdimension.com>
- { "WINSAMI2", { "WS2", 0 }, -165,
+ { "WINSAMI2", { "WS2", nullptr }, -165,
{ 0x20AC, 0xFFFD, 0x010C, 0x0192, 0x010D, 0x01B7, 0x0292, 0x01EE,
0x01EF, 0x0110, 0x0160, 0x2039, 0x0152, 0xFFFD, 0xFFFD, 0xFFFD,
0xFFFD, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
@@ -555,7 +555,7 @@ static const struct {
// to iso8859-11, so we name it 8859-11 here, but recognise the name tis620 too.
// $ for A in 8 9 A B C D E F ; do for B in 0 1 2 3 4 5 6 7 8 9 A B C D E F ; do echo x${A}${B} 0xFFFD ; done ; done > /tmp/digits ; (cut -c25- < TIS-620 ; cat /tmp/digits) | awk '/^x[89ABCDEF]/{ print $1, $2 }' | sed -e 's/<U/0x/' -e 's/>//' | sort | uniq -w4 | cut -c5- | paste '-d ' - - - - - - - - | sed -e 's/ /, /g' -e 's/$/,/' -e '$ s/,$/} },/' -e '1 s/^/{ /' > ~/tmp/tis-620
- { "TIS-620", { "ISO 8859-11", 0 }, 2259, // Thai character set mib enum taken from tis620 (which is byte by byte equivalent)
+ { "TIS-620", { "ISO 8859-11", nullptr }, 2259, // Thai character set mib enum taken from tis620 (which is byte by byte equivalent)
{ 0x20AC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2026, 0xFFFD, 0xFFFD,
0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
0xFFFD, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
@@ -582,7 +582,7 @@ static const struct {
Alias: r8
Alias: csHPRoman8
*/
- { "hp-roman8", { "roman8", "csHPRoman8", 0 }, 2004,
+ { "hp-roman8", { "roman8", "csHPRoman8", nullptr }, 2004,
{ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
@@ -603,7 +603,7 @@ static const struct {
// if you add more chacater sets at the end, change LAST_MIB above
};
-QSimpleTextCodec::QSimpleTextCodec(int i) : forwardIndex(i), reverseMap(0)
+QSimpleTextCodec::QSimpleTextCodec(int i) : forwardIndex(i), reverseMap(nullptr)
{
}
@@ -640,7 +640,7 @@ static QByteArray *buildReverseMap(int forwardIndex)
QString QSimpleTextCodec::convertToUnicode(const char* chars, int len, ConverterState *) const
{
- if (len <= 0 || chars == 0)
+ if (len <= 0 || chars == nullptr)
return QString();
const unsigned char * c = (const unsigned char *)chars;
@@ -665,7 +665,7 @@ QByteArray QSimpleTextCodec::convertFromUnicode(const QChar *in, int length, Con
QByteArray *rmap = reverseMap.loadAcquire();
if (!rmap){
rmap = buildReverseMap(this->forwardIndex);
- if (!reverseMap.testAndSetRelease(0, rmap)) {
+ if (!reverseMap.testAndSetRelease(nullptr, rmap)) {
delete rmap;
rmap = reverseMap.loadAcquire();
}
diff --git a/src/corelib/configure.json b/src/corelib/configure.json
index ae360239c6..04643aec33 100644
--- a/src/corelib/configure.json
+++ b/src/corelib/configure.json
@@ -1086,6 +1086,20 @@ Mozilla License) is included. The data is then also used in QNetworkCookieJar::v
"win32_system_libs": {
"label": "Windows System Libraries",
"condition": "config.win32 && libs.advapi32 && libs.gdi32 && libs.kernel32 && libs.netapi32 && libs.ole32 && libs.shell32 && libs.uuid && libs.user32 && libs.winmm && libs.ws2_32"
+ },
+ "cborstream": {
+ "label": "CBOR stream I/O",
+ "purpose": "Provides support for reading and writing the CBOR binary format.
+
+Note that this is required for plugin loading. Qt GUI needs QPA plugins for basic operation.",
+ "section": "Utilities",
+ "output": [ "publicFeature" ]
+ },
+ "binaryjson": {
+ "label": "Binary JSON (deprecated)",
+ "purpose": "Provides support for the deprecated binary JSON format.",
+ "section": "Utilities",
+ "output": [ "publicFeature" ]
}
},
diff --git a/src/corelib/corelib.pro b/src/corelib/corelib.pro
index 6c101e21ca..3430154d13 100644
--- a/src/corelib/corelib.pro
+++ b/src/corelib/corelib.pro
@@ -17,6 +17,7 @@ DEFINES += QT_NO_USING_NAMESPACE QT_NO_FOREACH
msvc:equals(QT_ARCH, i386): QMAKE_LFLAGS += /BASE:0x67000000
CONFIG += simd optimize_full
+CONFIG += metatypes install_metatypes
QMAKE_DOCS = $$PWD/doc/qtcore.qdocconf
diff --git a/src/corelib/doc/snippets/code/src_corelib_global_qglobal.cpp b/src/corelib/doc/snippets/code/src_corelib_global_qglobal.cpp
index eb75a29ca2..a540b88247 100644
--- a/src/corelib/doc/snippets/code/src_corelib_global_qglobal.cpp
+++ b/src/corelib/doc/snippets/code/src_corelib_global_qglobal.cpp
@@ -50,6 +50,7 @@
//! [0]
label->setAlignment(Qt::AlignLeft | Qt::AlignTop);
+label->setAlignment({ });
//! [0]
diff --git a/src/corelib/doc/snippets/code/src_corelib_tools_qbytearray.cpp b/src/corelib/doc/snippets/code/src_corelib_tools_qbytearray.cpp
index 11ab50687d..01f620cf08 100644
--- a/src/corelib/doc/snippets/code/src_corelib_tools_qbytearray.cpp
+++ b/src/corelib/doc/snippets/code/src_corelib_tools_qbytearray.cpp
@@ -429,6 +429,19 @@ QByteArray::fromBase64("PHA+SGVsbG8/PC9wPg==", QByteArray::Base64Encoding); // r
QByteArray::fromBase64("PHA-SGVsbG8_PC9wPg==", QByteArray::Base64UrlEncoding); // returns "<p>Hello?</p>"
//! [44bis]
+//! [44ter]
+void process(const QByteArray &);
+
+if (auto result = QByteArray::fromBase64Encoding(encodedData))
+ process(*result);
+//! [44ter]
+
+//! [44quater]
+auto result = QByteArray::fromBase64Encoding(encodedData);
+if (result.decodingStatus == QByteArray::Base64DecodingStatus::Ok)
+ process(result.decoded);
+//! [44quater]
+
//! [45]
QByteArray text = QByteArray::fromHex("517420697320677265617421");
diff --git a/src/corelib/global/qcompilerdetection.h b/src/corelib/global/qcompilerdetection.h
index 60dc7ce688..b1fcf09e92 100644
--- a/src/corelib/global/qcompilerdetection.h
+++ b/src/corelib/global/qcompilerdetection.h
@@ -365,7 +365,6 @@
# define Q_COMPILER_ATTRIBUTES
# define Q_COMPILER_AUTO_FUNCTION
# define Q_COMPILER_CLASS_ENUM
-# define Q_COMPILER_CONSTEXPR
# define Q_COMPILER_DECLTYPE
# define Q_COMPILER_DEFAULT_MEMBERS
# define Q_COMPILER_DELETE_MEMBERS
diff --git a/src/corelib/global/qconfig-bootstrapped.h b/src/corelib/global/qconfig-bootstrapped.h
index c6f071bc3f..b62c1a4d35 100644
--- a/src/corelib/global/qconfig-bootstrapped.h
+++ b/src/corelib/global/qconfig-bootstrapped.h
@@ -74,6 +74,8 @@
#else
# define QT_FEATURE_alloca_malloc_h -1
#endif
+#define QT_FEATURE_binaryjson -1
+#define QT_FEATURE_cborstream -1
#define QT_CRYPTOGRAPHICHASH_ONLY_SHA1
#define QT_FEATURE_cxx11_random (__has_include(<random>) ? 1 : -1)
#define QT_NO_DATASTREAM
diff --git a/src/corelib/global/qflags.h b/src/corelib/global/qflags.h
index bd3c219968..4f46de5eaa 100644
--- a/src/corelib/global/qflags.h
+++ b/src/corelib/global/qflags.h
@@ -93,8 +93,10 @@ class QFlags
"long long will overflow.");
Q_STATIC_ASSERT_X((std::is_enum<Enum>::value), "QFlags is only usable on enumeration types.");
+#if QT_DEPRECATED_SINCE(5,15)
struct Private;
typedef int (Private::*Zero);
+#endif
template <typename E> friend QDataStream &operator>>(QDataStream &, QFlags<E> &);
template <typename E> friend QDataStream &operator<<(QDataStream &, QFlags<E>);
public:
@@ -115,8 +117,11 @@ public:
Q_DECL_CONSTEXPR inline QFlags(const QFlags &other);
Q_DECL_CONSTEXPR inline QFlags &operator=(const QFlags &other);
#endif
+ Q_DECL_CONSTEXPR inline QFlags() noexcept : i(0) {}
Q_DECL_CONSTEXPR inline QFlags(Enum flags) noexcept : i(Int(flags)) {}
- Q_DECL_CONSTEXPR inline QFlags(Zero = nullptr) noexcept : i(0) {}
+#if QT_DEPRECATED_SINCE(5,15)
+ QT_DEPRECATED_X("Use default constructor instead") Q_DECL_CONSTEXPR inline QFlags(Zero) noexcept : i(0) {}
+#endif
Q_DECL_CONSTEXPR inline QFlags(QFlag flag) noexcept : i(flag) {}
Q_DECL_CONSTEXPR inline QFlags(std::initializer_list<Enum> flags) noexcept
diff --git a/src/corelib/global/qfloat16.cpp b/src/corelib/global/qfloat16.cpp
index 6c21b7de5a..97709d7685 100644
--- a/src/corelib/global/qfloat16.cpp
+++ b/src/corelib/global/qfloat16.cpp
@@ -146,6 +146,14 @@ QT_BEGIN_NAMESPACE
*/
/*!
+ \since 5.15
+ \fn qfloat16::copySign(qfloat16 sign) const noexcept
+
+ Returns a qfloat16 with the sign of \a sign but the rest of its value taken
+ from this qfloat16. Serves as qfloat16's equivalent of std::copysign().
+*/
+
+/*!
\internal
\since 5.14
Implements qFpClassify() for qfloat16.
diff --git a/src/corelib/global/qfloat16.h b/src/corelib/global/qfloat16.h
index 02fd2f03cc..f35eefd922 100644
--- a/src/corelib/global/qfloat16.h
+++ b/src/corelib/global/qfloat16.h
@@ -84,6 +84,9 @@ public:
bool isNaN() const noexcept { return ((b16 >> 8) & 0x7e) == 0x7e; }
bool isFinite() const noexcept { return ((b16 >> 8) & 0x7c) != 0x7c; }
Q_CORE_EXPORT int fpClassify() const noexcept;
+ // Can't specialize std::copysign() for qfloat16
+ qfloat16 copySign(qfloat16 sign) const noexcept
+ { return qfloat16(Wrap((sign.b16 & 0x8000) | (b16 & 0x7fff))); }
// Support for std::numeric_limits<qfloat16>
static constexpr qfloat16 _limit_epsilon() noexcept { return qfloat16(Wrap(0x1400)); }
static constexpr qfloat16 _limit_min() noexcept { return qfloat16(Wrap(0x400)); }
@@ -92,7 +95,9 @@ public:
static constexpr qfloat16 _limit_lowest() noexcept { return qfloat16(Wrap(0xfbff)); }
static constexpr qfloat16 _limit_infinity() noexcept { return qfloat16(Wrap(0x7c00)); }
static constexpr qfloat16 _limit_quiet_NaN() noexcept { return qfloat16(Wrap(0x7e00)); }
- // Signalling NaN is 0x7f00
+#if QT_CONFIG(signaling_nan)
+ static constexpr qfloat16 _limit_signaling_NaN() noexcept { return qfloat16(Wrap(0x7f00)); }
+#endif
inline constexpr bool isNormal() const noexcept
{ return (b16 & 0x7fff) == 0 || ((b16 & 0x7c00) && (b16 & 0x7c00) != 0x7c00); }
private:
@@ -328,6 +333,12 @@ public:
{ return QT_PREPEND_NAMESPACE(qfloat16)::_limit_infinity(); }
static constexpr QT_PREPEND_NAMESPACE(qfloat16) quiet_NaN()
{ return QT_PREPEND_NAMESPACE(qfloat16)::_limit_quiet_NaN(); }
+#if QT_CONFIG(signaling_nan)
+ static constexpr QT_PREPEND_NAMESPACE(qfloat16) signaling_NaN()
+ { return QT_PREPEND_NAMESPACE(qfloat16)::_limit_signaling_NaN(); }
+#else
+ static constexpr bool has_signaling_NaN = false;
+#endif
};
template<> class numeric_limits<const QT_PREPEND_NAMESPACE(qfloat16)>
diff --git a/src/corelib/global/qglobal.cpp b/src/corelib/global/qglobal.cpp
index b662233d4e..025ec4ee33 100644
--- a/src/corelib/global/qglobal.cpp
+++ b/src/corelib/global/qglobal.cpp
@@ -250,7 +250,7 @@ Q_STATIC_ASSERT((std::is_same<qsizetype, qptrdiff>::value));
Qt::Alignment type is simply a typedef for
QFlags<Qt::AlignmentFlag>. QLabel::setAlignment() takes a
Qt::Alignment parameter, which means that any combination of
- Qt::AlignmentFlag values, or 0, is legal:
+ Qt::AlignmentFlag values, or \c{{ }}, is legal:
\snippet code/src_corelib_global_qglobal.cpp 0
@@ -318,10 +318,20 @@ Q_STATIC_ASSERT((std::is_same<qsizetype, qptrdiff>::value));
*/
/*!
+ \fn template <typename Enum> QFlags<Enum>::QFlags()
+ \since 5.15
+
+ Constructs a QFlags object with no flags set.
+*/
+
+/*!
\fn template <typename Enum> QFlags<Enum>::QFlags(Zero)
+ \deprecated
Constructs a QFlags object with no flags set. The parameter must be a
literal 0 value.
+
+ Deprecated, use default constructor instead.
*/
/*!
@@ -4800,9 +4810,11 @@ bool QInternal::activateCallbacks(Callback cb, void **parameters)
/*!
\macro qMove(x)
\relates <QtGlobal>
+ \obsolete
- It expands to "std::move" if your compiler supports that C++11 function, or to nothing
- otherwise.
+ Use \c std::move instead.
+
+ It expands to "std::move".
qMove takes an rvalue reference to its parameter \a x, and converts it to an xvalue.
*/
@@ -4903,6 +4915,7 @@ bool QInternal::activateCallbacks(Callback cb, void **parameters)
/*!
\macro Q_DECL_OVERRIDE
\since 5.0
+ \obsolete
\relates <QtGlobal>
This macro can be used to declare an overriding virtual
@@ -4910,8 +4923,7 @@ bool QInternal::activateCallbacks(Callback cb, void **parameters)
an error if the overriding virtual function does not in fact
override anything.
- It expands to "override" if your compiler supports that C++11
- contextual keyword, or to nothing otherwise.
+ It expands to "override".
The macro goes at the end of the function, usually after the
\c{const}, if any:
@@ -4923,6 +4935,7 @@ bool QInternal::activateCallbacks(Callback cb, void **parameters)
/*!
\macro Q_DECL_FINAL
\since 5.0
+ \obsolete
\relates <QtGlobal>
This macro can be used to declare an overriding virtual or a class
@@ -4930,10 +4943,7 @@ bool QInternal::activateCallbacks(Callback cb, void **parameters)
no longer override this virtual function, or inherit from this
class, respectively.
- It expands to "final" if your compiler supports that C++11
- contextual keyword, or something non-standard if your compiler
- supports something close enough to the C++11 semantics, or to
- nothing otherwise.
+ It expands to "final".
The macro goes at the end of the function, usually after the
\c{const}, if any:
diff --git a/src/corelib/global/qglobal.h b/src/corelib/global/qglobal.h
index e335916eac..861f087c60 100644
--- a/src/corelib/global/qglobal.h
+++ b/src/corelib/global/qglobal.h
@@ -1266,8 +1266,10 @@ inline int qIntCast(float f) { return int(f); }
/*
Reentrant versions of basic rand() functions for random number generation
*/
-Q_CORE_EXPORT void qsrand(uint seed);
-Q_CORE_EXPORT int qrand();
+#if QT_DEPRECATED_SINCE(5, 15)
+Q_CORE_EXPORT QT_DEPRECATED_VERSION_X_5_15("use QRandomGenerator instead") void qsrand(uint seed);
+Q_CORE_EXPORT QT_DEPRECATED_VERSION_X_5_15("use QRandomGenerator instead") int qrand();
+#endif
#define QT_MODULE(x)
diff --git a/src/corelib/global/qlibraryinfo.cpp b/src/corelib/global/qlibraryinfo.cpp
index 276741c9fb..ecd26233cd 100644
--- a/src/corelib/global/qlibraryinfo.cpp
+++ b/src/corelib/global/qlibraryinfo.cpp
@@ -124,12 +124,12 @@ public:
QLibrarySettings *ls = qt_library_settings();
if (ls) {
#ifndef QT_BUILD_QMAKE
- if (ls->reloadOnQAppAvailable && QCoreApplication::instance() != 0)
+ if (ls->reloadOnQAppAvailable && QCoreApplication::instance() != nullptr)
ls->load();
#endif
return ls->settings.data();
} else {
- return 0;
+ return nullptr;
}
}
};
@@ -146,7 +146,7 @@ void QLibrarySettings::load()
// If we get any settings here, those won't change when the application shows up.
settings.reset(QLibraryInfoPrivate::findConfiguration());
#ifndef QT_BUILD_QMAKE
- reloadOnQAppAvailable = (settings.data() == 0 && QCoreApplication::instance() == 0);
+ reloadOnQAppAvailable = (settings.data() == nullptr && QCoreApplication::instance() == nullptr);
bool haveDevicePaths;
bool haveEffectivePaths;
bool havePaths;
@@ -169,7 +169,7 @@ void QLibrarySettings::load()
|| children.contains(QLatin1String("Paths"));
#ifndef QT_BUILD_QMAKE
if (!havePaths)
- settings.reset(0);
+ settings.reset(nullptr);
#else
} else {
haveDevicePaths = false;
@@ -212,7 +212,7 @@ QSettings *QLibraryInfoPrivate::findConfiguration()
return new QSettings(qtconfig, QSettings::IniFormat);
}
#endif
- return 0; //no luck
+ return nullptr; //no luck
}
#endif // settings
@@ -745,7 +745,12 @@ QLibraryInfo::rawLocation(LibraryLocation loc, PathGroup group)
#ifndef QT_BUILD_QMAKE_BOOTSTRAP
if (!fromConf) {
- const char * volatile path = 0;
+ // "volatile" here is a hack to prevent compilers from doing a
+ // compile-time strlen() on "path". The issue is that Qt installers
+ // will binary-patch the Qt installation paths -- in such scenarios, Qt
+ // will be built with a dummy path, thus the compile-time result of
+ // strlen is meaningless.
+ const char * volatile path = nullptr;
if (loc == PrefixPath) {
path = getPrefix(
#ifdef QT_BUILD_QMAKE
diff --git a/src/corelib/global/qlogging.cpp b/src/corelib/global/qlogging.cpp
index 5a7f8242de..c1a45476f9 100644
--- a/src/corelib/global/qlogging.cpp
+++ b/src/corelib/global/qlogging.cpp
@@ -1315,7 +1315,7 @@ static QStringList backtraceFramesForLogMessage(int frameCount)
if (function.startsWith(QLatin1String("_Z"))) {
QScopedPointer<char, QScopedPointerPodDeleter> demangled(
- abi::__cxa_demangle(function.toUtf8(), 0, 0, 0));
+ abi::__cxa_demangle(function.toUtf8(), nullptr, nullptr, nullptr));
if (demangled)
function = QString::fromUtf8(qCleanupFuncinfo(demangled.data()));
}
diff --git a/src/corelib/global/qnamespace.h b/src/corelib/global/qnamespace.h
index 810c55709c..047ed8e7b3 100644
--- a/src/corelib/global/qnamespace.h
+++ b/src/corelib/global/qnamespace.h
@@ -1575,9 +1575,12 @@ public:
MatchContains = 1,
MatchStartsWith = 2,
MatchEndsWith = 3,
- MatchRegExp = 4,
+#if QT_DEPRECATED_SINCE(5, 15)
+ MatchRegExp Q_DECL_ENUMERATOR_DEPRECATED_X("MatchRegExp is deprecated. Use MatchRegularExpression instead") = 4,
+#endif
MatchWildcard = 5,
MatchFixedString = 8,
+ MatchRegularExpression = 9,
MatchCaseSensitive = 16,
MatchWrap = 32,
MatchRecursive = 64
diff --git a/src/corelib/global/qnamespace.qdoc b/src/corelib/global/qnamespace.qdoc
index bebe67be3f..ef5f345e9c 100644
--- a/src/corelib/global/qnamespace.qdoc
+++ b/src/corelib/global/qnamespace.qdoc
@@ -2848,24 +2848,32 @@
This enum describes the type of matches that can be used when searching
for items in a model.
- \value MatchExactly Performs QVariant-based matching.
- \value MatchFixedString Performs string-based matching.
+ \value MatchExactly Performs QVariant-based matching.
+ \value MatchFixedString Performs string-based matching.
String-based comparisons are case-insensitive unless the
\c MatchCaseSensitive flag is also specified.
- \value MatchContains The search term is contained in the item.
- \value MatchStartsWith The search term matches the start of the item.
- \value MatchEndsWith The search term matches the end of the item.
- \value MatchCaseSensitive The search is case sensitive.
- \value MatchRegExp Performs string-based matching using a regular
- expression as the search term.
- \value MatchWildcard Performs string-based matching using a string with
+ \value MatchContains The search term is contained in the item.
+ \value MatchStartsWith The search term matches the start of the item.
+ \value MatchEndsWith The search term matches the end of the item.
+ \value MatchCaseSensitive The search is case sensitive.
+ \value MatchRegExp Performs string-based matching using a regular
+ expression as the search term. Uses the deprecated QRegExp class.
+ \e{This enum value is deprecated since Qt 5.15.}
+ \value MatchRegularExpression Performs string-based matching using a regular
+ expression as the search term. Uses QRegularExpression.
+ When using this flag, a QRegularExpression object can be passed as
+ parameter and will directly be used to perform the search. The case
+ sensitivity flag will be ignored as the QRegularExpression object is
+ expected to be fully configured.
+ This enum value was added in Qt 5.15.
+ \value MatchWildcard Performs string-based matching using a string with
wildcards as the search term.
- \value MatchWrap Perform a search that wraps around, so that when
+ \value MatchWrap Perform a search that wraps around, so that when
the search reaches the last item in the model, it begins again at
the first item and continues until all items have been examined.
- \value MatchRecursive Searches the entire hierarchy.
+ \value MatchRecursive Searches the entire hierarchy.
- \sa QString::compare(), QRegExp
+ \sa QString::compare(), QRegExp, QRegularExpression
*/
/*!
diff --git a/src/corelib/io/io.pri b/src/corelib/io/io.pri
index fe81689932..c4c6f41387 100644
--- a/src/corelib/io/io.pri
+++ b/src/corelib/io/io.pri
@@ -136,6 +136,7 @@ qtConfig(settings) {
} else: darwin:!nacl {
SOURCES += io/qsettings_mac.cpp
}
+ wasm : SOURCES += io/qsettings_wasm.cpp
}
win32 {
diff --git a/src/corelib/io/qabstractfileengine.cpp b/src/corelib/io/qabstractfileengine.cpp
index 8a1679c5af..070139b608 100644
--- a/src/corelib/io/qabstractfileengine.cpp
+++ b/src/corelib/io/qabstractfileengine.cpp
@@ -658,7 +658,7 @@ QStringList QAbstractFileEngine::entryList(QDir::Filters filters, const QStringL
QAbstractFileEngine::FileFlags QAbstractFileEngine::fileFlags(FileFlags type) const
{
Q_UNUSED(type);
- return nullptr;
+ return {};
}
/*!
diff --git a/src/corelib/io/qfile.cpp b/src/corelib/io/qfile.cpp
index 95f03ef816..5320ae2986 100644
--- a/src/corelib/io/qfile.cpp
+++ b/src/corelib/io/qfile.cpp
@@ -251,7 +251,7 @@ QFile::QFile(QFilePrivate &dd)
Constructs a QFile object.
*/
QFile::QFile()
- : QFileDevice(*new QFilePrivate, 0)
+ : QFileDevice(*new QFilePrivate, nullptr)
{
}
/*!
@@ -265,7 +265,7 @@ QFile::QFile(QObject *parent)
Constructs a new file object to represent the file with the given \a name.
*/
QFile::QFile(const QString &name)
- : QFileDevice(*new QFilePrivate, 0)
+ : QFileDevice(*new QFilePrivate, nullptr)
{
Q_D(QFile);
d->fileName = name;
diff --git a/src/corelib/io/qfiledevice.cpp b/src/corelib/io/qfiledevice.cpp
index ee619d99cc..b0aba3193c 100644
--- a/src/corelib/io/qfiledevice.cpp
+++ b/src/corelib/io/qfiledevice.cpp
@@ -202,7 +202,7 @@ QFileDevice::QFileDevice(QFileDevicePrivate &dd)
\internal
*/
QFileDevice::QFileDevice()
- : QIODevice(*new QFileDevicePrivate, 0)
+ : QIODevice(*new QFileDevicePrivate, nullptr)
{
}
/*!
diff --git a/src/corelib/io/qfileinfo.cpp b/src/corelib/io/qfileinfo.cpp
index 89834de29f..3fe1aec41f 100644
--- a/src/corelib/io/qfileinfo.cpp
+++ b/src/corelib/io/qfileinfo.cpp
@@ -134,7 +134,7 @@ uint QFileInfoPrivate::getFileFlags(QAbstractFileEngine::FileFlags request) cons
// extra syscall. Bundle detecton on Mac can be slow, expecially on network
// paths, so we separate out that as well.
- QAbstractFileEngine::FileFlags req = nullptr;
+ QAbstractFileEngine::FileFlags req;
uint cachedFlags = 0;
if (request & (QAbstractFileEngine::FlagsMask | QAbstractFileEngine::TypesMask)) {
@@ -1145,6 +1145,25 @@ bool QFileInfo::isShortcut() const
[d]() { return d->getFileFlags(QAbstractFileEngine::LinkType); });
}
+
+/*!
+ Returns \c true if the object points to a junction;
+ otherwise returns \c false.
+
+ Junctions only exist on Windows' NTFS file system, and are typically
+ created by the \c{mklink} command. They can be thought of as symlinks for
+ directories, and can only be created for absolute paths on the local
+ volume.
+*/
+bool QFileInfo::isJunction() const
+{
+ Q_D(const QFileInfo);
+ return d->checkAttribute<bool>(
+ QFileSystemMetaData::LegacyLinkType,
+ [d]() { return d->metaData.isJunction(); },
+ [d]() { return d->getFileFlags(QAbstractFileEngine::LinkType); });
+}
+
/*!
Returns \c true if the object points to a directory or to a symbolic
link to a directory, and that directory is the root directory; otherwise
diff --git a/src/corelib/io/qfileinfo.h b/src/corelib/io/qfileinfo.h
index 3ac028085a..7c7ff56ae4 100644
--- a/src/corelib/io/qfileinfo.h
+++ b/src/corelib/io/qfileinfo.h
@@ -113,6 +113,7 @@ public:
bool isSymLink() const;
bool isSymbolicLink() const;
bool isShortcut() const;
+ bool isJunction() const;
bool isRoot() const;
bool isBundle() const;
diff --git a/src/corelib/io/qfilesystemengine_unix.cpp b/src/corelib/io/qfilesystemengine_unix.cpp
index 38cb6a423d..3bbebc7fe9 100644
--- a/src/corelib/io/qfilesystemengine_unix.cpp
+++ b/src/corelib/io/qfilesystemengine_unix.cpp
@@ -1076,14 +1076,14 @@ bool QFileSystemEngine::cloneFile(int srcfd, int dstfd, const QFileSystemMetaDat
// sendfile(2) is limited in the kernel to 2G - 4k
const size_t SendfileSize = 0x7ffff000;
- ssize_t n = ::sendfile(dstfd, srcfd, NULL, SendfileSize);
+ ssize_t n = ::sendfile(dstfd, srcfd, nullptr, SendfileSize);
if (n == -1) {
// if we got an error here, give up and try at an upper layer
return false;
}
while (n) {
- n = ::sendfile(dstfd, srcfd, NULL, SendfileSize);
+ n = ::sendfile(dstfd, srcfd, nullptr, SendfileSize);
if (n == -1) {
// uh oh, this is probably a real error (like ENOSPC), but we have
// no way to notify QFile of partial success, so just erase any work
diff --git a/src/corelib/io/qfilesystemengine_win.cpp b/src/corelib/io/qfilesystemengine_win.cpp
index ae29190848..0579872f8d 100644
--- a/src/corelib/io/qfilesystemengine_win.cpp
+++ b/src/corelib/io/qfilesystemengine_win.cpp
@@ -1123,67 +1123,62 @@ static bool isDirPath(const QString &dirPath, bool *existed)
return fileAttrib & FILE_ATTRIBUTE_DIRECTORY;
}
+// NOTE: if \a shouldMkdirFirst is false, we assume the caller did try to mkdir
+// before calling this function.
+static bool createDirectoryWithParents(const QString &nativeName, bool shouldMkdirFirst = true)
+{
+ const auto isUNCRoot = [](const QString &nativeName) {
+ return nativeName.startsWith(QLatin1String("\\\\")) && nativeName.count(QDir::separator()) <= 3;
+ };
+ const auto isDriveName = [](const QString &nativeName) {
+ return nativeName.size() == 2 && nativeName.at(1) == QLatin1Char(':');
+ };
+ const auto isDir = [](const QString &nativeName) {
+ bool exists = false;
+ return isDirPath(nativeName, &exists) && exists;
+ };
+ // Do not try to mkdir a UNC root path or a drive letter.
+ if (isUNCRoot(nativeName) || isDriveName(nativeName))
+ return false;
+
+ if (shouldMkdirFirst) {
+ if (mkDir(nativeName))
+ return true;
+ }
+
+ const int backSlash = nativeName.lastIndexOf(QDir::separator());
+ if (backSlash < 1)
+ return false;
+
+ const QString parentNativeName = nativeName.left(backSlash);
+ if (!createDirectoryWithParents(parentNativeName))
+ return false;
+
+ // try again
+ if (mkDir(nativeName))
+ return true;
+ return isDir(nativeName);
+}
+
//static
bool QFileSystemEngine::createDirectory(const QFileSystemEntry &entry, bool createParents)
{
QString dirName = entry.filePath();
Q_CHECK_FILE_NAME(dirName, false);
- if (createParents) {
- dirName = QDir::toNativeSeparators(QDir::cleanPath(dirName));
- // We spefically search for / so \ would break it..
- int oldslash = -1;
- if (dirName.startsWith(QLatin1String("\\\\"))) {
- // Don't try to create the root path of a UNC path;
- // CreateDirectory() will just return ERROR_INVALID_NAME.
- for (int i = 0; i < dirName.size(); ++i) {
- if (dirName.at(i) != QDir::separator()) {
- oldslash = i;
- break;
- }
- }
- if (oldslash != -1)
- oldslash = dirName.indexOf(QDir::separator(), oldslash);
- } else if (dirName.size() > 2
- && dirName.at(1) == QLatin1Char(':')) {
- // Don't try to call mkdir with just a drive letter
- oldslash = 2;
- }
- for (int slash=0; slash != -1; oldslash = slash) {
- slash = dirName.indexOf(QDir::separator(), oldslash+1);
- if (slash == -1) {
- if (oldslash == dirName.length())
- break;
- slash = dirName.length();
- }
- if (slash) {
- DWORD lastError;
- QString chunk = dirName.left(slash);
- if (!mkDir(chunk, &lastError)) {
- if (lastError == ERROR_ALREADY_EXISTS || lastError == ERROR_ACCESS_DENIED) {
- bool existed = false;
- if (isDirPath(chunk, &existed) && existed)
- continue;
-#ifdef Q_OS_WINRT
- static QThreadStorage<QString> dataLocation;
- if (!dataLocation.hasLocalData())
- dataLocation.setLocalData(QDir::toNativeSeparators(QStandardPaths::writableLocation(QStandardPaths::DataLocation)));
- static QThreadStorage<QString> tempLocation;
- if (!tempLocation.hasLocalData())
- tempLocation.setLocalData(QDir::toNativeSeparators(QStandardPaths::writableLocation(QStandardPaths::TempLocation)));
- // We try to create something outside the sandbox, which is forbidden
- // However we could still try to pass into the sandbox
- if (dataLocation.localData().startsWith(chunk) || tempLocation.localData().startsWith(chunk))
- continue;
-#endif
- }
- return false;
- }
- }
- }
+ dirName = QDir::toNativeSeparators(QDir::cleanPath(dirName));
+
+ // try to mkdir this directory
+ DWORD lastError;
+ if (mkDir(dirName, &lastError))
return true;
- }
- return mkDir(entry.filePath());
+ // mkpath should return true, if the directory already exists, mkdir false.
+ if (!createParents)
+ return false;
+ if (lastError == ERROR_ALREADY_EXISTS)
+ return isDirPath(dirName, nullptr);
+
+ return createDirectoryWithParents(dirName, false);
}
//static
diff --git a/src/corelib/io/qfilesystemmetadata_p.h b/src/corelib/io/qfilesystemmetadata_p.h
index 81f4b3ba13..3154658e5c 100644
--- a/src/corelib/io/qfilesystemmetadata_p.h
+++ b/src/corelib/io/qfilesystemmetadata_p.h
@@ -76,8 +76,7 @@ class Q_AUTOTEST_EXPORT QFileSystemMetaData
{
public:
QFileSystemMetaData()
- : knownFlagsMask(nullptr),
- size_(-1)
+ : size_(-1)
{
}
@@ -111,8 +110,10 @@ public:
AliasType = 0x0,
#endif
#if defined(Q_OS_WIN)
+ JunctionType = 0x04000000,
WinLnkType = 0x08000000, // Note: Uses the same position for AliasType on Mac
#else
+ JunctionType = 0x0,
WinLnkType = 0x0,
#endif
SequentialType = 0x00800000, // Note: overlaps with QAbstractFileEngine::RootFlag
@@ -184,7 +185,7 @@ public:
void clear()
{
- knownFlagsMask = nullptr;
+ knownFlagsMask = {};
}
void clearFlags(MetaDataFlags flags = AllMetaDataFlags)
@@ -205,8 +206,10 @@ public:
bool wasDeleted() const { return (entryFlags & WasDeletedAttribute); }
#if defined(Q_OS_WIN)
bool isLnkFile() const { return (entryFlags & WinLnkType); }
+ bool isJunction() const { return (entryFlags & JunctionType); }
#else
bool isLnkFile() const { return false; }
+ bool isJunction() const { return false; }
#endif
qint64 size() const { return size_; }
@@ -356,9 +359,15 @@ inline void QFileSystemMetaData::fillFromFindData(WIN32_FIND_DATA &findData, boo
if (setLinkType) {
knownFlagsMask |= LinkType;
entryFlags &= ~LinkType;
- if ((fileAttribute_ & FILE_ATTRIBUTE_REPARSE_POINT)
- && (findData.dwReserved0 == IO_REPARSE_TAG_SYMLINK)) {
- entryFlags |= LinkType;
+ if (fileAttribute_ & FILE_ATTRIBUTE_REPARSE_POINT) {
+ if (findData.dwReserved0 == IO_REPARSE_TAG_SYMLINK) {
+ entryFlags |= LinkType;
+#if defined(IO_REPARSE_TAG_MOUNT_POINT)
+ } else if ((fileAttribute_ & FILE_ATTRIBUTE_DIRECTORY)
+ && (findData.dwReserved0 == IO_REPARSE_TAG_MOUNT_POINT)) {
+ entryFlags |= JunctionType;
+#endif
+ }
}
}
}
diff --git a/src/corelib/io/qfilesystemwatcher.cpp b/src/corelib/io/qfilesystemwatcher.cpp
index 54460aff77..86c8963cb6 100644
--- a/src/corelib/io/qfilesystemwatcher.cpp
+++ b/src/corelib/io/qfilesystemwatcher.cpp
@@ -88,7 +88,7 @@ QFileSystemWatcherEngine *QFileSystemWatcherPrivate::createNativeEngine(QObject
}
QFileSystemWatcherPrivate::QFileSystemWatcherPrivate()
- : native(0), poller(0)
+ : native(nullptr), poller(nullptr)
{
}
diff --git a/src/corelib/io/qfilesystemwatcher_inotify.cpp b/src/corelib/io/qfilesystemwatcher_inotify.cpp
index ca1f6cc359..888af998a5 100644
--- a/src/corelib/io/qfilesystemwatcher_inotify.cpp
+++ b/src/corelib/io/qfilesystemwatcher_inotify.cpp
@@ -242,7 +242,7 @@ QInotifyFileSystemWatcherEngine *QInotifyFileSystemWatcherEngine::create(QObject
if (fd == -1) {
fd = inotify_init();
if (fd == -1)
- return 0;
+ return nullptr;
}
return new QInotifyFileSystemWatcherEngine(fd, parent);
}
diff --git a/src/corelib/io/qfsfileengine.cpp b/src/corelib/io/qfsfileengine.cpp
index 0d73839f8d..3042eac2f0 100644
--- a/src/corelib/io/qfsfileengine.cpp
+++ b/src/corelib/io/qfsfileengine.cpp
@@ -911,14 +911,7 @@ bool QFSFileEngine::supportsExtension(Extension extension) const
}
/*! \fn bool QFSFileEngine::caseSensitive() const
- Returns \c true for Windows, false for Unix.
-*/
-
-/*! \fn bool QFSFileEngine::copy(const QString &copyName)
-
- For Windows or Apple platforms, copy the file to file \a copyName.
-
- Not implemented for other Unix platforms.
+ Returns \c false for Windows, true for Unix.
*/
/*! \fn QString QFSFileEngine::currentPath(const QString &fileName)
@@ -950,11 +943,34 @@ bool QFSFileEngine::supportsExtension(Extension extension) const
\reimp
*/
-/*! \fn QString QFSFileEngine::homePath()
+/*!
Returns the home path of the current user.
\sa rootPath()
*/
+QString QFSFileEngine::homePath()
+{
+ return QFileSystemEngine::homePath();
+}
+
+/*!
+ Returns the root path.
+
+ \sa homePath()
+*/
+QString QFSFileEngine::rootPath()
+{
+ return QFileSystemEngine::rootPath();
+}
+
+/*!
+ Returns the temporary path (i.e., a path in which it is safe
+ to store temporary files).
+*/
+QString QFSFileEngine::tempPath()
+{
+ return QFileSystemEngine::tempPath();
+}
/*! \fn bool QFSFileEngine::isRelativePath() const
\reimp
@@ -968,9 +984,6 @@ bool QFSFileEngine::supportsExtension(Extension extension) const
true if successful; otherwise returns \c false.
*/
-/*! \fn bool QFSFileEngine::mkdir(const QString &name, bool createParentDirectories) const
- \reimp
-*/
/*! \fn uint QFSFileEngine::ownerId(QAbstractFileEngine::FileOwner own) const
In Unix, if stat() is successful, the \c uid is returned if
@@ -984,35 +997,87 @@ bool QFSFileEngine::supportsExtension(Extension extension) const
\reimp
*/
-/*! \fn bool QFSFileEngine::remove()
- \reimp
+/*!
+ For Windows or Apple platforms, copy the file to file \a copyName.
+
+ Not implemented for other Unix platforms.
*/
+bool QFSFileEngine::copy(const QString &copyName)
+{
+ Q_D(QFSFileEngine);
+ QSystemError error;
+ bool ret = QFileSystemEngine::copyFile(d->fileEntry, QFileSystemEntry(copyName), error);
+ if (!ret)
+ setError(QFile::CopyError, error.toString());
+ return ret;
+}
-/*! \fn bool QFSFileEngine::rename(const QString &newName)
+/*!
\reimp
*/
+bool QFSFileEngine::remove()
+{
+ Q_D(QFSFileEngine);
+ QSystemError error;
+ bool ret = QFileSystemEngine::removeFile(d->fileEntry, error);
+ d->metaData.clear();
+ if (!ret)
+ setError(QFile::RemoveError, error.toString());
+ return ret;
+}
-
-/*! \fn bool QFSFileEngine::renameOverwrite(const QString &newName)
+/*!
\reimp
*/
-
-/*! \fn bool QFSFileEngine::rmdir(const QString &name, bool recurseParentDirectories) const
+bool QFSFileEngine::rename(const QString &newName)
+{
+ Q_D(QFSFileEngine);
+ QSystemError error;
+ bool ret = QFileSystemEngine::renameFile(d->fileEntry, QFileSystemEntry(newName), error);
+ if (!ret)
+ setError(QFile::RenameError, error.toString());
+ return ret;
+}
+/*!
\reimp
*/
+bool QFSFileEngine::renameOverwrite(const QString &newName)
+{
+ Q_D(QFSFileEngine);
+ QSystemError error;
+ bool ret = QFileSystemEngine::renameOverwriteFile(d->fileEntry, QFileSystemEntry(newName), error);
+ if (!ret)
+ setError(QFile::RenameError, error.toString());
+ return ret;
+}
-/*! \fn QString QFSFileEngine::rootPath()
- Returns the root path.
+/*!
+ \reimp
+*/
+bool QFSFileEngine::mkdir(const QString &name, bool createParentDirectories) const
+{
+ return QFileSystemEngine::createDirectory(QFileSystemEntry(name), createParentDirectories);
+}
- \sa homePath()
+/*!
+ \reimp
*/
+bool QFSFileEngine::rmdir(const QString &name, bool recurseParentDirectories) const
+{
+ return QFileSystemEngine::removeDirectory(QFileSystemEntry(name), recurseParentDirectories);
+}
-/*! \fn bool QFSFileEngine::setCurrentPath(const QString &path)
+
+/*!
Sets the current path (e.g., for QDir), to \a path. Returns \c true if the
new path exists; otherwise this function does nothing, and returns \c false.
\sa currentPath()
*/
+bool QFSFileEngine::setCurrentPath(const QString &path)
+{
+ return QFileSystemEngine::setCurrentPath(QFileSystemEntry(path));
+}
/*! \fn bool QFSFileEngine::setPermissions(uint perms)
\reimp
@@ -1022,11 +1087,6 @@ bool QFSFileEngine::supportsExtension(Extension extension) const
\reimp
*/
-/*! \fn QString QFSFileEngine::tempPath()
- Returns the temporary path (i.e., a path in which it is safe
- to store temporary files).
-*/
-
/*! \fn QAbstractFileEngine::FileFlags QFSFileEnginePrivate::getPermissions(QAbstractFileEngine::FileFlags type) const
\internal
*/
diff --git a/src/corelib/io/qfsfileengine_unix.cpp b/src/corelib/io/qfsfileengine_unix.cpp
index d4983c72af..4610e9306c 100644
--- a/src/corelib/io/qfsfileengine_unix.cpp
+++ b/src/corelib/io/qfsfileengine_unix.cpp
@@ -304,54 +304,6 @@ bool QFSFileEnginePrivate::nativeIsSequential() const
return isSequentialFdFh();
}
-bool QFSFileEngine::remove()
-{
- Q_D(QFSFileEngine);
- QSystemError error;
- bool ret = QFileSystemEngine::removeFile(d->fileEntry, error);
- d->metaData.clear();
- if (!ret) {
- setError(QFile::RemoveError, error.toString());
- }
- return ret;
-}
-
-bool QFSFileEngine::copy(const QString &newName)
-{
- Q_D(QFSFileEngine);
- QSystemError error;
- bool ret = QFileSystemEngine::copyFile(d->fileEntry, QFileSystemEntry(newName), error);
- if (!ret) {
- setError(QFile::CopyError, error.toString());
- }
- return ret;
-}
-
-bool QFSFileEngine::renameOverwrite(const QString &newName)
-{
- Q_D(QFSFileEngine);
- QSystemError error;
- bool ret = QFileSystemEngine::renameOverwriteFile(d->fileEntry, QFileSystemEntry(newName), error);
-
- if (!ret)
- setError(QFile::RenameError, error.toString());
-
- return ret;
-}
-
-bool QFSFileEngine::rename(const QString &newName)
-{
- Q_D(QFSFileEngine);
- QSystemError error;
- bool ret = QFileSystemEngine::renameFile(d->fileEntry, QFileSystemEntry(newName), error);
-
- if (!ret) {
- setError(QFile::RenameError, error.toString());
- }
-
- return ret;
-}
-
bool QFSFileEngine::link(const QString &newName)
{
Q_D(QFSFileEngine);
@@ -368,45 +320,16 @@ qint64 QFSFileEnginePrivate::nativeSize() const
return sizeFdFh();
}
-bool QFSFileEngine::mkdir(const QString &name, bool createParentDirectories) const
-{
- return QFileSystemEngine::createDirectory(QFileSystemEntry(name), createParentDirectories);
-}
-
-bool QFSFileEngine::rmdir(const QString &name, bool recurseParentDirectories) const
-{
- return QFileSystemEngine::removeDirectory(QFileSystemEntry(name), recurseParentDirectories);
-}
-
bool QFSFileEngine::caseSensitive() const
{
return true;
}
-bool QFSFileEngine::setCurrentPath(const QString &path)
-{
- return QFileSystemEngine::setCurrentPath(QFileSystemEntry(path));
-}
-
QString QFSFileEngine::currentPath(const QString &)
{
return QFileSystemEngine::currentPath().filePath();
}
-QString QFSFileEngine::homePath()
-{
- return QFileSystemEngine::homePath();
-}
-
-QString QFSFileEngine::rootPath()
-{
- return QFileSystemEngine::rootPath();
-}
-
-QString QFSFileEngine::tempPath()
-{
- return QFileSystemEngine::tempPath();
-}
QFileInfoList QFSFileEngine::drives()
{
diff --git a/src/corelib/io/qfsfileengine_win.cpp b/src/corelib/io/qfsfileengine_win.cpp
index 19cc3e6402..dd4882a2bc 100644
--- a/src/corelib/io/qfsfileengine_win.cpp
+++ b/src/corelib/io/qfsfileengine_win.cpp
@@ -443,66 +443,11 @@ bool QFSFileEnginePrivate::nativeIsSequential() const
#endif
}
-bool QFSFileEngine::remove()
-{
- Q_D(QFSFileEngine);
- QSystemError error;
- bool ret = QFileSystemEngine::removeFile(d->fileEntry, error);
- if (!ret)
- setError(QFile::RemoveError, error.toString());
- return ret;
-}
-
-bool QFSFileEngine::copy(const QString &copyName)
-{
- Q_D(QFSFileEngine);
- QSystemError error;
- bool ret = QFileSystemEngine::copyFile(d->fileEntry, QFileSystemEntry(copyName), error);
- if (!ret)
- setError(QFile::CopyError, error.toString());
- return ret;
-}
-
-bool QFSFileEngine::rename(const QString &newName)
-{
- Q_D(QFSFileEngine);
- QSystemError error;
- bool ret = QFileSystemEngine::renameFile(d->fileEntry, QFileSystemEntry(newName), error);
- if (!ret)
- setError(QFile::RenameError, error.toString());
- return ret;
-}
-
-bool QFSFileEngine::renameOverwrite(const QString &newName)
-{
- Q_D(QFSFileEngine);
- QSystemError error;
- bool ret = QFileSystemEngine::renameOverwriteFile(d->fileEntry, QFileSystemEntry(newName), error);
- if (!ret)
- setError(QFile::RenameError, error.toString());
- return ret;
-}
-
-bool QFSFileEngine::mkdir(const QString &name, bool createParentDirectories) const
-{
- return QFileSystemEngine::createDirectory(QFileSystemEntry(name), createParentDirectories);
-}
-
-bool QFSFileEngine::rmdir(const QString &name, bool recurseParentDirectories) const
-{
- return QFileSystemEngine::removeDirectory(QFileSystemEntry(name), recurseParentDirectories);
-}
-
bool QFSFileEngine::caseSensitive() const
{
return false;
}
-bool QFSFileEngine::setCurrentPath(const QString &path)
-{
- return QFileSystemEngine::setCurrentPath(QFileSystemEntry(path));
-}
-
QString QFSFileEngine::currentPath(const QString &fileName)
{
#if !defined(Q_OS_WINRT)
@@ -530,21 +475,6 @@ QString QFSFileEngine::currentPath(const QString &fileName)
#endif // Q_OS_WINRT
}
-QString QFSFileEngine::homePath()
-{
- return QFileSystemEngine::homePath();
-}
-
-QString QFSFileEngine::rootPath()
-{
- return QFileSystemEngine::rootPath();
-}
-
-QString QFSFileEngine::tempPath()
-{
- return QFileSystemEngine::tempPath();
-}
-
#if !defined(Q_OS_WINRT)
// cf QStorageInfo::isReady
static inline bool isDriveReady(const wchar_t *path)
@@ -661,14 +591,14 @@ QAbstractFileEngine::FileFlags QFSFileEngine::fileFlags(QAbstractFileEngine::Fil
if (type & Refresh)
d->metaData.clear();
- QAbstractFileEngine::FileFlags ret = 0;
+ QAbstractFileEngine::FileFlags ret;
if (type & FlagsMask)
ret |= LocalDiskFlag;
bool exists;
{
- QFileSystemMetaData::MetaDataFlags queryFlags = 0;
+ QFileSystemMetaData::MetaDataFlags queryFlags;
queryFlags |= QFileSystemMetaData::MetaDataFlags(uint(type))
& QFileSystemMetaData::Permissions;
diff --git a/src/corelib/io/qiodevice.cpp b/src/corelib/io/qiodevice.cpp
index e26508e631..b89cab5e3c 100644
--- a/src/corelib/io/qiodevice.cpp
+++ b/src/corelib/io/qiodevice.cpp
@@ -461,7 +461,7 @@ QIODevice::QIODevice(QIODevicePrivate &dd)
*/
QIODevice::QIODevice()
- : QObject(*new QIODevicePrivate, 0)
+ : QObject(*new QIODevicePrivate, nullptr)
{
#if defined QIODEVICE_DEBUG
QFile *file = qobject_cast<QFile *>(this);
diff --git a/src/corelib/io/qnoncontiguousbytedevice.cpp b/src/corelib/io/qnoncontiguousbytedevice.cpp
index d1806aa12b..df0197e8eb 100644
--- a/src/corelib/io/qnoncontiguousbytedevice.cpp
+++ b/src/corelib/io/qnoncontiguousbytedevice.cpp
@@ -127,7 +127,7 @@ QT_BEGIN_NAMESPACE
\internal
*/
-QNonContiguousByteDevice::QNonContiguousByteDevice() : QObject((QObject*)0)
+QNonContiguousByteDevice::QNonContiguousByteDevice() : QObject((QObject*)nullptr)
{
}
@@ -188,7 +188,7 @@ const char* QNonContiguousByteDeviceByteArrayImpl::readPointer(qint64 maximumLen
{
if (atEnd()) {
len = -1;
- return 0;
+ return nullptr;
}
if (maximumLength != -1)
@@ -241,7 +241,7 @@ const char* QNonContiguousByteDeviceRingBufferImpl::readPointer(qint64 maximumLe
{
if (atEnd()) {
len = -1;
- return 0;
+ return nullptr;
}
const char *returnValue = ringBuffer->readPointerAtPosition(currentPosition, len);
@@ -282,7 +282,7 @@ qint64 QNonContiguousByteDeviceRingBufferImpl::size() const
QNonContiguousByteDeviceIoDeviceImpl::QNonContiguousByteDeviceIoDeviceImpl(QIODevice *d)
: QNonContiguousByteDevice(),
- currentReadBuffer(0), currentReadBufferSize(16*1024),
+ currentReadBuffer(nullptr), currentReadBufferSize(16*1024),
currentReadBufferAmount(0), currentReadBufferPosition(0), totalAdvancements(0),
eof(false)
{
@@ -301,10 +301,10 @@ const char* QNonContiguousByteDeviceIoDeviceImpl::readPointer(qint64 maximumLeng
{
if (eof == true) {
len = -1;
- return 0;
+ return nullptr;
}
- if (currentReadBuffer == 0)
+ if (currentReadBuffer == nullptr)
currentReadBuffer = new QByteArray(currentReadBufferSize, '\0'); // lazy alloc
if (maximumLength == -1)
@@ -323,7 +323,7 @@ const char* QNonContiguousByteDeviceIoDeviceImpl::readPointer(qint64 maximumLeng
// size was unknown before, emit a readProgress with the final size
if (size() == -1)
emit readProgress(totalAdvancements, totalAdvancements);
- return 0;
+ return nullptr;
}
currentReadBufferAmount = haveRead;
@@ -349,7 +349,7 @@ bool QNonContiguousByteDeviceIoDeviceImpl::advanceReadPointer(qint64 amount)
if (currentReadBufferPosition > currentReadBufferAmount) {
qint64 i = currentReadBufferPosition - currentReadBufferAmount;
while (i > 0) {
- if (device->getChar(0) == false) {
+ if (device->getChar(nullptr) == false) {
emit readProgress(totalAdvancements - i, size());
return false; // ### FIXME handle eof
}
@@ -377,7 +377,7 @@ bool QNonContiguousByteDeviceIoDeviceImpl::reset()
totalAdvancements = 0; //reset the progress counter
if (currentReadBuffer) {
delete currentReadBuffer;
- currentReadBuffer = 0;
+ currentReadBuffer = nullptr;
}
currentReadBufferAmount = 0;
currentReadBufferPosition = 0;
@@ -405,7 +405,7 @@ qint64 QNonContiguousByteDeviceIoDeviceImpl::pos() const
return device->pos();
}
-QByteDeviceWrappingIoDevice::QByteDeviceWrappingIoDevice(QNonContiguousByteDevice *bd) : QIODevice((QObject*)0)
+QByteDeviceWrappingIoDevice::QByteDeviceWrappingIoDevice(QNonContiguousByteDevice *bd) : QIODevice((QObject*)nullptr)
{
byteDevice = bd;
connect(bd, SIGNAL(readyRead()), SIGNAL(readyRead()));
diff --git a/src/corelib/io/qprocess.cpp b/src/corelib/io/qprocess.cpp
index 3a77242d7c..816026a36c 100644
--- a/src/corelib/io/qprocess.cpp
+++ b/src/corelib/io/qprocess.cpp
@@ -216,7 +216,7 @@ void QProcessEnvironmentPrivate::insert(const QProcessEnvironmentPrivate &other)
environment variables to be removed.
*/
QProcessEnvironment::QProcessEnvironment()
- : d(0)
+ : d(nullptr)
{
}
@@ -436,18 +436,18 @@ void QProcessPrivate::Channel::clear()
case PipeSource:
Q_ASSERT(process);
process->stdinChannel.type = Normal;
- process->stdinChannel.process = 0;
+ process->stdinChannel.process = nullptr;
break;
case PipeSink:
Q_ASSERT(process);
process->stdoutChannel.type = Normal;
- process->stdoutChannel.process = 0;
+ process->stdoutChannel.process = nullptr;
break;
}
type = Normal;
file.clear();
- process = 0;
+ process = nullptr;
}
/*!
@@ -869,8 +869,8 @@ QProcessPrivate::QProcessPrivate()
sequenceNumber = 0;
exitCode = 0;
exitStatus = QProcess::NormalExit;
- startupSocketNotifier = 0;
- deathNotifier = 0;
+ startupSocketNotifier = nullptr;
+ deathNotifier = nullptr;
childStartedPipe[0] = INVALID_Q_PIPE;
childStartedPipe[1] = INVALID_Q_PIPE;
forkfd = -1;
@@ -924,23 +924,23 @@ void QProcessPrivate::cleanup()
if (stdoutChannel.notifier) {
delete stdoutChannel.notifier;
- stdoutChannel.notifier = 0;
+ stdoutChannel.notifier = nullptr;
}
if (stderrChannel.notifier) {
delete stderrChannel.notifier;
- stderrChannel.notifier = 0;
+ stderrChannel.notifier = nullptr;
}
if (stdinChannel.notifier) {
delete stdinChannel.notifier;
- stdinChannel.notifier = 0;
+ stdinChannel.notifier = nullptr;
}
if (startupSocketNotifier) {
delete startupSocketNotifier;
- startupSocketNotifier = 0;
+ startupSocketNotifier = nullptr;
}
if (deathNotifier) {
delete deathNotifier;
- deathNotifier = 0;
+ deathNotifier = nullptr;
}
closeChannel(&stdoutChannel);
closeChannel(&stderrChannel);
@@ -1229,7 +1229,7 @@ void QProcessPrivate::closeWriteChannel()
#endif
if (stdinChannel.notifier) {
delete stdinChannel.notifier;
- stdinChannel.notifier = 0;
+ stdinChannel.notifier = nullptr;
}
#ifdef Q_OS_WIN
// ### Find a better fix, feeding the process little by little
@@ -2615,7 +2615,7 @@ QT_END_INCLUDE_NAMESPACE
QStringList QProcess::systemEnvironment()
{
QStringList tmp;
- char *entry = 0;
+ char *entry = nullptr;
int count = 0;
while ((entry = environ[count++]))
tmp << QString::fromLocal8Bit(entry);
diff --git a/src/corelib/io/qprocess_unix.cpp b/src/corelib/io/qprocess_unix.cpp
index 0c80daa024..9cd3bd531b 100644
--- a/src/corelib/io/qprocess_unix.cpp
+++ b/src/corelib/io/qprocess_unix.cpp
@@ -246,7 +246,7 @@ bool QProcessPrivate::openChannel(Channel &channel)
return false;
// create the socket notifiers
- if (threadData->hasEventDispatcher()) {
+ if (threadData.loadRelaxed()->hasEventDispatcher()) {
if (&channel == &stdinChannel) {
channel.notifier = new QSocketNotifier(channel.pipe[1],
QSocketNotifier::Write, q);
@@ -338,11 +338,11 @@ static char **_q_dupEnvironment(const QProcessEnvironmentPrivate::Map &environme
{
*envc = 0;
if (environment.isEmpty())
- return 0;
+ return nullptr;
char **envp = new char *[environment.count() + 2];
- envp[environment.count()] = 0;
- envp[environment.count() + 1] = 0;
+ envp[environment.count()] = nullptr;
+ envp[environment.count() + 1] = nullptr;
auto it = environment.constBegin();
const auto end = environment.constEnd();
@@ -377,7 +377,7 @@ void QProcessPrivate::startProcess()
return;
}
- if (threadData->hasEventDispatcher()) {
+ if (threadData.loadRelaxed()->hasEventDispatcher()) {
startupSocketNotifier = new QSocketNotifier(childStartedPipe[0],
QSocketNotifier::Read, q);
QObject::connect(startupSocketNotifier, SIGNAL(activated(int)),
@@ -390,7 +390,7 @@ void QProcessPrivate::startProcess()
// Create argument list with right number of elements, and set the final
// one to 0.
char **argv = new char *[arguments.count() + 2];
- argv[arguments.count() + 1] = 0;
+ argv[arguments.count() + 1] = nullptr;
// Encode the program name.
QByteArray encodedProgramName = QFile::encodeName(program);
@@ -437,13 +437,13 @@ void QProcessPrivate::startProcess()
// Duplicate the environment.
int envc = 0;
- char **envp = 0;
+ char **envp = nullptr;
if (environment.d.constData()) {
envp = _q_dupEnvironment(environment.d.constData()->vars, &envc);
}
// Encode the working directory if it's non-empty, otherwise just pass 0.
- const char *workingDirPtr = 0;
+ const char *workingDirPtr = nullptr;
QByteArray encodedWorkingDirectory;
if (!workingDirectory.isEmpty()) {
encodedWorkingDirectory = QFile::encodeName(workingDirectory);
@@ -517,7 +517,7 @@ void QProcessPrivate::startProcess()
if (stderrChannel.pipe[0] != -1)
::fcntl(stderrChannel.pipe[0], F_SETFL, ::fcntl(stderrChannel.pipe[0], F_GETFL) | O_NONBLOCK);
- if (threadData->eventDispatcher.loadAcquire()) {
+ if (threadData.loadRelaxed()->eventDispatcher.loadAcquire()) {
deathNotifier = new QSocketNotifier(forkfd, QSocketNotifier::Read, q);
QObject::connect(deathNotifier, SIGNAL(activated(int)),
q, SLOT(_q_processDied()));
@@ -596,7 +596,7 @@ bool QProcessPrivate::processStarted(QString *errorMessage)
if (startupSocketNotifier) {
startupSocketNotifier->setEnabled(false);
startupSocketNotifier->deleteLater();
- startupSocketNotifier = 0;
+ startupSocketNotifier = nullptr;
}
qt_safe_close(childStartedPipe[0]);
childStartedPipe[0] = -1;
@@ -889,7 +889,7 @@ bool QProcessPrivate::waitForDeadChild()
crashed = info.code != CLD_EXITED;
delete deathNotifier;
- deathNotifier = 0;
+ deathNotifier = nullptr;
EINTR_LOOP(ret, forkfd_close(forkfd));
forkfd = -1; // Child is dead, don't try to kill it anymore
@@ -935,7 +935,7 @@ bool QProcessPrivate::startDetached(qint64 *pid)
struct sigaction noaction;
memset(&noaction, 0, sizeof(noaction));
noaction.sa_handler = SIG_IGN;
- ::sigaction(SIGPIPE, &noaction, 0);
+ ::sigaction(SIGPIPE, &noaction, nullptr);
::setsid();
@@ -964,7 +964,7 @@ bool QProcessPrivate::startDetached(qint64 *pid)
char **argv = new char *[arguments.size() + 2];
for (int i = 0; i < arguments.size(); ++i)
argv[i + 1] = ::strdup(QFile::encodeName(arguments.at(i)).constData());
- argv[arguments.size() + 1] = 0;
+ argv[arguments.size() + 1] = nullptr;
// Duplicate the environment.
int envc = 0;
@@ -991,7 +991,7 @@ bool QProcessPrivate::startDetached(qint64 *pid)
struct sigaction noaction;
memset(&noaction, 0, sizeof(noaction));
noaction.sa_handler = SIG_IGN;
- ::sigaction(SIGPIPE, &noaction, 0);
+ ::sigaction(SIGPIPE, &noaction, nullptr);
// '\1' means execv failed
char c = '\1';
@@ -1002,7 +1002,7 @@ bool QProcessPrivate::startDetached(qint64 *pid)
struct sigaction noaction;
memset(&noaction, 0, sizeof(noaction));
noaction.sa_handler = SIG_IGN;
- ::sigaction(SIGPIPE, &noaction, 0);
+ ::sigaction(SIGPIPE, &noaction, nullptr);
// '\2' means internal error
char c = '\2';
diff --git a/src/corelib/io/qprocess_win.cpp b/src/corelib/io/qprocess_win.cpp
index 3ba86063e3..05af5a5aee 100644
--- a/src/corelib/io/qprocess_win.cpp
+++ b/src/corelib/io/qprocess_win.cpp
@@ -590,7 +590,7 @@ void QProcessPrivate::startProcess()
if (!pid)
return;
- if (threadData->hasEventDispatcher()) {
+ if (threadData.loadRelaxed()->hasEventDispatcher()) {
processFinishedNotifier = new QWinEventNotifier(pid->hProcess, q);
QObject::connect(processFinishedNotifier, SIGNAL(activated(HANDLE)), q, SLOT(_q_processDied()));
processFinishedNotifier->setEnabled(true);
diff --git a/src/corelib/io/qresource.cpp b/src/corelib/io/qresource.cpp
index 22c22ce711..3664a63050 100644
--- a/src/corelib/io/qresource.cpp
+++ b/src/corelib/io/qresource.cpp
@@ -1492,7 +1492,7 @@ bool QResourceFileEngine::isSequential() const
QAbstractFileEngine::FileFlags QResourceFileEngine::fileFlags(QAbstractFileEngine::FileFlags type) const
{
Q_D(const QResourceFileEngine);
- QAbstractFileEngine::FileFlags ret = 0;
+ QAbstractFileEngine::FileFlags ret;
if(!d->resource.isValid())
return ret;
@@ -1584,7 +1584,7 @@ QAbstractFileEngine::Iterator *QResourceFileEngine::beginEntryList(QDir::Filters
*/
QAbstractFileEngine::Iterator *QResourceFileEngine::endEntryList()
{
- return 0;
+ return nullptr;
}
bool QResourceFileEngine::extension(Extension extension, const ExtensionOption *option, ExtensionReturn *output)
@@ -1594,7 +1594,7 @@ bool QResourceFileEngine::extension(Extension extension, const ExtensionOption *
const MapExtensionOption *options = (const MapExtensionOption*)(option);
MapExtensionReturn *returnValue = static_cast<MapExtensionReturn*>(output);
returnValue->address = d->map(options->offset, options->size, options->flags);
- return (returnValue->address != 0);
+ return (returnValue->address != nullptr);
}
if (extension == UnMapExtension) {
const UnMapExtensionOption *options = (const UnMapExtensionOption*)option;
@@ -1623,7 +1623,7 @@ uchar *QResourceFileEnginePrivate::map(qint64 offset, qint64 size, QFile::Memory
if (offset < 0 || size <= 0 || !resource.isValid() ||
add_overflow(offset, size, &end) || end > max) {
q->setError(QFile::UnspecifiedError, QString());
- return 0;
+ return nullptr;
}
const uchar *address = resource.data();
diff --git a/src/corelib/io/qsavefile.cpp b/src/corelib/io/qsavefile.cpp
index 0a884a7df9..067ccda3df 100644
--- a/src/corelib/io/qsavefile.cpp
+++ b/src/corelib/io/qsavefile.cpp
@@ -116,7 +116,7 @@ QSaveFile::QSaveFile(const QString &name)
Constructs a new file object to represent the file with the given \a name.
*/
QSaveFile::QSaveFile(const QString &name)
- : QFileDevice(*new QSaveFilePrivate, 0)
+ : QFileDevice(*new QSaveFilePrivate, nullptr)
{
Q_D(QSaveFile);
d->fileName = name;
diff --git a/src/corelib/io/qsettings.cpp b/src/corelib/io/qsettings.cpp
index fc7122d904..9fc45e307d 100644
--- a/src/corelib/io/qsettings.cpp
+++ b/src/corelib/io/qsettings.cpp
@@ -76,10 +76,6 @@
# include <ioLib.h>
#endif
-#ifdef Q_OS_WASM
-#include <emscripten.h>
-#endif
-
#include <algorithm>
#include <stdlib.h>
@@ -210,7 +206,7 @@ QConfFile *QConfFile::fromName(const QString &fileName, bool _userPerms)
ConfFileHash *usedHash = usedHashFunc();
ConfFileCache *unusedCache = unusedCacheFunc();
- QConfFile *confFile = 0;
+ QConfFile *confFile = nullptr;
const auto locker = qt_scoped_lock(settingsGlobalMutex);
if (!(confFile = usedHash->value(absPath))) {
@@ -234,7 +230,7 @@ void QConfFile::clearCache()
// QSettingsPrivate
QSettingsPrivate::QSettingsPrivate(QSettings::Format format)
- : format(format), scope(QSettings::UserScope /* nothing better to put */), iniCodec(0), fallbacks(true),
+ : format(format), scope(QSettings::UserScope /* nothing better to put */), iniCodec(nullptr), fallbacks(true),
pendingChanges(false), status(QSettings::NoError)
{
}
@@ -242,7 +238,7 @@ QSettingsPrivate::QSettingsPrivate(QSettings::Format format)
QSettingsPrivate::QSettingsPrivate(QSettings::Format format, QSettings::Scope scope,
const QString &organization, const QString &application)
: format(format), scope(scope), organizationName(organization), applicationName(application),
- iniCodec(0), fallbacks(true), pendingChanges(false), status(QSettings::NoError)
+ iniCodec(nullptr), fallbacks(true), pendingChanges(false), status(QSettings::NoError)
{
}
@@ -295,7 +291,7 @@ after_loop:
// see also qsettings_win.cpp, qsettings_winrt.cpp and qsettings_mac.cpp
-#if !defined(Q_OS_WIN) && !defined(Q_OS_MAC)
+#if !defined(Q_OS_WIN) && !defined(Q_OS_MAC) && !defined(Q_OS_WASM)
QSettingsPrivate *QSettingsPrivate::create(QSettings::Format format, QSettings::Scope scope,
const QString &organization, const QString &application)
{
@@ -928,8 +924,8 @@ QStringList QSettingsPrivate::splitArgs(const QString &s, int idx)
void QConfFileSettingsPrivate::initFormat()
{
extension = (format == QSettings::NativeFormat) ? QLatin1String(".conf") : QLatin1String(".ini");
- readFunc = 0;
- writeFunc = 0;
+ readFunc = nullptr;
+ writeFunc = nullptr;
#if defined(Q_OS_MAC)
caseSensitivity = (format == QSettings::NativeFormat) ? Qt::CaseSensitive : IniCaseSensitivity;
#else
@@ -1185,7 +1181,9 @@ QConfFileSettingsPrivate::QConfFileSettingsPrivate(QSettings::Format format,
confFiles.append(QConfFile::fromName(systemPath.path + orgFile, false));
}
+#ifndef Q_OS_WASM // wasm needs to delay access until after file sync
initAccess();
+#endif
}
QConfFileSettingsPrivate::QConfFileSettingsPrivate(const QString &fileName,
@@ -1548,13 +1546,6 @@ void QConfFileSettingsPrivate::syncConfFile(QConfFile *confFile)
perms |= QFile::ReadGroup | QFile::ReadOther;
QFile(confFile->name).setPermissions(perms);
}
-#ifdef Q_OS_WASM
- EM_ASM(
- // Sync sandbox filesystem to persistent database filesystem. See QTBUG-70002
- FS.syncfs(false, function(err) {
- });
- );
-#endif
} else {
setStatus(QSettings::AccessError);
}
@@ -3347,7 +3338,7 @@ bool QSettings::contains(const QString &key) const
{
Q_D(const QSettings);
QString k = d->actualKey(key);
- return d->get(k, 0);
+ return d->get(k, nullptr);
}
/*!
diff --git a/src/corelib/io/qsettings_p.h b/src/corelib/io/qsettings_p.h
index d18c96a06c..c30f099a72 100644
--- a/src/corelib/io/qsettings_p.h
+++ b/src/corelib/io/qsettings_p.h
@@ -57,6 +57,10 @@
#include "QtCore/qiodevice.h"
#include "QtCore/qstack.h"
#include "QtCore/qstringlist.h"
+
+#include <QtCore/qvariant.h>
+#include "qsettings.h"
+
#ifndef QT_NO_QOBJECT
#include "private/qobject_p.h"
#endif
@@ -253,6 +257,10 @@ protected:
mutable QSettings::Status status;
};
+#ifdef Q_OS_WASM
+class QWasmSettingsPrivate;
+#endif
+
class QConfFileSettingsPrivate : public QSettingsPrivate
{
public:
@@ -281,7 +289,7 @@ public:
private:
void initFormat();
- void initAccess();
+ virtual void initAccess();
void syncConfFile(QConfFile *confFile);
bool writeIniFile(QIODevice &device, const ParsedSettingsMap &map);
#ifdef Q_OS_MAC
@@ -297,6 +305,9 @@ private:
QString extension;
Qt::CaseSensitivity caseSensitivity;
int nextPosition;
+#ifdef Q_OS_WASM
+ friend class QWasmSettingsPrivate;
+#endif
};
QT_END_NAMESPACE
diff --git a/src/corelib/io/qsettings_wasm.cpp b/src/corelib/io/qsettings_wasm.cpp
new file mode 100644
index 0000000000..8d8f4b505c
--- /dev/null
+++ b/src/corelib/io/qsettings_wasm.cpp
@@ -0,0 +1,259 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtCore module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qsettings.h"
+#ifndef QT_NO_SETTINGS
+
+#include "qsettings_p.h"
+#ifndef QT_NO_QOBJECT
+#include "qcoreapplication.h"
+#include <QFile>
+#endif // QT_NO_QOBJECT
+#include <QDebug>
+
+#include <QFileInfo>
+#include <QDir>
+#include <emscripten.h>
+
+QT_BEGIN_NAMESPACE
+
+static bool isReadReady = false;
+
+class QWasmSettingsPrivate : public QConfFileSettingsPrivate
+{
+public:
+ QWasmSettingsPrivate(QSettings::Scope scope, const QString &organization,
+ const QString &application);
+ ~QWasmSettingsPrivate();
+
+ bool get(const QString &key, QVariant *value) const override;
+ QStringList children(const QString &prefix, ChildSpec spec) const override;
+ void clear() override;
+ void sync() override;
+ void flush() override;
+ bool isWritable() const override;
+
+ void syncToLocal(const char *data, int size);
+ void loadLocal(const QByteArray &filename);
+ void setReady();
+ void initAccess() override;
+
+private:
+ QString databaseName;
+ QString id;
+};
+
+static void QWasmSettingsPrivate_onLoad(void *userData, void *dataPtr, int size)
+{
+ QWasmSettingsPrivate *wasm = reinterpret_cast<QWasmSettingsPrivate *>(userData);
+
+ QFile file(wasm->fileName());
+ QFileInfo fileInfo(wasm->fileName());
+ QDir dir(fileInfo.path());
+ if (!dir.exists())
+ dir.mkpath(fileInfo.path());
+
+ if (file.open(QFile::WriteOnly)) {
+ file.write(reinterpret_cast<char *>(dataPtr), size);
+ file.close();
+ wasm->setReady();
+ }
+}
+
+static void QWasmSettingsPrivate_onError(void *userData)
+{
+ QWasmSettingsPrivate *wasm = reinterpret_cast<QWasmSettingsPrivate *>(userData);
+ if (wasm)
+ wasm->setStatus(QSettings::AccessError);
+}
+
+static void QWasmSettingsPrivate_onStore(void *userData)
+{
+ QWasmSettingsPrivate *wasm = reinterpret_cast<QWasmSettingsPrivate *>(userData);
+ if (wasm)
+ wasm->setStatus(QSettings::NoError);
+}
+
+static void QWasmSettingsPrivate_onCheck(void *userData, int exists)
+{
+ QWasmSettingsPrivate *wasm = reinterpret_cast<QWasmSettingsPrivate *>(userData);
+ if (wasm) {
+ if (exists)
+ wasm->loadLocal(wasm->fileName().toLocal8Bit());
+ else
+ wasm->setReady();
+ }
+}
+
+QSettingsPrivate *QSettingsPrivate::create(QSettings::Format format,
+ QSettings::Scope scope,
+ const QString &organization,
+ const QString &application)
+{
+ Q_UNUSED(format)
+ if (organization == QLatin1String("Qt"))
+ {
+ QString organizationDomain = QCoreApplication::organizationDomain();
+ QString applicationName = QCoreApplication::applicationName();
+
+ QSettingsPrivate *newSettings;
+ newSettings = new QWasmSettingsPrivate(scope, organizationDomain, applicationName);
+
+ newSettings->beginGroupOrArray(QSettingsGroup(normalizedKey(organization)));
+ if (!application.isEmpty())
+ newSettings->beginGroupOrArray(QSettingsGroup(normalizedKey(application)));
+
+ return newSettings;
+ }
+ return new QWasmSettingsPrivate(scope, organization, application);
+}
+
+QWasmSettingsPrivate::QWasmSettingsPrivate(QSettings::Scope scope, const QString &organization,
+ const QString &application)
+ : QConfFileSettingsPrivate(QSettings::NativeFormat, scope, organization, application)
+{
+ setStatus(QSettings::AccessError); // access error until sandbox gets loaded
+ databaseName = organization;
+ id = application;
+
+ emscripten_idb_async_exists("/home/web_user",
+ fileName().toLocal8Bit(),
+ reinterpret_cast<void*>(this),
+ QWasmSettingsPrivate_onCheck,
+ QWasmSettingsPrivate_onError);
+}
+
+QWasmSettingsPrivate::~QWasmSettingsPrivate()
+{
+}
+
+ void QWasmSettingsPrivate::initAccess()
+{
+ if (isReadReady)
+ QConfFileSettingsPrivate::initAccess();
+}
+
+bool QWasmSettingsPrivate::get(const QString &key, QVariant *value) const
+{
+ if (isReadReady)
+ return QConfFileSettingsPrivate::get(key, value);
+
+ return false;
+}
+
+QStringList QWasmSettingsPrivate::children(const QString &prefix, ChildSpec spec) const
+{
+ return QConfFileSettingsPrivate::children(prefix, spec);
+}
+
+void QWasmSettingsPrivate::clear()
+{
+ QConfFileSettingsPrivate::clear();
+ emscripten_idb_async_delete("/home/web_user",
+ fileName().toLocal8Bit(),
+ reinterpret_cast<void*>(this),
+ QWasmSettingsPrivate_onStore,
+ QWasmSettingsPrivate_onError);
+}
+
+void QWasmSettingsPrivate::sync()
+{
+ QConfFileSettingsPrivate::sync();
+
+ QFile file(fileName());
+ if (file.open(QFile::ReadOnly)) {
+ QByteArray dataPointer = file.readAll();
+
+ emscripten_idb_async_store("/home/web_user",
+ fileName().toLocal8Bit(),
+ reinterpret_cast<void *>(dataPointer.data()),
+ dataPointer.length(),
+ reinterpret_cast<void*>(this),
+ QWasmSettingsPrivate_onStore,
+ QWasmSettingsPrivate_onError);
+ }
+}
+
+void QWasmSettingsPrivate::flush()
+{
+ sync();
+}
+
+bool QWasmSettingsPrivate::isWritable() const
+{
+ return isReadReady && QConfFileSettingsPrivate::isWritable();
+}
+
+void QWasmSettingsPrivate::syncToLocal(const char *data, int size)
+{
+ QFile file(fileName());
+
+ if (file.open(QFile::WriteOnly)) {
+ file.write(data, size + 1);
+ QByteArray data = file.readAll();
+
+ emscripten_idb_async_store("/home/web_user",
+ fileName().toLocal8Bit(),
+ reinterpret_cast<void *>(data.data()),
+ data.length(),
+ reinterpret_cast<void*>(this),
+ QWasmSettingsPrivate_onStore,
+ QWasmSettingsPrivate_onError);
+ setReady();
+ }
+}
+
+void QWasmSettingsPrivate::loadLocal(const QByteArray &filename)
+{
+ emscripten_idb_async_load("/home/web_user",
+ filename.data(),
+ reinterpret_cast<void*>(this),
+ QWasmSettingsPrivate_onLoad,
+ QWasmSettingsPrivate_onError);
+}
+
+void QWasmSettingsPrivate::setReady()
+{
+ isReadReady = true;
+ setStatus(QSettings::NoError);
+ QConfFileSettingsPrivate::initAccess();
+}
+
+QT_END_NAMESPACE
+#endif // QT_NO_SETTINGS
diff --git a/src/corelib/io/qurl.cpp b/src/corelib/io/qurl.cpp
index 878e007fb0..659552b72f 100644
--- a/src/corelib/io/qurl.cpp
+++ b/src/corelib/io/qurl.cpp
@@ -823,7 +823,7 @@ recodeFromUser(const QString &input, const ushort *actions, int from, int to)
QString output;
const QChar *begin = input.constData() + from;
const QChar *end = input.constData() + to;
- if (qt_urlRecode(output, begin, end, nullptr, actions))
+ if (qt_urlRecode(output, begin, end, {}, actions))
return output;
return input.mid(from, to - from);
diff --git a/src/corelib/itemmodels/qabstractitemmodel.cpp b/src/corelib/itemmodels/qabstractitemmodel.cpp
index 6e97c2fd39..46ac703615 100644
--- a/src/corelib/itemmodels/qabstractitemmodel.cpp
+++ b/src/corelib/itemmodels/qabstractitemmodel.cpp
@@ -46,6 +46,7 @@
#include <qdebug.h>
#include <qvector.h>
#include <qregexp.h>
+#include <qregularexpression.h>
#include <qstack.h>
#include <qbitarray.h>
#include <qdatetime.h>
@@ -60,7 +61,7 @@ Q_LOGGING_CATEGORY(lcCheckIndex, "qt.core.qabstractitemmodel.checkindex")
QPersistentModelIndexData *QPersistentModelIndexData::create(const QModelIndex &index)
{
Q_ASSERT(index.isValid()); // we will _never_ insert an invalid index in the list
- QPersistentModelIndexData *d = 0;
+ QPersistentModelIndexData *d = nullptr;
QAbstractItemModel *model = const_cast<QAbstractItemModel *>(index.model());
QHash<QModelIndex, QPersistentModelIndexData *> &indexes = model->d_func()->persistent.indexes;
const auto it = indexes.constFind(index);
@@ -135,7 +136,7 @@ void QPersistentModelIndexData::destroy(QPersistentModelIndexData *data)
*/
QPersistentModelIndex::QPersistentModelIndex()
- : d(0)
+ : d(nullptr)
{
}
@@ -157,7 +158,7 @@ QPersistentModelIndex::QPersistentModelIndex(const QPersistentModelIndex &other)
*/
QPersistentModelIndex::QPersistentModelIndex(const QModelIndex &index)
- : d(0)
+ : d(nullptr)
{
if (index.isValid()) {
d = QPersistentModelIndexData::create(index);
@@ -175,7 +176,7 @@ QPersistentModelIndex::~QPersistentModelIndex()
{
if (d && !d->ref.deref()) {
QPersistentModelIndexData::destroy(d);
- d = 0;
+ d = nullptr;
}
}
@@ -256,7 +257,7 @@ QPersistentModelIndex &QPersistentModelIndex::operator=(const QModelIndex &other
d = QPersistentModelIndexData::create(other);
if (d) d->ref.ref();
} else {
- d = 0;
+ d = nullptr;
}
return *this;
}
@@ -343,7 +344,7 @@ void *QPersistentModelIndex::internalPointer() const
{
if (d)
return d->index.internalPointer();
- return 0;
+ return nullptr;
}
/*!
@@ -431,7 +432,7 @@ Qt::ItemFlags QPersistentModelIndex::flags() const
{
if (d)
return d->index.flags();
- return 0;
+ return { };
}
/*!
@@ -441,7 +442,7 @@ const QAbstractItemModel *QPersistentModelIndex::model() const
{
if (d)
return d->index.model();
- return 0;
+ return nullptr;
}
/*!
@@ -483,7 +484,7 @@ QDebug operator<<(QDebug dbg, const QPersistentModelIndex &idx)
class QEmptyItemModel : public QAbstractItemModel
{
public:
- explicit QEmptyItemModel(QObject *parent = 0) : QAbstractItemModel(parent) {}
+ explicit QEmptyItemModel(QObject *parent = nullptr) : QAbstractItemModel(parent) {}
QModelIndex index(int, int, const QModelIndex &) const override { return QModelIndex(); }
QModelIndex parent(const QModelIndex &) const override { return QModelIndex(); }
int rowCount(const QModelIndex &) const override { return 0; }
@@ -1949,10 +1950,10 @@ QStringList QAbstractItemModel::mimeTypes() const
QMimeData *QAbstractItemModel::mimeData(const QModelIndexList &indexes) const
{
if (indexes.count() <= 0)
- return 0;
+ return nullptr;
QStringList types = mimeTypes();
if (types.isEmpty())
- return 0;
+ return nullptr;
QMimeData *data = new QMimeData();
QString format = types.at(0);
QByteArray encoded;
@@ -2295,7 +2296,7 @@ Qt::ItemFlags QAbstractItemModel::flags(const QModelIndex &index) const
{
Q_D(const QAbstractItemModel);
if (!d->indexValid(index))
- return 0;
+ return { };
return Qt::ItemIsSelectable|Qt::ItemIsEnabled;
}
@@ -2358,6 +2359,7 @@ QModelIndexList QAbstractItemModel::match(const QModelIndex &start, int role,
bool wrap = flags & Qt::MatchWrap;
bool allHits = (hits == -1);
QString text; // only convert to a string if it is needed
+ QRegularExpression rx; // only create it if needed
const int column = start.column();
QModelIndex p = parent(start);
int from = start.row();
@@ -2374,17 +2376,39 @@ QModelIndexList QAbstractItemModel::match(const QModelIndex &start, int role,
if (matchType == Qt::MatchExactly) {
if (value == v)
result.append(idx);
- } else { // QString based matching
- if (text.isEmpty()) // lazy conversion
- text = value.toString();
+ } else { // QString or regular expression based matching
+ if (matchType == Qt::MatchRegularExpression) {
+ if (rx.pattern().isEmpty()) {
+ if (value.type() == QVariant::RegularExpression) {
+ rx = value.toRegularExpression();
+ } else {
+ rx.setPattern(value.toString());
+ if (cs == Qt::CaseInsensitive)
+ rx.setPatternOptions(QRegularExpression::CaseInsensitiveOption);
+ }
+ }
+ } else if (matchType == Qt::MatchWildcard) {
+ if (rx.pattern().isEmpty())
+ rx.setPattern(QRegularExpression::wildcardToRegularExpression(value.toString()));
+ if (cs == Qt::CaseInsensitive)
+ rx.setPatternOptions(QRegularExpression::CaseInsensitiveOption);
+ } else {
+ if (text.isEmpty()) // lazy conversion
+ text = value.toString();
+ }
+
QString t = v.toString();
switch (matchType) {
+#if QT_DEPRECATED_SINCE(5, 15)
case Qt::MatchRegExp:
if (QRegExp(text, cs).exactMatch(t))
result.append(idx);
break;
+#endif
+ case Qt::MatchRegularExpression:
+ Q_FALLTHROUGH();
case Qt::MatchWildcard:
- if (QRegExp(text, cs, QRegExp::Wildcard).exactMatch(t))
+ if (t.contains(rx))
result.append(idx);
break;
case Qt::MatchStartsWith:
diff --git a/src/corelib/itemmodels/qabstractproxymodel.cpp b/src/corelib/itemmodels/qabstractproxymodel.cpp
index c863406afd..87559cd6b2 100644
--- a/src/corelib/itemmodels/qabstractproxymodel.cpp
+++ b/src/corelib/itemmodels/qabstractproxymodel.cpp
@@ -159,7 +159,7 @@ QAbstractItemModel *QAbstractProxyModel::sourceModel() const
{
Q_D(const QAbstractProxyModel);
if (d->model == QAbstractItemModelPrivate::staticEmptyModel())
- return 0;
+ return nullptr;
return d->model;
}
diff --git a/src/corelib/itemmodels/qconcatenatetablesproxymodel.cpp b/src/corelib/itemmodels/qconcatenatetablesproxymodel.cpp
index 0319d215a1..3afa132483 100644
--- a/src/corelib/itemmodels/qconcatenatetablesproxymodel.cpp
+++ b/src/corelib/itemmodels/qconcatenatetablesproxymodel.cpp
@@ -497,7 +497,7 @@ void QConcatenateTablesProxyModel::removeSourceModel(QAbstractItemModel *sourceM
{
Q_D(QConcatenateTablesProxyModel);
Q_ASSERT(d->m_models.contains(sourceModel));
- disconnect(sourceModel, 0, this, 0);
+ disconnect(sourceModel, nullptr, this, nullptr);
const int rowsRemoved = sourceModel->rowCount();
const int rowsPrior = d->computeRowsPrior(sourceModel); // location of removed section
diff --git a/src/corelib/itemmodels/qitemselectionmodel.cpp b/src/corelib/itemmodels/qitemselectionmodel.cpp
index c93a4d15b9..f4402c88dc 100644
--- a/src/corelib/itemmodels/qitemselectionmodel.cpp
+++ b/src/corelib/itemmodels/qitemselectionmodel.cpp
@@ -656,7 +656,7 @@ void QItemSelectionModelPrivate::initModel(QAbstractItemModel *m)
SLOT(_q_layoutChanged(QList<QPersistentModelIndex>,QAbstractItemModel::LayoutChangeHint)) },
{ SIGNAL(modelReset()),
SLOT(reset()) },
- { 0, 0 }
+ { nullptr, nullptr }
};
if (model == m)
diff --git a/src/corelib/itemmodels/qitemselectionmodel.h b/src/corelib/itemmodels/qitemselectionmodel.h
index 3c3f9fb1ac..5820695592 100644
--- a/src/corelib/itemmodels/qitemselectionmodel.h
+++ b/src/corelib/itemmodels/qitemselectionmodel.h
@@ -171,11 +171,11 @@ public:
QModelIndex currentIndex() const;
Q_INVOKABLE bool isSelected(const QModelIndex &index) const;
- Q_INVOKABLE bool isRowSelected(int row, const QModelIndex &parent) const;
- Q_INVOKABLE bool isColumnSelected(int column, const QModelIndex &parent) const;
+ Q_INVOKABLE bool isRowSelected(int row, const QModelIndex &parent = QModelIndex()) const;
+ Q_INVOKABLE bool isColumnSelected(int column, const QModelIndex &parent = QModelIndex()) const;
- Q_INVOKABLE bool rowIntersectsSelection(int row, const QModelIndex &parent) const;
- Q_INVOKABLE bool columnIntersectsSelection(int column, const QModelIndex &parent) const;
+ Q_INVOKABLE bool rowIntersectsSelection(int row, const QModelIndex &parent = QModelIndex()) const;
+ Q_INVOKABLE bool columnIntersectsSelection(int column, const QModelIndex &parent = QModelIndex()) const;
bool hasSelection() const;
diff --git a/src/corelib/kernel/qbasictimer.cpp b/src/corelib/kernel/qbasictimer.cpp
index ea8f8e2c77..623ecb9b8b 100644
--- a/src/corelib/kernel/qbasictimer.cpp
+++ b/src/corelib/kernel/qbasictimer.cpp
@@ -216,13 +216,11 @@ void QBasicTimer::stop()
{
if (id) {
QAbstractEventDispatcher *eventDispatcher = QAbstractEventDispatcher::instance();
- if (eventDispatcher) {
- if (Q_UNLIKELY(!eventDispatcher->unregisterTimer(id))) {
- qWarning("QBasicTimer::stop: Failed. Possibly trying to stop from a different thread");
- return;
- }
- QAbstractEventDispatcherPrivate::releaseTimerId(id);
+ if (eventDispatcher && !eventDispatcher->unregisterTimer(id)) {
+ qWarning("QBasicTimer::stop: Failed. Possibly trying to stop from a different thread");
+ return;
}
+ QAbstractEventDispatcherPrivate::releaseTimerId(id);
}
id = 0;
}
diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp
index e25049f821..34f54d8f94 100644
--- a/src/corelib/kernel/qcoreapplication.cpp
+++ b/src/corelib/kernel/qcoreapplication.cpp
@@ -121,7 +121,6 @@
#endif
#ifdef Q_OS_WASM
-#include <emscripten.h>
#include <emscripten/val.h>
#endif
@@ -135,23 +134,6 @@
QT_BEGIN_NAMESPACE
-#ifndef QT_NO_QOBJECT
-class QMutexUnlocker
-{
-public:
- inline explicit QMutexUnlocker(QMutex *m)
- : mtx(m)
- { }
- inline ~QMutexUnlocker() { unlock(); }
- inline void unlock() { if (mtx) mtx->unlock(); mtx = 0; }
-
-private:
- Q_DISABLE_COPY(QMutexUnlocker)
-
- QMutex *mtx;
-};
-#endif
-
#if defined(Q_OS_WIN) || defined(Q_OS_MAC)
extern QString qAppFileName();
#endif
@@ -497,13 +479,6 @@ QCoreApplicationPrivate::QCoreApplicationPrivate(int &aargc, char **aargv, uint
QCoreApplicationPrivate::~QCoreApplicationPrivate()
{
-#ifdef Q_OS_WASM
- EM_ASM(
- // unmount persistent directory as IDBFS
- // see also QTBUG-70002
- FS.unmount('/home/web_user');
- );
-#endif
#ifndef QT_NO_QOBJECT
cleanupThreadData();
#endif
@@ -517,25 +492,27 @@ QCoreApplicationPrivate::~QCoreApplicationPrivate()
void QCoreApplicationPrivate::cleanupThreadData()
{
- if (threadData && !threadData_clean) {
+ auto thisThreadData = threadData.loadRelaxed();
+
+ if (thisThreadData && !threadData_clean) {
#if QT_CONFIG(thread)
- void *data = &threadData->tls;
+ void *data = &thisThreadData->tls;
QThreadStorageData::finish((void **)data);
#endif
// need to clear the state of the mainData, just in case a new QCoreApplication comes along.
- const auto locker = qt_scoped_lock(threadData->postEventList.mutex);
- for (int i = 0; i < threadData->postEventList.size(); ++i) {
- const QPostEvent &pe = threadData->postEventList.at(i);
+ const auto locker = qt_scoped_lock(thisThreadData->postEventList.mutex);
+ for (int i = 0; i < thisThreadData->postEventList.size(); ++i) {
+ const QPostEvent &pe = thisThreadData->postEventList.at(i);
if (pe.event) {
--pe.receiver->d_func()->postedEvents;
pe.event->posted = false;
delete pe.event;
}
}
- threadData->postEventList.clear();
- threadData->postEventList.recursion = 0;
- threadData->quitNow = false;
+ thisThreadData->postEventList.clear();
+ thisThreadData->postEventList.recursion = 0;
+ thisThreadData->quitNow = false;
threadData_clean = true;
}
}
@@ -553,10 +530,10 @@ void QCoreApplicationPrivate::eventDispatcherReady()
{
}
-QBasicAtomicPointer<QThread> QCoreApplicationPrivate::theMainThread = Q_BASIC_ATOMIC_INITIALIZER(0);
+QBasicAtomicPointer<QThread> QCoreApplicationPrivate::theMainThread = Q_BASIC_ATOMIC_INITIALIZER(nullptr);
QThread *QCoreApplicationPrivate::mainThread()
{
- Q_ASSERT(theMainThread.loadRelaxed() != 0);
+ Q_ASSERT(theMainThread.loadRelaxed() != nullptr);
return theMainThread.loadRelaxed();
}
@@ -713,7 +690,7 @@ QCoreApplication::QCoreApplication(QCoreApplicationPrivate &p)
#ifdef QT_NO_QOBJECT
: d_ptr(&p)
#else
- : QObject(p, 0)
+ : QObject(p, nullptr)
#endif
{
d_func()->q_ptr = this;
@@ -795,17 +772,8 @@ void QCoreApplicationPrivate::init()
Q_ASSERT_X(!QCoreApplication::self, "QCoreApplication", "there should be only one application object");
QCoreApplication::self = q;
-#ifdef Q_OS_WASM
- EM_ASM(
- // mount and sync persistent filesystem to sandbox
- FS.mount(IDBFS, {}, '/home/web_user');
- FS.syncfs(true, function(err) {
- if (err)
- Module.print(err);
- });
- );
-
#if QT_CONFIG(thread)
+#ifdef Q_OS_WASM
QThreadPrivate::idealThreadCount = emscripten::val::global("navigator")["hardwareConcurrency"].as<int>();
#endif
#endif
@@ -858,7 +826,8 @@ void QCoreApplicationPrivate::init()
#ifndef QT_NO_QOBJECT
// use the event dispatcher created by the app programmer (if any)
Q_ASSERT(!eventDispatcher);
- eventDispatcher = threadData->eventDispatcher.loadRelaxed();
+ auto thisThreadData = threadData.loadRelaxed();
+ eventDispatcher = thisThreadData->eventDispatcher.loadRelaxed();
// otherwise we create one
if (!eventDispatcher)
@@ -866,11 +835,11 @@ void QCoreApplicationPrivate::init()
Q_ASSERT(eventDispatcher);
if (!eventDispatcher->parent()) {
- eventDispatcher->moveToThread(threadData->thread.loadAcquire());
+ eventDispatcher->moveToThread(thisThreadData->thread.loadAcquire());
eventDispatcher->setParent(q);
}
- threadData->eventDispatcher = eventDispatcher;
+ thisThreadData->eventDispatcher = eventDispatcher;
eventDispatcherReady();
#endif
@@ -914,7 +883,7 @@ QCoreApplication::~QCoreApplication()
#endif
#ifndef QT_NO_QOBJECT
- d_func()->threadData->eventDispatcher = nullptr;
+ d_func()->threadData.loadRelaxed()->eventDispatcher = nullptr;
if (QCoreApplicationPrivate::eventDispatcher)
QCoreApplicationPrivate::eventDispatcher->closingDown();
QCoreApplicationPrivate::eventDispatcher = nullptr;
@@ -1170,7 +1139,7 @@ bool QCoreApplication::notify(QObject *receiver, QEvent *event)
static bool doNotify(QObject *receiver, QEvent *event)
{
- if (receiver == 0) { // serious error
+ if (receiver == nullptr) { // serious error
qWarning("QCoreApplication::notify: Unexpected null receiver");
return true;
}
@@ -1185,7 +1154,7 @@ static bool doNotify(QObject *receiver, QEvent *event)
bool QCoreApplicationPrivate::sendThroughApplicationEventFilters(QObject *receiver, QEvent *event)
{
// We can't access the application event filters outside of the main thread (race conditions)
- Q_ASSERT(receiver->d_func()->threadData->thread.loadAcquire() == mainThread());
+ Q_ASSERT(receiver->d_func()->threadData.loadRelaxed()->thread.loadAcquire() == mainThread());
if (extraData) {
// application event filters are only called for objects in the GUI thread
@@ -1238,7 +1207,7 @@ bool QCoreApplicationPrivate::notify_helper(QObject *receiver, QEvent * event)
// send to all application event filters (only does anything in the main thread)
if (QCoreApplication::self
- && receiver->d_func()->threadData->thread.loadAcquire() == mainThread()
+ && receiver->d_func()->threadData.loadRelaxed()->thread.loadAcquire() == mainThread()
&& QCoreApplication::self->d_func()->sendThroughApplicationEventFilters(receiver, event)) {
filtered = true;
return filtered;
@@ -1414,12 +1383,12 @@ int QCoreApplication::exec()
void QCoreApplicationPrivate::execCleanup()
{
- threadData->quitNow = false;
+ threadData.loadRelaxed()->quitNow = false;
in_exec = false;
if (!aboutToQuitEmitted)
emit q_func()->aboutToQuit(QCoreApplication::QPrivateSignal());
aboutToQuitEmitted = true;
- QCoreApplication::sendPostedEvents(0, QEvent::DeferredDelete);
+ QCoreApplication::sendPostedEvents(nullptr, QEvent::DeferredDelete);
}
@@ -1451,7 +1420,7 @@ void QCoreApplication::exit(int returnCode)
{
if (!self)
return;
- QThreadData *data = self->d_func()->threadData;
+ QThreadData *data = self->d_func()->threadData.loadRelaxed();
data->quitNow = true;
for (int i = 0; i < data->eventLoops.size(); ++i) {
QEventLoop *eventLoop = data->eventLoops.at(i);
@@ -1501,6 +1470,38 @@ bool QCoreApplication::sendSpontaneousEvent(QObject *receiver, QEvent *event)
#endif // QT_NO_QOBJECT
+QCoreApplicationPrivate::QPostEventListLocker QCoreApplicationPrivate::lockThreadPostEventList(QObject *object)
+{
+ QPostEventListLocker locker;
+
+ if (!object) {
+ locker.threadData = QThreadData::current();
+ locker.locker = qt_unique_lock(locker.threadData->postEventList.mutex);
+ return locker;
+ }
+
+ auto &threadData = QObjectPrivate::get(object)->threadData;
+
+ // if object has moved to another thread, follow it
+ for (;;) {
+ // synchronizes with the storeRelease in QObject::moveToThread
+ locker.threadData = threadData.loadAcquire();
+ if (!locker.threadData) {
+ // destruction in progress
+ return locker;
+ }
+
+ auto temporaryLocker = qt_unique_lock(locker.threadData->postEventList.mutex);
+ if (locker.threadData == threadData.loadAcquire()) {
+ locker.locker = std::move(temporaryLocker);
+ break;
+ }
+ }
+
+ Q_ASSERT(locker.threadData);
+ return locker;
+}
+
/*!
\since 4.3
@@ -1530,38 +1531,20 @@ void QCoreApplication::postEvent(QObject *receiver, QEvent *event, int priority)
{
Q_TRACE_SCOPE(QCoreApplication_postEvent, receiver, event, event->type());
- if (receiver == 0) {
+ if (receiver == nullptr) {
qWarning("QCoreApplication::postEvent: Unexpected null receiver");
delete event;
return;
}
- QThreadData * volatile * pdata = &receiver->d_func()->threadData;
- QThreadData *data = *pdata;
- if (!data) {
+ auto locker = QCoreApplicationPrivate::lockThreadPostEventList(receiver);
+ if (!locker.threadData) {
// posting during destruction? just delete the event to prevent a leak
delete event;
return;
}
- // lock the post event mutex
- data->postEventList.mutex.lock();
-
- // if object has moved to another thread, follow it
- while (data != *pdata) {
- data->postEventList.mutex.unlock();
-
- data = *pdata;
- if (!data) {
- // posting during destruction? just delete the event to prevent a leak
- delete event;
- return;
- }
-
- data->postEventList.mutex.lock();
- }
-
- QMutexUnlocker locker(&data->postEventList.mutex);
+ QThreadData *data = locker.threadData;
// if this is one of the compressible events, do compression
if (receiver->d_func()->postedEvents
@@ -1652,7 +1635,7 @@ bool QCoreApplication::compressEvent(QEvent *event, QObject *receiver, QPostEven
for (int i = 0; i < postedEvents->size(); ++i) {
const QPostEvent &cur = postedEvents->at(i);
if (cur.receiver != receiver
- || cur.event == 0
+ || cur.event == nullptr
|| cur.event->type() != event->type())
continue;
// found an event for this receiver
@@ -1801,7 +1784,7 @@ void QCoreApplicationPrivate::sendPostedEvents(QObject *receiver, int event_type
// null out the event so if sendPostedEvents recurses, it
// will ignore this one, as it's been re-posted.
- const_cast<QPostEvent &>(pe).event = 0;
+ const_cast<QPostEvent &>(pe).event = nullptr;
// re-post the copied event so it isn't lost
data->postEventList.addEvent(pe_copy);
@@ -1821,7 +1804,7 @@ void QCoreApplicationPrivate::sendPostedEvents(QObject *receiver, int event_type
// next, update the data structure so that we're ready
// for the next event.
- const_cast<QPostEvent &>(pe).event = 0;
+ const_cast<QPostEvent &>(pe).event = nullptr;
locker.unlock();
const auto relocker = qScopeGuard([&locker] { locker.lock(); });
@@ -1860,8 +1843,8 @@ void QCoreApplicationPrivate::sendPostedEvents(QObject *receiver, int event_type
void QCoreApplication::removePostedEvents(QObject *receiver, int eventType)
{
- QThreadData *data = receiver ? receiver->d_func()->threadData : QThreadData::current();
- auto locker = qt_unique_lock(data->postEventList.mutex);
+ auto locker = QCoreApplicationPrivate::lockThreadPostEventList(receiver);
+ QThreadData *data = locker.threadData;
// the QObject destructor calls this function directly. this can
// happen while the event loop is in the middle of posting events,
@@ -1884,7 +1867,7 @@ void QCoreApplication::removePostedEvents(QObject *receiver, int eventType)
--pe.receiver->d_func()->postedEvents;
pe.event->posted = false;
events.append(pe.event);
- const_cast<QPostEvent &>(pe).event = 0;
+ const_cast<QPostEvent &>(pe).event = nullptr;
} else if (!data->postEventList.recursion) {
if (i != j)
qSwap(data->postEventList[i], data->postEventList[j]);
@@ -1946,7 +1929,7 @@ void QCoreApplicationPrivate::removePostedEvent(QEvent * event)
--pe.receiver->d_func()->postedEvents;
pe.event->posted = false;
delete pe.event;
- const_cast<QPostEvent &>(pe).event = 0;
+ const_cast<QPostEvent &>(pe).event = nullptr;
return;
}
}
@@ -2221,7 +2204,7 @@ QString QCoreApplication::translate(const char *context, const char *sourceText,
// Declared in qglobal.h
QString qtTrId(const char *id, int n)
{
- return QCoreApplication::translate(0, id, 0, n);
+ return QCoreApplication::translate(nullptr, id, nullptr, n);
}
bool QCoreApplicationPrivate::isTranslatorInstalled(QTranslator *translator)
@@ -2973,7 +2956,7 @@ QAbstractEventDispatcher *QCoreApplication::eventDispatcher()
{
if (QCoreApplicationPrivate::theMainThread.loadAcquire())
return QCoreApplicationPrivate::theMainThread.loadRelaxed()->eventDispatcher();
- return 0;
+ return nullptr;
}
/*!
diff --git a/src/corelib/kernel/qcoreapplication_p.h b/src/corelib/kernel/qcoreapplication_p.h
index 3bad42d076..9d2fde619c 100644
--- a/src/corelib/kernel/qcoreapplication_p.h
+++ b/src/corelib/kernel/qcoreapplication_p.h
@@ -61,6 +61,7 @@
#endif
#ifndef QT_NO_QOBJECT
#include "private/qobject_p.h"
+#include "private/qlocking_p.h"
#endif
#ifdef Q_OS_MACOS
@@ -140,6 +141,15 @@ public:
static void checkReceiverThread(QObject *receiver);
void cleanupThreadData();
+
+ struct QPostEventListLocker
+ {
+ QThreadData *threadData;
+ std::unique_lock<QMutex> locker;
+
+ void unlock() { locker.unlock(); }
+ };
+ static QPostEventListLocker lockThreadPostEventList(QObject *object);
#endif // QT_NO_QOBJECT
int &argc;
diff --git a/src/corelib/kernel/qcoreapplication_win.cpp b/src/corelib/kernel/qcoreapplication_win.cpp
index 961b96710e..765f129758 100644
--- a/src/corelib/kernel/qcoreapplication_win.cpp
+++ b/src/corelib/kernel/qcoreapplication_win.cpp
@@ -918,7 +918,7 @@ QDebug operator<<(QDebug dbg, const MSG &msg)
#ifndef QT_NO_QOBJECT
void QCoreApplicationPrivate::removePostedTimerEvent(QObject *object, int timerId)
{
- QThreadData *data = object->d_func()->threadData;
+ QThreadData *data = object->d_func()->threadData.loadRelaxed();
const auto locker = qt_scoped_lock(data->postEventList.mutex);
if (data->postEventList.size() == 0)
diff --git a/src/corelib/kernel/qcoreevent.cpp b/src/corelib/kernel/qcoreevent.cpp
index 4cfc749386..e3326f00d7 100644
--- a/src/corelib/kernel/qcoreevent.cpp
+++ b/src/corelib/kernel/qcoreevent.cpp
@@ -295,7 +295,7 @@ QT_BEGIN_NAMESPACE
Contructs an event object of type \a type.
*/
QEvent::QEvent(Type type)
- : d(0), t(type), posted(false), spont(false), m_accept(true)
+ : d(nullptr), t(type), posted(false), spont(false), m_accept(true)
{
Q_TRACE(QEvent_ctor, this, t);
}
diff --git a/src/corelib/kernel/qeventdispatcher_glib.cpp b/src/corelib/kernel/qeventdispatcher_glib.cpp
index d9746ef6e2..92f3553247 100644
--- a/src/corelib/kernel/qeventdispatcher_glib.cpp
+++ b/src/corelib/kernel/qeventdispatcher_glib.cpp
@@ -114,9 +114,9 @@ static GSourceFuncs socketNotifierSourceFuncs = {
socketNotifierSourcePrepare,
socketNotifierSourceCheck,
socketNotifierSourceDispatch,
- NULL,
- NULL,
- NULL
+ nullptr,
+ nullptr,
+ nullptr
};
struct GTimerSource
@@ -188,9 +188,9 @@ static GSourceFuncs timerSourceFuncs = {
timerSourcePrepare,
timerSourceCheck,
timerSourceDispatch,
- NULL,
- NULL,
- NULL
+ nullptr,
+ nullptr,
+ nullptr
};
struct GIdleTimerSource
@@ -227,7 +227,7 @@ static gboolean idleTimerSourceCheck(GSource *source)
static gboolean idleTimerSourceDispatch(GSource *source, GSourceFunc, gpointer)
{
GTimerSource *timerSource = reinterpret_cast<GIdleTimerSource *>(source)->timerSource;
- (void) timerSourceDispatch(&timerSource->source, 0, 0);
+ (void) timerSourceDispatch(&timerSource->source, nullptr, nullptr);
return true;
}
@@ -235,9 +235,9 @@ static GSourceFuncs idleTimerSourceFuncs = {
idleTimerSourcePrepare,
idleTimerSourceCheck,
idleTimerSourceDispatch,
- NULL,
- NULL,
- NULL
+ nullptr,
+ nullptr,
+ nullptr
};
struct GPostEventSource
@@ -267,7 +267,7 @@ static gboolean postEventSourcePrepare(GSource *s, gint *timeout)
static gboolean postEventSourceCheck(GSource *source)
{
- return postEventSourcePrepare(source, 0);
+ return postEventSourcePrepare(source, nullptr);
}
static gboolean postEventSourceDispatch(GSource *s, GSourceFunc, gpointer)
@@ -283,9 +283,9 @@ static GSourceFuncs postEventSourceFuncs = {
postEventSourcePrepare,
postEventSourceCheck,
postEventSourceDispatch,
- NULL,
- NULL,
- NULL
+ nullptr,
+ nullptr,
+ nullptr
};
@@ -372,10 +372,10 @@ QEventDispatcherGlib::~QEventDispatcherGlib()
d->timerSource->timerList.~QTimerInfoList();
g_source_destroy(&d->timerSource->source);
g_source_unref(&d->timerSource->source);
- d->timerSource = 0;
+ d->timerSource = nullptr;
g_source_destroy(&d->idleTimerSource->source);
g_source_unref(&d->idleTimerSource->source);
- d->idleTimerSource = 0;
+ d->idleTimerSource = nullptr;
// destroy socket notifier source
for (int i = 0; i < d->socketNotifierSource->pollfds.count(); ++i) {
@@ -386,19 +386,19 @@ QEventDispatcherGlib::~QEventDispatcherGlib()
d->socketNotifierSource->pollfds.~QList<GPollFDWithQSocketNotifier *>();
g_source_destroy(&d->socketNotifierSource->source);
g_source_unref(&d->socketNotifierSource->source);
- d->socketNotifierSource = 0;
+ d->socketNotifierSource = nullptr;
// destroy post event source
g_source_destroy(&d->postEventSource->source);
g_source_unref(&d->postEventSource->source);
- d->postEventSource = 0;
+ d->postEventSource = nullptr;
- Q_ASSERT(d->mainContext != 0);
+ Q_ASSERT(d->mainContext != nullptr);
#if GLIB_CHECK_VERSION (2, 22, 0)
g_main_context_pop_thread_default (d->mainContext);
#endif
g_main_context_unref(d->mainContext);
- d->mainContext = 0;
+ d->mainContext = nullptr;
}
bool QEventDispatcherGlib::processEvents(QEventLoop::ProcessEventsFlags flags)
diff --git a/src/corelib/kernel/qeventdispatcher_unix.cpp b/src/corelib/kernel/qeventdispatcher_unix.cpp
index 5bc65b7110..0165ce9075 100644
--- a/src/corelib/kernel/qeventdispatcher_unix.cpp
+++ b/src/corelib/kernel/qeventdispatcher_unix.cpp
@@ -463,13 +463,15 @@ bool QEventDispatcherUNIX::processEvents(QEventLoop::ProcessEventsFlags flags)
// we are awake, broadcast it
emit awake();
- QCoreApplicationPrivate::sendPostedEvents(0, 0, d->threadData);
+
+ auto threadData = d->threadData.loadRelaxed();
+ QCoreApplicationPrivate::sendPostedEvents(nullptr, 0, threadData);
const bool include_timers = (flags & QEventLoop::X11ExcludeTimers) == 0;
const bool include_notifiers = (flags & QEventLoop::ExcludeSocketNotifiers) == 0;
const bool wait_for_events = flags & QEventLoop::WaitForMoreEvents;
- const bool canWait = (d->threadData->canWaitLocked()
+ const bool canWait = (threadData->canWaitLocked()
&& !d->interrupt.loadRelaxed()
&& wait_for_events);
diff --git a/src/corelib/kernel/qeventdispatcher_win.cpp b/src/corelib/kernel/qeventdispatcher_win.cpp
index 87623f304a..8616631603 100644
--- a/src/corelib/kernel/qeventdispatcher_win.cpp
+++ b/src/corelib/kernel/qeventdispatcher_win.cpp
@@ -636,11 +636,11 @@ void QEventDispatcherWin32::registerSocketNotifier(QSocketNotifier *notifier)
int type = notifier->type();
#ifndef QT_NO_DEBUG
if (sockfd < 0) {
- qWarning("QSocketNotifier: Internal error");
+ qWarning("QEventDispatcherWin32::registerSocketNotifier: invalid socket identifier");
return;
}
if (notifier->thread() != thread() || thread() != QThread::currentThread()) {
- qWarning("QSocketNotifier: socket notifiers cannot be enabled from another thread");
+ qWarning("QEventDispatcherWin32: socket notifiers cannot be enabled from another thread");
return;
}
#endif
@@ -697,11 +697,11 @@ void QEventDispatcherWin32::unregisterSocketNotifier(QSocketNotifier *notifier)
#ifndef QT_NO_DEBUG
int sockfd = notifier->socket();
if (sockfd < 0) {
- qWarning("QSocketNotifier: Internal error");
+ qWarning("QEventDispatcherWin32::unregisterSocketNotifier: invalid socket identifier");
return;
}
if (notifier->thread() != thread() || thread() != QThread::currentThread()) {
- qWarning("QSocketNotifier: socket notifiers cannot be disabled from another thread");
+ qWarning("QEventDispatcherWin32: socket notifiers cannot be disabled from another thread");
return;
}
#endif
@@ -783,8 +783,7 @@ bool QEventDispatcherWin32::unregisterTimer(int timerId)
qWarning("QEventDispatcherWin32::unregisterTimer: invalid argument");
return false;
}
- QThread *currentThread = QThread::currentThread();
- if (thread() != currentThread) {
+ if (thread() != QThread::currentThread()) {
qWarning("QEventDispatcherWin32::unregisterTimer: timers cannot be stopped from another thread");
return false;
}
@@ -811,8 +810,7 @@ bool QEventDispatcherWin32::unregisterTimers(QObject *object)
qWarning("QEventDispatcherWin32::unregisterTimers: invalid argument");
return false;
}
- QThread *currentThread = QThread::currentThread();
- if (object->thread() != thread() || thread() != currentThread) {
+ if (object->thread() != thread() || thread() != QThread::currentThread()) {
qWarning("QEventDispatcherWin32::unregisterTimers: timers cannot be stopped from another thread");
return false;
}
@@ -837,10 +835,12 @@ bool QEventDispatcherWin32::unregisterTimers(QObject *object)
QList<QEventDispatcherWin32::TimerInfo>
QEventDispatcherWin32::registeredTimers(QObject *object) const
{
+#ifndef QT_NO_DEBUG
if (!object) {
qWarning("QEventDispatcherWin32:registeredTimers: invalid argument");
return QList<TimerInfo>();
}
+#endif
Q_D(const QEventDispatcherWin32);
QList<TimerInfo> list;
@@ -853,13 +853,13 @@ QEventDispatcherWin32::registeredTimers(QObject *object) const
bool QEventDispatcherWin32::registerEventNotifier(QWinEventNotifier *notifier)
{
- if (!notifier) {
- qWarning("QWinEventNotifier: Internal error");
- return false;
- } else if (notifier->thread() != thread() || thread() != QThread::currentThread()) {
- qWarning("QWinEventNotifier: event notifiers cannot be enabled from another thread");
+ Q_ASSERT(notifier);
+#ifndef QT_NO_DEBUG
+ if (notifier->thread() != thread() || thread() != QThread::currentThread()) {
+ qWarning("QEventDispatcherWin32: event notifiers cannot be enabled from another thread");
return false;
}
+#endif
Q_D(QEventDispatcherWin32);
@@ -877,13 +877,13 @@ bool QEventDispatcherWin32::registerEventNotifier(QWinEventNotifier *notifier)
void QEventDispatcherWin32::unregisterEventNotifier(QWinEventNotifier *notifier)
{
- if (!notifier) {
- qWarning("QWinEventNotifier: Internal error");
- return;
- } else if (notifier->thread() != thread() || thread() != QThread::currentThread()) {
- qWarning("QWinEventNotifier: event notifiers cannot be disabled from another thread");
+ Q_ASSERT(notifier);
+#ifndef QT_NO_DEBUG
+ if (notifier->thread() != thread() || thread() != QThread::currentThread()) {
+ qWarning("QEventDispatcherWin32: event notifiers cannot be disabled from another thread");
return;
}
+#endif
Q_D(QEventDispatcherWin32);
@@ -1048,7 +1048,7 @@ bool QEventDispatcherWin32::event(QEvent *e)
void QEventDispatcherWin32::sendPostedEvents()
{
Q_D(QEventDispatcherWin32);
- QCoreApplicationPrivate::sendPostedEvents(0, 0, d->threadData);
+ QCoreApplicationPrivate::sendPostedEvents(0, 0, d->threadData.loadRelaxed());
}
HWND QEventDispatcherWin32::internalHwnd()
diff --git a/src/corelib/kernel/qeventloop.cpp b/src/corelib/kernel/qeventloop.cpp
index eacd0c4e73..5a5dfb06aa 100644
--- a/src/corelib/kernel/qeventloop.cpp
+++ b/src/corelib/kernel/qeventloop.cpp
@@ -106,7 +106,7 @@ QEventLoop::QEventLoop(QObject *parent)
if (!QCoreApplication::instance() && QCoreApplicationPrivate::threadRequiresCoreApplication()) {
qWarning("QEventLoop: Cannot be used without QApplication");
} else {
- d->threadData->ensureEventDispatcher();
+ d->threadData.loadRelaxed()->ensureEventDispatcher();
}
}
@@ -133,9 +133,10 @@ QEventLoop::~QEventLoop()
bool QEventLoop::processEvents(ProcessEventsFlags flags)
{
Q_D(QEventLoop);
- if (!d->threadData->hasEventDispatcher())
+ auto threadData = d->threadData.loadRelaxed();
+ if (!threadData->hasEventDispatcher())
return false;
- return d->threadData->eventDispatcher.loadRelaxed()->processEvents(flags);
+ return threadData->eventDispatcher.loadRelaxed()->processEvents(flags);
}
/*!
@@ -164,9 +165,11 @@ bool QEventLoop::processEvents(ProcessEventsFlags flags)
int QEventLoop::exec(ProcessEventsFlags flags)
{
Q_D(QEventLoop);
+ auto threadData = d->threadData.loadRelaxed();
+
//we need to protect from race condition with QThread::exit
- QMutexLocker locker(&static_cast<QThreadPrivate *>(QObjectPrivate::get(d->threadData->thread.loadAcquire()))->mutex);
- if (d->threadData->quitNow)
+ QMutexLocker locker(&static_cast<QThreadPrivate *>(QObjectPrivate::get(threadData->thread.loadAcquire()))->mutex);
+ if (threadData->quitNow)
return -1;
if (d->inExec) {
@@ -183,8 +186,11 @@ int QEventLoop::exec(ProcessEventsFlags flags)
{
d->inExec = true;
d->exit.storeRelease(false);
- ++d->threadData->loopLevel;
- d->threadData->eventLoops.push(d->q_func());
+
+ auto threadData = d->threadData.loadRelaxed();
+ ++threadData->loopLevel;
+ threadData->eventLoops.push(d->q_func());
+
locker.unlock();
}
@@ -198,11 +204,12 @@ int QEventLoop::exec(ProcessEventsFlags flags)
"QCoreApplication::notify() and catch all exceptions there.\n");
}
locker.relock();
- QEventLoop *eventLoop = d->threadData->eventLoops.pop();
+ auto threadData = d->threadData.loadRelaxed();
+ QEventLoop *eventLoop = threadData->eventLoops.pop();
Q_ASSERT_X(eventLoop == d->q_func(), "QEventLoop::exec()", "internal error");
Q_UNUSED(eventLoop); // --release warning
d->inExec = false;
- --d->threadData->loopLevel;
+ --threadData->loopLevel;
}
};
LoopReference ref(d, locker);
@@ -217,7 +224,7 @@ int QEventLoop::exec(ProcessEventsFlags flags)
// exception, which returns control to the browser while preserving the C++ stack.
// Event processing then continues as normal. The sleep call below never returns.
// QTBUG-70185
- if (d->threadData->loopLevel > 1)
+ if (threadData->loopLevel > 1)
emscripten_sleep(1);
#endif
@@ -247,7 +254,7 @@ int QEventLoop::exec(ProcessEventsFlags flags)
void QEventLoop::processEvents(ProcessEventsFlags flags, int maxTime)
{
Q_D(QEventLoop);
- if (!d->threadData->hasEventDispatcher())
+ if (!d->threadData.loadRelaxed()->hasEventDispatcher())
return;
QElapsedTimer start;
@@ -276,21 +283,22 @@ void QEventLoop::processEvents(ProcessEventsFlags flags, int maxTime)
void QEventLoop::exit(int returnCode)
{
Q_D(QEventLoop);
- if (!d->threadData->hasEventDispatcher())
+ auto threadData = d->threadData.loadAcquire();
+ if (!threadData->hasEventDispatcher())
return;
d->returnCode.storeRelaxed(returnCode);
d->exit.storeRelease(true);
- d->threadData->eventDispatcher.loadRelaxed()->interrupt();
+ threadData->eventDispatcher.loadRelaxed()->interrupt();
#ifdef Q_OS_WASM
// QEventLoop::exec() never returns in emscripten. We implement approximate behavior here.
// QTBUG-70185
- if (d->threadData->loopLevel == 1) {
+ if (threadData->loopLevel == 1) {
emscripten_force_exit(returnCode);
} else {
d->inExec = false;
- --d->threadData->loopLevel;
+ --threadData->loopLevel;
}
#endif
}
@@ -316,9 +324,10 @@ bool QEventLoop::isRunning() const
void QEventLoop::wakeUp()
{
Q_D(QEventLoop);
- if (!d->threadData->hasEventDispatcher())
+ auto threadData = d->threadData.loadAcquire();
+ if (!threadData->hasEventDispatcher())
return;
- d->threadData->eventDispatcher.loadRelaxed()->wakeUp();
+ threadData->eventDispatcher.loadRelaxed()->wakeUp();
}
diff --git a/src/corelib/kernel/qmetaobject.cpp b/src/corelib/kernel/qmetaobject.cpp
index 5cb30a74ac..fad47eee13 100644
--- a/src/corelib/kernel/qmetaobject.cpp
+++ b/src/corelib/kernel/qmetaobject.cpp
@@ -282,14 +282,14 @@ QObject *QMetaObject::newInstance(QGenericArgument val0,
idx = indexOfConstructor(norm.constData());
}
if (idx < 0)
- return 0;
+ return nullptr;
- QObject *returnValue = 0;
+ QObject *returnValue = nullptr;
void *param[] = {&returnValue, val0.data(), val1.data(), val2.data(), val3.data(), val4.data(),
val5.data(), val6.data(), val7.data(), val8.data(), val9.data()};
if (static_metacall(CreateInstance, idx, param) >= 0)
- return 0;
+ return nullptr;
return returnValue;
}
@@ -301,7 +301,7 @@ int QMetaObject::static_metacall(Call cl, int idx, void **argv) const
Q_ASSERT(priv(d.data)->revision >= 6);
if (!d.static_metacall)
return 0;
- d.static_metacall(0, cl, idx, argv);
+ d.static_metacall(nullptr, cl, idx, argv);
return -1;
}
@@ -691,7 +691,7 @@ static void argumentTypesFromString(const char *str, const char *end,
QByteArray QMetaObjectPrivate::decodeMethodSignature(
const char *signature, QArgumentTypeArray &types)
{
- Q_ASSERT(signature != 0);
+ Q_ASSERT(signature != nullptr);
const char *lparens = strchr(signature, '(');
if (!lparens)
return QByteArray();
@@ -844,7 +844,7 @@ int QMetaObjectPrivate::indexOfConstructor(const QMetaObject *m, const QByteArra
*/
int QMetaObjectPrivate::absoluteSignalCount(const QMetaObject *m)
{
- Q_ASSERT(m != 0);
+ Q_ASSERT(m != nullptr);
int n = priv(m->d.data)->signalCount;
for (m = m->d.superdata; m; m = m->d.superdata)
n += priv(m->d.data)->signalCount;
@@ -881,7 +881,7 @@ QMetaMethod QMetaObjectPrivate::signal(const QMetaObject *m, int signal_index)
QMetaMethod result;
if (signal_index < 0)
return result;
- Q_ASSERT(m != 0);
+ Q_ASSERT(m != nullptr);
int i = signal_index;
i -= signalOffset(m);
if (i < 0 && m->d.superdata)
@@ -1031,7 +1031,7 @@ int QMetaObject::indexOfProperty(const char *name) const
QAbstractDynamicMetaObject *me =
const_cast<QAbstractDynamicMetaObject *>(static_cast<const QAbstractDynamicMetaObject *>(this));
- return me->createProperty(name, 0);
+ return me->createProperty(name, nullptr);
}
return -1;
@@ -1145,7 +1145,7 @@ QMetaProperty QMetaObject::property(int index) const
if (!result.menum.isValid()) {
const char *enum_name = type;
const char *scope_name = objectClassName(this);
- char *scope_buffer = 0;
+ char *scope_buffer = nullptr;
const char *colon = strrchr(enum_name, ':');
// ':' will always appear in pairs
@@ -1159,7 +1159,7 @@ QMetaProperty QMetaObject::property(int index) const
enum_name = colon+1;
}
- const QMetaObject *scope = 0;
+ const QMetaObject *scope = nullptr;
if (qstrcmp(scope_name, "Qt") == 0)
scope = &QObject::staticQtMetaObject;
else
@@ -1542,14 +1542,14 @@ bool QMetaObject::invokeMethodImpl(QObject *object, QtPrivate::QSlotObjectBase *
return false;
}
- QCoreApplication::postEvent(object, new QMetaCallEvent(slot, 0, -1, 1));
+ QCoreApplication::postEvent(object, new QMetaCallEvent(slot, nullptr, -1, 1));
} else if (type == Qt::BlockingQueuedConnection) {
#if QT_CONFIG(thread)
if (currentThread == objectThread)
qWarning("QMetaObject::invokeMethod: Dead lock detected");
QSemaphore semaphore;
- QCoreApplication::postEvent(object, new QMetaCallEvent(slot, 0, -1, argv, &semaphore));
+ QCoreApplication::postEvent(object, new QMetaCallEvent(slot, nullptr, -1, argv, &semaphore));
semaphore.acquire();
#endif // QT_CONFIG(thread)
} else {
@@ -1988,7 +1988,7 @@ QList<QByteArray> QMetaMethod::parameterNames() const
const char *QMetaMethod::typeName() const
{
if (!mobj)
- return 0;
+ return nullptr;
return QMetaMethodPrivate::get(this)->rawReturnTypeName();
}
@@ -2020,7 +2020,7 @@ const char *QMetaMethod::typeName() const
const char *QMetaMethod::tag() const
{
if (!mobj)
- return 0;
+ return nullptr;
return QMetaMethodPrivate::get(this)->tag().constData();
}
@@ -2303,7 +2303,7 @@ bool QMetaMethod::invoke(QObject *object,
return false;
}
- QScopedPointer<QMetaCallEvent> event(new QMetaCallEvent(idx_offset, idx_relative, callFunction, 0, -1, paramCount));
+ QScopedPointer<QMetaCallEvent> event(new QMetaCallEvent(idx_offset, idx_relative, callFunction, nullptr, -1, paramCount));
int *types = event->types();
void **args = event->args();
@@ -2340,7 +2340,7 @@ bool QMetaMethod::invoke(QObject *object,
QSemaphore semaphore;
QCoreApplication::postEvent(object, new QMetaCallEvent(idx_offset, idx_relative, callFunction,
- 0, -1, param, &semaphore));
+ nullptr, -1, param, &semaphore));
semaphore.acquire();
#endif // QT_CONFIG(thread)
}
@@ -2563,7 +2563,7 @@ bool QMetaMethod::invokeOnGadget(void* gadget, QGenericReturnArgument returnValu
const char *QMetaEnum::name() const
{
if (!mobj)
- return 0;
+ return nullptr;
return rawStringData(mobj, mobj->d.data[handle]);
}
@@ -2582,7 +2582,7 @@ const char *QMetaEnum::name() const
const char *QMetaEnum::enumName() const
{
if (!mobj)
- return 0;
+ return nullptr;
const bool rev8p = priv(mobj->d.data)->revision >= 8;
if (rev8p)
return rawStringData(mobj, mobj->d.data[handle + 1]);
@@ -2610,13 +2610,13 @@ int QMetaEnum::keyCount() const
const char *QMetaEnum::key(int index) const
{
if (!mobj)
- return 0;
+ return nullptr;
const int offset = priv(mobj->d.data)->revision >= 8 ? 3 : 2;
int count = mobj->d.data[handle + offset];
int data = mobj->d.data[handle + offset + 1];
if (index >= 0 && index < count)
return rawStringData(mobj, mobj->d.data[data + 2*index]);
- return 0;
+ return nullptr;
}
/*!
@@ -2679,7 +2679,7 @@ bool QMetaEnum::isScoped() const
*/
const char *QMetaEnum::scope() const
{
- return mobj ? objectClassName(mobj) : 0;
+ return mobj ? objectClassName(mobj) : nullptr;
}
/*!
@@ -2695,7 +2695,7 @@ const char *QMetaEnum::scope() const
*/
int QMetaEnum::keyToValue(const char *key, bool *ok) const
{
- if (ok != 0)
+ if (ok != nullptr)
*ok = false;
if (!mobj || !key)
return -1;
@@ -2715,7 +2715,7 @@ int QMetaEnum::keyToValue(const char *key, bool *ok) const
const QByteArray className = stringData(mobj, priv(mobj->d.data)->className);
if ((!scope || (className.size() == int(scope) && strncmp(qualified_key, className.constData(), scope) == 0))
&& strcmp(key, rawStringData(mobj, mobj->d.data[data + 2*i])) == 0) {
- if (ok != 0)
+ if (ok != nullptr)
*ok = true;
return mobj->d.data[data + 2*i + 1];
}
@@ -2734,14 +2734,14 @@ int QMetaEnum::keyToValue(const char *key, bool *ok) const
const char* QMetaEnum::valueToKey(int value) const
{
if (!mobj)
- return 0;
+ return nullptr;
const int offset = priv(mobj->d.data)->revision >= 8 ? 3 : 2;
int count = mobj->d.data[handle + offset];
int data = mobj->d.data[handle + offset + 1];
for (int i = 0; i < count; ++i)
if (value == (int)mobj->d.data[data + 2*i + 1])
return rawStringData(mobj, mobj->d.data[data + 2*i]);
- return 0;
+ return nullptr;
}
/*!
@@ -2756,11 +2756,11 @@ const char* QMetaEnum::valueToKey(int value) const
*/
int QMetaEnum::keysToValue(const char *keys, bool *ok) const
{
- if (ok != 0)
+ if (ok != nullptr)
*ok = false;
if (!mobj || !keys)
return -1;
- if (ok != 0)
+ if (ok != nullptr)
*ok = true;
const QString keysString = QString::fromLatin1(keys);
const QVector<QStringRef> splitKeys = keysString.splitRef(QLatin1Char('|'));
@@ -2793,7 +2793,7 @@ int QMetaEnum::keysToValue(const char *keys, bool *ok) const
}
}
if (i < 0) {
- if (ok != 0)
+ if (ok != nullptr)
*ok = false;
value |= -1;
}
@@ -2896,7 +2896,7 @@ static QByteArray qualifiedName(const QMetaEnum &e)
\internal
*/
QMetaProperty::QMetaProperty()
- : mobj(0), handle(0), idx(0)
+ : mobj(nullptr), handle(0), idx(0)
{
}
@@ -2909,7 +2909,7 @@ QMetaProperty::QMetaProperty()
const char *QMetaProperty::name() const
{
if (!mobj)
- return 0;
+ return nullptr;
int handle = priv(mobj->d.data)->propertyData + 3*idx;
return rawStringData(mobj, mobj->d.data[handle]);
}
@@ -2922,7 +2922,7 @@ const char *QMetaProperty::name() const
const char *QMetaProperty::typeName() const
{
if (!mobj)
- return 0;
+ return nullptr;
int handle = priv(mobj->d.data)->propertyData + 3*idx;
return rawTypeNameFromTypeInfo(mobj, mobj->d.data[handle + 1]);
}
@@ -3112,7 +3112,7 @@ QVariant QMetaProperty::read(const QObject *object) const
t = enumMetaTypeId;
} else {
int handle = priv(mobj->d.data)->propertyData + 3*idx;
- const char *typeName = 0;
+ const char *typeName = nullptr;
Q_ASSERT(priv(mobj->d.data)->revision >= 7);
uint typeInfo = mobj->d.data[handle + 1];
if (!(typeInfo & IsUnresolvedType))
@@ -3138,11 +3138,11 @@ QVariant QMetaProperty::read(const QObject *object) const
// changed: result stored directly in value
int status = -1;
QVariant value;
- void *argv[] = { 0, &value, &status };
+ void *argv[] = { nullptr, &value, &status };
if (t == QMetaType::QVariant) {
argv[0] = &value;
} else {
- value = QVariant(t, (void*)0);
+ value = QVariant(t, (void*)nullptr);
argv[0] = value.data();
}
if (priv(mobj->d.data)->flags & PropertyAccessInStaticMetaCall && mobj->d.static_metacall) {
@@ -3196,7 +3196,7 @@ bool QMetaProperty::write(QObject *object, const QVariant &value) const
v.convert(QVariant::Int);
} else {
int handle = priv(mobj->d.data)->propertyData + 3*idx;
- const char *typeName = 0;
+ const char *typeName = nullptr;
Q_ASSERT(priv(mobj->d.data)->revision >= 7);
uint typeInfo = mobj->d.data[handle + 1];
if (!(typeInfo & IsUnresolvedType))
@@ -3213,7 +3213,7 @@ bool QMetaProperty::write(QObject *object, const QVariant &value) const
if (!value.isValid()) {
if (isResettable())
return reset(object);
- v = QVariant(t, 0);
+ v = QVariant(t, nullptr);
} else if (!v.convert(t)) {
return false;
}
@@ -3229,7 +3229,7 @@ bool QMetaProperty::write(QObject *object, const QVariant &value) const
// the flags variable is used by the declarative module to implement
// interception of property writes.
int flags = 0;
- void *argv[] = { 0, &v, &status, &flags };
+ void *argv[] = { nullptr, &v, &status, &flags };
if (t == QMetaType::QVariant)
argv[0] = &v;
else
@@ -3254,7 +3254,7 @@ bool QMetaProperty::reset(QObject *object) const
{
if (!object || !mobj || !isResettable())
return false;
- void *argv[] = { 0 };
+ void *argv[] = { nullptr };
if (priv(mobj->d.data)->flags & PropertyAccessInStaticMetaCall && mobj->d.static_metacall)
mobj->d.static_metacall(object, QMetaObject::ResetProperty, idx, argv);
else
@@ -3638,7 +3638,7 @@ bool QMetaProperty::isEditable(const QObject *object) const
const char *QMetaClassInfo::name() const
{
if (!mobj)
- return 0;
+ return nullptr;
return rawStringData(mobj, mobj->d.data[handle]);
}
@@ -3650,7 +3650,7 @@ const char *QMetaClassInfo::name() const
const char* QMetaClassInfo::value() const
{
if (!mobj)
- return 0;
+ return nullptr;
return rawStringData(mobj, mobj->d.data[handle + 1]);
}
diff --git a/src/corelib/kernel/qmetaobjectbuilder.cpp b/src/corelib/kernel/qmetaobjectbuilder.cpp
index f77c4ce32f..4ecc340787 100644
--- a/src/corelib/kernel/qmetaobjectbuilder.cpp
+++ b/src/corelib/kernel/qmetaobjectbuilder.cpp
@@ -210,7 +210,7 @@ public:
: flags(0)
{
superClass = &QObject::staticMetaObject;
- staticMetacallFunction = 0;
+ staticMetacallFunction = nullptr;
}
bool hasRevisionedProperties() const;
@@ -749,7 +749,7 @@ void QMetaObjectBuilder::addMetaObject
Q_ASSERT(priv(prototype->d.data)->revision >= 2);
const auto *objects = prototype->d.relatedMetaObjects;
if (objects) {
- while (*objects != 0) {
+ while (*objects != nullptr) {
addRelatedMetaObject(*objects);
++objects;
}
@@ -831,7 +831,7 @@ const QMetaObject *QMetaObjectBuilder::relatedMetaObject(int index) const
if (index >= 0 && index < d->relatedMetaObjects.size())
return d->relatedMetaObjects[index];
else
- return 0;
+ return nullptr;
}
/*!
@@ -1196,8 +1196,8 @@ static int buildMetaObject(QMetaObjectBuilderPrivate *d, char *buf,
ALIGN(size, int);
if (buf) {
if (!relocatable) meta->d.superdata = d->superClass;
- meta->d.relatedMetaObjects = 0;
- meta->d.extradata = 0;
+ meta->d.relatedMetaObjects = nullptr;
+ meta->d.extradata = nullptr;
meta->d.static_metacall = d->staticMetacallFunction;
}
@@ -1494,7 +1494,7 @@ static int buildMetaObject(QMetaObjectBuilderPrivate *d, char *buf,
*/
QMetaObject *QMetaObjectBuilder::toMetaObject() const
{
- int size = buildMetaObject(d, 0, 0, false);
+ int size = buildMetaObject(d, nullptr, 0, false);
char *buf = reinterpret_cast<char *>(malloc(size));
memset(buf, 0, size);
buildMetaObject(d, buf, size, false);
@@ -1517,7 +1517,7 @@ QMetaObject *QMetaObjectBuilder::toMetaObject() const
*/
QByteArray QMetaObjectBuilder::toRelocatableData(bool *ok) const
{
- int size = buildMetaObject(d, 0, 0, true);
+ int size = buildMetaObject(d, nullptr, 0, true);
if (size == -1) {
if (ok) *ok = false;
return QByteArray();
@@ -1555,9 +1555,9 @@ void QMetaObjectBuilder::fromRelocatableData(QMetaObject *output,
output->d.superdata = superclass;
output->d.stringdata = reinterpret_cast<const QByteArrayData *>(buf + stringdataOffset);
output->d.data = reinterpret_cast<const uint *>(buf + dataOffset);
- output->d.extradata = 0;
- output->d.relatedMetaObjects = 0;
- output->d.static_metacall = 0;
+ output->d.extradata = nullptr;
+ output->d.relatedMetaObjects = nullptr;
+ output->d.static_metacall = nullptr;
}
/*!
@@ -1720,14 +1720,14 @@ void QMetaObjectBuilder::deserialize
d->enumerators.clear();
d->constructors.clear();
d->relatedMetaObjects.clear();
- d->staticMetacallFunction = 0;
+ d->staticMetacallFunction = nullptr;
// Read the class and super class names.
stream >> d->className;
stream >> name;
if (name.isEmpty()) {
- d->superClass = 0;
- } else if ((cl = resolveClassName(references, name)) != 0) {
+ d->superClass = nullptr;
+ } else if ((cl = resolveClassName(references, name)) != nullptr) {
d->superClass = cl;
} else {
stream.setStatus(QDataStream::ReadCorruptData);
@@ -1877,7 +1877,7 @@ QMetaMethodBuilderPrivate *QMetaMethodBuilder::d_func() const
else if (_mobj && -_index >= 1 && -_index <= int(_mobj->d->constructors.size()))
return &(_mobj->d->constructors[(-_index) - 1]);
else
- return 0;
+ return nullptr;
}
/*!
@@ -2116,7 +2116,7 @@ QMetaPropertyBuilderPrivate *QMetaPropertyBuilder::d_func() const
if (_mobj && _index >= 0 && _index < int(_mobj->d->properties.size()))
return &(_mobj->d->properties[_index]);
else
- return 0;
+ return nullptr;
}
/*!
@@ -2588,7 +2588,7 @@ QMetaEnumBuilderPrivate *QMetaEnumBuilder::d_func() const
if (_mobj && _index >= 0 && _index < int(_mobj->d->enumerators.size()))
return &(_mobj->d->enumerators[_index]);
else
- return 0;
+ return nullptr;
}
/*!
diff --git a/src/corelib/kernel/qmetatype.cpp b/src/corelib/kernel/qmetatype.cpp
index 356a675517..af9a2e0dd2 100644
--- a/src/corelib/kernel/qmetatype.cpp
+++ b/src/corelib/kernel/qmetatype.cpp
@@ -506,6 +506,31 @@ struct DefinedTypesFilter {
Destructs this object.
*/
+/*!
+ \fn template<typename T> QMetaType QMetaType::fromType()
+ \since 5.15
+
+ Returns the QMetaType corresponding to the type in the template parameter.
+*/
+
+/*! \fn bool operator==(const QMetaType &a, const QMetaType &b)
+ \since 5.15
+ \relates QMetaType
+ \overload
+
+ Returns \c true if the QMetaType \a a represents the same type
+ as the QMetaType \a b, otherwise returns \c false.
+*/
+
+/*! \fn bool operator!=(const QMetaType &a, const QMetaType &c)
+ \since 5.15
+ \relates QMetaType
+ \overload
+
+ Returns \c true if the QMetaType \a a represents a difference type
+ than the QMetaType \a b, otherwise returns \c false.
+*/
+
#define QT_ADD_STATIC_METATYPE(MetaTypeName, MetaTypeId, RealName) \
{ #RealName, sizeof(#RealName) - 1, MetaTypeId },
@@ -930,7 +955,7 @@ constexpr MetaTypeOffsets<QtPrivate::Indexes<QMetaType::HighestInternalId + 1>::
pointer if no matching type was found. The returned pointer must not be
deleted.
- \sa type(), isRegistered(), Type
+ \sa type(), isRegistered(), Type, name()
*/
const char *QMetaType::typeName(int typeId)
{
@@ -950,6 +975,20 @@ const char *QMetaType::typeName(int typeId)
#undef QT_METATYPE_TYPEID_TYPENAME_CONVERTER
}
+/*!
+ \since 5.15
+
+ Returns the type name associated with this QMetaType, or a null
+ pointer if no matching type was found. The returned pointer must not be
+ deleted.
+
+ \sa typeName()
+*/
+QByteArray QMetaType::name() const
+{
+ return QMetaType::typeName(m_typeId);
+}
+
/*
Similar to QMetaType::type(), but only looks in the static set of types.
*/
@@ -1113,8 +1152,8 @@ static int registerNormalizedType(const NS(QByteArray) &normalizedTypeName,
QCustomTypeInfo inf;
inf.typeName = normalizedTypeName;
#ifndef QT_NO_DATASTREAM
- inf.loadOp = 0;
- inf.saveOp = 0;
+ inf.loadOp = nullptr;
+ inf.saveOp = nullptr;
#endif
inf.alias = -1;
inf.typedConstructor = typedConstructor;
@@ -1955,7 +1994,7 @@ public:
return Q_LIKELY(qMetaTypeWidgetsHelper)
? qMetaTypeWidgetsHelper[type - QMetaType::FirstWidgetsType].metaObject
: nullptr;
- return 0;
+ return nullptr;
}
};
@@ -2214,6 +2253,8 @@ QMetaType QMetaType::typeInfo(const int type)
\since 5.0
Constructs a QMetaType object that contains all information about type \a typeId.
+
+ \note: The default parameter was added in Qt 5.15
*/
QMetaType::QMetaType(const int typeId)
: m_typeId(typeId)
diff --git a/src/corelib/kernel/qmetatype.h b/src/corelib/kernel/qmetatype.h
index d41f7ee80e..825f767425 100644
--- a/src/corelib/kernel/qmetatype.h
+++ b/src/corelib/kernel/qmetatype.h
@@ -572,7 +572,7 @@ public:
static bool load(QDataStream &stream, int type, void *data);
#endif
- explicit QMetaType(const int type); // ### Qt6: drop const
+ explicit QMetaType(const int type = QMetaType::UnknownType); // ### Qt6: drop const
inline ~QMetaType();
inline bool isValid() const;
@@ -581,12 +581,24 @@ public:
inline int sizeOf() const;
inline TypeFlags flags() const;
inline const QMetaObject *metaObject() const;
+ QT_PREPEND_NAMESPACE(QByteArray) name() const;
inline void *create(const void *copy = nullptr) const;
inline void destroy(void *data) const;
inline void *construct(void *where, const void *copy = nullptr) const;
inline void destruct(void *data) const;
+ template<typename T>
+ static QMetaType fromType()
+ { return QMetaType(qMetaTypeId<T>()); }
+
+ friend bool operator==(const QMetaType &a, const QMetaType &b)
+ { return a.m_typeId == b.m_typeId; }
+
+ friend bool operator!=(const QMetaType &a, const QMetaType &b)
+ { return a.m_typeId != b.m_typeId; }
+
+
public:
template<typename T>
static bool registerComparators()
@@ -1212,9 +1224,12 @@ public:
{ IteratorOwner<typename T::const_iterator>::assign(iterator,
static_cast<const T*>(container)->find(*static_cast<const typename T::key_type*>(p))); }
+ QT_WARNING_PUSH
+ QT_WARNING_DISABLE_DEPRECATED // Hits on the deprecated QHash::iterator::operator--()
template<class T>
static void advanceImpl(void **p, int step)
{ std::advance(*static_cast<typename T::const_iterator*>(*p), step); }
+ QT_WARNING_POP
template<class T>
static void beginImpl(const void *container, void **iterator)
diff --git a/src/corelib/kernel/qmimedata.cpp b/src/corelib/kernel/qmimedata.cpp
index 9a98db21d3..00e5183eb1 100644
--- a/src/corelib/kernel/qmimedata.cpp
+++ b/src/corelib/kernel/qmimedata.cpp
@@ -319,7 +319,7 @@ QVariant QMimeDataPrivate::retrieveTypedData(const QString &format, QVariant::Ty
Constructs a new MIME data object with no data in it.
*/
QMimeData::QMimeData()
- : QObject(*new QMimeDataPrivate, 0)
+ : QObject(*new QMimeDataPrivate, nullptr)
{
}
diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp
index cf107498dd..a2c5d7db75 100644
--- a/src/corelib/kernel/qobject.cpp
+++ b/src/corelib/kernel/qobject.cpp
@@ -109,7 +109,7 @@ static int *queuedConnectionTypes(const QList<QByteArray> &typeNames)
"(Make sure '%s' is registered using qRegisterMetaType().)",
typeName.constData(), typeName.constData());
delete [] types;
- return 0;
+ return nullptr;
}
}
types[typeNames.count()] = 0;
@@ -133,7 +133,7 @@ static int *queuedConnectionTypes(const QArgumentType *argumentTypes, int argc)
qWarning("QObject::connect: Cannot queue arguments of type '%s'\n"
"(Make sure '%s' is registered using qRegisterMetaType().)",
type.name().constData(), type.name().constData());
- return 0;
+ return nullptr;
}
}
types[argc] = 0;
@@ -160,13 +160,13 @@ extern "C" Q_CORE_EXPORT void qt_removeObject(QObject *)
{}
#endif
-void (*QAbstractDeclarativeData::destroyed)(QAbstractDeclarativeData *, QObject *) = 0;
-void (*QAbstractDeclarativeData::destroyed_qml1)(QAbstractDeclarativeData *, QObject *) = 0;
-void (*QAbstractDeclarativeData::parentChanged)(QAbstractDeclarativeData *, QObject *, QObject *) = 0;
-void (*QAbstractDeclarativeData::signalEmitted)(QAbstractDeclarativeData *, QObject *, int, void **) = 0;
-int (*QAbstractDeclarativeData::receivers)(QAbstractDeclarativeData *, const QObject *, int) = 0;
-bool (*QAbstractDeclarativeData::isSignalConnected)(QAbstractDeclarativeData *, const QObject *, int) = 0;
-void (*QAbstractDeclarativeData::setWidgetParent)(QObject *, QObject *) = 0;
+void (*QAbstractDeclarativeData::destroyed)(QAbstractDeclarativeData *, QObject *) = nullptr;
+void (*QAbstractDeclarativeData::destroyed_qml1)(QAbstractDeclarativeData *, QObject *) = nullptr;
+void (*QAbstractDeclarativeData::parentChanged)(QAbstractDeclarativeData *, QObject *, QObject *) = nullptr;
+void (*QAbstractDeclarativeData::signalEmitted)(QAbstractDeclarativeData *, QObject *, int, void **) = nullptr;
+int (*QAbstractDeclarativeData::receivers)(QAbstractDeclarativeData *, const QObject *, int) = nullptr;
+bool (*QAbstractDeclarativeData::isSignalConnected)(QAbstractDeclarativeData *, const QObject *, int) = nullptr;
+void (*QAbstractDeclarativeData::setWidgetParent)(QObject *, QObject *) = nullptr;
/*!
\fn QObjectData::QObjectData()
@@ -182,7 +182,7 @@ QMetaObject *QObjectData::dynamicMetaObject() const
}
QObjectPrivate::QObjectPrivate(int version)
- : threadData(0), currentChildBeingDeleted(0)
+ : threadData(nullptr), currentChildBeingDeleted(nullptr)
{
#ifdef QT_BUILD_INTERNAL
// Don't check the version parameter in internal builds.
@@ -195,8 +195,8 @@ QObjectPrivate::QObjectPrivate(int version)
#endif
// QObjectData initialization
- q_ptr = 0;
- parent = 0; // no parent yet. It is set by setParent()
+ q_ptr = nullptr;
+ parent = nullptr; // no parent yet. It is set by setParent()
isWidget = false; // assume not a widget object
blockSig = false; // not blocking signals
wasDeleted = false; // double-delete catcher
@@ -204,19 +204,20 @@ QObjectPrivate::QObjectPrivate(int version)
sendChildEvents = true; // if we should send ChildAdded and ChildRemoved events to parent
receiveChildEvents = true;
postedEvents = 0;
- extraData = 0;
- metaObject = 0;
+ extraData = nullptr;
+ metaObject = nullptr;
isWindow = false;
deleteLaterCalled = false;
}
QObjectPrivate::~QObjectPrivate()
{
+ auto thisThreadData = threadData.loadRelaxed();
if (extraData && !extraData->runningTimers.isEmpty()) {
- if (Q_LIKELY(threadData->thread.loadAcquire() == QThread::currentThread())) {
+ if (Q_LIKELY(thisThreadData->thread.loadAcquire() == QThread::currentThread())) {
// unregister pending timers
- if (threadData->hasEventDispatcher())
- threadData->eventDispatcher.loadRelaxed()->unregisterTimers(q_ptr);
+ if (thisThreadData->hasEventDispatcher())
+ thisThreadData->eventDispatcher.loadRelaxed()->unregisterTimers(q_ptr);
// release the timer ids back to the pool
for (int i = 0; i < extraData->runningTimers.size(); ++i)
@@ -229,7 +230,7 @@ QObjectPrivate::~QObjectPrivate()
if (postedEvents)
QCoreApplication::removePostedEvents(q_ptr, 0);
- threadData->deref();
+ thisThreadData->deref();
if (metaObject) metaObject->objectDestroyed(q_ptr);
@@ -906,30 +907,8 @@ static bool check_parent_thread(QObject *parent,
*/
QObject::QObject(QObject *parent)
- : d_ptr(new QObjectPrivate)
+ : QObject(*new QObjectPrivate, parent)
{
- Q_ASSERT_X(this != parent, Q_FUNC_INFO, "Cannot parent a QObject to itself");
-
- Q_D(QObject);
- d_ptr->q_ptr = this;
- d->threadData = (parent && !parent->thread()) ? parent->d_func()->threadData : QThreadData::current();
- d->threadData->ref();
- if (parent) {
- QT_TRY {
- if (!check_parent_thread(parent, parent ? parent->d_func()->threadData : 0, d->threadData))
- parent = 0;
- setParent(parent);
- } QT_CATCH(...) {
- d->threadData->deref();
- QT_RETHROW;
- }
- }
-#if QT_VERSION < 0x60000
- qt_addObject(this);
-#endif
- if (Q_UNLIKELY(qtHookData[QHooks::AddQObject]))
- reinterpret_cast<QHooks::AddQObjectCallback>(qtHookData[QHooks::AddQObject])(this);
- Q_TRACE(QObject_ctor, this);
}
/*!
@@ -942,12 +921,13 @@ QObject::QObject(QObjectPrivate &dd, QObject *parent)
Q_D(QObject);
d_ptr->q_ptr = this;
- d->threadData = (parent && !parent->thread()) ? parent->d_func()->threadData : QThreadData::current();
- d->threadData->ref();
+ auto threadData = (parent && !parent->thread()) ? parent->d_func()->threadData.loadRelaxed() : QThreadData::current();
+ threadData->ref();
+ d->threadData.storeRelaxed(threadData);
if (parent) {
QT_TRY {
- if (!check_parent_thread(parent, parent ? parent->d_func()->threadData : 0, d->threadData))
- parent = 0;
+ if (!check_parent_thread(parent, parent ? parent->d_func()->threadData.loadRelaxed() : nullptr, threadData))
+ parent = nullptr;
if (d->isWidget) {
if (parent) {
d->parent = parent;
@@ -958,7 +938,7 @@ QObject::QObject(QObjectPrivate &dd, QObject *parent)
setParent(parent);
}
} QT_CATCH(...) {
- d->threadData->deref();
+ threadData->deref();
QT_RETHROW;
}
}
@@ -1115,7 +1095,7 @@ QObject::~QObject()
Q_TRACE(QObject_dtor, this);
if (d->parent) // remove it from parent object
- d->setParent_helper(0);
+ d->setParent_helper(nullptr);
}
QObjectPrivate::Connection::~Connection()
@@ -1342,7 +1322,7 @@ bool QObject::event(QEvent *e)
case QEvent::ThreadChange: {
Q_D(QObject);
- QThreadData *threadData = d->threadData;
+ QThreadData *threadData = d->threadData.loadRelaxed();
QAbstractEventDispatcher *eventDispatcher = threadData->eventDispatcher.loadRelaxed();
if (eventDispatcher) {
QList<QAbstractEventDispatcher::TimerInfo> timers = eventDispatcher->registeredTimers(this);
@@ -1509,7 +1489,7 @@ bool QObject::blockSignals(bool block) noexcept
*/
QThread *QObject::thread() const
{
- return d_func()->threadData->thread.loadAcquire();
+ return d_func()->threadData.loadRelaxed()->thread.loadAcquire();
}
/*!
@@ -1556,12 +1536,12 @@ void QObject::moveToThread(QThread *targetThread)
{
Q_D(QObject);
- if (d->threadData->thread.loadAcquire() == targetThread) {
+ if (d->threadData.loadRelaxed()->thread.loadAcquire() == targetThread) {
// object is already in this thread
return;
}
- if (d->parent != 0) {
+ if (d->parent != nullptr) {
qWarning("QObject::moveToThread: Cannot move objects with a parent");
return;
}
@@ -1572,13 +1552,14 @@ void QObject::moveToThread(QThread *targetThread)
QThreadData *currentData = QThreadData::current();
QThreadData *targetData = targetThread ? QThreadData::get2(targetThread) : nullptr;
- if (d->threadData->thread.loadAcquire() == 0 && currentData == targetData) {
+ QThreadData *thisThreadData = d->threadData.loadRelaxed();
+ if (!thisThreadData->thread.loadAcquire() && currentData == targetData) {
// one exception to the rule: we allow moving objects with no thread affinity to the current thread
currentData = d->threadData;
- } else if (d->threadData != currentData) {
+ } else if (thisThreadData != currentData) {
qWarning("QObject::moveToThread: Current thread (%p) is not the object's thread (%p).\n"
"Cannot move to target thread (%p)\n",
- currentData->thread.loadRelaxed(), d->threadData->thread.loadRelaxed(), targetData ? targetData->thread.loadRelaxed() : nullptr);
+ currentData->thread.loadRelaxed(), thisThreadData->thread.loadRelaxed(), targetData ? targetData->thread.loadRelaxed() : nullptr);
#ifdef Q_OS_MAC
qWarning("You might be loading two sets of Qt binaries into the same process. "
@@ -1637,7 +1618,7 @@ void QObjectPrivate::setThreadData_helper(QThreadData *currentData, QThreadData
if (pe.receiver == q) {
// move this post event to the targetList
targetData->postEventList.addEvent(pe);
- const_cast<QPostEvent &>(pe).event = 0;
+ const_cast<QPostEvent &>(pe).event = nullptr;
++eventsMoved;
}
}
@@ -1675,8 +1656,10 @@ void QObjectPrivate::setThreadData_helper(QThreadData *currentData, QThreadData
// set new thread data
targetData->ref();
- threadData->deref();
- threadData = targetData;
+ threadData.loadRelaxed()->deref();
+
+ // synchronizes with loadAcquire e.g. in QCoreApplication::postEvent
+ threadData.storeRelease(targetData);
for (int i = 0; i < children.size(); ++i) {
QObject *child = children.at(i);
@@ -1688,7 +1671,7 @@ void QObjectPrivate::_q_reregisterTimers(void *pointer)
{
Q_Q(QObject);
QList<QAbstractEventDispatcher::TimerInfo> *timerList = reinterpret_cast<QList<QAbstractEventDispatcher::TimerInfo> *>(pointer);
- QAbstractEventDispatcher *eventDispatcher = threadData->eventDispatcher.loadRelaxed();
+ QAbstractEventDispatcher *eventDispatcher = threadData.loadRelaxed()->eventDispatcher.loadRelaxed();
for (int i = 0; i < timerList->size(); ++i) {
const QAbstractEventDispatcher::TimerInfo &ti = timerList->at(i);
eventDispatcher->registerTimer(ti.timerId, ti.interval, ti.timerType, q);
@@ -1746,7 +1729,9 @@ int QObject::startTimer(int interval, Qt::TimerType timerType)
qWarning("QObject::startTimer: Timers cannot have negative intervals");
return 0;
}
- if (Q_UNLIKELY(!d->threadData->hasEventDispatcher())) {
+
+ auto thisThreadData = d->threadData.loadRelaxed();
+ if (Q_UNLIKELY(!thisThreadData->hasEventDispatcher())) {
qWarning("QObject::startTimer: Timers can only be used with threads started with QThread");
return 0;
}
@@ -1754,7 +1739,7 @@ int QObject::startTimer(int interval, Qt::TimerType timerType)
qWarning("QObject::startTimer: Timers cannot be started from another thread");
return 0;
}
- int timerId = d->threadData->eventDispatcher.loadRelaxed()->registerTimer(interval, timerType, this);
+ int timerId = thisThreadData->eventDispatcher.loadRelaxed()->registerTimer(interval, timerType, this);
if (!d->extraData)
d->extraData = new QObjectPrivate::ExtraData;
d->extraData->runningTimers.append(timerId);
@@ -1828,8 +1813,9 @@ void QObject::killTimer(int id)
return;
}
- if (d->threadData->hasEventDispatcher())
- d->threadData->eventDispatcher.loadRelaxed()->unregisterTimer(id);
+ auto thisThreadData = d->threadData.loadRelaxed();
+ if (thisThreadData->hasEventDispatcher())
+ thisThreadData->eventDispatcher.loadRelaxed()->unregisterTimer(id);
d->extraData->runningTimers.remove(at);
QAbstractEventDispatcherPrivate::releaseTimerId(id);
@@ -2079,7 +2065,7 @@ void qt_qFindChildren_helper(const QObject *parent, const QRegularExpression &re
QObject *qt_qFindChild_helper(const QObject *parent, const QString &name, const QMetaObject &mo, Qt::FindChildOptions options)
{
if (!parent)
- return 0;
+ return nullptr;
const QObjectList &children = parent->children();
QObject *obj;
int i;
@@ -2095,7 +2081,7 @@ QObject *qt_qFindChild_helper(const QObject *parent, const QString &name, const
return obj;
}
}
- return 0;
+ return nullptr;
}
/*!
@@ -2123,7 +2109,7 @@ void QObjectPrivate::deleteChildren()
delete currentChildBeingDeleted;
}
children.clear();
- currentChildBeingDeleted = 0;
+ currentChildBeingDeleted = nullptr;
isDeletingChildren = false;
}
@@ -2157,7 +2143,9 @@ void QObjectPrivate::setParent_helper(QObject *o)
// cleared our entry in parentD->children.
} else {
const int index = parentD->children.indexOf(q);
- if (parentD->isDeletingChildren) {
+ if (index < 0) {
+ // we're probably recursing into setParent() from a ChildRemoved event, don't do anything
+ } else if (parentD->isDeletingChildren) {
parentD->children[index] = 0;
} else {
parentD->children.removeAt(index);
@@ -2173,7 +2161,7 @@ void QObjectPrivate::setParent_helper(QObject *o)
// object hierarchies are constrained to a single thread
if (threadData != parent->d_func()->threadData) {
qWarning("QObject::setParent: Cannot set parent, new parent is in a different thread");
- parent = 0;
+ parent = nullptr;
return;
}
parent->d_func()->children.append(q);
@@ -2244,7 +2232,7 @@ void QObject::installEventFilter(QObject *obj)
d->extraData = new QObjectPrivate::ExtraData;
// clean up unused items in the list
- d->extraData->eventFilters.removeAll((QObject*)0);
+ d->extraData->eventFilters.removeAll((QObject*)nullptr);
d->extraData->eventFilters.removeAll(obj);
d->extraData->eventFilters.prepend(obj);
}
@@ -2268,7 +2256,7 @@ void QObject::removeEventFilter(QObject *obj)
if (d->extraData) {
for (int i = 0; i < d->extraData->eventFilters.count(); ++i) {
if (d->extraData->eventFilters.at(i) == obj)
- d->extraData->eventFilters[i] = 0;
+ d->extraData->eventFilters[i] = nullptr;
}
}
}
@@ -2391,7 +2379,7 @@ void QObject::deleteLater()
const char *qFlagLocation(const char *method)
{
QThreadData *currentThreadData = QThreadData::current(false);
- if (currentThreadData != 0)
+ if (currentThreadData != nullptr)
currentThreadData->flaggedSignatures.store(method);
return method;
}
@@ -2410,7 +2398,7 @@ static const char * extract_location(const char *member)
if (*location != '\0')
return location;
}
- return 0;
+ return nullptr;
}
static bool check_signal_macro(const QObject *sender, const char *signal,
@@ -2449,7 +2437,7 @@ static void err_method_notfound(const QObject *object,
case QSIGNAL_CODE: type = "signal"; break;
}
const char *loc = extract_location(method);
- if (strchr(method,')') == 0) // common typing mistake
+ if (strchr(method,')') == nullptr) // common typing mistake
qWarning("QObject::%s: Parentheses expected, %s %s::%s%s%s",
func, type, object->metaObject()->className(), method+1,
loc ? " in ": "", loc ? loc : "");
@@ -2509,7 +2497,7 @@ QObject *QObject::sender() const
return cd->currentSender->sender;
}
- return 0;
+ return nullptr;
}
/*!
@@ -2688,7 +2676,7 @@ void QMetaObjectPrivate::memberIndexes(const QObject *obj,
return;
const QMetaObject *m = obj->metaObject();
// Check that member is member of obj class
- while (m != 0 && m != member.mobj)
+ while (m != nullptr && m != member.mobj)
m = m->d.superdata;
if (!m)
return;
@@ -2799,18 +2787,18 @@ QMetaObject::Connection QObject::connect(const QObject *sender, const char *sign
const QObject *receiver, const char *method,
Qt::ConnectionType type)
{
- if (sender == 0 || receiver == 0 || signal == 0 || method == 0) {
+ if (sender == nullptr || receiver == nullptr || signal == nullptr || method == nullptr) {
qWarning("QObject::connect: Cannot connect %s::%s to %s::%s",
sender ? sender->metaObject()->className() : "(null)",
(signal && *signal) ? signal+1 : "(null)",
receiver ? receiver->metaObject()->className() : "(null)",
(method && *method) ? method+1 : "(null)");
- return QMetaObject::Connection(0);
+ return QMetaObject::Connection(nullptr);
}
QByteArray tmp_signal_name;
if (!check_signal_macro(sender, signal, "connect", "bind"))
- return QMetaObject::Connection(0);
+ return QMetaObject::Connection(nullptr);
const QMetaObject *smeta = sender->metaObject();
const char *signal_arg = signal;
++signal; //skip code
@@ -2833,7 +2821,7 @@ QMetaObject::Connection QObject::connect(const QObject *sender, const char *sign
if (signal_index < 0) {
err_method_notfound(sender, signal_arg, "connect");
err_info_about_objects("connect", sender, receiver);
- return QMetaObject::Connection(0);
+ return QMetaObject::Connection(nullptr);
}
signal_index = QMetaObjectPrivate::originalClone(smeta, signal_index);
signal_index += QMetaObjectPrivate::signalOffset(smeta);
@@ -2842,7 +2830,7 @@ QMetaObject::Connection QObject::connect(const QObject *sender, const char *sign
int membcode = extract_code(method);
if (!check_method_code(membcode, receiver, method, "connect"))
- return QMetaObject::Connection(0);
+ return QMetaObject::Connection(nullptr);
const char *method_arg = method;
++method; // skip code
@@ -2885,7 +2873,7 @@ QMetaObject::Connection QObject::connect(const QObject *sender, const char *sign
if (method_index_relative < 0) {
err_method_notfound(receiver, method_arg, "connect");
err_info_about_objects("connect", sender, receiver);
- return QMetaObject::Connection(0);
+ return QMetaObject::Connection(nullptr);
}
if (!QMetaObjectPrivate::checkConnectArgs(signalTypes.size(), signalTypes.constData(),
@@ -2894,13 +2882,13 @@ QMetaObject::Connection QObject::connect(const QObject *sender, const char *sign
"\n %s::%s --> %s::%s",
sender->metaObject()->className(), signal,
receiver->metaObject()->className(), method);
- return QMetaObject::Connection(0);
+ return QMetaObject::Connection(nullptr);
}
- int *types = 0;
+ int *types = nullptr;
if ((type == Qt::QueuedConnection)
&& !(types = queuedConnectionTypes(signalTypes.constData(), signalTypes.size()))) {
- return QMetaObject::Connection(0);
+ return QMetaObject::Connection(nullptr);
}
#ifndef QT_NO_DEBUG
@@ -2937,8 +2925,8 @@ QMetaObject::Connection QObject::connect(const QObject *sender, const QMetaMetho
const QObject *receiver, const QMetaMethod &method,
Qt::ConnectionType type)
{
- if (sender == 0
- || receiver == 0
+ if (sender == nullptr
+ || receiver == nullptr
|| signal.methodType() != QMetaMethod::Signal
|| method.methodType() == QMetaMethod::Constructor) {
qWarning("QObject::connect: Cannot connect %s::%s to %s::%s",
@@ -2946,7 +2934,7 @@ QMetaObject::Connection QObject::connect(const QObject *sender, const QMetaMetho
signal.methodSignature().constData(),
receiver ? receiver->metaObject()->className() : "(null)",
method.methodSignature().constData() );
- return QMetaObject::Connection(0);
+ return QMetaObject::Connection(nullptr);
}
int signal_index;
@@ -2962,12 +2950,12 @@ QMetaObject::Connection QObject::connect(const QObject *sender, const QMetaMetho
if (signal_index == -1) {
qWarning("QObject::connect: Can't find signal %s on instance of class %s",
signal.methodSignature().constData(), smeta->className());
- return QMetaObject::Connection(0);
+ return QMetaObject::Connection(nullptr);
}
if (method_index == -1) {
qWarning("QObject::connect: Can't find method %s on instance of class %s",
method.methodSignature().constData(), rmeta->className());
- return QMetaObject::Connection(0);
+ return QMetaObject::Connection(nullptr);
}
if (!QMetaObject::checkConnectArgs(signal.methodSignature().constData(), method.methodSignature().constData())) {
@@ -2975,19 +2963,19 @@ QMetaObject::Connection QObject::connect(const QObject *sender, const QMetaMetho
"\n %s::%s --> %s::%s",
smeta->className(), signal.methodSignature().constData(),
rmeta->className(), method.methodSignature().constData());
- return QMetaObject::Connection(0);
+ return QMetaObject::Connection(nullptr);
}
- int *types = 0;
+ int *types = nullptr;
if ((type == Qt::QueuedConnection)
&& !(types = queuedConnectionTypes(signal.parameterTypes())))
- return QMetaObject::Connection(0);
+ return QMetaObject::Connection(nullptr);
#ifndef QT_NO_DEBUG
check_and_warn_compat(smeta, signal, rmeta, method);
#endif
QMetaObject::Connection handle = QMetaObject::Connection(QMetaObjectPrivate::connect(
- sender, signal_index, signal.enclosingMetaObject(), receiver, method_index, 0, type, types));
+ sender, signal_index, signal.enclosingMetaObject(), receiver, method_index, nullptr, type, types));
return handle;
}
@@ -3070,7 +3058,7 @@ QMetaObject::Connection QObject::connect(const QObject *sender, const QMetaMetho
bool QObject::disconnect(const QObject *sender, const char *signal,
const QObject *receiver, const char *method)
{
- if (sender == 0 || (receiver == 0 && method != 0)) {
+ if (sender == nullptr || (receiver == nullptr && method != nullptr)) {
qWarning("QObject::disconnect: Unexpected null parameter");
return false;
}
@@ -3142,7 +3130,7 @@ bool QObject::disconnect(const QObject *sender, const char *signal,
}
if (!method) {
- res |= QMetaObjectPrivate::disconnect(sender, signal_index, smeta, receiver, -1, 0);
+ res |= QMetaObjectPrivate::disconnect(sender, signal_index, smeta, receiver, -1, nullptr);
} else {
const QMetaObject *rmeta = receiver->metaObject();
do {
@@ -3153,7 +3141,7 @@ bool QObject::disconnect(const QObject *sender, const char *signal,
rmeta = rmeta->superClass();
if (method_index < 0)
break;
- res |= QMetaObjectPrivate::disconnect(sender, signal_index, smeta, receiver, method_index, 0);
+ res |= QMetaObjectPrivate::disconnect(sender, signal_index, smeta, receiver, method_index, nullptr);
method_found = true;
} while ((rmeta = rmeta->superClass()));
}
@@ -3205,7 +3193,7 @@ bool QObject::disconnect(const QObject *sender, const char *signal,
bool QObject::disconnect(const QObject *sender, const QMetaMethod &signal,
const QObject *receiver, const QMetaMethod &method)
{
- if (sender == 0 || (receiver == 0 && method.mobj != 0)) {
+ if (sender == nullptr || (receiver == nullptr && method.mobj != nullptr)) {
qWarning("QObject::disconnect: Unexpected null parameter");
return false;
}
@@ -3254,7 +3242,7 @@ bool QObject::disconnect(const QObject *sender, const QMetaMethod &signal,
return false;
}
- if (!QMetaObjectPrivate::disconnect(sender, signal_index, signal.mobj, receiver, method_index, 0))
+ if (!QMetaObjectPrivate::disconnect(sender, signal_index, signal.mobj, receiver, method_index, nullptr))
return false;
if (!signal.isValid()) {
@@ -3393,7 +3381,7 @@ QMetaObject::Connection QMetaObject::connect(const QObject *sender, int signal_i
signal_index = methodIndexToSignalIndex(&smeta, signal_index);
return Connection(QMetaObjectPrivate::connect(sender, signal_index, smeta,
receiver, method_index,
- 0, //FIXME, we could speed this connection up by computing the relative index
+ nullptr, //FIXME, we could speed this connection up by computing the relative index
type, types));
}
@@ -3469,7 +3457,7 @@ bool QMetaObject::disconnect(const QObject *sender, int signal_index,
const QMetaObject *smeta = sender->metaObject();
signal_index = methodIndexToSignalIndex(&smeta, signal_index);
return QMetaObjectPrivate::disconnect(sender, signal_index, smeta,
- receiver, method_index, 0);
+ receiver, method_index, nullptr);
}
/*!
@@ -3485,7 +3473,7 @@ bool QMetaObject::disconnectOne(const QObject *sender, int signal_index,
const QMetaObject *smeta = sender->metaObject();
signal_index = methodIndexToSignalIndex(&smeta, signal_index);
return QMetaObjectPrivate::disconnect(sender, signal_index, smeta,
- receiver, method_index, 0,
+ receiver, method_index, nullptr,
QMetaObjectPrivate::DisconnectOne);
}
@@ -3694,7 +3682,7 @@ static void queued_activate(QObject *sender, int signal, QObjectPrivate::Connect
argumentTypes = queuedConnectionTypes(m.parameterTypes());
if (!argumentTypes) // cannot queue arguments
argumentTypes = &DIRECT_CONNECTION_ONLY;
- if (!c->argumentTypes.testAndSetOrdered(0, argumentTypes)) {
+ if (!c->argumentTypes.testAndSetOrdered(nullptr, argumentTypes)) {
if (argumentTypes != &DIRECT_CONNECTION_ONLY)
delete [] argumentTypes;
argumentTypes = c->argumentTypes.loadRelaxed();
@@ -3794,7 +3782,7 @@ void doActivate(QObject *sender, int signal_index, void **argv)
list = &signalVector->at(-1);
Qt::HANDLE currentThreadId = QThread::currentThreadId();
- bool inSenderThread = currentThreadId == QObjectPrivate::get(sender)->threadData->threadId.loadRelaxed();
+ bool inSenderThread = currentThreadId == QObjectPrivate::get(sender)->threadData.loadRelaxed()->threadId.loadRelaxed();
// We need to check against the highest connection id to ensure that signals added
// during the signal emission are not emitted in this emission.
@@ -4305,10 +4293,10 @@ QObjectUserData* QObject::userData(uint id) const
{
Q_D(const QObject);
if (!d->extraData)
- return 0;
+ return nullptr;
if ((int)id < d->extraData->userData.size())
return d->extraData->userData.at(id);
- return 0;
+ return nullptr;
}
#endif // QT_NO_USERDATA
@@ -4964,7 +4952,7 @@ QMetaObject::Connection QObject::connectImpl(const QObject *sender, void **signa
if (!senderMetaObject) {
qWarning("QObject::connect: signal not found in %s", sender->metaObject()->className());
slotObj->destroyIfLastRef();
- return QMetaObject::Connection(0);
+ return QMetaObject::Connection(nullptr);
}
signal_index += QMetaObjectPrivate::signalOffset(senderMetaObject);
return QObjectPrivate::connectImpl(sender, signal_index, receiver, slot, slotObj, type, types, senderMetaObject);
@@ -5150,7 +5138,7 @@ bool QObject::disconnect(const QMetaObject::Connection &connection)
bool QObject::disconnectImpl(const QObject *sender, void **signal, const QObject *receiver, void **slot, const QMetaObject *senderMetaObject)
{
- if (sender == 0 || (receiver == 0 && slot != 0)) {
+ if (sender == nullptr || (receiver == nullptr && slot != nullptr)) {
qWarning("QObject::disconnect: Unexpected null parameter");
return false;
}
@@ -5190,7 +5178,7 @@ QMetaObject::Connection QObjectPrivate::connect(const QObject *sender, int signa
const QMetaObject *senderMetaObject = sender->metaObject();
signal_index = methodIndexToSignalIndex(&senderMetaObject, signal_index);
- return QObjectPrivate::connectImpl(sender, signal_index, sender, /*slot*/0, slotObj, type, /*types*/0, senderMetaObject);
+ return QObjectPrivate::connectImpl(sender, signal_index, sender, /*slot*/nullptr, slotObj, type, /*types*/nullptr, senderMetaObject);
}
/*!
@@ -5247,7 +5235,7 @@ QMetaObject::Connection& QMetaObject::Connection::operator=(const QMetaObject::C
Creates a Connection instance.
*/
-QMetaObject::Connection::Connection() : d_ptr(0) {}
+QMetaObject::Connection::Connection() : d_ptr(nullptr) {}
/*!
Destructor for QMetaObject::Connection.
diff --git a/src/corelib/kernel/qobject_p.h b/src/corelib/kernel/qobject_p.h
index feafcaf323..1ebf8e7a07 100644
--- a/src/corelib/kernel/qobject_p.h
+++ b/src/corelib/kernel/qobject_p.h
@@ -374,7 +374,13 @@ public:
}
public:
ExtraData *extraData; // extra data set by the user
- QThreadData *threadData; // id of the thread that owns the object
+ QThreadData *getThreadData() const { return threadData.loadAcquire(); }
+ // This atomic requires acquire/release semantics in a few places,
+ // e.g. QObject::moveToThread must synchronize with QCoreApplication::postEvent,
+ // because postEvent is thread-safe.
+ // However, most of the code paths involving QObject are only reentrant and
+ // not thread-safe, so synchronization should not be necessary there.
+ QAtomicPointer<QThreadData> threadData; // id of the thread that owns the object
using ConnectionDataPointer = QExplicitlySharedDataPointer<ConnectionData>;
QAtomicPointer<ConnectionData> connections;
diff --git a/src/corelib/kernel/qobjectcleanuphandler.cpp b/src/corelib/kernel/qobjectcleanuphandler.cpp
index b6c62af4b3..8bf0e1fcab 100644
--- a/src/corelib/kernel/qobjectcleanuphandler.cpp
+++ b/src/corelib/kernel/qobjectcleanuphandler.cpp
@@ -94,7 +94,7 @@ QObjectCleanupHandler::~QObjectCleanupHandler()
QObject *QObjectCleanupHandler::add(QObject* object)
{
if (!object)
- return 0;
+ return nullptr;
connect(object, SIGNAL(destroyed(QObject*)), this, SLOT(objectDestroyed(QObject*)));
cleanupObjects.insert(0, object);
diff --git a/src/corelib/kernel/qsharedmemory.cpp b/src/corelib/kernel/qsharedmemory.cpp
index 39f3002394..2d65e0bbe4 100644
--- a/src/corelib/kernel/qsharedmemory.cpp
+++ b/src/corelib/kernel/qsharedmemory.cpp
@@ -441,7 +441,7 @@ bool QSharedMemory::attach(AccessMode mode)
bool QSharedMemory::isAttached() const
{
Q_D(const QSharedMemory);
- return (0 != d->memory);
+ return (nullptr != d->memory);
}
/*!
diff --git a/src/corelib/kernel/qsharedmemory_systemv.cpp b/src/corelib/kernel/qsharedmemory_systemv.cpp
index fea4a65b5c..0ba5f65641 100644
--- a/src/corelib/kernel/qsharedmemory_systemv.cpp
+++ b/src/corelib/kernel/qsharedmemory_systemv.cpp
@@ -182,9 +182,9 @@ bool QSharedMemoryPrivate::attach(QSharedMemory::AccessMode mode)
}
// grab the memory
- memory = shmat(id, 0, (mode == QSharedMemory::ReadOnly ? SHM_RDONLY : 0));
+ memory = shmat(id, nullptr, (mode == QSharedMemory::ReadOnly ? SHM_RDONLY : 0));
if ((void*) - 1 == memory) {
- memory = 0;
+ memory = nullptr;
setErrorString(QLatin1String("QSharedMemory::attach (shmat)"));
return false;
}
@@ -216,7 +216,7 @@ bool QSharedMemoryPrivate::detach()
}
return false;
}
- memory = 0;
+ memory = nullptr;
size = 0;
// Get the number of current attachments
diff --git a/src/corelib/kernel/qsharedmemory_unix.cpp b/src/corelib/kernel/qsharedmemory_unix.cpp
index f6d7e78441..bc0f3b03ca 100644
--- a/src/corelib/kernel/qsharedmemory_unix.cpp
+++ b/src/corelib/kernel/qsharedmemory_unix.cpp
@@ -68,7 +68,7 @@ QSharedMemoryPrivate::QSharedMemoryPrivate() :
#ifndef QT_NO_QOBJECT
QObjectPrivate(),
#endif
- memory(0), size(0), error(QSharedMemory::NoError),
+ memory(nullptr), size(0), error(QSharedMemory::NoError),
#ifndef QT_NO_SYSTEMSEMAPHORE
systemSemaphore(QString()), lockedByMe(false),
#endif
diff --git a/src/corelib/kernel/qsocketnotifier.cpp b/src/corelib/kernel/qsocketnotifier.cpp
index 2a246b1204..78269ee605 100644
--- a/src/corelib/kernel/qsocketnotifier.cpp
+++ b/src/corelib/kernel/qsocketnotifier.cpp
@@ -147,12 +147,14 @@ QSocketNotifier::QSocketNotifier(qintptr socket, Type type, QObject *parent)
d->sntype = type;
d->snenabled = true;
+ auto thisThreadData = d->threadData.loadRelaxed();
+
if (socket < 0)
qWarning("QSocketNotifier: Invalid socket specified");
- else if (!d->threadData->hasEventDispatcher())
+ else if (!thisThreadData->hasEventDispatcher())
qWarning("QSocketNotifier: Can only be used with threads started with QThread");
else
- d->threadData->eventDispatcher.loadRelaxed()->registerSocketNotifier(this);
+ thisThreadData->eventDispatcher.loadRelaxed()->registerSocketNotifier(this);
}
/*!
@@ -234,16 +236,19 @@ void QSocketNotifier::setEnabled(bool enable)
return;
d->snenabled = enable;
- if (!d->threadData->hasEventDispatcher()) // perhaps application/thread is shutting down
+
+ auto thisThreadData = d->threadData.loadRelaxed();
+
+ if (!thisThreadData->hasEventDispatcher()) // perhaps application/thread is shutting down
return;
if (Q_UNLIKELY(thread() != QThread::currentThread())) {
qWarning("QSocketNotifier: Socket notifiers cannot be enabled or disabled from another thread");
return;
}
if (d->snenabled)
- d->threadData->eventDispatcher.loadRelaxed()->registerSocketNotifier(this);
+ thisThreadData->eventDispatcher.loadRelaxed()->registerSocketNotifier(this);
else
- d->threadData->eventDispatcher.loadRelaxed()->unregisterSocketNotifier(this);
+ thisThreadData->eventDispatcher.loadRelaxed()->unregisterSocketNotifier(this);
}
diff --git a/src/corelib/kernel/qtestsupport_core.cpp b/src/corelib/kernel/qtestsupport_core.cpp
index 7bd81ed498..8498f7f025 100644
--- a/src/corelib/kernel/qtestsupport_core.cpp
+++ b/src/corelib/kernel/qtestsupport_core.cpp
@@ -55,7 +55,7 @@ Q_CORE_EXPORT void QTestPrivate::qSleep(int ms)
Sleep(uint(ms));
#else
struct timespec ts = { time_t(ms / 1000), (ms % 1000) * 1000 * 1000 };
- nanosleep(&ts, NULL);
+ nanosleep(&ts, nullptr);
#endif
}
diff --git a/src/corelib/kernel/qtimer.cpp b/src/corelib/kernel/qtimer.cpp
index 4d8778ecf5..25ce0c032f 100644
--- a/src/corelib/kernel/qtimer.cpp
+++ b/src/corelib/kernel/qtimer.cpp
@@ -277,7 +277,7 @@ protected:
};
QSingleShotTimer::QSingleShotTimer(int msec, Qt::TimerType timerType, const QObject *r, const char *member)
- : QObject(QAbstractEventDispatcher::instance()), hasValidReceiver(true), slotObj(0)
+ : QObject(QAbstractEventDispatcher::instance()), hasValidReceiver(true), slotObj(nullptr)
{
timerId = startTimer(msec, timerType);
connect(this, SIGNAL(timeout()), r, member);
@@ -290,7 +290,7 @@ QSingleShotTimer::QSingleShotTimer(int msec, Qt::TimerType timerType, const QObj
if (r && thread() != r->thread()) {
// Avoid leaking the QSingleShotTimer instance in case the application exits before the timer fires
connect(QCoreApplication::instance(), &QCoreApplication::aboutToQuit, this, &QObject::deleteLater);
- setParent(0);
+ setParent(nullptr);
moveToThread(r->thread());
}
}
@@ -316,7 +316,7 @@ void QSingleShotTimer::timerEvent(QTimerEvent *)
if (Q_LIKELY(!receiver.isNull() || !hasValidReceiver)) {
// We allocate only the return type - we previously checked the function had
// no arguments.
- void *args[1] = { 0 };
+ void *args[1] = { nullptr };
slotObj->call(const_cast<QObject*>(receiver.data()), args);
}
} else {
diff --git a/src/corelib/kernel/qtimerinfo_unix.cpp b/src/corelib/kernel/qtimerinfo_unix.cpp
index 39010c19cb..b425ca3dcb 100644
--- a/src/corelib/kernel/qtimerinfo_unix.cpp
+++ b/src/corelib/kernel/qtimerinfo_unix.cpp
@@ -83,7 +83,7 @@ QTimerInfoList::QTimerInfoList()
}
#endif
- firstTimerInfo = 0;
+ firstTimerInfo = nullptr;
}
timespec QTimerInfoList::updateCurrentTime()
@@ -389,7 +389,7 @@ bool QTimerInfoList::timerWait(timespec &tm)
repairTimersIfNeeded();
// Find first waiting timer not already active
- QTimerInfo *t = 0;
+ QTimerInfo *t = nullptr;
for (QTimerInfoList::const_iterator it = constBegin(); it != constEnd(); ++it) {
if (!(*it)->activateRef) {
t = *it;
@@ -450,7 +450,7 @@ void QTimerInfoList::registerTimer(int timerId, int interval, Qt::TimerType time
t->interval = interval;
t->timerType = timerType;
t->obj = object;
- t->activateRef = 0;
+ t->activateRef = nullptr;
timespec expected = updateCurrentTime() + interval;
@@ -514,9 +514,9 @@ bool QTimerInfoList::unregisterTimer(int timerId)
// found it
removeAt(i);
if (t == firstTimerInfo)
- firstTimerInfo = 0;
+ firstTimerInfo = nullptr;
if (t->activateRef)
- *(t->activateRef) = 0;
+ *(t->activateRef) = nullptr;
delete t;
return true;
}
@@ -535,9 +535,9 @@ bool QTimerInfoList::unregisterTimers(QObject *object)
// object found
removeAt(i);
if (t == firstTimerInfo)
- firstTimerInfo = 0;
+ firstTimerInfo = nullptr;
if (t->activateRef)
- *(t->activateRef) = 0;
+ *(t->activateRef) = nullptr;
delete t;
// move back one so that we don't skip the new current item
--i;
@@ -571,7 +571,7 @@ int QTimerInfoList::activateTimers()
return 0; // nothing to do
int n_act = 0, maxCount = 0;
- firstTimerInfo = 0;
+ firstTimerInfo = nullptr;
timespec currentTime = updateCurrentTime();
// qDebug() << "Thread" << QThread::currentThreadId() << "woken up at" << currentTime;
@@ -643,11 +643,11 @@ int QTimerInfoList::activateTimers()
QCoreApplication::sendEvent(currentTimerInfo->obj, &e);
if (currentTimerInfo)
- currentTimerInfo->activateRef = 0;
+ currentTimerInfo->activateRef = nullptr;
}
}
- firstTimerInfo = 0;
+ firstTimerInfo = nullptr;
// qDebug() << "Thread" << QThread::currentThreadId() << "activated" << n_act << "timers";
return n_act;
}
diff --git a/src/corelib/kernel/qtranslator.cpp b/src/corelib/kernel/qtranslator.cpp
index ddb96ecad6..93d75feafa 100644
--- a/src/corelib/kernel/qtranslator.cpp
+++ b/src/corelib/kernel/qtranslator.cpp
@@ -289,8 +289,8 @@ public:
#if defined(QT_USE_MMAP)
used_mmap(0),
#endif
- unmapPointer(0), unmapLength(0), resource(0),
- messageArray(0), offsetArray(0), contextArray(0), numerusRulesArray(0),
+ unmapPointer(nullptr), unmapLength(0), resource(nullptr),
+ messageArray(nullptr), offsetArray(nullptr), contextArray(nullptr), numerusRulesArray(nullptr),
messageLength(0), offsetLength(0), contextLength(0), numerusRulesLength(0) {}
#if defined(QT_USE_MMAP)
@@ -539,7 +539,7 @@ bool QTranslatorPrivate::do_load(const QString &realname, const QString &directo
ok = true;
} else {
delete resource;
- resource = 0;
+ resource = nullptr;
}
}
@@ -610,8 +610,8 @@ bool QTranslatorPrivate::do_load(const QString &realname, const QString &directo
delete [] unmapPointer;
delete d->resource;
- d->resource = 0;
- d->unmapPointer = 0;
+ d->resource = nullptr;
+ d->unmapPointer = nullptr;
d->unmapLength = 0;
return false;
@@ -874,10 +874,10 @@ bool QTranslatorPrivate::do_load(const uchar *data, qsizetype len, const QString
}
if (!ok) {
- messageArray = 0;
- contextArray = 0;
- offsetArray = 0;
- numerusRulesArray = 0;
+ messageArray = nullptr;
+ contextArray = nullptr;
+ offsetArray = nullptr;
+ numerusRulesArray = nullptr;
messageLength = 0;
contextLength = 0;
offsetLength = 0;
@@ -890,7 +890,7 @@ bool QTranslatorPrivate::do_load(const uchar *data, qsizetype len, const QString
static QString getMessage(const uchar *m, const uchar *end, const char *context,
const char *sourceText, const char *comment, uint numerus)
{
- const uchar *tn = 0;
+ const uchar *tn = nullptr;
uint tn_length = 0;
const uint sourceTextLen = uint(strlen(sourceText));
const uint contextLen = uint(strlen(context));
@@ -957,11 +957,11 @@ end:
QString QTranslatorPrivate::do_translate(const char *context, const char *sourceText,
const char *comment, int n) const
{
- if (context == 0)
+ if (context == nullptr)
context = "";
- if (sourceText == 0)
+ if (sourceText == nullptr)
sourceText = "";
- if (comment == 0)
+ if (comment == nullptr)
comment = "";
uint numerus = 0;
@@ -1076,13 +1076,13 @@ void QTranslatorPrivate::clear()
}
delete resource;
- resource = 0;
- unmapPointer = 0;
+ resource = nullptr;
+ unmapPointer = nullptr;
unmapLength = 0;
- messageArray = 0;
- contextArray = 0;
- offsetArray = 0;
- numerusRulesArray = 0;
+ messageArray = nullptr;
+ contextArray = nullptr;
+ offsetArray = nullptr;
+ numerusRulesArray = nullptr;
messageLength = 0;
contextLength = 0;
offsetLength = 0;
diff --git a/src/corelib/kernel/qvariant.cpp b/src/corelib/kernel/qvariant.cpp
index a1e1c71d12..40a401361d 100644
--- a/src/corelib/kernel/qvariant.cpp
+++ b/src/corelib/kernel/qvariant.cpp
@@ -2254,10 +2254,10 @@ QVariant::QVariant(const QRegularExpression &re)
: d(RegularExpression)
{ v_construct<QRegularExpression>(&d, re); }
#endif // QT_CONFIG(regularexpression)
-#ifndef QT_BOOTSTRAPPED
QVariant::QVariant(const QUuid &uuid)
: d(Uuid)
{ v_construct<QUuid>(&d, uuid); }
+#ifndef QT_BOOTSTRAPPED
QVariant::QVariant(const QJsonValue &jsonValue)
: d(QMetaType::QJsonValue)
{ v_construct<QJsonValue>(&d, jsonValue); }
@@ -2523,7 +2523,7 @@ void QVariant::load(QDataStream &s)
return;
}
}
- create(typeId, 0);
+ create(typeId, nullptr);
d.is_null = is_null;
if (!isValid()) {
@@ -3011,7 +3011,6 @@ QPersistentModelIndex QVariant::toPersistentModelIndex() const
}
#endif // QT_CONFIG(itemmodel)
-#ifndef QT_BOOTSTRAPPED
/*!
\since 5.0
@@ -3026,6 +3025,7 @@ QUuid QVariant::toUuid() const
return qVariantToHelper<QUuid>(d, handlerManager);
}
+#ifndef QT_BOOTSTRAPPED
/*!
\since 5.0
@@ -3829,6 +3829,7 @@ bool QVariant::convert(const int type, void *ptr) const
/*!
\fn bool QVariant::operator<(const QVariant &v) const
+ \obsolete
Compares this QVariant with \a v and returns \c true if this is less than \a v.
@@ -3838,10 +3839,15 @@ bool QVariant::convert(const int type, void *ptr) const
\warning To make this function work with a custom type registered with
qRegisterMetaType(), its comparison operator must be registered using
QMetaType::registerComparators().
+
+ This operator is deprecated as it cannot establish a total order required
+ for most use of this operator, which is the reason you cannot use QVariant
+ as the key of a QMap.
*/
/*!
\fn bool QVariant::operator<=(const QVariant &v) const
+ \obsolete
Compares this QVariant with \a v and returns \c true if this is less or equal than \a v.
@@ -3851,10 +3857,13 @@ bool QVariant::convert(const int type, void *ptr) const
\warning To make this function work with a custom type registered with
qRegisterMetaType(), its comparison operator must be registered using
QMetaType::registerComparators().
+
+ This operator is deprecated as it cannot establish a total order.
*/
/*!
\fn bool QVariant::operator>(const QVariant &v) const
+ \obsolete
Compares this QVariant with \a v and returns \c true if this is larger than \a v.
@@ -3864,10 +3873,13 @@ bool QVariant::convert(const int type, void *ptr) const
\warning To make this function work with a custom type registered with
qRegisterMetaType(), its comparison operator must be registered using
QMetaType::registerComparators().
+
+ This operator is deprecated as it cannot establish a total order.
*/
/*!
\fn bool QVariant::operator>=(const QVariant &v) const
+ \obsolete
Compares this QVariant with \a v and returns \c true if this is larger or equal than \a v.
@@ -3877,6 +3889,8 @@ bool QVariant::convert(const int type, void *ptr) const
\warning To make this function work with a custom type registered with
qRegisterMetaType(), its comparison operator must be registered using
QMetaType::registerComparators().
+
+ This operator is deprecated as it cannot establish a total order.
*/
static bool qIsNumericType(uint tp)
diff --git a/src/corelib/kernel/qvariant.h b/src/corelib/kernel/qvariant.h
index a4957472ec..f48419c934 100644
--- a/src/corelib/kernel/qvariant.h
+++ b/src/corelib/kernel/qvariant.h
@@ -256,12 +256,12 @@ class Q_CORE_EXPORT QVariant
#if QT_CONFIG(regularexpression)
QVariant(const QRegularExpression &re);
#endif // QT_CONFIG(regularexpression)
-#ifndef QT_BOOTSTRAPPED
- QVariant(const QUrl &url);
#if QT_CONFIG(easingcurve)
QVariant(const QEasingCurve &easing);
#endif
QVariant(const QUuid &uuid);
+#ifndef QT_BOOTSTRAPPED
+ QVariant(const QUrl &url);
QVariant(const QJsonValue &jsonValue);
QVariant(const QJsonObject &jsonObject);
QVariant(const QJsonArray &jsonArray);
@@ -332,12 +332,12 @@ class Q_CORE_EXPORT QVariant
#if QT_CONFIG(regularexpression)
QRegularExpression toRegularExpression() const;
#endif // QT_CONFIG(regularexpression)
-#ifndef QT_BOOTSTRAPPED
- QUrl toUrl() const;
#if QT_CONFIG(easingcurve)
QEasingCurve toEasingCurve() const;
#endif
QUuid toUuid() const;
+#ifndef QT_BOOTSTRAPPED
+ QUrl toUrl() const;
QJsonValue toJsonValue() const;
QJsonObject toJsonObject() const;
QJsonArray toJsonArray() const;
@@ -463,14 +463,16 @@ class Q_CORE_EXPORT QVariant
{ return cmp(v); }
inline bool operator!=(const QVariant &v) const
{ return !cmp(v); }
- inline bool operator<(const QVariant &v) const
+#if QT_DEPRECATED_SINCE(5, 15)
+ QT_DEPRECATED inline bool operator<(const QVariant &v) const
{ return compare(v) < 0; }
- inline bool operator<=(const QVariant &v) const
+ QT_DEPRECATED inline bool operator<=(const QVariant &v) const
{ return compare(v) <= 0; }
- inline bool operator>(const QVariant &v) const
+ QT_DEPRECATED inline bool operator>(const QVariant &v) const
{ return compare(v) > 0; }
- inline bool operator>=(const QVariant &v) const
+ QT_DEPRECATED inline bool operator>=(const QVariant &v) const
{ return compare(v) >= 0; }
+#endif
protected:
friend inline bool operator==(const QVariant &, const QVariantComparisonHelper &);
diff --git a/src/corelib/kernel/qwineventnotifier.cpp b/src/corelib/kernel/qwineventnotifier.cpp
index d2ae9668fe..db5d44b276 100644
--- a/src/corelib/kernel/qwineventnotifier.cpp
+++ b/src/corelib/kernel/qwineventnotifier.cpp
@@ -124,7 +124,7 @@ QWinEventNotifier::QWinEventNotifier(HANDLE hEvent, QObject *parent)
: QObject(*new QWinEventNotifierPrivate(hEvent, false), parent)
{
Q_D(QWinEventNotifier);
- QAbstractEventDispatcher *eventDispatcher = d->threadData->eventDispatcher.loadRelaxed();
+ QAbstractEventDispatcher *eventDispatcher = d->threadData.loadRelaxed()->eventDispatcher.loadRelaxed();
if (Q_UNLIKELY(!eventDispatcher)) {
qWarning("QWinEventNotifier: Can only be used with threads started with QThread");
return;
@@ -197,7 +197,7 @@ void QWinEventNotifier::setEnabled(bool enable)
return;
d->enabled = enable;
- QAbstractEventDispatcher *eventDispatcher = d->threadData->eventDispatcher.loadRelaxed();
+ QAbstractEventDispatcher *eventDispatcher = d->threadData.loadRelaxed()->eventDispatcher.loadRelaxed();
if (!eventDispatcher) { // perhaps application is shutting down
if (!enable && d->waitHandle != nullptr)
d->unregisterWaitObject();
@@ -256,7 +256,7 @@ void QWinEventNotifierPrivate::unregisterWaitObject()
static void CALLBACK wfsoCallback(void *context, BOOLEAN /*ignore*/)
{
QWinEventNotifierPrivate *nd = reinterpret_cast<QWinEventNotifierPrivate *>(context);
- QAbstractEventDispatcher *eventDispatcher = nd->threadData->eventDispatcher.loadRelaxed();
+ QAbstractEventDispatcher *eventDispatcher = nd->threadData.loadRelaxed()->eventDispatcher.loadRelaxed();
// Happens when Q(Core)Application is destroyed before QWinEventNotifier.
// https://bugreports.qt.io/browse/QTBUG-70214
diff --git a/src/corelib/mimetypes/mime/generate.bat b/src/corelib/mimetypes/mime/generate.bat
new file mode 100644
index 0000000000..f63fc63693
--- /dev/null
+++ b/src/corelib/mimetypes/mime/generate.bat
@@ -0,0 +1,73 @@
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::
+:: Copyright (C) 2019 Intel Corporation.
+:: Contact: https://www.qt.io/licensing/
+::
+:: This file is part of the tools applications of the Qt Toolkit.
+::
+:: $QT_BEGIN_LICENSE:GPL-EXCEPT$
+:: Commercial License Usage
+:: Licensees holding valid commercial Qt licenses may use this file in
+:: accordance with the commercial license agreement provided with the
+:: Software or, alternatively, in accordance with the terms contained in
+:: a written agreement between you and The Qt Company. For licensing terms
+:: and conditions see https://www.qt.io/terms-conditions. For further
+:: information use the contact form at https://www.qt.io/contact-us.
+::
+:: GNU General Public License Usage
+:: Alternatively, this file may be used under the terms of the GNU
+:: General Public License version 3 as published by the Free Software
+:: Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+:: included in the packaging of this file. Please review the following
+:: information to ensure the GNU General Public License requirements will
+:: be met: https://www.gnu.org/licenses/gpl-3.0.html.
+::
+:: $QT_END_LICENSE$
+::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+
+@echo off
+setlocal ENABLEDELAYEDEXPANSION ENABLEEXTENSIONS
+set me=%~dp0
+
+:: Check if certain tools are in PATH
+for %%C in (gzip.exe zstd.exe perl.exe) do set %%C=%%~$PATH:C
+
+:: If perl is in PATH, just let it do everything
+if not "%perl.exe%" == "" goto PuntToPerl
+
+set COMPRESS=
+set MACRO=MIME_DATABASE_IS_UNCOMPRESSED
+if not "%gzip.exe%" == "" (
+ set COMPRESS=gzip -9
+ set MACRO=MIME_DATABASE_IS_GZIP
+)
+
+:: Check if zstd support was enabled
+if /i "%~1" == "--zstd" (
+ shift
+ if not "%zstd.exe%" == "" (
+ set COMPRESS=zstd -19
+ set MACRO=MIME_DATABASE_IS_ZSTD
+ )
+)
+
+if not "%COMPRESS%" == "" goto CompressedCommon
+
+:: No Compression and no Perl
+:: Just hex-dump with Powershell
+powershell -ExecutionPolicy Bypass %me%hexdump.ps1 %1 %1
+exit /b %errorlevel%
+
+:CompressedCommon
+:: Compress to a temporary file, then hex-dump using Powershell
+echo #define %MACRO%
+set tempfile=generate%RANDOM%.tmp
+%COMPRESS% < %1 > %tempfile%
+powershell -ExecutionPolicy Bypass %me%hexdump.ps1 %tempfile% %1
+del %tempfile%
+exit /b %errorlevel%
+
+:PuntToPerl
+perl %me%generate.pl %*
+exit /b %errorlevel%
diff --git a/src/corelib/mimetypes/mime/generate.pl b/src/corelib/mimetypes/mime/generate.pl
new file mode 100644
index 0000000000..0f87d61f8e
--- /dev/null
+++ b/src/corelib/mimetypes/mime/generate.pl
@@ -0,0 +1,113 @@
+#!/usr/bin/perl
+#############################################################################
+##
+## Copyright (C) 2019 Intel Corporation.
+## Contact: https://www.qt.io/licensing/
+##
+## This file is the build configuration utility of the Qt Toolkit.
+##
+## $QT_BEGIN_LICENSE:GPL-EXCEPT$
+## Commercial License Usage
+## Licensees holding valid commercial Qt licenses may use this file in
+## accordance with the commercial license agreement provided with the
+## Software or, alternatively, in accordance with the terms contained in
+## a written agreement between you and The Qt Company. For licensing terms
+## and conditions see https://www.qt.io/terms-conditions. For further
+## information use the contact form at https://www.qt.io/contact-us.
+##
+## GNU General Public License Usage
+## Alternatively, this file may be used under the terms of the GNU
+## General Public License version 3 as published by the Free Software
+## Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+## included in the packaging of this file. Please review the following
+## information to ensure the GNU General Public License requirements will
+## be met: https://www.gnu.org/licenses/gpl-3.0.html.
+##
+## $QT_END_LICENSE$
+##
+#############################################################################
+use strict;
+use warnings;
+use Config;
+local $/; # Enable "slurp" mode
+
+sub checkCommand($) {
+ use File::Spec::Functions;
+ my $cmd = $_[0] . $Config{_exe};
+ for my $path (path()) {
+ return 1 if -x catfile($path, $cmd);
+ }
+ return 0;
+}
+
+my $data;
+my $compress;
+my $macro;
+my $zlib = eval 'use Compress::Zlib; use IO::Compress::Gzip; return 1;';
+my $fname = shift @ARGV;
+
+if ($zlib) {
+ # Prefer internal zlib support (useful on Windows where gzip.exe isn't
+ # always presnet)
+ $macro = "MIME_DATABASE_IS_GZIP";
+} elsif (checkCommand("gzip")) {
+ # No builtin support for compression (old Perl?)
+ $compress = "gzip -c9";
+ $macro = "MIME_DATABASE_IS_GZIP";
+}
+
+# Check if Qt is being built with zstd support
+if ($fname eq "--zstd") {
+ $fname = shift @ARGV;
+ if (checkCommand("zstd")) {
+ $compress = "zstd -cq19 --single-thread";
+ $macro = "MIME_DATABASE_IS_ZSTD";
+ }
+}
+
+# Check if xml (from xmlstarlet) is in $PATH
+my $cmd;
+if (checkCommand("xml")) {
+ # Minify the data before compressing
+ $cmd = "xml sel -D -B -t -c / $fname";
+ $cmd .= "| $compress" if $compress;
+} elsif ($compress) {
+ $cmd = "$compress < $fname"
+}
+if ($cmd) {
+ # Run the command and read everything
+ open CMD, "$cmd |";
+ $data = <CMD>;
+ close CMD;
+ die("Failed to run $cmd") if ($? >> 8);
+} else {
+ # No command, just read the file
+ open F, "<$fname";
+ $data = <F>;
+ close F;
+}
+
+# Do we need to compress with zlib?
+if (!$compress && $zlib) {
+ $data = eval q{
+ use Compress::Zlib;
+ use IO::Compress::Gzip qw(gzip);
+ my $compressed;
+ gzip \$data => \$compressed,
+ Minimal => 1,
+ Level => Z_BEST_COMPRESSION;
+ return $compressed;
+ };
+}
+
+# Now print as hex
+printf "#define %s\n", $macro if $macro;
+printf "static const unsigned char mimetype_database[] = {";
+my $i = 0;
+map {
+ printf "\n " if $i++ % 12 == 0;
+ printf "0x%02x, ", ord $_
+} split //, $data;
+printf "\n};\n";
+printf "static constexpr size_t MimeTypeDatabaseOriginalSize = %d;\n",
+ (stat $fname)[7];
diff --git a/src/corelib/mimetypes/mime/hexdump.ps1 b/src/corelib/mimetypes/mime/hexdump.ps1
new file mode 100644
index 0000000000..25ce8138fa
--- /dev/null
+++ b/src/corelib/mimetypes/mime/hexdump.ps1
@@ -0,0 +1,43 @@
+#############################################################################
+##
+## Copyright (C) 2019 Intel Corporation.
+## Contact: https://www.qt.io/licensing/
+##
+## This file is the build configuration utility of the Qt Toolkit.
+##
+## $QT_BEGIN_LICENSE:GPL-EXCEPT$
+## Commercial License Usage
+## Licensees holding valid commercial Qt licenses may use this file in
+## accordance with the commercial license agreement provided with the
+## Software or, alternatively, in accordance with the terms contained in
+## a written agreement between you and The Qt Company. For licensing terms
+## and conditions see https://www.qt.io/terms-conditions. For further
+## information use the contact form at https://www.qt.io/contact-us.
+##
+## GNU General Public License Usage
+## Alternatively, this file may be used under the terms of the GNU
+## General Public License version 3 as published by the Free Software
+## Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+## included in the packaging of this file. Please review the following
+## information to ensure the GNU General Public License requirements will
+## be met: https://www.gnu.org/licenses/gpl-3.0.html.
+##
+## $QT_END_LICENSE$
+##
+#############################################################################
+
+param([String]$path, [String]$orig)
+
+"static const unsigned char mimetype_database[] = {"
+ForEach ($byte in Get-Content -Encoding byte -ReadCount 16 -path $path) {
+# if (($byte -eq 0).count -ne 16) {
+ $hex = $byte | Foreach-Object {
+ " 0x" + ("{0:x}" -f $_).PadLeft( 2, "0" ) + ","
+ }
+ " $hex"
+# }
+}
+"};"
+
+$file = Get-Childitem -file $orig
+"static constexpr size_t MimeTypeDatabaseOriginalSize = " + $file.length + ";"
diff --git a/src/corelib/mimetypes/mimetypes.pri b/src/corelib/mimetypes/mimetypes.pri
index 62bbe348e4..8cbe7b69ae 100644
--- a/src/corelib/mimetypes/mimetypes.pri
+++ b/src/corelib/mimetypes/mimetypes.pri
@@ -21,5 +21,32 @@ qtConfig(mimetype) {
mimetypes/qmimeglobpattern.cpp \
mimetypes/qmimeprovider.cpp
- qtConfig(mimetype-database): RESOURCES += mimetypes/mimetypes.qrc
+ MIME_DATABASE = mimetypes/mime/packages/freedesktop.org.xml
+ OTHER_FILES += $$MIME_DATABASE
+
+ qtConfig(mimetype-database) {
+ outpath = .rcc
+ debug_and_release {
+ CONFIG(debug, debug|release): outpath = .rcc/debug
+ else: outpath = .rcc/release
+ }
+
+ mimedb.depends = $$PWD/mime/generate.pl
+ equals(MAKEFILE_GENERATOR, MSVC.NET)|equals(MAKEFILE_GENERATOR, MSBUILD)|isEmpty(QMAKE_SH) {
+ mimedb.commands = cmd /c $$shell_path($$PWD/mime/generate.bat)
+ mimedb.depends += $$PWD/mime/generate.bat $$PWD/mime/hexdump.ps1
+ } else {
+ mimedb.commands = perl $${mimedb.depends}
+ }
+
+ qtConfig(zstd): mimedb.commands += --zstd
+ mimedb.commands += ${QMAKE_FILE_IN} > ${QMAKE_FILE_OUT}
+
+ mimedb.output = $$outpath/qmimeprovider_database.cpp
+ mimedb.input = MIME_DATABASE
+ mimedb.variable_out = INCLUDED_SOURCES
+ QMAKE_EXTRA_COMPILERS += mimedb
+ INCLUDEPATH += $$outpath
+ unset(outpath)
+ }
}
diff --git a/src/corelib/mimetypes/qmimedatabase.cpp b/src/corelib/mimetypes/qmimedatabase.cpp
index 24a7a35ea5..10b2190966 100644
--- a/src/corelib/mimetypes/qmimedatabase.cpp
+++ b/src/corelib/mimetypes/qmimedatabase.cpp
@@ -102,13 +102,18 @@ void QMimeDatabasePrivate::loadProviders()
const auto fdoIterator = std::find_if(mimeDirs.constBegin(), mimeDirs.constEnd(), [](const QString &mimeDir) -> bool {
return QFileInfo::exists(mimeDir + QStringLiteral("/packages/freedesktop.org.xml")); }
);
- if (fdoIterator == mimeDirs.constEnd())
- mimeDirs.prepend(QLatin1String(":/qt-project.org/qmime"));
//qDebug() << "mime dirs:" << mimeDirs;
Providers currentProviders;
std::swap(m_providers, currentProviders);
- m_providers.reserve(mimeDirs.size());
+
+ if (QMimeXMLProvider::InternalDatabaseAvailable && fdoIterator == mimeDirs.constEnd()) {
+ m_providers.reserve(mimeDirs.size() + 1);
+ m_providers.push_back(Providers::value_type(new QMimeXMLProvider(this, QMimeXMLProvider::InternalDatabase)));
+ } else {
+ m_providers.reserve(mimeDirs.size());
+ }
+
for (const QString &mimeDir : qAsConst(mimeDirs)) {
const QString cacheFile = mimeDir + QStringLiteral("/mime.cache");
QFileInfo fileInfo(cacheFile);
@@ -487,7 +492,7 @@ QMimeDatabase::QMimeDatabase() :
*/
QMimeDatabase::~QMimeDatabase()
{
- d = 0;
+ d = nullptr;
}
/*!
diff --git a/src/corelib/mimetypes/qmimeprovider.cpp b/src/corelib/mimetypes/qmimeprovider.cpp
index a3a6b9615c..4aee772366 100644
--- a/src/corelib/mimetypes/qmimeprovider.cpp
+++ b/src/corelib/mimetypes/qmimeprovider.cpp
@@ -1,7 +1,8 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Copyright (C) 2015 Klaralvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author David Faure <david.faure@kdab.com>
+** Copyright (C) 2018 The Qt Company Ltd.
+** Copyright (C) 2018 Klaralvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author David Faure <david.faure@kdab.com>
+** Copyright (C) 2019 Intel Corporation.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the QtCore module of the Qt Toolkit.
@@ -45,6 +46,7 @@
#include "qmimemagicrulematcher_p.h"
#include <QXmlStreamReader>
+#include <QBuffer>
#include <QDir>
#include <QFile>
#include <QByteArrayMatcher>
@@ -52,12 +54,33 @@
#include <QDateTime>
#include <QtEndian>
-static void initResources()
-{
#if QT_CONFIG(mimetype_database)
- Q_INIT_RESOURCE(mimetypes);
+# if defined(Q_CC_MSVC)
+# pragma section(".qtmimedatabase", read, shared)
+__declspec(allocate(".qtmimedatabase")) __declspec(align(4096))
+# elif defined(Q_OS_DARWIN)
+__attribute__((section("__TEXT,.qtmimedatabase"), aligned(4096)))
+# elif (defined(Q_OF_ELF) || defined(Q_OS_WIN)) && defined(Q_CC_GNU)
+__attribute__((section(".qtmimedatabase"), aligned(4096)))
+# endif
+
+# include "qmimeprovider_database.cpp"
+
+# ifdef MIME_DATABASE_IS_ZSTD
+# if !QT_CONFIG(zstd)
+# error "MIME database is zstd but no support compiled in!"
+# endif
+# include <zstd.h>
+# endif
+# ifdef MIME_DATABASE_IS_GZIP
+# ifdef QT_NO_COMPRESS
+# error "MIME database is zlib but no support compiled in!"
+# endif
+# define ZLIB_CONST
+# include <zconf.h>
+# include <zlib.h>
+# endif
#endif
-}
QT_BEGIN_NAMESPACE
@@ -130,7 +153,7 @@ bool QMimeBinaryProvider::CacheFile::reload()
if (file.isOpen()) {
file.close();
}
- data = 0;
+ data = nullptr;
return load();
}
@@ -306,7 +329,7 @@ bool QMimeBinaryProvider::matchMagicRule(QMimeBinaryProvider::CacheFile *cacheFi
const int valueLength = cacheFile->getUint32(off + 12);
const int valueOffset = cacheFile->getUint32(off + 16);
const int maskOffset = cacheFile->getUint32(off + 20);
- const char *mask = maskOffset ? cacheFile->getCharStar(maskOffset) : NULL;
+ const char *mask = maskOffset ? cacheFile->getCharStar(maskOffset) : nullptr;
if (!QMimeMagicRule::matchSubstring(dataPtr, dataSize, rangeStart, rangeLength, valueLength, cacheFile->getCharStar(valueOffset), mask))
continue;
@@ -597,10 +620,55 @@ void QMimeBinaryProvider::loadGenericIcon(QMimeTypePrivate &data)
////
+#if QT_CONFIG(mimetype_database)
+static QString internalMimeFileName()
+{
+ return QStringLiteral("<internal MIME data>");
+}
+
+QMimeXMLProvider::QMimeXMLProvider(QMimeDatabasePrivate *db, InternalDatabaseEnum)
+ : QMimeProviderBase(db, internalMimeFileName())
+{
+ Q_STATIC_ASSERT_X(sizeof(mimetype_database), "Bundled MIME database is empty");
+ Q_STATIC_ASSERT_X(sizeof(mimetype_database) <= MimeTypeDatabaseOriginalSize,
+ "Compressed MIME database is larger than the original size");
+ Q_STATIC_ASSERT_X(MimeTypeDatabaseOriginalSize <= 16*1024*1024,
+ "Bundled MIME database is too big");
+ const char *data = reinterpret_cast<const char *>(mimetype_database);
+ qsizetype size = MimeTypeDatabaseOriginalSize;
+
+#ifdef MIME_DATABASE_IS_ZSTD
+ // uncompress with libzstd
+ std::unique_ptr<char []> uncompressed(new char[size]);
+ size = ZSTD_decompress(uncompressed.get(), size, mimetype_database, sizeof(mimetype_database));
+ Q_ASSERT(!ZSTD_isError(size));
+ data = uncompressed.get();
+#elif defined(MIME_DATABASE_IS_GZIP)
+ std::unique_ptr<char []> uncompressed(new char[size]);
+ z_stream zs = {};
+ zs.next_in = mimetype_database;
+ zs.avail_in = sizeof(mimetype_database);
+ zs.next_out = reinterpret_cast<Bytef *>(uncompressed.get());
+ zs.avail_out = size;
+
+ int res = inflateInit2(&zs, MAX_WBITS | 32);
+ Q_ASSERT(res == Z_OK);
+ res = inflate(&zs, Z_FINISH);
+ Q_ASSERT(res == Z_STREAM_END);
+ res = inflateEnd(&zs);
+ Q_ASSERT(res == Z_OK);
+
+ data = uncompressed.get();
+ size = zs.total_out;
+#endif
+
+ load(data, size);
+}
+#endif
+
QMimeXMLProvider::QMimeXMLProvider(QMimeDatabasePrivate *db, const QString &directory)
: QMimeProviderBase(db, directory)
{
- initResources();
ensureLoaded();
}
@@ -692,6 +760,19 @@ bool QMimeXMLProvider::load(const QString &fileName, QString *errorMessage)
return parser.parse(&file, fileName, errorMessage);
}
+#if QT_CONFIG(mimetype_database)
+void QMimeXMLProvider::load(const char *data, qsizetype len)
+{
+ QBuffer buffer;
+ buffer.setData(QByteArray::fromRawData(data, len));
+ buffer.open(QIODevice::ReadOnly);
+ QString errorMessage;
+ QMimeTypeParser parser(*this);
+ if (!parser.parse(&buffer, internalMimeFileName(), &errorMessage))
+ qWarning("QMimeDatabase: Error loading internal MIME data\n%s", qPrintable(errorMessage));
+}
+#endif
+
void QMimeXMLProvider::addGlobPattern(const QMimeGlobPattern &glob)
{
m_mimeTypeGlobs.addGlob(glob);
diff --git a/src/corelib/mimetypes/qmimeprovider_p.h b/src/corelib/mimetypes/qmimeprovider_p.h
index b6268210c0..0629df8a95 100644
--- a/src/corelib/mimetypes/qmimeprovider_p.h
+++ b/src/corelib/mimetypes/qmimeprovider_p.h
@@ -132,6 +132,16 @@ private:
class QMimeXMLProvider : public QMimeProviderBase
{
public:
+ enum InternalDatabaseEnum { InternalDatabase };
+#if QT_CONFIG(mimetype_database)
+ enum : bool { InternalDatabaseAvailable = true };
+ QMimeXMLProvider(QMimeDatabasePrivate *db, InternalDatabaseEnum);
+#else
+ enum : bool { InternalDatabaseAvailable = false };
+ QMimeXMLProvider(QMimeDatabasePrivate *db, InternalDatabaseEnum)
+ : QMimeProviderBase(db, QString())
+ { Q_UNREACHABLE() };
+#endif
QMimeXMLProvider(QMimeDatabasePrivate *db, const QString &directory);
~QMimeXMLProvider();
@@ -156,6 +166,7 @@ public:
private:
void load(const QString &fileName);
+ void load(const char *data, qsizetype len);
typedef QHash<QString, QMimeType> NameMimeTypeMap;
NameMimeTypeMap m_nameMimeTypeMap;
diff --git a/src/corelib/plugin/qfactoryloader.cpp b/src/corelib/plugin/qfactoryloader.cpp
index 18f10c9b43..14de8db1c6 100644
--- a/src/corelib/plugin/qfactoryloader.cpp
+++ b/src/corelib/plugin/qfactoryloader.cpp
@@ -212,7 +212,7 @@ void QFactoryLoader::update()
QStringList(QLatin1String("libplugins_%1_*.so").arg(d->suffix)),
#endif
QDir::Files);
- QLibraryPrivate *library = 0;
+ QLibraryPrivate *library = nullptr;
for (int j = 0; j < plugins.count(); ++j) {
QString fileName = QDir::cleanPath(path + QLatin1Char('/') + plugins.at(j));
@@ -383,7 +383,7 @@ QObject *QFactoryLoader::instance(int index) const
{
Q_D(const QFactoryLoader);
if (index < 0)
- return 0;
+ return nullptr;
#if QT_CONFIG(library)
QMutexLocker lock(&d->mutex);
@@ -399,7 +399,7 @@ QObject *QFactoryLoader::instance(int index) const
return obj;
}
}
- return 0;
+ return nullptr;
}
index -= d->libraryList.size();
lock.unlock();
@@ -416,7 +416,7 @@ QObject *QFactoryLoader::instance(int index) const
--index;
}
- return 0;
+ return nullptr;
}
QMultiMap<int, QString> QFactoryLoader::keyMap() const
diff --git a/src/corelib/plugin/qlibrary.cpp b/src/corelib/plugin/qlibrary.cpp
index eeaa3c18ec..b3a95d4f26 100644
--- a/src/corelib/plugin/qlibrary.cpp
+++ b/src/corelib/plugin/qlibrary.cpp
@@ -256,7 +256,7 @@ static bool findPatternUnloaded(const QString &library, QLibraryPrivate *lib)
qsizetype fdlen = qMin(file.size(), MaxMemoryMapSize);
const char *filedata = reinterpret_cast<char *>(file.map(0, fdlen));
- if (filedata == 0) {
+ if (filedata == nullptr) {
// Try reading the data into memory instead (up to 64 MB).
data = file.read(64 * 1024 * 1024);
filedata = data.constData();
@@ -387,12 +387,12 @@ private:
};
static QBasicMutex qt_library_mutex;
-static QLibraryStore *qt_library_data = 0;
+static QLibraryStore *qt_library_data = nullptr;
static bool qt_library_data_once;
QLibraryStore::~QLibraryStore()
{
- qt_library_data = 0;
+ qt_library_data = nullptr;
}
inline void QLibraryStore::cleanup()
@@ -459,7 +459,7 @@ inline QLibraryPrivate *QLibraryStore::findOrCreate(const QString &fileName, con
QLibraryStore *data = instance();
// check if this library is already loaded
- QLibraryPrivate *lib = 0;
+ QLibraryPrivate *lib = nullptr;
if (Q_LIKELY(data)) {
lib = data->libraryMap.value(fileName);
if (lib)
@@ -498,7 +498,7 @@ inline void QLibraryStore::releaseLibrary(QLibraryPrivate *lib)
}
QLibraryPrivate::QLibraryPrivate(const QString &canonicalFileName, const QString &version, QLibrary::LoadHints loadHints)
- : pHnd(0), fileName(canonicalFileName), fullVersion(version), instance(0),
+ : pHnd(nullptr), fileName(canonicalFileName), fullVersion(version), instance(nullptr),
libraryRefCount(0), libraryUnloadCount(0), pluginState(MightBeAPlugin)
{
loadHintsInt.storeRelaxed(loadHints);
@@ -528,7 +528,7 @@ void QLibraryPrivate::mergeLoadHints(QLibrary::LoadHints lh)
QFunctionPointer QLibraryPrivate::resolve(const char *symbol)
{
if (!pHnd)
- return 0;
+ return nullptr;
return resolve_sys(symbol);
}
@@ -584,12 +584,12 @@ bool QLibraryPrivate::unload(UnloadFlag flag)
//when the library is unloaded, we release the reference on it so that 'this'
//can get deleted
libraryRefCount.deref();
- pHnd = 0;
- instance = 0;
+ pHnd = nullptr;
+ instance = nullptr;
}
}
- return (pHnd == 0);
+ return (pHnd == nullptr);
}
void QLibraryPrivate::release()
@@ -847,7 +847,7 @@ bool QLibrary::isLoaded() const
Constructs a library with the given \a parent.
*/
QLibrary::QLibrary(QObject *parent)
- :QObject(parent), d(0), did_load(false)
+ :QObject(parent), d(nullptr), did_load(false)
{
}
@@ -862,7 +862,7 @@ QLibrary::QLibrary(QObject *parent)
".dylib" on \macos and iOS, and ".dll" on Windows. (See \l{fileName}.)
*/
QLibrary::QLibrary(const QString& fileName, QObject *parent)
- :QObject(parent), d(0), did_load(false)
+ :QObject(parent), d(nullptr), did_load(false)
{
setFileName(fileName);
}
@@ -879,7 +879,7 @@ QLibrary::QLibrary(const QString& fileName, QObject *parent)
".dylib" on \macos and iOS, and ".dll" on Windows. (See \l{fileName}.)
*/
QLibrary::QLibrary(const QString& fileName, int verNum, QObject *parent)
- :QObject(parent), d(0), did_load(false)
+ :QObject(parent), d(nullptr), did_load(false)
{
setFileNameAndVersion(fileName, verNum);
}
@@ -895,7 +895,7 @@ QLibrary::QLibrary(const QString& fileName, int verNum, QObject *parent)
".dylib" on \macos and iOS, and ".dll" on Windows. (See \l{fileName}.)
*/
QLibrary::QLibrary(const QString& fileName, const QString &version, QObject *parent)
- :QObject(parent), d(0), did_load(false)
+ :QObject(parent), d(nullptr), did_load(false)
{
setFileNameAndVersion(fileName, version);
}
@@ -942,7 +942,7 @@ void QLibrary::setFileName(const QString &fileName)
if (d) {
lh = d->loadHints();
d->release();
- d = 0;
+ d = nullptr;
did_load = false;
}
d = QLibraryPrivate::findOrCreate(fileName, QString(), lh);
@@ -970,7 +970,7 @@ void QLibrary::setFileNameAndVersion(const QString &fileName, int verNum)
if (d) {
lh = d->loadHints();
d->release();
- d = 0;
+ d = nullptr;
did_load = false;
}
d = QLibraryPrivate::findOrCreate(fileName, verNum >= 0 ? QString::number(verNum) : QString(), lh);
@@ -991,7 +991,7 @@ void QLibrary::setFileNameAndVersion(const QString &fileName, const QString &ver
if (d) {
lh = d->loadHints();
d->release();
- d = 0;
+ d = nullptr;
did_load = false;
}
d = QLibraryPrivate::findOrCreate(fileName, version, lh);
@@ -1020,7 +1020,7 @@ void QLibrary::setFileNameAndVersion(const QString &fileName, const QString &ver
QFunctionPointer QLibrary::resolve(const char *symbol)
{
if (!isLoaded() && !load())
- return 0;
+ return nullptr;
return d->resolve(symbol);
}
diff --git a/src/corelib/plugin/qlibrary_p.h b/src/corelib/plugin/qlibrary_p.h
index db5afac98e..a58547a2c3 100644
--- a/src/corelib/plugin/qlibrary_p.h
+++ b/src/corelib/plugin/qlibrary_p.h
@@ -96,7 +96,7 @@ public:
void setLoadHints(QLibrary::LoadHints lh);
static QLibraryPrivate *findOrCreate(const QString &fileName, const QString &version = QString(),
- QLibrary::LoadHints loadHints = nullptr);
+ QLibrary::LoadHints loadHints = { });
static QStringList suffixes_sys(const QString &fullVersion);
static QStringList prefixes_sys();
diff --git a/src/corelib/plugin/qlibrary_unix.cpp b/src/corelib/plugin/qlibrary_unix.cpp
index f0de1010d7..6eb84b327b 100644
--- a/src/corelib/plugin/qlibrary_unix.cpp
+++ b/src/corelib/plugin/qlibrary_unix.cpp
@@ -277,7 +277,7 @@ bool QLibraryPrivate::load_sys()
qualifiedFileName = attempt;
errorString.clear();
}
- return (pHnd != 0);
+ return (pHnd != nullptr);
}
bool QLibraryPrivate::unload_sys()
diff --git a/src/corelib/plugin/qpluginloader.cpp b/src/corelib/plugin/qpluginloader.cpp
index c2443dbdda..aed1704d5f 100644
--- a/src/corelib/plugin/qpluginloader.cpp
+++ b/src/corelib/plugin/qpluginloader.cpp
@@ -136,7 +136,7 @@ QT_BEGIN_NAMESPACE
Constructs a plugin loader with the given \a parent.
*/
QPluginLoader::QPluginLoader(QObject *parent)
- : QObject(parent), d(0), did_load(false)
+ : QObject(parent), d(nullptr), did_load(false)
{
}
@@ -152,7 +152,7 @@ QPluginLoader::QPluginLoader(QObject *parent)
\sa setFileName()
*/
QPluginLoader::QPluginLoader(const QString &fileName, QObject *parent)
- : QObject(parent), d(0), did_load(false)
+ : QObject(parent), d(nullptr), did_load(false)
{
setFileName(fileName);
setLoadHints(QLibrary::PreventUnloadHint);
@@ -195,7 +195,7 @@ QPluginLoader::~QPluginLoader()
QObject *QPluginLoader::instance()
{
if (!isLoaded() && !load())
- return 0;
+ return nullptr;
if (!d->inst && d->instance)
d->inst = d->instance();
return d->inst.data();
@@ -363,7 +363,7 @@ void QPluginLoader::setFileName(const QString &fileName)
if (d) {
lh = d->loadHints();
d->release();
- d = 0;
+ d = nullptr;
did_load = false;
}
diff --git a/src/corelib/serialization/qbinaryjson.cpp b/src/corelib/serialization/qbinaryjson.cpp
new file mode 100644
index 0000000000..3d359f0998
--- /dev/null
+++ b/src/corelib/serialization/qbinaryjson.cpp
@@ -0,0 +1,415 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtCore module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qbinaryjson_p.h"
+
+#include <qjsonobject.h>
+#include <qjsonarray.h>
+
+QT_BEGIN_NAMESPACE
+
+namespace QBinaryJsonPrivate {
+
+static Q_CONSTEXPR Base emptyArray = {
+ { qle_uint(sizeof(Base)) },
+ { 0 },
+ { qle_uint(0) }
+};
+
+static Q_CONSTEXPR Base emptyObject = {
+ { qle_uint(sizeof(Base)) },
+ { qToLittleEndian(1U) },
+ { qle_uint(0) }
+};
+
+void MutableData::compact()
+{
+ Q_STATIC_ASSERT(sizeof(Value) == sizeof(offset));
+
+ Base *base = header->root();
+ int reserve = 0;
+ if (base->is_object) {
+ auto *o = static_cast<Object *>(base);
+ for (uint i = 0; i < o->length; ++i)
+ reserve += o->entryAt(i)->usedStorage(o);
+ } else {
+ auto *a = static_cast<Array *>(base);
+ for (uint i = 0; i < a->length; ++i)
+ reserve += a->at(i)->usedStorage(a);
+ }
+
+ uint size = sizeof(Base) + reserve + base->length * sizeof(offset);
+ uint alloc = sizeof(Header) + size;
+ auto *h = reinterpret_cast<Header *>(malloc(alloc));
+ Q_CHECK_PTR(h);
+ h->tag = QJsonDocument::BinaryFormatTag;
+ h->version = 1;
+ Base *b = h->root();
+ b->size = size;
+ b->is_object = header->root()->is_object;
+ b->length = base->length;
+ b->tableOffset = reserve + sizeof(Array);
+
+ uint offset = sizeof(Base);
+ if (b->is_object) {
+ const auto *o = static_cast<const Object *>(base);
+ auto *no = static_cast<Object *>(b);
+
+ for (uint i = 0; i < o->length; ++i) {
+ no->table()[i] = offset;
+
+ const Entry *e = o->entryAt(i);
+ Entry *ne = no->entryAt(i);
+ uint s = e->size();
+ memcpy(ne, e, s);
+ offset += s;
+ uint dataSize = e->value.usedStorage(o);
+ if (dataSize) {
+ memcpy(reinterpret_cast<char *>(no) + offset, e->value.data(o), dataSize);
+ ne->value.value = offset;
+ offset += dataSize;
+ }
+ }
+ } else {
+ const auto *a = static_cast<const Array *>(base);
+ auto *na = static_cast<Array *>(b);
+
+ for (uint i = 0; i < a->length; ++i) {
+ const Value *v = a->at(i);
+ Value *nv = na->at(i);
+ *nv = *v;
+ uint dataSize = v->usedStorage(a);
+ if (dataSize) {
+ memcpy(reinterpret_cast<char *>(na) + offset, v->data(a), dataSize);
+ nv->value = offset;
+ offset += dataSize;
+ }
+ }
+ }
+ Q_ASSERT(offset == uint(b->tableOffset));
+
+ free(header);
+ header = h;
+ this->alloc = alloc;
+ compactionCounter = 0;
+}
+
+bool ConstData::isValid() const
+{
+ if (header->tag != QJsonDocument::BinaryFormatTag || header->version != 1U)
+ return false;
+
+ const Base *root = header->root();
+ const uint maxSize = alloc - sizeof(Header);
+ return root->is_object
+ ? static_cast<const Object *>(root)->isValid(maxSize)
+ : static_cast<const Array *>(root)->isValid(maxSize);
+}
+
+QJsonDocument ConstData::toJsonDocument() const
+{
+ const Base *root = header->root();
+ return root->is_object
+ ? QJsonDocument(static_cast<const Object *>(root)->toJsonObject())
+ : QJsonDocument(static_cast<const Array *>(root)->toJsonArray());
+}
+
+uint Base::reserveSpace(uint dataSize, uint posInTable, uint numItems, bool replace)
+{
+ Q_ASSERT(posInTable <= length);
+ if (size + dataSize >= Value::MaxSize) {
+ qWarning("QJson: Document too large to store in data structure %d %d %d",
+ uint(size), dataSize, Value::MaxSize);
+ return 0;
+ }
+
+ offset off = tableOffset;
+ // move table to new position
+ if (replace) {
+ memmove(reinterpret_cast<char *>(table()) + dataSize, table(), length * sizeof(offset));
+ } else {
+ memmove(reinterpret_cast<char *>(table() + posInTable + numItems) + dataSize,
+ table() + posInTable, (length - posInTable) * sizeof(offset));
+ memmove(reinterpret_cast<char *>(table()) + dataSize, table(), posInTable * sizeof(offset));
+ }
+ tableOffset += dataSize;
+ for (uint i = 0; i < numItems; ++i)
+ table()[posInTable + i] = off;
+ size += dataSize;
+ if (!replace) {
+ length += numItems;
+ size += numItems * sizeof(offset);
+ }
+ return off;
+}
+
+uint Object::indexOf(QStringView key, bool *exists) const
+{
+ uint min = 0;
+ uint n = length;
+ while (n > 0) {
+ uint half = n >> 1;
+ uint middle = min + half;
+ if (*entryAt(middle) >= key) {
+ n = half;
+ } else {
+ min = middle + 1;
+ n -= half + 1;
+ }
+ }
+ if (min < length && *entryAt(min) == key) {
+ *exists = true;
+ return min;
+ }
+ *exists = false;
+ return min;
+}
+
+QJsonObject Object::toJsonObject() const
+{
+ QJsonObject object;
+ for (uint i = 0; i < length; ++i) {
+ const Entry *e = entryAt(i);
+ object.insert(e->key(), e->value.toJsonValue(this));
+ }
+ return object;
+}
+
+bool Object::isValid(uint maxSize) const
+{
+ if (size > maxSize || tableOffset + length * sizeof(offset) > size)
+ return false;
+
+ QString lastKey;
+ for (uint i = 0; i < length; ++i) {
+ if (table()[i] + sizeof(Entry) >= tableOffset)
+ return false;
+ const Entry *e = entryAt(i);
+ if (!e->isValid(tableOffset - table()[i]))
+ return false;
+ const QString key = e->key();
+ if (key < lastKey)
+ return false;
+ if (!e->value.isValid(this))
+ return false;
+ lastKey = key;
+ }
+ return true;
+}
+
+QJsonArray Array::toJsonArray() const
+{
+ QJsonArray array;
+ const offset *values = table();
+ for (uint i = 0; i < length; ++i)
+ array.append(reinterpret_cast<const Value *>(values + i)->toJsonValue(this));
+ return array;
+}
+
+bool Array::isValid(uint maxSize) const
+{
+ if (size > maxSize || tableOffset + length * sizeof(offset) > size)
+ return false;
+
+ const offset *values = table();
+ for (uint i = 0; i < length; ++i) {
+ if (!reinterpret_cast<const Value *>(values + i)->isValid(this))
+ return false;
+ }
+ return true;
+}
+
+uint Value::usedStorage(const Base *b) const
+{
+ uint s = 0;
+ switch (type) {
+ case QJsonValue::Double:
+ if (!latinOrIntValue)
+ s = sizeof(double);
+ break;
+ case QJsonValue::String: {
+ const char *d = data(b);
+ s = latinOrIntValue
+ ? (sizeof(ushort)
+ + qFromLittleEndian(*reinterpret_cast<const ushort *>(d)))
+ : (sizeof(int)
+ + sizeof(ushort) * qFromLittleEndian(*reinterpret_cast<const int *>(d)));
+ break;
+ }
+ case QJsonValue::Array:
+ case QJsonValue::Object:
+ s = base(b)->size;
+ break;
+ case QJsonValue::Null:
+ case QJsonValue::Bool:
+ default:
+ break;
+ }
+ return alignedSize(s);
+}
+
+QJsonValue Value::toJsonValue(const Base *b) const
+{
+ switch (type) {
+ case QJsonValue::Null:
+ return QJsonValue(QJsonValue::Null);
+ case QJsonValue::Bool:
+ return QJsonValue(toBoolean());
+ case QJsonValue::Double:
+ return QJsonValue(toDouble(b));
+ case QJsonValue::String:
+ return QJsonValue(toString(b));
+ case QJsonValue::Array:
+ return static_cast<const Array *>(base(b))->toJsonArray();
+ case QJsonValue::Object:
+ return static_cast<const Object *>(base(b))->toJsonObject();
+ case QJsonValue::Undefined:
+ return QJsonValue(QJsonValue::Undefined);
+ }
+ Q_UNREACHABLE();
+ return QJsonValue(QJsonValue::Undefined);
+}
+
+inline bool isValidValueOffset(uint offset, uint tableOffset)
+{
+ return offset >= sizeof(Base)
+ && offset + sizeof(uint) <= tableOffset;
+}
+
+bool Value::isValid(const Base *b) const
+{
+ switch (type) {
+ case QJsonValue::Null:
+ case QJsonValue::Bool:
+ return true;
+ case QJsonValue::Double:
+ return latinOrIntValue || isValidValueOffset(value, b->tableOffset);
+ case QJsonValue::String:
+ if (!isValidValueOffset(value, b->tableOffset))
+ return false;
+ if (latinOrIntValue)
+ return asLatin1String(b).isValid(b->tableOffset - value);
+ return asString(b).isValid(b->tableOffset - value);
+ case QJsonValue::Array:
+ return isValidValueOffset(value, b->tableOffset)
+ && static_cast<const Array *>(base(b))->isValid(b->tableOffset - value);
+ case QJsonValue::Object:
+ return isValidValueOffset(value, b->tableOffset)
+ && static_cast<const Object *>(base(b))->isValid(b->tableOffset - value);
+ default:
+ return false;
+ }
+}
+
+uint Value::requiredStorage(const QBinaryJsonValue &v, bool *compressed)
+{
+ *compressed = false;
+ switch (v.type()) {
+ case QJsonValue::Double:
+ if (QBinaryJsonPrivate::compressedNumber(v.toDouble()) != INT_MAX) {
+ *compressed = true;
+ return 0;
+ }
+ return sizeof(double);
+ case QJsonValue::String: {
+ QString s = v.toString();
+ *compressed = QBinaryJsonPrivate::useCompressed(s);
+ return QBinaryJsonPrivate::qStringSize(s, *compressed);
+ }
+ case QJsonValue::Array:
+ case QJsonValue::Object:
+ return v.base ? uint(v.base->size) : sizeof(QBinaryJsonPrivate::Base);
+ case QJsonValue::Undefined:
+ case QJsonValue::Null:
+ case QJsonValue::Bool:
+ break;
+ }
+ return 0;
+}
+
+uint Value::valueToStore(const QBinaryJsonValue &v, uint offset)
+{
+ switch (v.type()) {
+ case QJsonValue::Undefined:
+ case QJsonValue::Null:
+ break;
+ case QJsonValue::Bool:
+ return v.toBool();
+ case QJsonValue::Double: {
+ int c = QBinaryJsonPrivate::compressedNumber(v.toDouble());
+ if (c != INT_MAX)
+ return c;
+ }
+ Q_FALLTHROUGH();
+ case QJsonValue::String:
+ case QJsonValue::Array:
+ case QJsonValue::Object:
+ return offset;
+ }
+ return 0;
+}
+
+void Value::copyData(const QBinaryJsonValue &v, char *dest, bool compressed)
+{
+ switch (v.type()) {
+ case QJsonValue::Double:
+ if (!compressed)
+ qToLittleEndian(v.toDouble(), dest);
+ break;
+ case QJsonValue::String: {
+ const QString str = v.toString();
+ QBinaryJsonPrivate::copyString(dest, str, compressed);
+ break;
+ }
+ case QJsonValue::Array:
+ case QJsonValue::Object: {
+ const QBinaryJsonPrivate::Base *b = v.base;
+ if (!b)
+ b = (v.type() == QJsonValue::Array ? &emptyArray : &emptyObject);
+ memcpy(dest, b, b->size);
+ break;
+ }
+ default:
+ break;
+ }
+}
+
+} // namespace QBinaryJsonPrivate
+
+QT_END_NAMESPACE
diff --git a/src/corelib/serialization/qbinaryjson_p.h b/src/corelib/serialization/qbinaryjson_p.h
new file mode 100644
index 0000000000..132c36f227
--- /dev/null
+++ b/src/corelib/serialization/qbinaryjson_p.h
@@ -0,0 +1,617 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2016 Intel Corporation.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtCore module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QBINARYJSON_P_H
+#define QBINARYJSON_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 <private/qbinaryjsonvalue_p.h>
+#include <private/qendian_p.h>
+
+#include <qjsondocument.h>
+
+#include <limits>
+
+QT_REQUIRE_CONFIG(binaryjson);
+
+QT_BEGIN_NAMESPACE
+
+// in qstring.cpp
+void qt_to_latin1_unchecked(uchar *dst, const ushort *uc, qsizetype len);
+void qt_from_latin1(ushort *dst, const char *str, size_t size) noexcept;
+
+/*
+ This defines a binary data structure for Json data. The data structure is optimised for fast reading
+ and minimum allocations. The whole data structure can be mmap'ed and used directly.
+
+ In most cases the binary structure is not as space efficient as a utf8 encoded text representation, but
+ much faster to access.
+
+ The size requirements are:
+
+ String:
+ Latin1 data: 2 bytes header + string.length()
+ Full Unicode: 4 bytes header + 2*(string.length())
+
+ Values: 4 bytes + size of data (size can be 0 for some data)
+ bool: 0 bytes
+ double: 8 bytes (0 if integer with less than 27bits)
+ string: see above
+ array: size of array
+ object: size of object
+ Array: 12 bytes + 4*length + size of Value data
+ Object: 12 bytes + 8*length + size of Key Strings + size of Value data
+
+ For an example such as
+
+ { // object: 12 + 5*8 = 52
+ "firstName": "John", // key 12, value 8 = 20
+ "lastName" : "Smith", // key 12, value 8 = 20
+ "age" : 25, // key 8, value 0 = 8
+ "address" : // key 12, object below = 140
+ { // object: 12 + 4*8
+ "streetAddress": "21 2nd Street", // key 16, value 16
+ "city" : "New York", // key 8, value 12
+ "state" : "NY", // key 8, value 4
+ "postalCode" : "10021" // key 12, value 8
+ }, // object total: 128
+ "phoneNumber": // key: 16, value array below = 172
+ [ // array: 12 + 2*4 + values below: 156
+ { // object 12 + 2*8
+ "type" : "home", // key 8, value 8
+ "number": "212 555-1234" // key 8, value 16
+ }, // object total: 68
+ { // object 12 + 2*8
+ "type" : "fax", // key 8, value 8
+ "number": "646 555-4567" // key 8, value 16
+ } // object total: 68
+ ] // array total: 156
+ } // great total: 412 bytes
+
+ The uncompressed text file used roughly 500 bytes, so in this case we end up using about
+ the same space as the text representation.
+
+ Other measurements have shown a slightly bigger binary size than a compact text
+ representation where all possible whitespace was stripped out.
+*/
+namespace QBinaryJsonPrivate {
+
+class Array;
+class Object;
+class Value;
+class Entry;
+
+template<typename T>
+using q_littleendian = QLEInteger<T>;
+
+using qle_short = q_littleendian<short>;
+using qle_ushort = q_littleendian<unsigned short>;
+using qle_int = q_littleendian<int>;
+using qle_uint = q_littleendian<unsigned int>;
+
+template<int pos, int width>
+using qle_bitfield = QLEIntegerBitfield<uint, pos, width>;
+
+template<int pos, int width>
+using qle_signedbitfield = QLEIntegerBitfield<int, pos, width>;
+
+using offset = qle_uint;
+
+// round the size up to the next 4 byte boundary
+inline uint alignedSize(uint size) { return (size + 3) & ~3; }
+
+const int MaxLatin1Length = 0x7fff;
+
+static inline bool useCompressed(QStringView s)
+{
+ if (s.length() > MaxLatin1Length)
+ return false;
+ return QtPrivate::isLatin1(s);
+}
+
+static inline bool useCompressed(QLatin1String s)
+{
+ return s.size() <= MaxLatin1Length;
+}
+
+static inline uint qStringSize(const QString &string, bool compress)
+{
+ uint l = 2 + string.size();
+ if (!compress)
+ l *= 2;
+ return alignedSize(l);
+}
+
+// returns INT_MAX if it can't compress it into 28 bits
+static inline int compressedNumber(double d)
+{
+ // this relies on details of how ieee floats are represented
+ const int exponent_off = 52;
+ const quint64 fraction_mask = 0x000fffffffffffffULL;
+ const quint64 exponent_mask = 0x7ff0000000000000ULL;
+
+ quint64 val;
+ memcpy (&val, &d, sizeof(double));
+ int exp = (int)((val & exponent_mask) >> exponent_off) - 1023;
+ if (exp < 0 || exp > 25)
+ return std::numeric_limits<int>::max();
+
+ quint64 non_int = val & (fraction_mask >> exp);
+ if (non_int)
+ return std::numeric_limits<int>::max();
+
+ bool neg = (val >> 63) != 0;
+ val &= fraction_mask;
+ val |= ((quint64)1 << 52);
+ int res = (int)(val >> (52 - exp));
+ return neg ? -res : res;
+}
+
+class Latin1String;
+
+class String
+{
+public:
+ explicit String(const char *data) : d(reinterpret_cast<const Data *>(data)) {}
+
+ struct Data {
+ qle_uint length;
+ qle_ushort utf16[1];
+ };
+ const Data *d;
+
+ uint byteSize() const { return sizeof(uint) + sizeof(ushort) * d->length; }
+ bool isValid(uint maxSize) const
+ {
+ // Check byteSize() <= maxSize, avoiding integer overflow
+ return maxSize >= sizeof(uint)
+ && uint(d->length) <= (maxSize - sizeof(uint)) / sizeof(ushort);
+ }
+
+ static void copy(char *dest, QStringView str)
+ {
+ Data *data = reinterpret_cast<Data *>(dest);
+ data->length = str.length();
+ qToLittleEndian<quint16>(str.utf16(), str.length(), data->utf16);
+ fillTrailingZeros(data);
+ }
+
+ static void fillTrailingZeros(Data *data)
+ {
+ if (data->length & 1)
+ data->utf16[data->length] = 0;
+ }
+
+ bool operator ==(QStringView str) const
+ {
+ int slen = str.length();
+ int l = d->length;
+ if (slen != l)
+ return false;
+ const auto *s = reinterpret_cast<const ushort *>(str.utf16());
+ const qle_ushort *a = d->utf16;
+ const ushort *b = s;
+ while (l-- && *a == *b)
+ a++,b++;
+ return (l == -1);
+ }
+
+ bool operator ==(const String &str) const
+ {
+ if (d->length != str.d->length)
+ return false;
+ return !memcmp(d->utf16, str.d->utf16, d->length * sizeof(ushort));
+ }
+
+ QString toString() const
+ {
+#if Q_BYTE_ORDER == Q_LITTLE_ENDIAN
+ return QString(reinterpret_cast<const QChar *>(d->utf16), d->length);
+#else
+ const uint l = d->length;
+ QString str(l, Qt::Uninitialized);
+ QChar *ch = str.data();
+ for (uint i = 0; i < l; ++i)
+ ch[i] = QChar(d->utf16[i]);
+ return str;
+#endif
+ }
+};
+
+class Latin1String
+{
+public:
+ explicit Latin1String(const char *data) : d(reinterpret_cast<const Data *>(data)) {}
+
+ struct Data {
+ qle_ushort length;
+ char latin1[1];
+ };
+ const Data *d;
+
+ uint byteSize() const { return sizeof(ushort) + sizeof(char) * (d->length); }
+ bool isValid(uint maxSize) const { return byteSize() <= maxSize; }
+
+ static void copy(char *dest, QStringView src)
+ {
+ Data *data = reinterpret_cast<Data *>(dest);
+ data->length = src.length();
+ auto *l = reinterpret_cast<uchar *>(data->latin1);
+ const auto *uc = reinterpret_cast<const ushort *>(src.utf16());
+ qt_to_latin1_unchecked(l, uc, data->length);
+
+ for (uint len = data->length; quintptr(l + len) & 0x3; ++len)
+ l[len] = 0;
+ }
+
+ QLatin1String toQLatin1String() const noexcept { return QLatin1String(d->latin1, d->length); }
+ QString toString() const { return QString::fromLatin1(d->latin1, d->length); }
+};
+
+static inline void copyString(char *dest, QStringView str, bool compress)
+{
+ if (compress)
+ Latin1String::copy(dest, str);
+ else
+ String::copy(dest, str);
+}
+
+/*
+ Base is the base class for both Object and Array. Both classes work more or less the same way.
+ The class starts with a header (defined by the struct below), then followed by data (the data for
+ values in the Array case and Entry's (see below) for objects.
+
+ After the data a table follows (tableOffset points to it) containing Value objects for Arrays, and
+ offsets from the beginning of the object to Entry's in the case of Object.
+
+ Entry's in the Object's table are lexicographically sorted by key in the table(). This allows the usage
+ of a binary search over the keys in an Object.
+ */
+class Base
+{
+public:
+ qle_uint size;
+ union {
+ uint _dummy;
+ qle_bitfield<0, 1> is_object;
+ qle_bitfield<1, 31> length;
+ };
+ offset tableOffset;
+ // content follows here
+
+ bool isObject() const { return !!is_object; }
+ bool isArray() const { return !isObject(); }
+
+ offset *table()
+ {
+ return reinterpret_cast<offset *>(reinterpret_cast<char *>(this) + tableOffset);
+ }
+
+ const offset *table() const
+ {
+ return reinterpret_cast<const offset *>(reinterpret_cast<const char *>(this) + tableOffset);
+ }
+
+ uint reserveSpace(uint dataSize, uint posInTable, uint numItems, bool replace);
+};
+
+class Object : public Base
+{
+public:
+ const Entry *entryAt(uint i) const
+ {
+ return reinterpret_cast<const Entry *>(reinterpret_cast<const char *>(this) + table()[i]);
+ }
+
+ Entry *entryAt(uint i)
+ {
+ return reinterpret_cast<Entry *>(reinterpret_cast<char *>(this) + table()[i]);
+ }
+
+ uint indexOf(QStringView key, bool *exists) const;
+ QJsonObject toJsonObject() const;
+ bool isValid(uint maxSize) const;
+};
+
+class Array : public Base
+{
+public:
+ const Value *at(uint i) const { return reinterpret_cast<const Value *>(table() + i); }
+ Value *at(uint i) { return reinterpret_cast<Value *>(table() + i); }
+
+ QJsonArray toJsonArray() const;
+ bool isValid(uint maxSize) const;
+};
+
+class Value
+{
+public:
+ enum {
+ MaxSize = (1 << 27) - 1
+ };
+ union {
+ uint _dummy;
+ qle_bitfield<0, 3> type;
+ qle_bitfield<3, 1> latinOrIntValue;
+ qle_bitfield<4, 1> latinKey;
+ qle_bitfield<5, 27> value;
+ qle_signedbitfield<5, 27> int_value;
+ };
+
+ inline const char *data(const Base *b) const
+ {
+ return reinterpret_cast<const char *>(b) + value;
+ }
+
+ uint usedStorage(const Base *b) const;
+
+ bool toBoolean() const
+ {
+ Q_ASSERT(type == QJsonValue::Bool);
+ return value != 0;
+ }
+
+ double toDouble(const Base *b) const
+ {
+ Q_ASSERT(type == QJsonValue::Double);
+ if (latinOrIntValue)
+ return int_value;
+
+ auto i = qFromLittleEndian<quint64>(reinterpret_cast<const uchar *>(b) + value);
+ double d;
+ memcpy(&d, &i, sizeof(double));
+ return d;
+ }
+
+ QString toString(const Base *b) const
+ {
+ return latinOrIntValue
+ ? asLatin1String(b).toString()
+ : asString(b).toString();
+ }
+
+ String asString(const Base *b) const
+ {
+ Q_ASSERT(type == QJsonValue::String && !latinOrIntValue);
+ return String(data(b));
+ }
+
+ Latin1String asLatin1String(const Base *b) const
+ {
+ Q_ASSERT(type == QJsonValue::String && latinOrIntValue);
+ return Latin1String(data(b));
+ }
+
+ const Base *base(const Base *b) const
+ {
+ Q_ASSERT(type == QJsonValue::Array || type == QJsonValue::Object);
+ return reinterpret_cast<const Base *>(data(b));
+ }
+
+ QJsonValue toJsonValue(const Base *b) const;
+ bool isValid(const Base *b) const;
+
+ static uint requiredStorage(const QBinaryJsonValue &v, bool *compressed);
+ static uint valueToStore(const QBinaryJsonValue &v, uint offset);
+ static void copyData(const QBinaryJsonValue &v, char *dest, bool compressed);
+};
+
+class Entry {
+public:
+ Value value;
+ // key
+ // value data follows key
+
+ uint size() const
+ {
+ uint s = sizeof(Entry);
+ if (value.latinKey)
+ s += shallowLatin1Key().byteSize();
+ else
+ s += shallowKey().byteSize();
+ return alignedSize(s);
+ }
+
+ uint usedStorage(Base *b) const
+ {
+ return size() + value.usedStorage(b);
+ }
+
+ String shallowKey() const
+ {
+ Q_ASSERT(!value.latinKey);
+ return String(reinterpret_cast<const char *>(this) + sizeof(Entry));
+ }
+
+ Latin1String shallowLatin1Key() const
+ {
+ Q_ASSERT(value.latinKey);
+ return Latin1String(reinterpret_cast<const char *>(this) + sizeof(Entry));
+ }
+
+ QString key() const
+ {
+ return value.latinKey
+ ? shallowLatin1Key().toString()
+ : shallowKey().toString();
+ }
+
+ bool isValid(uint maxSize) const
+ {
+ if (maxSize < sizeof(Entry))
+ return false;
+ maxSize -= sizeof(Entry);
+ return value.latinKey
+ ? shallowLatin1Key().isValid(maxSize)
+ : shallowKey().isValid(maxSize);
+ }
+
+ bool operator ==(QStringView key) const
+ {
+ return value.latinKey
+ ? (shallowLatin1Key().toQLatin1String() == key)
+ : (shallowKey() == key);
+ }
+
+ bool operator >=(QStringView key) const
+ {
+ return value.latinKey
+ ? (shallowLatin1Key().toQLatin1String() >= key)
+ : (shallowKey().toString() >= key);
+ }
+};
+
+class Header {
+public:
+ qle_uint tag; // 'qbjs'
+ qle_uint version; // 1
+ Base *root() { return reinterpret_cast<Base *>(this + 1); }
+ const Base *root() const { return reinterpret_cast<const Base *>(this + 1); }
+};
+
+class ConstData
+{
+ Q_DISABLE_COPY_MOVE(ConstData)
+public:
+ const uint alloc;
+ union {
+ const char *rawData;
+ const Header *header;
+ };
+
+ ConstData(const char *raw, uint a) : alloc(a), rawData(raw) {}
+ bool isValid() const;
+ QJsonDocument toJsonDocument() const;
+};
+
+class MutableData
+{
+ Q_DISABLE_COPY_MOVE(MutableData)
+public:
+ QAtomicInt ref;
+ uint alloc;
+ union {
+ char *rawData;
+ Header *header;
+ };
+ uint compactionCounter : 31;
+
+ MutableData(char *raw, uint a)
+ : alloc(a), rawData(raw), compactionCounter(0)
+ {
+ }
+
+ MutableData(uint reserved, QJsonValue::Type valueType)
+ : rawData(nullptr), compactionCounter(0)
+ {
+ Q_ASSERT(valueType == QJsonValue::Array || valueType == QJsonValue::Object);
+
+ alloc = sizeof(Header) + sizeof(Base) + reserved + sizeof(offset);
+ header = reinterpret_cast<Header *>(malloc(alloc));
+ Q_CHECK_PTR(header);
+ header->tag = QJsonDocument::BinaryFormatTag;
+ header->version = 1;
+ Base *b = header->root();
+ b->size = sizeof(Base);
+ b->is_object = (valueType == QJsonValue::Object);
+ b->tableOffset = sizeof(Base);
+ b->length = 0;
+ }
+
+ ~MutableData()
+ {
+ free(rawData);
+ }
+
+ MutableData *clone(const Base *b, uint reserve = 0)
+ {
+ uint size = sizeof(Header) + b->size;
+ if (b == header->root() && ref.loadRelaxed() == 1 && alloc >= size + reserve)
+ return this;
+
+ if (reserve) {
+ if (reserve < 128)
+ reserve = 128;
+ size = qMax(size + reserve, qMin(size *2, uint(Value::MaxSize)));
+ if (size > Value::MaxSize) {
+ qWarning("QJson: Document too large to store in data structure");
+ return nullptr;
+ }
+ }
+ char *raw = reinterpret_cast<char *>(malloc(size));
+ Q_CHECK_PTR(raw);
+ memcpy(raw + sizeof(Header), b, b->size);
+ auto *h = reinterpret_cast<Header *>(raw);
+ h->tag = QJsonDocument::BinaryFormatTag;
+ h->version = 1;
+ auto *d = new MutableData(raw, size);
+ d->compactionCounter = (b == header->root()) ? compactionCounter : 0;
+ return d;
+ }
+
+ char *takeRawData(uint *size)
+ {
+ *size = alloc;
+ char *result = rawData;
+ rawData = nullptr;
+ alloc = 0;
+ return result;
+ }
+
+ void compact();
+};
+
+} // namespace QBinaryJsonPrivate
+
+Q_DECLARE_TYPEINFO(QBinaryJsonPrivate::Value, Q_PRIMITIVE_TYPE);
+
+QT_END_NAMESPACE
+
+#endif // QBINARYJSON_P_H
diff --git a/src/corelib/serialization/qbinaryjsonarray.cpp b/src/corelib/serialization/qbinaryjsonarray.cpp
new file mode 100644
index 0000000000..68937fe17d
--- /dev/null
+++ b/src/corelib/serialization/qbinaryjsonarray.cpp
@@ -0,0 +1,137 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtCore module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qbinaryjsonarray_p.h"
+#include "qbinaryjson_p.h"
+
+#include <qjsonarray.h>
+
+QT_BEGIN_NAMESPACE
+
+QBinaryJsonArray::~QBinaryJsonArray()
+{
+ if (d && !d->ref.deref())
+ delete d;
+}
+
+QBinaryJsonArray QBinaryJsonArray::fromJsonArray(const QJsonArray &array)
+{
+ QBinaryJsonArray binary;
+ for (const QJsonValue &value : array)
+ binary.append(QBinaryJsonValue::fromJsonValue(value));
+ if (binary.d) // We want to compact it as it is a root item now
+ binary.d->compactionCounter++;
+ binary.compact();
+ return binary;
+}
+
+void QBinaryJsonArray::append(const QBinaryJsonValue &value)
+{
+ const uint i = a ? a->length : 0;
+
+ bool compressed;
+ uint valueSize = QBinaryJsonPrivate::Value::requiredStorage(value, &compressed);
+
+ if (!detach(valueSize + sizeof(QBinaryJsonPrivate::Value)))
+ return;
+
+ if (!a->length)
+ a->tableOffset = sizeof(QBinaryJsonPrivate::Array);
+
+ uint valueOffset = a->reserveSpace(valueSize, i, 1, false);
+ if (!valueOffset)
+ return;
+
+ QBinaryJsonPrivate::Value *v = a->at(i);
+ v->type = (value.t == QJsonValue::Undefined ? QJsonValue::Null : value.t);
+ v->latinOrIntValue = compressed;
+ v->latinKey = false;
+ v->value = QBinaryJsonPrivate::Value::valueToStore(value, valueOffset);
+ if (valueSize) {
+ QBinaryJsonPrivate::Value::copyData(value, reinterpret_cast<char *>(a) + valueOffset,
+ compressed);
+ }
+}
+
+char *QBinaryJsonArray::takeRawData(uint *size)
+{
+ if (d)
+ return d->takeRawData(size);
+ *size = 0;
+ return nullptr;
+}
+
+bool QBinaryJsonArray::detach(uint reserve)
+{
+ if (!d) {
+ if (reserve >= QBinaryJsonPrivate::Value::MaxSize) {
+ qWarning("QBinaryJson: Document too large to store in data structure");
+ return false;
+ }
+ d = new QBinaryJsonPrivate::MutableData(reserve, QJsonValue::Array);
+ a = static_cast<QBinaryJsonPrivate::Array *>(d->header->root());
+ d->ref.ref();
+ return true;
+ }
+ if (reserve == 0 && d->ref.loadRelaxed() == 1)
+ return true;
+
+ QBinaryJsonPrivate::MutableData *x = d->clone(a, reserve);
+ if (!x)
+ return false;
+ x->ref.ref();
+ if (!d->ref.deref())
+ delete d;
+ d = x;
+ a = static_cast<QBinaryJsonPrivate::Array *>(d->header->root());
+ return true;
+}
+
+void QBinaryJsonArray::compact()
+{
+ if (!d || !d->compactionCounter)
+ return;
+
+ detach();
+ d->compact();
+ a = static_cast<QBinaryJsonPrivate::Array *>(d->header->root());
+}
+
+QT_END_NAMESPACE
+
diff --git a/src/corelib/serialization/qbinaryjsonarray_p.h b/src/corelib/serialization/qbinaryjsonarray_p.h
new file mode 100644
index 0000000000..2bb8fed387
--- /dev/null
+++ b/src/corelib/serialization/qbinaryjsonarray_p.h
@@ -0,0 +1,98 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtCore module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QBINARYJSONARRAY_P_H
+#define QBINARYJSONARRAY_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 "qbinaryjsonvalue_p.h"
+
+QT_REQUIRE_CONFIG(binaryjson);
+
+QT_BEGIN_NAMESPACE
+
+class QBinaryJsonArray
+{
+ Q_DISABLE_COPY(QBinaryJsonArray)
+public:
+ QBinaryJsonArray() = default;
+ ~QBinaryJsonArray();
+
+ QBinaryJsonArray(QBinaryJsonArray &&other) noexcept
+ : d(other.d),
+ a(other.a)
+ {
+ other.d = nullptr;
+ other.a = nullptr;
+ }
+
+ QBinaryJsonArray &operator =(QBinaryJsonArray &&other) noexcept
+ {
+ qSwap(d, other.d);
+ qSwap(a, other.a);
+ return *this;
+ }
+
+ static QBinaryJsonArray fromJsonArray(const QJsonArray &array);
+ char *takeRawData(uint *size);
+
+private:
+ friend class QBinaryJsonValue;
+
+ void append(const QBinaryJsonValue &value);
+ void compact();
+ bool detach(uint reserve = 0);
+
+ QBinaryJsonPrivate::MutableData *d = nullptr;
+ QBinaryJsonPrivate::Array *a = nullptr;
+};
+
+QT_END_NAMESPACE
+
+#endif // QBINARYJSONARRAY_P_H
diff --git a/src/corelib/serialization/qbinaryjsonobject.cpp b/src/corelib/serialization/qbinaryjsonobject.cpp
new file mode 100644
index 0000000000..3186ab6087
--- /dev/null
+++ b/src/corelib/serialization/qbinaryjsonobject.cpp
@@ -0,0 +1,149 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtCore module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qbinaryjsonobject_p.h"
+#include "qbinaryjson_p.h"
+
+#include <qjsonobject.h>
+
+QT_BEGIN_NAMESPACE
+
+QBinaryJsonObject::~QBinaryJsonObject()
+{
+ if (d && !d->ref.deref())
+ delete d;
+}
+
+QBinaryJsonObject QBinaryJsonObject::fromJsonObject(const QJsonObject &object)
+{
+ QBinaryJsonObject binary;
+ for (auto it = object.begin(), end = object.end(); it != end; ++it)
+ binary.insert(it.key(), QBinaryJsonValue::fromJsonValue(it.value()));
+ if (binary.d) // We want to compact it as it is a root item now
+ binary.d->compactionCounter++;
+ binary.compact();
+ return binary;
+}
+
+void QBinaryJsonObject::insert(const QString &key, const QBinaryJsonValue &value)
+{
+ bool latinOrIntValue;
+ uint valueSize = QBinaryJsonPrivate::Value::requiredStorage(value, &latinOrIntValue);
+
+ bool latinKey = QBinaryJsonPrivate::useCompressed(key);
+ uint valueOffset = sizeof(QBinaryJsonPrivate::Entry)
+ + QBinaryJsonPrivate::qStringSize(key, latinKey);
+ uint requiredSize = valueOffset + valueSize;
+
+ if (!detach(requiredSize + sizeof(QBinaryJsonPrivate::offset))) // offset for the new index entry
+ return;
+
+ if (!o->length)
+ o->tableOffset = sizeof(QBinaryJsonPrivate::Object);
+
+ bool keyExists = false;
+ uint pos = o->indexOf(key, &keyExists);
+ if (keyExists)
+ ++d->compactionCounter;
+
+ uint off = o->reserveSpace(requiredSize, pos, 1, keyExists);
+ if (!off)
+ return;
+
+ QBinaryJsonPrivate::Entry *e = o->entryAt(pos);
+ e->value.type = value.t;
+ e->value.latinKey = latinKey;
+ e->value.latinOrIntValue = latinOrIntValue;
+ e->value.value = QBinaryJsonPrivate::Value::valueToStore(
+ value, reinterpret_cast<char *>(e) - reinterpret_cast<char *>(o) + valueOffset);
+ QBinaryJsonPrivate::copyString(reinterpret_cast<char *>(e + 1), key, latinKey);
+ if (valueSize) {
+ QBinaryJsonPrivate::Value::copyData(value, reinterpret_cast<char *>(e) + valueOffset,
+ latinOrIntValue);
+ }
+
+ if (d->compactionCounter > 32U && d->compactionCounter >= unsigned(o->length) / 2U)
+ compact();
+}
+
+char *QBinaryJsonObject::takeRawData(uint *size) const
+{
+ if (d)
+ return d->takeRawData(size);
+ *size = 0;
+ return nullptr;
+}
+
+bool QBinaryJsonObject::detach(uint reserve)
+{
+ if (!d) {
+ if (reserve >= QBinaryJsonPrivate::Value::MaxSize) {
+ qWarning("QBinaryJson: Document too large to store in data structure");
+ return false;
+ }
+ d = new QBinaryJsonPrivate::MutableData(reserve, QJsonValue::Object);
+ o = static_cast<QBinaryJsonPrivate::Object *>(d->header->root());
+ d->ref.ref();
+ return true;
+ }
+ if (reserve == 0 && d->ref.loadRelaxed() == 1)
+ return true;
+
+ QBinaryJsonPrivate::MutableData *x = d->clone(o, reserve);
+ if (!x)
+ return false;
+ x->ref.ref();
+ if (!d->ref.deref())
+ delete d;
+ d = x;
+ o = static_cast<QBinaryJsonPrivate::Object *>(d->header->root());
+ return true;
+}
+
+void QBinaryJsonObject::compact()
+{
+ if (!d || !d->compactionCounter)
+ return;
+
+ detach();
+ d->compact();
+ o = static_cast<QBinaryJsonPrivate::Object *>(d->header->root());
+}
+
+QT_END_NAMESPACE
diff --git a/src/corelib/serialization/qbinaryjsonobject_p.h b/src/corelib/serialization/qbinaryjsonobject_p.h
new file mode 100644
index 0000000000..c0991ac339
--- /dev/null
+++ b/src/corelib/serialization/qbinaryjsonobject_p.h
@@ -0,0 +1,97 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtCore module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QBINARYJSONOBJECT_H
+#define QBINARYJSONOBJECT_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 "qbinaryjsonvalue_p.h"
+
+QT_REQUIRE_CONFIG(binaryjson);
+
+QT_BEGIN_NAMESPACE
+
+class QBinaryJsonObject
+{
+ Q_DISABLE_COPY(QBinaryJsonObject)
+public:
+ QBinaryJsonObject() = default;
+ ~QBinaryJsonObject();
+
+ QBinaryJsonObject(QBinaryJsonObject &&other) noexcept
+ : d(other.d), o(other.o)
+ {
+ other.d = nullptr;
+ other.o = nullptr;
+ }
+
+ QBinaryJsonObject &operator =(QBinaryJsonObject &&other) noexcept
+ {
+ qSwap(d, other.d);
+ qSwap(o, other.o);
+ return *this;
+ }
+
+ static QBinaryJsonObject fromJsonObject(const QJsonObject &object);
+ char *takeRawData(uint *size) const;
+
+private:
+ friend class QBinaryJsonValue;
+
+ void insert(const QString &key, const QBinaryJsonValue &value);
+ bool detach(uint reserve = 0);
+ void compact();
+
+ QBinaryJsonPrivate::MutableData *d = nullptr;
+ QBinaryJsonPrivate::Object *o = nullptr;
+};
+
+QT_END_NAMESPACE
+
+#endif // QBINARYJSONOBJECT_P_H
diff --git a/src/corelib/serialization/qbinaryjsonvalue.cpp b/src/corelib/serialization/qbinaryjsonvalue.cpp
new file mode 100644
index 0000000000..5e3a01ad38
--- /dev/null
+++ b/src/corelib/serialization/qbinaryjsonvalue.cpp
@@ -0,0 +1,155 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtCore module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qbinaryjsonobject_p.h"
+#include "qbinaryjsonvalue_p.h"
+#include "qbinaryjsonarray_p.h"
+#include "qbinaryjson_p.h"
+
+#include <qjsonarray.h>
+#include <qjsonobject.h>
+
+QT_BEGIN_NAMESPACE
+
+QBinaryJsonValue::QBinaryJsonValue(QBinaryJsonPrivate::MutableData *data,
+ QBinaryJsonPrivate::Base *parent,
+ const QBinaryJsonPrivate::Value &v)
+ : t(QJsonValue::Type(uint(v.type)))
+{
+ switch (t) {
+ case QJsonValue::Undefined:
+ case QJsonValue::Null:
+ dbl = 0;
+ break;
+ case QJsonValue::Bool:
+ b = v.toBoolean();
+ break;
+ case QJsonValue::Double:
+ dbl = v.toDouble(parent);
+ break;
+ case QJsonValue::String: {
+ QString s = v.toString(parent);
+ stringData = s.data_ptr();
+ stringData->ref.ref();
+ break;
+ }
+ case QJsonValue::Array:
+ case QJsonValue::Object:
+ d = data;
+ base = v.base(parent);
+ break;
+ }
+ if (d)
+ d->ref.ref();
+}
+
+QBinaryJsonValue::QBinaryJsonValue(QString string)
+ : stringData(*reinterpret_cast<QStringData **>(&string)), t(QJsonValue::String)
+{
+ stringData->ref.ref();
+}
+
+QBinaryJsonValue::QBinaryJsonValue(const QBinaryJsonArray &a)
+ : base(a.a), d(a.d), t(QJsonValue::Array)
+{
+ if (d)
+ d->ref.ref();
+}
+
+QBinaryJsonValue::QBinaryJsonValue(const QBinaryJsonObject &o)
+ : base(o.o), d(o.d), t(QJsonValue::Object)
+{
+ if (d)
+ d->ref.ref();
+}
+
+QBinaryJsonValue::~QBinaryJsonValue()
+{
+ if (t == QJsonValue::String && stringData && !stringData->ref.deref())
+ free(stringData);
+
+ if (d && !d->ref.deref())
+ delete d;
+}
+
+QBinaryJsonValue QBinaryJsonValue::fromJsonValue(const QJsonValue &json)
+{
+ switch (json.type()) {
+ case QJsonValue::Bool:
+ return QBinaryJsonValue(json.toBool());
+ case QJsonValue::Double:
+ return QBinaryJsonValue(json.toDouble());
+ case QJsonValue::String:
+ return QBinaryJsonValue(json.toString());
+ case QJsonValue::Array:
+ return QBinaryJsonArray::fromJsonArray(json.toArray());
+ case QJsonValue::Object:
+ return QBinaryJsonObject::fromJsonObject(json.toObject());
+ case QJsonValue::Null:
+ return QBinaryJsonValue(QJsonValue::Null);
+ case QJsonValue::Undefined:
+ return QBinaryJsonValue(QJsonValue::Undefined);
+ }
+ Q_UNREACHABLE();
+ return QBinaryJsonValue(QJsonValue::Null);
+}
+
+QString QBinaryJsonValue::toString() const
+{
+ if (t != QJsonValue::String)
+ return QString();
+ stringData->ref.ref(); // the constructor below doesn't add a ref.
+ QStringDataPtr holder = { stringData };
+ return QString(holder);
+}
+
+void QBinaryJsonValue::detach()
+{
+ if (!d)
+ return;
+
+ QBinaryJsonPrivate::MutableData *x = d->clone(base);
+ x->ref.ref();
+ if (!d->ref.deref())
+ delete d;
+ d = x;
+ base = static_cast<QBinaryJsonPrivate::Object *>(d->header->root());
+}
+
+QT_END_NAMESPACE
diff --git a/src/corelib/serialization/qbinaryjsonvalue_p.h b/src/corelib/serialization/qbinaryjsonvalue_p.h
new file mode 100644
index 0000000000..498fc62ecd
--- /dev/null
+++ b/src/corelib/serialization/qbinaryjsonvalue_p.h
@@ -0,0 +1,134 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtCore module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QBINARYJSONVALUE_P_H
+#define QBINARYJSONVALUE_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/qglobal.h>
+#include <QtCore/qstring.h>
+#include <QtCore/qjsonvalue.h>
+
+QT_REQUIRE_CONFIG(binaryjson);
+
+QT_BEGIN_NAMESPACE
+
+class QBinaryJsonArray;
+class QBinaryJsonObject;
+
+namespace QBinaryJsonPrivate {
+class ConstData;
+class MutableData;
+class Base;
+class Value;
+class Object;
+class Array;
+}
+
+class Q_CORE_EXPORT QBinaryJsonValue
+{
+ Q_DISABLE_COPY(QBinaryJsonValue)
+public:
+ explicit QBinaryJsonValue(QJsonValue::Type type) : ui(0), t(type) {}
+ explicit QBinaryJsonValue(bool b) : b(b), t(QJsonValue::Bool) {}
+ explicit QBinaryJsonValue(double n) : dbl(n), t(QJsonValue::Double) {}
+ explicit QBinaryJsonValue(QString s);
+ QBinaryJsonValue(const QBinaryJsonArray &a);
+ QBinaryJsonValue(const QBinaryJsonObject &o);
+
+ ~QBinaryJsonValue();
+
+ QBinaryJsonValue(QBinaryJsonValue &&other) noexcept
+ : ui(other.ui),
+ d(other.d),
+ t(other.t)
+ {
+ other.ui = 0;
+ other.d = nullptr;
+ other.t = QJsonValue::Null;
+ }
+
+ QBinaryJsonValue &operator =(QBinaryJsonValue &&other) noexcept
+ {
+ qSwap(ui, other.ui);
+ qSwap(d, other.d);
+ qSwap(t, other.t);
+ return *this;
+ }
+
+ static QBinaryJsonValue fromJsonValue(const QJsonValue &json);
+ QJsonValue::Type type() const { return t; }
+ bool toBool() const { return (t == QJsonValue::Bool) && b; }
+ double toDouble() const { return (t == QJsonValue::Double) ? dbl : 0; }
+ QString toString() const;
+
+private:
+ friend class QBinaryJsonPrivate::Value;
+ friend class QBinaryJsonArray;
+ friend class QBinaryJsonObject;
+
+ QBinaryJsonValue(QBinaryJsonPrivate::MutableData *d, QBinaryJsonPrivate::Base *parent,
+ const QBinaryJsonPrivate::Value &v);
+
+ void detach();
+
+ union {
+ quint64 ui;
+ bool b;
+ double dbl;
+ QStringData *stringData;
+ const QBinaryJsonPrivate::Base *base;
+ };
+ QBinaryJsonPrivate::MutableData *d = nullptr; // needed for Objects and Arrays
+ QJsonValue::Type t = QJsonValue::Null;
+};
+
+QT_END_NAMESPACE
+
+#endif // QBINARYJSONVALUE_P_H
diff --git a/src/corelib/serialization/qcborstream.cpp b/src/corelib/serialization/qcborstream.cpp
index c598eee213..a232f7eef7 100644
--- a/src/corelib/serialization/qcborstream.cpp
+++ b/src/corelib/serialization/qcborstream.cpp
@@ -166,21 +166,6 @@ Q_STATIC_ASSERT(int(QCborStreamReader::Invalid) == CborInvalidType);
QCborStreamReader::toSimpleType(), QCborValue::isSimpleType(), QCborValue::toSimpleType()
*/
-Q_CORE_EXPORT const char *qt_cbor_simpletype_id(QCborSimpleType st)
-{
- switch (st) {
- case QCborSimpleType::False:
- return "False";
- case QCborSimpleType::True:
- return "True";
- case QCborSimpleType::Null:
- return "Null";
- case QCborSimpleType::Undefined:
- return "Undefined";
- }
- return nullptr;
-}
-
#if !defined(QT_NO_DATASTREAM)
QDataStream &operator<<(QDataStream &ds, QCborSimpleType st)
{
@@ -196,18 +181,6 @@ QDataStream &operator>>(QDataStream &ds, QCborSimpleType &st)
}
#endif
-#if !defined(QT_NO_DEBUG_STREAM)
-QDebug operator<<(QDebug dbg, QCborSimpleType st)
-{
- QDebugStateSaver saver(dbg);
- const char *id = qt_cbor_simpletype_id(st);
- if (id)
- return dbg.nospace() << "QCborSimpleType::" << id;
-
- return dbg.nospace() << "QCborSimpleType(" << uint(st) << ')';
-}
-#endif
-
/*!
\enum QCborTag
\relates <QtCborCommon>
@@ -230,79 +203,6 @@ QDebug operator<<(QDebug dbg, QCborSimpleType st)
QCborValue::isTag(), QCborValue::tag()
*/
-Q_CORE_EXPORT const char *qt_cbor_tag_id(QCborTag tag)
-{
- // Casting to QCborKnownTags's underlying type will make the comparison
- // below fail if the tag value is out of range.
- auto n = std::underlying_type<QCborKnownTags>::type(tag);
- if (QCborTag(n) == tag) {
- switch (QCborKnownTags(n)) {
- case QCborKnownTags::DateTimeString:
- return "DateTimeString";
- case QCborKnownTags::UnixTime_t:
- return "UnixTime_t";
- case QCborKnownTags::PositiveBignum:
- return "PositiveBignum";
- case QCborKnownTags::NegativeBignum:
- return "NegativeBignum";
- case QCborKnownTags::Decimal:
- return "Decimal";
- case QCborKnownTags::Bigfloat:
- return "Bigfloat";
- case QCborKnownTags::COSE_Encrypt0:
- return "COSE_Encrypt0";
- case QCborKnownTags::COSE_Mac0:
- return "COSE_Mac0";
- case QCborKnownTags::COSE_Sign1:
- return "COSE_Sign1";
- case QCborKnownTags::ExpectedBase64url:
- return "ExpectedBase64url";
- case QCborKnownTags::ExpectedBase64:
- return "ExpectedBase64";
- case QCborKnownTags::ExpectedBase16:
- return "ExpectedBase16";
- case QCborKnownTags::EncodedCbor:
- return "EncodedCbor";
- case QCborKnownTags::Url:
- return "Url";
- case QCborKnownTags::Base64url:
- return "Base64url";
- case QCborKnownTags::Base64:
- return "Base64";
- case QCborKnownTags::RegularExpression:
- return "RegularExpression";
- case QCborKnownTags::MimeMessage:
- return "MimeMessage";
- case QCborKnownTags::Uuid:
- return "Uuid";
- case QCborKnownTags::COSE_Encrypt:
- return "COSE_Encrypt";
- case QCborKnownTags::COSE_Mac:
- return "COSE_Mac";
- case QCborKnownTags::COSE_Sign:
- return "COSE_Sign";
- case QCborKnownTags::Signature:
- return "Signature";
- }
- }
- return nullptr;
-}
-
-#if !defined(QT_NO_DEBUG_STREAM)
-QDebug operator<<(QDebug dbg, QCborTag tag)
-{
- QDebugStateSaver saver(dbg);
- const char *id = qt_cbor_tag_id(tag);
- dbg.nospace() << "QCborTag(";
- if (id)
- dbg.nospace() << "QCborKnownTags::" << id;
- else
- dbg.nospace() << quint64(tag);
-
- return dbg << ')';
-}
-#endif
-
/*!
\enum QCborKnownTags
\relates <QtCborCommon>
@@ -381,18 +281,6 @@ QDebug operator<<(QDebug dbg, QCborTag tag)
QCborValue::isTag(), QCborValue::tag()
*/
-#if !defined(QT_NO_DEBUG_STREAM)
-QDebug operator<<(QDebug dbg, QCborKnownTags tag)
-{
- QDebugStateSaver saver(dbg);
- const char *id = qt_cbor_tag_id(QCborTag(int(tag)));
- if (id)
- return dbg.nospace() << "QCborKnownTags::" << id;
-
- return dbg.nospace() << "QCborKnownTags(" << int(tag) << ')';
-}
-#endif
-
/*!
\class QCborError
\inmodule QtCore
diff --git a/src/corelib/serialization/qcborstream.h b/src/corelib/serialization/qcborstream.h
index 7a451e63ac..08bf680cca 100644
--- a/src/corelib/serialization/qcborstream.h
+++ b/src/corelib/serialization/qcborstream.h
@@ -47,6 +47,8 @@
#include <QtCore/qstring.h>
#include <QtCore/qstringview.h>
+QT_REQUIRE_CONFIG(cborstream);
+
// See qcborcommon.h for why we check
#if defined(QT_X11_DEFINES_FOUND)
# undef True
diff --git a/src/corelib/serialization/qcborvalue.cpp b/src/corelib/serialization/qcborvalue.cpp
index 4052bfa22e..61d61dd9ae 100644
--- a/src/corelib/serialization/qcborvalue.cpp
+++ b/src/corelib/serialization/qcborvalue.cpp
@@ -42,7 +42,10 @@
#include "qdatastream.h"
#include "qcborarray.h"
#include "qcbormap.h"
+
+#if QT_CONFIG(cborstream)
#include "qcborstream.h"
+#endif
#include <qendian.h>
#include <qlocale.h>
@@ -795,6 +798,7 @@ static QCborValue::Type convertToExtendedType(QCborContainerPrivate *d)
break;
}
+#ifndef QT_BOOTSTRAPPED
case qint64(QCborKnownTags::Url):
if (e.type == QCborValue::String) {
if (b) {
@@ -808,13 +812,16 @@ static QCborValue::Type convertToExtendedType(QCborContainerPrivate *d)
return QCborValue::Url;
}
break;
+#endif // QT_BOOTSTRAPPED
+#if QT_CONFIG(regularexpression)
case quint64(QCborKnownTags::RegularExpression):
if (e.type == QCborValue::String) {
// no normalization is necessary
return QCborValue::RegularExpression;
}
break;
+#endif // QT_CONFIG(regularexpression)
case qint64(QCborKnownTags::Uuid):
if (e.type == QCborValue::ByteArray) {
@@ -833,6 +840,7 @@ static QCborValue::Type convertToExtendedType(QCborContainerPrivate *d)
return QCborValue::Tag;
}
+#if QT_CONFIG(cborstream)
// in qcborstream.cpp
extern void qt_cbor_stream_set_error(QCborStreamReaderPrivate *d, QCborError error);
@@ -874,6 +882,7 @@ static void writeDoubleToCbor(QCborStreamWriter &writer, double d, QCborValue::E
writer.append(d);
}
+#endif // QT_CONFIG(cborstream)
static inline int typeOrder(Element e1, Element e2)
{
@@ -1296,6 +1305,7 @@ int QCborMap::compare(const QCborMap &other) const noexcept
return compareContainer(d.data(), other.d.data());
}
+#if QT_CONFIG(cborstream)
static void encodeToCbor(QCborStreamWriter &writer, const QCborContainerPrivate *d, qsizetype idx,
QCborValue::EncodingOptions opt)
{
@@ -1640,6 +1650,7 @@ void QCborContainerPrivate::decodeFromCbor(QCborStreamReader &reader)
if (reader.lastError() == QCborError::NoError)
reader.leaveContainer();
}
+#endif // QT_CONFIG(cborstream)
/*!
Creates a QCborValue with byte array value \a ba. The value can later be
@@ -1774,6 +1785,7 @@ QCborValue::QCborValue(const QDateTime &dt)
container->elements[1].type = String;
}
+#ifndef QT_BOOTSTRAPPED
/*!
Creates a QCborValue object of the URL extended type and containing the
value represented by \a url. The value can later be retrieved using toUrl().
@@ -1790,6 +1802,7 @@ QCborValue::QCborValue(const QUrl &url)
t = Url;
container->elements[1].type = String;
}
+#endif
#if QT_CONFIG(regularexpression)
/*!
@@ -1943,6 +1956,7 @@ QDateTime QCborValue::toDateTime(const QDateTime &defaultValue) const
return QDateTime::fromString(byteData->asLatin1(), Qt::ISODateWithMs);
}
+#ifndef QT_BOOTSTRAPPED
/*!
Returns the URL value stored in this QCborValue, if it is of the URL
extended type. Otherwise, it returns \a defaultValue.
@@ -1963,6 +1977,7 @@ QUrl QCborValue::toUrl(const QUrl &defaultValue) const
return QUrl::fromEncoded(byteData->asByteArrayView());
}
+#endif
#if QT_CONFIG(regularexpression)
/*!
@@ -2335,6 +2350,7 @@ QCborValueRef QCborValue::operator[](qint64 key)
return { container, index };
}
+#if QT_CONFIG(cborstream)
/*!
Decodes one item from the CBOR stream found in \a reader and returns the
equivalent representation. This function is recursive: if the item is a map
@@ -2572,6 +2588,7 @@ void QCborValueRef::toCbor(QCborStreamWriter &writer, QCborValue::EncodingOption
{
concrete().toCbor(writer, opt);
}
+#endif // QT_CONFIG(cborstream)
void QCborValueRef::assign(QCborValueRef that, const QCborValue &other)
{
@@ -2891,8 +2908,10 @@ uint qHash(const QCborValue &value, uint seed)
return qHash(value.toDouble(), seed);
case QCborValue::DateTime:
return qHash(value.toDateTime(), seed);
+#ifndef QT_BOOTSTRAPPED
case QCborValue::Url:
return qHash(value.toUrl(), seed);
+#endif
#if QT_CONFIG(regularexpression)
case QCborValue::RegularExpression:
return qHash(value.toRegularExpression(), seed);
@@ -2945,8 +2964,10 @@ static QDebug debugContents(QDebug &dbg, const QCborValue &v)
}
case QCborValue::DateTime:
return dbg << v.toDateTime();
+#ifndef QT_BOOTSTRAPPED
case QCborValue::Url:
return dbg << v.toUrl();
+#endif
#if QT_CONFIG(regularexpression)
case QCborValue::RegularExpression:
return dbg << v.toRegularExpression();
@@ -2968,6 +2989,112 @@ QDebug operator<<(QDebug dbg, const QCborValue &v)
dbg.nospace() << "QCborValue(";
return debugContents(dbg, v) << ')';
}
+
+Q_CORE_EXPORT const char *qt_cbor_simpletype_id(QCborSimpleType st)
+{
+ switch (st) {
+ case QCborSimpleType::False:
+ return "False";
+ case QCborSimpleType::True:
+ return "True";
+ case QCborSimpleType::Null:
+ return "Null";
+ case QCborSimpleType::Undefined:
+ return "Undefined";
+ }
+ return nullptr;
+}
+
+QDebug operator<<(QDebug dbg, QCborSimpleType st)
+{
+ QDebugStateSaver saver(dbg);
+ const char *id = qt_cbor_simpletype_id(st);
+ if (id)
+ return dbg.nospace() << "QCborSimpleType::" << id;
+
+ return dbg.nospace() << "QCborSimpleType(" << uint(st) << ')';
+}
+
+Q_CORE_EXPORT const char *qt_cbor_tag_id(QCborTag tag)
+{
+ // Casting to QCborKnownTags's underlying type will make the comparison
+ // below fail if the tag value is out of range.
+ auto n = std::underlying_type<QCborKnownTags>::type(tag);
+ if (QCborTag(n) == tag) {
+ switch (QCborKnownTags(n)) {
+ case QCborKnownTags::DateTimeString:
+ return "DateTimeString";
+ case QCborKnownTags::UnixTime_t:
+ return "UnixTime_t";
+ case QCborKnownTags::PositiveBignum:
+ return "PositiveBignum";
+ case QCborKnownTags::NegativeBignum:
+ return "NegativeBignum";
+ case QCborKnownTags::Decimal:
+ return "Decimal";
+ case QCborKnownTags::Bigfloat:
+ return "Bigfloat";
+ case QCborKnownTags::COSE_Encrypt0:
+ return "COSE_Encrypt0";
+ case QCborKnownTags::COSE_Mac0:
+ return "COSE_Mac0";
+ case QCborKnownTags::COSE_Sign1:
+ return "COSE_Sign1";
+ case QCborKnownTags::ExpectedBase64url:
+ return "ExpectedBase64url";
+ case QCborKnownTags::ExpectedBase64:
+ return "ExpectedBase64";
+ case QCborKnownTags::ExpectedBase16:
+ return "ExpectedBase16";
+ case QCborKnownTags::EncodedCbor:
+ return "EncodedCbor";
+ case QCborKnownTags::Url:
+ return "Url";
+ case QCborKnownTags::Base64url:
+ return "Base64url";
+ case QCborKnownTags::Base64:
+ return "Base64";
+ case QCborKnownTags::RegularExpression:
+ return "RegularExpression";
+ case QCborKnownTags::MimeMessage:
+ return "MimeMessage";
+ case QCborKnownTags::Uuid:
+ return "Uuid";
+ case QCborKnownTags::COSE_Encrypt:
+ return "COSE_Encrypt";
+ case QCborKnownTags::COSE_Mac:
+ return "COSE_Mac";
+ case QCborKnownTags::COSE_Sign:
+ return "COSE_Sign";
+ case QCborKnownTags::Signature:
+ return "Signature";
+ }
+ }
+ return nullptr;
+}
+
+QDebug operator<<(QDebug dbg, QCborTag tag)
+{
+ QDebugStateSaver saver(dbg);
+ const char *id = qt_cbor_tag_id(tag);
+ dbg.nospace() << "QCborTag(";
+ if (id)
+ dbg.nospace() << "QCborKnownTags::" << id;
+ else
+ dbg.nospace() << quint64(tag);
+
+ return dbg << ')';
+}
+
+QDebug operator<<(QDebug dbg, QCborKnownTags tag)
+{
+ QDebugStateSaver saver(dbg);
+ const char *id = qt_cbor_tag_id(QCborTag(int(tag)));
+ if (id)
+ return dbg.nospace() << "QCborKnownTags::" << id;
+
+ return dbg.nospace() << "QCborKnownTags(" << int(tag) << ')';
+}
#endif
#ifndef QT_NO_DATASTREAM
@@ -2995,4 +3122,6 @@ QT_END_NAMESPACE
#include "qcborarray.cpp"
#include "qcbormap.cpp"
+#ifndef QT_NO_QOBJECT
#include "moc_qcborvalue.cpp"
+#endif
diff --git a/src/corelib/serialization/qcborvalue.h b/src/corelib/serialization/qcborvalue.h
index 914103b0a5..071213e83a 100644
--- a/src/corelib/serialization/qcborvalue.h
+++ b/src/corelib/serialization/qcborvalue.h
@@ -71,6 +71,8 @@ class QCborStreamReader;
class QCborStreamWriter;
class QDataStream;
+namespace QJsonPrivate { class Value; }
+
struct QCborParserError
{
qint64 offset = 0;
@@ -161,7 +163,9 @@ public:
{}
explicit QCborValue(const QDateTime &dt);
+#ifndef QT_BOOTSTRAPPED
explicit QCborValue(const QUrl &url);
+#endif
#if QT_CONFIG(regularexpression)
explicit QCborValue(const QRegularExpression &rx);
#endif
@@ -283,6 +287,7 @@ public:
static QCborValue fromJsonValue(const QJsonValue &v);
QJsonValue toJsonValue() const;
+#if QT_CONFIG(cborstream)
static QCborValue fromCbor(QCborStreamReader &reader);
static QCborValue fromCbor(const QByteArray &ba, QCborParserError *error = nullptr);
static QCborValue fromCbor(const char *data, qsizetype len, QCborParserError *error = nullptr)
@@ -291,12 +296,15 @@ public:
{ return fromCbor(QByteArray(reinterpret_cast<const char *>(data), int(len)), error); }
QByteArray toCbor(EncodingOptions opt = NoTransformation);
void toCbor(QCborStreamWriter &writer, EncodingOptions opt = NoTransformation);
+#endif
QString toDiagnosticNotation(DiagnosticNotationOptions opts = Compact) const;
private:
friend class QCborValueRef;
friend class QCborContainerPrivate;
+ friend class QJsonPrivate::Value;
+
qint64 n = 0;
QCborContainerPrivate *container = nullptr;
Type t = Undefined;
@@ -387,8 +395,10 @@ public:
{ return concrete().toString(defaultValue); }
QDateTime toDateTime(const QDateTime &defaultValue = {}) const
{ return concrete().toDateTime(defaultValue); }
+#ifndef QT_BOOTSTRAPPED
QUrl toUrl(const QUrl &defaultValue = {}) const
{ return concrete().toUrl(defaultValue); }
+#endif
#if QT_CONFIG(regularexpression)
QRegularExpression toRegularExpression(const QRegularExpression &defaultValue = {}) const
{ return concrete().toRegularExpression(defaultValue); }
@@ -431,9 +441,11 @@ public:
QVariant toVariant() const { return concrete().toVariant(); }
QJsonValue toJsonValue() const;
+#if QT_CONFIG(cborstream)
QByteArray toCbor(QCborValue::EncodingOptions opt = QCborValue::NoTransformation)
{ return concrete().toCbor(opt); }
void toCbor(QCborStreamWriter &writer, QCborValue::EncodingOptions opt = QCborValue::NoTransformation);
+#endif
QString toDiagnosticNotation(QCborValue::DiagnosticNotationOptions opt = QCborValue::Compact)
{ return concrete().toDiagnosticNotation(opt); }
diff --git a/src/corelib/serialization/qdatastream.cpp b/src/corelib/serialization/qdatastream.cpp
index b3330d6cea..5082a8cb0d 100644
--- a/src/corelib/serialization/qdatastream.cpp
+++ b/src/corelib/serialization/qdatastream.cpp
@@ -566,6 +566,7 @@ void QDataStream::setByteOrder(ByteOrder bo)
\value Qt_5_12 Version 18 (Qt 5.12)
\value Qt_5_13 Version 19 (Qt 5.13)
\value Qt_5_14 Same as Qt_5_13
+ \value Qt_5_15 Same as Qt_5_13
\omitvalue Qt_DefaultCompiledVersion
\sa setVersion(), version()
diff --git a/src/corelib/serialization/qdatastream.h b/src/corelib/serialization/qdatastream.h
index cfcd89333b..d9d4a4fcd3 100644
--- a/src/corelib/serialization/qdatastream.h
+++ b/src/corelib/serialization/qdatastream.h
@@ -321,14 +321,31 @@ template <typename Container>
QDataStream &writeAssociativeContainer(QDataStream &s, const Container &c)
{
s << quint32(c.size());
+#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) && QT_DEPRECATED_SINCE(5, 15)
// Deserialization should occur in the reverse order.
// Otherwise, value() will return the least recently inserted
// value instead of the most recently inserted one.
auto it = c.constEnd();
auto begin = c.constBegin();
while (it != begin) {
+ QT_WARNING_PUSH
+ QT_WARNING_DISABLE_DEPRECATED
--it;
+ QT_WARNING_POP
s << it.key() << it.value();
+#else
+ auto it = c.constBegin();
+ auto end = c.constEnd();
+ while (it != end) {
+ const auto rangeStart = it++;
+ while (it != end && rangeStart.key() == it.key())
+ ++it;
+ const qint64 last = std::distance(rangeStart, it) - 1;
+ for (qint64 i = last; i >= 0; --i) {
+ auto next = std::next(rangeStart, i);
+ s << next.key() << next.value();
+ }
+#endif
}
return s;
diff --git a/src/corelib/serialization/qjson.cpp b/src/corelib/serialization/qjson.cpp
deleted file mode 100644
index 76f1eae1ce..0000000000
--- a/src/corelib/serialization/qjson.cpp
+++ /dev/null
@@ -1,451 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qjson_p.h"
-#include <qalgorithms.h>
-
-QT_BEGIN_NAMESPACE
-
-namespace QJsonPrivate
-{
-
-static Q_CONSTEXPR Base emptyArray = { { qle_uint(sizeof(Base)) }, { 0 }, { qle_uint(0) } };
-static Q_CONSTEXPR Base emptyObject = { { qle_uint(sizeof(Base)) }, { qToLittleEndian(1u) }, { qle_uint(0) } };
-
-void Data::compact()
-{
- Q_ASSERT(sizeof(Value) == sizeof(offset));
-
- if (!compactionCounter)
- return;
-
- Base *base = header->root();
- int reserve = 0;
- if (base->is_object) {
- Object *o = static_cast<Object *>(base);
- for (int i = 0; i < (int)o->length; ++i)
- reserve += o->entryAt(i)->usedStorage(o);
- } else {
- Array *a = static_cast<Array *>(base);
- for (int i = 0; i < (int)a->length; ++i)
- reserve += (*a)[i].usedStorage(a);
- }
-
- int size = sizeof(Base) + reserve + base->length*sizeof(offset);
- int alloc = sizeof(Header) + size;
- Header *h = (Header *) malloc(alloc);
- Q_CHECK_PTR(h);
- h->tag = QJsonDocument::BinaryFormatTag;
- h->version = 1;
- Base *b = h->root();
- b->size = size;
- b->is_object = header->root()->is_object;
- b->length = base->length;
- b->tableOffset = reserve + sizeof(Array);
-
- int offset = sizeof(Base);
- if (b->is_object) {
- Object *o = static_cast<Object *>(base);
- Object *no = static_cast<Object *>(b);
-
- for (int i = 0; i < (int)o->length; ++i) {
- no->table()[i] = offset;
-
- const Entry *e = o->entryAt(i);
- Entry *ne = no->entryAt(i);
- int s = e->size();
- memcpy(ne, e, s);
- offset += s;
- int dataSize = e->value.usedStorage(o);
- if (dataSize) {
- memcpy((char *)no + offset, e->value.data(o), dataSize);
- ne->value.value = offset;
- offset += dataSize;
- }
- }
- } else {
- Array *a = static_cast<Array *>(base);
- Array *na = static_cast<Array *>(b);
-
- for (int i = 0; i < (int)a->length; ++i) {
- const Value &v = (*a)[i];
- Value &nv = (*na)[i];
- nv = v;
- int dataSize = v.usedStorage(a);
- if (dataSize) {
- memcpy((char *)na + offset, v.data(a), dataSize);
- nv.value = offset;
- offset += dataSize;
- }
- }
- }
- Q_ASSERT(offset == (int)b->tableOffset);
-
- free(header);
- header = h;
- this->alloc = alloc;
- compactionCounter = 0;
-}
-
-bool Data::valid() const
-{
- if (header->tag != QJsonDocument::BinaryFormatTag || header->version != 1u)
- return false;
-
- bool res = false;
- Base *root = header->root();
- int maxSize = alloc - sizeof(Header);
- if (root->is_object)
- res = static_cast<Object *>(root)->isValid(maxSize);
- else
- res = static_cast<Array *>(root)->isValid(maxSize);
-
- return res;
-}
-
-
-int Base::reserveSpace(uint dataSize, int posInTable, uint numItems, bool replace)
-{
- Q_ASSERT(posInTable >= 0 && posInTable <= (int)length);
- if (size + dataSize >= Value::MaxSize) {
- qWarning("QJson: Document too large to store in data structure %d %d %d", (uint)size, dataSize, Value::MaxSize);
- return 0;
- }
-
- offset off = tableOffset;
- // move table to new position
- if (replace) {
- memmove((char *)(table()) + dataSize, table(), length*sizeof(offset));
- } else {
- memmove((char *)(table() + posInTable + numItems) + dataSize, table() + posInTable, (length - posInTable)*sizeof(offset));
- memmove((char *)(table()) + dataSize, table(), posInTable*sizeof(offset));
- }
- tableOffset += dataSize;
- for (int i = 0; i < (int)numItems; ++i)
- table()[posInTable + i] = off;
- size += dataSize;
- if (!replace) {
- length += numItems;
- size += numItems * sizeof(offset);
- }
- return off;
-}
-
-void Base::removeItems(int pos, int numItems)
-{
- Q_ASSERT(pos >= 0 && pos <= (int)length);
- if (pos + numItems < (int)length)
- memmove(table() + pos, table() + pos + numItems, (length - pos - numItems)*sizeof(offset));
- length -= numItems;
-}
-
-int Object::indexOf(QStringView key, bool *exists) const
-{
- int min = 0;
- int n = length;
- while (n > 0) {
- int half = n >> 1;
- int middle = min + half;
- if (*entryAt(middle) >= key) {
- n = half;
- } else {
- min = middle + 1;
- n -= half + 1;
- }
- }
- if (min < (int)length && *entryAt(min) == key) {
- *exists = true;
- return min;
- }
- *exists = false;
- return min;
-}
-
-int Object::indexOf(QLatin1String key, bool *exists) const
-{
- int min = 0;
- int n = length;
- while (n > 0) {
- int half = n >> 1;
- int middle = min + half;
- if (*entryAt(middle) >= key) {
- n = half;
- } else {
- min = middle + 1;
- n -= half + 1;
- }
- }
- if (min < (int)length && *entryAt(min) == key) {
- *exists = true;
- return min;
- }
- *exists = false;
- return min;
-}
-
-bool Object::isValid(int maxSize) const
-{
- if (size > (uint)maxSize || tableOffset + length*sizeof(offset) > size)
- return false;
-
- QString lastKey;
- for (uint i = 0; i < length; ++i) {
- offset entryOffset = table()[i];
- if (entryOffset + sizeof(Entry) >= tableOffset)
- return false;
- Entry *e = entryAt(i);
- if (!e->isValid(tableOffset - table()[i]))
- return false;
- QString key = e->key();
- if (key < lastKey)
- return false;
- if (!e->value.isValid(this))
- return false;
- lastKey = key;
- }
- return true;
-}
-
-
-
-bool Array::isValid(int maxSize) const
-{
- if (size > (uint)maxSize || tableOffset + length*sizeof(offset) > size)
- return false;
-
- for (uint i = 0; i < length; ++i) {
- if (!at(i).isValid(this))
- return false;
- }
- return true;
-}
-
-
-bool Entry::operator ==(QStringView key) const
-{
- if (value.latinKey)
- return (shallowLatin1Key() == key);
- else
- return (shallowKey() == key);
-}
-
-bool Entry::operator==(QLatin1String key) const
-{
- if (value.latinKey)
- return shallowLatin1Key() == key;
- else
- return shallowKey() == QString(key); // ### conversion to QString
-}
-
-bool Entry::operator ==(const Entry &other) const
-{
- if (value.latinKey) {
- if (other.value.latinKey)
- return shallowLatin1Key() == other.shallowLatin1Key();
- return shallowLatin1Key() == other.shallowKey();
- } else if (other.value.latinKey) {
- return shallowKey() == other.shallowLatin1Key();
- }
- return shallowKey() == other.shallowKey();
-}
-
-bool Entry::operator >=(const Entry &other) const
-{
- if (value.latinKey) {
- if (other.value.latinKey)
- return shallowLatin1Key() >= other.shallowLatin1Key();
- return shallowLatin1Key() >= other.shallowKey();
- } else if (other.value.latinKey) {
- return shallowKey() >= other.shallowLatin1Key();
- }
- return shallowKey() >= other.shallowKey();
-}
-
-
-int Value::usedStorage(const Base *b) const
-{
- int s = 0;
- switch (type) {
- case QJsonValue::Double:
- if (latinOrIntValue)
- break;
- s = sizeof(double);
- break;
- case QJsonValue::String: {
- char *d = data(b);
- if (latinOrIntValue)
- s = sizeof(ushort) + qFromLittleEndian(*(ushort *)d);
- else
- s = sizeof(int) + sizeof(ushort) * qFromLittleEndian(*(int *)d);
- break;
- }
- case QJsonValue::Array:
- case QJsonValue::Object:
- s = base(b)->size;
- break;
- case QJsonValue::Null:
- case QJsonValue::Bool:
- default:
- break;
- }
- return alignedSize(s);
-}
-
-inline bool isValidValueOffset(uint offset, uint tableOffset)
-{
- return offset >= sizeof(Base)
- && offset + sizeof(uint) <= tableOffset;
-}
-
-bool Value::isValid(const Base *b) const
-{
- switch (type) {
- case QJsonValue::Null:
- case QJsonValue::Bool:
- return true;
- case QJsonValue::Double:
- return latinOrIntValue || isValidValueOffset(value, b->tableOffset);
- case QJsonValue::String:
- if (!isValidValueOffset(value, b->tableOffset))
- return false;
- if (latinOrIntValue)
- return asLatin1String(b).isValid(b->tableOffset - value);
- return asString(b).isValid(b->tableOffset - value);
- case QJsonValue::Array:
- return isValidValueOffset(value, b->tableOffset)
- && static_cast<Array *>(base(b))->isValid(b->tableOffset - value);
- case QJsonValue::Object:
- return isValidValueOffset(value, b->tableOffset)
- && static_cast<Object *>(base(b))->isValid(b->tableOffset - value);
- default:
- return false;
- }
-}
-
-/*!
- \internal
- */
-int Value::requiredStorage(QJsonValue &v, bool *compressed)
-{
- *compressed = false;
- switch (v.t) {
- case QJsonValue::Double:
- if (QJsonPrivate::compressedNumber(v.dbl) != INT_MAX) {
- *compressed = true;
- return 0;
- }
- return sizeof(double);
- case QJsonValue::String: {
- QString s = v.toString();
- *compressed = QJsonPrivate::useCompressed(s);
- return QJsonPrivate::qStringSize(s, *compressed);
- }
- case QJsonValue::Array:
- case QJsonValue::Object:
- if (v.d && v.d->compactionCounter) {
- v.detach();
- v.d->compact();
- v.base = static_cast<QJsonPrivate::Base *>(v.d->header->root());
- }
- return v.base ? uint(v.base->size) : sizeof(QJsonPrivate::Base);
- case QJsonValue::Undefined:
- case QJsonValue::Null:
- case QJsonValue::Bool:
- break;
- }
- return 0;
-}
-
-/*!
- \internal
- */
-uint Value::valueToStore(const QJsonValue &v, uint offset)
-{
- switch (v.t) {
- case QJsonValue::Undefined:
- case QJsonValue::Null:
- break;
- case QJsonValue::Bool:
- return v.b;
- case QJsonValue::Double: {
- int c = QJsonPrivate::compressedNumber(v.dbl);
- if (c != INT_MAX)
- return c;
- }
- Q_FALLTHROUGH();
- case QJsonValue::String:
- case QJsonValue::Array:
- case QJsonValue::Object:
- return offset;
- }
- return 0;
-}
-
-/*!
- \internal
- */
-void Value::copyData(const QJsonValue &v, char *dest, bool compressed)
-{
- switch (v.t) {
- case QJsonValue::Double:
- if (!compressed) {
- qToLittleEndian(v.ui, dest);
- }
- break;
- case QJsonValue::String: {
- QString str = v.toString();
- QJsonPrivate::copyString(dest, str, compressed);
- break;
- }
- case QJsonValue::Array:
- case QJsonValue::Object: {
- const QJsonPrivate::Base *b = v.base;
- if (!b)
- b = (v.t == QJsonValue::Array ? &emptyArray : &emptyObject);
- memcpy(dest, b, b->size);
- break;
- }
- default:
- break;
- }
-}
-
-} // namespace QJsonPrivate
-
-QT_END_NAMESPACE
diff --git a/src/corelib/serialization/qjson_p.h b/src/corelib/serialization/qjson_p.h
index 7978bed7da..d2bbf928d0 100644
--- a/src/corelib/serialization/qjson_p.h
+++ b/src/corelib/serialization/qjson_p.h
@@ -52,743 +52,170 @@
// We mean it.
//
-#include <qjsonobject.h>
#include <qjsonvalue.h>
-#include <qjsondocument.h>
-#include <qjsonarray.h>
-#include <qatomic.h>
-#include <qstring.h>
-#include <qendian.h>
-#include <qnumeric.h>
-
-#include "private/qendian_p.h"
-#include "private/qsimd_p.h"
-
-#include <limits.h>
-#include <limits>
-#include <type_traits>
+#include <qcborvalue.h>
+#include <private/qcborvalue_p.h>
QT_BEGIN_NAMESPACE
-// in qstring.cpp
-void qt_to_latin1_unchecked(uchar *dst, const ushort *uc, qsizetype len);
-void qt_from_latin1(ushort *dst, const char *str, size_t size) noexcept;
-
-/*
- This defines a binary data structure for Json data. The data structure is optimised for fast reading
- and minimum allocations. The whole data structure can be mmap'ed and used directly.
-
- In most cases the binary structure is not as space efficient as a utf8 encoded text representation, but
- much faster to access.
-
- The size requirements are:
-
- String:
- Latin1 data: 2 bytes header + string.length()
- Full Unicode: 4 bytes header + 2*(string.length())
-
- Values: 4 bytes + size of data (size can be 0 for some data)
- bool: 0 bytes
- double: 8 bytes (0 if integer with less than 27bits)
- string: see above
- array: size of array
- object: size of object
- Array: 12 bytes + 4*length + size of Value data
- Object: 12 bytes + 8*length + size of Key Strings + size of Value data
-
- For an example such as
-
- { // object: 12 + 5*8 = 52
- "firstName": "John", // key 12, value 8 = 20
- "lastName" : "Smith", // key 12, value 8 = 20
- "age" : 25, // key 8, value 0 = 8
- "address" : // key 12, object below = 140
- { // object: 12 + 4*8
- "streetAddress": "21 2nd Street", // key 16, value 16
- "city" : "New York", // key 8, value 12
- "state" : "NY", // key 8, value 4
- "postalCode" : "10021" // key 12, value 8
- }, // object total: 128
- "phoneNumber": // key: 16, value array below = 172
- [ // array: 12 + 2*4 + values below: 156
- { // object 12 + 2*8
- "type" : "home", // key 8, value 8
- "number": "212 555-1234" // key 8, value 16
- }, // object total: 68
- { // object 12 + 2*8
- "type" : "fax", // key 8, value 8
- "number": "646 555-4567" // key 8, value 16
- } // object total: 68
- ] // array total: 156
- } // great total: 412 bytes
-
- The uncompressed text file used roughly 500 bytes, so in this case we end up using about
- the same space as the text representation.
-
- Other measurements have shown a slightly bigger binary size than a compact text
- representation where all possible whitespace was stripped out.
-*/
-#define Q_DECLARE_JSONPRIVATE_TYPEINFO(Class, Flags) } Q_DECLARE_TYPEINFO(QJsonPrivate::Class, Flags); namespace QJsonPrivate {
namespace QJsonPrivate {
-class Array;
-class Object;
-class Value;
-class Entry;
-
-template<typename T>
-using q_littleendian = QLEInteger<T>;
-
-typedef q_littleendian<short> qle_short;
-typedef q_littleendian<unsigned short> qle_ushort;
-typedef q_littleendian<int> qle_int;
-typedef q_littleendian<unsigned int> qle_uint;
-
-template<int pos, int width>
-using qle_bitfield = QLEIntegerBitfield<uint, pos, width>;
-
-template<int pos, int width>
-using qle_signedbitfield = QLEIntegerBitfield<int, pos, width>;
-
-typedef qle_uint offset;
-
-// round the size up to the next 4 byte boundary
-inline int alignedSize(int size) { return (size + 3) & ~3; }
-
-const int MaxLatin1Length = 0x7fff;
-
-static inline bool useCompressed(QStringView s)
-{
- if (s.length() > MaxLatin1Length)
- return false;
- return QtPrivate::isLatin1(s);
-}
-
-static inline bool useCompressed(QLatin1String s)
-{
- return s.size() <= MaxLatin1Length;
-}
-
-template <typename T>
-static inline int qStringSize(T string, bool compress)
-{
- int l = 2 + string.size();
- if (!compress)
- l *= 2;
- return alignedSize(l);
-}
-
-// returns INT_MAX if it can't compress it into 28 bits
-static inline int compressedNumber(double d)
-{
- // this relies on details of how ieee floats are represented
- const int exponent_off = 52;
- const quint64 fraction_mask = 0x000fffffffffffffull;
- const quint64 exponent_mask = 0x7ff0000000000000ull;
-
- quint64 val;
- memcpy (&val, &d, sizeof(double));
- int exp = (int)((val & exponent_mask) >> exponent_off) - 1023;
- if (exp < 0 || exp > 25)
- return INT_MAX;
-
- quint64 non_int = val & (fraction_mask >> exp);
- if (non_int)
- return INT_MAX;
-
- bool neg = (val >> 63) != 0;
- val &= fraction_mask;
- val |= ((quint64)1 << 52);
- int res = (int)(val >> (52 - exp));
- return neg ? -res : res;
-}
-
-class Latin1String;
-
-class String
-{
-public:
- explicit String(const char *data) { d = (Data *)data; }
-
- struct Data {
- qle_uint length;
- qle_ushort utf16[1];
- };
-
- Data *d;
-
- int byteSize() const { return sizeof(uint) + sizeof(ushort) * d->length; }
- bool isValid(int maxSize) const {
- // Check byteSize() <= maxSize, avoiding integer overflow
- maxSize -= sizeof(uint);
- return maxSize >= 0 && uint(d->length) <= maxSize / sizeof(ushort);
- }
-
- inline String &operator=(QStringView str)
- {
- d->length = str.length();
- qToLittleEndian<quint16>(str.utf16(), str.length(), d->utf16);
- fillTrailingZeros();
- return *this;
- }
-
- inline String &operator=(QLatin1String str)
- {
- d->length = str.size();
-#if Q_BYTE_ORDER == Q_BIG_ENDIAN
- for (int i = 0; i < str.size(); ++i)
- d->utf16[i] = str[i].unicode();
-#else
- qt_from_latin1((ushort *)d->utf16, str.data(), str.size());
-#endif
- fillTrailingZeros();
- return *this;
- }
-
- void fillTrailingZeros()
- {
- if (d->length & 1)
- d->utf16[d->length] = 0;
- }
-
- inline bool operator ==(QStringView str) const {
- int slen = str.length();
- int l = d->length;
- if (slen != l)
- return false;
- const ushort *s = (const ushort *)str.utf16();
- const qle_ushort *a = d->utf16;
- const ushort *b = s;
- while (l-- && *a == *b)
- a++,b++;
- return (l == -1);
- }
- inline bool operator !=(QStringView str) const {
- return !operator ==(str);
- }
- inline bool operator >=(QStringView str) const {
- // ###
- return toString() >= str;
- }
-
- inline bool operator<(const Latin1String &str) const;
- inline bool operator>=(const Latin1String &str) const { return !operator <(str); }
- inline bool operator ==(const Latin1String &str) const;
-
- inline bool operator ==(const String &str) const {
- if (d->length != str.d->length)
- return false;
- return !memcmp(d->utf16, str.d->utf16, d->length*sizeof(ushort));
- }
- inline bool operator<(const String &other) const;
- inline bool operator >=(const String &other) const { return !(*this < other); }
-
- inline QString toString() const {
-#if Q_BYTE_ORDER == Q_LITTLE_ENDIAN
- return QString((QChar *)d->utf16, d->length);
-#else
- int l = d->length;
- QString str(l, Qt::Uninitialized);
- QChar *ch = str.data();
- for (int i = 0; i < l; ++i)
- ch[i] = QChar(d->utf16[i]);
- return str;
-#endif
- }
-
-};
-
-class Latin1String
+template<typename Element, typename ElementsIterator>
+struct ObjectIterator
{
-public:
- explicit Latin1String(const char *data) { d = (Data *)data; }
-
- struct Data {
- qle_ushort length;
- char latin1[1];
- };
- Data *d;
-
- int byteSize() const { return sizeof(ushort) + sizeof(char)*(d->length); }
- bool isValid(int maxSize) const {
- return byteSize() <= maxSize;
- }
-
- inline Latin1String &operator=(QStringView str)
- {
- int len = d->length = str.length();
- uchar *l = (uchar *)d->latin1;
- const ushort *uc = (const ushort *)str.utf16();
- qt_to_latin1_unchecked(l, uc, len);
+ using pointer = Element *;
- fillTrailingZeros();
- return *this;
- }
+ struct value_type;
+ struct reference {
+ reference(Element &ref) : m_key(&ref) {}
- inline Latin1String &operator=(QLatin1String str)
- {
- int len = d->length = str.size();
- uchar *l = (uchar *)d->latin1;
- memcpy(l, str.data(), len);
+ reference() = delete;
+ ~reference() = default;
- fillTrailingZeros();
- return *this;
- }
-
- void fillTrailingZeros()
- {
- uchar *l = (uchar *)d->latin1;
- for (int len = d->length; (quintptr)(l + len) & 0x3; ++len)
- l[len] = 0;
- }
-
- QLatin1String toQLatin1String() const noexcept {
- return QLatin1String(d->latin1, d->length);
- }
+ reference(const reference &other) = default;
+ reference(reference &&other) = default;
- inline bool operator<(const String &str) const
- {
- const qle_ushort *uc = (qle_ushort *) str.d->utf16;
- if (!uc || *uc == 0)
- return false;
-
- const uchar *c = (uchar *)d->latin1;
- const uchar *e = c + qMin((int)d->length, (int)str.d->length);
-
- while (c < e) {
- if (*c != *uc)
- break;
- ++c;
- ++uc;
+ reference &operator=(const value_type &value);
+ reference &operator=(const reference &other)
+ {
+ if (m_key != other.m_key) {
+ key() = other.key();
+ value() = other.value();
+ }
+ return *this;
}
- return (c == e ? (int)d->length < (int)str.d->length : *c < *uc);
-
- }
- inline bool operator ==(const String &str) const {
- return (str == *this);
- }
- inline bool operator >=(const String &str) const {
- return !(*this < str);
- }
-
- inline QString toString() const {
- return QString::fromLatin1(d->latin1, d->length);
- }
-};
-
-#define DEF_OP(op) \
- inline bool operator op(Latin1String lhs, Latin1String rhs) noexcept \
- { \
- return lhs.toQLatin1String() op rhs.toQLatin1String(); \
- } \
- inline bool operator op(QLatin1String lhs, Latin1String rhs) noexcept \
- { \
- return lhs op rhs.toQLatin1String(); \
- } \
- inline bool operator op(Latin1String lhs, QLatin1String rhs) noexcept \
- { \
- return lhs.toQLatin1String() op rhs; \
- } \
- inline bool operator op(QStringView lhs, Latin1String rhs) noexcept \
- { \
- return lhs op rhs.toQLatin1String(); \
- } \
- inline bool operator op(Latin1String lhs, QStringView rhs) noexcept \
- { \
- return lhs.toQLatin1String() op rhs; \
- } \
- /*end*/
-DEF_OP(==)
-DEF_OP(!=)
-DEF_OP(< )
-DEF_OP(> )
-DEF_OP(<=)
-DEF_OP(>=)
-#undef DEF_OP
-
-inline bool String::operator ==(const Latin1String &str) const
-{
- if ((int)d->length != (int)str.d->length)
- return false;
- const qle_ushort *uc = d->utf16;
- const qle_ushort *e = uc + d->length;
- const uchar *c = (uchar *)str.d->latin1;
-
- while (uc < e) {
- if (*uc != *c)
- return false;
- ++uc;
- ++c;
- }
- return true;
-}
-
-inline bool String::operator <(const String &other) const
-{
- int alen = d->length;
- int blen = other.d->length;
- int l = qMin(alen, blen);
- qle_ushort *a = d->utf16;
- qle_ushort *b = other.d->utf16;
-
- while (l-- && *a == *b)
- a++,b++;
- if (l==-1)
- return (alen < blen);
- return (ushort)*a < (ushort)*b;
-}
-
-inline bool String::operator<(const Latin1String &str) const
-{
- const uchar *c = (uchar *) str.d->latin1;
- if (!c || *c == 0)
- return false;
-
- const qle_ushort *uc = d->utf16;
- const qle_ushort *e = uc + qMin((int)d->length, (int)str.d->length);
-
- while (uc < e) {
- if (*uc != *c)
- break;
- ++uc;
- ++c;
- }
- return (uc == e ? (int)d->length < (int)str.d->length : (ushort)*uc < *c);
-
-}
-template <typename T>
-static inline void copyString(char *dest, T str, bool compress)
-{
- if (compress) {
- Latin1String string(dest);
- string = str;
- } else {
- String string(dest);
- string = str;
- }
-}
+ reference &operator=(reference &&other)
+ {
+ key() = other.key();
+ value() = other.value();
+ return *this;
+ }
+ Element &key() { return *m_key; }
+ Element &value() { return *(m_key + 1); }
-/*
- Base is the base class for both Object and Array. Both classes work more or less the same way.
- The class starts with a header (defined by the struct below), then followed by data (the data for
- values in the Array case and Entry's (see below) for objects.
+ const Element &key() const { return *m_key; }
+ const Element &value() const { return *(m_key + 1); }
- After the data a table follows (tableOffset points to it) containing Value objects for Arrays, and
- offsets from the beginning of the object to Entry's in the case of Object.
- Entry's in the Object's table are lexicographically sorted by key in the table(). This allows the usage
- of a binary search over the keys in an Object.
- */
-class Base
-{
-public:
- qle_uint size;
- union {
- uint _dummy;
- qle_bitfield<0, 1> is_object;
- qle_bitfield<1, 31> length;
+ private:
+ Element *m_key;
};
- offset tableOffset;
- // content follows here
- inline bool isObject() const { return !!is_object; }
- inline bool isArray() const { return !isObject(); }
+ struct value_type {
+ value_type(reference ref) : m_key(ref.key()), m_value(ref.value()) {}
- inline offset *table() const { return (offset *) (((char *) this) + tableOffset); }
-
- int reserveSpace(uint dataSize, int posInTable, uint numItems, bool replace);
- void removeItems(int pos, int numItems);
-};
-
-class Object : public Base
-{
-public:
- Entry *entryAt(int i) const {
- return reinterpret_cast<Entry *>(((char *)this) + table()[i]);
- }
- int indexOf(QStringView key, bool *exists) const;
- int indexOf(QLatin1String key, bool *exists) const;
+ Element key() const { return m_key; }
+ Element value() const { return m_value; }
+ private:
+ Element m_key;
+ Element m_value;
+ };
- bool isValid(int maxSize) const;
-};
+ using difference_type = typename QVector<Element>::difference_type;
+ using iterator_category = std::random_access_iterator_tag;
+ ObjectIterator() = default;
+ ObjectIterator(ElementsIterator it) : it(it) {}
+ ElementsIterator elementsIterator() { return it; }
-class Array : public Base
-{
-public:
- inline Value at(int i) const;
- inline Value &operator [](int i);
+ ObjectIterator operator++(int) { ObjectIterator ret(it); it += 2; return ret; }
+ ObjectIterator &operator++() { it += 2; return *this; }
+ ObjectIterator &operator+=(difference_type n) { it += 2 * n; return *this; }
- bool isValid(int maxSize) const;
-};
+ ObjectIterator operator--(int) { ObjectIterator ret(it); it -= 2; return ret; }
+ ObjectIterator &operator--() { it -= 2; return *this; }
+ ObjectIterator &operator-=(difference_type n) { it -= 2 * n; return *this; }
+ reference operator*() const { return *it; }
+ reference operator[](int n) const { return it[n * 2]; }
-class Value
-{
-public:
- enum {
- MaxSize = (1<<27) - 1
- };
- union {
- uint _dummy;
- qle_bitfield<0, 3> type;
- qle_bitfield<3, 1> latinOrIntValue;
- qle_bitfield<4, 1> latinKey;
- qle_bitfield<5, 27> value;
- qle_signedbitfield<5, 27> int_value;
- };
+ bool operator<(ObjectIterator other) const { return it < other.it; }
+ bool operator>(ObjectIterator other) const { return it > other.it; }
+ bool operator<=(ObjectIterator other) const { return it <= other.it; }
+ bool operator>=(ObjectIterator other) const { return it >= other.it; }
- inline char *data(const Base *b) const { return ((char *)b) + value; }
- int usedStorage(const Base *b) const;
-
- bool toBoolean() const;
- double toDouble(const Base *b) const;
- QString toString(const Base *b) const;
- String asString(const Base *b) const;
- Latin1String asLatin1String(const Base *b) const;
- Base *base(const Base *b) const;
-
- bool isValid(const Base *b) const;
-
- static int requiredStorage(QJsonValue &v, bool *compressed);
- static uint valueToStore(const QJsonValue &v, uint offset);
- static void copyData(const QJsonValue &v, char *dest, bool compressed);
+private:
+ ElementsIterator it;
};
-Q_DECLARE_JSONPRIVATE_TYPEINFO(Value, Q_PRIMITIVE_TYPE)
-inline Value Array::at(int i) const
+template<typename Element, typename ElementsIterator>
+inline ObjectIterator<Element, ElementsIterator> operator+(
+ ObjectIterator<Element, ElementsIterator> a,
+ typename ObjectIterator<Element, ElementsIterator>::difference_type n)
{
- return *(Value *) (table() + i);
+ return {a.elementsIterator() + 2 * n};
}
-
-inline Value &Array::operator [](int i)
+template<typename Element, typename ElementsIterator>
+inline ObjectIterator<Element, ElementsIterator> operator+(
+ int n, ObjectIterator<Element, ElementsIterator> a)
{
- return *(Value *) (table() + i);
+ return {a.elementsIterator() + 2 * n};
}
-
-
-
-class Entry {
-public:
- Value value;
- // key
- // value data follows key
-
- uint size() const {
- int s = sizeof(Entry);
- if (value.latinKey)
- s += shallowLatin1Key().byteSize();
- else
- s += shallowKey().byteSize();
- return alignedSize(s);
- }
-
- int usedStorage(Base *b) const {
- return size() + value.usedStorage(b);
- }
-
- String shallowKey() const
- {
- Q_ASSERT(!value.latinKey);
- return String((const char *)this + sizeof(Entry));
- }
- Latin1String shallowLatin1Key() const
- {
- Q_ASSERT(value.latinKey);
- return Latin1String((const char *)this + sizeof(Entry));
- }
- QString key() const
- {
- if (value.latinKey) {
- return shallowLatin1Key().toString();
- }
- return shallowKey().toString();
- }
-
- bool isValid(int maxSize) const {
- if (maxSize < (int)sizeof(Entry))
- return false;
- maxSize -= sizeof(Entry);
- if (value.latinKey)
- return shallowLatin1Key().isValid(maxSize);
- return shallowKey().isValid(maxSize);
- }
-
- bool operator ==(QStringView key) const;
- inline bool operator !=(QStringView key) const { return !operator ==(key); }
- inline bool operator >=(QStringView key) const;
-
- bool operator==(QLatin1String key) const;
- inline bool operator!=(QLatin1String key) const { return !operator ==(key); }
- inline bool operator>=(QLatin1String key) const;
-
- bool operator ==(const Entry &other) const;
- bool operator >=(const Entry &other) const;
-};
-
-inline bool Entry::operator >=(QStringView key) const
+template<typename Element, typename ElementsIterator>
+inline ObjectIterator<Element, ElementsIterator> operator-(
+ ObjectIterator<Element, ElementsIterator> a,
+ typename ObjectIterator<Element, ElementsIterator>::difference_type n)
{
- if (value.latinKey)
- return (shallowLatin1Key() >= key);
- else
- return (shallowKey() >= key);
+ return {a.elementsIterator() - 2 * n};
}
-
-inline bool Entry::operator >=(QLatin1String key) const
+template<typename Element, typename ElementsIterator>
+inline int operator-(
+ ObjectIterator<Element, ElementsIterator> a,
+ ObjectIterator<Element, ElementsIterator> b)
{
- if (value.latinKey)
- return shallowLatin1Key() >= key;
- else
- return shallowKey() >= QString(key); // ### conversion to QString
+ return (a.elementsIterator() - b.elementsIterator()) / 2;
}
-
-inline bool operator <(QStringView key, const Entry &e)
-{ return e >= key; }
-
-inline bool operator<(QLatin1String key, const Entry &e)
-{ return e >= key; }
-
-
-class Header {
-public:
- qle_uint tag; // 'qbjs'
- qle_uint version; // 1
- Base *root() { return (Base *)(this + 1); }
-};
-
-
-inline bool Value::toBoolean() const
+template<typename Element, typename ElementsIterator>
+inline bool operator!=(
+ ObjectIterator<Element, ElementsIterator> a,
+ ObjectIterator<Element, ElementsIterator> b)
{
- Q_ASSERT(type == QJsonValue::Bool);
- return value != 0;
+ return a.elementsIterator() != b.elementsIterator();
}
-
-inline double Value::toDouble(const Base *b) const
+template<typename Element, typename ElementsIterator>
+inline bool operator==(
+ ObjectIterator<Element, ElementsIterator> a,
+ ObjectIterator<Element, ElementsIterator> b)
{
- Q_ASSERT(type == QJsonValue::Double);
- if (latinOrIntValue)
- return int_value;
-
- quint64 i = qFromLittleEndian<quint64>((const uchar *)b + value);
- double d;
- memcpy(&d, &i, sizeof(double));
- return d;
+ return a.elementsIterator() == b.elementsIterator();
}
-inline String Value::asString(const Base *b) const
-{
- Q_ASSERT(type == QJsonValue::String && !latinOrIntValue);
- return String(data(b));
-}
+using KeyIterator = ObjectIterator<QtCbor::Element, QVector<QtCbor::Element>::iterator>;
+using ConstKeyIterator = ObjectIterator<const QtCbor::Element, QVector<QtCbor::Element>::const_iterator>;
-inline Latin1String Value::asLatin1String(const Base *b) const
+template<>
+inline KeyIterator::reference &KeyIterator::reference::operator=(const KeyIterator::value_type &value)
{
- Q_ASSERT(type == QJsonValue::String && latinOrIntValue);
- return Latin1String(data(b));
+ *m_key = value.key();
+ *(m_key + 1) = value.value();
+ return *this;
}
-inline QString Value::toString(const Base *b) const
+inline void swap(KeyIterator::reference a, KeyIterator::reference b)
{
- if (latinOrIntValue)
- return asLatin1String(b).toString();
- else
- return asString(b).toString();
+ KeyIterator::value_type t = a;
+ a = b;
+ b = t;
}
-inline Base *Value::base(const Base *b) const
+class Value
{
- Q_ASSERT(type == QJsonValue::Array || type == QJsonValue::Object);
- return reinterpret_cast<Base *>(data(b));
-}
-
-class Data {
public:
- enum Validation {
- Unchecked,
- Validated,
- Invalid
- };
-
- QAtomicInt ref;
- int alloc;
- union {
- char *rawData;
- Header *header;
- };
- uint compactionCounter : 31;
- uint ownsData : 1;
+ static QCborContainerPrivate *container(const QCborValue &v) { return v.container; }
- inline Data(char *raw, int a)
- : alloc(a), rawData(raw), compactionCounter(0), ownsData(true)
+ static QJsonValue fromTrustedCbor(const QCborValue &v)
{
+ QJsonValue result;
+ result.d = v.container;
+ result.n = v.n;
+ result.t = v.t;
+ return result;
}
- inline Data(int reserved, QJsonValue::Type valueType)
- : rawData(nullptr), compactionCounter(0), ownsData(true)
- {
- Q_ASSERT(valueType == QJsonValue::Array || valueType == QJsonValue::Object);
-
- alloc = sizeof(Header) + sizeof(Base) + reserved + sizeof(offset);
- header = (Header *)malloc(alloc);
- Q_CHECK_PTR(header);
- header->tag = QJsonDocument::BinaryFormatTag;
- header->version = 1;
- Base *b = header->root();
- b->size = sizeof(Base);
- b->is_object = (valueType == QJsonValue::Object);
- b->tableOffset = sizeof(Base);
- b->length = 0;
- }
- inline ~Data()
- { if (ownsData) free(rawData); }
-
- uint offsetOf(const void *ptr) const { return (uint)(((char *)ptr - rawData)); }
-
- QJsonObject toObject(Object *o) const
- {
- return QJsonObject(const_cast<Data *>(this), o);
- }
-
- QJsonArray toArray(Array *a) const
- {
- return QJsonArray(const_cast<Data *>(this), a);
- }
-
- Data *clone(Base *b, int reserve = 0)
- {
- int size = sizeof(Header) + b->size;
- if (b == header->root() && ref.loadRelaxed() == 1 && alloc >= size + reserve)
- return this;
-
- if (reserve) {
- if (reserve < 128)
- reserve = 128;
- size = qMax(size + reserve, qMin(size *2, (int)Value::MaxSize));
- if (size > Value::MaxSize) {
- qWarning("QJson: Document too large to store in data structure");
- return nullptr;
- }
- }
- char *raw = (char *)malloc(size);
- Q_CHECK_PTR(raw);
- memcpy(raw + sizeof(Header), b, b->size);
- Header *h = (Header *)raw;
- h->tag = QJsonDocument::BinaryFormatTag;
- h->version = 1;
- Data *d = new Data(raw, size);
- d->compactionCounter = (b == header->root()) ? compactionCounter : 0;
- return d;
- }
-
- void compact();
- bool valid() const;
-
-private:
- Q_DISABLE_COPY_MOVE(Data)
};
-}
+} // namespace QJsonPrivate
QT_END_NAMESPACE
diff --git a/src/corelib/serialization/qjsonarray.cpp b/src/corelib/serialization/qjsonarray.cpp
index 9636ac5856..c5d4bf0315 100644
--- a/src/corelib/serialization/qjsonarray.cpp
+++ b/src/corelib/serialization/qjsonarray.cpp
@@ -40,12 +40,16 @@
#include <qjsonobject.h>
#include <qjsonvalue.h>
#include <qjsonarray.h>
+#include <qjsondocument.h>
#include <qstringlist.h>
+#include <qcborarray.h>
#include <qvariant.h>
#include <qdebug.h>
+#include <private/qcborvalue_p.h>
+#include <private/qjson_p.h>
+
#include "qjsonwriter_p.h"
-#include "qjson_p.h"
QT_BEGIN_NAMESPACE
@@ -131,10 +135,7 @@ QT_BEGIN_NAMESPACE
/*!
Creates an empty array.
*/
-QJsonArray::QJsonArray()
- : d(nullptr), a(nullptr)
-{
-}
+QJsonArray::QJsonArray() = default;
/*!
\fn QJsonArray::QJsonArray(std::initializer_list<QJsonValue> args)
@@ -151,12 +152,10 @@ QJsonArray::QJsonArray()
/*!
\internal
*/
-QJsonArray::QJsonArray(QJsonPrivate::Data *data, QJsonPrivate::Array *array)
- : d(data), a(array)
+QJsonArray::QJsonArray(QCborContainerPrivate *array)
+ : a(array)
{
- Q_ASSERT(data);
Q_ASSERT(array);
- d->ref.ref();
}
/*!
@@ -168,18 +167,13 @@ QJsonArray::QJsonArray(QJsonPrivate::Data *data, QJsonPrivate::Array *array)
*/
void QJsonArray::initialize()
{
- d = nullptr;
a = nullptr;
}
/*!
Deletes the array.
*/
-QJsonArray::~QJsonArray()
-{
- if (d && !d->ref.deref())
- delete d;
-}
+QJsonArray::~QJsonArray() = default;
/*!
Creates a copy of \a other.
@@ -187,12 +181,22 @@ QJsonArray::~QJsonArray()
Since QJsonArray is implicitly shared, the copy is shallow
as long as the object doesn't get modified.
*/
+QJsonArray::QJsonArray(std::initializer_list<QJsonValue> args)
+{
+ initialize();
+ for (const auto & arg : args)
+ append(arg);
+}
+
QJsonArray::QJsonArray(const QJsonArray &other)
{
- d = other.d;
a = other.a;
- if (d)
- d->ref.ref();
+}
+
+QJsonArray::QJsonArray(QJsonArray &&other) noexcept
+ : a(other.a)
+{
+ other.a = nullptr;
}
/*!
@@ -200,15 +204,7 @@ QJsonArray::QJsonArray(const QJsonArray &other)
*/
QJsonArray &QJsonArray::operator =(const QJsonArray &other)
{
- if (d != other.d) {
- if (d && !d->ref.deref())
- delete d;
- d = other.d;
- if (d)
- d->ref.ref();
- }
a = other.a;
-
return *this;
}
@@ -282,48 +278,7 @@ QJsonArray QJsonArray::fromStringList(const QStringList &list)
*/
QJsonArray QJsonArray::fromVariantList(const QVariantList &list)
{
- QJsonArray array;
- if (list.isEmpty())
- return array;
-
- array.detach2(1024);
-
- QVector<QJsonPrivate::Value> values;
- values.resize(list.size());
- QJsonPrivate::Value *valueData = values.data();
- uint currentOffset = sizeof(QJsonPrivate::Base);
-
- for (int i = 0; i < list.size(); ++i) {
- QJsonValue val = QJsonValue::fromVariant(list.at(i));
-
- bool latinOrIntValue;
- int valueSize = QJsonPrivate::Value::requiredStorage(val, &latinOrIntValue);
-
- if (!array.detach2(valueSize))
- return QJsonArray();
-
- QJsonPrivate::Value *v = valueData + i;
- v->type = (val.t == QJsonValue::Undefined ? QJsonValue::Null : val.t);
- v->latinOrIntValue = latinOrIntValue;
- v->latinKey = false;
- v->value = QJsonPrivate::Value::valueToStore(val, currentOffset);
- if (valueSize)
- QJsonPrivate::Value::copyData(val, (char *)array.a + currentOffset, latinOrIntValue);
-
- currentOffset += valueSize;
- array.a->size = currentOffset;
- }
-
- // write table
- array.a->tableOffset = currentOffset;
- if (!array.detach2(sizeof(QJsonPrivate::offset)*values.size()))
- return QJsonArray();
- memcpy(static_cast<void *>(array.a->table()),
- static_cast<const void *>(values.constData()), values.size()*sizeof(uint));
- array.a->length = values.size();
- array.a->size = currentOffset + sizeof(QJsonPrivate::offset)*values.size();
-
- return array;
+ return QCborArray::fromVariantList(list).toJsonArray();
}
/*!
@@ -333,14 +288,7 @@ QJsonArray QJsonArray::fromVariantList(const QVariantList &list)
*/
QVariantList QJsonArray::toVariantList() const
{
- QVariantList list;
-
- if (a) {
- list.reserve(a->length);
- for (int i = 0; i < (int)a->length; ++i)
- list.append(QJsonValue(d, a, a->at(i)).toVariant());
- }
- return list;
+ return QCborArray::fromJsonArray(*this).toVariantList();
}
@@ -349,10 +297,7 @@ QVariantList QJsonArray::toVariantList() const
*/
int QJsonArray::size() const
{
- if (!d)
- return 0;
-
- return (int)a->length;
+ return a ? a->elements.size() : 0;
}
/*!
@@ -370,10 +315,7 @@ int QJsonArray::size() const
*/
bool QJsonArray::isEmpty() const
{
- if (!d)
- return true;
-
- return !a->length;
+ return a == nullptr || a->elements.isEmpty();
}
/*!
@@ -384,10 +326,10 @@ bool QJsonArray::isEmpty() const
*/
QJsonValue QJsonArray::at(int i) const
{
- if (!a || i < 0 || i >= (int)a->length)
+ if (!a || i < 0 || i >= a->elements.size())
return QJsonValue(QJsonValue::Undefined);
- return QJsonValue(d, a, a->at(i));
+ return QJsonPrivate::Value::fromTrustedCbor(a->valueAt(i));
}
/*!
@@ -411,7 +353,7 @@ QJsonValue QJsonArray::first() const
*/
QJsonValue QJsonArray::last() const
{
- return at(a ? (a->length - 1) : 0);
+ return at(a ? (a->elements.size() - 1) : 0);
}
/*!
@@ -433,7 +375,7 @@ void QJsonArray::prepend(const QJsonValue &value)
*/
void QJsonArray::append(const QJsonValue &value)
{
- insert(a ? (int)a->length : 0, value);
+ insert(a ? a->elements.size() : 0, value);
}
/*!
@@ -444,14 +386,10 @@ void QJsonArray::append(const QJsonValue &value)
*/
void QJsonArray::removeAt(int i)
{
- if (!a || i < 0 || i >= (int)a->length)
+ if (!a || i < 0 || i >= a->elements.length())
return;
-
detach2();
- a->removeItems(i, 1);
- ++d->compactionCounter;
- if (d->compactionCounter > 32u && d->compactionCounter >= unsigned(a->length) / 2u)
- compact();
+ a->removeAt(i);
}
/*! \fn void QJsonArray::removeFirst()
@@ -484,11 +422,12 @@ void QJsonArray::removeAt(int i)
*/
QJsonValue QJsonArray::takeAt(int i)
{
- if (!a || i < 0 || i >= (int)a->length)
+ if (!a || i < 0 || i >= a->elements.length())
return QJsonValue(QJsonValue::Undefined);
- QJsonValue v(d, a, a->at(i));
- removeAt(i); // detaches
+ detach2();
+ const QJsonValue v = QJsonPrivate::Value::fromTrustedCbor(a->extractAt(i));
+ a->removeAt(i);
return v;
}
@@ -501,29 +440,14 @@ QJsonValue QJsonArray::takeAt(int i)
*/
void QJsonArray::insert(int i, const QJsonValue &value)
{
- Q_ASSERT (i >= 0 && i <= (a ? (int)a->length : 0));
- QJsonValue val = value;
-
- bool compressed;
- int valueSize = QJsonPrivate::Value::requiredStorage(val, &compressed);
-
- if (!detach2(valueSize + sizeof(QJsonPrivate::Value)))
- return;
-
- if (!a->length)
- a->tableOffset = sizeof(QJsonPrivate::Array);
-
- int valueOffset = a->reserveSpace(valueSize, i, 1, false);
- if (!valueOffset)
- return;
-
- QJsonPrivate::Value &v = (*a)[i];
- v.type = (val.t == QJsonValue::Undefined ? QJsonValue::Null : val.t);
- v.latinOrIntValue = compressed;
- v.latinKey = false;
- v.value = QJsonPrivate::Value::valueToStore(val, valueOffset);
- if (valueSize)
- QJsonPrivate::Value::copyData(val, (char *)a + valueOffset, compressed);
+ if (a)
+ detach2(a->elements.length() + 1);
+ else
+ a = new QCborContainerPrivate;
+
+ Q_ASSERT (i >= 0 && i <= a->elements.length());
+ a->insertAt(i, value.type() == QJsonValue::Undefined ? QCborValue(nullptr)
+ : QCborValue::fromJsonValue(value));
}
/*!
@@ -552,33 +476,9 @@ void QJsonArray::insert(int i, const QJsonValue &value)
*/
void QJsonArray::replace(int i, const QJsonValue &value)
{
- Q_ASSERT (a && i >= 0 && i < (int)(a->length));
- QJsonValue val = value;
-
- bool compressed;
- int valueSize = QJsonPrivate::Value::requiredStorage(val, &compressed);
-
- if (!detach2(valueSize))
- return;
-
- if (!a->length)
- a->tableOffset = sizeof(QJsonPrivate::Array);
-
- int valueOffset = a->reserveSpace(valueSize, i, 1, true);
- if (!valueOffset)
- return;
-
- QJsonPrivate::Value &v = (*a)[i];
- v.type = (val.t == QJsonValue::Undefined ? QJsonValue::Null : val.t);
- v.latinOrIntValue = compressed;
- v.latinKey = false;
- v.value = QJsonPrivate::Value::valueToStore(val, valueOffset);
- if (valueSize)
- QJsonPrivate::Value::copyData(val, (char *)a + valueOffset, compressed);
-
- ++d->compactionCounter;
- if (d->compactionCounter > 32u && d->compactionCounter >= unsigned(a->length) / 2u)
- compact();
+ Q_ASSERT (a && i >= 0 && i < a->elements.length());
+ detach2();
+ a->replaceAt(i, QCborValue::fromJsonValue(value));
}
/*!
@@ -610,7 +510,7 @@ bool QJsonArray::contains(const QJsonValue &value) const
*/
QJsonValueRef QJsonArray::operator [](int i)
{
- Q_ASSERT(a && i >= 0 && i < (int)a->length);
+ Q_ASSERT(a && i >= 0 && i < a->elements.length());
return QJsonValueRef(this, i);
}
@@ -633,14 +533,14 @@ bool QJsonArray::operator==(const QJsonArray &other) const
return true;
if (!a)
- return !other.a->length;
+ return !other.a->elements.length();
if (!other.a)
- return !a->length;
- if (a->length != other.a->length)
+ return !a->elements.length();
+ if (a->elements.length() != other.a->elements.length())
return false;
- for (int i = 0; i < (int)a->length; ++i) {
- if (QJsonValue(d, a, a->at(i)) != QJsonValue(other.d, other.a, other.a->at(i)))
+ for (int i = 0; i < a->elements.length(); ++i) {
+ if (a->valueAt(i) != other.a->valueAt(i))
return false;
}
return true;
@@ -1216,28 +1116,10 @@ void QJsonArray::detach(uint reserve)
*/
bool QJsonArray::detach2(uint reserve)
{
- if (!d) {
- if (reserve >= QJsonPrivate::Value::MaxSize) {
- qWarning("QJson: Document too large to store in data structure");
- return false;
- }
- d = new QJsonPrivate::Data(reserve, QJsonValue::Array);
- a = static_cast<QJsonPrivate::Array *>(d->header->root());
- d->ref.ref();
- return true;
- }
- if (reserve == 0 && d->ref.loadRelaxed() == 1)
+ if (!a)
return true;
-
- QJsonPrivate::Data *x = d->clone(a, reserve);
- if (!x)
- return false;
- x->ref.ref();
- if (!d->ref.deref())
- delete d;
- d = x;
- a = static_cast<QJsonPrivate::Array *>(d->header->root());
- return true;
+ a = a->detach(a.data(), reserve ? reserve : size());
+ return a;
}
/*!
@@ -1245,12 +1127,7 @@ bool QJsonArray::detach2(uint reserve)
*/
void QJsonArray::compact()
{
- if (!d || !d->compactionCounter)
- return;
-
- detach2();
- d->compact();
- a = static_cast<QJsonPrivate::Array *>(d->header->root());
+ a->compact(a->elements.size());
}
uint qHash(const QJsonArray &array, uint seed)
@@ -1267,7 +1144,7 @@ QDebug operator<<(QDebug dbg, const QJsonArray &a)
return dbg;
}
QByteArray json;
- QJsonPrivate::Writer::arrayToJson(a.a, json, 0, true);
+ QJsonPrivate::Writer::arrayToJson(a.a.data(), json, 0, true);
dbg.nospace() << "QJsonArray("
<< json.constData() // print as utf-8 string without extra quotation marks
<< ")";
diff --git a/src/corelib/serialization/qjsonarray.h b/src/corelib/serialization/qjsonarray.h
index 983a6753b5..22aa996a3e 100644
--- a/src/corelib/serialization/qjsonarray.h
+++ b/src/corelib/serialization/qjsonarray.h
@@ -42,6 +42,7 @@
#include <QtCore/qjsonvalue.h>
#include <QtCore/qiterator.h>
+#include <QtCore/qshareddata.h>
#include <initializer_list>
QT_BEGIN_NAMESPACE
@@ -56,25 +57,14 @@ class Q_CORE_EXPORT QJsonArray
public:
QJsonArray();
- QJsonArray(std::initializer_list<QJsonValue> args)
- {
- initialize();
- for (std::initializer_list<QJsonValue>::const_iterator i = args.begin(); i != args.end(); ++i)
- append(*i);
- }
+ QJsonArray(std::initializer_list<QJsonValue> args);
~QJsonArray();
QJsonArray(const QJsonArray &other);
QJsonArray &operator =(const QJsonArray &other);
- QJsonArray(QJsonArray &&other) noexcept
- : d(other.d),
- a(other.a)
- {
- other.d = nullptr;
- other.a = nullptr;
- }
+ QJsonArray(QJsonArray &&other) noexcept;
QJsonArray &operator =(QJsonArray &&other) noexcept
{
@@ -113,7 +103,6 @@ public:
void swap(QJsonArray &other) noexcept
{
- qSwap(d, other.d);
qSwap(a, other.a);
}
@@ -245,20 +234,21 @@ public:
typedef int difference_type;
private:
- friend class QJsonPrivate::Data;
friend class QJsonValue;
friend class QJsonDocument;
+ friend class QCborArray;
friend Q_CORE_EXPORT QDebug operator<<(QDebug, const QJsonArray &);
- QJsonArray(QJsonPrivate::Data *data, QJsonPrivate::Array *array);
+ QJsonArray(QCborContainerPrivate *array);
void initialize();
void compact();
// ### Qt 6: remove me and merge with detach2
void detach(uint reserve = 0);
bool detach2(uint reserve = 0);
- QJsonPrivate::Data *d;
- QJsonPrivate::Array *a;
+ // ### Qt 6: remove
+ void *dead = nullptr;
+ QExplicitlySharedDataPointer<QCborContainerPrivate> a;
};
Q_DECLARE_SHARED_NOT_MOVABLE_UNTIL_QT6(QJsonArray)
diff --git a/src/corelib/serialization/qjsoncbor.cpp b/src/corelib/serialization/qjsoncbor.cpp
index d6a0c8c48a..7136a163ee 100644
--- a/src/corelib/serialization/qjsoncbor.cpp
+++ b/src/corelib/serialization/qjsoncbor.cpp
@@ -42,6 +42,10 @@
#include "qcborarray.h"
#include "qcbormap.h"
+
+#include "qjsonarray.h"
+#include "qjsonobject.h"
+#include "qjsondocument.h"
#include "qjson_p.h"
#include <private/qnumeric_p.h>
@@ -149,7 +153,12 @@ static Q_NEVER_INLINE QString makeString(const QCborContainerPrivate *d, qsizety
case QCborValue::Array:
case QCborValue::Map:
+#if defined(QT_JSON_READONLY) || defined(QT_BOOTSTRAPPED)
+ qFatal("Writing JSON is disabled.");
+ return QString();
+#else
return d->valueAt(idx).toDiagnosticNotation(QCborValue::Compact);
+#endif
case QCborValue::SimpleType:
break;
@@ -181,30 +190,11 @@ static Q_NEVER_INLINE QString makeString(const QCborContainerPrivate *d, qsizety
return simpleTypeString(e.type);
}
-static QJsonValue convertToJson(const QCborContainerPrivate *d, qsizetype idx);
-
-static QJsonArray convertToJsonArray(const QCborContainerPrivate *d)
-{
- QJsonArray a;
- if (d) {
- for (qsizetype idx = 0; idx < d->elements.size(); ++idx)
- a.append(convertToJson(d, idx));
- }
- return a;
-}
-
-static QJsonObject convertToJsonObject(const QCborContainerPrivate *d)
-{
- QJsonObject o;
- if (d) {
- for (qsizetype idx = 0; idx < d->elements.size(); idx += 2)
- o.insert(makeString(d, idx), convertToJson(d, idx + 1));
- }
- return o;
-}
+QJsonValue qt_convertToJson(QCborContainerPrivate *d, qsizetype idx);
-static QJsonValue convertExtendedTypeToJson(const QCborContainerPrivate *d)
+static QJsonValue convertExtendedTypeToJson(QCborContainerPrivate *d)
{
+#ifndef QT_BUILD_QMAKE
qint64 tag = d->elements.at(0).value;
switch (tag) {
@@ -225,12 +215,36 @@ static QJsonValue convertExtendedTypeToJson(const QCborContainerPrivate *d)
return s;
}
}
+#endif
// for all other tags, ignore it and return the converted tagged item
- return convertToJson(d, 1);
+ return qt_convertToJson(d, 1);
+}
+
+// We need to do this because sub-objects may need conversion.
+static QJsonArray convertToJsonArray(QCborContainerPrivate *d)
+{
+ QJsonArray a;
+ if (d) {
+ for (qsizetype idx = 0; idx < d->elements.size(); ++idx)
+ a.append(qt_convertToJson(d, idx));
+ }
+ return a;
}
-static QJsonValue convertToJson(const QCborContainerPrivate *d, qsizetype idx)
+// We need to do this because the keys need to be sorted and converted to strings
+// and sub-objects may need recursive conversion.
+static QJsonObject convertToJsonObject(QCborContainerPrivate *d)
+{
+ QJsonObject o;
+ if (d) {
+ for (qsizetype idx = 0; idx < d->elements.size(); idx += 2)
+ o.insert(makeString(d, idx), qt_convertToJson(d, idx + 1));
+ }
+ return o;
+}
+
+QJsonValue qt_convertToJson(QCborContainerPrivate *d, qsizetype idx)
{
// encoding the container itself
if (idx == -QCborValue::Array)
@@ -248,7 +262,7 @@ static QJsonValue convertToJson(const QCborContainerPrivate *d, qsizetype idx)
const auto &e = d->elements.at(idx);
switch (e.type) {
case QCborValue::Integer:
- return qint64(e.value);
+ return QJsonPrivate::Value::fromTrustedCbor(e.value);
case QCborValue::ByteArray:
case QCborValue::String:
@@ -264,14 +278,14 @@ static QJsonValue convertToJson(const QCborContainerPrivate *d, qsizetype idx)
case QCborValue::RegularExpression:
case QCborValue::Uuid:
// recurse
- return convertToJson(e.flags & Element::IsContainer ? e.container : nullptr, -e.type);
+ return qt_convertToJson(e.flags & Element::IsContainer ? e.container : nullptr, -e.type);
case QCborValue::Null:
return QJsonValue();
case QCborValue::Undefined:
case QCborValue::Invalid:
- return QJsonValue(QJsonValue::Undefined);
+ return QJsonValue::Undefined;
case QCborValue::False:
return false;
@@ -283,7 +297,7 @@ static QJsonValue convertToJson(const QCborContainerPrivate *d, qsizetype idx)
return fpToJson(e.fpvalue());
}
- return makeString(d, idx);
+ return QJsonPrivate::Value::fromTrustedCbor(makeString(d, idx));
}
/*!
@@ -348,22 +362,22 @@ static QJsonValue convertToJson(const QCborContainerPrivate *d, qsizetype idx)
QJsonValue QCborValue::toJsonValue() const
{
if (container)
- return convertToJson(container, n < 0 ? -type() : n);
+ return qt_convertToJson(container, n < 0 ? -type() : n);
// simple values
switch (type()) {
- case Integer:
- return n;
-
- case Null:
- return QJsonValue();
-
case False:
return false;
+ case Integer:
+ return QJsonPrivate::Value::fromTrustedCbor(n);
+
case True:
return true;
+ case Null:
+ return QJsonValue();
+
case Double:
return fpToJson(fp_helper());
@@ -372,12 +386,12 @@ QJsonValue QCborValue::toJsonValue() const
case Undefined:
case Invalid:
- return QJsonValue(QJsonValue::Undefined);
+ return QJsonValue::Undefined;
case ByteArray:
case String:
// empty strings
- return QString();
+ return QJsonValue::String;
case Array:
// empty array
@@ -392,16 +406,16 @@ QJsonValue QCborValue::toJsonValue() const
case Url:
case RegularExpression:
case Uuid:
- Q_UNREACHABLE();
+ // Reachable, but invalid in Json
return QJsonValue::Undefined;
}
- return simpleTypeString(type());
+ return QJsonPrivate::Value::fromTrustedCbor(simpleTypeString(type()));
}
QJsonValue QCborValueRef::toJsonValue() const
{
- return convertToJson(d, i);
+ return qt_convertToJson(d, i);
}
/*!
@@ -540,8 +554,10 @@ QVariant QCborValue::toVariant() const
case DateTime:
return toDateTime();
+#ifndef QT_BOOTSTRAPPED
case Url:
return toUrl();
+#endif
#if QT_CONFIG(regularexpression)
case RegularExpression:
@@ -597,12 +613,13 @@ QCborValue QCborValue::fromJsonValue(const QJsonValue &v)
{
switch (v.type()) {
case QJsonValue::Bool:
- return v.b;
+ return v.toBool();
case QJsonValue::Double: {
qint64 i;
- if (convertDoubleTo(v.dbl, &i))
+ const double dbl = v.toDouble();
+ if (convertDoubleTo(dbl, &i))
return i;
- return v.dbl;
+ return dbl;
}
case QJsonValue::String:
return v.toString();
@@ -710,8 +727,10 @@ QCborValue QCborValue::fromVariant(const QVariant &variant)
return variant.toByteArray();
case QVariant::DateTime:
return QCborValue(variant.toDateTime());
+#ifndef QT_BOOTSTRAPPED
case QVariant::Url:
return QCborValue(variant.toUrl());
+#endif
case QVariant::Uuid:
return QCborValue(variant.toUuid());
case QVariant::List:
@@ -824,15 +843,9 @@ QCborArray QCborArray::fromVariantList(const QVariantList &list)
*/
QCborArray QCborArray::fromJsonArray(const QJsonArray &array)
{
- QCborArray a;
- a.detach(array.size());
- for (const QJsonValue &v : array) {
- if (v.isString())
- a.d->append(v.toString());
- else
- a.d->append(QCborValue::fromJsonValue(v));
- }
- return a;
+ QCborArray result;
+ result.d = array.a;
+ return result;
}
/*!
@@ -944,20 +957,9 @@ QCborMap QCborMap::fromVariantHash(const QVariantHash &hash)
*/
QCborMap QCborMap::fromJsonObject(const QJsonObject &obj)
{
- QCborMap m;
- m.detach(obj.size());
- QCborContainerPrivate *d = m.d.data();
-
- auto it = obj.begin();
- auto end = obj.end();
- for ( ; it != end; ++it) {
- d->append(it.key());
- if (it.value().isString())
- d->append(it.value().toString());
- else
- d->append(QCborValue::fromJsonValue(it.value()));
- }
- return m;
+ QCborMap result;
+ result.d = obj.o;
+ return result;
}
QT_END_NAMESPACE
diff --git a/src/corelib/serialization/qjsondocument.cpp b/src/corelib/serialization/qjsondocument.cpp
index 8c3818caff..b9b1902f34 100644
--- a/src/corelib/serialization/qjsondocument.cpp
+++ b/src/corelib/serialization/qjsondocument.cpp
@@ -44,11 +44,22 @@
#include <qstringlist.h>
#include <qvariant.h>
#include <qdebug.h>
+#include <qcbormap.h>
+#include <qcborarray.h>
+#include "qcborvalue_p.h"
#include "qjsonwriter_p.h"
#include "qjsonparser_p.h"
#include "qjson_p.h"
#include "qdatastream.h"
+#if QT_CONFIG(binaryjson)
+#include "qbinaryjson_p.h"
+#include "qbinaryjsonobject_p.h"
+#include "qbinaryjsonarray_p.h"
+#endif
+
+#include <private/qmemory_p.h>
+
QT_BEGIN_NAMESPACE
/*! \class QJsonDocument
@@ -80,6 +91,33 @@ QT_BEGIN_NAMESPACE
\sa {JSON Support in Qt}, {JSON Save Game Example}
*/
+
+class QJsonDocumentPrivate
+{
+ Q_DISABLE_COPY_MOVE(QJsonDocumentPrivate);
+public:
+ QJsonDocumentPrivate() = default;
+ QJsonDocumentPrivate(QCborValue data) : value(std::move(data)) {}
+ ~QJsonDocumentPrivate()
+ {
+ if (rawData)
+ free(rawData);
+ }
+
+ QCborValue value;
+ char *rawData = nullptr;
+ uint rawDataSize = 0;
+
+ void clearRawData()
+ {
+ if (rawData) {
+ free(rawData);
+ rawData = nullptr;
+ rawDataSize = 0;
+ }
+ }
+};
+
/*!
* Constructs an empty and invalid document.
*/
@@ -109,11 +147,10 @@ QJsonDocument::QJsonDocument(const QJsonArray &array)
/*!
\internal
*/
-QJsonDocument::QJsonDocument(QJsonPrivate::Data *data)
- : d(data)
+QJsonDocument::QJsonDocument(const QCborValue &data)
+ : d(qt_make_unique<QJsonDocumentPrivate>(data))
{
Q_ASSERT(d);
- d->ref.ref();
}
/*!
@@ -121,20 +158,30 @@ QJsonDocument::QJsonDocument(QJsonPrivate::Data *data)
Binary data set with fromRawData is not freed.
*/
-QJsonDocument::~QJsonDocument()
-{
- if (d && !d->ref.deref())
- delete d;
-}
+QJsonDocument::~QJsonDocument() = default;
/*!
* Creates a copy of the \a other document.
*/
QJsonDocument::QJsonDocument(const QJsonDocument &other)
{
- d = other.d;
- if (d)
- d->ref.ref();
+ if (other.d) {
+ if (!d)
+ d = qt_make_unique<QJsonDocumentPrivate>();
+ d->value = other.d->value;
+ } else {
+ d.reset();
+ }
+}
+
+QJsonDocument::QJsonDocument(QJsonDocument &&other) noexcept
+ : d(std::move(other.d))
+{
+}
+
+void QJsonDocument::swap(QJsonDocument &other) noexcept
+{
+ qSwap(d, other.d);
}
/*!
@@ -143,14 +190,17 @@ QJsonDocument::QJsonDocument(const QJsonDocument &other)
*/
QJsonDocument &QJsonDocument::operator =(const QJsonDocument &other)
{
- if (d != other.d) {
- if (d && !d->ref.deref())
- delete d;
- d = other.d;
- if (d)
- d->ref.ref();
+ if (this != &other) {
+ if (other.d) {
+ if (!d)
+ d = qt_make_unique<QJsonDocumentPrivate>();
+ else
+ d->clearRawData();
+ d->value = other.d->value;
+ } else {
+ d.reset();
+ }
}
-
return *this;
}
@@ -187,12 +237,13 @@ QJsonDocument &QJsonDocument::operator =(const QJsonDocument &other)
the application.
*/
+#if QT_CONFIG(binaryjson)
/*!
Creates a QJsonDocument that uses the first \a size bytes from
\a data. It assumes \a data contains a binary encoded JSON document.
- The created document does not take ownership of \a data and the caller
- has to guarantee that \a data will not be deleted or modified as long as
- any QJsonDocument, QJsonObject or QJsonArray still references the data.
+ The created document does not take ownership of \a data. The data is
+ copied into a different data structure, and the original data can be
+ deleted or modified afterwards.
\a data has to be aligned to a 4 byte boundary.
@@ -202,7 +253,18 @@ QJsonDocument &QJsonDocument::operator =(const QJsonDocument &other)
Returns a QJsonDocument representing the data.
- \sa rawData(), fromBinaryData(), isNull(), DataValidation
+ \deprecated in Qt 5.15. The binary JSON encoding is only retained for backwards
+ compatibility. It is undocumented and restrictive in the maximum size of JSON
+ documents that can be encoded. Qt JSON types can be converted to Qt CBOR types,
+ which can in turn be serialized into the CBOR binary format and vice versa. The
+ CBOR format is a well-defined and less restrictive binary representation for a
+ superset of JSON.
+
+ \note Before Qt 5.15, the caller had to guarantee that \a data would not be
+ deleted or modified as long as any QJsonDocument, QJsonObject or QJsonArray
+ still referenced the data. From Qt 5.15 on, this is not necessary anymore.
+
+ \sa rawData(), fromBinaryData(), isNull(), DataValidation, QCborValue
*/
QJsonDocument QJsonDocument::fromRawData(const char *data, int size, DataValidation validation)
{
@@ -211,18 +273,15 @@ QJsonDocument QJsonDocument::fromRawData(const char *data, int size, DataValidat
return QJsonDocument();
}
- if (size < (int)(sizeof(QJsonPrivate::Header) + sizeof(QJsonPrivate::Base)))
+ if (size < 0 || uint(size) < sizeof(QBinaryJsonPrivate::Header) + sizeof(QBinaryJsonPrivate::Base))
return QJsonDocument();
- QJsonPrivate::Data *d = new QJsonPrivate::Data((char *)data, size);
- d->ownsData = false;
+ std::unique_ptr<QBinaryJsonPrivate::ConstData> binaryData
+ = qt_make_unique<QBinaryJsonPrivate::ConstData>(data, size);
- if (validation != BypassValidation && !d->valid()) {
- delete d;
- return QJsonDocument();
- }
-
- return QJsonDocument(d);
+ return (validation == BypassValidation || binaryData->isValid())
+ ? binaryData->toJsonDocument()
+ : QJsonDocument();
}
/*!
@@ -230,7 +289,16 @@ QJsonDocument QJsonDocument::fromRawData(const char *data, int size, DataValidat
\a size will contain the size of the returned data.
This method is useful to e.g. stream the JSON document
- in it's binary form to a file.
+ in its binary form to a file.
+
+ \deprecated in Qt 5.15. The binary JSON encoding is only retained for backwards
+ compatibility. It is undocumented and restrictive in the maximum size of JSON
+ documents that can be encoded. Qt JSON types can be converted to Qt CBOR types,
+ which can in turn be serialized into the CBOR binary format and vice versa. The
+ CBOR format is a well-defined and less restrictive binary representation for a
+ superset of JSON.
+
+ \sa QCborValue
*/
const char *QJsonDocument::rawData(int *size) const
{
@@ -238,7 +306,21 @@ const char *QJsonDocument::rawData(int *size) const
*size = 0;
return nullptr;
}
- *size = d->alloc;
+
+ if (!d->rawData) {
+ if (isObject()) {
+ QBinaryJsonObject o = QBinaryJsonObject::fromJsonObject(object());
+ d->rawData = o.takeRawData(&(d->rawDataSize));
+ } else {
+ QBinaryJsonArray a = QBinaryJsonArray::fromJsonArray(array());
+ d->rawData = a.takeRawData(&(d->rawDataSize));
+ }
+ }
+
+ // It would be quite miraculous if not, as we should have hit the 128MB limit then.
+ Q_ASSERT(d->rawDataSize <= uint(std::numeric_limits<int>::max()));
+
+ *size = d->rawDataSize;
return d->rawData;
}
@@ -249,38 +331,64 @@ const char *QJsonDocument::rawData(int *size) const
By default the data is validated. If the \a data is not valid, the method returns
a null document.
- \sa toBinaryData(), fromRawData(), isNull(), DataValidation
+ \deprecated in Qt 5.15. The binary JSON encoding is only retained for backwards
+ compatibility. It is undocumented and restrictive in the maximum size of JSON
+ documents that can be encoded. Qt JSON types can be converted to Qt CBOR types,
+ which can in turn be serialized into the CBOR binary format and vice versa. The
+ CBOR format is a well-defined and less restrictive binary representation for a
+ superset of JSON.
+
+ \sa toBinaryData(), fromRawData(), isNull(), DataValidation, QCborValue
*/
QJsonDocument QJsonDocument::fromBinaryData(const QByteArray &data, DataValidation validation)
{
- if (data.size() < (int)(sizeof(QJsonPrivate::Header) + sizeof(QJsonPrivate::Base)))
+ if (uint(data.size()) < sizeof(QBinaryJsonPrivate::Header) + sizeof(QBinaryJsonPrivate::Base))
return QJsonDocument();
- QJsonPrivate::Header h;
- memcpy(&h, data.constData(), sizeof(QJsonPrivate::Header));
- QJsonPrivate::Base root;
- memcpy(&root, data.constData() + sizeof(QJsonPrivate::Header), sizeof(QJsonPrivate::Base));
+ QBinaryJsonPrivate::Header h;
+ memcpy(&h, data.constData(), sizeof(QBinaryJsonPrivate::Header));
+ QBinaryJsonPrivate::Base root;
+ memcpy(&root, data.constData() + sizeof(QBinaryJsonPrivate::Header),
+ sizeof(QBinaryJsonPrivate::Base));
- // do basic checks here, so we don't try to allocate more memory than we can.
- if (h.tag != QJsonDocument::BinaryFormatTag || h.version != 1u ||
- sizeof(QJsonPrivate::Header) + root.size > (uint)data.size())
+ const uint size = sizeof(QBinaryJsonPrivate::Header) + root.size;
+ if (h.tag != QJsonDocument::BinaryFormatTag || h.version != 1U || size > uint(data.size()))
return QJsonDocument();
- const uint size = sizeof(QJsonPrivate::Header) + root.size;
- char *raw = (char *)malloc(size);
- if (!raw)
- return QJsonDocument();
+ std::unique_ptr<QBinaryJsonPrivate::ConstData> d
+ = qt_make_unique<QBinaryJsonPrivate::ConstData>(data.constData(), size);
- memcpy(raw, data.constData(), size);
- QJsonPrivate::Data *d = new QJsonPrivate::Data(raw, size);
+ return (validation == BypassValidation || d->isValid())
+ ? d->toJsonDocument()
+ : QJsonDocument();
+}
- if (validation != BypassValidation && !d->valid()) {
- delete d;
- return QJsonDocument();
- }
+/*!
+ Returns a binary representation of the document.
+
+ The binary representation is also the native format used internally in Qt,
+ and is very efficient and fast to convert to and from.
+
+ The binary format can be stored on disk and interchanged with other applications
+ or computers. fromBinaryData() can be used to convert it back into a
+ JSON document.
+
+ \deprecated in Qt 5.15. The binary JSON encoding is only retained for backwards
+ compatibility. It is undocumented and restrictive in the maximum size of JSON
+ documents that can be encoded. Qt JSON types can be converted to Qt CBOR types,
+ which can in turn be serialized into the CBOR binary format and vice versa. The
+ CBOR format is a well-defined and less restrictive binary representation for a
+ superset of JSON.
- return QJsonDocument(d);
+ \sa fromBinaryData(), QCborValue
+ */
+QByteArray QJsonDocument::toBinaryData() const
+{
+ int size = 0;
+ const char *raw = rawData(&size);
+ return QByteArray(raw, size);
}
+#endif // QT_CONFIG(binaryjson)
/*!
Creates a QJsonDocument from the QVariant \a variant.
@@ -293,6 +401,7 @@ QJsonDocument QJsonDocument::fromBinaryData(const QByteArray &data, DataValidati
QJsonDocument QJsonDocument::fromVariant(const QVariant &variant)
{
QJsonDocument doc;
+
switch (variant.type()) {
case QVariant::Map:
doc.setObject(QJsonObject::fromVariantMap(variant.toMap()));
@@ -304,7 +413,8 @@ QJsonDocument QJsonDocument::fromVariant(const QVariant &variant)
doc.setArray(QJsonArray::fromVariantList(variant.toList()));
break;
case QVariant::StringList:
- doc.setArray(QJsonArray::fromStringList(variant.toStringList()));
+ doc.d = qt_make_unique<QJsonDocumentPrivate>();
+ doc.d->value = QCborArray::fromStringList(variant.toStringList());
break;
default:
break;
@@ -325,10 +435,10 @@ QVariant QJsonDocument::toVariant() const
if (!d)
return QVariant();
- if (d->header->root()->isArray())
- return QJsonArray(d, static_cast<QJsonPrivate::Array *>(d->header->root())).toVariantList();
- else
- return QJsonObject(d, static_cast<QJsonPrivate::Object *>(d->header->root())).toVariantMap();
+ QCborContainerPrivate *container = QJsonPrivate::Value::container(d->value);
+ if (d->value.isArray())
+ return QJsonArray(container).toVariantList();
+ return QJsonObject(container).toVariantMap();
}
/*!
@@ -370,10 +480,11 @@ QByteArray QJsonDocument::toJson(JsonFormat format) const
if (!d)
return json;
- if (d->header->root()->isArray())
- QJsonPrivate::Writer::arrayToJson(static_cast<QJsonPrivate::Array *>(d->header->root()), json, 0, (format == Compact));
+ const QCborContainerPrivate *container = QJsonPrivate::Value::container(d->value);
+ if (d->value.isArray())
+ QJsonPrivate::Writer::arrayToJson(container, json, 0, (format == Compact));
else
- QJsonPrivate::Writer::objectToJson(static_cast<QJsonPrivate::Object *>(d->header->root()), json, 0, (format == Compact));
+ QJsonPrivate::Writer::objectToJson(container, json, 0, (format == Compact));
return json;
}
@@ -392,7 +503,13 @@ QByteArray QJsonDocument::toJson(JsonFormat format) const
QJsonDocument QJsonDocument::fromJson(const QByteArray &json, QJsonParseError *error)
{
QJsonPrivate::Parser parser(json.constData(), json.length());
- return parser.parse(error);
+ QJsonDocument result;
+ const QCborValue val = parser.parse(error);
+ if (val.isArray() || val.isMap()) {
+ result.d = qt_make_unique<QJsonDocumentPrivate>();
+ result.d->value = val;
+ }
+ return result;
}
/*!
@@ -407,26 +524,6 @@ bool QJsonDocument::isEmpty() const
}
/*!
- Returns a binary representation of the document.
-
- The binary representation is also the native format used internally in Qt,
- and is very efficient and fast to convert to and from.
-
- The binary format can be stored on disk and interchanged with other applications
- or computers. fromBinaryData() can be used to convert it back into a
- JSON document.
-
- \sa fromBinaryData()
- */
-QByteArray QJsonDocument::toBinaryData() const
-{
- if (!d || !d->rawData)
- return QByteArray();
-
- return QByteArray(d->rawData, d->header->root()->size + sizeof(QJsonPrivate::Header));
-}
-
-/*!
Returns \c true if the document contains an array.
\sa array(), isObject()
@@ -436,8 +533,7 @@ bool QJsonDocument::isArray() const
if (!d)
return false;
- QJsonPrivate::Header *h = (QJsonPrivate::Header *)d->rawData;
- return h->root()->isArray();
+ return d->value.isArray();
}
/*!
@@ -450,8 +546,7 @@ bool QJsonDocument::isObject() const
if (!d)
return false;
- QJsonPrivate::Header *h = (QJsonPrivate::Header *)d->rawData;
- return h->root()->isObject();
+ return d->value.isMap();
}
/*!
@@ -464,10 +559,9 @@ bool QJsonDocument::isObject() const
*/
QJsonObject QJsonDocument::object() const
{
- if (d) {
- QJsonPrivate::Base *b = d->header->root();
- if (b->isObject())
- return QJsonObject(d, static_cast<QJsonPrivate::Object *>(b));
+ if (isObject()) {
+ if (auto container = QJsonPrivate::Value::container(d->value))
+ return QJsonObject(container);
}
return QJsonObject();
}
@@ -482,10 +576,9 @@ QJsonObject QJsonDocument::object() const
*/
QJsonArray QJsonDocument::array() const
{
- if (d) {
- QJsonPrivate::Base *b = d->header->root();
- if (b->isArray())
- return QJsonArray(d, static_cast<QJsonPrivate::Array *>(b));
+ if (isArray()) {
+ if (auto container = QJsonPrivate::Value::container(d->value))
+ return QJsonArray(container);
}
return QJsonArray();
}
@@ -497,24 +590,12 @@ QJsonArray QJsonDocument::array() const
*/
void QJsonDocument::setObject(const QJsonObject &object)
{
- if (d && !d->ref.deref())
- delete d;
-
- d = object.d;
+ if (!d)
+ d = qt_make_unique<QJsonDocumentPrivate>();
+ else
+ d->clearRawData();
- if (!d) {
- d = new QJsonPrivate::Data(0, QJsonValue::Object);
- } else if (d->compactionCounter || object.o != d->header->root()) {
- QJsonObject o(object);
- if (d->compactionCounter)
- o.compact();
- else
- o.detach2();
- d = o.d;
- d->ref.ref();
- return;
- }
- d->ref.ref();
+ d->value = QCborValue::fromJsonValue(object);
}
/*!
@@ -524,24 +605,12 @@ void QJsonDocument::setObject(const QJsonObject &object)
*/
void QJsonDocument::setArray(const QJsonArray &array)
{
- if (d && !d->ref.deref())
- delete d;
-
- d = array.d;
+ if (!d)
+ d = qt_make_unique<QJsonDocumentPrivate>();
+ else
+ d->clearRawData();
- if (!d) {
- d = new QJsonPrivate::Data(0, QJsonValue::Array);
- } else if (d->compactionCounter || array.a != d->header->root()) {
- QJsonArray a(array);
- if (d->compactionCounter)
- a.compact();
- else
- a.detach2();
- d = a.d;
- d->ref.ref();
- return;
- }
- d->ref.ref();
+ d->value = QCborValue::fromJsonValue(array);
}
#if QT_STRINGVIEW_LEVEL < 2
@@ -572,7 +641,7 @@ const QJsonValue QJsonDocument::operator[](QStringView key) const
if (!isObject())
return QJsonValue(QJsonValue::Undefined);
- return object().value(key);
+ return QJsonPrivate::Value::fromTrustedCbor(d->value.toMap().value(key));
}
/*!
@@ -584,7 +653,7 @@ const QJsonValue QJsonDocument::operator[](QLatin1String key) const
if (!isObject())
return QJsonValue(QJsonValue::Undefined);
- return object().value(key);
+ return QJsonPrivate::Value::fromTrustedCbor(d->value.toMap().value(key));
}
/*!
@@ -604,7 +673,7 @@ const QJsonValue QJsonDocument::operator[](int i) const
if (!isArray())
return QJsonValue(QJsonValue::Undefined);
- return array().at(i);
+ return QJsonPrivate::Value::fromTrustedCbor(d->value.toArray().at(i));
}
/*!
@@ -612,21 +681,7 @@ const QJsonValue QJsonDocument::operator[](int i) const
*/
bool QJsonDocument::operator==(const QJsonDocument &other) const
{
- if (d == other.d)
- return true;
-
- if (!d || !other.d)
- return false;
-
- if (d->header->root()->isArray() != other.d->header->root()->isArray())
- return false;
-
- if (d->header->root()->isObject())
- return QJsonObject(d, static_cast<QJsonPrivate::Object *>(d->header->root()))
- == QJsonObject(other.d, static_cast<QJsonPrivate::Object *>(other.d->header->root()));
- else
- return QJsonArray(d, static_cast<QJsonPrivate::Array *>(d->header->root()))
- == QJsonArray(other.d, static_cast<QJsonPrivate::Array *>(other.d->header->root()));
+ return (!d) ? (!other.d) : (d->value == other.d->value);
}
/*!
@@ -658,10 +713,11 @@ QDebug operator<<(QDebug dbg, const QJsonDocument &o)
return dbg;
}
QByteArray json;
- if (o.d->header->root()->isArray())
- QJsonPrivate::Writer::arrayToJson(static_cast<QJsonPrivate::Array *>(o.d->header->root()), json, 0, true);
+ const QCborContainerPrivate *container = QJsonPrivate::Value::container(o.d->value);
+ if (o.d->value.isArray())
+ QJsonPrivate::Writer::arrayToJson(container, json, 0, true);
else
- QJsonPrivate::Writer::objectToJson(static_cast<QJsonPrivate::Object *>(o.d->header->root()), json, 0, true);
+ QJsonPrivate::Writer::objectToJson(container, json, 0, true);
dbg.nospace() << "QJsonDocument("
<< json.constData() // print as utf-8 string without extra quotation marks
<< ')';
diff --git a/src/corelib/serialization/qjsondocument.h b/src/corelib/serialization/qjsondocument.h
index a8e7485f5d..325e47b531 100644
--- a/src/corelib/serialization/qjsondocument.h
+++ b/src/corelib/serialization/qjsondocument.h
@@ -41,14 +41,16 @@
#define QJSONDOCUMENT_H
#include <QtCore/qjsonvalue.h>
+#include <QtCore/qscopedpointer.h>
+
+#include <memory>
QT_BEGIN_NAMESPACE
class QDebug;
+class QCborValue;
-namespace QJsonPrivate {
- class Parser;
-}
+namespace QJsonPrivate { class Parser; }
struct Q_CORE_EXPORT QJsonParseError
{
@@ -76,6 +78,7 @@ struct Q_CORE_EXPORT QJsonParseError
ParseError error;
};
+class QJsonDocumentPrivate;
class Q_CORE_EXPORT QJsonDocument
{
public:
@@ -93,11 +96,7 @@ public:
QJsonDocument(const QJsonDocument &other);
QJsonDocument &operator =(const QJsonDocument &other);
- QJsonDocument(QJsonDocument &&other) noexcept
- : d(other.d)
- {
- other.d = nullptr;
- }
+ QJsonDocument(QJsonDocument &&other) noexcept;
QJsonDocument &operator =(QJsonDocument &&other) noexcept
{
@@ -105,21 +104,20 @@ public:
return *this;
}
- void swap(QJsonDocument &other) noexcept
- {
- qSwap(d, other.d);
- }
+ void swap(QJsonDocument &other) noexcept;
enum DataValidation {
Validate,
BypassValidation
};
+#if QT_CONFIG(binaryjson)
static QJsonDocument fromRawData(const char *data, int size, DataValidation validation = Validate);
const char *rawData(int *size) const;
static QJsonDocument fromBinaryData(const QByteArray &data, DataValidation validation = Validate);
QByteArray toBinaryData() const;
+#endif // QT_CONFIG(binaryjson)
static QJsonDocument fromVariant(const QVariant &variant);
QVariant toVariant() const;
@@ -160,13 +158,12 @@ public:
private:
friend class QJsonValue;
- friend class QJsonPrivate::Data;
friend class QJsonPrivate::Parser;
friend Q_CORE_EXPORT QDebug operator<<(QDebug, const QJsonDocument &);
- QJsonDocument(QJsonPrivate::Data *data);
+ QJsonDocument(const QCborValue &data);
- QJsonPrivate::Data *d;
+ std::unique_ptr<QJsonDocumentPrivate> d;
};
Q_DECLARE_SHARED_NOT_MOVABLE_UNTIL_QT6(QJsonDocument)
diff --git a/src/corelib/serialization/qjsonobject.cpp b/src/corelib/serialization/qjsonobject.cpp
index 329bc4d2c9..ae37481f31 100644
--- a/src/corelib/serialization/qjsonobject.cpp
+++ b/src/corelib/serialization/qjsonobject.cpp
@@ -40,11 +40,17 @@
#include <qjsonobject.h>
#include <qjsonvalue.h>
#include <qjsonarray.h>
+#include <qjsondocument.h>
#include <qstringlist.h>
#include <qdebug.h>
#include <qvariant.h>
-#include "qjson_p.h"
+#include <qcbormap.h>
+
+#include <private/qcborvalue_p.h>
#include "qjsonwriter_p.h"
+#include "qjson_p.h"
+
+#include <algorithm>
QT_BEGIN_NAMESPACE
@@ -109,10 +115,7 @@ QT_BEGIN_NAMESPACE
\sa isEmpty()
*/
-QJsonObject::QJsonObject()
- : d(nullptr), o(nullptr)
-{
-}
+QJsonObject::QJsonObject() = default;
/*!
\fn QJsonObject::QJsonObject(std::initializer_list<QPair<QString, QJsonValue> > args)
@@ -131,12 +134,10 @@ QJsonObject::QJsonObject()
/*!
\internal
*/
-QJsonObject::QJsonObject(QJsonPrivate::Data *data, QJsonPrivate::Object *object)
- : d(data), o(object)
+QJsonObject::QJsonObject(QCborContainerPrivate *object)
+ : o(object)
{
- Q_ASSERT(d);
Q_ASSERT(o);
- d->ref.ref();
}
/*!
@@ -149,17 +150,19 @@ QJsonObject::QJsonObject(QJsonPrivate::Data *data, QJsonPrivate::Object *object)
void QJsonObject::initialize()
{
- d = nullptr;
o = nullptr;
}
/*!
Destroys the object.
*/
-QJsonObject::~QJsonObject()
+QJsonObject::~QJsonObject() = default;
+
+QJsonObject::QJsonObject(std::initializer_list<QPair<QString, QJsonValue> > args)
{
- if (d && !d->ref.deref())
- delete d;
+ initialize();
+ for (const auto &arg : args)
+ insert(arg.first, arg.second);
}
/*!
@@ -170,10 +173,13 @@ QJsonObject::~QJsonObject()
*/
QJsonObject::QJsonObject(const QJsonObject &other)
{
- d = other.d;
o = other.o;
- if (d)
- d->ref.ref();
+}
+
+QJsonObject::QJsonObject(QJsonObject &&other) noexcept
+ : o(other.o)
+{
+ other.o = nullptr;
}
/*!
@@ -181,15 +187,7 @@ QJsonObject::QJsonObject(const QJsonObject &other)
*/
QJsonObject &QJsonObject::operator =(const QJsonObject &other)
{
- if (d != other.d) {
- if (d && !d->ref.deref())
- delete d;
- d = other.d;
- if (d)
- d->ref.ref();
- }
o = other.o;
-
return *this;
}
@@ -225,55 +223,7 @@ QJsonObject &QJsonObject::operator =(const QJsonObject &other)
*/
QJsonObject QJsonObject::fromVariantMap(const QVariantMap &map)
{
- QJsonObject object;
- if (map.isEmpty())
- return object;
-
- object.detach2(1024);
-
- QVector<QJsonPrivate::offset> offsets;
- QJsonPrivate::offset currentOffset;
- currentOffset = sizeof(QJsonPrivate::Base);
-
- // the map is already sorted, so we can simply append one entry after the other and
- // write the offset table at the end
- for (QVariantMap::const_iterator it = map.constBegin(); it != map.constEnd(); ++it) {
- QString key = it.key();
- QJsonValue val = QJsonValue::fromVariant(it.value());
-
- bool latinOrIntValue;
- int valueSize = QJsonPrivate::Value::requiredStorage(val, &latinOrIntValue);
-
- bool latinKey = QJsonPrivate::useCompressed(key);
- int valueOffset = sizeof(QJsonPrivate::Entry) + QJsonPrivate::qStringSize(key, latinKey);
- int requiredSize = valueOffset + valueSize;
-
- if (!object.detach2(requiredSize + sizeof(QJsonPrivate::offset))) // offset for the new index entry
- return QJsonObject();
-
- QJsonPrivate::Entry *e = reinterpret_cast<QJsonPrivate::Entry *>(reinterpret_cast<char *>(object.o) + currentOffset);
- e->value.type = val.t;
- e->value.latinKey = latinKey;
- e->value.latinOrIntValue = latinOrIntValue;
- e->value.value = QJsonPrivate::Value::valueToStore(val, (char *)e - (char *)object.o + valueOffset);
- QJsonPrivate::copyString((char *)(e + 1), key, latinKey);
- if (valueSize)
- QJsonPrivate::Value::copyData(val, (char *)e + valueOffset, latinOrIntValue);
-
- offsets << currentOffset;
- currentOffset += requiredSize;
- object.o->size = currentOffset;
- }
-
- // write table
- object.o->tableOffset = currentOffset;
- if (!object.detach2(sizeof(QJsonPrivate::offset)*offsets.size()))
- return QJsonObject();
- memcpy(object.o->table(), offsets.constData(), offsets.size()*sizeof(uint));
- object.o->length = offsets.size();
- object.o->size = currentOffset + sizeof(QJsonPrivate::offset)*offsets.size();
-
- return object;
+ return QCborMap::fromVariantMap(map).toJsonObject();
}
/*!
@@ -285,14 +235,7 @@ QJsonObject QJsonObject::fromVariantMap(const QVariantMap &map)
*/
QVariantMap QJsonObject::toVariantMap() const
{
- QVariantMap map;
- if (o) {
- for (uint i = 0; i < o->length; ++i) {
- QJsonPrivate::Entry *e = o->entryAt(i);
- map.insert(e->key(), QJsonValue(d, o, e->value).toVariant());
- }
- }
- return map;
+ return QCborMap::fromJsonObject(*this).toVariantMap();
}
/*!
@@ -324,15 +267,7 @@ QJsonObject QJsonObject::fromVariantHash(const QVariantHash &hash)
*/
QVariantHash QJsonObject::toVariantHash() const
{
- QVariantHash hash;
- if (o) {
- hash.reserve(o->length);
- for (uint i = 0; i < o->length; ++i) {
- QJsonPrivate::Entry *e = o->entryAt(i);
- hash.insert(e->key(), QJsonValue(d, o, e->value).toVariant());
- }
- }
- return hash;
+ return QCborMap::fromJsonObject(*this).toVariantHash();
}
/*!
@@ -344,11 +279,9 @@ QStringList QJsonObject::keys() const
{
QStringList keys;
if (o) {
- keys.reserve(o->length);
- for (uint i = 0; i < o->length; ++i) {
- QJsonPrivate::Entry *e = o->entryAt(i);
- keys.append(e->key());
- }
+ keys.reserve(o->elements.length() / 2);
+ for (int i = 0, end = o->elements.length(); i < end; i += 2)
+ keys.append(o->stringAt(i));
}
return keys;
}
@@ -358,10 +291,7 @@ QStringList QJsonObject::keys() const
*/
int QJsonObject::size() const
{
- if (!d)
- return 0;
-
- return o->length;
+ return o ? o->elements.length() / 2 : 0;
}
/*!
@@ -371,10 +301,24 @@ int QJsonObject::size() const
*/
bool QJsonObject::isEmpty() const
{
- if (!d)
- return true;
+ return !o || o->elements.isEmpty();
+}
+
+template<typename String>
+static int indexOf(const QExplicitlySharedDataPointer<QCborContainerPrivate> &o,
+ String key, bool *keyExists)
+{
+ const auto begin = QJsonPrivate::ConstKeyIterator(o->elements.constBegin());
+ const auto end = QJsonPrivate::ConstKeyIterator(o->elements.constEnd());
+
+ const auto it = std::lower_bound(
+ begin, end, key,
+ [&](const QJsonPrivate::ConstKeyIterator::value_type &e, const String &key) {
+ return o->stringCompareElement(e.key(), key) < 0;
+ });
- return !o->length;
+ *keyExists = (it != end) && o->stringEqualsElement((*it).key(), key);
+ return (it - begin) * 2;
}
#if QT_STRINGVIEW_LEVEL < 2
@@ -415,14 +359,14 @@ QJsonValue QJsonObject::value(QLatin1String key) const
template <typename T>
QJsonValue QJsonObject::valueImpl(T key) const
{
- if (!d)
+ if (!o)
return QJsonValue(QJsonValue::Undefined);
bool keyExists;
- int i = o->indexOf(key, &keyExists);
+ int i = indexOf(o, key, &keyExists);
if (!keyExists)
return QJsonValue(QJsonValue::Undefined);
- return QJsonValue(d, o, o->entryAt(i)->value);
+ return QJsonPrivate::Value::fromTrustedCbor(o->valueAt(i + 1));
}
#if QT_STRINGVIEW_LEVEL < 2
@@ -497,13 +441,16 @@ QJsonValueRef QJsonObject::operator [](QLatin1String key)
template <typename T>
QJsonValueRef QJsonObject::atImpl(T key)
{
+ if (!o)
+ o = new QCborContainerPrivate;
+
bool keyExists = false;
- int index = o ? o->indexOf(key, &keyExists) : 0;
+ int index = indexOf(o, key, &keyExists);
if (!keyExists) {
- iterator i = insertAt(index, key, QJsonValue(), false);
- index = i.i;
+ o->insertAt(index, key);
+ o->insertAt(index + 1, QCborValue::fromJsonValue(QJsonValue()));
}
- return QJsonValueRef(this, index);
+ return QJsonValueRef(this, index / 2);
}
#if QT_STRINGVIEW_LEVEL < 2
@@ -550,12 +497,12 @@ QJsonObject::iterator QJsonObject::insert(QLatin1String key, const QJsonValue &v
template <typename T>
QJsonObject::iterator QJsonObject::insertImpl(T key, const QJsonValue &value)
{
- if (value.t == QJsonValue::Undefined) {
+ if (value.type() == QJsonValue::Undefined) {
remove(key);
return end();
}
bool keyExists = false;
- int pos = o ? o->indexOf(key, &keyExists) : 0;
+ int pos = o ? indexOf(o, key, &keyExists) : 0;
return insertAt(pos, key, value, keyExists);
}
@@ -565,40 +512,18 @@ QJsonObject::iterator QJsonObject::insertImpl(T key, const QJsonValue &value)
template <typename T>
QJsonObject::iterator QJsonObject::insertAt(int pos, T key, const QJsonValue &value, bool keyExists)
{
- QJsonValue val = value;
-
- bool latinOrIntValue;
- int valueSize = QJsonPrivate::Value::requiredStorage(val, &latinOrIntValue);
-
- bool latinKey = QJsonPrivate::useCompressed(key);
- int valueOffset = sizeof(QJsonPrivate::Entry) + QJsonPrivate::qStringSize(key, latinKey);
- int requiredSize = valueOffset + valueSize;
-
- if (!detach2(requiredSize + sizeof(QJsonPrivate::offset))) // offset for the new index entry
- return iterator();
-
- if (!o->length)
- o->tableOffset = sizeof(QJsonPrivate::Object);
-
- if (keyExists)
- ++d->compactionCounter;
-
- uint off = o->reserveSpace(requiredSize, pos, 1, keyExists);
- if (!off)
- return end();
-
- QJsonPrivate::Entry *e = o->entryAt(pos);
- e->value.type = val.t;
- e->value.latinKey = latinKey;
- e->value.latinOrIntValue = latinOrIntValue;
- e->value.value = QJsonPrivate::Value::valueToStore(val, (char *)e - (char *)o + valueOffset);
- QJsonPrivate::copyString((char *)(e + 1), key, latinKey);
- if (valueSize)
- QJsonPrivate::Value::copyData(val, (char *)e + valueOffset, latinOrIntValue);
-
- compactIfNeeded();
+ if (o)
+ detach2(o->elements.length() / 2 + (keyExists ? 0 : 1));
+ else
+ o = new QCborContainerPrivate;
- return iterator(this, pos);
+ if (keyExists) {
+ o->replaceAt(pos + 1, QCborValue::fromJsonValue(value));
+ } else {
+ o->insertAt(pos, key);
+ o->insertAt(pos + 1, QCborValue::fromJsonValue(value));
+ }
+ return {this, pos / 2};
}
#if QT_STRINGVIEW_LEVEL < 2
@@ -637,11 +562,11 @@ void QJsonObject::remove(QLatin1String key)
template <typename T>
void QJsonObject::removeImpl(T key)
{
- if (!d)
+ if (!o)
return;
bool keyExists;
- int index = o->indexOf(key, &keyExists);
+ int index = indexOf(o, key, &keyExists);
if (!keyExists)
return;
@@ -692,13 +617,12 @@ QJsonValue QJsonObject::takeImpl(T key)
return QJsonValue(QJsonValue::Undefined);
bool keyExists;
- int index = o->indexOf(key, &keyExists);
+ int index = indexOf(o, key, &keyExists);
if (!keyExists)
return QJsonValue(QJsonValue::Undefined);
- QJsonValue v(d, o, o->entryAt(index)->value);
+ const QJsonValue v = QJsonPrivate::Value::fromTrustedCbor(o->extractAt(index + 1));
removeAt(index);
-
return v;
}
@@ -742,7 +666,7 @@ bool QJsonObject::containsImpl(T key) const
return false;
bool keyExists;
- o->indexOf(key, &keyExists);
+ indexOf(o, key, &keyExists);
return keyExists;
}
@@ -755,16 +679,14 @@ bool QJsonObject::operator==(const QJsonObject &other) const
return true;
if (!o)
- return !other.o->length;
+ return !other.o->elements.length();
if (!other.o)
- return !o->length;
- if (o->length != other.o->length)
+ return !o->elements.length();
+ if (o->elements.length() != other.o->elements.length())
return false;
- for (uint i = 0; i < o->length; ++i) {
- QJsonPrivate::Entry *e = o->entryAt(i);
- QJsonValue v(d, o, e->value);
- if (other.value(e->key()) != v)
+ for (int i = 0, end = o->elements.length(); i < end; ++i) {
+ if (o->valueAt(i) != other.o->valueAt(i))
return false;
}
@@ -788,9 +710,8 @@ bool QJsonObject::operator!=(const QJsonObject &other) const
*/
QJsonObject::iterator QJsonObject::erase(QJsonObject::iterator it)
{
- Q_ASSERT(d && d->ref.loadRelaxed() == 1);
- if (it.o != this || it.i < 0 || it.i >= (int)o->length)
- return iterator(this, o->length);
+ if (it.o != this || it.i < 0 || it.i >= o->elements.length())
+ return {this, o->elements.length()};
int index = it.i;
@@ -839,11 +760,11 @@ template <typename T>
QJsonObject::iterator QJsonObject::findImpl(T key)
{
bool keyExists = false;
- int index = o ? o->indexOf(key, &keyExists) : 0;
+ int index = o ? indexOf(o, key, &keyExists) : 0;
if (!keyExists)
return end();
detach2();
- return iterator(this, index);
+ return {this, index / 2};
}
#if QT_STRINGVIEW_LEVEL < 2
@@ -904,10 +825,10 @@ template <typename T>
QJsonObject::const_iterator QJsonObject::constFindImpl(T key) const
{
bool keyExists = false;
- int index = o ? o->indexOf(key, &keyExists) : 0;
+ int index = o ? indexOf(o, key, &keyExists) : 0;
if (!keyExists)
return end();
- return const_iterator(this, index);
+ return {this, index / 2};
}
/*! \fn int QJsonObject::count() const
@@ -1092,6 +1013,23 @@ QJsonObject::const_iterator QJsonObject::constFindImpl(T key) const
Returns a pointer to a modifiable reference to the current item.
*/
+/*! \fn QJsonValueRef QJsonObject::iterator::operator[](int j) const
+
+ Returns a modifiable reference to the item at offset \a j from the
+ item pointed to by this iterator (the item at position \c{*this + j}).
+
+ This function is provided to make QJsonObject iterators behave like C++
+ pointers.
+
+ The return value is of type QJsonValueRef, a helper class for QJsonArray
+ and QJsonObject. When you get an object of type QJsonValueRef, you can
+ use it as if it were a reference to a QJsonValue. If you assign to it,
+ the assignment will apply to the element in the QJsonArray or QJsonObject
+ from which you got the reference.
+
+ \sa operator+()
+*/
+
/*!
\fn bool QJsonObject::iterator::operator==(const iterator &other) const
\fn bool QJsonObject::iterator::operator==(const const_iterator &other) const
@@ -1112,6 +1050,38 @@ QJsonObject::const_iterator QJsonObject::constFindImpl(T key) const
\sa operator==()
*/
+/*!
+ \fn bool QJsonObject::iterator::operator<(const iterator& other) const
+ \fn bool QJsonObject::iterator::operator<(const const_iterator& other) const
+
+ Returns \c true if the item pointed to by this iterator is less than
+ the item pointed to by the \a other iterator.
+*/
+
+/*!
+ \fn bool QJsonObject::iterator::operator<=(const iterator& other) const
+ \fn bool QJsonObject::iterator::operator<=(const const_iterator& other) const
+
+ Returns \c true if the item pointed to by this iterator is less than
+ or equal to the item pointed to by the \a other iterator.
+*/
+
+/*!
+ \fn bool QJsonObject::iterator::operator>(const iterator& other) const
+ \fn bool QJsonObject::iterator::operator>(const const_iterator& other) const
+
+ Returns \c true if the item pointed to by this iterator is greater
+ than the item pointed to by the \a other iterator.
+*/
+
+/*!
+ \fn bool QJsonObject::iterator::operator>=(const iterator& other) const
+ \fn bool QJsonObject::iterator::operator>=(const const_iterator& other) const
+
+ Returns \c true if the item pointed to by this iterator is greater
+ than or equal to the item pointed to by the \a other iterator.
+*/
+
/*! \fn QJsonObject::iterator QJsonObject::iterator::operator++()
The prefix ++ operator, \c{++i}, advances the iterator to the
@@ -1185,6 +1155,12 @@ QJsonObject::const_iterator QJsonObject::constFindImpl(T key) const
\sa operator+=(), operator-()
*/
+/*! \fn int QJsonObject::iterator::operator-(iterator other) const
+
+ Returns the number of items between the item pointed to by \a
+ other and the item pointed to by this iterator.
+*/
+
/*!
\class QJsonObject::const_iterator
\inmodule QtCore
@@ -1288,6 +1264,18 @@ QJsonObject::const_iterator QJsonObject::constFindImpl(T key) const
Returns a pointer to the current item.
*/
+/*! \fn QJsonValue QJsonObject::const_iterator::operator[](int j) const
+
+ Returns the item at offset \a j from the item pointed to by this iterator (the item at
+ position \c{*this + j}).
+
+ This function is provided to make QJsonObject iterators behave like C++
+ pointers.
+
+ \sa operator+()
+*/
+
+
/*! \fn bool QJsonObject::const_iterator::operator==(const const_iterator &other) const
\fn bool QJsonObject::const_iterator::operator==(const iterator &other) const
@@ -1306,6 +1294,34 @@ QJsonObject::const_iterator QJsonObject::constFindImpl(T key) const
\sa operator==()
*/
+/*!
+ \fn bool QJsonObject::const_iterator::operator<(const const_iterator& other) const
+
+ Returns \c true if the item pointed to by this iterator is less than
+ the item pointed to by the \a other iterator.
+*/
+
+/*!
+ \fn bool QJsonObject::const_iterator::operator<=(const const_iterator& other) const
+
+ Returns \c true if the item pointed to by this iterator is less than
+ or equal to the item pointed to by the \a other iterator.
+*/
+
+/*!
+ \fn bool QJsonObject::const_iterator::operator>(const const_iterator& other) const
+
+ Returns \c true if the item pointed to by this iterator is greater
+ than the item pointed to by the \a other iterator.
+*/
+
+/*!
+ \fn bool QJsonObject::const_iterator::operator>=(const const_iterator& other) const
+
+ Returns \c true if the item pointed to by this iterator is greater
+ than or equal to the item pointed to by the \a other iterator.
+*/
+
/*! \fn QJsonObject::const_iterator QJsonObject::const_iterator::operator++()
The prefix ++ operator, \c{++i}, advances the iterator to the
@@ -1386,6 +1402,12 @@ QJsonObject::const_iterator QJsonObject::constFindImpl(T key) const
\sa operator+=(), operator-()
*/
+/*! \fn int QJsonObject::const_iterator::operator-(const_iterator other) const
+
+ Returns the number of items between the item pointed to by \a
+ other and the item pointed to by this iterator.
+*/
+
/*!
\internal
@@ -1399,28 +1421,10 @@ void QJsonObject::detach(uint reserve)
bool QJsonObject::detach2(uint reserve)
{
- if (!d) {
- if (reserve >= QJsonPrivate::Value::MaxSize) {
- qWarning("QJson: Document too large to store in data structure");
- return false;
- }
- d = new QJsonPrivate::Data(reserve, QJsonValue::Object);
- o = static_cast<QJsonPrivate::Object *>(d->header->root());
- d->ref.ref();
- return true;
- }
- if (reserve == 0 && d->ref.loadRelaxed() == 1)
+ if (!o)
return true;
-
- QJsonPrivate::Data *x = d->clone(o, reserve);
- if (!x)
- return false;
- x->ref.ref();
- if (!d->ref.deref())
- delete d;
- d = x;
- o = static_cast<QJsonPrivate::Object *>(d->header->root());
- return true;
+ o = QCborContainerPrivate::detach(o.data(), reserve ? reserve * 2 : o->elements.length());
+ return o;
}
/*!
@@ -1428,21 +1432,11 @@ bool QJsonObject::detach2(uint reserve)
*/
void QJsonObject::compact()
{
- if (!d || !d->compactionCounter)
+ if (!o)
return;
detach2();
- d->compact();
- o = static_cast<QJsonPrivate::Object *>(d->header->root());
-}
-
-/*!
- \internal
- */
-void QJsonObject::compactIfNeeded()
-{
- if (d->compactionCounter > 32u && d->compactionCounter >= unsigned(o->length) / 2u)
- compact();
+ o->compact(o->elements.length());
}
/*!
@@ -1450,10 +1444,8 @@ void QJsonObject::compactIfNeeded()
*/
QString QJsonObject::keyAt(int i) const
{
- Q_ASSERT(o && i >= 0 && i < (int)o->length);
-
- QJsonPrivate::Entry *e = o->entryAt(i);
- return e->key();
+ Q_ASSERT(o && i >= 0 && i * 2 < o->elements.length());
+ return o->stringAt(i * 2);
}
/*!
@@ -1461,11 +1453,9 @@ QString QJsonObject::keyAt(int i) const
*/
QJsonValue QJsonObject::valueAt(int i) const
{
- if (!o || i < 0 || i >= (int)o->length)
+ if (!o || i < 0 || 2 * i + 1 >= o->elements.length())
return QJsonValue(QJsonValue::Undefined);
-
- QJsonPrivate::Entry *e = o->entryAt(i);
- return QJsonValue(d, o, e->value);
+ return QJsonPrivate::Value::fromTrustedCbor(o->valueAt(2 * i + 1));
}
/*!
@@ -1473,13 +1463,13 @@ QJsonValue QJsonObject::valueAt(int i) const
*/
void QJsonObject::setValueAt(int i, const QJsonValue &val)
{
- Q_ASSERT(o && i >= 0 && i < (int)o->length);
-
- QJsonPrivate::Entry *e = o->entryAt(i);
- if (val.t == QJsonValue::Undefined)
- removeAt(i);
- else
- insertAt(i, e->key(), val, true);
+ Q_ASSERT(o && i >= 0 && 2 * i + 1 < o->elements.length());
+ if (val.isUndefined()) {
+ o->removeAt(2 * i + 1);
+ o->removeAt(2 * i);
+ } else {
+ o->replaceAt(2 * i + 1, QCborValue::fromJsonValue(val));
+ }
}
/*!
@@ -1488,9 +1478,8 @@ void QJsonObject::setValueAt(int i, const QJsonValue &val)
void QJsonObject::removeAt(int index)
{
detach2();
- o->removeItems(index, 1);
- ++d->compactionCounter;
- compactIfNeeded();
+ o->removeAt(index + 1);
+ o->removeAt(index);
}
uint qHash(const QJsonObject &object, uint seed)
@@ -1513,7 +1502,7 @@ QDebug operator<<(QDebug dbg, const QJsonObject &o)
return dbg;
}
QByteArray json;
- QJsonPrivate::Writer::objectToJson(o.o, json, 0, true);
+ QJsonPrivate::Writer::objectToJson(o.o.data(), json, 0, true);
dbg.nospace() << "QJsonObject("
<< json.constData() // print as utf-8 string without extra quotation marks
<< ")";
diff --git a/src/corelib/serialization/qjsonobject.h b/src/corelib/serialization/qjsonobject.h
index 05463f6f36..cfb44c9c55 100644
--- a/src/corelib/serialization/qjsonobject.h
+++ b/src/corelib/serialization/qjsonobject.h
@@ -43,6 +43,7 @@
#include <QtCore/qjsonvalue.h>
#include <QtCore/qiterator.h>
#include <QtCore/qpair.h>
+#include <QtCore/qshareddata.h>
#include <initializer_list>
QT_BEGIN_NAMESPACE
@@ -53,29 +54,21 @@ typedef QMap<QString, QVariant> QVariantMap;
template <class Key, class T> class QHash;
typedef QHash<QString, QVariant> QVariantHash;
+class QCborContainerPrivate;
+
class Q_CORE_EXPORT QJsonObject
{
public:
QJsonObject();
- QJsonObject(std::initializer_list<QPair<QString, QJsonValue> > args)
- {
- initialize();
- for (std::initializer_list<QPair<QString, QJsonValue> >::const_iterator i = args.begin(); i != args.end(); ++i)
- insert(i->first, i->second);
- }
+ QJsonObject(std::initializer_list<QPair<QString, QJsonValue> > args);
~QJsonObject();
QJsonObject(const QJsonObject &other);
QJsonObject &operator =(const QJsonObject &other);
- QJsonObject(QJsonObject &&other) noexcept
- : d(other.d), o(other.o)
- {
- other.d = nullptr;
- other.o = nullptr;
- }
+ QJsonObject(QJsonObject &&other) noexcept;
QJsonObject &operator =(QJsonObject &&other) noexcept
{
@@ -85,7 +78,6 @@ public:
void swap(QJsonObject &other) noexcept
{
- qSwap(d, other.d);
qSwap(o, other.o);
}
@@ -154,8 +146,14 @@ public:
#else
inline QJsonValueRefPtr operator->() const { return QJsonValueRefPtr(o, i); }
#endif
+ const QJsonValueRef operator[](int j) { return QJsonValueRef(o, i + j); }
+
inline bool operator==(const iterator &other) const { return i == other.i; }
inline bool operator!=(const iterator &other) const { return i != other.i; }
+ bool operator<(const iterator& other) const { return i < other.i; }
+ bool operator<=(const iterator& other) const { return i <= other.i; }
+ bool operator>(const iterator& other) const { return i > other.i; }
+ bool operator>=(const iterator& other) const { return i >= other.i; }
inline iterator &operator++() { ++i; return *this; }
inline iterator operator++(int) { iterator r = *this; ++i; return r; }
@@ -166,10 +164,15 @@ public:
inline iterator operator-(int j) const { return operator+(-j); }
inline iterator &operator+=(int j) { i += j; return *this; }
inline iterator &operator-=(int j) { i -= j; return *this; }
+ int operator-(iterator j) const { return i - j.i; }
public:
inline bool operator==(const const_iterator &other) const { return i == other.i; }
inline bool operator!=(const const_iterator &other) const { return i != other.i; }
+ bool operator<(const const_iterator& other) const { return i < other.i; }
+ bool operator<=(const const_iterator& other) const { return i <= other.i; }
+ bool operator>(const const_iterator& other) const { return i > other.i; }
+ bool operator>=(const const_iterator& other) const { return i >= other.i; }
};
friend class iterator;
@@ -200,8 +203,14 @@ public:
#else
inline QJsonValuePtr operator->() const { return QJsonValuePtr(o->valueAt(i)); }
#endif
+ const QJsonValue operator[](int j) { return o->valueAt(i + j); }
+
inline bool operator==(const const_iterator &other) const { return i == other.i; }
inline bool operator!=(const const_iterator &other) const { return i != other.i; }
+ bool operator<(const const_iterator& other) const { return i < other.i; }
+ bool operator<=(const const_iterator& other) const { return i <= other.i; }
+ bool operator>(const const_iterator& other) const { return i > other.i; }
+ bool operator>=(const const_iterator& other) const { return i >= other.i; }
inline const_iterator &operator++() { ++i; return *this; }
inline const_iterator operator++(int) { const_iterator r = *this; ++i; return r; }
@@ -212,9 +221,14 @@ public:
inline const_iterator operator-(int j) const { return operator+(-j); }
inline const_iterator &operator+=(int j) { i += j; return *this; }
inline const_iterator &operator-=(int j) { i -= j; return *this; }
+ int operator-(iterator j) const { return i - j.i; }
inline bool operator==(const iterator &other) const { return i == other.i; }
inline bool operator!=(const iterator &other) const { return i != other.i; }
+ bool operator<(const iterator& other) const { return i < other.i; }
+ bool operator<=(const iterator& other) const { return i <= other.i; }
+ bool operator>(const iterator& other) const { return i > other.i; }
+ bool operator>=(const iterator& other) const { return i >= other.i; }
};
friend class const_iterator;
@@ -253,20 +267,18 @@ public:
inline bool empty() const { return isEmpty(); }
private:
- friend class QJsonPrivate::Data;
friend class QJsonValue;
friend class QJsonDocument;
friend class QJsonValueRef;
-
+ friend class QCborMap;
friend Q_CORE_EXPORT QDebug operator<<(QDebug, const QJsonObject &);
- QJsonObject(QJsonPrivate::Data *data, QJsonPrivate::Object *object);
+ QJsonObject(QCborContainerPrivate *object);
void initialize();
// ### Qt 6: remove me and merge with detach2
void detach(uint reserve = 0);
bool detach2(uint reserve = 0);
void compact();
- void compactIfNeeded();
template <typename T> QJsonValue valueImpl(T key) const;
template <typename T> QJsonValueRef atImpl(T key);
@@ -283,8 +295,9 @@ private:
void removeAt(int i);
template <typename T> iterator insertAt(int i, T key, const QJsonValue &val, bool exists);
- QJsonPrivate::Data *d;
- QJsonPrivate::Object *o;
+ // ### Qt 6: remove
+ void *dead = nullptr;
+ QExplicitlySharedDataPointer<QCborContainerPrivate> o;
};
Q_DECLARE_SHARED_NOT_MOVABLE_UNTIL_QT6(QJsonObject)
diff --git a/src/corelib/serialization/qjsonparser.cpp b/src/corelib/serialization/qjsonparser.cpp
index cd36bd5a5b..6d0a92e094 100644
--- a/src/corelib/serialization/qjsonparser.cpp
+++ b/src/corelib/serialization/qjsonparser.cpp
@@ -45,6 +45,8 @@
#include "qjsonparser_p.h"
#include "qjson_p.h"
#include "private/qutfcodec_p.h"
+#include "private/qcborvalue_p.h"
+#include "private/qnumeric_p.h"
//#define PARSER_DEBUG
#ifdef PARSER_DEBUG
@@ -197,9 +199,32 @@ QString QJsonParseError::errorString() const
using namespace QJsonPrivate;
+class StashedContainer
+{
+ Q_DISABLE_COPY_MOVE(StashedContainer)
+public:
+ StashedContainer(QExplicitlySharedDataPointer<QCborContainerPrivate> *container,
+ QCborValue::Type type)
+ : type(type), stashed(std::move(*container)), current(container)
+ {
+ }
+
+ ~StashedContainer()
+ {
+ stashed->append(QCborContainerPrivate::makeValue(type, -1, current->take(),
+ QCborContainerPrivate::MoveContainer));
+ *current = std::move(stashed);
+ }
+
+private:
+ QCborValue::Type type;
+ QExplicitlySharedDataPointer<QCborContainerPrivate> stashed;
+ QExplicitlySharedDataPointer<QCborContainerPrivate> *current;
+};
+
Parser::Parser(const char *json, int length)
- : head(json), json(json), data(nullptr)
- , dataLength(0), current(0), nestingLevel(0)
+ : head(json), json(json)
+ , nestingLevel(0)
, lastError(QJsonParseError::NoError)
{
end = json + length;
@@ -297,34 +322,30 @@ char Parser::nextToken()
/*
JSON-text = object / array
*/
-QJsonDocument Parser::parse(QJsonParseError *error)
+QCborValue Parser::parse(QJsonParseError *error)
{
#ifdef PARSER_DEBUG
indent = 0;
qDebug(">>>>> parser begin");
#endif
- // allocate some space
- dataLength = qMax(end - json, (ptrdiff_t) 256);
- data = (char *)malloc(dataLength);
- Q_CHECK_PTR(data);
-
- // fill in Header data
- QJsonPrivate::Header *h = (QJsonPrivate::Header *)data;
- h->tag = QJsonDocument::BinaryFormatTag;
- h->version = 1u;
-
- current = sizeof(QJsonPrivate::Header);
-
eatBOM();
char token = nextToken();
+ QCborValue data;
+
DEBUG << Qt::hex << (uint)token;
if (token == BeginArray) {
+ container = new QCborContainerPrivate;
if (!parseArray())
goto error;
+ data = QCborContainerPrivate::makeValue(QCborValue::Array, -1, container.take(),
+ QCborContainerPrivate::MoveContainer);
} else if (token == BeginObject) {
+ container = new QCborContainerPrivate;
if (!parseObject())
goto error;
+ data = QCborContainerPrivate::makeValue(QCborValue::Map, -1, container.take(),
+ QCborContainerPrivate::MoveContainer);
} else {
lastError = QJsonParseError::IllegalValue;
goto error;
@@ -342,44 +363,95 @@ QJsonDocument Parser::parse(QJsonParseError *error)
error->offset = 0;
error->error = QJsonParseError::NoError;
}
- QJsonPrivate::Data *d = new QJsonPrivate::Data(data, current);
- return QJsonDocument(d);
+
+ return data;
}
error:
#ifdef PARSER_DEBUG
qDebug(">>>>> parser error");
#endif
+ container.reset();
if (error) {
error->offset = json - head;
error->error = lastError;
}
- free(data);
- return QJsonDocument();
+ return QCborValue();
}
-void Parser::ParsedObject::insert(uint offset) {
- const QJsonPrivate::Entry *newEntry = reinterpret_cast<const QJsonPrivate::Entry *>(parser->data + objectPosition + offset);
- int min = 0;
- int n = offsets.size();
- while (n > 0) {
- int half = n >> 1;
- int middle = min + half;
- if (*entryAt(middle) >= *newEntry) {
- n = half;
- } else {
- min = middle + 1;
- n -= half + 1;
+
+static void sortContainer(QCborContainerPrivate *container)
+{
+ using Forward = QJsonPrivate::KeyIterator;
+ using Reverse = std::reverse_iterator<Forward>;
+ using Value = Forward::value_type;
+
+ auto compare = [container](const Value &a, const Value &b)
+ {
+ const auto &aKey = a.key();
+ const auto &bKey = b.key();
+
+ Q_ASSERT(aKey.flags & QtCbor::Element::HasByteData);
+ Q_ASSERT(bKey.flags & QtCbor::Element::HasByteData);
+
+ const QtCbor::ByteData *aData = container->byteData(aKey);
+ const QtCbor::ByteData *bData = container->byteData(bKey);
+
+ if (!aData)
+ return bData ? -1 : 0;
+ if (!bData)
+ return 1;
+
+ // If StringIsAscii is set, we can use either the UTF-8 or the latin1 comparison
+ // for the string as ASCII is a subset of both. If nothing is set, that means UTF-8.
+
+ // We are currently missing an efficient comparison between UTF-8 and UTF-16 strings.
+ // Therefore, we need to convert the UTF-8 string if we encounter such a case.
+
+ if (aKey.flags & QtCbor::Element::StringIsAscii) {
+ if (bKey.flags & QtCbor::Element::StringIsAscii)
+ return QtPrivate::compareStrings(aData->asLatin1(), bData->asLatin1());
+ if (bKey.flags & QtCbor::Element::StringIsUtf16)
+ return QtPrivate::compareStrings(aData->asLatin1(), bData->asStringView());
+
+ return QCborContainerPrivate::compareUtf8(aData, bData->asLatin1());
}
- }
- if (min < offsets.size() && *entryAt(min) == *newEntry) {
- offsets[min] = offset;
- } else {
- offsets.insert(min, offset);
- }
+
+ if (aKey.flags & QtCbor::Element::StringIsUtf16) {
+ if (bKey.flags & QtCbor::Element::StringIsAscii)
+ return QtPrivate::compareStrings(aData->asStringView(), bData->asLatin1());
+ if (bKey.flags & QtCbor::Element::StringIsUtf16)
+ return QtPrivate::compareStrings(aData->asStringView(), bData->asStringView());
+
+ // Nasty case. a is UTF-16 and b is UTF-8
+ return QtPrivate::compareStrings(aData->asStringView(), bData->toUtf8String());
+ }
+
+ if (bKey.flags & QtCbor::Element::StringIsAscii)
+ return QCborContainerPrivate::compareUtf8(aData, bData->asLatin1());
+
+ // Nasty case. a is UTF-8 and b is UTF-16
+ if (bKey.flags & QtCbor::Element::StringIsUtf16)
+ return QtPrivate::compareStrings(aData->toUtf8String(), bData->asStringView());
+
+ return QCborContainerPrivate::compareUtf8(aData, bData->asLatin1());
+ };
+
+ std::sort(Forward(container->elements.begin()), Forward(container->elements.end()),
+ [&compare](const Value &a, const Value &b) { return compare(a, b) < 0; });
+
+ // We need to retain the _last_ value for any duplicate keys. Therefore the reverse dance here.
+ auto it = std::unique(Reverse(container->elements.end()), Reverse(container->elements.begin()),
+ [&compare](const Value &a, const Value &b) {
+ return compare(a, b) == 0;
+ }).base().elementsIterator();
+
+ // The erase from beginning is expensive but hopefully rare.
+ container->elements.erase(container->elements.begin(), it);
}
+
/*
object = begin-object [ member *( value-separator member ) ]
end-object
@@ -392,19 +464,14 @@ bool Parser::parseObject()
return false;
}
- int objectOffset = reserveSpace(sizeof(QJsonPrivate::Object));
- if (objectOffset < 0)
- return false;
- BEGIN << "parseObject pos=" << objectOffset << current << json;
-
- ParsedObject parsedObject(this, objectOffset);
+ BEGIN << "parseObject" << json;
char token = nextToken();
while (token == Quote) {
- int off = current - objectOffset;
- if (!parseMember(objectOffset))
+ if (!container)
+ container = new QCborContainerPrivate;
+ if (!parseMember())
return false;
- parsedObject.insert(off);
token = nextToken();
if (token != ValueSeparator)
break;
@@ -421,50 +488,23 @@ bool Parser::parseObject()
return false;
}
- DEBUG << "numEntries" << parsedObject.offsets.size();
- int table = objectOffset;
- // finalize the object
- if (parsedObject.offsets.size()) {
- int tableSize = parsedObject.offsets.size()*sizeof(uint);
- table = reserveSpace(tableSize);
- if (table < 0)
- return false;
-
-#if Q_BYTE_ORDER == Q_LITTLE_ENDIAN
- memcpy(data + table, parsedObject.offsets.constData(), tableSize);
-#else
- offset *o = (offset *)(data + table);
- for (int i = 0; i < parsedObject.offsets.size(); ++i)
- o[i] = parsedObject.offsets[i];
-
-#endif
- }
-
- QJsonPrivate::Object *o = (QJsonPrivate::Object *)(data + objectOffset);
- o->tableOffset = table - objectOffset;
- o->size = current - objectOffset;
- o->is_object = true;
- o->length = parsedObject.offsets.size();
-
- DEBUG << "current=" << current;
END;
--nestingLevel;
+
+ if (container)
+ sortContainer(container.data());
return true;
}
/*
member = string name-separator value
*/
-bool Parser::parseMember(int baseOffset)
+bool Parser::parseMember()
{
- int entryOffset = reserveSpace(sizeof(QJsonPrivate::Entry));
- if (entryOffset < 0)
- return false;
- BEGIN << "parseMember pos=" << entryOffset;
+ BEGIN << "parseMember";
- bool latin1;
- if (!parseString(&latin1))
+ if (!parseString())
return false;
char token = nextToken();
if (token != NameSeparator) {
@@ -475,56 +515,13 @@ bool Parser::parseMember(int baseOffset)
lastError = QJsonParseError::UnterminatedObject;
return false;
}
- QJsonPrivate::Value val;
- if (!parseValue(&val, baseOffset))
+ if (!parseValue())
return false;
- // finalize the entry
- QJsonPrivate::Entry *e = (QJsonPrivate::Entry *)(data + entryOffset);
- e->value = val;
- e->value.latinKey = latin1;
-
END;
return true;
}
-namespace {
- struct ValueArray {
- static const int prealloc = 128;
- ValueArray() : data(stackValues), alloc(prealloc), size(0) {}
- ~ValueArray() { if (data != stackValues) free(data); }
-
- inline bool grow() {
- alloc *= 2;
- if (data == stackValues) {
- QJsonPrivate::Value *newValues = static_cast<QJsonPrivate::Value *>(malloc(alloc*sizeof(QJsonPrivate::Value)));
- if (!newValues)
- return false;
- memcpy(newValues, data, size*sizeof(QJsonPrivate::Value));
- data = newValues;
- } else {
- void *newValues = realloc(data, alloc * sizeof(QJsonPrivate::Value));
- if (!newValues)
- return false;
- data = static_cast<QJsonPrivate::Value *>(newValues);
- }
- return true;
- }
- bool append(const QJsonPrivate::Value &v) {
- if (alloc == size && !grow())
- return false;
- data[size] = v;
- ++size;
- return true;
- }
-
- QJsonPrivate::Value stackValues[prealloc];
- QJsonPrivate::Value *data;
- int alloc;
- int size;
- };
-}
-
/*
array = begin-array [ value *( value-separator value ) ] end-array
*/
@@ -537,12 +534,6 @@ bool Parser::parseArray()
return false;
}
- int arrayOffset = reserveSpace(sizeof(QJsonPrivate::Array));
- if (arrayOffset < 0)
- return false;
-
- ValueArray values;
-
if (!eatSpace()) {
lastError = QJsonParseError::UnterminatedArray;
return false;
@@ -555,13 +546,10 @@ bool Parser::parseArray()
lastError = QJsonParseError::UnterminatedArray;
return false;
}
- QJsonPrivate::Value val;
- if (!parseValue(&val, arrayOffset))
+ if (!container)
+ container = new QCborContainerPrivate;
+ if (!parseValue())
return false;
- if (!values.append(val)) {
- lastError = QJsonParseError::DocumentTooLarge;
- return false;
- }
char token = nextToken();
if (token == EndArray)
break;
@@ -575,27 +563,11 @@ bool Parser::parseArray()
}
}
- DEBUG << "size =" << values.size;
- int table = arrayOffset;
- // finalize the object
- if (values.size) {
- int tableSize = values.size*sizeof(QJsonPrivate::Value);
- table = reserveSpace(tableSize);
- if (table < 0)
- return false;
- memcpy(data + table, values.data, tableSize);
- }
-
- QJsonPrivate::Array *a = (QJsonPrivate::Array *)(data + arrayOffset);
- a->tableOffset = table - arrayOffset;
- a->size = current - arrayOffset;
- a->is_object = false;
- a->length = values.size;
-
- DEBUG << "current=" << current;
+ DEBUG << "size =" << (container ? container->elements.length() : 0);
END;
--nestingLevel;
+
return true;
}
@@ -604,10 +576,9 @@ value = false / null / true / object / array / number / string
*/
-bool Parser::parseValue(QJsonPrivate::Value *val, int baseOffset)
+bool Parser::parseValue()
{
BEGIN << "parse Value" << json;
- val->_dummy = 0;
switch (*json++) {
case 'n':
@@ -618,7 +589,7 @@ bool Parser::parseValue(QJsonPrivate::Value *val, int baseOffset)
if (*json++ == 'u' &&
*json++ == 'l' &&
*json++ == 'l') {
- val->type = QJsonValue::Null;
+ container->append(QCborValue(QCborValue::Null));
DEBUG << "value: null";
END;
return true;
@@ -633,8 +604,7 @@ bool Parser::parseValue(QJsonPrivate::Value *val, int baseOffset)
if (*json++ == 'r' &&
*json++ == 'u' &&
*json++ == 'e') {
- val->type = QJsonValue::Bool;
- val->value = true;
+ container->append(QCborValue(true));
DEBUG << "value: true";
END;
return true;
@@ -650,8 +620,7 @@ bool Parser::parseValue(QJsonPrivate::Value *val, int baseOffset)
*json++ == 'l' &&
*json++ == 's' &&
*json++ == 'e') {
- val->type = QJsonValue::Bool;
- val->value = false;
+ container->append(QCborValue(false));
DEBUG << "value: false";
END;
return true;
@@ -659,44 +628,28 @@ bool Parser::parseValue(QJsonPrivate::Value *val, int baseOffset)
lastError = QJsonParseError::IllegalValue;
return false;
case Quote: {
- val->type = QJsonValue::String;
- if (current - baseOffset >= Value::MaxSize) {
- lastError = QJsonParseError::DocumentTooLarge;
+ if (!parseString())
return false;
- }
- val->value = current - baseOffset;
- bool latin1;
- if (!parseString(&latin1))
- return false;
- val->latinOrIntValue = latin1;
DEBUG << "value: string";
END;
return true;
}
- case BeginArray:
- val->type = QJsonValue::Array;
- if (current - baseOffset >= Value::MaxSize) {
- lastError = QJsonParseError::DocumentTooLarge;
- return false;
- }
- val->value = current - baseOffset;
+ case BeginArray: {
+ StashedContainer stashedContainer(&container, QCborValue::Array);
if (!parseArray())
return false;
DEBUG << "value: array";
END;
return true;
- case BeginObject:
- val->type = QJsonValue::Object;
- if (current - baseOffset >= Value::MaxSize) {
- lastError = QJsonParseError::DocumentTooLarge;
- return false;
- }
- val->value = current - baseOffset;
+ }
+ case BeginObject: {
+ StashedContainer stashedContainer(&container, QCborValue::Map);
if (!parseObject())
return false;
DEBUG << "value: object";
END;
return true;
+ }
case ValueSeparator:
// Essentially missing value, but after a colon, not after a comma
// like the other MissingObject errors.
@@ -708,7 +661,7 @@ bool Parser::parseValue(QJsonPrivate::Value *val, int baseOffset)
return false;
default:
--json;
- if (!parseNumber(val, baseOffset))
+ if (!parseNumber())
return false;
DEBUG << "value: number";
END;
@@ -735,10 +688,9 @@ bool Parser::parseValue(QJsonPrivate::Value *val, int baseOffset)
*/
-bool Parser::parseNumber(QJsonPrivate::Value *val, int baseOffset)
+bool Parser::parseNumber()
{
BEGIN << "parseNumber" << json;
- val->type = QJsonValue::Double;
const char *start = json;
bool isInt = true;
@@ -778,42 +730,32 @@ bool Parser::parseNumber(QJsonPrivate::Value *val, int baseOffset)
return false;
}
- QByteArray number(start, json - start);
+ const QByteArray number = QByteArray::fromRawData(start, json - start);
DEBUG << "numberstring" << number;
if (isInt) {
bool ok;
- int n = number.toInt(&ok);
- if (ok && n < (1<<25) && n > -(1<<25)) {
- val->int_value = n;
- val->latinOrIntValue = true;
+ qlonglong n = number.toLongLong(&ok);
+ if (ok) {
+ container->append(QCborValue(n));
END;
return true;
}
}
bool ok;
- union {
- quint64 ui;
- double d;
- };
- d = number.toDouble(&ok);
+ double d = number.toDouble(&ok);
if (!ok) {
lastError = QJsonParseError::IllegalNumber;
return false;
}
- int pos = reserveSpace(sizeof(double));
- if (pos < 0)
- return false;
- qToLittleEndian(ui, data + pos);
- if (current - baseOffset >= Value::MaxSize) {
- lastError = QJsonParseError::DocumentTooLarge;
- return false;
- }
- val->value = pos - baseOffset;
- val->latinOrIntValue = false;
+ qint64 n;
+ if (convertDoubleTo(d, &n))
+ container->append(QCborValue(n));
+ else
+ container->append(QCborValue(d));
END;
return true;
@@ -902,58 +844,45 @@ static inline bool scanEscapeSequence(const char *&json, const char *end, uint *
static inline bool scanUtf8Char(const char *&json, const char *end, uint *result)
{
- const uchar *&src = reinterpret_cast<const uchar *&>(json);
- const uchar *uend = reinterpret_cast<const uchar *>(end);
- uchar b = *src++;
- int res = QUtf8Functions::fromUtf8<QUtf8BaseTraits>(b, result, src, uend);
- if (res < 0) {
- // decoding error, backtrack the character we read above
- --json;
+ const auto *usrc = reinterpret_cast<const uchar *>(json);
+ const auto *uend = reinterpret_cast<const uchar *>(end);
+ const uchar b = *usrc++;
+ int res = QUtf8Functions::fromUtf8<QUtf8BaseTraits>(b, result, usrc, uend);
+ if (res < 0)
return false;
- }
+ json = reinterpret_cast<const char *>(usrc);
return true;
}
-bool Parser::parseString(bool *latin1)
+bool Parser::parseString()
{
- *latin1 = true;
-
const char *start = json;
- int outStart = current;
- // try to write out a latin1 string
-
- int stringPos = reserveSpace(2);
- if (stringPos < 0)
- return false;
+ // try to parse a utf-8 string without escape sequences, and note whether it's 7bit ASCII.
- BEGIN << "parse string stringPos=" << stringPos << json;
+ BEGIN << "parse string" << json;
+ bool isUtf8 = true;
+ bool isAscii = true;
while (json < end) {
uint ch = 0;
if (*json == '"')
break;
- else if (*json == '\\') {
- if (!scanEscapeSequence(json, end, &ch)) {
- lastError = QJsonParseError::IllegalEscapeSequence;
- return false;
- }
- } else {
- if (!scanUtf8Char(json, end, &ch)) {
- lastError = QJsonParseError::IllegalUTF8String;
- return false;
- }
- }
- // bail out if the string is not pure latin1 or too long to hold as a latin1string (which has only 16 bit for the length)
- if (ch > 0xff || json - start >= 0x8000) {
- *latin1 = false;
+ if (*json == '\\') {
+ isAscii = false;
+ // If we find escape sequences, we store UTF-16 as there are some
+ // escape sequences which are hard to represent in UTF-8.
+ // (plain "\\ud800" for example)
+ isUtf8 = false;
break;
}
- int pos = reserveSpace(1);
- if (pos < 0)
+ if (!scanUtf8Char(json, end, &ch)) {
+ lastError = QJsonParseError::IllegalUTF8String;
return false;
- DEBUG << " " << ch << (char)ch;
- data[pos] = (uchar)ch;
+ }
+ if (ch > 0x7f)
+ isAscii = false;
+ DEBUG << " " << ch << char(ch);
}
++json;
DEBUG << "end of string";
@@ -962,25 +891,20 @@ bool Parser::parseString(bool *latin1)
return false;
}
- // no unicode string, we are done
- if (*latin1) {
- // write string length
- *(QJsonPrivate::qle_ushort *)(data + stringPos) = ushort(current - outStart - sizeof(ushort));
- int pos = reserveSpace((4 - current) & 3);
- if (pos < 0)
- return false;
- while (pos & 3)
- data[pos++] = 0;
+ // no escape sequences, we are done
+ if (isUtf8) {
+ container->appendByteData(start, json - start - 1, QCborValue::String,
+ isAscii ? QtCbor::Element::StringIsAscii
+ : QtCbor::Element::ValueFlags {});
END;
return true;
}
- *latin1 = false;
- DEBUG << "not latin";
+ DEBUG << "has escape sequences";
json = start;
- current = outStart + sizeof(int);
+ QString ucs4;
while (json < end) {
uint ch = 0;
if (*json == '"')
@@ -997,16 +921,10 @@ bool Parser::parseString(bool *latin1)
}
}
if (QChar::requiresSurrogates(ch)) {
- int pos = reserveSpace(4);
- if (pos < 0)
- return false;
- *(QJsonPrivate::qle_ushort *)(data + pos) = QChar::highSurrogate(ch);
- *(QJsonPrivate::qle_ushort *)(data + pos + 2) = QChar::lowSurrogate(ch);
+ ucs4.append(QChar::highSurrogate(ch));
+ ucs4.append(QChar::lowSurrogate(ch));
} else {
- int pos = reserveSpace(2);
- if (pos < 0)
- return false;
- *(QJsonPrivate::qle_ushort *)(data + pos) = (ushort)ch;
+ ucs4.append(QChar(ushort(ch)));
}
}
++json;
@@ -1016,13 +934,8 @@ bool Parser::parseString(bool *latin1)
return false;
}
- // write string length
- *(QJsonPrivate::qle_int *)(data + stringPos) = (current - outStart - sizeof(int))/2;
- int pos = reserveSpace((4 - current) & 3);
- if (pos < 0)
- return false;
- while (pos & 3)
- data[pos++] = 0;
+ container->appendByteData(reinterpret_cast<const char *>(ucs4.utf16()), ucs4.size() * 2,
+ QCborValue::String, QtCbor::Element::StringIsUtf16);
END;
return true;
}
diff --git a/src/corelib/serialization/qjsonparser_p.h b/src/corelib/serialization/qjsonparser_p.h
index 379256847f..14d9705447 100644
--- a/src/corelib/serialization/qjsonparser_p.h
+++ b/src/corelib/serialization/qjsonparser_p.h
@@ -52,8 +52,8 @@
//
#include <QtCore/private/qglobal_p.h>
-#include <qjsondocument.h>
-#include <qvarlengtharray.h>
+#include <QtCore/private/qcborvalue_p.h>
+#include <QtCore/qjsondocument.h>
QT_BEGIN_NAMESPACE
@@ -64,25 +64,7 @@ class Parser
public:
Parser(const char *json, int length);
- QJsonDocument parse(QJsonParseError *error);
-
- class ParsedObject
- {
- public:
- ParsedObject(Parser *p, int pos) : parser(p), objectPosition(pos) {
- offsets.reserve(64);
- }
- void insert(uint offset);
-
- Parser *parser;
- int objectPosition;
- QVector<uint> offsets;
-
- inline QJsonPrivate::Entry *entryAt(int i) const {
- return reinterpret_cast<QJsonPrivate::Entry *>(parser->data + objectPosition + offsets[i]);
- }
- };
-
+ QCborValue parse(QJsonParseError *error);
private:
inline void eatBOM();
@@ -91,34 +73,17 @@ private:
bool parseObject();
bool parseArray();
- bool parseMember(int baseOffset);
- bool parseString(bool *latin1);
- bool parseValue(QJsonPrivate::Value *val, int baseOffset);
- bool parseNumber(QJsonPrivate::Value *val, int baseOffset);
+ bool parseMember();
+ bool parseString();
+ bool parseValue();
+ bool parseNumber();
const char *head;
const char *json;
const char *end;
- char *data;
- int dataLength;
- int current;
int nestingLevel;
QJsonParseError::ParseError lastError;
-
- inline int reserveSpace(int space) {
- if (current + space >= dataLength) {
- dataLength = 2*dataLength + space;
- char *newData = (char *)realloc(data, dataLength);
- if (!newData) {
- lastError = QJsonParseError::DocumentTooLarge;
- return -1;
- }
- data = newData;
- }
- int pos = current;
- current += space;
- return pos;
- }
+ QExplicitlySharedDataPointer<QCborContainerPrivate> container;
};
}
diff --git a/src/corelib/serialization/qjsonvalue.cpp b/src/corelib/serialization/qjsonvalue.cpp
index 5f07a6a03e..033e438580 100644
--- a/src/corelib/serialization/qjsonvalue.cpp
+++ b/src/corelib/serialization/qjsonvalue.cpp
@@ -40,6 +40,7 @@
#include <qjsonobject.h>
#include <qjsonvalue.h>
#include <qjsonarray.h>
+#include <qjsondocument.h>
#include <qurl.h>
#include <quuid.h>
#include <qvariant.h>
@@ -47,10 +48,11 @@
#include <qdebug.h>
#include "qdatastream.h"
-#ifndef QT_BOOTSTRAPPED
-# include <qcborarray.h>
-# include <qcbormap.h>
-#endif
+#include <private/qnumeric_p.h>
+#include <private/qcborvalue_p.h>
+
+#include <qcborarray.h>
+#include <qcbormap.h>
#include "qjson_p.h"
@@ -112,70 +114,61 @@ QT_BEGIN_NAMESPACE
The default is to create a Null value.
*/
QJsonValue::QJsonValue(Type type)
- : ui(0), d(nullptr), t(type)
+ : d(nullptr), t(QCborValue::Undefined)
{
-}
-
-/*!
- \internal
- */
-QJsonValue::QJsonValue(QJsonPrivate::Data *data, QJsonPrivate::Base *base, const QJsonPrivate::Value &v)
- : d(nullptr)
-{
- t = (Type)(uint)v.type;
- switch (t) {
- case Undefined:
+ switch (type) {
case Null:
- dbl = 0;
+ t = QCborValue::Null;
break;
case Bool:
- b = v.toBoolean();
+ t = QCborValue::False;
break;
case Double:
- dbl = v.toDouble(base);
+ t = QCborValue::Double;
break;
- case String: {
- QString s = v.toString(base);
- stringData = s.data_ptr();
- stringData->ref.ref();
+ case String:
+ t = QCborValue::String;
break;
- }
case Array:
+ t = QCborValue::Array;
+ break;
case Object:
- d = data;
- this->base = v.base(base);
+ t = QCborValue::Map;
+ break;
+ case Undefined:
break;
}
- if (d)
- d->ref.ref();
}
/*!
Creates a value of type Bool, with value \a b.
*/
QJsonValue::QJsonValue(bool b)
- : d(nullptr), t(Bool)
+ : t(b ? QCborValue::True : QCborValue::False)
{
- this->b = b;
}
/*!
Creates a value of type Double, with value \a n.
*/
-QJsonValue::QJsonValue(double n)
- : d(nullptr), t(Double)
+QJsonValue::QJsonValue(double v)
+ : d(nullptr)
{
- this->dbl = n;
+ if (convertDoubleTo(v, &n)) {
+ t = QCborValue::Integer;
+ } else {
+ memcpy(&n, &v, sizeof(n));
+ t = QCborValue::Double;
+ }
}
/*!
\overload
Creates a value of type Double, with value \a n.
*/
-QJsonValue::QJsonValue(int n)
- : d(nullptr), t(Double)
+QJsonValue::QJsonValue(int v)
+ : n(v), t(QCborValue::Integer)
{
- this->dbl = n;
}
/*!
@@ -184,19 +177,17 @@ QJsonValue::QJsonValue(int n)
NOTE: the integer limits for IEEE 754 double precision data is 2^53 (-9007199254740992 to +9007199254740992).
If you pass in values outside this range expect a loss of precision to occur.
*/
-QJsonValue::QJsonValue(qint64 n)
- : d(nullptr), t(Double)
+QJsonValue::QJsonValue(qint64 v)
+ : n(v), t(QCborValue::Integer)
{
- this->dbl = double(n);
}
/*!
Creates a value of type String, with value \a s.
*/
QJsonValue::QJsonValue(const QString &s)
- : d(nullptr), t(String)
+ : QJsonValue(QJsonPrivate::Value::fromTrustedCbor(s))
{
- stringDataFromQStringHelper(s);
}
/*!
@@ -211,71 +202,50 @@ QJsonValue::QJsonValue(const QString &s)
\since 5.3
*/
+// ### Qt6: remove
void QJsonValue::stringDataFromQStringHelper(const QString &string)
{
- stringData = *(QStringData **)(&string);
- stringData->ref.ref();
+ *this = QJsonValue(string);
}
/*!
Creates a value of type String, with value \a s.
*/
QJsonValue::QJsonValue(QLatin1String s)
- : d(nullptr), t(String)
+ : QJsonValue(QJsonPrivate::Value::fromTrustedCbor(s))
{
- // ### FIXME: Avoid creating the temp QString below
- QString str(s);
- stringDataFromQStringHelper(str);
}
/*!
Creates a value of type Array, with value \a a.
*/
QJsonValue::QJsonValue(const QJsonArray &a)
- : d(a.d), t(Array)
+ : n(-1), d(a.a), t(QCborValue::Array)
{
- base = a.a;
- if (d)
- d->ref.ref();
}
/*!
Creates a value of type Object, with value \a o.
*/
QJsonValue::QJsonValue(const QJsonObject &o)
- : d(o.d), t(Object)
+ : n(-1), d(o.o), t(QCborValue::Map)
{
- base = o.o;
- if (d)
- d->ref.ref();
}
/*!
Destroys the value.
*/
-QJsonValue::~QJsonValue()
-{
- if (t == String && stringData && !stringData->ref.deref())
- free(stringData);
-
- if (d && !d->ref.deref())
- delete d;
-}
+QJsonValue::~QJsonValue() = default;
/*!
Creates a copy of \a other.
*/
QJsonValue::QJsonValue(const QJsonValue &other)
{
+ n = other.n;
t = other.t;
d = other.d;
- ui = other.ui;
- if (d)
- d->ref.ref();
-
- if (t == String && stringData)
- stringData->ref.ref();
}
/*!
@@ -288,6 +258,23 @@ QJsonValue &QJsonValue::operator =(const QJsonValue &other)
return *this;
}
+QJsonValue::QJsonValue(QJsonValue &&other) noexcept :
+ n(other.n),
+ d(other.d),
+ t(other.t)
+{
+ other.n = 0;
+ other.d = nullptr;
+ other.t = QCborValue::Null;
+}
+
+void QJsonValue::swap(QJsonValue &other) noexcept
+{
+ qSwap(n, other.n);
+ qSwap(d, other.d);
+ qSwap(t, other.t);
+}
+
/*!
\fn QJsonValue::QJsonValue(QJsonValue &&other)
\since 5.10
@@ -528,23 +515,27 @@ QJsonValue QJsonValue::fromVariant(const QVariant &variant)
QVariant QJsonValue::toVariant() const
{
switch (t) {
- case Bool:
- return b;
- case Double:
- return dbl;
- case String:
+ case QCborValue::True:
+ return true;
+ case QCborValue::False:
+ return false;
+ case QCborValue::Integer:
+ case QCborValue::Double:
+ return toDouble();
+ case QCborValue::String:
return toString();
- case Array:
+ case QCborValue::Array:
return d ?
- QJsonArray(d, static_cast<QJsonPrivate::Array *>(base)).toVariantList() :
+ QJsonArray(d.data()).toVariantList() :
QVariantList();
- case Object:
+ case QCborValue::Map:
return d ?
- QJsonObject(d, static_cast<QJsonPrivate::Object *>(base)).toVariantMap() :
+ QJsonObject(d.data()).toVariantMap() :
QVariantMap();
- case Null:
+ case QCborValue::Null:
return QVariant::fromValue(nullptr);
- case Undefined:
+ case QCborValue::Undefined:
+ default:
break;
}
return QVariant();
@@ -573,7 +564,25 @@ QVariant QJsonValue::toVariant() const
*/
QJsonValue::Type QJsonValue::type() const
{
- return t;
+ switch (t) {
+ case QCborValue::Null:
+ return QJsonValue::Null;
+ case QCborValue::True:
+ case QCborValue::False:
+ return QJsonValue::Bool;
+ case QCborValue::Double:
+ case QCborValue::Integer:
+ return QJsonValue::Double;
+ case QCborValue::String:
+ return QJsonValue::String;
+ case QCborValue::Array:
+ return QJsonValue::Array;
+ case QCborValue::Map:
+ return QJsonValue::Object;
+ case QCborValue::Undefined:
+ default:
+ return QJsonValue::Undefined;
+ }
}
/*!
@@ -583,9 +592,14 @@ QJsonValue::Type QJsonValue::type() const
*/
bool QJsonValue::toBool(bool defaultValue) const
{
- if (t != Bool)
+ switch (t) {
+ case QCborValue::True:
+ return true;
+ case QCborValue::False:
+ return false;
+ default:
return defaultValue;
- return b;
+ }
}
/*!
@@ -597,9 +611,20 @@ bool QJsonValue::toBool(bool defaultValue) const
*/
int QJsonValue::toInt(int defaultValue) const
{
- if (t == Double && int(dbl) == dbl)
- return int(dbl);
- return defaultValue;
+ switch (t) {
+ case QCborValue::Double: {
+ const double dbl = toDouble();
+ int dblInt;
+ convertDoubleTo<int>(dbl, &dblInt);
+ return dbl == dblInt ? dblInt : defaultValue;
+ }
+ case QCborValue::Integer:
+ return (n <= qint64(std::numeric_limits<int>::max())
+ && n >= qint64(std::numeric_limits<int>::min()))
+ ? n : defaultValue;
+ default:
+ return defaultValue;
+ }
}
/*!
@@ -609,9 +634,17 @@ int QJsonValue::toInt(int defaultValue) const
*/
double QJsonValue::toDouble(double defaultValue) const
{
- if (t != Double)
+ switch (t) {
+ case QCborValue::Double: {
+ double d;
+ memcpy(&d, &n, sizeof(d));
+ return d;
+ }
+ case QCborValue::Integer:
+ return n;
+ default:
return defaultValue;
- return dbl;
+ }
}
/*!
@@ -621,11 +654,7 @@ double QJsonValue::toDouble(double defaultValue) const
*/
QString QJsonValue::toString(const QString &defaultValue) const
{
- if (t != String)
- return defaultValue;
- stringData->ref.ref(); // the constructor below doesn't add a ref.
- QStringDataPtr holder = { stringData };
- return QString(holder);
+ return (t == QCborValue::String && d) ? d->stringAt(n) : defaultValue;
}
/*!
@@ -637,11 +666,7 @@ QString QJsonValue::toString(const QString &defaultValue) const
*/
QString QJsonValue::toString() const
{
- if (t != String)
- return QString();
- stringData->ref.ref(); // the constructor below doesn't add a ref.
- QStringDataPtr holder = { stringData };
- return QString(holder);
+ return (t == QCborValue::String && d) ? d->stringAt(n) : QString();
}
/*!
@@ -651,10 +676,10 @@ QString QJsonValue::toString() const
*/
QJsonArray QJsonValue::toArray(const QJsonArray &defaultValue) const
{
- if (!d || t != Array)
+ if (t != QCborValue::Array || n >= 0 || !d)
return defaultValue;
- return QJsonArray(d, static_cast<QJsonPrivate::Array *>(base));
+ return QJsonArray(d.data());
}
/*!
@@ -676,10 +701,10 @@ QJsonArray QJsonValue::toArray() const
*/
QJsonObject QJsonValue::toObject(const QJsonObject &defaultValue) const
{
- if (!d || t != Object)
+ if (t != QCborValue::Map || n >= 0 || !d)
return defaultValue;
- return QJsonObject(d, static_cast<QJsonPrivate::Object *>(base));
+ return QJsonObject(d.data());
}
/*!
@@ -766,33 +791,31 @@ bool QJsonValue::operator==(const QJsonValue &other) const
return false;
switch (t) {
- case Undefined:
- case Null:
+ case QCborValue::Undefined:
+ case QCborValue::Null:
+ case QCborValue::True:
+ case QCborValue::False:
break;
- case Bool:
- return b == other.b;
- case Double:
- return dbl == other.dbl;
- case String:
+ case QCborValue::Double:
+ return toDouble() == other.toDouble();
+ case QCborValue::Integer:
+ return n == other.n;
+ case QCborValue::String:
return toString() == other.toString();
- case Array:
- if (base == other.base)
- return true;
- if (!base)
- return !other.base->length;
- if (!other.base)
- return !base->length;
- return QJsonArray(d, static_cast<QJsonPrivate::Array *>(base))
- == QJsonArray(other.d, static_cast<QJsonPrivate::Array *>(other.base));
- case Object:
- if (base == other.base)
- return true;
- if (!base)
- return !other.base->length;
- if (!other.base)
- return !base->length;
- return QJsonObject(d, static_cast<QJsonPrivate::Object *>(base))
- == QJsonObject(other.d, static_cast<QJsonPrivate::Object *>(other.base));
+ case QCborValue::Array:
+ if (!d)
+ return !other.d || other.d->elements.length() == 0;
+ if (!other.d)
+ return d->elements.length() == 0;
+ return QJsonArray(d.data()) == QJsonArray(other.d.data());
+ case QCborValue::Map:
+ if (!d)
+ return !other.d || other.d->elements.length() == 0;
+ if (!other.d)
+ return d->elements.length() == 0;
+ return QJsonObject(d.data()) == QJsonObject(other.d.data());
+ default:
+ return false;
}
return true;
}
@@ -810,15 +833,7 @@ bool QJsonValue::operator!=(const QJsonValue &other) const
*/
void QJsonValue::detach()
{
- if (!d)
- return;
-
- QJsonPrivate::Data *x = d->clone(base);
- x->ref.ref();
- if (!d->ref.deref())
- delete d;
- d = x;
- base = static_cast<QJsonPrivate::Object *>(d->header->root());
+ d.detach();
}
@@ -914,7 +929,7 @@ uint qHash(const QJsonValue &value, uint seed)
QDebug operator<<(QDebug dbg, const QJsonValue &o)
{
QDebugStateSaver saver(dbg);
- switch (o.t) {
+ switch (o.type()) {
case QJsonValue::Undefined:
dbg << "QJsonValue(undefined)";
break;
@@ -948,7 +963,7 @@ QDebug operator<<(QDebug dbg, const QJsonValue &o)
#ifndef QT_NO_DATASTREAM
QDataStream &operator<<(QDataStream &stream, const QJsonValue &v)
{
- quint8 type = v.t;
+ quint8 type = v.type();
stream << type;
switch (type) {
case QJsonValue::Undefined:
diff --git a/src/corelib/serialization/qjsonvalue.h b/src/corelib/serialization/qjsonvalue.h
index 8ade18509b..5adcd64176 100644
--- a/src/corelib/serialization/qjsonvalue.h
+++ b/src/corelib/serialization/qjsonvalue.h
@@ -42,22 +42,18 @@
#include <QtCore/qglobal.h>
#include <QtCore/qstring.h>
+#include <QtCore/qshareddata.h>
+#include <QtCore/qcborvalue.h>
QT_BEGIN_NAMESPACE
-class QDebug;
class QVariant;
class QJsonArray;
class QJsonObject;
+class QCborContainerPrivate;
namespace QJsonPrivate {
- class Data;
- class Base;
- class Object;
- class Header;
- class Array;
- class Value;
- class Entry;
+class Value;
}
class Q_CORE_EXPORT QJsonValue
@@ -77,12 +73,12 @@ public:
QJsonValue(bool b);
QJsonValue(double n);
QJsonValue(int n);
- QJsonValue(qint64 n);
+ QJsonValue(qint64 v);
QJsonValue(const QString &s);
QJsonValue(QLatin1String s);
#ifndef QT_NO_CAST_FROM_ASCII
inline QT_ASCII_CAST_WARN QJsonValue(const char *s)
- : d(nullptr), t(String) { stringDataFromQStringHelper(QString::fromUtf8(s)); }
+ : QJsonValue(QString::fromUtf8(s)) {}
#endif
QJsonValue(const QJsonArray &a);
QJsonValue(const QJsonObject &o);
@@ -92,15 +88,7 @@ public:
QJsonValue(const QJsonValue &other);
QJsonValue &operator =(const QJsonValue &other);
- QJsonValue(QJsonValue &&other) noexcept
- : ui(other.ui),
- d(other.d),
- t(other.t)
- {
- other.ui = 0;
- other.d = nullptr;
- other.t = Null;
- }
+ QJsonValue(QJsonValue &&other) noexcept;
QJsonValue &operator =(QJsonValue &&other) noexcept
{
@@ -108,12 +96,7 @@ public:
return *this;
}
- void swap(QJsonValue &other) noexcept
- {
- qSwap(ui, other.ui);
- qSwap(d, other.d);
- qSwap(t, other.t);
- }
+ void swap(QJsonValue &other) noexcept;
static QJsonValue fromVariant(const QVariant &variant);
QVariant toVariant() const;
@@ -149,7 +132,7 @@ public:
private:
// avoid implicit conversions from char * to bool
- inline QJsonValue(const void *) {}
+ QJsonValue(const void *) = delete;
friend class QJsonPrivate::Value;
friend class QJsonArray;
friend class QJsonObject;
@@ -157,20 +140,19 @@ private:
friend Q_CORE_EXPORT QDebug operator<<(QDebug, const QJsonValue &);
friend Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QJsonValue &);
- QJsonValue(QJsonPrivate::Data *d, QJsonPrivate::Base *b, const QJsonPrivate::Value& v);
+ // ### Qt6: Remove this.
void stringDataFromQStringHelper(const QString &string);
void detach();
- union {
- quint64 ui;
- bool b;
- double dbl;
- QStringData *stringData;
- QJsonPrivate::Base *base;
- };
- QJsonPrivate::Data *d; // needed for Objects and Arrays
- Type t;
+ // ### Qt6: change to an actual QCborValue
+ qint64 n = 0;
+ QExplicitlySharedDataPointer<QCborContainerPrivate> d; // needed for Objects, Arrays, Strings
+ QCborValue::Type t;
+
+ // Assert binary compatibility with pre-5.15 QJsonValue
+ Q_STATIC_ASSERT(sizeof(QExplicitlySharedDataPointer<QCborContainerPrivate>) == sizeof(void *));
+ Q_STATIC_ASSERT(sizeof(QCborValue::Type) == sizeof(QJsonValue::Type));
};
class Q_CORE_EXPORT QJsonValueRef
diff --git a/src/corelib/serialization/qjsonwriter.cpp b/src/corelib/serialization/qjsonwriter.cpp
index 012d3bea86..627d1bbd62 100644
--- a/src/corelib/serialization/qjsonwriter.cpp
+++ b/src/corelib/serialization/qjsonwriter.cpp
@@ -44,13 +44,14 @@
#include "qjson_p.h"
#include "private/qutfcodec_p.h"
#include <private/qnumeric_p.h>
+#include <private/qcborvalue_p.h>
QT_BEGIN_NAMESPACE
using namespace QJsonPrivate;
-static void objectContentToJson(const QJsonPrivate::Object *o, QByteArray &json, int indent, bool compact);
-static void arrayContentToJson(const QJsonPrivate::Array *a, QByteArray &json, int indent, bool compact);
+static void objectContentToJson(const QCborContainerPrivate *o, QByteArray &json, int indent, bool compact);
+static void arrayContentToJson(const QCborContainerPrivate *a, QByteArray &json, int indent, bool compact);
static inline uchar hexdig(uint u)
{
@@ -126,16 +127,20 @@ static QByteArray escapedString(const QString &s)
return ba;
}
-static void valueToJson(const QJsonPrivate::Base *b, const QJsonPrivate::Value &v, QByteArray &json, int indent, bool compact)
+static void valueToJson(const QCborValue &v, QByteArray &json, int indent, bool compact)
{
- QJsonValue::Type type = (QJsonValue::Type)(uint)v.type;
+ QCborValue::Type type = v.type();
switch (type) {
- case QJsonValue::Bool:
- json += v.toBoolean() ? "true" : "false";
+ case QCborValue::True:
+ json += "true";
break;
- case QJsonValue::Double: {
- const double d = v.toDouble(b);
- if (qIsFinite(d)) { // +2 to format to ensure the expected precision
+ case QCborValue::False:
+ json += "false";
+ break;
+ case QCborValue::Integer:
+ case QCborValue::Double: {
+ const double d = v.toDouble();
+ if (qIsFinite(d)) {
quint64 absInt;
json += QByteArray::number(d, convertDoubleTo(std::abs(d), &absInt) ? 'f' : 'g',
QLocale::FloatingPointShortest);
@@ -144,42 +149,44 @@ static void valueToJson(const QJsonPrivate::Base *b, const QJsonPrivate::Value &
}
break;
}
- case QJsonValue::String:
+ case QCborValue::String:
json += '"';
- json += escapedString(v.toString(b));
+ json += escapedString(v.toString());
json += '"';
break;
- case QJsonValue::Array:
+ case QCborValue::Array:
json += compact ? "[" : "[\n";
- arrayContentToJson(static_cast<QJsonPrivate::Array *>(v.base(b)), json, indent + (compact ? 0 : 1), compact);
+ arrayContentToJson(
+ QJsonPrivate::Value::container(v), json, indent + (compact ? 0 : 1), compact);
json += QByteArray(4*indent, ' ');
json += ']';
break;
- case QJsonValue::Object:
+ case QCborValue::Map:
json += compact ? "{" : "{\n";
- objectContentToJson(static_cast<QJsonPrivate::Object *>(v.base(b)), json, indent + (compact ? 0 : 1), compact);
+ objectContentToJson(
+ QJsonPrivate::Value::container(v), json, indent + (compact ? 0 : 1), compact);
json += QByteArray(4*indent, ' ');
json += '}';
break;
- case QJsonValue::Null:
+ case QCborValue::Null:
default:
json += "null";
}
}
-static void arrayContentToJson(const QJsonPrivate::Array *a, QByteArray &json, int indent, bool compact)
+static void arrayContentToJson(const QCborContainerPrivate *a, QByteArray &json, int indent, bool compact)
{
- if (!a || !a->length)
+ if (!a || a->elements.empty())
return;
QByteArray indentString(4*indent, ' ');
- uint i = 0;
- while (1) {
+ qsizetype i = 0;
+ while (true) {
json += indentString;
- valueToJson(a, a->at(i), json, indent, compact);
+ valueToJson(a->valueAt(i), json, indent, compact);
- if (++i == a->length) {
+ if (++i == a->elements.size()) {
if (!compact)
json += '\n';
break;
@@ -190,23 +197,23 @@ static void arrayContentToJson(const QJsonPrivate::Array *a, QByteArray &json, i
}
-static void objectContentToJson(const QJsonPrivate::Object *o, QByteArray &json, int indent, bool compact)
+static void objectContentToJson(const QCborContainerPrivate *o, QByteArray &json, int indent, bool compact)
{
- if (!o || !o->length)
+ if (!o || o->elements.empty())
return;
QByteArray indentString(4*indent, ' ');
- uint i = 0;
- while (1) {
- QJsonPrivate::Entry *e = o->entryAt(i);
+ qsizetype i = 0;
+ while (true) {
+ QCborValue e = o->valueAt(i);
json += indentString;
json += '"';
- json += escapedString(e->key());
+ json += escapedString(o->valueAt(i).toString());
json += compact ? "\":" : "\": ";
- valueToJson(o, e->value, json, indent, compact);
+ valueToJson(o->valueAt(i + 1), json, indent, compact);
- if (++i == o->length) {
+ if ((i += 2) == o->elements.size()) {
if (!compact)
json += '\n';
break;
@@ -216,18 +223,18 @@ static void objectContentToJson(const QJsonPrivate::Object *o, QByteArray &json,
}
}
-void Writer::objectToJson(const QJsonPrivate::Object *o, QByteArray &json, int indent, bool compact)
+void Writer::objectToJson(const QCborContainerPrivate *o, QByteArray &json, int indent, bool compact)
{
- json.reserve(json.size() + (o ? (int)o->size : 16));
+ json.reserve(json.size() + (o ? (int)o->elements.size() : 16));
json += compact ? "{" : "{\n";
objectContentToJson(o, json, indent + (compact ? 0 : 1), compact);
json += QByteArray(4*indent, ' ');
json += compact ? "}" : "}\n";
}
-void Writer::arrayToJson(const QJsonPrivate::Array *a, QByteArray &json, int indent, bool compact)
+void Writer::arrayToJson(const QCborContainerPrivate *a, QByteArray &json, int indent, bool compact)
{
- json.reserve(json.size() + (a ? (int)a->size : 16));
+ json.reserve(json.size() + (a ? (int)a->elements.size() : 16));
json += compact ? "[" : "[\n";
arrayContentToJson(a, json, indent + (compact ? 0 : 1), compact);
json += QByteArray(4*indent, ' ');
diff --git a/src/corelib/serialization/qjsonwriter_p.h b/src/corelib/serialization/qjsonwriter_p.h
index 76a8460449..8c263bb7c3 100644
--- a/src/corelib/serialization/qjsonwriter_p.h
+++ b/src/corelib/serialization/qjsonwriter_p.h
@@ -62,8 +62,8 @@ namespace QJsonPrivate
class Writer
{
public:
- static void objectToJson(const QJsonPrivate::Object *o, QByteArray &json, int indent, bool compact = false);
- static void arrayToJson(const QJsonPrivate::Array *a, QByteArray &json, int indent, bool compact = false);
+ static void objectToJson(const QCborContainerPrivate *o, QByteArray &json, int indent, bool compact = false);
+ static void arrayToJson(const QCborContainerPrivate *a, QByteArray &json, int indent, bool compact = false);
};
}
diff --git a/src/corelib/serialization/serialization.pri b/src/corelib/serialization/serialization.pri
index 4f2dc64e4f..7407e20d9e 100644
--- a/src/corelib/serialization/serialization.pri
+++ b/src/corelib/serialization/serialization.pri
@@ -6,7 +6,6 @@ HEADERS += \
serialization/qcbormap.h \
serialization/qcborvalue.h \
serialization/qcborvalue_p.h \
- serialization/qcborstream.h \
serialization/qdatastream.h \
serialization/qdatastream_p.h \
serialization/qjson_p.h \
@@ -23,11 +22,9 @@ HEADERS += \
serialization/qxmlutils_p.h
SOURCES += \
- serialization/qcborstream.cpp \
serialization/qcbordiagnostic.cpp \
serialization/qcborvalue.cpp \
serialization/qdatastream.cpp \
- serialization/qjson.cpp \
serialization/qjsoncbor.cpp \
serialization/qjsondocument.cpp \
serialization/qjsonobject.cpp \
@@ -39,6 +36,28 @@ SOURCES += \
serialization/qxmlstream.cpp \
serialization/qxmlutils.cpp
+qtConfig(cborstream): {
+ SOURCES += \
+ serialization/qcborstream.cpp
+
+ HEADERS += \
+ serialization/qcborstream.h
+}
+
+qtConfig(binaryjson): {
+ HEADERS += \
+ serialization/qbinaryjson_p.h \
+ serialization/qbinaryjsonarray_p.h \
+ serialization/qbinaryjsonobject_p.h \
+ serialization/qbinaryjsonvalue_p.h
+
+ SOURCES += \
+ serialization/qbinaryjson.cpp \
+ serialization/qbinaryjsonarray.cpp \
+ serialization/qbinaryjsonobject.cpp \
+ serialization/qbinaryjsonvalue.cpp \
+}
+
false: SOURCES += \
serialization/qcborarray.cpp \
serialization/qcbormap.cpp
diff --git a/src/corelib/statemachine/qabstractstate.cpp b/src/corelib/statemachine/qabstractstate.cpp
index 0db44bc427..10f54c3e18 100644
--- a/src/corelib/statemachine/qabstractstate.cpp
+++ b/src/corelib/statemachine/qabstractstate.cpp
@@ -84,19 +84,19 @@ QT_BEGIN_NAMESPACE
QAbstractStatePrivate::QAbstractStatePrivate(StateType type)
- : stateType(type), isMachine(false), active(false), parentState(0)
+ : stateType(type), isMachine(false), active(false), parentState(nullptr)
{
}
QStateMachine *QAbstractStatePrivate::machine() const
{
QObject *par = parent;
- while (par != 0) {
+ while (par != nullptr) {
if (QStateMachine *mach = qobject_cast<QStateMachine*>(par))
return mach;
par = par->parent();
}
- return 0;
+ return nullptr;
}
void QAbstractStatePrivate::callOnEntry(QEvent *e)
diff --git a/src/corelib/statemachine/qabstracttransition.cpp b/src/corelib/statemachine/qabstracttransition.cpp
index d841fd3c8b..df70b54721 100644
--- a/src/corelib/statemachine/qabstracttransition.cpp
+++ b/src/corelib/statemachine/qabstracttransition.cpp
@@ -144,7 +144,7 @@ QStateMachine *QAbstractTransitionPrivate::machine() const
Q_Q(const QAbstractTransition);
if (QHistoryState *parent = qobject_cast<QHistoryState *>(q->parent()))
return parent->machine();
- return 0;
+ return nullptr;
}
bool QAbstractTransitionPrivate::callEventTest(QEvent *e)
@@ -223,7 +223,7 @@ void QAbstractTransition::setTargetState(QAbstractState* target)
{
Q_D(QAbstractTransition);
if ((d->targetStates.size() == 1 && target == d->targetStates.at(0).data()) ||
- (d->targetStates.isEmpty() && target == 0)) {
+ (d->targetStates.isEmpty() && target == nullptr)) {
return;
}
if (!target)
diff --git a/src/corelib/statemachine/qeventtransition.cpp b/src/corelib/statemachine/qeventtransition.cpp
index a90f147773..5dcbcfff47 100644
--- a/src/corelib/statemachine/qeventtransition.cpp
+++ b/src/corelib/statemachine/qeventtransition.cpp
@@ -100,7 +100,7 @@ QT_BEGIN_NAMESPACE
*/
QEventTransitionPrivate::QEventTransitionPrivate()
{
- object = 0;
+ object = nullptr;
eventType = QEvent::None;
registered = false;
}
diff --git a/src/corelib/statemachine/qhistorystate.cpp b/src/corelib/statemachine/qhistorystate.cpp
index ccf04d4799..e5b8075b96 100644
--- a/src/corelib/statemachine/qhistorystate.cpp
+++ b/src/corelib/statemachine/qhistorystate.cpp
@@ -147,7 +147,7 @@ protected:
QHistoryStatePrivate::QHistoryStatePrivate()
: QAbstractStatePrivate(HistoryState)
- , defaultTransition(0)
+ , defaultTransition(nullptr)
, historyType(QHistoryState::ShallowHistory)
{
}
diff --git a/src/corelib/statemachine/qsignaltransition.cpp b/src/corelib/statemachine/qsignaltransition.cpp
index 59e0c0d788..8e57695fd7 100644
--- a/src/corelib/statemachine/qsignaltransition.cpp
+++ b/src/corelib/statemachine/qsignaltransition.cpp
@@ -107,7 +107,7 @@ QT_BEGIN_NAMESPACE
QSignalTransitionPrivate::QSignalTransitionPrivate()
{
- sender = 0;
+ sender = nullptr;
signalIndex = -1;
}
diff --git a/src/corelib/statemachine/qstate.cpp b/src/corelib/statemachine/qstate.cpp
index 62dd4f0284..f641d25a96 100644
--- a/src/corelib/statemachine/qstate.cpp
+++ b/src/corelib/statemachine/qstate.cpp
@@ -146,7 +146,7 @@ QT_BEGIN_NAMESPACE
QStatePrivate::QStatePrivate()
: QAbstractStatePrivate(StandardState),
- errorState(0), initialState(0), childMode(QState::ExclusiveStates),
+ errorState(nullptr), initialState(nullptr), childMode(QState::ExclusiveStates),
childStatesListNeedsRefresh(true), transitionsListNeedsRefresh(true)
{
}
@@ -293,11 +293,11 @@ QAbstractState *QState::errorState() const
void QState::setErrorState(QAbstractState *state)
{
Q_D(QState);
- if (state != 0 && qobject_cast<QStateMachine*>(state)) {
+ if (state != nullptr && qobject_cast<QStateMachine*>(state)) {
qWarning("QStateMachine::setErrorState: root state cannot be error state");
return;
}
- if (state != 0 && (!state->machine() || ((state->machine() != machine()) && !qobject_cast<QStateMachine*>(this)))) {
+ if (state != nullptr && (!state->machine() || ((state->machine() != machine()) && !qobject_cast<QStateMachine*>(this)))) {
qWarning("QState::setErrorState: error state cannot belong "
"to a different state machine");
return;
@@ -360,15 +360,15 @@ QSignalTransition *QState::addTransition(const QObject *sender, const char *sign
{
if (!sender) {
qWarning("QState::addTransition: sender cannot be null");
- return 0;
+ return nullptr;
}
if (!signal) {
qWarning("QState::addTransition: signal cannot be null");
- return 0;
+ return nullptr;
}
if (!target) {
qWarning("QState::addTransition: cannot add transition to null state");
- return 0;
+ return nullptr;
}
int offset = (*signal == '0'+QSIGNAL_CODE) ? 1 : 0;
const QMetaObject *meta = sender->metaObject();
@@ -376,7 +376,7 @@ QSignalTransition *QState::addTransition(const QObject *sender, const char *sign
if (meta->indexOfSignal(QMetaObject::normalizedSignature(signal+offset)) == -1) {
qWarning("QState::addTransition: no such signal %s::%s",
meta->className(), signal+offset);
- return 0;
+ return nullptr;
}
}
QSignalTransition *trans = new QSignalTransition(sender, signal);
@@ -409,7 +409,7 @@ QAbstractTransition *QState::addTransition(QAbstractState *target)
{
if (!target) {
qWarning("QState::addTransition: cannot add transition to null state");
- return 0;
+ return nullptr;
}
UnconditionalTransition *trans = new UnconditionalTransition(target);
addTransition(trans);
@@ -438,7 +438,7 @@ void QState::removeTransition(QAbstractTransition *transition)
QStateMachinePrivate *mach = QStateMachinePrivate::get(d->machine());
if (mach)
mach->unregisterTransition(transition);
- transition->setParent(0);
+ transition->setParent(nullptr);
}
/*!
@@ -544,7 +544,7 @@ bool QState::event(QEvent *e)
d->childStatesListNeedsRefresh = true;
d->transitionsListNeedsRefresh = true;
if ((e->type() == QEvent::ChildRemoved) && (static_cast<QChildEvent *>(e)->child() == d->initialState))
- d->initialState = 0;
+ d->initialState = nullptr;
}
return QAbstractState::event(e);
}
diff --git a/src/corelib/statemachine/qstatemachine.cpp b/src/corelib/statemachine/qstatemachine.cpp
index 44e4e151cb..9d2505ba2e 100644
--- a/src/corelib/statemachine/qstatemachine.cpp
+++ b/src/corelib/statemachine/qstatemachine.cpp
@@ -197,7 +197,7 @@ struct CalculationCache {
bool transitionDomainIsKnown : 1;
TransitionInfo()
- : transitionDomain(0)
+ : transitionDomain(nullptr)
, effectiveTargetStatesIsKnown(false)
, exitSetIsKnown(false)
, transitionDomainIsKnown(false)
@@ -289,9 +289,9 @@ child of a child, etc.) Otherwise returns 'false'.
*/
static inline bool isDescendant(const QAbstractState *state1, const QAbstractState *state2)
{
- Q_ASSERT(state1 != 0);
+ Q_ASSERT(state1 != nullptr);
- for (QAbstractState *it = state1->parentState(); it != 0; it = it->parentState()) {
+ for (QAbstractState *it = state1->parentState(); it != nullptr; it = it->parentState()) {
if (it == state2)
return true;
}
@@ -311,7 +311,7 @@ static bool containsDecendantOf(const QSet<QAbstractState *> &states, const QAbs
static int descendantDepth(const QAbstractState *state, const QAbstractState *ancestor)
{
int depth = 0;
- for (const QAbstractState *it = state; it != 0; it = it->parentState()) {
+ for (const QAbstractState *it = state; it != nullptr; it = it->parentState()) {
if (it == ancestor)
break;
++depth;
@@ -332,7 +332,7 @@ this returns the empty set.
*/
static QVector<QState*> getProperAncestors(const QAbstractState *state, const QAbstractState *upperBound)
{
- Q_ASSERT(state != 0);
+ Q_ASSERT(state != nullptr);
QVector<QState*> result;
result.reserve(16);
for (QState *it = state->parentState(); it && it != upperBound; it = it->parentState()) {
@@ -405,7 +405,7 @@ QStateMachinePrivate::QStateMachinePrivate()
stopProcessingReason = EventQueueEmpty;
error = QStateMachine::NoError;
globalRestorePolicy = QState::DontRestoreProperties;
- signalEventGenerator = 0;
+ signalEventGenerator = nullptr;
#if QT_CONFIG(animation)
animated = true;
#endif
@@ -437,7 +437,7 @@ static QEvent *cloneEvent(QEvent *e)
Q_ASSERT_X(false, "cloneEvent()", "not implemented");
break;
}
- return 0;
+ return nullptr;
}
const QStateMachinePrivate::Handler qt_kernel_statemachine_handler = {
@@ -474,10 +474,10 @@ bool QStateMachinePrivate::transitionStateEntryLessThan(QAbstractTransition *t1,
} else if (isDescendant(s2, s1)) {
return false;
} else {
- Q_ASSERT(s1->machine() != 0);
+ Q_ASSERT(s1->machine() != nullptr);
QStateMachinePrivate *mach = QStateMachinePrivate::get(s1->machine());
QState *lca = mach->findLCA(QList<QAbstractState*>() << s1 << s2);
- Q_ASSERT(lca != 0);
+ Q_ASSERT(lca != nullptr);
int s1Depth = descendantDepth(s1, lca);
int s2Depth = descendantDepth(s2, lca);
if (s1Depth == s2Depth)
@@ -497,10 +497,10 @@ bool QStateMachinePrivate::stateEntryLessThan(QAbstractState *s1, QAbstractState
} else if (isDescendant(s2, s1)) {
return true;
} else {
- Q_ASSERT(s1->machine() != 0);
+ Q_ASSERT(s1->machine() != nullptr);
QStateMachinePrivate *mach = QStateMachinePrivate::get(s1->machine());
QState *lca = mach->findLCA(QList<QAbstractState*>() << s1 << s2);
- Q_ASSERT(lca != 0);
+ Q_ASSERT(lca != nullptr);
return (indexOfDescendant(lca, s1) < indexOfDescendant(lca, s2));
}
}
@@ -515,10 +515,10 @@ bool QStateMachinePrivate::stateExitLessThan(QAbstractState *s1, QAbstractState
} else if (isDescendant(s2, s1)) {
return false;
} else {
- Q_ASSERT(s1->machine() != 0);
+ Q_ASSERT(s1->machine() != nullptr);
QStateMachinePrivate *mach = QStateMachinePrivate::get(s1->machine());
QState *lca = mach->findLCA(QList<QAbstractState*>() << s1 << s2);
- Q_ASSERT(lca != 0);
+ Q_ASSERT(lca != nullptr);
return (indexOfDescendant(lca, s2) < indexOfDescendant(lca, s1));
}
}
@@ -526,7 +526,7 @@ bool QStateMachinePrivate::stateExitLessThan(QAbstractState *s1, QAbstractState
QState *QStateMachinePrivate::findLCA(const QList<QAbstractState*> &states, bool onlyCompound)
{
if (states.isEmpty())
- return 0;
+ return nullptr;
QVector<QState*> ancestors = getProperAncestors(states.at(0), rootState()->parentState());
for (int i = 0; i < ancestors.size(); ++i) {
QState *anc = ancestors.at(i);
@@ -792,7 +792,7 @@ QSet<QAbstractState*> QStateMachinePrivate::computeExitSet_Unordered(QAbstractTr
lst.prepend(t->sourceState());
domain = findLCCA(lst);
- Q_ASSERT(domain != 0);
+ Q_ASSERT(domain != nullptr);
}
for (QAbstractState* s : qAsConst(configuration)) {
@@ -918,7 +918,7 @@ QAbstractState *QStateMachinePrivate::getTransitionDomain(QAbstractTransition *t
Q_ASSERT(cache);
if (effectiveTargetStates.isEmpty())
- return 0;
+ return nullptr;
QAbstractState *domain = nullptr;
if (cache->transitionDomain(t, &domain))
@@ -1234,28 +1234,28 @@ QState *QStateMachinePrivate::toStandardState(QAbstractState *state)
{
if (state && (QAbstractStatePrivate::get(state)->stateType == QAbstractStatePrivate::StandardState))
return static_cast<QState*>(state);
- return 0;
+ return nullptr;
}
const QState *QStateMachinePrivate::toStandardState(const QAbstractState *state)
{
if (state && (QAbstractStatePrivate::get(state)->stateType == QAbstractStatePrivate::StandardState))
return static_cast<const QState*>(state);
- return 0;
+ return nullptr;
}
QFinalState *QStateMachinePrivate::toFinalState(QAbstractState *state)
{
if (state && (QAbstractStatePrivate::get(state)->stateType == QAbstractStatePrivate::FinalState))
return static_cast<QFinalState*>(state);
- return 0;
+ return nullptr;
}
QHistoryState *QStateMachinePrivate::toHistoryState(QAbstractState *state)
{
if (state && (QAbstractStatePrivate::get(state)->stateType == QAbstractStatePrivate::HistoryState))
return static_cast<QHistoryState*>(state);
- return 0;
+ return nullptr;
}
bool QStateMachinePrivate::isInFinalState(QAbstractState* s) const
@@ -1455,13 +1455,13 @@ QHash<QAbstractState*, QVector<QPropertyAssignment> > QStateMachinePrivate::comp
QAbstractState *QStateMachinePrivate::findErrorState(QAbstractState *context)
{
// Find error state recursively in parent hierarchy if not set explicitly for context state
- QAbstractState *errorState = 0;
- if (context != 0) {
+ QAbstractState *errorState = nullptr;
+ if (context != nullptr) {
QState *s = toStandardState(context);
- if (s != 0)
+ if (s != nullptr)
errorState = s->errorState();
- if (errorState == 0)
+ if (errorState == nullptr)
errorState = findErrorState(context->parentState());
}
@@ -1475,21 +1475,21 @@ void QStateMachinePrivate::setError(QStateMachine::Error errorCode, QAbstractSta
error = errorCode;
switch (errorCode) {
case QStateMachine::NoInitialStateError:
- Q_ASSERT(currentContext != 0);
+ Q_ASSERT(currentContext != nullptr);
errorString = QStateMachine::tr("Missing initial state in compound state '%1'")
.arg(currentContext->objectName());
break;
case QStateMachine::NoDefaultStateInHistoryStateError:
- Q_ASSERT(currentContext != 0);
+ Q_ASSERT(currentContext != nullptr);
errorString = QStateMachine::tr("Missing default state in history state '%1'")
.arg(currentContext->objectName());
break;
case QStateMachine::NoCommonAncestorForTransitionError:
- Q_ASSERT(currentContext != 0);
+ Q_ASSERT(currentContext != nullptr);
errorString = QStateMachine::tr("No common ancestor for targets and source of transition from state '%1'")
.arg(currentContext->objectName());
@@ -1513,11 +1513,11 @@ void QStateMachinePrivate::setError(QStateMachine::Error errorCode, QAbstractSta
// Avoid infinite loop if the error state itself has an error
if (currentContext == currentErrorState)
- currentErrorState = 0;
+ currentErrorState = nullptr;
Q_ASSERT(currentErrorState != rootState());
- if (currentErrorState != 0) {
+ if (currentErrorState != nullptr) {
#ifdef QSTATEMACHINE_DEBUG
qDebug() << q << ": entering error state" << currentErrorState << "from" << currentContext;
#endif
@@ -1549,7 +1549,7 @@ QStateMachinePrivate::initializeAnimation(QAbstractAnimation *abstractAnimation,
}
} else {
QPropertyAnimation *animation = qobject_cast<QPropertyAnimation *>(abstractAnimation);
- if (animation != 0
+ if (animation != nullptr
&& prop.object == animation->targetObject()
&& prop.propertyName == animation->propertyName()) {
@@ -1568,7 +1568,7 @@ void QStateMachinePrivate::_q_animationFinished()
{
Q_Q(QStateMachine);
QAbstractAnimation *anim = qobject_cast<QAbstractAnimation*>(q->sender());
- Q_ASSERT(anim != 0);
+ Q_ASSERT(anim != nullptr);
QObject::disconnect(anim, SIGNAL(finished()), q, SLOT(_q_animationFinished()));
if (resetAnimationEndValues.contains(anim)) {
qobject_cast<QVariantAnimation*>(anim)->setEndValue(QVariant()); // ### generalize
@@ -1576,7 +1576,7 @@ void QStateMachinePrivate::_q_animationFinished()
}
QAbstractState *state = stateForAnimation.take(anim);
- Q_ASSERT(state != 0);
+ Q_ASSERT(state != nullptr);
#ifndef QT_NO_PROPERTIES
// Set the final property value.
@@ -1638,7 +1638,7 @@ void QStateMachinePrivate::terminateActiveAnimations(QAbstractState *state,
resetAnimationEndValues.remove(anim);
}
QPropertyAssignment assn = propertyForAnimation.take(anim);
- Q_ASSERT(assn.object != 0);
+ Q_ASSERT(assn.object != nullptr);
// If there is no property assignment that sets this property,
// set the property to its target value.
bool found = false;
@@ -1745,7 +1745,7 @@ QAbstractTransition *QStateMachinePrivate::createInitialTransition() const
};
QState *root = rootState();
- Q_ASSERT(root != 0);
+ Q_ASSERT(root != nullptr);
QList<QAbstractState *> targets;
switch (root->childMode()) {
case QState::ExclusiveStates:
@@ -1891,26 +1891,26 @@ void QStateMachinePrivate::_q_process()
enabledTransitions = selectTransitions(e, &calculationCache);
if (enabledTransitions.isEmpty()) {
delete e;
- e = 0;
+ e = nullptr;
}
- while (enabledTransitions.isEmpty() && ((e = dequeueInternalEvent()) != 0)) {
+ while (enabledTransitions.isEmpty() && ((e = dequeueInternalEvent()) != nullptr)) {
#ifdef QSTATEMACHINE_DEBUG
qDebug() << q << ": dequeued internal event" << e << "of type" << e->type();
#endif
enabledTransitions = selectTransitions(e, &calculationCache);
if (enabledTransitions.isEmpty()) {
delete e;
- e = 0;
+ e = nullptr;
}
}
- while (enabledTransitions.isEmpty() && ((e = dequeueExternalEvent()) != 0)) {
+ while (enabledTransitions.isEmpty() && ((e = dequeueExternalEvent()) != nullptr)) {
#ifdef QSTATEMACHINE_DEBUG
qDebug() << q << ": dequeued external event" << e << "of type" << e->type();
#endif
enabledTransitions = selectTransitions(e, &calculationCache);
if (enabledTransitions.isEmpty()) {
delete e;
- e = 0;
+ e = nullptr;
}
}
if (enabledTransitions.isEmpty()) {
@@ -2009,7 +2009,7 @@ QEvent *QStateMachinePrivate::dequeueInternalEvent()
{
QMutexLocker locker(&internalEventMutex);
if (internalEventQueue.isEmpty())
- return 0;
+ return nullptr;
return internalEventQueue.takeFirst();
}
@@ -2017,7 +2017,7 @@ QEvent *QStateMachinePrivate::dequeueExternalEvent()
{
QMutexLocker locker(&externalEventMutex);
if (externalEventQueue.isEmpty())
- return 0;
+ return nullptr;
return externalEventQueue.takeFirst();
}
@@ -2175,15 +2175,15 @@ void QStateMachinePrivate::goToState(QAbstractState *targetState)
return;
Q_ASSERT(state == Running);
- QState *sourceState = 0;
+ QState *sourceState = nullptr;
QSet<QAbstractState*>::const_iterator it;
for (it = configuration.constBegin(); it != configuration.constEnd(); ++it) {
sourceState = toStandardState(*it);
- if (sourceState != 0)
+ if (sourceState != nullptr)
break;
}
- Q_ASSERT(sourceState != 0);
+ Q_ASSERT(sourceState != nullptr);
// Reuse previous GoToStateTransition in case of several calls to
// goToState() in a row.
GoToStateTransition *trans = sourceState->findChild<GoToStateTransition*>();
@@ -2327,7 +2327,7 @@ void QStateMachinePrivate::unregisterSignalTransition(QSignalTransition *transit
Q_ASSERT(connectedSignalIndexes.size() > signalIndex);
Q_ASSERT(connectedSignalIndexes.at(signalIndex) != 0);
if (--connectedSignalIndexes[signalIndex] == 0) {
- Q_ASSERT(signalEventGenerator != 0);
+ Q_ASSERT(signalEventGenerator != nullptr);
static const int generatorMethodOffset = QSignalEventGenerator::staticMetaObject.methodOffset();
QMetaObject::disconnect(sender, signalIndex, signalEventGenerator, generatorMethodOffset);
int sum = 0;
@@ -2454,7 +2454,7 @@ void QStateMachinePrivate::handleTransitionSignal(QObject *sender, int signalInd
Constructs a new state machine with the given \a parent.
*/
QStateMachine::QStateMachine(QObject *parent)
- : QState(*new QStateMachinePrivate, /*parentState=*/0)
+ : QState(*new QStateMachinePrivate, /*parentState=*/nullptr)
{
// Can't pass the parent to the QState constructor, as it expects a QState
// But this works as expected regardless of whether parent is a QState or not
@@ -2472,7 +2472,7 @@ QStateMachine::QStateMachine(QObject *parent)
state machine is invalid, and might work incorrectly.
*/
QStateMachine::QStateMachine(QState::ChildMode childMode, QObject *parent)
- : QState(*new QStateMachinePrivate, /*parentState=*/0)
+ : QState(*new QStateMachinePrivate, /*parentState=*/nullptr)
{
Q_D(QStateMachine);
d->childMode = childMode;
@@ -2495,7 +2495,7 @@ QStateMachine::QStateMachine(QState::ChildMode childMode, QObject *parent)
\internal
*/
QStateMachine::QStateMachine(QStateMachinePrivate &dd, QObject *parent)
- : QState(dd, /*parentState=*/0)
+ : QState(dd, /*parentState=*/nullptr)
{
setParent(parent);
}
@@ -2637,7 +2637,7 @@ void QStateMachine::removeState(QAbstractState *state)
state, QAbstractStatePrivate::get(state)->machine(), this);
return;
}
- state->setParent(0);
+ state->setParent(nullptr);
}
bool QStateMachine::isRunning() const
@@ -2661,7 +2661,7 @@ void QStateMachine::start()
{
Q_D(QStateMachine);
- if ((childMode() == QState::ExclusiveStates) && (initialState() == 0)) {
+ if ((childMode() == QState::ExclusiveStates) && (initialState() == nullptr)) {
qWarning("QStateMachine::start: No initial state set for machine. Refusing to start.");
return;
}
@@ -2897,7 +2897,7 @@ bool QStateMachine::event(QEvent *e)
d->delayedEventsMutex.lock();
int id = d->timerIdToDelayedEventId.take(tid);
QStateMachinePrivate::DelayedEvent ee = d->delayedEvents.take(id);
- if (ee.event != 0) {
+ if (ee.event != nullptr) {
Q_ASSERT(ee.timerId == tid);
killTimer(tid);
d->delayedEventIdFreeList.release(id);
@@ -3103,7 +3103,7 @@ void QSignalEventGenerator::qt_static_metacall(QObject *_o, QMetaObject::Call _c
const QMetaObject QSignalEventGenerator::staticMetaObject = {
{ &QObject::staticMetaObject, qt_meta_stringdata_QSignalEventGenerator.data,
- qt_meta_data_QSignalEventGenerator, qt_static_metacall, 0, 0 }
+ qt_meta_data_QSignalEventGenerator, qt_static_metacall, nullptr, nullptr }
};
const QMetaObject *QSignalEventGenerator::metaObject() const
@@ -3113,7 +3113,7 @@ const QMetaObject *QSignalEventGenerator::metaObject() const
void *QSignalEventGenerator::qt_metacast(const char *_clname)
{
- if (!_clname) return 0;
+ if (!_clname) return nullptr;
if (!strcmp(_clname, qt_meta_stringdata_QSignalEventGenerator.stringdata))
return static_cast<void*>(const_cast< QSignalEventGenerator*>(this));
return QObject::qt_metacast(_clname);
diff --git a/src/corelib/text/qbytearray.cpp b/src/corelib/text/qbytearray.cpp
index e89caabdb0..94d22e288e 100644
--- a/src/corelib/text/qbytearray.cpp
+++ b/src/corelib/text/qbytearray.cpp
@@ -2,6 +2,7 @@
**
** Copyright (C) 2019 The Qt Company Ltd.
** Copyright (C) 2016 Intel Corporation.
+** Copyright (C) 2019 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
** Contact: https://www.qt.io/licensing/
**
** This file is part of the QtCore module of the Qt Toolkit.
@@ -41,6 +42,7 @@
#include "qbytearray.h"
#include "qbytearraymatcher.h"
#include "private/qtools_p.h"
+#include "qhashfunctions.h"
#include "qstring.h"
#include "qlist.h"
#include "qlocale.h"
@@ -1002,10 +1004,20 @@ QByteArray qUncompress(const uchar* data, int nbytes)
four.
\value OmitTrailingEquals Omits adding the padding equal signs at the end of the encoded
data.
-
- QByteArray::fromBase64() ignores the KeepTrailingEquals and
- OmitTrailingEquals options and will not flag errors in case they are
- missing or if there are too many of them.
+ \value IgnoreBase64DecodingErrors When decoding Base64-encoded data, ignores errors
+ in the input; invalid characters are simply skipped.
+ This enum value has been added in Qt 5.15.
+ \value AbortOnBase64DecodingErrors When decoding Base64-encoded data, stops at the first
+ decoding error.
+ This enum value has been added in Qt 5.15.
+
+ QByteArray::fromBase64Encoding() and QByteArray::fromBase64()
+ ignore the KeepTrailingEquals and OmitTrailingEquals options. If
+ the IgnoreBase64DecodingErrors option is specified, they will not
+ flag errors in case trailing equal signs are missing or if there
+ are too many of them. If instead the AbortOnBase64DecodingErrors is
+ specified, then the input must either have no padding or have the
+ correct amount of equal signs.
*/
/*! \fn QByteArray::iterator QByteArray::begin()
@@ -1775,12 +1787,7 @@ void QByteArray::resize(int size)
return;
}
- if (size == 0 && !d->capacityReserved) {
- Data *x = Data::allocate(0);
- if (!d->ref.deref())
- Data::deallocate(d);
- d = x;
- } else if (d->size == 0 && d->ref.isStatic()) {
+ if (d->size == 0 && d->ref.isStatic()) {
//
// Optimize the idiom:
// QByteArray a;
@@ -1795,9 +1802,7 @@ void QByteArray::resize(int size)
x->data()[size] = '\0';
d = x;
} else {
- if (d->ref.isShared() || uint(size) + 1u > d->alloc
- || (!d->capacityReserved && size < d->size
- && uint(size) + 1u < uint(d->alloc >> 1)))
+ if (d->ref.isShared() || uint(size) + 1u > d->alloc)
reallocData(uint(size) + 1u, d->detachFlags() | Data::Grow);
if (d->alloc) {
d->size = size;
@@ -4520,7 +4525,140 @@ QByteArray &QByteArray::setRawData(const char *data, uint size)
return *this;
}
+namespace {
+struct fromBase64_helper_result {
+ qsizetype decodedLength;
+ QByteArray::Base64DecodingStatus status;
+};
+
+fromBase64_helper_result fromBase64_helper(const char *input, qsizetype inputSize,
+ char *output /* may alias input */,
+ QByteArray::Base64Options options)
+{
+ fromBase64_helper_result result{ 0, QByteArray::Base64DecodingStatus::Ok };
+
+ unsigned int buf = 0;
+ int nbits = 0;
+
+ qsizetype offset = 0;
+ for (qsizetype i = 0; i < inputSize; ++i) {
+ int ch = input[i];
+ int d;
+
+ if (ch >= 'A' && ch <= 'Z') {
+ d = ch - 'A';
+ } else if (ch >= 'a' && ch <= 'z') {
+ d = ch - 'a' + 26;
+ } else if (ch >= '0' && ch <= '9') {
+ d = ch - '0' + 52;
+ } else if (ch == '+' && (options & QByteArray::Base64UrlEncoding) == 0) {
+ d = 62;
+ } else if (ch == '-' && (options & QByteArray::Base64UrlEncoding) != 0) {
+ d = 62;
+ } else if (ch == '/' && (options & QByteArray::Base64UrlEncoding) == 0) {
+ d = 63;
+ } else if (ch == '_' && (options & QByteArray::Base64UrlEncoding) != 0) {
+ d = 63;
+ } else {
+ if (options & QByteArray::AbortOnBase64DecodingErrors) {
+ if (ch == '=') {
+ // can have 1 or 2 '=' signs, in both cases padding base64Size to
+ // a multiple of 4. Any other case is illegal.
+ if ((inputSize % 4) != 0) {
+ result.status = QByteArray::Base64DecodingStatus::IllegalInputLength;
+ return result;
+ } else if ((i == inputSize - 1) ||
+ (i == inputSize - 2 && input[++i] == '=')) {
+ d = -1; // ... and exit the loop, normally
+ } else {
+ result.status = QByteArray::Base64DecodingStatus::IllegalPadding;
+ return result;
+ }
+ } else {
+ result.status = QByteArray::Base64DecodingStatus::IllegalCharacter;
+ return result;
+ }
+ } else {
+ d = -1;
+ }
+ }
+
+ if (d != -1) {
+ buf = (buf << 6) | d;
+ nbits += 6;
+ if (nbits >= 8) {
+ nbits -= 8;
+ Q_ASSERT(offset < i);
+ output[offset++] = buf >> nbits;
+ buf &= (1 << nbits) - 1;
+ }
+ }
+ }
+
+ result.decodedLength = offset;
+ return result;
+}
+} // anonymous namespace
+
+/*!
+ \fn QByteArray::FromBase64Result QByteArray::fromBase64Encoding(QByteArray &&base64, Base64Options options)
+ \fn QByteArray::FromBase64Result QByteArray::fromBase64Encoding(const QByteArray &base64, Base64Options options)
+ \since 5.15
+ \overload
+
+ Decodes the Base64 array \a base64, using the options
+ defined by \a options. If \a options contains \c{IgnoreBase64DecodingErrors}
+ (the default), the input is not checked for validity; invalid
+ characters in the input are skipped, enabling the decoding process to
+ continue with subsequent characters. If \a options contains
+ \c{AbortOnBase64DecodingErrors}, then decoding will stop at the first
+ invalid character.
+
+ For example:
+
+ \snippet code/src_corelib_tools_qbytearray.cpp 44ter
+
+ The algorithm used to decode Base64-encoded data is defined in \l{RFC 4648}.
+
+ Returns a QByteArrayFromBase64Result object, containing the decoded
+ data and a flag telling whether decoding was successful. If the
+ \c{AbortOnBase64DecodingErrors} option was passed and the input
+ data was invalid, it is unspecified what the decoded data contains.
+
+ \sa toBase64()
+*/
+QByteArray::FromBase64Result QByteArray::fromBase64Encoding(QByteArray &&base64, Base64Options options)
+{
+ // try to avoid a detach when calling data(), as it would over-allocate
+ // (we need less space when decoding than the one required by the full copy)
+ if (base64.isDetached()) {
+ const auto base64result = fromBase64_helper(base64.data(),
+ base64.size(),
+ base64.data(), // in-place
+ options);
+ base64.truncate(int(base64result.decodedLength));
+ return { std::move(base64), base64result.status };
+ }
+
+ return fromBase64Encoding(base64, options);
+}
+
+
+QByteArray::FromBase64Result QByteArray::fromBase64Encoding(const QByteArray &base64, Base64Options options)
+{
+ const auto base64Size = base64.size();
+ QByteArray result((base64Size * 3) / 4, Qt::Uninitialized);
+ const auto base64result = fromBase64_helper(base64.data(),
+ base64Size,
+ const_cast<char *>(result.constData()),
+ options);
+ result.truncate(int(base64result.decodedLength));
+ return { std::move(result), base64result.status };
+}
+
/*!
+ \overload
+
Returns a decoded copy of the Base64 array \a base64. Input is not checked
for validity; invalid characters in the input are skipped, enabling the
decoding process to continue with subsequent characters.
@@ -4531,21 +4669,28 @@ QByteArray &QByteArray::setRawData(const char *data, uint size)
The algorithm used to decode Base64-encoded data is defined in \l{RFC 4648}.
- \sa toBase64()
+ \note The fromBase64Encoding() function is recommended in new code.
+
+ \sa toBase64(), fromBase64Encoding()
*/
QByteArray QByteArray::fromBase64(const QByteArray &base64)
{
- return fromBase64(base64, Base64Encoding);
+ if (auto result = fromBase64Encoding(base64, Base64Encoding))
+ return std::move(result.decoded);
+ return QByteArray();
}
/*!
\since 5.2
\overload
- Returns a decoded copy of the Base64 array \a base64, using the alphabet
- defined by \a options. Input is not checked for validity; invalid
+ Returns a decoded copy of the Base64 array \a base64, using the options
+ defined by \a options. If \a options contains \c{IgnoreBase64DecodingErrors}
+ (the default), the input is not checked for validity; invalid
characters in the input are skipped, enabling the decoding process to
- continue with subsequent characters.
+ continue with subsequent characters. If \a options contains
+ \c{AbortOnBase64DecodingErrors}, then decoding will stop at the first
+ invalid character.
For example:
@@ -4553,49 +4698,18 @@ QByteArray QByteArray::fromBase64(const QByteArray &base64)
The algorithm used to decode Base64-encoded data is defined in \l{RFC 4648}.
- \sa toBase64()
+ Returns the decoded data, or, if the \c{AbortOnBase64DecodingErrors}
+ option was passed and the input data was invalid, an empty byte array.
+
+ \note The fromBase64Encoding() function is recommended in new code.
+
+ \sa toBase64(), fromBase64Encoding()
*/
QByteArray QByteArray::fromBase64(const QByteArray &base64, Base64Options options)
{
- unsigned int buf = 0;
- int nbits = 0;
- QByteArray tmp((base64.size() * 3) / 4, Qt::Uninitialized);
-
- int offset = 0;
- for (int i = 0; i < base64.size(); ++i) {
- int ch = base64.at(i);
- int d;
-
- if (ch >= 'A' && ch <= 'Z')
- d = ch - 'A';
- else if (ch >= 'a' && ch <= 'z')
- d = ch - 'a' + 26;
- else if (ch >= '0' && ch <= '9')
- d = ch - '0' + 52;
- else if (ch == '+' && (options & Base64UrlEncoding) == 0)
- d = 62;
- else if (ch == '-' && (options & Base64UrlEncoding) != 0)
- d = 62;
- else if (ch == '/' && (options & Base64UrlEncoding) == 0)
- d = 63;
- else if (ch == '_' && (options & Base64UrlEncoding) != 0)
- d = 63;
- else
- d = -1;
-
- if (d != -1) {
- buf = (buf << 6) | d;
- nbits += 6;
- if (nbits >= 8) {
- nbits -= 8;
- tmp[offset++] = buf >> nbits;
- buf &= (1 << nbits) - 1;
- }
- }
- }
-
- tmp.truncate(offset);
- return tmp;
+ if (auto result = fromBase64Encoding(base64, options))
+ return std::move(result.decoded);
+ return QByteArray();
}
/*!
@@ -5015,5 +5129,86 @@ void warn(WarningType w, EmittingClass c)
} // namespace DeprecatedRefClassBehavior
} // namespace QtPrivate
+/*!
+ \class QByteArray::FromBase64Result
+ \inmodule QtCore
+ \ingroup tools
+ \since 5.15
+
+ \brief The QByteArray::FromBase64Result class holds the result of
+ a call to QByteArray::fromBase64Encoding.
+
+ Objects of this class can be used to check whether the conversion
+ was successful, and if so, retrieve the decoded QByteArray. The
+ conversion operators defined for QByteArray::FromBase64Result make
+ its usage straightforward:
+
+ \snippet code/src_corelib_tools_qbytearray.cpp 44ter
+
+ In alternative, it is possible to access the conversion status
+ and the decoded data directly:
+
+ \snippet code/src_corelib_tools_qbytearray.cpp 44quater
+
+ \sa QByteArray::fromBase64
+*/
+
+/*!
+ \variable QByteArray::FromBase64Result::decoded
+
+ Contains the decoded byte array.
+*/
+
+/*!
+ \variable QByteArray::FromBase64Result::decodingStatus
+
+ Contains whether the decoding was successful, expressed as a value
+ of type QByteArray::Base64DecodingStatus.
+*/
+
+/*!
+ \fn QByteArray::FromBase64Result::operator bool() const
+
+ Returns whether the decoding was successful. This is equivalent
+ to checking whether the \c{decodingStatus} member is equal to
+ QByteArray::Base64DecodingStatus::Ok.
+*/
+
+/*!
+ \fn QByteArray::FromBase64Result::operator QByteArray() const
+
+ Returns the decoded byte array.
+*/
+
+/*!
+ \fn bool operator==(const QByteArray::FromBase64Result &lhs, const QByteArray::FromBase64Result &rhs) noexcept
+ \relates QByteArray::FromBase64Result
+
+ Compares \a lhs and \a rhs for equality. \a lhs and \a rhs are equal
+ if and only if they contain the same decoding status and, if the
+ status is QByteArray::Base64DecodingStatus::Ok, if and only if
+ they contain the same decoded data.
+*/
+
+/*!
+ \fn bool operator!=(const QByteArray::FromBase64Result &lhs, const QByteArray::FromBase64Result &rhs) noexcept
+ \relates QByteArray::FromBase64Result
+
+ Compares \a lhs and \a rhs for inequality.
+*/
+
+/*!
+ \relates QByteArray::FromBase64Result
+
+ Returns the hash value for \a key, using
+ \a seed to seed the calculation.
+*/
+uint qHash(const QByteArray::FromBase64Result &key, uint seed) noexcept
+{
+ QtPrivate::QHashCombine hash;
+ seed = hash(seed, key.decoded);
+ seed = hash(seed, static_cast<int>(key.decodingStatus));
+ return seed;
+}
QT_END_NAMESPACE
diff --git a/src/corelib/text/qbytearray.h b/src/corelib/text/qbytearray.h
index 5d8ccbfb1a..36cf580cd9 100644
--- a/src/corelib/text/qbytearray.h
+++ b/src/corelib/text/qbytearray.h
@@ -164,10 +164,20 @@ public:
Base64UrlEncoding = 1,
KeepTrailingEquals = 0,
- OmitTrailingEquals = 2
+ OmitTrailingEquals = 2,
+
+ IgnoreBase64DecodingErrors = 0,
+ AbortOnBase64DecodingErrors = 4,
};
Q_DECLARE_FLAGS(Base64Options, Base64Option)
+ enum class Base64DecodingStatus {
+ Ok,
+ IllegalInputLength,
+ IllegalCharacter,
+ IllegalPadding,
+ };
+
inline QByteArray() noexcept;
QByteArray(const char *, int size = -1);
QByteArray(int size, char c);
@@ -379,6 +389,10 @@ public:
Q_REQUIRED_RESULT static QByteArray number(qulonglong, int base = 10);
Q_REQUIRED_RESULT static QByteArray number(double, char f = 'g', int prec = 6);
Q_REQUIRED_RESULT static QByteArray fromRawData(const char *, int size);
+
+ class FromBase64Result;
+ Q_REQUIRED_RESULT static FromBase64Result fromBase64Encoding(QByteArray &&base64, Base64Options options = Base64Encoding);
+ Q_REQUIRED_RESULT static FromBase64Result fromBase64Encoding(const QByteArray &base64, Base64Options options = Base64Encoding);
Q_REQUIRED_RESULT static QByteArray fromBase64(const QByteArray &base64, Base64Options options);
Q_REQUIRED_RESULT static QByteArray fromBase64(const QByteArray &base64); // ### Qt6 merge with previous
Q_REQUIRED_RESULT static QByteArray fromHex(const QByteArray &hexEncoded);
@@ -749,6 +763,50 @@ inline QByteArray qUncompress(const QByteArray& data)
Q_DECLARE_SHARED(QByteArray)
+class QByteArray::FromBase64Result
+{
+public:
+ QByteArray decoded;
+ QByteArray::Base64DecodingStatus decodingStatus;
+
+ void swap(QByteArray::FromBase64Result &other) noexcept
+ {
+ qSwap(decoded, other.decoded);
+ qSwap(decodingStatus, other.decodingStatus);
+ }
+
+ explicit operator bool() const noexcept { return decodingStatus == QByteArray::Base64DecodingStatus::Ok; }
+
+#if defined(Q_COMPILER_REF_QUALIFIERS) && !defined(Q_QDOC)
+ QByteArray &operator*() & noexcept { return decoded; }
+ const QByteArray &operator*() const & noexcept { return decoded; }
+ QByteArray &&operator*() && noexcept { return std::move(decoded); }
+#else
+ QByteArray &operator*() noexcept { return decoded; }
+ const QByteArray &operator*() const noexcept { return decoded; }
+#endif
+};
+
+Q_DECLARE_SHARED(QByteArray::FromBase64Result)
+
+inline bool operator==(const QByteArray::FromBase64Result &lhs, const QByteArray::FromBase64Result &rhs) noexcept
+{
+ if (lhs.decodingStatus != rhs.decodingStatus)
+ return false;
+
+ if (lhs.decodingStatus == QByteArray::Base64DecodingStatus::Ok && lhs.decoded != rhs.decoded)
+ return false;
+
+ return true;
+}
+
+inline bool operator!=(const QByteArray::FromBase64Result &lhs, const QByteArray::FromBase64Result &rhs) noexcept
+{
+ return !operator==(lhs, rhs);
+}
+
+Q_CORE_EXPORT Q_DECL_PURE_FUNCTION uint qHash(const QByteArray::FromBase64Result &key, uint seed = 0) noexcept;
+
QT_END_NAMESPACE
#endif // QBYTEARRAY_H
diff --git a/src/corelib/text/qchar.cpp b/src/corelib/text/qchar.cpp
index 9b03a93278..847b4f0b08 100644
--- a/src/corelib/text/qchar.cpp
+++ b/src/corelib/text/qchar.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2019 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the QtCore module of the Qt Toolkit.
@@ -189,6 +189,9 @@ QT_BEGIN_NAMESPACE
\value Unicode_8_0 Version 8.0 Since Qt 5.6
\value Unicode_9_0 Version 9.0 Since Qt 5.11
\value Unicode_10_0 Version 10.0 Since Qt 5.11
+ \value Unicode_11_0 Version 11.0 Since Qt 5.15
+ \value Unicode_12_0 Version 12.0 Since Qt 5.15
+ \value Unicode_12_1 Version 12.1 Since Qt 5.15
\value Unicode_Unassigned The value is not assigned to any character
in version 8.0 of Unicode.
@@ -288,145 +291,156 @@ QT_BEGIN_NAMESPACE
\value Script_Common For characters that may be used with multiple scripts
and that do not inherit their script from the preceding characters.
- \value Script_Latin
- \value Script_Greek
- \value Script_Cyrillic
- \value Script_Armenian
- \value Script_Hebrew
+ \value Script_Adlam Since Qt 5.11
+ \value Script_Ahom Since Qt 5.6
+ \value Script_AnatolianHieroglyphs Since Qt 5.6
\value Script_Arabic
- \value Script_Syriac
- \value Script_Thaana
- \value Script_Devanagari
+ \value Script_Armenian
+ \value Script_Avestan
+ \value Script_Balinese
+ \value Script_Bamum
+ \value Script_BassaVah Since Qt 5.5
+ \value Script_Batak
\value Script_Bengali
- \value Script_Gurmukhi
- \value Script_Gujarati
- \value Script_Oriya
- \value Script_Tamil
- \value Script_Telugu
- \value Script_Kannada
- \value Script_Malayalam
- \value Script_Sinhala
- \value Script_Thai
- \value Script_Lao
- \value Script_Tibetan
- \value Script_Myanmar
- \value Script_Georgian
- \value Script_Hangul
- \value Script_Ethiopic
- \value Script_Cherokee
- \value Script_CanadianAboriginal
- \value Script_Ogham
- \value Script_Runic
- \value Script_Khmer
- \value Script_Mongolian
- \value Script_Hiragana
- \value Script_Katakana
+ \value Script_Bhaiksuki Since Qt 5.11
\value Script_Bopomofo
- \value Script_Han
- \value Script_Yi
- \value Script_OldItalic
- \value Script_Gothic
- \value Script_Deseret
- \value Script_Tagalog
- \value Script_Hanunoo
- \value Script_Buhid
- \value Script_Tagbanwa
- \value Script_Coptic
- \value Script_Limbu
- \value Script_TaiLe
- \value Script_LinearB
- \value Script_Ugaritic
- \value Script_Shavian
- \value Script_Osmanya
- \value Script_Cypriot
+ \value Script_Brahmi
\value Script_Braille
\value Script_Buginese
- \value Script_NewTaiLue
- \value Script_Glagolitic
- \value Script_Tifinagh
- \value Script_SylotiNagri
- \value Script_OldPersian
- \value Script_Kharoshthi
- \value Script_Balinese
- \value Script_Cuneiform
- \value Script_Phoenician
- \value Script_PhagsPa
- \value Script_Nko
- \value Script_Sundanese
- \value Script_Lepcha
- \value Script_OlChiki
- \value Script_Vai
- \value Script_Saurashtra
- \value Script_KayahLi
- \value Script_Rejang
- \value Script_Lycian
+ \value Script_Buhid
+ \value Script_CanadianAboriginal
\value Script_Carian
- \value Script_Lydian
+ \value Script_CaucasianAlbanian Since Qt 5.5
+ \value Script_Chakma
\value Script_Cham
- \value Script_TaiTham
- \value Script_TaiViet
- \value Script_Avestan
+ \value Script_Cherokee
+ \value Script_Coptic
+ \value Script_Cuneiform
+ \value Script_Cypriot
+ \value Script_Cyrillic
+ \value Script_Deseret
+ \value Script_Devanagari
+ \value Script_Dogra Since Qt 5.15
+ \value Script_Duployan Since Qt 5.5
\value Script_EgyptianHieroglyphs
- \value Script_Samaritan
- \value Script_Lisu
- \value Script_Bamum
- \value Script_Javanese
- \value Script_MeeteiMayek
+ \value Script_Elbasan Since Qt 5.5
+ \value Script_Elymaic Since Qt 5.15
+ \value Script_Ethiopic
+ \value Script_Georgian
+ \value Script_Glagolitic
+ \value Script_Gothic
+ \value Script_Grantha Since Qt 5.5
+ \value Script_Greek
+ \value Script_Gujarati
+ \value Script_GunjalaGondi Since Qt 5.15
+ \value Script_Gurmukhi
+ \value Script_Han
+ \value Script_Hangul
+ \value Script_HanifiRohingya Since Qt 5.15
+ \value Script_Hanunoo
+ \value Script_Hatran Since Qt 5.6
+ \value Script_Hebrew
+ \value Script_Hiragana
\value Script_ImperialAramaic
- \value Script_OldSouthArabian
- \value Script_InscriptionalParthian
\value Script_InscriptionalPahlavi
- \value Script_OldTurkic
+ \value Script_InscriptionalParthian
+ \value Script_Javanese
\value Script_Kaithi
- \value Script_Batak
- \value Script_Brahmi
+ \value Script_Kannada
+ \value Script_Katakana
+ \value Script_KayahLi
+ \value Script_Kharoshthi
+ \value Script_Khmer
+ \value Script_Khojki Since Qt 5.5
+ \value Script_Khudawadi Since Qt 5.5
+ \value Script_Lao
+ \value Script_Latin
+ \value Script_Lepcha
+ \value Script_Limbu
+ \value Script_LinearA Since Qt 5.5
+ \value Script_LinearB
+ \value Script_Lisu
+ \value Script_Lycian
+ \value Script_Lydian
+ \value Script_Mahajani Since Qt 5.5
+ \value Script_Makasar Since Qt 5.15
+ \value Script_Malayalam
\value Script_Mandaic
- \value Script_Chakma
+ \value Script_Manichaean Since Qt 5.5
+ \value Script_Marchen Since Qt 5.11
+ \value Script_MasaramGondi Since Qt 5.11
+ \value Script_Medefaidrin Since Qt 5.15
+ \value Script_MeeteiMayek
+ \value Script_MendeKikakui Since Qt 5.5
\value Script_MeroiticCursive
\value Script_MeroiticHieroglyphs
\value Script_Miao
+ \value Script_Modi Since Qt 5.5
+ \value Script_Mongolian
+ \value Script_Mro Since Qt 5.5
+ \value Script_Multani Since Qt 5.6
+ \value Script_Myanmar
+ \value Script_Nabataean Since Qt 5.5
+ \value Script_Nandinagari Since Qt 5.15
+ \value Script_Newa Since Qt 5.11
+ \value Script_NewTaiLue
+ \value Script_Nko
+ \value Script_Nushu Since Qt 5.11
+ \value Script_NyiakengPuachueHmong Since Qt 5.15
+ \value Script_Ogham
+ \value Script_OlChiki
+ \value Script_OldHungarian Since Qt 5.6
+ \value Script_OldItalic
+ \value Script_OldNorthArabian Since Qt 5.5
+ \value Script_OldPermic Since Qt 5.5
+ \value Script_OldPersian
+ \value Script_OldSogdian Since Qt 5.15
+ \value Script_OldSouthArabian
+ \value Script_OldTurkic
+ \value Script_Oriya
+ \value Script_Osage Since Qt 5.11
+ \value Script_Osmanya
+ \value Script_PahawhHmong Since Qt 5.5
+ \value Script_Palmyrene Since Qt 5.5
+ \value Script_PauCinHau Since Qt 5.5
+ \value Script_PhagsPa
+ \value Script_Phoenician
+ \value Script_PsalterPahlavi Since Qt 5.5
+ \value Script_Rejang
+ \value Script_Runic
+ \value Script_Samaritan
+ \value Script_Saurashtra
\value Script_Sharada
+ \value Script_Shavian
+ \value Script_Siddham Since Qt 5.5
+ \value Script_SignWriting Since Qt 5.6
+ \value Script_Sinhala
+ \value Script_Sogdian Since Qt 5.15
\value Script_SoraSompeng
+ \value Script_Soyombo Since Qt 5.11
+ \value Script_Sundaneseo
+ \value Script_SylotiNagri
+ \value Script_Syriac
+ \value Script_Tagalog
+ \value Script_Tagbanwa
+ \value Script_TaiLe
+ \value Script_TaiTham
+ \value Script_TaiViet
\value Script_Takri
- \value Script_CaucasianAlbanian
- \value Script_BassaVah
- \value Script_Duployan
- \value Script_Elbasan
- \value Script_Grantha
- \value Script_PahawhHmong
- \value Script_Khojki
- \value Script_LinearA
- \value Script_Mahajani
- \value Script_Manichaean
- \value Script_MendeKikakui
- \value Script_Modi
- \value Script_Mro
- \value Script_OldNorthArabian
- \value Script_Nabataean
- \value Script_Palmyrene
- \value Script_PauCinHau
- \value Script_OldPermic
- \value Script_PsalterPahlavi
- \value Script_Siddham
- \value Script_Khudawadi
- \value Script_Tirhuta
- \value Script_WarangCiti
- \value Script_Ahom
- \value Script_AnatolianHieroglyphs
- \value Script_Hatran
- \value Script_Multani
- \value Script_OldHungarian
- \value Script_SignWriting
- \value Script_Adlam
- \value Script_Bhaiksuki
- \value Script_Marchen
- \value Script_Newa
- \value Script_Osage
- \value Script_Tangut
- \value Script_MasaramGondi
- \value Script_Nushu
- \value Script_Soyombo
- \value Script_ZanabazarSquare
+ \value Script_Tamil
+ \value Script_Tangut Since Qt 5.11
+ \value Script_Telugu
+ \value Script_Thaana
+ \value Script_Thai
+ \value Script_Tibetan
+ \value Script_Tifinagh
+ \value Script_Tirhuta Since Qt 5.5
+ \value Script_Ugaritic
+ \value Script_Vai
+ \value Script_Wancho Since Qt 5.15
+ \value Script_WarangCiti Since Qt 5.5
+ \value Script_Yi
+ \value Script_ZanabazarSquare Since Qt 5.11
\omitvalue ScriptCount
diff --git a/src/corelib/text/qchar.h b/src/corelib/text/qchar.h
index f67a7ea90a..a3d5d7a65e 100644
--- a/src/corelib/text/qchar.h
+++ b/src/corelib/text/qchar.h
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2019 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the QtCore module of the Qt Toolkit.
@@ -328,6 +328,19 @@ public:
Script_Soyombo,
Script_ZanabazarSquare,
+ // Unicode 12.1 additions
+ Script_Dogra,
+ Script_GunjalaGondi,
+ Script_HanifiRohingya,
+ Script_Makasar,
+ Script_Medefaidrin,
+ Script_OldSogdian,
+ Script_Sogdian,
+ Script_Elymaic,
+ Script_Nandinagari,
+ Script_NyiakengPuachueHmong,
+ Script_Wancho,
+
ScriptCount
};
@@ -421,7 +434,10 @@ public:
Unicode_7_0,
Unicode_8_0,
Unicode_9_0,
- Unicode_10_0
+ Unicode_10_0,
+ Unicode_11_0,
+ Unicode_12_0,
+ Unicode_12_1
};
// ****** WHEN ADDING FUNCTIONS, CONSIDER ADDING TO QCharRef TOO
diff --git a/src/corelib/text/qlocale.cpp b/src/corelib/text/qlocale.cpp
index 75a5bc802e..694d491273 100644
--- a/src/corelib/text/qlocale.cpp
+++ b/src/corelib/text/qlocale.cpp
@@ -79,7 +79,7 @@
QT_BEGIN_NAMESPACE
#ifndef QT_NO_SYSTEMLOCALE
-static QSystemLocale *_systemLocale = 0;
+static QSystemLocale *_systemLocale = nullptr;
class QSystemLocaleSingleton: public QSystemLocale
{
public:
@@ -695,7 +695,7 @@ QSystemLocale::QSystemLocale(bool)
QSystemLocale::~QSystemLocale()
{
if (_systemLocale == this) {
- _systemLocale = 0;
+ _systemLocale = nullptr;
globalLocaleData.m_language_id = 0;
}
@@ -2429,7 +2429,7 @@ QTime QLocale::toTime(const QString &string, const QString &format, QCalendar ca
QDateTimeParser dt(QVariant::Time, QDateTimeParser::FromString, cal);
dt.setDefaultLocale(*this);
if (dt.parseFormat(format))
- dt.fromString(string, 0, &time);
+ dt.fromString(string, nullptr, &time);
#else
Q_UNUSED(cal);
Q_UNUSED(string);
@@ -2468,7 +2468,7 @@ QDate QLocale::toDate(const QString &string, const QString &format, QCalendar ca
QDateTimeParser dt(QVariant::Date, QDateTimeParser::FromString, cal);
dt.setDefaultLocale(*this);
if (dt.parseFormat(format))
- dt.fromString(string, &date, 0);
+ dt.fromString(string, &date, nullptr);
#else
Q_UNUSED(string);
Q_UNUSED(format);
diff --git a/src/corelib/text/qlocale_tools.cpp b/src/corelib/text/qlocale_tools.cpp
index c246028b4d..0da769d694 100644
--- a/src/corelib/text/qlocale_tools.cpp
+++ b/src/corelib/text/qlocale_tools.cpp
@@ -322,7 +322,7 @@ double qt_asciiToDouble(const char *num, int numLen, bool &ok, int &processed,
conv_flags = double_conversion::StringToDoubleConverter::ALLOW_LEADING_SPACES
| double_conversion::StringToDoubleConverter::ALLOW_TRAILING_SPACES;
}
- double_conversion::StringToDoubleConverter conv(conv_flags, 0.0, qt_qnan(), 0, 0);
+ double_conversion::StringToDoubleConverter conv(conv_flags, 0.0, qt_qnan(), nullptr, nullptr);
d = conv.StringToDouble(num, numLen, &processed);
if (!qIsFinite(d)) {
diff --git a/src/corelib/text/qlocale_tools_p.h b/src/corelib/text/qlocale_tools_p.h
index 594331ae37..e2142bf545 100644
--- a/src/corelib/text/qlocale_tools_p.h
+++ b/src/corelib/text/qlocale_tools_p.h
@@ -54,22 +54,6 @@
#include "qlocale_p.h"
#include "qstring.h"
-#if !defined(QT_QLOCALE_NEEDS_VOLATILE)
-# if defined(Q_CC_GNU)
-# if __GNUC__ == 4
-# define QT_QLOCALE_NEEDS_VOLATILE
-# elif defined(Q_OS_WIN)
-# define QT_QLOCALE_NEEDS_VOLATILE
-# endif
-# endif
-#endif
-
-#if defined(QT_QLOCALE_NEEDS_VOLATILE)
-# define NEEDS_VOLATILE volatile
-#else
-# define NEEDS_VOLATILE
-#endif
-
QT_BEGIN_NAMESPACE
enum StrayCharacterMode {
diff --git a/src/corelib/text/qregularexpression.cpp b/src/corelib/text/qregularexpression.cpp
index 8d2187eb28..e05bef450b 100644
--- a/src/corelib/text/qregularexpression.cpp
+++ b/src/corelib/text/qregularexpression.cpp
@@ -831,7 +831,7 @@ struct QRegularExpressionPrivate : QSharedData
QRegularExpression::MatchType matchType,
QRegularExpression::MatchOptions matchOptions,
CheckSubjectStringOption checkSubjectStringOption = CheckSubjectString,
- const QRegularExpressionMatchPrivate *previous = 0) const;
+ const QRegularExpressionMatchPrivate *previous = nullptr) const;
int captureIndexForName(QStringView name) const;
@@ -912,7 +912,7 @@ QRegularExpression::QRegularExpression(QRegularExpressionPrivate &dd)
*/
QRegularExpressionPrivate::QRegularExpressionPrivate()
: QSharedData(),
- patternOptions(0),
+ patternOptions(),
pattern(),
mutex(),
compiledPattern(nullptr),
@@ -990,7 +990,7 @@ void QRegularExpressionPrivate::compilePattern()
options,
&errorCode,
&patternErrorOffset,
- NULL);
+ nullptr);
if (!compiledPattern) {
errorOffset = static_cast<int>(patternErrorOffset);
@@ -1049,7 +1049,7 @@ public:
{
// The default JIT stack size in PCRE is 32K,
// we allocate from 32K up to 512K.
- stack = pcre2_jit_stack_create_16(32 * 1024, 512 * 1024, NULL);
+ stack = pcre2_jit_stack_create_16(32 * 1024, 512 * 1024, nullptr);
}
/*!
\internal
@@ -1073,7 +1073,7 @@ static pcre2_jit_stack_16 *qtPcreCallback(void *)
if (jitStacks()->hasLocalData())
return jitStacks()->localData()->stack;
- return 0;
+ return nullptr;
}
/*!
@@ -1240,9 +1240,9 @@ QRegularExpressionMatchPrivate *QRegularExpressionPrivate::doMatch(const QString
previousMatchWasEmpty = true;
}
- pcre2_match_context_16 *matchContext = pcre2_match_context_create_16(NULL);
- pcre2_jit_stack_assign_16(matchContext, &qtPcreCallback, NULL);
- pcre2_match_data_16 *matchData = pcre2_match_data_create_from_pattern_16(compiledPattern, NULL);
+ pcre2_match_context_16 *matchContext = pcre2_match_context_create_16(nullptr);
+ pcre2_jit_stack_assign_16(matchContext, &qtPcreCallback, nullptr);
+ pcre2_match_data_16 *matchData = pcre2_match_data_create_from_pattern_16(compiledPattern, nullptr);
const unsigned short * const subjectUtf16 = subject.utf16() + subjectStart;
diff --git a/src/corelib/text/qt_attribution.json b/src/corelib/text/qt_attribution.json
index a488f1341e..c6ac1d1d95 100644
--- a/src/corelib/text/qt_attribution.json
+++ b/src/corelib/text/qt_attribution.json
@@ -11,7 +11,7 @@
define the Unicode character properties and internal mappings.",
"Homepage": "https://www.unicode.org/ucd/",
"Version": "Don't use the Unicode standard version; UCD has its own 'Revision' numbers",
- "Version": "20",
+ "Version": "24",
"License": "Unicode License Agreement - Data Files and Software (2016)",
"LicenseId": "Unicode-DFS-2016",
"LicenseFile": "UNICODE_LICENSE.txt",
diff --git a/src/corelib/text/qtextboundaryfinder.cpp b/src/corelib/text/qtextboundaryfinder.cpp
index 67dd15377b..ebdba6b2c5 100644
--- a/src/corelib/text/qtextboundaryfinder.cpp
+++ b/src/corelib/text/qtextboundaryfinder.cpp
@@ -71,7 +71,7 @@ static void init(QTextBoundaryFinder::BoundaryType type, const QChar *chars, int
}
}
- QUnicodeTools::CharAttributeOptions options = 0;
+ QUnicodeTools::CharAttributeOptions options;
switch (type) {
case QTextBoundaryFinder::Grapheme: options |= QUnicodeTools::GraphemeBreaks; break;
case QTextBoundaryFinder::Word: options |= QUnicodeTools::WordBreaks; break;
@@ -161,10 +161,10 @@ static void init(QTextBoundaryFinder::BoundaryType type, const QChar *chars, int
*/
QTextBoundaryFinder::QTextBoundaryFinder()
: t(Grapheme)
- , chars(0)
+ , chars(nullptr)
, length(0)
, freePrivate(true)
- , d(0)
+ , d(nullptr)
{
}
@@ -178,7 +178,7 @@ QTextBoundaryFinder::QTextBoundaryFinder(const QTextBoundaryFinder &other)
, length(other.length)
, pos(other.pos)
, freePrivate(true)
- , d(0)
+ , d(nullptr)
{
if (other.d) {
Q_ASSERT(length > 0);
@@ -199,7 +199,7 @@ QTextBoundaryFinder &QTextBoundaryFinder::operator=(const QTextBoundaryFinder &o
if (other.d) {
Q_ASSERT(other.length > 0);
uint newCapacity = (other.length + 1) * sizeof(QCharAttributes);
- QTextBoundaryFinderPrivate *newD = (QTextBoundaryFinderPrivate *) realloc(freePrivate ? d : 0, newCapacity);
+ QTextBoundaryFinderPrivate *newD = (QTextBoundaryFinderPrivate *) realloc(freePrivate ? d : nullptr, newCapacity);
Q_CHECK_PTR(newD);
freePrivate = true;
d = newD;
@@ -216,7 +216,7 @@ QTextBoundaryFinder &QTextBoundaryFinder::operator=(const QTextBoundaryFinder &o
} else {
if (freePrivate)
free(d);
- d = 0;
+ d = nullptr;
}
return *this;
@@ -242,7 +242,7 @@ QTextBoundaryFinder::QTextBoundaryFinder(BoundaryType type, const QString &strin
, length(string.length())
, pos(0)
, freePrivate(true)
- , d(0)
+ , d(nullptr)
{
if (length > 0) {
d = (QTextBoundaryFinderPrivate *) malloc((length + 1) * sizeof(QCharAttributes));
@@ -271,7 +271,7 @@ QTextBoundaryFinder::QTextBoundaryFinder(BoundaryType type, const QChar *chars,
, length(length)
, pos(0)
, freePrivate(true)
- , d(0)
+ , d(nullptr)
{
if (!chars) {
length = 0;
diff --git a/src/corelib/text/qunicodetables.cpp b/src/corelib/text/qunicodetables.cpp
index 805a5a6e34..96e53967da 100644
--- a/src/corelib/text/qunicodetables.cpp
+++ b/src/corelib/text/qunicodetables.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2019 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the QtCore module of the Qt Toolkit.
@@ -37,7 +37,7 @@
**
****************************************************************************/
-/* This file is autogenerated from the Unicode 10.0 database. Do not edit */
+/* This file is autogenerated from the Unicode 12.1 database. Do not edit */
#include "qunicodetables_p.h"
@@ -77,18 +77,18 @@ static const unsigned short uc_property_trie[] = {
11920, 11952, 11984, 12016, 12048, 12080, 12112, 12144,
12176, 12208, 12240, 12272, 12304, 12336, 9936, 9936,
12368, 12400, 12432, 12464, 12496, 12528, 12560, 12592,
- 12624, 12656, 12688, 12720, 12752, 9936, 12784, 12816,
- 12848, 12880, 12912, 12944, 12976, 13008, 13040, 13072,
- 13104, 13104, 13104, 13104, 13136, 13104, 13104, 13168,
- 13200, 13232, 13264, 13296, 13328, 13360, 13392, 13424,
-
- 13456, 13488, 13520, 13552, 13584, 13616, 13648, 13680,
- 13712, 13744, 13776, 13808, 13840, 13872, 13904, 13936,
- 13968, 14000, 14032, 14064, 14096, 14128, 14160, 14192,
- 14224, 14256, 14288, 14320, 14352, 14384, 14416, 14448,
- 14480, 14512, 14544, 14576, 14608, 14640, 14672, 14704,
- 14480, 14480, 14480, 14480, 14736, 14768, 14800, 14832,
- 14864, 14896, 14928, 14960, 14992, 15024, 15056, 15088,
+ 12624, 12656, 12688, 12720, 12752, 12784, 12816, 12848,
+ 12880, 12912, 12944, 12976, 13008, 13040, 13072, 13104,
+ 13136, 13136, 13136, 13136, 13168, 13136, 13136, 13200,
+ 13232, 13264, 13296, 13328, 13360, 13392, 13424, 13456,
+
+ 13488, 13520, 13552, 13584, 13616, 13648, 13680, 13712,
+ 13744, 13776, 13808, 13840, 13872, 13904, 13936, 13968,
+ 14000, 14032, 14064, 14096, 14128, 14160, 14192, 14224,
+ 14256, 14288, 14320, 14352, 14384, 14416, 14448, 14480,
+ 14512, 14544, 14576, 14608, 14640, 14672, 14704, 14736,
+ 14512, 14512, 14512, 14512, 14768, 14800, 14832, 14864,
+ 14896, 14928, 14512, 14960, 14992, 15024, 15056, 15088,
15120, 15152, 15184, 15216, 15248, 15280, 15312, 15344,
15376, 15376, 15376, 15376, 15376, 15376, 15376, 15376,
15408, 15408, 15408, 15408, 15440, 15472, 15504, 15536,
@@ -225,75 +225,58 @@ static const unsigned short uc_property_trie[] = {
17904, 17904, 17904, 17904, 17936, 17968, 18000, 18032,
18064, 18064, 18064, 18064, 18064, 18064, 18064, 18064,
18096, 18128, 18160, 18192, 18224, 18256, 18256, 18288,
- 18320, 18352, 18384, 18416, 18448, 18480, 9936, 18512,
- 18544, 18576, 18608, 18640, 18672, 18704, 18736, 18768,
- 18800, 18832, 18864, 18896, 18928, 18960, 18992, 19024,
- 19056, 19088, 19120, 19152, 19184, 19216, 19248, 19280,
- 19312, 19344, 19376, 19408, 19440, 19472, 19504, 19536,
- 19568, 19600, 19632, 19664, 19696, 19728, 19760, 19568,
- 19600, 19632, 19664, 19696, 19728, 19760, 19568, 19600,
- 19632, 19664, 19696, 19728, 19760, 19568, 19600, 19632,
- 19664, 19696, 19728, 19760, 19568, 19600, 19632, 19664,
-
- 19696, 19728, 19760, 19568, 19600, 19632, 19664, 19696,
- 19728, 19760, 19568, 19600, 19632, 19664, 19696, 19728,
- 19760, 19568, 19600, 19632, 19664, 19696, 19728, 19760,
- 19568, 19600, 19632, 19664, 19696, 19728, 19760, 19568,
- 19600, 19632, 19664, 19696, 19728, 19760, 19568, 19600,
- 19632, 19664, 19696, 19728, 19760, 19568, 19600, 19632,
- 19664, 19696, 19728, 19760, 19568, 19600, 19632, 19664,
- 19696, 19728, 19760, 19568, 19600, 19632, 19664, 19696,
- 19728, 19760, 19568, 19600, 19632, 19664, 19696, 19728,
- 19760, 19568, 19600, 19632, 19664, 19696, 19728, 19760,
- 19568, 19600, 19632, 19664, 19696, 19728, 19760, 19568,
- 19600, 19632, 19664, 19696, 19728, 19760, 19568, 19600,
- 19632, 19664, 19696, 19728, 19760, 19568, 19600, 19632,
- 19664, 19696, 19728, 19760, 19568, 19600, 19632, 19664,
- 19696, 19728, 19760, 19568, 19600, 19632, 19664, 19696,
- 19728, 19760, 19568, 19600, 19632, 19664, 19696, 19728,
-
- 19760, 19568, 19600, 19632, 19664, 19696, 19728, 19760,
- 19568, 19600, 19632, 19664, 19696, 19728, 19760, 19568,
- 19600, 19632, 19664, 19696, 19728, 19760, 19568, 19600,
- 19632, 19664, 19696, 19728, 19760, 19568, 19600, 19632,
- 19664, 19696, 19728, 19760, 19568, 19600, 19632, 19664,
- 19696, 19728, 19760, 19568, 19600, 19632, 19664, 19696,
- 19728, 19760, 19568, 19600, 19632, 19664, 19696, 19728,
- 19760, 19568, 19600, 19632, 19664, 19696, 19728, 19760,
- 19568, 19600, 19632, 19664, 19696, 19728, 19760, 19568,
- 19600, 19632, 19664, 19696, 19728, 19760, 19568, 19600,
- 19632, 19664, 19696, 19728, 19760, 19568, 19600, 19632,
- 19664, 19696, 19728, 19760, 19568, 19600, 19632, 19664,
- 19696, 19728, 19760, 19568, 19600, 19632, 19664, 19696,
- 19728, 19760, 19568, 19600, 19632, 19664, 19696, 19728,
- 19760, 19568, 19600, 19632, 19664, 19696, 19728, 19760,
- 19568, 19600, 19632, 19664, 19696, 19728, 19760, 19568,
-
- 19600, 19632, 19664, 19696, 19728, 19760, 19568, 19600,
- 19632, 19664, 19696, 19728, 19760, 19568, 19600, 19632,
- 19664, 19696, 19728, 19760, 19568, 19600, 19632, 19664,
- 19696, 19728, 19760, 19568, 19600, 19632, 19664, 19696,
- 19728, 19760, 19568, 19600, 19632, 19664, 19696, 19728,
- 19760, 19568, 19600, 19632, 19664, 19696, 19728, 19760,
- 19568, 19600, 19632, 19664, 19696, 19728, 19760, 19568,
- 19600, 19632, 19664, 19696, 19728, 19792, 19824, 19856,
- 19888, 19888, 19888, 19888, 19888, 19888, 19888, 19888,
- 19888, 19888, 19888, 19888, 19888, 19888, 19888, 19888,
- 19888, 19888, 19888, 19888, 19888, 19888, 19888, 19888,
- 19888, 19888, 19888, 19888, 19888, 19888, 19888, 19888,
- 19888, 19888, 19888, 19888, 19888, 19888, 19888, 19888,
- 19888, 19888, 19888, 19888, 19888, 19888, 19888, 19888,
- 19888, 19888, 19888, 19888, 19888, 19888, 19888, 19888,
- 19888, 19888, 19888, 19888, 19888, 19888, 19888, 19888,
-
- 19920, 19920, 19920, 19920, 19920, 19920, 19920, 19920,
- 19920, 19920, 19920, 19920, 19920, 19920, 19920, 19920,
- 19920, 19920, 19920, 19920, 19920, 19920, 19920, 19920,
- 19920, 19920, 19920, 19920, 19920, 19920, 19920, 19920,
- 19920, 19920, 19920, 19920, 19920, 19920, 19920, 19920,
- 19920, 19920, 19920, 19920, 19920, 19920, 19920, 19920,
- 19920, 19920, 19920, 19920, 19920, 19920, 19920, 19920,
- 19920, 19920, 19920, 19920, 19920, 19920, 19920, 19920,
+ 18320, 18352, 18384, 18416, 18448, 18480, 18512, 18544,
+ 18576, 18608, 18640, 18672, 18704, 18736, 18768, 18800,
+ 18832, 18864, 18896, 18928, 18960, 18992, 19024, 19056,
+ 19088, 19120, 19152, 19184, 19216, 19248, 19280, 19312,
+ 19344, 19376, 19408, 19440, 19472, 19504, 19536, 19568,
+ 19600, 19632, 19664, 19696, 19728, 19760, 19792, 19600,
+ 19632, 19664, 19696, 19728, 19760, 19792, 19600, 19632,
+ 19664, 19696, 19728, 19760, 19792, 19600, 19632, 19664,
+ 19696, 19728, 19760, 19792, 19600, 19632, 19664, 19696,
+
+ 19728, 19760, 19792, 19600, 19632, 19664, 19696, 19728,
+ 19760, 19792, 19600, 19632, 19664, 19696, 19728, 19760,
+ 19792, 19600, 19632, 19664, 19696, 19728, 19760, 19792,
+ 19600, 19632, 19664, 19696, 19728, 19760, 19792, 19600,
+ 19632, 19664, 19696, 19728, 19760, 19792, 19600, 19632,
+ 19664, 19696, 19728, 19760, 19792, 19600, 19632, 19664,
+ 19696, 19728, 19760, 19792, 19600, 19632, 19664, 19696,
+ 19728, 19760, 19792, 19600, 19632, 19664, 19696, 19728,
+ 19760, 19792, 19600, 19632, 19664, 19696, 19728, 19760,
+ 19792, 19600, 19632, 19664, 19696, 19728, 19760, 19792,
+ 19600, 19632, 19664, 19696, 19728, 19760, 19792, 19600,
+ 19632, 19664, 19696, 19728, 19760, 19792, 19600, 19632,
+ 19664, 19696, 19728, 19760, 19792, 19600, 19632, 19664,
+ 19696, 19728, 19760, 19792, 19600, 19632, 19664, 19696,
+ 19728, 19760, 19792, 19600, 19632, 19664, 19696, 19728,
+ 19760, 19792, 19600, 19632, 19664, 19696, 19728, 19760,
+
+ 19792, 19600, 19632, 19664, 19696, 19728, 19760, 19792,
+ 19600, 19632, 19664, 19696, 19728, 19760, 19792, 19600,
+ 19632, 19664, 19696, 19728, 19760, 19792, 19600, 19632,
+ 19664, 19696, 19728, 19760, 19792, 19600, 19632, 19664,
+ 19696, 19728, 19760, 19792, 19600, 19632, 19664, 19696,
+ 19728, 19760, 19792, 19600, 19632, 19664, 19696, 19728,
+ 19760, 19792, 19600, 19632, 19664, 19696, 19728, 19760,
+ 19792, 19600, 19632, 19664, 19696, 19728, 19760, 19792,
+ 19600, 19632, 19664, 19696, 19728, 19760, 19792, 19600,
+ 19632, 19664, 19696, 19728, 19760, 19792, 19600, 19632,
+ 19664, 19696, 19728, 19760, 19792, 19600, 19632, 19664,
+ 19696, 19728, 19760, 19792, 19600, 19632, 19664, 19696,
+ 19728, 19760, 19792, 19600, 19632, 19664, 19696, 19728,
+ 19760, 19792, 19600, 19632, 19664, 19696, 19728, 19760,
+ 19792, 19600, 19632, 19664, 19696, 19728, 19760, 19792,
+ 19600, 19632, 19664, 19696, 19728, 19760, 19792, 19600,
+
+ 19632, 19664, 19696, 19728, 19760, 19792, 19600, 19632,
+ 19664, 19696, 19728, 19760, 19792, 19600, 19632, 19664,
+ 19696, 19728, 19760, 19792, 19600, 19632, 19664, 19696,
+ 19728, 19760, 19792, 19600, 19632, 19664, 19696, 19728,
+ 19760, 19792, 19600, 19632, 19664, 19696, 19728, 19760,
+ 19792, 19600, 19632, 19664, 19696, 19728, 19760, 19792,
+ 19600, 19632, 19664, 19696, 19728, 19760, 19792, 19600,
+ 19632, 19664, 19696, 19728, 19760, 19824, 19856, 19888,
19920, 19920, 19920, 19920, 19920, 19920, 19920, 19920,
19920, 19920, 19920, 19920, 19920, 19920, 19920, 19920,
19920, 19920, 19920, 19920, 19920, 19920, 19920, 19920,
@@ -303,568 +286,585 @@ static const unsigned short uc_property_trie[] = {
19920, 19920, 19920, 19920, 19920, 19920, 19920, 19920,
19920, 19920, 19920, 19920, 19920, 19920, 19920, 19920,
- 19920, 19920, 19920, 19920, 19920, 19920, 19920, 19920,
- 19920, 19920, 19920, 19920, 19920, 19920, 19920, 19920,
- 19920, 19920, 19920, 19920, 19920, 19920, 19920, 19920,
- 19920, 19920, 19920, 19920, 19920, 19920, 19920, 19920,
- 19920, 19920, 19920, 19920, 19920, 19920, 19920, 19920,
- 19920, 19920, 19920, 19920, 19920, 19920, 19920, 19920,
- 19920, 19920, 19920, 19920, 19920, 19920, 19920, 19920,
- 19920, 19920, 19920, 19920, 19920, 19920, 19920, 19920,
- 19920, 19920, 19920, 19920, 19920, 19920, 19920, 19920,
19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
- 19984, 20016, 20048, 20080, 20112, 20112, 20144, 20176,
- 20208, 20240, 20272, 20304, 20304, 20336, 20368, 20304,
- 20304, 20304, 20304, 20304, 20304, 20304, 20304, 20304,
- 20304, 20400, 20432, 20304, 20464, 20304, 20496, 20528,
- 20560, 20592, 20624, 20656, 20304, 20304, 20304, 20688,
- 20720, 20752, 20784, 20816, 20848, 20880, 20912, 20944,
-
- 20976, 21008, 21040, 9936, 21072, 21072, 21072, 21104,
- 21136, 21168, 21200, 21232, 21264, 21296, 21328, 21360,
- 9936, 9936, 9936, 9936, 21392, 21424, 21456, 21488,
- 21520, 21552, 21584, 21616, 21648, 21680, 21712, 9936,
- 21744, 21776, 21808, 21840, 21872, 21904, 21936, 21968,
- 22000, 22032, 22064, 22096, 9936, 9936, 9936, 9936,
- 22128, 22128, 22128, 22128, 22128, 22128, 22128, 22128,
- 22128, 22160, 22192, 22224, 9936, 9936, 9936, 9936,
- 22256, 22288, 22320, 22352, 22384, 22416, 8432, 22448,
- 22480, 22512, 8432, 8432, 22544, 22576, 22608, 22640,
- 22672, 22704, 22736, 22768, 22800, 8432, 22832, 22864,
- 22896, 22928, 22960, 22992, 23024, 23056, 8432, 8432,
- 23088, 23088, 23120, 8432, 23152, 23184, 23216, 23248,
- 8432, 8432, 8432, 8432, 8432, 8432, 8432, 8432,
- 8432, 8432, 8432, 23280, 8432, 8432, 8432, 8432,
- 8432, 8432, 8432, 8432, 8432, 8432, 8432, 8432,
+ 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
+ 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
+ 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
+ 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
+ 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
+ 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
+ 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
+ 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
+ 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
+ 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
+ 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
+ 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
+ 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
+ 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
+ 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
+
+ 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
+ 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
+ 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
+ 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
+ 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
+ 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
+ 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
+ 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
+ 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
+ 19984, 19984, 19984, 19984, 19984, 19984, 19984, 19984,
+ 20016, 20048, 20080, 20112, 20144, 20144, 20176, 20208,
+ 20240, 20272, 20304, 20336, 20336, 20368, 20400, 20336,
+ 20336, 20336, 20336, 20336, 20336, 20336, 20336, 20336,
+ 20336, 20432, 20464, 20336, 20496, 20336, 20528, 20560,
+ 20592, 20624, 20656, 20688, 20336, 20336, 20336, 20720,
+ 20752, 20784, 20816, 20848, 20880, 20912, 20944, 20976,
+
+ 21008, 21040, 21072, 9936, 21104, 21104, 21104, 21136,
+ 21168, 21200, 21232, 21264, 21296, 21328, 21360, 21392,
+ 9936, 9936, 9936, 9936, 21424, 21456, 21488, 21520,
+ 21552, 21584, 21616, 21648, 21680, 21712, 21744, 9936,
+ 21776, 21808, 21840, 21872, 21904, 21936, 21968, 22000,
+ 22032, 22064, 22096, 22128, 9936, 9936, 9936, 9936,
+ 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160,
+ 22160, 22192, 22224, 22256, 9936, 9936, 9936, 9936,
+ 22288, 22320, 22352, 22384, 22416, 22448, 8432, 22480,
+ 22512, 22544, 8432, 8432, 22576, 22608, 22640, 22672,
+ 22704, 22736, 22768, 22800, 22832, 8432, 22864, 22896,
+ 22928, 22960, 22992, 23024, 23056, 23088, 8432, 8432,
+ 23120, 23120, 23152, 8432, 23184, 23216, 23248, 23280,
+ 23312, 23344, 8432, 8432, 8432, 8432, 8432, 8432,
+ 8432, 8432, 8432, 23376, 8432, 8432, 8432, 8432,
+ 23408, 23440, 23472, 8432, 8432, 8432, 8432, 23504,
// [0x11000..0x110000)
- 23312, 23568, 23824, 24080, 24336, 24592, 24848, 25104,
- 25360, 25616, 25872, 25616, 26128, 26384, 25616, 25616,
- 26640, 26640, 26640, 26896, 27152, 27408, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 27664, 27664, 27920, 28176, 28432, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 28688, 28944, 29200, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 29456, 29456, 29712, 29968, 25616, 25616, 25616, 30224,
- 30480, 30480, 30480, 30480, 30480, 30480, 30480, 30480,
- 30480, 30480, 30480, 30480, 30480, 30480, 30480, 30480,
- 30480, 30480, 30480, 30480, 30480, 30480, 30480, 30736,
- 30480, 30480, 30992, 25616, 25616, 25616, 25616, 25616,
-
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 31248, 31504, 31760, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 32016, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 32272, 32528, 32784, 33040, 33296, 33552, 33808, 34064,
- 34320, 34320, 34576, 25616, 25616, 25616, 25616, 25616,
- 34832, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 35088, 35344, 35600, 35600, 35600, 35600, 35856, 35600,
- 36112, 36368, 36624, 36880, 37136, 37392, 37648, 37904,
- 38160, 38416, 38672, 38672, 38672, 38672, 38672, 38928,
- 39184, 39184, 39184, 39184, 39184, 39184, 39184, 39184,
- 39184, 39184, 39184, 39184, 39184, 39184, 39184, 39184,
- 39184, 39184, 39184, 39184, 39184, 39184, 39184, 39184,
- 39184, 39184, 39184, 39184, 39184, 39184, 39184, 39184,
- 39184, 39184, 39184, 39184, 39184, 39184, 39184, 39184,
- 39184, 39184, 39184, 39184, 39184, 39184, 39184, 39184,
- 39184, 39184, 39184, 39184, 39184, 39184, 39184, 39184,
- 39184, 39184, 39184, 39184, 39184, 39184, 39184, 39184,
- 39184, 39184, 39184, 39184, 39184, 39184, 39184, 39184,
- 39184, 39184, 39184, 39184, 39184, 39184, 39184, 39184,
- 39184, 39184, 39184, 39184, 39184, 39184, 39184, 39184,
- 39184, 39184, 39184, 39184, 39184, 39184, 39184, 39184,
- 39184, 39184, 39184, 39184, 39184, 39184, 39184, 39184,
- 39184, 39184, 39184, 39184, 39184, 39184, 39184, 39184,
- 39184, 39184, 39184, 39184, 39184, 39184, 39184, 39184,
- 39184, 39184, 39184, 39184, 39184, 39184, 39184, 39184,
- 39184, 39184, 39184, 39184, 39184, 39184, 39184, 39184,
- 39184, 39184, 39184, 39184, 39184, 39184, 39184, 39184,
-
- 39184, 39184, 39184, 39184, 39184, 39184, 39184, 39184,
- 39184, 39184, 39184, 39184, 39184, 39184, 39184, 39184,
- 39184, 39184, 39184, 39184, 39184, 39184, 39440, 39696,
- 39696, 39696, 39696, 39696, 39696, 39696, 39696, 39696,
- 39696, 39696, 39696, 39696, 39696, 39696, 39696, 39952,
- 40208, 40464, 40464, 40464, 40464, 40464, 40464, 40464,
- 40464, 40464, 40464, 40464, 40464, 40464, 40464, 40464,
- 40464, 40464, 40464, 40464, 40464, 40464, 40720, 40976,
- 40976, 40976, 40976, 40976, 40976, 40976, 40976, 40976,
- 40976, 40976, 40976, 40976, 40976, 40976, 40976, 40976,
- 40976, 40976, 40976, 40976, 40976, 40976, 40976, 40976,
- 40976, 40976, 40976, 41232, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 41488, 41488, 41744, 38672, 38672, 38672, 38672, 38928,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
-
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38928,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
-
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 42000,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
-
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 42000,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
-
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 42000,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
-
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 42000,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
-
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 42000,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
-
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 42000,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
-
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 42000,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
-
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 42000,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
-
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 42000,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
-
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 42000,
- 42256, 42512, 42768, 42768, 42768, 42768, 42768, 42768,
- 42768, 42768, 42768, 42768, 42768, 42768, 42768, 42768,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
-
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 42000,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
-
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43280,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
-
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43280,
+ 23536, 23792, 24048, 24304, 24560, 24816, 25072, 25328,
+ 25584, 25840, 26096, 26352, 26608, 26864, 27120, 27376,
+ 27632, 27632, 27632, 27888, 28144, 28400, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 28656, 28656, 28912, 29168, 29424, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 29680, 29936, 30192, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 30448, 30448, 30704, 30960, 26352, 26352, 31216, 31472,
+ 31728, 31728, 31728, 31728, 31728, 31728, 31728, 31728,
+ 31728, 31728, 31728, 31728, 31728, 31728, 31728, 31728,
+ 31728, 31728, 31728, 31728, 31728, 31728, 31728, 31984,
+ 31728, 31728, 32240, 26352, 26352, 26352, 26352, 26352,
+
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 32496, 32752, 33008, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 33264, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 33520, 33776, 34032, 34288, 34544, 34800, 35056, 35312,
+ 35568, 35568, 35824, 26352, 26352, 26352, 26352, 26352,
+ 36080, 36336, 36592, 26352, 26352, 26352, 26352, 26352,
+ 36848, 37104, 37360, 37360, 37616, 37872, 38128, 37360,
+ 38384, 38640, 38896, 39152, 39408, 39664, 39920, 40176,
+ 40432, 40688, 40944, 41200, 41200, 41200, 41200, 41456,
+ 41712, 41712, 41712, 41712, 41712, 41712, 41712, 41712,
+ 41712, 41712, 41712, 41712, 41712, 41712, 41712, 41712,
+ 41712, 41712, 41712, 41712, 41712, 41712, 41712, 41712,
+ 41712, 41712, 41712, 41712, 41712, 41712, 41712, 41712,
+ 41712, 41712, 41712, 41712, 41712, 41712, 41712, 41712,
+ 41712, 41712, 41712, 41712, 41712, 41712, 41712, 41712,
+ 41712, 41712, 41712, 41712, 41712, 41712, 41712, 41712,
+ 41712, 41712, 41712, 41712, 41712, 41712, 41712, 41712,
+ 41712, 41712, 41712, 41712, 41712, 41712, 41712, 41712,
+ 41712, 41712, 41712, 41712, 41712, 41712, 41712, 41712,
+ 41712, 41712, 41712, 41712, 41712, 41712, 41712, 41712,
+ 41712, 41712, 41712, 41712, 41712, 41712, 41712, 41712,
+ 41712, 41712, 41712, 41712, 41712, 41712, 41712, 41712,
+ 41712, 41712, 41712, 41712, 41712, 41712, 41712, 41712,
+ 41712, 41712, 41712, 41712, 41712, 41712, 41712, 41712,
+ 41712, 41712, 41712, 41712, 41712, 41712, 41712, 41712,
+ 41712, 41712, 41712, 41712, 41712, 41712, 41712, 41712,
+ 41712, 41712, 41712, 41712, 41712, 41712, 41712, 41712,
+
+ 41712, 41712, 41712, 41712, 41712, 41712, 41712, 41712,
+ 41712, 41712, 41712, 41712, 41712, 41712, 41712, 41712,
+ 41712, 41712, 41712, 41712, 41712, 41712, 41968, 42224,
+ 42224, 42224, 42224, 42224, 42224, 42224, 42224, 42224,
+ 42224, 42224, 42224, 42224, 42224, 42224, 42224, 42480,
+ 42736, 42992, 42992, 42992, 42992, 42992, 42992, 42992,
+ 42992, 42992, 42992, 42992, 42992, 42992, 42992, 42992,
+ 42992, 42992, 42992, 42992, 42992, 42992, 43248, 43504,
+ 43504, 43504, 43504, 43504, 43504, 43504, 43504, 43504,
+ 43504, 43504, 43504, 43504, 43504, 43504, 43504, 43504,
+ 43504, 43504, 43504, 43504, 43504, 43504, 43504, 43504,
+ 43504, 43504, 43504, 43760, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 44016, 44016, 44272, 41200, 41200, 41200, 41200, 41456,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41456,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 44528,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 44528,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 44528,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 44528,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 44528,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 44528,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 44528,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 44528,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 44528,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 44528,
+ 44784, 45040, 45296, 45296, 45296, 45296, 45296, 45296,
+ 45296, 45296, 45296, 45296, 45296, 45296, 45296, 45296,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 44528,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45808,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45808,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -967,975 +967,980 @@ static const unsigned short uc_property_trie[] = {
78, 146, 147, 78, 78, 148, 78, 78,
78, 78, 78, 78, 78, 149, 78, 78,
- 150, 78, 78, 150, 78, 78, 78, 151,
- 150, 152, 153, 153, 154, 78, 78, 78,
- 78, 78, 155, 78, 100, 78, 78, 78,
- 78, 78, 78, 78, 78, 156, 157, 78,
+ 150, 78, 151, 150, 78, 78, 78, 152,
+ 150, 153, 154, 154, 155, 78, 78, 78,
+ 78, 78, 156, 78, 100, 78, 78, 78,
+ 78, 78, 78, 78, 78, 157, 158, 78,
78, 78, 78, 78, 78, 78, 78, 78,
- 78, 158, 158, 158, 158, 158, 114, 114,
- 159, 159, 159, 159, 159, 159, 159, 159,
- 159, 160, 160, 161, 161, 161, 161, 161,
-
- 162, 162, 163, 163, 163, 163, 160, 160,
- 164, 160, 160, 160, 164, 160, 160, 160,
- 161, 161, 163, 163, 163, 163, 163, 163,
- 52, 52, 52, 52, 52, 52, 163, 165,
-
- 159, 159, 159, 159, 159, 42, 42, 42,
- 42, 42, 166, 166, 167, 168, 169, 170,
- 170, 170, 170, 170, 170, 170, 170, 170,
- 170, 170, 170, 170, 170, 170, 170, 170,
-
- 171, 171, 171, 171, 171, 172, 171, 171,
- 171, 171, 171, 171, 171, 172, 172, 171,
- 172, 171, 172, 171, 171, 173, 174, 174,
- 174, 174, 173, 175, 174, 174, 174, 174,
-
- 174, 176, 176, 177, 177, 177, 177, 178,
- 178, 174, 174, 174, 174, 177, 177, 174,
- 177, 177, 174, 174, 179, 179, 179, 179,
- 180, 174, 174, 174, 174, 172, 172, 172,
-
- 181, 181, 171, 181, 181, 182, 183, 184,
- 184, 184, 183, 183, 183, 184, 184, 185,
- 186, 186, 186, 187, 187, 187, 187, 186,
- 188, 189, 189, 190, 191, 192, 192, 193,
-
- 194, 194, 195, 196, 196, 196, 196, 196,
- 196, 196, 196, 196, 196, 196, 196, 196,
- 197, 198, 197, 198, 199, 200, 197, 198,
- 201, 201, 202, 203, 203, 203, 204, 205,
-
- 201, 201, 201, 201, 206, 207, 208, 209,
- 210, 210, 210, 201, 211, 201, 212, 212,
- 213, 214, 214, 214, 214, 214, 214, 214,
- 214, 214, 214, 214, 214, 214, 214, 214,
-
- 214, 214, 201, 214, 214, 214, 214, 214,
- 214, 214, 215, 215, 216, 217, 217, 217,
- 218, 219, 219, 219, 219, 219, 219, 219,
- 219, 219, 219, 219, 219, 219, 219, 219,
-
- 219, 219, 220, 219, 219, 219, 219, 219,
- 219, 219, 221, 221, 222, 223, 223, 224,
- 225, 226, 227, 228, 228, 229, 230, 231,
- 232, 233, 234, 235, 234, 235, 234, 235,
-
- 234, 235, 236, 237, 236, 237, 236, 237,
- 236, 237, 236, 237, 236, 237, 236, 237,
- 238, 239, 240, 241, 242, 243, 244, 245,
- 246, 247, 245, 246, 248, 249, 249, 249,
-
- 250, 251, 252, 251, 252, 252, 252, 251,
- 252, 252, 252, 252, 251, 250, 251, 252,
- 253, 253, 253, 253, 253, 253, 253, 253,
- 253, 254, 253, 253, 253, 253, 253, 253,
-
- 253, 253, 253, 253, 253, 253, 253, 253,
- 253, 253, 253, 253, 253, 253, 253, 253,
- 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 256, 255, 255, 255, 255, 255, 255,
-
- 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255,
- 257, 258, 259, 258, 259, 259, 259, 258,
- 259, 259, 259, 259, 258, 257, 258, 259,
-
- 260, 261, 260, 261, 260, 261, 260, 261,
- 260, 261, 260, 261, 260, 261, 260, 261,
- 260, 261, 260, 261, 260, 261, 262, 263,
- 260, 261, 260, 261, 260, 261, 260, 261,
-
- 260, 261, 264, 265, 265, 172, 172, 266,
- 267, 267, 268, 269, 270, 271, 270, 271,
- 260, 261, 260, 261, 260, 261, 260, 261,
- 260, 261, 260, 261, 260, 261, 260, 261,
-
- 260, 261, 260, 261, 260, 261, 260, 261,
- 260, 261, 260, 261, 260, 261, 260, 261,
- 260, 261, 260, 261, 260, 261, 260, 261,
- 260, 261, 260, 261, 260, 261, 260, 261,
-
- 272, 262, 263, 260, 261, 268, 269, 260,
- 261, 268, 269, 260, 261, 268, 269, 273,
- 262, 263, 262, 263, 260, 261, 262, 263,
- 260, 261, 262, 263, 262, 263, 262, 263,
-
- 260, 261, 262, 263, 262, 263, 262, 263,
- 260, 261, 262, 263, 274, 275, 262, 263,
- 262, 263, 262, 263, 262, 263, 276, 277,
- 262, 263, 278, 279, 278, 279, 278, 279,
-
- 268, 269, 268, 269, 268, 269, 268, 269,
- 268, 269, 268, 269, 268, 269, 268, 269,
- 278, 279, 278, 279, 280, 281, 280, 281,
- 280, 281, 280, 281, 280, 281, 280, 281,
-
- 280, 281, 280, 281, 282, 283, 284, 285,
- 286, 287, 286, 287, 286, 287, 286, 287,
- 201, 288, 288, 288, 288, 288, 288, 288,
- 288, 288, 288, 288, 288, 288, 288, 288,
-
- 288, 288, 288, 288, 288, 288, 288, 288,
- 288, 288, 288, 288, 288, 288, 288, 288,
- 288, 288, 288, 288, 288, 288, 288, 201,
- 201, 289, 290, 290, 290, 291, 290, 290,
-
- 201, 292, 292, 292, 292, 292, 292, 292,
- 292, 292, 292, 292, 292, 292, 292, 292,
- 292, 292, 292, 292, 292, 292, 292, 292,
- 292, 292, 292, 292, 292, 292, 292, 292,
-
- 292, 292, 292, 292, 292, 292, 292, 293,
- 201, 294, 295, 201, 201, 296, 296, 297,
- 298, 299, 300, 300, 300, 300, 299, 300,
- 300, 300, 301, 299, 300, 300, 300, 300,
-
- 300, 300, 302, 299, 299, 299, 299, 299,
- 300, 300, 299, 300, 300, 301, 303, 300,
- 304, 305, 306, 307, 308, 309, 310, 311,
- 312, 313, 314, 315, 316, 317, 318, 319,
-
- 320, 321, 322, 320, 300, 302, 323, 324,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 325, 325, 325, 325, 325, 325, 325, 325,
- 325, 325, 325, 325, 325, 325, 325, 325,
-
- 325, 325, 325, 325, 325, 325, 325, 325,
- 325, 325, 325, 298, 298, 298, 298, 298,
- 325, 325, 325, 326, 327, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
-
- 328, 328, 328, 328, 329, 330, 331, 331,
- 332, 333, 333, 334, 19, 335, 336, 336,
- 337, 337, 337, 337, 337, 337, 338, 338,
- 339, 340, 341, 342, 343, 344, 345, 346,
-
- 347, 348, 349, 349, 349, 349, 350, 351,
- 352, 351, 352, 352, 352, 352, 352, 351,
- 351, 351, 351, 352, 352, 352, 352, 352,
- 352, 352, 352, 353, 353, 353, 353, 353,
-
- 354, 352, 352, 352, 352, 352, 352, 352,
- 351, 352, 352, 355, 356, 357, 358, 359,
- 360, 361, 362, 363, 363, 364, 365, 337,
- 337, 366, 366, 366, 367, 366, 366, 368,
-
- 369, 370, 371, 372, 373, 374, 375, 376,
- 377, 378, 379, 380, 381, 382, 383, 383,
- 384, 351, 351, 351, 348, 385, 385, 385,
- 386, 352, 352, 352, 352, 352, 352, 352,
-
- 352, 352, 352, 352, 352, 352, 352, 352,
- 351, 351, 351, 351, 351, 351, 351, 351,
- 351, 351, 351, 351, 351, 351, 351, 351,
- 351, 351, 352, 352, 352, 352, 352, 352,
-
- 352, 352, 352, 352, 352, 352, 352, 352,
- 352, 352, 352, 352, 352, 352, 352, 352,
- 352, 352, 352, 352, 352, 352, 352, 352,
- 387, 387, 352, 352, 352, 352, 352, 387,
-
- 349, 352, 350, 351, 351, 351, 351, 351,
- 351, 351, 351, 351, 352, 351, 352, 388,
- 352, 352, 351, 349, 389, 351, 390, 390,
- 390, 390, 390, 390, 390, 391, 392, 390,
-
- 390, 390, 390, 393, 390, 394, 394, 390,
- 390, 392, 393, 390, 390, 393, 395, 395,
- 396, 397, 398, 399, 400, 401, 402, 403,
- 404, 405, 387, 387, 387, 406, 406, 407,
-
- 408, 408, 408, 409, 409, 409, 409, 409,
- 409, 409, 409, 409, 409, 409, 344, 410,
- 411, 412, 413, 413, 413, 411, 411, 411,
- 411, 411, 413, 413, 413, 413, 411, 413,
-
- 413, 413, 413, 413, 413, 413, 413, 413,
- 411, 413, 411, 413, 411, 414, 414, 415,
- 416, 417, 416, 416, 417, 416, 416, 417,
- 417, 417, 416, 417, 417, 416, 417, 416,
-
- 416, 416, 417, 416, 417, 416, 417, 416,
- 417, 416, 416, 344, 344, 415, 414, 414,
- 418, 418, 418, 418, 418, 418, 418, 418,
- 418, 419, 419, 419, 418, 418, 418, 418,
-
- 418, 418, 418, 418, 418, 418, 418, 418,
- 418, 418, 418, 419, 419, 418, 353, 353,
- 353, 420, 353, 420, 420, 353, 353, 353,
- 420, 420, 353, 353, 353, 353, 353, 353,
-
- 421, 421, 421, 421, 421, 421, 421, 421,
- 421, 421, 421, 421, 421, 421, 421, 421,
- 421, 421, 421, 421, 421, 421, 421, 421,
- 421, 421, 421, 421, 421, 421, 421, 421,
-
- 421, 421, 421, 421, 421, 421, 422, 422,
+ 78, 159, 159, 159, 159, 159, 114, 114,
+ 160, 160, 160, 160, 160, 160, 160, 160,
+ 160, 161, 161, 162, 162, 162, 162, 162,
+
+ 163, 163, 164, 164, 164, 164, 161, 161,
+ 165, 161, 161, 161, 165, 161, 161, 161,
+ 162, 162, 164, 164, 164, 164, 164, 164,
+ 52, 52, 52, 52, 52, 52, 164, 166,
+
+ 160, 160, 160, 160, 160, 42, 42, 42,
+ 42, 42, 167, 167, 168, 169, 170, 171,
+ 171, 171, 171, 171, 171, 171, 171, 171,
+ 171, 171, 171, 171, 171, 171, 171, 171,
+
+ 172, 172, 172, 172, 172, 173, 172, 172,
+ 172, 172, 172, 172, 172, 173, 173, 172,
+ 173, 172, 173, 172, 172, 174, 175, 175,
+ 175, 175, 174, 176, 175, 175, 175, 175,
+
+ 175, 177, 177, 178, 178, 178, 178, 179,
+ 179, 175, 175, 175, 175, 178, 178, 175,
+ 178, 178, 175, 175, 180, 180, 180, 180,
+ 181, 175, 175, 175, 175, 173, 173, 173,
+
+ 182, 182, 172, 182, 182, 183, 184, 185,
+ 185, 185, 184, 184, 184, 185, 185, 186,
+ 187, 187, 187, 188, 188, 188, 188, 187,
+ 189, 190, 190, 191, 192, 193, 193, 194,
+
+ 195, 195, 196, 197, 197, 197, 197, 197,
+ 197, 197, 197, 197, 197, 197, 197, 197,
+ 198, 199, 198, 199, 200, 201, 198, 199,
+ 202, 202, 203, 204, 204, 204, 205, 206,
+
+ 202, 202, 202, 202, 207, 208, 209, 210,
+ 211, 211, 211, 202, 212, 202, 213, 213,
+ 214, 215, 215, 215, 215, 215, 215, 215,
+ 215, 215, 215, 215, 215, 215, 215, 215,
+
+ 215, 215, 202, 215, 215, 215, 215, 215,
+ 215, 215, 216, 216, 217, 218, 218, 218,
+ 219, 220, 220, 220, 220, 220, 220, 220,
+ 220, 220, 220, 220, 220, 220, 220, 220,
+
+ 220, 220, 221, 220, 220, 220, 220, 220,
+ 220, 220, 222, 222, 223, 224, 224, 225,
+ 226, 227, 228, 229, 229, 230, 231, 232,
+ 233, 234, 235, 236, 235, 236, 235, 236,
+
+ 235, 236, 237, 238, 237, 238, 237, 238,
+ 237, 238, 237, 238, 237, 238, 237, 238,
+ 239, 240, 241, 242, 243, 244, 245, 246,
+ 247, 248, 246, 247, 249, 250, 250, 250,
+
+ 251, 252, 253, 252, 253, 253, 253, 252,
+ 253, 253, 253, 253, 252, 251, 252, 253,
+ 254, 254, 254, 254, 254, 254, 254, 254,
+ 254, 255, 254, 254, 254, 254, 254, 254,
+
+ 254, 254, 254, 254, 254, 254, 254, 254,
+ 254, 254, 254, 254, 254, 254, 254, 254,
+ 256, 256, 256, 256, 256, 256, 256, 256,
+ 256, 257, 256, 256, 256, 256, 256, 256,
+
+ 256, 256, 256, 256, 256, 256, 256, 256,
+ 256, 256, 256, 256, 256, 256, 256, 256,
+ 258, 259, 260, 259, 260, 260, 260, 259,
+ 260, 260, 260, 260, 259, 258, 259, 260,
+
+ 261, 262, 261, 262, 261, 262, 261, 262,
+ 261, 262, 261, 262, 261, 262, 261, 262,
+ 261, 262, 261, 262, 261, 262, 263, 264,
+ 261, 262, 261, 262, 261, 262, 261, 262,
+
+ 261, 262, 265, 266, 266, 173, 173, 267,
+ 268, 268, 269, 270, 271, 272, 271, 272,
+ 261, 262, 261, 262, 261, 262, 261, 262,
+ 261, 262, 261, 262, 261, 262, 261, 262,
+
+ 261, 262, 261, 262, 261, 262, 261, 262,
+ 261, 262, 261, 262, 261, 262, 261, 262,
+ 261, 262, 261, 262, 261, 262, 261, 262,
+ 261, 262, 261, 262, 261, 262, 261, 262,
+
+ 273, 263, 264, 261, 262, 269, 270, 261,
+ 262, 269, 270, 261, 262, 269, 270, 274,
+ 263, 264, 263, 264, 261, 262, 263, 264,
+ 261, 262, 263, 264, 263, 264, 263, 264,
+
+ 261, 262, 263, 264, 263, 264, 263, 264,
+ 261, 262, 263, 264, 275, 276, 263, 264,
+ 263, 264, 263, 264, 263, 264, 277, 278,
+ 263, 264, 279, 280, 279, 280, 279, 280,
+
+ 269, 270, 269, 270, 269, 270, 269, 270,
+ 269, 270, 269, 270, 269, 270, 269, 270,
+ 279, 280, 279, 280, 281, 282, 281, 282,
+ 281, 282, 281, 282, 281, 282, 281, 282,
+
+ 281, 282, 281, 282, 283, 284, 285, 286,
+ 287, 288, 287, 288, 287, 288, 287, 288,
+ 202, 289, 289, 289, 289, 289, 289, 289,
+ 289, 289, 289, 289, 289, 289, 289, 289,
+
+ 289, 289, 289, 289, 289, 289, 289, 289,
+ 289, 289, 289, 289, 289, 289, 289, 289,
+ 289, 289, 289, 289, 289, 289, 289, 202,
+ 202, 290, 291, 292, 292, 293, 292, 291,
+
+ 294, 295, 295, 295, 295, 295, 295, 295,
+ 295, 295, 295, 295, 295, 295, 295, 295,
+ 295, 295, 295, 295, 295, 295, 295, 295,
+ 295, 295, 295, 295, 295, 295, 295, 295,
+
+ 295, 295, 295, 295, 295, 295, 295, 296,
+ 294, 297, 298, 202, 202, 299, 299, 300,
+ 301, 302, 303, 303, 303, 303, 302, 303,
+ 303, 303, 304, 302, 303, 303, 303, 303,
+
+ 303, 303, 305, 302, 302, 302, 302, 302,
+ 303, 303, 302, 303, 303, 304, 306, 303,
+ 307, 308, 309, 310, 311, 312, 313, 314,
+ 315, 316, 317, 318, 319, 320, 321, 322,
+
+ 323, 324, 325, 323, 303, 305, 326, 327,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 328, 328, 328, 328, 328, 328, 328, 328,
+ 328, 328, 328, 328, 328, 328, 328, 328,
+
+ 328, 328, 328, 328, 328, 328, 328, 328,
+ 328, 328, 328, 301, 301, 301, 301, 329,
+ 328, 328, 328, 330, 331, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+
+ 332, 332, 332, 332, 333, 334, 335, 335,
+ 336, 337, 337, 338, 19, 339, 340, 340,
+ 341, 341, 341, 341, 341, 341, 342, 342,
+ 343, 344, 345, 346, 347, 348, 349, 350,
+
+ 351, 352, 353, 353, 353, 353, 354, 355,
+ 356, 355, 356, 356, 356, 356, 356, 355,
+ 355, 355, 355, 356, 356, 356, 356, 356,
+ 356, 356, 356, 357, 357, 357, 357, 357,
+
+ 358, 356, 356, 356, 356, 356, 356, 356,
+ 355, 356, 356, 359, 360, 361, 362, 363,
+ 364, 365, 366, 367, 367, 368, 369, 341,
+ 341, 370, 370, 370, 371, 370, 370, 372,
+
+ 373, 374, 375, 376, 377, 378, 379, 380,
+ 381, 382, 383, 384, 385, 386, 387, 387,
+ 388, 355, 355, 355, 352, 389, 389, 389,
+ 390, 356, 356, 356, 356, 356, 356, 356,
+
+ 356, 356, 356, 356, 356, 356, 356, 356,
+ 355, 355, 355, 355, 355, 355, 355, 355,
+ 355, 355, 355, 355, 355, 355, 355, 355,
+ 355, 355, 356, 356, 356, 356, 356, 356,
+
+ 356, 356, 356, 356, 356, 356, 356, 356,
+ 356, 356, 356, 356, 356, 356, 356, 356,
+ 356, 356, 356, 356, 356, 356, 356, 356,
+ 391, 391, 356, 356, 356, 356, 356, 391,
+
+ 353, 356, 354, 355, 355, 355, 355, 355,
+ 355, 355, 355, 355, 356, 355, 356, 392,
+ 356, 356, 355, 353, 393, 355, 394, 394,
+ 394, 394, 394, 394, 394, 395, 396, 394,
+
+ 394, 394, 394, 397, 394, 398, 398, 394,
+ 394, 396, 397, 394, 394, 397, 399, 399,
+ 400, 401, 402, 403, 404, 405, 406, 407,
+ 408, 409, 391, 391, 391, 410, 410, 411,
+
+ 412, 412, 412, 413, 413, 413, 413, 413,
+ 413, 413, 413, 413, 413, 413, 348, 414,
+ 415, 416, 417, 417, 417, 415, 415, 415,
+ 415, 415, 417, 417, 417, 417, 415, 417,
+
+ 417, 417, 417, 417, 417, 417, 417, 417,
+ 415, 417, 415, 417, 415, 418, 418, 419,
+ 420, 421, 420, 420, 421, 420, 420, 421,
+ 421, 421, 420, 421, 421, 420, 421, 420,
+
+ 420, 420, 421, 420, 421, 420, 421, 420,
+ 421, 420, 420, 348, 348, 419, 418, 418,
422, 422, 422, 422, 422, 422, 422, 422,
- 422, 423, 344, 344, 344, 344, 344, 344,
- 344, 344, 344, 344, 344, 344, 344, 344,
-
- 424, 425, 426, 427, 428, 429, 430, 431,
- 432, 433, 434, 434, 434, 434, 434, 434,
- 434, 434, 434, 434, 434, 434, 434, 434,
- 434, 434, 434, 434, 434, 434, 434, 434,
-
- 434, 434, 434, 434, 434, 434, 434, 434,
- 434, 434, 434, 435, 435, 435, 435, 435,
- 435, 435, 436, 435, 437, 437, 438, 439,
- 440, 441, 442, 298, 298, 298, 298, 298,
-
- 443, 443, 443, 443, 443, 443, 443, 443,
- 443, 443, 443, 443, 443, 443, 443, 443,
- 443, 443, 443, 443, 443, 443, 444, 444,
- 444, 444, 445, 444, 444, 444, 444, 444,
-
- 444, 444, 444, 444, 445, 444, 444, 444,
- 445, 444, 444, 444, 444, 444, 298, 298,
- 446, 446, 446, 446, 446, 446, 446, 446,
- 446, 446, 446, 446, 446, 446, 446, 298,
-
- 447, 448, 448, 448, 448, 448, 447, 447,
- 448, 447, 448, 448, 448, 448, 448, 448,
- 448, 448, 448, 448, 447, 448, 449, 449,
- 449, 450, 450, 450, 298, 298, 451, 298,
-
- 452, 453, 452, 452, 452, 452, 453, 454,
- 452, 454, 454, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
-
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
-
- 455, 456, 455, 455, 455, 455, 455, 455,
- 455, 455, 457, 457, 457, 458, 459, 456,
- 456, 459, 459, 460, 460, 344, 461, 461,
- 461, 462, 461, 461, 461, 461, 344, 344,
-
- 344, 344, 344, 344, 344, 344, 344, 344,
- 344, 344, 344, 344, 344, 344, 344, 344,
- 344, 344, 344, 344, 463, 463, 463, 463,
- 463, 463, 463, 463, 463, 463, 463, 463,
-
- 463, 463, 464, 465, 466, 466, 467, 466,
- 466, 467, 466, 466, 466, 467, 467, 467,
- 468, 469, 470, 466, 466, 466, 467, 466,
- 466, 467, 467, 466, 466, 466, 466, 471,
-
- 472, 473, 473, 474, 475, 476, 476, 476,
- 476, 476, 476, 476, 476, 476, 476, 476,
- 476, 476, 476, 476, 476, 476, 476, 476,
- 476, 476, 476, 476, 476, 476, 476, 476,
-
- 476, 476, 476, 476, 476, 476, 476, 476,
- 476, 477, 476, 476, 476, 476, 476, 476,
- 476, 477, 476, 476, 477, 476, 476, 476,
- 476, 476, 478, 479, 480, 476, 474, 474,
-
- 474, 473, 473, 473, 473, 473, 473, 473,
- 473, 474, 474, 474, 474, 481, 482, 479,
- 476, 172, 174, 483, 483, 472, 478, 478,
+ 422, 423, 423, 423, 422, 422, 422, 422,
+
+ 422, 422, 422, 422, 422, 422, 422, 422,
+ 422, 422, 422, 423, 423, 422, 357, 357,
+ 357, 424, 357, 424, 424, 357, 357, 357,
+ 424, 424, 357, 357, 357, 357, 357, 357,
+
+ 425, 425, 425, 425, 425, 425, 425, 425,
+ 425, 425, 425, 425, 425, 425, 425, 425,
+ 425, 425, 425, 425, 425, 425, 425, 425,
+ 425, 425, 425, 425, 425, 425, 425, 425,
+
+ 425, 425, 425, 425, 425, 425, 426, 426,
+ 426, 426, 426, 426, 426, 426, 426, 426,
+ 426, 427, 348, 348, 348, 348, 348, 348,
+ 348, 348, 348, 348, 348, 348, 348, 348,
+
+ 428, 429, 430, 431, 432, 433, 434, 435,
+ 436, 437, 438, 438, 438, 438, 438, 438,
+ 438, 438, 438, 438, 438, 438, 438, 438,
+ 438, 438, 438, 438, 438, 438, 438, 438,
+
+ 438, 438, 438, 438, 438, 438, 438, 438,
+ 438, 438, 438, 439, 439, 439, 439, 439,
+ 439, 439, 440, 439, 441, 441, 442, 443,
+ 444, 445, 446, 301, 301, 447, 448, 448,
+
+ 449, 449, 449, 449, 449, 449, 449, 449,
+ 449, 449, 449, 449, 449, 449, 449, 449,
+ 449, 449, 449, 449, 449, 449, 450, 450,
+ 450, 450, 451, 450, 450, 450, 450, 450,
+
+ 450, 450, 450, 450, 451, 450, 450, 450,
+ 451, 450, 450, 450, 450, 450, 301, 301,
+ 452, 452, 452, 452, 452, 452, 452, 453,
+ 452, 453, 452, 452, 452, 453, 453, 301,
+
+ 454, 455, 455, 455, 455, 455, 454, 454,
+ 455, 454, 455, 455, 455, 455, 455, 455,
+ 455, 455, 455, 455, 454, 455, 456, 456,
+ 456, 457, 457, 457, 301, 301, 458, 301,
+
+ 459, 460, 459, 459, 459, 459, 460, 461,
+ 459, 461, 461, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+
+ 462, 463, 462, 462, 462, 462, 462, 462,
+ 462, 462, 464, 464, 464, 465, 466, 463,
+ 463, 466, 466, 467, 467, 348, 468, 468,
+ 468, 469, 468, 468, 468, 468, 348, 348,
+
+ 348, 348, 348, 348, 348, 348, 348, 348,
+ 348, 348, 348, 348, 348, 348, 348, 348,
+ 348, 348, 348, 470, 471, 471, 471, 471,
+ 471, 471, 471, 471, 471, 471, 471, 471,
+
+ 471, 471, 472, 473, 474, 474, 475, 474,
+ 474, 475, 474, 474, 474, 475, 475, 475,
+ 476, 477, 478, 474, 474, 474, 475, 474,
+ 474, 475, 475, 474, 474, 474, 474, 479,
+
+ 480, 481, 481, 482, 483, 484, 484, 484,
+ 484, 484, 484, 484, 484, 484, 484, 484,
+ 484, 484, 484, 484, 484, 484, 484, 484,
484, 484, 484, 484, 484, 484, 484, 484,
- 476, 476, 473, 473, 485, 485, 486, 487,
- 488, 489, 490, 491, 492, 493, 494, 495,
- 496, 497, 498, 499, 499, 499, 499, 499,
- 500, 501, 501, 502, 502, 503, 502, 502,
-
- 504, 505, 506, 506, 201, 507, 507, 507,
- 507, 507, 507, 507, 507, 201, 201, 507,
- 507, 201, 201, 507, 507, 507, 507, 507,
- 507, 507, 507, 507, 507, 507, 507, 507,
-
- 507, 507, 507, 507, 507, 507, 507, 507,
- 507, 201, 507, 507, 507, 507, 507, 507,
- 507, 201, 507, 201, 201, 201, 507, 507,
- 507, 507, 201, 201, 508, 509, 510, 506,
-
- 506, 505, 505, 505, 505, 201, 201, 506,
- 506, 201, 201, 511, 511, 512, 513, 201,
- 201, 201, 201, 201, 201, 201, 201, 510,
- 201, 201, 201, 201, 514, 514, 201, 514,
-
- 507, 507, 505, 505, 201, 201, 515, 516,
- 517, 518, 519, 520, 521, 522, 523, 524,
- 507, 507, 525, 525, 526, 526, 526, 526,
- 526, 527, 528, 529, 530, 531, 201, 201,
-
- 201, 532, 533, 534, 201, 535, 535, 535,
- 535, 535, 535, 201, 201, 201, 201, 535,
- 535, 201, 201, 535, 535, 535, 535, 535,
- 535, 535, 535, 535, 535, 535, 535, 535,
-
- 535, 535, 535, 535, 535, 535, 535, 535,
- 535, 201, 535, 535, 535, 535, 535, 535,
- 535, 201, 535, 536, 201, 535, 536, 201,
- 535, 535, 201, 201, 537, 201, 538, 538,
-
- 538, 533, 533, 201, 201, 201, 201, 533,
- 533, 201, 201, 533, 533, 539, 201, 201,
- 201, 540, 201, 201, 201, 201, 201, 201,
- 201, 536, 536, 536, 535, 201, 536, 201,
-
- 201, 201, 201, 201, 201, 201, 541, 542,
- 543, 544, 545, 546, 547, 548, 549, 550,
- 533, 533, 535, 535, 535, 540, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 201, 551, 551, 552, 201, 553, 553, 553,
- 553, 553, 553, 553, 554, 553, 201, 553,
- 553, 553, 201, 553, 553, 553, 553, 553,
- 553, 553, 553, 553, 553, 553, 553, 553,
-
- 553, 553, 553, 553, 553, 553, 553, 553,
- 553, 201, 553, 553, 553, 553, 553, 553,
- 553, 201, 553, 553, 201, 553, 553, 553,
- 553, 553, 201, 201, 555, 553, 552, 552,
-
- 552, 551, 551, 551, 551, 551, 201, 551,
- 551, 552, 201, 552, 552, 556, 201, 201,
- 553, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 553, 554, 557, 557, 201, 201, 558, 559,
- 560, 561, 562, 563, 564, 565, 566, 567,
- 568, 569, 201, 201, 201, 201, 201, 201,
- 201, 570, 571, 571, 571, 571, 571, 571,
-
- 201, 572, 573, 573, 201, 574, 574, 574,
- 574, 574, 574, 574, 574, 201, 201, 574,
- 574, 201, 201, 574, 574, 574, 574, 574,
- 574, 574, 574, 574, 574, 574, 574, 574,
-
- 574, 574, 574, 574, 574, 574, 574, 574,
- 574, 201, 574, 574, 574, 574, 574, 574,
- 574, 201, 574, 574, 201, 575, 574, 574,
- 574, 574, 201, 201, 576, 574, 577, 572,
-
- 573, 572, 572, 572, 578, 201, 201, 573,
- 579, 201, 201, 579, 579, 580, 201, 201,
- 201, 201, 201, 201, 201, 201, 581, 577,
- 201, 201, 201, 201, 582, 582, 201, 574,
-
- 574, 574, 578, 578, 201, 201, 583, 584,
- 585, 586, 587, 588, 589, 590, 591, 592,
- 593, 575, 594, 594, 594, 594, 594, 594,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 201, 201, 595, 596, 201, 596, 596, 596,
- 596, 596, 596, 201, 201, 201, 596, 596,
- 596, 201, 596, 596, 597, 596, 201, 201,
- 201, 596, 596, 201, 596, 201, 596, 596,
-
- 201, 201, 201, 596, 596, 201, 201, 201,
- 596, 596, 596, 201, 201, 201, 596, 596,
- 596, 596, 596, 596, 596, 596, 598, 596,
- 596, 596, 201, 201, 201, 201, 599, 600,
-
- 595, 600, 600, 201, 201, 201, 600, 600,
- 600, 201, 601, 601, 601, 602, 201, 201,
- 603, 201, 201, 201, 201, 201, 201, 599,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 201, 201, 201, 201, 201, 201, 604, 605,
- 606, 607, 608, 609, 610, 611, 612, 613,
- 614, 614, 614, 615, 615, 615, 615, 615,
- 615, 616, 615, 201, 201, 201, 201, 201,
-
- 617, 618, 618, 618, 201, 619, 619, 619,
- 619, 619, 619, 619, 619, 201, 619, 619,
- 619, 201, 619, 619, 619, 619, 619, 619,
- 619, 619, 619, 619, 619, 619, 619, 619,
-
- 619, 619, 619, 619, 619, 619, 619, 619,
- 619, 201, 619, 619, 619, 619, 619, 619,
- 619, 619, 619, 619, 620, 619, 619, 619,
- 619, 619, 201, 201, 201, 621, 622, 622,
-
- 622, 618, 618, 618, 618, 201, 622, 622,
- 623, 201, 622, 622, 622, 624, 201, 201,
- 201, 201, 201, 201, 201, 625, 626, 201,
- 621, 621, 627, 201, 201, 201, 201, 201,
-
- 619, 619, 628, 628, 201, 201, 629, 630,
- 631, 632, 633, 634, 635, 636, 637, 638,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 639, 639, 639, 639, 639, 639, 639, 640,
-
- 641, 642, 643, 643, 201, 644, 644, 644,
- 644, 644, 644, 644, 644, 201, 644, 644,
- 644, 201, 644, 644, 644, 644, 644, 644,
- 644, 644, 644, 644, 644, 644, 644, 644,
-
- 644, 644, 644, 644, 644, 644, 644, 644,
- 644, 201, 644, 644, 644, 644, 644, 644,
- 644, 644, 644, 644, 201, 644, 644, 644,
- 644, 644, 201, 201, 645, 646, 643, 647,
-
- 648, 643, 649, 643, 643, 201, 647, 648,
- 648, 201, 648, 648, 650, 651, 201, 201,
- 201, 201, 201, 201, 201, 649, 649, 201,
- 201, 201, 201, 201, 201, 201, 644, 201,
-
- 644, 644, 652, 652, 201, 201, 653, 654,
- 655, 656, 657, 658, 659, 660, 661, 662,
- 201, 663, 663, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 664, 665, 666, 666, 201, 667, 667, 667,
- 667, 667, 667, 667, 667, 201, 667, 667,
- 667, 201, 667, 667, 667, 667, 667, 667,
- 667, 667, 667, 667, 667, 667, 667, 667,
-
- 667, 667, 667, 667, 667, 667, 667, 667,
- 667, 668, 667, 667, 667, 667, 667, 667,
- 667, 667, 667, 667, 667, 667, 667, 667,
- 667, 667, 668, 669, 669, 670, 671, 666,
-
- 666, 672, 672, 672, 673, 201, 666, 666,
- 666, 201, 674, 674, 674, 675, 676, 677,
- 201, 201, 201, 201, 678, 678, 678, 671,
- 679, 679, 679, 679, 679, 679, 679, 680,
-
- 667, 667, 673, 673, 201, 201, 681, 682,
- 683, 684, 685, 686, 687, 688, 689, 690,
- 691, 691, 691, 691, 691, 691, 679, 679,
- 679, 692, 670, 670, 670, 670, 670, 670,
-
- 201, 201, 693, 693, 201, 694, 694, 694,
- 694, 694, 694, 694, 694, 694, 694, 694,
- 694, 694, 694, 694, 694, 694, 694, 201,
- 201, 201, 694, 694, 694, 694, 694, 694,
-
- 694, 694, 694, 694, 694, 694, 694, 694,
- 694, 694, 694, 694, 694, 694, 694, 694,
- 694, 694, 201, 694, 694, 694, 694, 694,
- 694, 694, 694, 694, 201, 694, 201, 201,
-
- 694, 694, 694, 694, 694, 694, 694, 201,
- 201, 201, 695, 201, 201, 201, 201, 696,
- 693, 693, 697, 697, 697, 201, 697, 201,
- 693, 693, 698, 693, 698, 698, 698, 696,
-
- 201, 201, 201, 201, 201, 201, 699, 700,
- 701, 702, 703, 704, 705, 706, 707, 708,
- 201, 201, 693, 693, 709, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 201, 710, 710, 710, 710, 710, 710, 710,
- 710, 710, 710, 710, 710, 710, 710, 710,
- 710, 710, 710, 710, 710, 710, 710, 710,
- 710, 710, 710, 710, 710, 710, 710, 710,
-
- 710, 710, 710, 710, 710, 710, 710, 710,
- 710, 710, 710, 710, 710, 710, 710, 710,
- 710, 711, 710, 712, 711, 711, 711, 711,
- 713, 713, 714, 201, 201, 201, 201, 12,
-
- 710, 710, 710, 710, 710, 710, 715, 711,
- 716, 716, 716, 716, 711, 711, 711, 717,
- 718, 719, 720, 721, 722, 723, 724, 725,
- 726, 727, 728, 728, 201, 201, 201, 201,
-
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 201, 729, 729, 201, 729, 201, 201, 729,
- 729, 201, 729, 201, 201, 729, 201, 201,
- 201, 201, 201, 201, 729, 729, 729, 729,
- 201, 729, 729, 729, 729, 729, 729, 729,
-
- 201, 729, 729, 729, 201, 729, 201, 729,
- 201, 201, 729, 729, 201, 729, 729, 729,
- 729, 730, 729, 731, 730, 730, 730, 730,
- 732, 732, 201, 730, 730, 729, 201, 201,
-
- 729, 729, 729, 729, 729, 201, 733, 201,
- 734, 734, 734, 734, 730, 730, 201, 201,
- 735, 736, 737, 738, 739, 740, 741, 742,
- 743, 744, 201, 201, 745, 745, 746, 746,
-
- 747, 748, 748, 748, 749, 750, 749, 749,
- 751, 749, 749, 752, 753, 754, 754, 754,
- 754, 754, 751, 755, 754, 755, 755, 755,
- 756, 756, 755, 755, 755, 755, 755, 755,
-
- 757, 758, 759, 760, 761, 762, 763, 764,
- 765, 766, 767, 767, 767, 767, 767, 767,
- 767, 767, 767, 767, 768, 756, 755, 756,
- 755, 769, 770, 771, 770, 771, 772, 772,
-
- 747, 747, 747, 773, 747, 747, 747, 747,
- 201, 747, 747, 747, 747, 773, 747, 747,
- 747, 747, 773, 747, 747, 747, 747, 773,
- 747, 747, 747, 747, 773, 747, 747, 747,
-
- 747, 747, 747, 747, 747, 747, 747, 747,
- 747, 773, 774, 775, 775, 201, 201, 201,
- 201, 776, 777, 778, 779, 778, 778, 780,
- 778, 780, 777, 777, 777, 777, 781, 782,
-
- 777, 778, 783, 783, 784, 752, 783, 783,
- 747, 747, 747, 747, 785, 786, 786, 786,
- 781, 781, 781, 778, 781, 781, 787, 781,
- 201, 781, 781, 781, 781, 778, 781, 781,
-
- 781, 781, 778, 781, 781, 781, 781, 778,
- 781, 781, 781, 781, 778, 781, 787, 787,
- 787, 781, 781, 781, 781, 781, 781, 781,
- 787, 778, 787, 787, 787, 201, 788, 788,
-
- 789, 789, 789, 789, 789, 789, 790, 789,
- 789, 789, 789, 789, 789, 201, 791, 789,
- 792, 792, 793, 794, 795, 796, 796, 796,
- 796, 797, 797, 201, 201, 201, 201, 201,
-
- 798, 798, 798, 798, 798, 798, 798, 798,
- 798, 798, 798, 798, 798, 798, 798, 798,
- 798, 798, 798, 798, 798, 798, 798, 798,
- 798, 798, 798, 798, 798, 798, 798, 798,
-
- 798, 798, 799, 798, 798, 798, 800, 798,
- 799, 798, 798, 801, 802, 803, 804, 803,
- 803, 805, 803, 806, 806, 806, 803, 807,
- 802, 808, 809, 810, 810, 806, 806, 799,
-
- 811, 812, 813, 814, 815, 816, 817, 818,
- 819, 820, 821, 821, 822, 822, 822, 822,
- 798, 798, 798, 798, 798, 798, 805, 805,
- 803, 803, 799, 799, 799, 799, 806, 806,
-
- 806, 799, 801, 801, 801, 799, 799, 801,
- 801, 801, 801, 801, 801, 801, 799, 799,
- 799, 806, 806, 806, 806, 799, 799, 799,
- 799, 799, 799, 799, 799, 799, 799, 799,
-
- 799, 799, 806, 801, 810, 806, 806, 801,
- 801, 801, 801, 801, 801, 823, 799, 801,
- 824, 825, 826, 827, 828, 829, 830, 831,
- 832, 833, 834, 834, 834, 835, 836, 836,
-
- 837, 837, 837, 837, 837, 837, 837, 837,
- 837, 837, 837, 837, 837, 837, 837, 837,
- 837, 837, 837, 837, 837, 837, 837, 837,
- 837, 837, 837, 837, 837, 837, 837, 837,
-
- 837, 837, 837, 837, 837, 837, 201, 838,
- 201, 201, 201, 201, 201, 838, 201, 201,
- 839, 839, 839, 839, 839, 839, 839, 839,
- 839, 839, 839, 839, 839, 839, 839, 839,
-
- 839, 839, 839, 839, 839, 839, 839, 839,
- 839, 839, 839, 839, 839, 839, 839, 839,
- 839, 839, 839, 839, 839, 839, 839, 840,
- 840, 841, 841, 842, 843, 844, 844, 844,
-
- 845, 845, 845, 845, 845, 845, 845, 845,
- 845, 845, 845, 845, 845, 845, 845, 845,
- 845, 845, 845, 845, 845, 845, 845, 845,
- 845, 845, 845, 845, 845, 845, 845, 845,
-
- 845, 845, 845, 845, 845, 845, 845, 845,
- 845, 845, 845, 845, 845, 845, 845, 845,
- 845, 845, 845, 845, 845, 845, 845, 845,
- 845, 845, 846, 846, 846, 846, 846, 845,
-
- 847, 848, 848, 848, 848, 848, 848, 848,
- 848, 848, 848, 848, 848, 848, 848, 848,
- 848, 848, 848, 848, 848, 848, 847, 847,
- 847, 847, 847, 847, 847, 847, 847, 847,
-
- 847, 847, 847, 847, 847, 847, 847, 847,
- 847, 847, 847, 847, 847, 847, 847, 847,
- 847, 847, 847, 847, 847, 847, 847, 847,
- 847, 847, 847, 847, 847, 847, 847, 847,
-
- 847, 847, 847, 849, 849, 849, 849, 849,
- 850, 850, 850, 850, 850, 850, 850, 850,
- 850, 850, 850, 850, 850, 850, 850, 850,
- 850, 850, 850, 850, 850, 850, 850, 850,
-
- 850, 850, 850, 851, 851, 851, 851, 851,
- 851, 851, 851, 851, 851, 851, 851, 851,
- 851, 851, 851, 851, 851, 851, 851, 851,
- 851, 851, 851, 851, 851, 851, 851, 851,
+ 484, 484, 484, 484, 484, 484, 484, 484,
+ 484, 485, 484, 484, 484, 484, 484, 484,
+ 484, 485, 484, 484, 485, 484, 484, 484,
+ 484, 484, 486, 487, 488, 484, 482, 482,
+
+ 482, 481, 481, 481, 481, 481, 481, 481,
+ 481, 482, 482, 482, 482, 489, 490, 487,
+ 484, 173, 175, 173, 173, 480, 486, 486,
+ 491, 491, 491, 491, 491, 491, 491, 491,
+
+ 484, 484, 481, 481, 492, 492, 493, 494,
+ 495, 496, 497, 498, 499, 500, 501, 502,
+ 503, 504, 505, 506, 506, 506, 506, 506,
+ 507, 508, 508, 509, 509, 510, 509, 509,
+
+ 511, 512, 513, 513, 202, 514, 514, 514,
+ 514, 514, 514, 514, 514, 202, 202, 514,
+ 514, 202, 202, 514, 514, 514, 514, 514,
+ 514, 514, 514, 514, 514, 514, 514, 514,
+
+ 514, 514, 514, 514, 514, 514, 514, 514,
+ 514, 202, 514, 514, 514, 514, 514, 514,
+ 514, 202, 514, 202, 202, 202, 514, 514,
+ 514, 514, 202, 202, 515, 516, 517, 513,
+
+ 513, 512, 512, 512, 512, 202, 202, 513,
+ 513, 202, 202, 518, 518, 519, 520, 202,
+ 202, 202, 202, 202, 202, 202, 202, 517,
+ 202, 202, 202, 202, 521, 521, 202, 521,
+
+ 514, 514, 512, 512, 202, 202, 522, 523,
+ 524, 525, 526, 527, 528, 529, 530, 531,
+ 514, 514, 532, 532, 533, 533, 533, 533,
+ 533, 534, 535, 536, 537, 538, 539, 202,
+
+ 202, 540, 541, 542, 202, 543, 543, 543,
+ 543, 543, 543, 202, 202, 202, 202, 543,
+ 543, 202, 202, 543, 543, 543, 543, 543,
+ 543, 543, 543, 543, 543, 543, 543, 543,
+
+ 543, 543, 543, 543, 543, 543, 543, 543,
+ 543, 202, 543, 543, 543, 543, 543, 543,
+ 543, 202, 543, 544, 202, 543, 544, 202,
+ 543, 543, 202, 202, 545, 202, 546, 546,
+
+ 546, 541, 541, 202, 202, 202, 202, 541,
+ 541, 202, 202, 541, 541, 547, 202, 202,
+ 202, 548, 202, 202, 202, 202, 202, 202,
+ 202, 544, 544, 544, 543, 202, 544, 202,
+
+ 202, 202, 202, 202, 202, 202, 549, 550,
+ 551, 552, 553, 554, 555, 556, 557, 558,
+ 541, 541, 543, 543, 543, 548, 559, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 202, 560, 560, 561, 202, 562, 562, 562,
+ 562, 562, 562, 562, 563, 562, 202, 562,
+ 562, 562, 202, 562, 562, 562, 562, 562,
+ 562, 562, 562, 562, 562, 562, 562, 562,
+
+ 562, 562, 562, 562, 562, 562, 562, 562,
+ 562, 202, 562, 562, 562, 562, 562, 562,
+ 562, 202, 562, 562, 202, 562, 562, 562,
+ 562, 562, 202, 202, 564, 562, 561, 561,
+
+ 561, 560, 560, 560, 560, 560, 202, 560,
+ 560, 561, 202, 561, 561, 565, 202, 202,
+ 562, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 562, 563, 566, 566, 202, 202, 567, 568,
+ 569, 570, 571, 572, 573, 574, 575, 576,
+ 577, 578, 202, 202, 202, 202, 202, 202,
+ 202, 579, 580, 580, 580, 580, 580, 580,
+
+ 202, 581, 582, 582, 202, 583, 583, 583,
+ 583, 583, 583, 583, 583, 202, 202, 583,
+ 583, 202, 202, 583, 583, 583, 583, 583,
+ 583, 583, 583, 583, 583, 583, 583, 583,
+
+ 583, 583, 583, 583, 583, 583, 583, 583,
+ 583, 202, 583, 583, 583, 583, 583, 583,
+ 583, 202, 583, 583, 202, 584, 583, 583,
+ 583, 583, 202, 202, 585, 583, 586, 581,
+
+ 582, 581, 581, 581, 587, 202, 202, 582,
+ 588, 202, 202, 588, 588, 589, 202, 202,
+ 202, 202, 202, 202, 202, 202, 590, 586,
+ 202, 202, 202, 202, 591, 591, 202, 583,
+
+ 583, 583, 587, 587, 202, 202, 592, 593,
+ 594, 595, 596, 597, 598, 599, 600, 601,
+ 602, 584, 603, 603, 603, 603, 603, 603,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 202, 202, 604, 605, 202, 605, 605, 605,
+ 605, 605, 605, 202, 202, 202, 605, 605,
+ 605, 202, 605, 605, 606, 605, 202, 202,
+ 202, 605, 605, 202, 605, 202, 605, 605,
+
+ 202, 202, 202, 605, 605, 202, 202, 202,
+ 605, 605, 605, 202, 202, 202, 605, 605,
+ 605, 605, 605, 605, 605, 605, 607, 605,
+ 605, 605, 202, 202, 202, 202, 608, 609,
+
+ 604, 609, 609, 202, 202, 202, 609, 609,
+ 609, 202, 610, 610, 610, 611, 202, 202,
+ 612, 202, 202, 202, 202, 202, 202, 608,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 202, 202, 202, 202, 202, 202, 613, 614,
+ 615, 616, 617, 618, 619, 620, 621, 622,
+ 623, 623, 623, 624, 624, 624, 624, 624,
+ 624, 625, 624, 202, 202, 202, 202, 202,
+
+ 626, 627, 627, 627, 628, 629, 629, 629,
+ 629, 629, 629, 629, 629, 202, 629, 629,
+ 629, 202, 629, 629, 629, 629, 629, 629,
+ 629, 629, 629, 629, 629, 629, 629, 629,
+
+ 629, 629, 629, 629, 629, 629, 629, 629,
+ 629, 202, 629, 629, 629, 629, 629, 629,
+ 629, 629, 629, 629, 630, 629, 629, 629,
+ 629, 629, 202, 202, 202, 631, 632, 632,
+
+ 632, 627, 627, 627, 627, 202, 632, 632,
+ 633, 202, 632, 632, 632, 634, 202, 202,
+ 202, 202, 202, 202, 202, 635, 636, 202,
+ 631, 631, 637, 202, 202, 202, 202, 202,
+
+ 629, 629, 638, 638, 202, 202, 639, 640,
+ 641, 642, 643, 644, 645, 646, 647, 648,
+ 202, 202, 202, 202, 202, 202, 202, 649,
+ 650, 650, 650, 650, 650, 650, 650, 651,
+
+ 652, 653, 654, 654, 655, 656, 656, 656,
+ 656, 656, 656, 656, 656, 202, 656, 656,
+ 656, 202, 656, 656, 656, 656, 656, 656,
+ 656, 656, 656, 656, 656, 656, 656, 656,
+
+ 656, 656, 656, 656, 656, 656, 656, 656,
+ 656, 202, 656, 656, 656, 656, 656, 656,
+ 656, 656, 656, 656, 202, 656, 656, 656,
+ 656, 656, 202, 202, 657, 658, 654, 659,
+
+ 660, 654, 661, 654, 654, 202, 659, 660,
+ 660, 202, 660, 660, 662, 663, 202, 202,
+ 202, 202, 202, 202, 202, 661, 661, 202,
+ 202, 202, 202, 202, 202, 202, 656, 202,
+
+ 656, 656, 664, 664, 202, 202, 665, 666,
+ 667, 668, 669, 670, 671, 672, 673, 674,
+ 202, 675, 675, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 676, 677, 678, 678, 202, 679, 679, 679,
+ 679, 679, 679, 679, 679, 202, 679, 679,
+ 679, 202, 679, 679, 679, 679, 679, 679,
+ 679, 679, 679, 679, 679, 679, 679, 679,
+
+ 679, 679, 679, 679, 679, 679, 679, 679,
+ 679, 680, 679, 679, 679, 679, 679, 679,
+ 679, 679, 679, 679, 679, 679, 679, 679,
+ 679, 679, 680, 681, 681, 682, 683, 678,
+
+ 678, 684, 684, 684, 685, 202, 678, 678,
+ 678, 202, 686, 686, 686, 687, 688, 689,
+ 202, 202, 202, 202, 690, 690, 690, 683,
+ 691, 691, 691, 691, 691, 691, 691, 692,
+
+ 679, 679, 685, 685, 202, 202, 693, 694,
+ 695, 696, 697, 698, 699, 700, 701, 702,
+ 703, 703, 703, 703, 703, 703, 691, 691,
+ 691, 704, 682, 682, 682, 682, 682, 682,
+
+ 202, 202, 705, 705, 202, 706, 706, 706,
+ 706, 706, 706, 706, 706, 706, 706, 706,
+ 706, 706, 706, 706, 706, 706, 706, 202,
+ 202, 202, 706, 706, 706, 706, 706, 706,
+
+ 706, 706, 706, 706, 706, 706, 706, 706,
+ 706, 706, 706, 706, 706, 706, 706, 706,
+ 706, 706, 202, 706, 706, 706, 706, 706,
+ 706, 706, 706, 706, 202, 706, 202, 202,
+
+ 706, 706, 706, 706, 706, 706, 706, 202,
+ 202, 202, 707, 202, 202, 202, 202, 708,
+ 705, 705, 709, 709, 709, 202, 709, 202,
+ 705, 705, 710, 705, 710, 710, 710, 708,
+
+ 202, 202, 202, 202, 202, 202, 711, 712,
+ 713, 714, 715, 716, 717, 718, 719, 720,
+ 202, 202, 705, 705, 721, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 202, 722, 722, 722, 722, 722, 722, 722,
+ 722, 722, 722, 722, 722, 722, 722, 722,
+ 722, 722, 722, 722, 722, 722, 722, 722,
+ 722, 722, 722, 722, 722, 722, 722, 722,
+
+ 722, 722, 722, 722, 722, 722, 722, 722,
+ 722, 722, 722, 722, 722, 722, 722, 722,
+ 722, 723, 722, 724, 723, 723, 723, 723,
+ 725, 725, 726, 202, 202, 202, 202, 12,
+
+ 722, 722, 722, 722, 722, 722, 727, 723,
+ 728, 728, 728, 728, 723, 723, 723, 729,
+ 730, 731, 732, 733, 734, 735, 736, 737,
+ 738, 739, 740, 740, 202, 202, 202, 202,
+
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 202, 741, 741, 202, 741, 202, 742, 741,
+ 741, 742, 741, 202, 742, 741, 742, 742,
+ 742, 742, 742, 742, 741, 741, 741, 741,
+ 742, 741, 741, 741, 741, 741, 741, 741,
+
+ 742, 741, 741, 741, 202, 741, 202, 741,
+ 742, 742, 741, 741, 742, 741, 741, 741,
+ 741, 743, 741, 744, 743, 743, 743, 743,
+ 745, 745, 746, 743, 743, 741, 202, 202,
+
+ 741, 741, 741, 741, 741, 202, 747, 202,
+ 748, 748, 748, 748, 743, 743, 202, 202,
+ 749, 750, 751, 752, 753, 754, 755, 756,
+ 757, 758, 202, 202, 759, 759, 760, 760,
+
+ 761, 762, 762, 762, 763, 764, 763, 763,
+ 765, 763, 763, 766, 767, 768, 768, 768,
+ 768, 768, 765, 769, 768, 769, 769, 769,
+ 770, 770, 769, 769, 769, 769, 769, 769,
+
+ 771, 772, 773, 774, 775, 776, 777, 778,
+ 779, 780, 781, 781, 781, 781, 781, 781,
+ 781, 781, 781, 781, 782, 770, 769, 770,
+ 769, 783, 784, 785, 784, 785, 786, 786,
+
+ 761, 761, 761, 787, 761, 761, 761, 761,
+ 202, 761, 761, 761, 761, 787, 761, 761,
+ 761, 761, 787, 761, 761, 761, 761, 787,
+ 761, 761, 761, 761, 787, 761, 761, 761,
+
+ 761, 761, 761, 761, 761, 761, 761, 761,
+ 761, 787, 788, 789, 789, 202, 202, 202,
+ 202, 790, 791, 792, 793, 792, 792, 794,
+ 792, 794, 791, 791, 791, 791, 795, 796,
+
+ 791, 792, 797, 797, 798, 766, 797, 797,
+ 761, 761, 761, 761, 799, 800, 800, 800,
+ 795, 795, 795, 792, 795, 795, 801, 795,
+ 202, 795, 795, 795, 795, 792, 795, 795,
+
+ 795, 795, 792, 795, 795, 795, 795, 792,
+ 795, 795, 795, 795, 792, 795, 801, 801,
+ 801, 795, 795, 795, 795, 795, 795, 795,
+ 801, 792, 801, 801, 801, 202, 802, 802,
+
+ 803, 803, 803, 803, 803, 803, 804, 803,
+ 803, 803, 803, 803, 803, 202, 805, 803,
+ 806, 806, 807, 808, 809, 810, 810, 810,
+ 810, 811, 811, 202, 202, 202, 202, 202,
+
+ 812, 812, 812, 812, 812, 812, 812, 812,
+ 812, 812, 812, 812, 812, 812, 812, 812,
+ 812, 812, 812, 812, 812, 812, 812, 812,
+ 812, 812, 812, 812, 812, 812, 812, 812,
+
+ 812, 812, 813, 812, 812, 812, 814, 812,
+ 813, 812, 812, 815, 816, 817, 818, 817,
+ 817, 819, 817, 820, 820, 820, 817, 821,
+ 816, 822, 823, 824, 824, 820, 820, 813,
+
+ 825, 826, 827, 828, 829, 830, 831, 832,
+ 833, 834, 835, 835, 836, 836, 836, 836,
+ 812, 812, 812, 812, 812, 812, 819, 819,
+ 817, 817, 813, 813, 813, 813, 820, 820,
+
+ 820, 813, 815, 815, 815, 813, 813, 815,
+ 815, 815, 815, 815, 815, 815, 813, 813,
+ 813, 820, 820, 820, 820, 813, 813, 813,
+ 813, 813, 813, 813, 813, 813, 813, 813,
+
+ 813, 813, 820, 815, 824, 820, 820, 815,
+ 815, 815, 815, 815, 815, 837, 813, 815,
+ 838, 839, 840, 841, 842, 843, 844, 845,
+ 846, 847, 848, 848, 848, 849, 850, 850,
851, 851, 851, 851, 851, 851, 851, 851,
851, 851, 851, 851, 851, 851, 851, 851,
851, 851, 851, 851, 851, 851, 851, 851,
- 851, 851, 852, 852, 852, 852, 852, 852,
-
- 853, 853, 853, 853, 853, 853, 853, 854,
- 853, 853, 853, 853, 853, 853, 853, 853,
- 853, 853, 853, 853, 853, 853, 853, 853,
- 853, 853, 853, 853, 853, 853, 853, 853,
-
- 853, 853, 853, 853, 853, 853, 853, 853,
- 853, 853, 853, 853, 853, 853, 853, 853,
- 853, 853, 853, 853, 853, 853, 853, 853,
- 853, 853, 853, 853, 853, 853, 853, 853,
-
- 853, 853, 853, 853, 853, 853, 853, 854,
- 853, 201, 853, 853, 853, 853, 201, 201,
- 853, 853, 853, 853, 853, 853, 853, 201,
- 853, 201, 853, 853, 853, 853, 201, 201,
-
- 853, 853, 853, 853, 853, 853, 853, 854,
- 853, 201, 853, 853, 853, 853, 201, 201,
- 853, 853, 853, 853, 853, 853, 853, 853,
- 853, 853, 853, 853, 853, 853, 853, 853,
+ 851, 851, 851, 851, 851, 851, 851, 851,
+ 851, 851, 851, 851, 851, 851, 202, 852,
+ 202, 202, 202, 202, 202, 852, 202, 202,
853, 853, 853, 853, 853, 853, 853, 853,
- 853, 853, 853, 853, 853, 853, 853, 854,
- 853, 201, 853, 853, 853, 853, 201, 201,
- 853, 853, 853, 853, 853, 853, 853, 201,
-
- 853, 201, 853, 853, 853, 853, 201, 201,
- 853, 853, 853, 853, 853, 853, 853, 854,
- 853, 853, 853, 853, 853, 853, 853, 201,
853, 853, 853, 853, 853, 853, 853, 853,
853, 853, 853, 853, 853, 853, 853, 853,
- 853, 853, 853, 853, 853, 853, 853, 854,
- 853, 853, 853, 853, 853, 853, 853, 853,
- 853, 853, 853, 853, 853, 853, 853, 853,
-
853, 853, 853, 853, 853, 853, 853, 853,
853, 853, 853, 853, 853, 853, 853, 854,
- 853, 201, 853, 853, 853, 853, 201, 201,
- 853, 853, 853, 853, 853, 853, 853, 854,
-
- 853, 853, 853, 853, 853, 853, 853, 854,
- 853, 853, 853, 853, 853, 853, 853, 853,
- 853, 853, 853, 853, 853, 853, 853, 853,
- 853, 853, 853, 201, 201, 855, 855, 856,
-
- 857, 858, 859, 860, 860, 860, 860, 859,
- 859, 861, 862, 863, 864, 865, 866, 867,
- 868, 869, 870, 870, 870, 870, 870, 870,
- 870, 870, 870, 870, 870, 201, 201, 201,
-
- 854, 854, 854, 854, 854, 854, 854, 854,
- 854, 854, 854, 854, 854, 854, 854, 854,
- 871, 871, 871, 871, 871, 871, 871, 871,
- 871, 871, 201, 201, 201, 201, 201, 201,
-
- 872, 873, 874, 875, 876, 877, 878, 879,
- 880, 881, 882, 883, 884, 885, 886, 887,
- 888, 889, 890, 891, 892, 893, 894, 895,
- 896, 897, 898, 899, 900, 901, 902, 903,
-
- 904, 905, 906, 907, 908, 909, 910, 911,
- 912, 913, 914, 915, 916, 917, 918, 919,
- 920, 921, 922, 923, 924, 925, 926, 927,
- 928, 929, 930, 931, 932, 933, 934, 935,
-
- 936, 937, 938, 939, 940, 941, 942, 943,
- 944, 945, 946, 947, 948, 949, 950, 951,
- 952, 952, 952, 952, 952, 953, 201, 201,
- 954, 954, 954, 954, 954, 954, 201, 201,
-
- 955, 956, 956, 956, 956, 956, 956, 956,
- 956, 956, 956, 956, 956, 956, 956, 956,
- 956, 956, 956, 956, 956, 956, 956, 956,
- 956, 956, 956, 956, 956, 956, 956, 956,
-
- 956, 956, 956, 956, 956, 956, 956, 956,
- 956, 956, 956, 956, 956, 956, 956, 956,
- 956, 956, 956, 956, 956, 956, 956, 956,
- 956, 956, 956, 956, 956, 956, 956, 956,
-
- 956, 956, 956, 956, 956, 956, 956, 956,
- 956, 956, 956, 956, 956, 957, 958, 956,
- 956, 956, 956, 956, 956, 956, 956, 959,
- 959, 959, 959, 959, 959, 959, 959, 959,
-
- 960, 961, 961, 961, 961, 961, 961, 961,
- 961, 961, 961, 961, 961, 961, 961, 961,
- 961, 961, 961, 961, 961, 961, 961, 961,
- 961, 961, 961, 962, 963, 201, 201, 201,
-
- 964, 964, 964, 964, 964, 964, 964, 964,
- 964, 964, 964, 964, 964, 964, 964, 964,
- 964, 964, 964, 964, 964, 964, 964, 964,
- 964, 964, 964, 964, 964, 964, 964, 964,
-
- 964, 964, 964, 964, 964, 964, 964, 964,
- 964, 964, 964, 965, 965, 965, 966, 966,
- 966, 967, 967, 967, 967, 967, 967, 967,
- 967, 201, 201, 201, 201, 201, 201, 201,
-
- 968, 968, 968, 968, 968, 968, 968, 968,
- 968, 968, 968, 968, 968, 201, 968, 968,
- 968, 968, 969, 969, 970, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 971, 971, 971, 971, 971, 971, 971, 971,
- 971, 971, 971, 971, 971, 971, 971, 971,
- 971, 971, 972, 972, 973, 974, 974, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
+ 854, 855, 855, 856, 857, 858, 858, 858,
+
+ 859, 859, 859, 859, 859, 859, 859, 859,
+ 859, 859, 859, 859, 859, 859, 859, 859,
+ 859, 859, 859, 859, 859, 859, 859, 859,
+ 859, 859, 859, 859, 859, 859, 859, 859,
+
+ 859, 859, 859, 859, 859, 859, 859, 859,
+ 859, 859, 859, 859, 859, 859, 859, 859,
+ 859, 859, 859, 859, 859, 859, 859, 859,
+ 859, 859, 860, 860, 860, 860, 860, 859,
+
+ 861, 862, 862, 862, 862, 862, 862, 862,
+ 862, 862, 862, 862, 862, 862, 862, 862,
+ 862, 862, 862, 862, 862, 862, 861, 861,
+ 861, 861, 861, 861, 861, 861, 861, 861,
+
+ 861, 861, 861, 861, 861, 861, 861, 861,
+ 861, 861, 861, 861, 861, 861, 861, 861,
+ 861, 861, 861, 861, 861, 861, 861, 861,
+ 861, 861, 861, 861, 861, 861, 861, 861,
+
+ 861, 861, 861, 863, 863, 863, 863, 863,
+ 864, 864, 864, 864, 864, 864, 864, 864,
+ 864, 864, 864, 864, 864, 864, 864, 864,
+ 864, 864, 864, 864, 864, 864, 864, 864,
+
+ 864, 864, 864, 865, 865, 865, 865, 865,
+ 865, 865, 865, 865, 865, 865, 865, 865,
+ 865, 865, 865, 865, 865, 865, 865, 865,
+ 865, 865, 865, 865, 865, 865, 865, 865,
+
+ 865, 865, 865, 865, 865, 865, 865, 865,
+ 865, 865, 865, 865, 865, 865, 865, 865,
+ 865, 865, 865, 865, 865, 865, 865, 865,
+ 865, 865, 866, 866, 866, 866, 866, 866,
+
+ 867, 867, 867, 867, 867, 867, 867, 868,
+ 867, 867, 867, 867, 867, 867, 867, 867,
+ 867, 867, 867, 867, 867, 867, 867, 867,
+ 867, 867, 867, 867, 867, 867, 867, 867,
+
+ 867, 867, 867, 867, 867, 867, 867, 867,
+ 867, 867, 867, 867, 867, 867, 867, 867,
+ 867, 867, 867, 867, 867, 867, 867, 867,
+ 867, 867, 867, 867, 867, 867, 867, 867,
+
+ 867, 867, 867, 867, 867, 867, 867, 868,
+ 867, 202, 867, 867, 867, 867, 202, 202,
+ 867, 867, 867, 867, 867, 867, 867, 202,
+ 867, 202, 867, 867, 867, 867, 202, 202,
+
+ 867, 867, 867, 867, 867, 867, 867, 868,
+ 867, 202, 867, 867, 867, 867, 202, 202,
+ 867, 867, 867, 867, 867, 867, 867, 867,
+ 867, 867, 867, 867, 867, 867, 867, 867,
+
+ 867, 867, 867, 867, 867, 867, 867, 867,
+ 867, 867, 867, 867, 867, 867, 867, 868,
+ 867, 202, 867, 867, 867, 867, 202, 202,
+ 867, 867, 867, 867, 867, 867, 867, 202,
+
+ 867, 202, 867, 867, 867, 867, 202, 202,
+ 867, 867, 867, 867, 867, 867, 867, 868,
+ 867, 867, 867, 867, 867, 867, 867, 202,
+ 867, 867, 867, 867, 867, 867, 867, 867,
+
+ 867, 867, 867, 867, 867, 867, 867, 867,
+ 867, 867, 867, 867, 867, 867, 867, 868,
+ 867, 867, 867, 867, 867, 867, 867, 867,
+ 867, 867, 867, 867, 867, 867, 867, 867,
+
+ 867, 867, 867, 867, 867, 867, 867, 867,
+ 867, 867, 867, 867, 867, 867, 867, 868,
+ 867, 202, 867, 867, 867, 867, 202, 202,
+ 867, 867, 867, 867, 867, 867, 867, 868,
+
+ 867, 867, 867, 867, 867, 867, 867, 868,
+ 867, 867, 867, 867, 867, 867, 867, 867,
+ 867, 867, 867, 867, 867, 867, 867, 867,
+ 867, 867, 867, 202, 202, 869, 869, 870,
+
+ 871, 872, 873, 874, 874, 874, 874, 873,
+ 873, 875, 876, 877, 878, 879, 880, 881,
+ 882, 883, 884, 884, 884, 884, 884, 884,
+ 884, 884, 884, 884, 884, 202, 202, 202,
+
+ 868, 868, 868, 868, 868, 868, 868, 868,
+ 868, 868, 868, 868, 868, 868, 868, 868,
+ 885, 885, 885, 885, 885, 885, 885, 885,
+ 885, 885, 202, 202, 202, 202, 202, 202,
+
+ 886, 887, 888, 889, 890, 891, 892, 893,
+ 894, 895, 896, 897, 898, 899, 900, 901,
+ 902, 903, 904, 905, 906, 907, 908, 909,
+ 910, 911, 912, 913, 914, 915, 916, 917,
+
+ 918, 919, 920, 921, 922, 923, 924, 925,
+ 926, 927, 928, 929, 930, 931, 932, 933,
+ 934, 935, 936, 937, 938, 939, 940, 941,
+ 942, 943, 944, 945, 946, 947, 948, 949,
+
+ 950, 951, 952, 953, 954, 955, 956, 957,
+ 958, 959, 960, 961, 962, 963, 964, 965,
+ 966, 966, 966, 966, 966, 967, 202, 202,
+ 968, 968, 968, 968, 968, 968, 202, 202,
+
+ 969, 970, 970, 970, 970, 970, 970, 970,
+ 970, 970, 970, 970, 970, 970, 970, 970,
+ 970, 970, 970, 970, 970, 970, 970, 970,
+ 970, 970, 970, 970, 970, 970, 970, 970,
+
+ 970, 970, 970, 970, 970, 970, 970, 970,
+ 970, 970, 970, 970, 970, 970, 970, 970,
+ 970, 970, 970, 970, 970, 970, 970, 970,
+ 970, 970, 970, 970, 970, 970, 970, 970,
+
+ 970, 970, 970, 970, 970, 970, 970, 970,
+ 970, 970, 970, 970, 970, 971, 972, 970,
+ 970, 970, 970, 970, 970, 970, 970, 973,
+ 973, 973, 973, 973, 973, 973, 973, 973,
+
+ 974, 975, 975, 975, 975, 975, 975, 975,
975, 975, 975, 975, 975, 975, 975, 975,
975, 975, 975, 975, 975, 975, 975, 975,
- 975, 975, 976, 976, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 977, 977, 977, 977, 977, 977, 977, 977,
- 977, 977, 977, 977, 977, 201, 977, 977,
- 977, 201, 978, 978, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 979, 979, 979, 979, 979, 979, 979, 979,
- 979, 979, 979, 979, 979, 979, 979, 979,
- 979, 979, 979, 979, 979, 979, 979, 979,
- 979, 979, 979, 979, 979, 979, 979, 979,
-
- 979, 979, 979, 979, 979, 979, 979, 979,
- 979, 979, 979, 979, 979, 979, 979, 979,
- 979, 979, 979, 979, 980, 980, 981, 980,
- 980, 980, 980, 980, 980, 980, 981, 981,
-
- 981, 981, 981, 981, 981, 981, 980, 981,
- 981, 980, 980, 980, 980, 980, 980, 980,
- 980, 980, 982, 980, 983, 983, 984, 985,
- 983, 986, 983, 987, 979, 988, 201, 201,
-
- 989, 990, 991, 992, 993, 994, 995, 996,
- 997, 998, 201, 201, 201, 201, 201, 201,
- 999, 999, 999, 999, 999, 999, 999, 999,
- 999, 999, 201, 201, 201, 201, 201, 201,
-
- 1000, 1000, 1001, 1002, 1003, 1004, 1005, 1006,
- 1007, 1008, 1009, 1010, 1010, 1010, 1011, 201,
- 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019,
- 1020, 1021, 201, 201, 201, 201, 201, 201,
-
- 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022,
- 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022,
- 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022,
- 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022,
-
- 1022, 1022, 1022, 1023, 1022, 1022, 1022, 1022,
- 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022,
- 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022,
- 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022,
-
- 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022,
- 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022,
- 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 1024, 1024, 1024, 1024, 1024, 1010, 1010, 1022,
- 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022,
- 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022,
- 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022,
-
- 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022,
- 1022, 1025, 1026, 201, 201, 201, 201, 201,
- 959, 959, 959, 959, 959, 959, 959, 959,
- 959, 959, 959, 959, 959, 959, 959, 959,
-
- 959, 959, 959, 959, 959, 959, 959, 959,
- 959, 959, 959, 959, 959, 959, 959, 959,
- 959, 959, 959, 959, 959, 959, 959, 959,
- 959, 959, 959, 959, 959, 959, 959, 959,
-
- 959, 959, 959, 959, 959, 959, 959, 959,
- 959, 959, 959, 959, 959, 959, 959, 959,
- 959, 959, 959, 959, 959, 959, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027,
- 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027,
- 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027,
- 1027, 1027, 1027, 1027, 1027, 1028, 1028, 201,
-
- 1029, 1029, 1029, 1030, 1030, 1030, 1030, 1029,
- 1029, 1030, 1030, 1030, 201, 201, 201, 201,
- 1030, 1030, 1029, 1030, 1030, 1030, 1030, 1030,
- 1030, 1031, 1032, 1033, 201, 201, 201, 201,
-
- 1034, 201, 201, 201, 1035, 1035, 1036, 1037,
- 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045,
- 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
- 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
-
- 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
- 1046, 1046, 1046, 1046, 1046, 1046, 201, 201,
- 1046, 1046, 1046, 1046, 1046, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
- 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
- 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
- 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-
- 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
- 1047, 1047, 1048, 1048, 201, 201, 201, 201,
- 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
- 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-
- 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
- 1047, 1047, 201, 201, 201, 201, 201, 201,
- 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,
- 1057, 1058, 1059, 201, 201, 201, 1060, 1060,
-
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+ 975, 975, 975, 976, 977, 202, 202, 202,
+
+ 978, 978, 978, 978, 978, 978, 978, 978,
+ 978, 978, 978, 978, 978, 978, 978, 978,
+ 978, 978, 978, 978, 978, 978, 978, 978,
+ 978, 978, 978, 978, 978, 978, 978, 978,
+
+ 978, 978, 978, 978, 978, 978, 978, 978,
+ 978, 978, 978, 979, 979, 979, 980, 980,
+ 980, 981, 981, 981, 981, 981, 981, 981,
+ 981, 202, 202, 202, 202, 202, 202, 202,
+
+ 982, 982, 982, 982, 982, 982, 982, 982,
+ 982, 982, 982, 982, 982, 202, 982, 982,
+ 982, 982, 983, 983, 984, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 985, 985, 985, 985, 985, 985, 985, 985,
+ 985, 985, 985, 985, 985, 985, 985, 985,
+ 985, 985, 986, 986, 987, 988, 988, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 989, 989, 989, 989, 989, 989, 989, 989,
+ 989, 989, 989, 989, 989, 989, 989, 989,
+ 989, 989, 990, 990, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 991, 991, 991, 991, 991, 991, 991, 991,
+ 991, 991, 991, 991, 991, 202, 991, 991,
+ 991, 202, 992, 992, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 993, 993, 993, 993, 993, 993, 993, 993,
+ 993, 993, 993, 993, 993, 993, 993, 993,
+ 993, 993, 993, 993, 993, 993, 993, 993,
+ 993, 993, 993, 993, 993, 993, 993, 993,
+
+ 993, 993, 993, 993, 993, 993, 993, 993,
+ 993, 993, 993, 993, 993, 993, 993, 993,
+ 993, 993, 993, 993, 994, 994, 995, 994,
+ 994, 994, 994, 994, 994, 994, 995, 995,
+
+ 995, 995, 995, 995, 995, 995, 994, 995,
+ 995, 994, 994, 994, 994, 994, 994, 994,
+ 994, 994, 996, 994, 997, 997, 998, 999,
+ 997, 1000, 997, 1001, 993, 1002, 202, 202,
+
+ 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010,
+ 1011, 1012, 202, 202, 202, 202, 202, 202,
+ 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013,
+ 1013, 1013, 202, 202, 202, 202, 202, 202,
+
+ 1014, 1014, 1015, 1016, 1017, 1018, 1019, 1020,
+ 1021, 1022, 1023, 1024, 1024, 1024, 1025, 202,
+ 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033,
+ 1034, 1035, 202, 202, 202, 202, 202, 202,
+
+ 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
+ 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
+ 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
+ 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
+
+ 1036, 1036, 1036, 1037, 1036, 1036, 1036, 1036,
+ 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
+ 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
+ 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
+
+ 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
+ 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
+ 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
+ 1038, 202, 202, 202, 202, 202, 202, 202,
+
+ 1039, 1039, 1039, 1039, 1039, 1024, 1024, 1036,
+ 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
+ 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
+ 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
+
+ 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
+ 1036, 1040, 1041, 202, 202, 202, 202, 202,
+ 973, 973, 973, 973, 973, 973, 973, 973,
+ 973, 973, 973, 973, 973, 973, 973, 973,
+
+ 973, 973, 973, 973, 973, 973, 973, 973,
+ 973, 973, 973, 973, 973, 973, 973, 973,
+ 973, 973, 973, 973, 973, 973, 973, 973,
+ 973, 973, 973, 973, 973, 973, 973, 973,
+
+ 973, 973, 973, 973, 973, 973, 973, 973,
+ 973, 973, 973, 973, 973, 973, 973, 973,
+ 973, 973, 973, 973, 973, 973, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
+ 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
+ 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
+ 1042, 1042, 1042, 1042, 1042, 1043, 1043, 202,
+
+ 1044, 1044, 1044, 1045, 1045, 1045, 1045, 1044,
+ 1044, 1045, 1045, 1045, 202, 202, 202, 202,
+ 1045, 1045, 1044, 1045, 1045, 1045, 1045, 1045,
+ 1045, 1046, 1047, 1048, 202, 202, 202, 202,
+
+ 1049, 202, 202, 202, 1050, 1050, 1051, 1052,
+ 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060,
1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+
1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+ 1061, 1061, 1061, 1061, 1061, 1061, 202, 202,
+ 1061, 1061, 1061, 1061, 1061, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062,
1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062,
- 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1063,
- 1064, 1065, 1065, 1066, 201, 201, 1067, 1067,
-
- 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068,
- 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068,
- 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068,
- 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068,
-
- 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068,
- 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068,
- 1068, 1068, 1068, 1068, 1068, 1069, 1070, 1069,
- 1070, 1070, 1070, 1070, 1070, 1070, 1070, 201,
-
- 1071, 1072, 1070, 1072, 1072, 1070, 1070, 1070,
- 1070, 1070, 1070, 1070, 1070, 1069, 1069, 1069,
- 1069, 1069, 1069, 1070, 1070, 1073, 1073, 1073,
- 1073, 1073, 1073, 1073, 1073, 201, 201, 1074,
-
- 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,
- 1083, 1084, 201, 201, 201, 201, 201, 201,
- 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,
- 1083, 1084, 201, 201, 201, 201, 201, 201,
-
- 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1086,
- 1087, 1087, 1087, 1087, 1085, 1085, 201, 201,
- 1088, 1088, 1088, 1088, 1088, 1089, 1089, 1089,
- 1089, 1089, 1089, 1088, 1088, 1089, 1090, 201,
-
- 1091, 1091, 1091, 1091, 1092, 1093, 1094, 1093,
- 1094, 1093, 1094, 1093, 1094, 1093, 1094, 1093,
- 1093, 1093, 1094, 1093, 1093, 1093, 1093, 1093,
- 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093,
-
- 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093,
- 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093,
- 1093, 1093, 1093, 1093, 1095, 1096, 1091, 1091,
- 1091, 1091, 1091, 1097, 1091, 1097, 1092, 1092,
-
- 1097, 1097, 1091, 1097, 1098, 1093, 1093, 1093,
- 1093, 1093, 1093, 1093, 201, 201, 201, 201,
- 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106,
- 1107, 1108, 1109, 1109, 1110, 1111, 1109, 1109,
-
- 1111, 1112, 1112, 1112, 1112, 1112, 1112, 1112,
- 1112, 1112, 1112, 1113, 1114, 1113, 1113, 1113,
- 1113, 1113, 1113, 1113, 1112, 1112, 1112, 1112,
- 1112, 1112, 1112, 1112, 1112, 201, 201, 201,
-
- 1115, 1115, 1116, 1117, 1117, 1117, 1117, 1117,
- 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117,
- 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117,
- 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117,
-
- 1117, 1116, 1115, 1115, 1115, 1115, 1116, 1116,
- 1115, 1115, 1118, 1119, 1120, 1120, 1117, 1117,
- 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128,
- 1129, 1130, 1131, 1131, 1131, 1131, 1131, 1131,
+ 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062,
+ 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062,
- 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132,
+ 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062,
+ 1062, 1062, 1063, 1063, 202, 202, 202, 202,
+ 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062,
+ 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062,
+
+ 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062,
+ 1062, 1062, 202, 202, 202, 202, 202, 202,
+ 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071,
+ 1072, 1073, 1074, 202, 202, 202, 1075, 1075,
+
+ 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076,
+ 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076,
+ 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076,
+ 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076,
+
+ 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077,
+ 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077,
+ 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1078,
+ 1079, 1080, 1080, 1081, 202, 202, 1082, 1082,
+
+ 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083,
+ 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083,
+ 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083,
+ 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083,
+
+ 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083,
+ 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083,
+ 1083, 1083, 1083, 1083, 1083, 1084, 1085, 1084,
+ 1085, 1085, 1085, 1085, 1085, 1085, 1085, 202,
+
+ 1086, 1087, 1085, 1087, 1087, 1085, 1085, 1085,
+ 1085, 1085, 1085, 1085, 1085, 1084, 1084, 1084,
+ 1084, 1084, 1084, 1085, 1085, 1088, 1088, 1088,
+ 1088, 1088, 1088, 1088, 1088, 202, 202, 1089,
+
+ 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097,
+ 1098, 1099, 202, 202, 202, 202, 202, 202,
+ 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097,
+ 1098, 1099, 202, 202, 202, 202, 202, 202,
+
+ 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1101,
+ 1102, 1102, 1102, 1102, 1100, 1100, 202, 202,
+ 1103, 1103, 1103, 1103, 1103, 1104, 1104, 1104,
+ 1104, 1104, 1104, 1103, 1103, 1104, 1105, 202,
+
+ 1106, 1106, 1106, 1106, 1107, 1108, 1109, 1108,
+ 1109, 1108, 1109, 1108, 1109, 1108, 1109, 1108,
+ 1108, 1108, 1109, 1108, 1108, 1108, 1108, 1108,
+ 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108,
+
+ 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108,
+ 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108,
+ 1108, 1108, 1108, 1108, 1110, 1111, 1106, 1106,
+ 1106, 1106, 1106, 1112, 1106, 1112, 1107, 1107,
+
+ 1112, 1112, 1106, 1112, 1113, 1108, 1108, 1108,
+ 1108, 1108, 1108, 1108, 202, 202, 202, 202,
+ 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121,
+ 1122, 1123, 1124, 1124, 1125, 1126, 1124, 1124,
+
+ 1126, 1127, 1127, 1127, 1127, 1127, 1127, 1127,
+ 1127, 1127, 1127, 1128, 1129, 1128, 1128, 1128,
+ 1128, 1128, 1128, 1128, 1127, 1127, 1127, 1127,
+ 1127, 1127, 1127, 1127, 1127, 202, 202, 202,
+
+ 1130, 1130, 1131, 1132, 1132, 1132, 1132, 1132,
1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132,
1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132,
1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132,
- 1132, 1132, 1132, 1132, 1132, 1132, 1133, 1134,
- 1135, 1135, 1134, 1134, 1134, 1135, 1134, 1135,
- 1135, 1135, 1136, 1136, 201, 201, 201, 201,
- 201, 201, 201, 201, 1137, 1137, 1137, 1137,
-
- 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138,
- 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138,
- 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138,
- 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138,
-
- 1138, 1138, 1138, 1138, 1139, 1139, 1139, 1139,
- 1139, 1139, 1139, 1139, 1140, 1140, 1140, 1140,
- 1140, 1140, 1140, 1140, 1139, 1139, 1140, 1141,
- 201, 201, 201, 1142, 1142, 1143, 1143, 1143,
-
- 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151,
- 1152, 1153, 201, 201, 201, 1138, 1138, 1138,
- 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161,
- 1162, 1163, 1164, 1164, 1164, 1164, 1164, 1164,
-
- 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164,
- 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164,
- 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164,
- 1165, 1165, 1165, 1165, 1165, 1165, 1166, 1166,
-
- 1167, 1168, 1169, 1170, 1170, 1171, 1172, 1173,
- 1174, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 1176, 1176, 1176, 1177, 1178, 1179, 1179, 1179,
- 1179, 1179, 1176, 1176, 1179, 1179, 1179, 1179,
-
- 1176, 1180, 1178, 1178, 1178, 1178, 1178, 1178,
- 1178, 1181, 1181, 1181, 1181, 1179, 1181, 1181,
- 1181, 1181, 1180, 1182, 1183, 1184, 1184, 1185,
- 1088, 1088, 201, 201, 201, 201, 201, 201,
+ 1132, 1131, 1130, 1130, 1130, 1130, 1131, 1131,
+ 1130, 1130, 1133, 1134, 1135, 1135, 1132, 1132,
+ 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143,
+ 1144, 1145, 1146, 1146, 1146, 1146, 1146, 1146,
+
+ 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147,
+ 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147,
+ 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147,
+ 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147,
+
+ 1147, 1147, 1147, 1147, 1147, 1147, 1148, 1149,
+ 1150, 1150, 1149, 1149, 1149, 1150, 1149, 1150,
+ 1150, 1150, 1151, 1151, 202, 202, 202, 202,
+ 202, 202, 202, 202, 1152, 1152, 1152, 1152,
+
+ 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153,
+ 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153,
+ 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153,
+ 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153,
+
+ 1153, 1153, 1153, 1153, 1154, 1154, 1154, 1154,
+ 1154, 1154, 1154, 1154, 1155, 1155, 1155, 1155,
+ 1155, 1155, 1155, 1155, 1154, 1154, 1155, 1156,
+ 202, 202, 202, 1157, 1157, 1158, 1158, 1158,
+
+ 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166,
+ 1167, 1168, 202, 202, 202, 1153, 1153, 1153,
+ 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176,
+ 1177, 1178, 1179, 1179, 1179, 1179, 1179, 1179,
+
+ 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179,
+ 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179,
+ 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179,
+ 1180, 1180, 1180, 1180, 1180, 1180, 1181, 1181,
+
+ 1182, 1183, 1184, 1185, 1185, 1186, 1187, 1188,
+ 1189, 202, 202, 202, 202, 202, 202, 202,
+ 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190,
+ 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190,
+
+ 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190,
+ 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190,
+ 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190,
+ 1190, 1190, 1190, 202, 202, 1190, 1190, 1190,
+
+ 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 1192, 1192, 1192, 1193, 1194, 1195, 1195, 1195,
+ 1195, 1195, 1192, 1192, 1195, 1195, 1195, 1195,
+
+ 1192, 1196, 1194, 1194, 1194, 1194, 1194, 1194,
+ 1194, 1197, 1197, 1197, 1197, 1195, 1197, 1197,
+ 1197, 1197, 1197, 1198, 1199, 1198, 1198, 1200,
+ 1103, 1103, 1201, 202, 202, 202, 202, 202,
114, 114, 114, 114, 114, 114, 114, 114,
114, 114, 114, 114, 114, 114, 114, 114,
114, 114, 114, 114, 114, 114, 114, 114,
114, 114, 114, 114, 114, 114, 114, 114,
- 114, 114, 114, 114, 114, 114, 1186, 1186,
- 1186, 1186, 1186, 1187, 1188, 1188, 1188, 1189,
- 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188,
- 1188, 1188, 1188, 1189, 1188, 1188, 1188, 1188,
+ 114, 114, 114, 114, 114, 114, 1202, 1202,
+ 1202, 1202, 1202, 1203, 1204, 1204, 1204, 1205,
+ 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204,
+ 1204, 1204, 1204, 1205, 1204, 1204, 1204, 1204,
- 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188,
- 1188, 1188, 1188, 1188, 1188, 1188, 1189, 1188,
- 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188,
- 1188, 1188, 1188, 1188, 1188, 1190, 1190, 1190,
+ 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204,
+ 1204, 1204, 1204, 1204, 1204, 1204, 1205, 1204,
+ 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204,
+ 1204, 1204, 1204, 1204, 1204, 1206, 1206, 1206,
- 1190, 1190, 1188, 1188, 1188, 1188, 1190, 1190,
- 1190, 1190, 1190, 114, 115, 115, 115, 115,
+ 1206, 1206, 1204, 1204, 1204, 1204, 1206, 1206,
+ 1206, 1206, 1206, 114, 115, 115, 115, 115,
115, 115, 115, 115, 115, 115, 115, 115,
- 1191, 1192, 115, 115, 115, 1193, 115, 115,
+ 1207, 1208, 115, 115, 115, 1209, 115, 115,
115, 115, 115, 115, 115, 115, 115, 115,
+ 115, 115, 115, 115, 115, 115, 1210, 115,
115, 115, 115, 115, 115, 115, 115, 115,
- 115, 115, 115, 115, 115, 115, 115, 115,
- 115, 115, 115, 1194, 1194, 1194, 1194, 1194,
+ 115, 115, 115, 1211, 1211, 1211, 1211, 1211,
- 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194,
- 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194,
- 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194,
- 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1195,
+ 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
+ 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
+ 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
+ 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1212,
- 190, 190, 189, 190, 1196, 1196, 1196, 1196,
- 1196, 1196, 1197, 1198, 1198, 1199, 1200, 1201,
- 1202, 1198, 1198, 1198, 1198, 1198, 1198, 1198,
- 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198,
+ 191, 191, 190, 191, 1213, 1213, 1213, 1213,
+ 1213, 1213, 1214, 1215, 1215, 1216, 1217, 1218,
+ 1219, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
+ 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
- 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1088,
- 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088,
- 1088, 1088, 1088, 1088, 1088, 1088, 1203, 1204,
- 1204, 1205, 201, 1206, 1207, 1179, 1196, 1197,
+ 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1103,
+ 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103,
+ 1103, 1103, 1103, 1103, 1103, 1103, 1220, 1221,
+ 1221, 1222, 202, 1223, 1224, 1195, 1213, 1214,
70, 71, 70, 71, 70, 71, 70, 71,
70, 71, 70, 71, 70, 71, 70, 71,
@@ -1944,258 +1949,258 @@ static const unsigned short uc_property_trie[] = {
70, 71, 70, 71, 70, 71, 70, 71,
70, 71, 70, 71, 70, 71, 70, 71,
- 70, 71, 70, 71, 70, 71, 1208, 1209,
- 1210, 1211, 1212, 1213, 1214, 1214, 1215, 1214,
+ 70, 71, 70, 71, 70, 71, 1225, 1226,
+ 1227, 1228, 1229, 1230, 1231, 1231, 1232, 1231,
70, 71, 70, 71, 70, 71, 70, 71,
70, 71, 70, 71, 70, 71, 70, 71,
70, 71, 70, 71, 70, 71, 70, 71,
- 70, 71, 1216, 1217, 1216, 1217, 1216, 1217,
-
- 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218,
- 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
- 1218, 1218, 1218, 1218, 1218, 1218, 201, 201,
- 1219, 1219, 1219, 1219, 1219, 1219, 201, 201,
-
- 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218,
- 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
- 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218,
- 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-
- 1218, 1218, 1218, 1218, 1218, 1218, 201, 201,
- 1219, 1219, 1219, 1219, 1219, 1219, 201, 201,
- 1220, 1218, 1221, 1218, 1222, 1218, 1223, 1218,
- 201, 1219, 201, 1219, 201, 1219, 201, 1219,
-
- 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218,
- 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
- 1224, 1225, 1226, 1227, 1226, 1227, 1228, 1229,
- 1230, 1231, 1232, 1233, 1234, 1235, 201, 201,
-
- 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243,
- 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251,
- 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259,
- 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267,
-
- 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275,
- 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283,
- 1218, 1218, 1284, 1285, 1286, 201, 1287, 1288,
- 1219, 1219, 1289, 1290, 1291, 206, 1292, 206,
-
- 206, 1293, 1294, 1295, 1296, 201, 1297, 1298,
- 1299, 1300, 1299, 1300, 1301, 1293, 1293, 1293,
- 1218, 1218, 1302, 1303, 201, 201, 1304, 1305,
- 1219, 1219, 1306, 1307, 201, 1293, 1293, 1293,
-
- 1218, 1218, 1308, 1309, 1310, 1311, 1312, 1313,
- 1219, 1219, 1314, 1315, 1316, 1293, 1317, 1317,
- 201, 201, 1318, 1319, 1320, 201, 1321, 1322,
- 1323, 1324, 1325, 1326, 1327, 1328, 206, 201,
-
- 1329, 1329, 1330, 1330, 1330, 1330, 1330, 1331,
- 1330, 1330, 1330, 1332, 1333, 1334, 1335, 1336,
- 1337, 1338, 1337, 1339, 1340, 1341, 14, 1342,
- 1343, 1344, 1345, 1346, 1346, 1347, 1345, 1346,
-
- 14, 14, 14, 14, 1348, 1349, 1349, 1350,
- 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358,
- 13, 13, 13, 1359, 1359, 1360, 1361, 1361,
- 14, 1362, 1363, 14, 1364, 1365, 1342, 43,
-
- 43, 14, 14, 14, 1366, 16, 1367, 1368,
- 1369, 1369, 1370, 1370, 1370, 1370, 1371, 1371,
- 1371, 1371, 1372, 1373, 1374, 1375, 1376, 1377,
- 1376, 1376, 1376, 1376, 1375, 1376, 1376, 1378,
-
- 1379, 1380, 1380, 1380, 1381, 1382, 1383, 1384,
- 1385, 1386, 1387, 1387, 1387, 1387, 1387, 1387,
- 1388, 1389, 201, 201, 1390, 1391, 1392, 1393,
- 1394, 1395, 1396, 1396, 1397, 1398, 1399, 159,
-
- 1388, 63, 58, 59, 1390, 1391, 1392, 1393,
- 1394, 1395, 1396, 1396, 1397, 1398, 1399, 201,
- 1194, 1194, 1194, 1194, 1194, 1400, 1400, 1400,
- 1400, 1400, 1400, 1400, 1400, 201, 201, 201,
+ 70, 71, 1233, 1234, 1233, 1234, 1233, 1234,
+
+ 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235,
+ 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236,
+ 1235, 1235, 1235, 1235, 1235, 1235, 202, 202,
+ 1236, 1236, 1236, 1236, 1236, 1236, 202, 202,
+
+ 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235,
+ 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236,
+ 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235,
+ 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236,
+
+ 1235, 1235, 1235, 1235, 1235, 1235, 202, 202,
+ 1236, 1236, 1236, 1236, 1236, 1236, 202, 202,
+ 1237, 1235, 1238, 1235, 1239, 1235, 1240, 1235,
+ 202, 1236, 202, 1236, 202, 1236, 202, 1236,
+
+ 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235,
+ 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236,
+ 1241, 1242, 1243, 1244, 1243, 1244, 1245, 1246,
+ 1247, 1248, 1249, 1250, 1251, 1252, 202, 202,
+
+ 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260,
+ 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268,
+ 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276,
+ 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284,
+
+ 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292,
+ 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300,
+ 1235, 1235, 1301, 1302, 1303, 202, 1304, 1305,
+ 1236, 1236, 1306, 1307, 1308, 207, 1309, 207,
+
+ 207, 1310, 1311, 1312, 1313, 202, 1314, 1315,
+ 1316, 1317, 1316, 1317, 1318, 1310, 1310, 1310,
+ 1235, 1235, 1319, 1320, 202, 202, 1321, 1322,
+ 1236, 1236, 1323, 1324, 202, 1310, 1310, 1310,
+
+ 1235, 1235, 1325, 1326, 1327, 1328, 1329, 1330,
+ 1236, 1236, 1331, 1332, 1333, 1310, 1334, 1334,
+ 202, 202, 1335, 1336, 1337, 202, 1338, 1339,
+ 1340, 1341, 1342, 1343, 1344, 1345, 207, 202,
+
+ 1346, 1346, 1347, 1347, 1347, 1347, 1347, 1348,
+ 1347, 1347, 1347, 1349, 1350, 1351, 1352, 1353,
+ 1354, 1355, 1354, 1356, 1357, 1358, 14, 1359,
+ 1360, 1361, 1362, 1363, 1363, 1364, 1362, 1363,
+
+ 14, 14, 14, 14, 1365, 1366, 1366, 1367,
+ 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375,
+ 13, 13, 13, 1376, 1376, 1377, 1378, 1378,
+ 14, 1379, 1380, 14, 1381, 1382, 1359, 43,
+
+ 43, 14, 14, 14, 1383, 16, 1384, 1385,
+ 1386, 1386, 1387, 1387, 1387, 1387, 1388, 1388,
+ 1388, 1388, 1389, 1390, 1391, 1392, 1393, 1394,
+ 1393, 1393, 1393, 1393, 1392, 1393, 1393, 1395,
+
+ 1396, 1397, 1397, 1397, 1398, 1399, 1400, 1401,
+ 1402, 1403, 1404, 1404, 1404, 1404, 1404, 1404,
+ 1405, 1406, 202, 202, 1407, 1408, 1409, 1410,
+ 1411, 1412, 1413, 1413, 1414, 1415, 1416, 160,
+
+ 1405, 63, 58, 59, 1407, 1408, 1409, 1410,
+ 1411, 1412, 1413, 1413, 1414, 1415, 1416, 202,
+ 1211, 1211, 1211, 1211, 1211, 1417, 1417, 1417,
+ 1417, 1417, 1417, 1417, 1417, 202, 202, 202,
12, 12, 12, 12, 12, 12, 12, 50,
- 1401, 12, 12, 1402, 1403, 1404, 1404, 1404,
- 1405, 1405, 1406, 1406, 1406, 1406, 1407, 1408,
- 1408, 1409, 1410, 1411, 1412, 1412, 1413, 1414,
-
- 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415,
- 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415,
- 172, 172, 179, 179, 172, 172, 172, 172,
- 179, 179, 179, 172, 172, 1416, 1416, 1416,
-
- 1416, 172, 1417, 1417, 1418, 1419, 1419, 196,
- 1420, 196, 1419, 1421, 1197, 1197, 1197, 1197,
- 1198, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 1422, 1422, 1423, 1424, 51, 1422, 1422, 1423,
- 51, 1424, 1425, 1423, 1423, 1423, 1425, 1425,
- 1423, 1423, 1423, 1425, 51, 1423, 1426, 51,
- 36, 1423, 1423, 1423, 1423, 1423, 51, 51,
-
- 1422, 1422, 1422, 51, 1423, 51, 1427, 51,
- 1423, 51, 1428, 1429, 1423, 1423, 1430, 1425,
- 1423, 1423, 1431, 1423, 1425, 1432, 1432, 1432,
- 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1438,
-
- 1439, 1372, 1372, 1372, 1372, 1438, 1437, 1437,
- 1437, 1437, 1440, 1372, 1441, 1442, 1443, 1444,
- 1445, 1445, 1445, 65, 65, 65, 65, 65,
+ 1418, 12, 12, 1419, 1420, 1421, 1421, 1421,
+ 1422, 1422, 1423, 1423, 1423, 1423, 1424, 1425,
+ 1425, 1426, 1427, 1428, 1429, 1429, 1430, 1431,
+
+ 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432,
+ 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432,
+ 173, 173, 180, 180, 173, 173, 173, 173,
+ 180, 180, 180, 173, 173, 1433, 1433, 1433,
+
+ 1433, 173, 1434, 1434, 1435, 1436, 1436, 197,
+ 1437, 197, 1436, 1438, 1214, 1214, 1214, 1214,
+ 1215, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 1439, 1439, 1440, 1441, 51, 1439, 1439, 1440,
+ 51, 1441, 1442, 1440, 1440, 1440, 1442, 1442,
+ 1440, 1440, 1440, 1442, 51, 1440, 1443, 51,
+ 36, 1440, 1440, 1440, 1440, 1440, 51, 51,
+
+ 1439, 1439, 1439, 51, 1440, 51, 1444, 51,
+ 1440, 51, 1445, 1446, 1440, 1440, 1447, 1442,
+ 1440, 1440, 1448, 1440, 1442, 1449, 1449, 1449,
+ 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1455,
+
+ 1456, 1389, 1389, 1389, 1389, 1455, 1454, 1454,
+ 1454, 1454, 1457, 1389, 1458, 1459, 1460, 1461,
+ 1462, 1462, 1462, 65, 65, 65, 65, 65,
65, 65, 65, 65, 65, 65, 65, 65,
- 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446,
- 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446,
- 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447,
- 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447,
+ 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463,
+ 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463,
+ 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464,
+ 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464,
- 1448, 1448, 1448, 111, 123, 1449, 1449, 1449,
- 1449, 1445, 1450, 1450, 201, 201, 201, 201,
+ 1465, 1465, 1465, 111, 123, 1466, 1466, 1466,
+ 1466, 1462, 1467, 1467, 202, 202, 202, 202,
36, 36, 36, 36, 36, 51, 51, 51,
- 51, 51, 1451, 1451, 51, 51, 51, 51,
+ 51, 51, 1468, 1468, 51, 51, 51, 51,
36, 51, 51, 36, 51, 51, 36, 51,
- 51, 51, 51, 51, 51, 51, 1451, 51,
+ 51, 51, 51, 51, 51, 51, 1468, 51,
51, 51, 51, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51,
- 51, 51, 51, 51, 51, 1452, 1451, 1451,
+ 51, 51, 51, 51, 51, 1469, 1468, 1468,
51, 51, 36, 51, 36, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51,
- 51, 51, 51, 1434, 1434, 1434, 1434, 1434,
- 1434, 1434, 1434, 1434, 1372, 1372, 1372, 1372,
- 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372,
-
- 36, 36, 36, 36, 1451, 36, 36, 36,
- 1453, 1454, 1453, 1455, 1456, 1455, 36, 36,
- 36, 36, 18, 57, 36, 1457, 36, 36,
+ 51, 51, 51, 1451, 1451, 1451, 1451, 1451,
+ 1451, 1451, 1451, 1451, 1389, 1389, 1389, 1389,
+ 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389,
+
+ 36, 36, 36, 36, 1468, 36, 36, 36,
+ 1470, 1471, 1470, 1472, 1473, 1472, 36, 36,
+ 36, 36, 18, 57, 36, 1474, 36, 36,
+ 36, 36, 36, 36, 36, 36, 36, 1475,
+
+ 1476, 1477, 1478, 36, 1479, 36, 1468, 36,
+ 36, 36, 36, 36, 1414, 1414, 36, 1414,
+ 1414, 36, 36, 36, 36, 36, 36, 36,
+ 36, 36, 36, 36, 1480, 1481, 36, 36,
+
+ 36, 1468, 36, 1482, 1468, 1483, 36, 1468,
+ 36, 1468, 36, 36, 1484, 36, 36, 36,
+ 36, 36, 1480, 1481, 1480, 1481, 36, 36,
36, 36, 36, 36, 36, 36, 36, 36,
- 36, 36, 36, 36, 1451, 36, 1451, 36,
- 36, 36, 36, 36, 1397, 1397, 36, 1397,
- 1397, 36, 36, 36, 36, 36, 36, 36,
- 36, 36, 36, 36, 1458, 1459, 36, 36,
-
- 36, 1451, 36, 1460, 1451, 36, 36, 1451,
- 36, 1451, 36, 36, 36, 36, 36, 36,
- 36, 36, 1458, 1459, 1458, 1459, 36, 36,
- 36, 36, 36, 36, 36, 36, 36, 36,
+ 1468, 36, 1468, 36, 1480, 1481, 1480, 1481,
+ 1480, 1481, 1480, 1481, 36, 1468, 1485, 1486,
+ 1485, 1486, 1480, 1481, 1485, 1486, 1480, 1481,
+ 1485, 1486, 1480, 1481, 1480, 1481, 1480, 1481,
- 1451, 36, 1451, 36, 1458, 1459, 1458, 1459,
- 1458, 1459, 1458, 1459, 36, 1451, 1461, 1462,
- 1461, 1462, 1458, 1459, 1461, 1462, 1458, 1459,
- 1461, 1462, 1458, 1459, 1458, 1459, 1458, 1459,
+ 1485, 1486, 1480, 1481, 1485, 1486, 1480, 1481,
+ 1485, 1486, 1480, 1481, 36, 36, 36, 1480,
+ 1481, 1480, 1481, 36, 36, 36, 36, 36,
+ 1487, 36, 36, 36, 36, 36, 36, 36,
- 1461, 1462, 1458, 1459, 1461, 1462, 1458, 1459,
- 1461, 1462, 1458, 1459, 36, 36, 36, 1458,
- 1459, 1458, 1459, 36, 36, 36, 36, 36,
- 1463, 36, 36, 36, 36, 36, 36, 36,
-
- 36, 36, 1458, 1459, 36, 36, 1464, 36,
- 1465, 1466, 36, 1466, 1451, 1451, 1451, 1451,
- 1458, 1459, 1458, 1459, 1458, 1459, 1458, 1459,
- 36, 36, 36, 36, 36, 36, 36, 36,
+ 36, 36, 1480, 1481, 36, 36, 1488, 36,
+ 1489, 1490, 36, 1490, 1468, 1468, 1468, 1468,
+ 1480, 1481, 1480, 1481, 1480, 1481, 1480, 1481,
+ 1491, 36, 36, 36, 36, 36, 36, 36,
36, 36, 36, 36, 36, 36, 36, 36,
- 36, 1458, 1459, 1458, 1459, 1467, 36, 36,
- 1458, 1459, 36, 36, 36, 36, 1458, 1459,
- 1458, 1459, 1458, 1459, 1458, 1459, 1458, 1459,
+ 36, 1480, 1481, 1480, 1481, 1492, 36, 36,
+ 1480, 1481, 36, 36, 36, 36, 1480, 1481,
+ 1480, 1481, 1480, 1481, 1480, 1481, 1480, 1481,
- 1461, 1462, 1461, 1462, 1458, 1459, 1458, 1459,
- 1458, 1459, 1461, 1462, 1461, 1462, 36, 1468,
- 1458, 1459, 1469, 1469, 1469, 1372, 1470, 1470,
- 1372, 1372, 1471, 1471, 1471, 1472, 1472, 1372,
+ 1485, 1486, 1485, 1486, 1480, 1481, 1480, 1481,
+ 1480, 1481, 1485, 1486, 1485, 1486, 36, 1493,
+ 1480, 1481, 1494, 1494, 1494, 1389, 1495, 1495,
+ 1389, 1389, 1496, 1496, 1496, 1497, 1497, 1389,
- 51, 1434, 51, 51, 51, 51, 51, 51,
- 16, 1367, 16, 1367, 51, 51, 51, 51,
+ 51, 1451, 51, 51, 51, 51, 51, 51,
+ 16, 1384, 16, 1384, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51,
- 51, 51, 1473, 1473, 51, 51, 51, 51,
+ 51, 51, 1498, 1498, 51, 51, 51, 51,
36, 36, 51, 51, 51, 51, 51, 51,
- 51, 1474, 1475, 51, 51, 51, 51, 51,
- 51, 51, 51, 51, 51, 51, 1476, 1476,
- 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476,
-
- 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476,
- 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476,
- 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476,
- 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476,
-
- 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476,
- 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476,
- 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476,
- 1476, 1476, 1476, 1434, 1372, 1434, 1434, 1434,
-
- 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434,
- 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434,
- 1434, 1434, 1434, 1434, 1434, 1477, 1434, 1434,
- 1434, 1434, 1434, 1372, 1372, 1372, 1372, 1372,
-
- 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372,
- 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372,
- 1372, 1372, 1372, 1372, 1440, 1440, 1440, 1440,
- 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440,
-
- 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440,
- 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1478,
- 1478, 1441, 1441, 1441, 1441, 1441, 1441, 1441,
- 1441, 1441, 1441, 1441, 1479, 1479, 1479, 1479,
-
- 1479, 1479, 1442, 1442, 1442, 1442, 1442, 1442,
- 1480, 1481, 1481, 1481, 1481, 1481, 1481, 1481,
- 1482, 1482, 1482, 1482, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1484, 1484, 1484, 1484, 1485,
+ 51, 1499, 1500, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 1501, 1501,
+ 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501,
+
+ 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501,
+ 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501,
+ 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501,
+ 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501,
+
+ 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501,
+ 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501,
+ 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501,
+ 1501, 1501, 1501, 1451, 1389, 1451, 1451, 1451,
+
+ 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451,
+ 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451,
+ 1451, 1451, 1451, 1451, 1451, 1502, 1451, 1451,
+ 1451, 1451, 1451, 1389, 1389, 1389, 1389, 1389,
+
+ 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389,
+ 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389,
+ 1389, 1389, 1389, 1389, 1457, 1457, 1457, 1457,
+ 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457,
+
+ 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457,
+ 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1503,
+ 1503, 1458, 1458, 1458, 1458, 1458, 1458, 1458,
+ 1458, 1458, 1458, 1458, 1504, 1504, 1504, 1504,
+
+ 1504, 1504, 1459, 1459, 1459, 1459, 1459, 1459,
+ 1505, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1507, 1507, 1507, 1507, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1509, 1509, 1509, 1509, 1510,
51, 51, 51, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51,
- 51, 51, 51, 51, 51, 1434, 1434, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
+ 51, 51, 51, 51, 51, 1451, 1451, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
51, 51, 51, 51, 51, 51, 51, 51,
- 51, 51, 51, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
+ 51, 51, 51, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
- 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493,
- 1494, 65, 65, 65, 65, 65, 65, 65,
- 65, 65, 65, 65, 1486, 1487, 1488, 1489,
- 1490, 1491, 1492, 1493, 1494, 65, 65, 65,
+ 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518,
+ 1519, 65, 65, 65, 65, 65, 65, 65,
+ 65, 65, 65, 65, 1511, 1512, 1513, 1514,
+ 1515, 1516, 1517, 1518, 1519, 65, 65, 65,
65, 65, 65, 65, 65, 65, 65, 65,
- 63, 58, 59, 1390, 1391, 1392, 1393, 1394,
- 1395, 1495, 1495, 1495, 1495, 1495, 1495, 1495,
- 1495, 1495, 1495, 1495, 1496, 1496, 1496, 1496,
+ 63, 58, 59, 1407, 1408, 1409, 1410, 1411,
+ 1412, 1520, 1520, 1520, 1520, 1520, 1520, 1520,
+ 1520, 1520, 1520, 1520, 1521, 1521, 1521, 1521,
- 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496,
- 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496,
- 1496, 1496, 1496, 1496, 1496, 1496, 1497, 1497,
- 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497,
+ 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521,
+ 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521,
+ 1521, 1521, 1521, 1521, 1521, 1521, 1522, 1522,
+ 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522,
- 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497,
- 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497,
- 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498,
- 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498,
+ 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522,
+ 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522,
+ 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523,
+ 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523,
- 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498,
- 1498, 1498, 1499, 1500, 1500, 1500, 1500, 1500,
- 1500, 1500, 1500, 1500, 1500, 1501, 1502, 1503,
- 1504, 1505, 1506, 1507, 1508, 1509, 1500, 1510,
+ 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523,
+ 1523, 1523, 1524, 1525, 1525, 1525, 1525, 1525,
+ 1525, 1525, 1525, 1525, 1525, 1526, 1527, 1528,
+ 1529, 1530, 1531, 1532, 1533, 1534, 1525, 1535,
51, 51, 51, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51,
- 51, 51, 51, 51, 51, 51, 1440, 1440,
- 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440,
+ 51, 51, 51, 51, 51, 51, 1457, 1457,
+ 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457,
51, 51, 51, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51,
@@ -2209,2454 +2214,1713 @@ static const unsigned short uc_property_trie[] = {
51, 51, 51, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51,
- 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434,
- 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372,
+ 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451,
+ 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389,
- 1473, 1473, 1473, 1473, 51, 51, 51, 51,
+ 1498, 1498, 1498, 1498, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51,
- 51, 51, 51, 51, 1511, 1511, 1440, 1440,
- 1512, 1434, 1473, 1473, 1473, 1513, 1473, 1473,
+ 51, 51, 51, 51, 1536, 1536, 1457, 1457,
+ 1537, 1451, 1498, 1498, 1498, 1538, 1498, 1498,
51, 51, 51, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51,
- 51, 1473, 1473, 1473, 51, 51, 51, 51,
+ 51, 1498, 1498, 1498, 51, 51, 51, 51,
- 1514, 51, 1514, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51,
+ 1498, 51, 51, 51, 51, 51, 51, 36,
+ 1451, 1451, 1457, 1457, 1457, 1457, 1457, 1457,
+ 1457, 1457, 1457, 1457, 1457, 1457, 1458, 1537,
+
+ 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457,
+ 1457, 1457, 1503, 1503, 1503, 1503, 1503, 1503,
+ 1503, 1503, 1458, 1458, 1458, 1458, 1458, 1458,
+ 1458, 1458, 1458, 1458, 1458, 1539, 1505, 1505,
+
+ 1503, 1503, 1458, 1458, 1458, 1458, 1458, 1458,
+ 1458, 1458, 1458, 1458, 1540, 1458, 1458, 1458,
+ 1458, 1458, 1459, 1539, 1539, 1539, 1539, 1539,
+ 1539, 1539, 1539, 1539, 1539, 1541, 1541, 1541,
+
+ 1542, 1542, 1542, 1542, 1541, 1541, 1541, 1541,
+ 1541, 1505, 1505, 1505, 1505, 1541, 1506, 1541,
+ 1541, 1541, 1505, 1541, 1541, 1505, 1505, 1505,
+ 1541, 1541, 1505, 1505, 1541, 1505, 1505, 1541,
+
+ 1541, 1541, 1506, 1505, 1506, 1506, 1506, 1506,
+ 1505, 1505, 1541, 1505, 1505, 1505, 1505, 1505,
+ 1505, 1541, 1541, 1541, 1541, 1541, 1505, 1541,
+ 1541, 1543, 1541, 1505, 1505, 1541, 1541, 1541,
+
+ 1544, 1498, 1498, 1498, 1498, 1506, 51, 51,
+ 1498, 1498, 1545, 1545, 1538, 1538, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51,
- 1473, 51, 51, 51, 51, 51, 51, 36,
- 1434, 1434, 1440, 1440, 1440, 1440, 1440, 1440,
- 1440, 1440, 1440, 1440, 1440, 1440, 1441, 1512,
-
- 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440,
- 1440, 1440, 1478, 1478, 1478, 1478, 1478, 1478,
- 1478, 1478, 1441, 1441, 1441, 1515, 1515, 1441,
- 1441, 1441, 1441, 1441, 1441, 1516, 1480, 1480,
-
- 1478, 1478, 1441, 1441, 1441, 1441, 1441, 1441,
- 1441, 1441, 1441, 1441, 1517, 1441, 1441, 1441,
- 1441, 1441, 1442, 1516, 1516, 1516, 1516, 1516,
- 1516, 1516, 1516, 1516, 1516, 1518, 1518, 1518,
-
- 1519, 1519, 1519, 1519, 1518, 1518, 1518, 1518,
- 1518, 1480, 1480, 1480, 1480, 1518, 1481, 1518,
- 1518, 1518, 1480, 1518, 1518, 1480, 1480, 1480,
- 1518, 1518, 1480, 1480, 1518, 1480, 1480, 1518,
-
- 1518, 1518, 1481, 1480, 1481, 1481, 1481, 1481,
- 1480, 1480, 1518, 1480, 1480, 1480, 1480, 1480,
- 1480, 1518, 1518, 1518, 1518, 1518, 1480, 1518,
- 1518, 1520, 1518, 1480, 1480, 1518, 1518, 1518,
-
- 1521, 1473, 1473, 1473, 1473, 1481, 51, 51,
- 1522, 1473, 1523, 1523, 1513, 1513, 51, 51,
+ 1506, 51, 51, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51,
- 1481, 51, 51, 51, 51, 51, 51, 51,
- 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 1506, 51, 1506, 51,
+ 51, 51, 51, 1506, 1506, 1506, 51, 1505,
+ 51, 51, 51, 1546, 1546, 1546, 1546, 1547,
+
+ 1547, 51, 1548, 1548, 1498, 51, 51, 51,
+ 1549, 1550, 1549, 1550, 1549, 1550, 1549, 1550,
+ 1549, 1550, 1549, 1550, 1549, 1550, 1551, 1552,
+ 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560,
+
+ 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558,
+ 1559, 1560, 1551, 1552, 1553, 1554, 1555, 1556,
+ 1557, 1558, 1559, 1560, 51, 1506, 1506, 1506,
51, 51, 51, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51,
- 51, 51, 51, 51, 1481, 51, 1481, 51,
- 51, 51, 51, 1481, 1481, 1481, 51, 1480,
- 51, 51, 51, 1524, 1524, 1524, 1524, 1525,
-
- 1525, 51, 1526, 1526, 1522, 51, 51, 51,
- 1527, 1528, 1527, 1528, 1527, 1528, 1527, 1528,
- 1527, 1528, 1527, 1528, 1527, 1528, 1529, 1530,
- 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538,
-
- 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1536,
- 1537, 1538, 1529, 1530, 1531, 1532, 1533, 1534,
- 1535, 1536, 1537, 1538, 51, 1481, 1481, 1481,
51, 51, 51, 51, 51, 51, 51, 51,
-
- 51, 51, 51, 51, 51, 51, 51, 51,
- 51, 51, 51, 51, 51, 51, 51, 51,
- 1481, 51, 51, 51, 51, 51, 51, 51,
- 51, 51, 51, 51, 51, 51, 51, 1481,
-
- 1539, 1539, 1539, 1540, 1541, 1542, 1543, 1479,
- 1544, 1545, 1479, 1546, 1547, 1548, 1549, 1549,
- 1372, 1372, 1372, 1372, 1372, 1550, 1551, 1372,
- 1372, 1372, 1372, 1372, 1372, 1550, 1551, 1372,
-
- 1372, 1372, 1550, 1551, 1550, 1551, 1527, 1528,
- 1527, 1528, 1527, 1528, 1552, 1553, 1552, 1553,
- 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372,
- 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372,
-
- 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554,
- 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554,
- 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554,
- 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554,
-
- 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372,
- 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372,
- 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372,
- 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372,
-
- 1372, 1372, 1372, 1527, 1528, 1527, 1528, 1527,
- 1528, 1527, 1528, 1527, 1528, 1555, 1556, 1557,
- 1558, 1527, 1528, 1527, 1528, 1527, 1528, 1527,
- 1528, 1372, 1372, 1372, 1372, 1372, 1372, 1372,
-
- 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372,
- 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372,
- 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372,
- 1559, 1372, 1372, 1372, 1372, 1372, 1372, 1372,
-
- 1550, 1551, 1372, 1372, 1550, 1551, 1372, 1372,
- 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1550,
- 1551, 1550, 1551, 1372, 1550, 1551, 1372, 1372,
- 1527, 1528, 1527, 1528, 1372, 1372, 1372, 1372,
-
- 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372,
- 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372,
- 1372, 1372, 1372, 1372, 1372, 1560, 1372, 1372,
- 1550, 1551, 1372, 1372, 1527, 1528, 1372, 1372,
-
- 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372,
- 1372, 1372, 1372, 1372, 1439, 1372, 1372, 1372,
- 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372,
- 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372,
-
- 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372,
- 1372, 1372, 1372, 1550, 1551, 1550, 1551, 1372,
- 1372, 1372, 1372, 1372, 1550, 1551, 1372, 1372,
- 1372, 1372, 1372, 1372, 1550, 1551, 1372, 1372,
-
- 1372, 1372, 1372, 1372, 1550, 1551, 1372, 1372,
- 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372,
- 1372, 1372, 1372, 1372, 1439, 1439, 1439, 1372,
- 1372, 1550, 1551, 1372, 1372, 1550, 1551, 1550,
-
- 1551, 1550, 1551, 1550, 1551, 1372, 1372, 1372,
- 1372, 1372, 1372, 1550, 1551, 1372, 1372, 1372,
- 1372, 1550, 1551, 1550, 1551, 1550, 1551, 1550,
- 1551, 1550, 1551, 1550, 1551, 1372, 1372, 1372,
-
- 1372, 1550, 1551, 1372, 1372, 1372, 1550, 1551,
- 1550, 1551, 1550, 1551, 1550, 1551, 1372, 1550,
- 1551, 1372, 1372, 1550, 1551, 1372, 1372, 1372,
- 1372, 1372, 1372, 1550, 1551, 1550, 1551, 1550,
-
- 1551, 1550, 1551, 1550, 1551, 1550, 1551, 1372,
- 1372, 1372, 1372, 1372, 1372, 1550, 1551, 1550,
- 1551, 1550, 1551, 1550, 1551, 1550, 1551, 1372,
- 1372, 1372, 1372, 1372, 1561, 1372, 1562, 1372,
-
- 1372, 1372, 1372, 1563, 1564, 1563, 1372, 1372,
- 1372, 1372, 1372, 1372, 1550, 1551, 1372, 1372,
- 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1550,
- 1551, 1550, 1551, 1372, 1372, 1372, 1372, 1372,
-
- 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
- 1478, 1478, 1478, 1478, 1478, 1478, 1441, 1441,
- 1441, 1441, 1441, 1441, 1442, 1442, 1442, 1442,
- 1442, 1442, 1442, 1516, 1516, 1516, 1516, 1516,
-
- 1442, 1442, 1442, 1442, 1516, 1516, 1516, 1516,
- 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516,
- 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547,
- 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547,
-
- 1547, 1547, 1547, 1547, 1547, 1516, 1516, 1547,
- 1547, 1547, 1547, 1547, 1547, 1483, 1483, 1483,
- 1516, 1516, 1516, 1516, 1516, 1480, 1480, 1480,
- 1480, 1480, 1483, 1483, 1483, 1483, 1483, 1483,
-
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 201, 201, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
-
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 201, 201,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
-
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 201, 201, 201, 1483, 1483, 1483,
-
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 201, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1485, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 1450, 1450, 1450, 1450,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565,
- 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565,
- 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565,
- 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565,
-
- 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565,
- 1565, 1565, 1565, 1565, 1565, 1565, 1565, 201,
- 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566,
- 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566,
-
- 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566,
- 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566,
- 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566,
- 1566, 1566, 1566, 1566, 1566, 1566, 1566, 201,
-
- 127, 123, 1567, 1568, 1569, 1570, 1571, 127,
- 123, 127, 123, 127, 123, 1572, 1573, 1574,
- 1575, 1214, 1216, 1217, 1576, 127, 123, 1576,
- 1214, 1214, 1214, 1214, 1577, 1577, 1578, 1579,
-
- 1580, 1581, 1580, 1581, 1580, 1581, 1580, 1581,
- 1580, 1581, 1580, 1581, 1580, 1581, 1580, 1581,
- 1580, 1581, 1580, 1581, 1580, 1581, 1580, 1581,
- 1580, 1581, 1580, 1581, 1580, 1581, 1580, 1581,
-
- 1580, 1581, 1580, 1581, 1582, 1583, 1583, 1583,
- 1583, 1583, 1583, 1584, 1585, 1584, 1585, 1586,
- 1586, 1586, 1587, 1588, 201, 201, 201, 201,
- 201, 1589, 1590, 1590, 1590, 1591, 1589, 1590,
-
- 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592,
+ 1506, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 1506,
+
+ 1561, 1561, 1561, 1562, 1563, 1564, 1565, 1504,
+ 1566, 1567, 1504, 1568, 1569, 1570, 1571, 1571,
+ 1389, 1389, 1389, 1389, 1389, 1572, 1573, 1389,
+ 1389, 1389, 1389, 1389, 1574, 1572, 1573, 1389,
+
+ 1389, 1389, 1572, 1573, 1572, 1573, 1549, 1550,
+ 1549, 1550, 1549, 1550, 1575, 1576, 1575, 1576,
+ 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389,
+ 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389,
+
+ 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577,
+ 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577,
+ 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577,
+ 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577,
+
+ 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389,
+ 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389,
+ 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389,
+ 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389,
+
+ 1389, 1389, 1389, 1549, 1550, 1549, 1550, 1549,
+ 1550, 1549, 1550, 1549, 1550, 1578, 1579, 1580,
+ 1581, 1549, 1550, 1549, 1550, 1549, 1550, 1549,
+ 1550, 1389, 1389, 1582, 1389, 1389, 1389, 1389,
+
+ 1583, 1389, 1389, 1584, 1572, 1573, 1389, 1389,
+ 1572, 1573, 1572, 1573, 1572, 1573, 1572, 1573,
+ 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389,
+ 1585, 1389, 1389, 1389, 1389, 1389, 1389, 1389,
+
+ 1572, 1573, 1389, 1389, 1572, 1573, 1389, 1389,
+ 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1572,
+ 1573, 1572, 1573, 1389, 1572, 1573, 1389, 1389,
+ 1549, 1550, 1549, 1550, 1389, 1389, 1389, 1389,
+
+ 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389,
+ 1572, 1573, 1389, 1389, 1389, 1389, 1389, 1389,
+ 1389, 1389, 1389, 1389, 1389, 1586, 1389, 1389,
+ 1572, 1573, 1389, 1389, 1549, 1550, 1389, 1389,
+
+ 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389,
+ 1389, 1389, 1389, 1389, 1456, 1389, 1389, 1389,
+ 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389,
+ 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389,
+
+ 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389,
+ 1389, 1389, 1389, 1572, 1573, 1572, 1573, 1389,
+ 1389, 1389, 1389, 1389, 1572, 1573, 1389, 1389,
+ 1389, 1389, 1389, 1389, 1572, 1573, 1389, 1389,
+
+ 1389, 1389, 1389, 1389, 1572, 1573, 1389, 1389,
+ 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389,
+ 1389, 1389, 1389, 1389, 1456, 1456, 1456, 1389,
+ 1389, 1572, 1573, 1572, 1573, 1572, 1573, 1572,
+
+ 1573, 1572, 1573, 1572, 1573, 1572, 1573, 1572,
+ 1573, 1572, 1573, 1572, 1573, 1572, 1573, 1572,
+ 1573, 1572, 1573, 1572, 1573, 1572, 1573, 1572,
+ 1573, 1572, 1573, 1572, 1573, 1572, 1573, 1572,
+
+ 1573, 1572, 1573, 1389, 1389, 1389, 1572, 1573,
+ 1572, 1573, 1572, 1573, 1572, 1573, 1389, 1572,
+ 1573, 1572, 1573, 1572, 1573, 1572, 1573, 1572,
+ 1573, 1572, 1573, 1572, 1573, 1572, 1573, 1572,
+
+ 1573, 1572, 1573, 1572, 1573, 1572, 1573, 1572,
+ 1573, 1572, 1573, 1572, 1573, 1572, 1573, 1572,
+ 1573, 1572, 1573, 1572, 1573, 1572, 1573, 1389,
+ 1389, 1389, 1389, 1389, 1587, 1389, 1588, 1389,
+
+ 1389, 1389, 1389, 1589, 1590, 1589, 1389, 1389,
+ 1389, 1389, 1389, 1389, 1572, 1573, 1591, 1389,
+ 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1572,
+ 1573, 1572, 1573, 1389, 1389, 1389, 1389, 1389,
+
+ 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503,
+ 1503, 1503, 1503, 1503, 1503, 1503, 1458, 1458,
+ 1458, 1458, 1458, 1458, 1459, 1459, 1459, 1459,
+ 1459, 1459, 1459, 1539, 1539, 1539, 1539, 1539,
+
+ 1459, 1459, 1459, 1459, 1539, 1539, 1539, 1539,
+ 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539,
+ 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569,
+ 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569,
+
+ 1569, 1569, 1569, 1569, 1569, 1539, 1539, 1569,
+ 1569, 1569, 1569, 1569, 1569, 1508, 1508, 1508,
+ 1539, 1539, 1539, 1539, 1539, 1505, 1505, 1505,
+ 1505, 1505, 1508, 1508, 1508, 1508, 1508, 1508,
+
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 202, 202, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 202, 202,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1592, 1592, 1592, 1508, 1508, 1508,
+
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1593, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1510, 1592, 1592, 1592, 1592, 1592,
1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592,
+
1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592,
+ 1592, 1592, 1592, 1592, 1467, 1467, 1467, 1467,
1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592,
-
- 1592, 1592, 1592, 1592, 1592, 1592, 201, 1593,
- 201, 201, 201, 201, 201, 1593, 201, 201,
- 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594,
- 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594,
-
- 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594,
- 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594,
- 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594,
- 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594,
-
- 1594, 1594, 1594, 1594, 1594, 1594, 1595, 1595,
- 201, 201, 201, 201, 201, 201, 201, 1596,
- 1597, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 1598,
-
- 854, 854, 854, 854, 854, 854, 854, 854,
- 854, 854, 854, 854, 854, 854, 854, 854,
- 854, 854, 854, 854, 854, 854, 854, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 854, 854, 854, 854, 854, 854, 854, 201,
- 854, 854, 854, 854, 854, 854, 854, 201,
- 854, 854, 854, 854, 854, 854, 854, 201,
- 854, 854, 854, 854, 854, 854, 854, 201,
-
- 266, 266, 266, 266, 266, 266, 266, 266,
- 266, 266, 266, 266, 266, 266, 266, 266,
- 266, 266, 266, 266, 266, 266, 266, 266,
- 266, 266, 266, 266, 266, 266, 266, 266,
-
- 1599, 1599, 1600, 1601, 1600, 1601, 1599, 1599,
- 1599, 1600, 1601, 1599, 1600, 1601, 1376, 1376,
- 1376, 1376, 1376, 1376, 1376, 1376, 1375, 1602,
- 1603, 1604, 1605, 1606, 1600, 1601, 1606, 1606,
-
- 1607, 1608, 1552, 1553, 1552, 1553, 1552, 1553,
- 1552, 1553, 1604, 1604, 1604, 1604, 1609, 1610,
- 1604, 1611, 1612, 1613, 1613, 1612, 1612, 1612,
- 1612, 1612, 1614, 1614, 1615, 1616, 1616, 1617,
-
- 1618, 1616, 1619, 1620, 1620, 1621, 1621, 1621,
- 1621, 1621, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622,
- 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622,
- 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622,
- 1622, 1622, 201, 1622, 1622, 1622, 1622, 1623,
+ 1592, 1592, 1592, 1592, 1592, 1592, 1594, 1593,
+
+ 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595,
+ 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595,
+ 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595,
+ 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595,
+
+ 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595,
+ 1595, 1595, 1595, 1595, 1595, 1595, 1595, 202,
+ 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596,
+ 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596,
+
+ 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596,
+ 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596,
+ 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596,
+ 1596, 1596, 1596, 1596, 1596, 1596, 1596, 202,
+
+ 127, 123, 1597, 1598, 1599, 1600, 1601, 127,
+ 123, 127, 123, 127, 123, 1602, 1603, 1604,
+ 1605, 1231, 1233, 1234, 1606, 127, 123, 1606,
+ 1231, 1231, 1231, 1231, 1607, 1607, 1608, 1609,
+
+ 1610, 1611, 1610, 1611, 1610, 1611, 1610, 1611,
+ 1610, 1611, 1610, 1611, 1610, 1611, 1610, 1611,
+ 1610, 1611, 1610, 1611, 1610, 1611, 1610, 1611,
+ 1610, 1611, 1610, 1611, 1610, 1611, 1610, 1611,
+
+ 1610, 1611, 1610, 1611, 1612, 1613, 1613, 1613,
+ 1613, 1613, 1613, 1614, 1615, 1614, 1615, 1616,
+ 1616, 1616, 1617, 1618, 202, 202, 202, 202,
+ 202, 1619, 1620, 1620, 1620, 1621, 1619, 1620,
1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622,
1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622,
1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622,
1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622,
- 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622,
- 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622,
- 1622, 1622, 1622, 1623, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
+ 1622, 1622, 1622, 1622, 1622, 1622, 202, 1623,
+ 202, 202, 202, 202, 202, 1623, 202, 202,
+ 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
+ 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
- 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623,
- 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623,
- 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623,
- 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623,
+ 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
+ 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
+ 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
+ 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
- 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623,
- 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623,
- 1623, 1623, 1623, 1623, 1623, 1623, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
+ 1624, 1624, 1624, 1624, 1624, 1624, 1625, 1625,
+ 202, 202, 202, 202, 202, 202, 202, 1626,
+ 1627, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 1628,
+
+ 868, 868, 868, 868, 868, 868, 868, 868,
+ 868, 868, 868, 868, 868, 868, 868, 868,
+ 868, 868, 868, 868, 868, 868, 868, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 868, 868, 868, 868, 868, 868, 868, 202,
+ 868, 868, 868, 868, 868, 868, 868, 202,
+ 868, 868, 868, 868, 868, 868, 868, 202,
+ 868, 868, 868, 868, 868, 868, 868, 202,
+
+ 267, 267, 267, 267, 267, 267, 267, 267,
+ 267, 267, 267, 267, 267, 267, 267, 267,
+ 267, 267, 267, 267, 267, 267, 267, 267,
+ 267, 267, 267, 267, 267, 267, 267, 267,
+
+ 1629, 1629, 1630, 1631, 1630, 1631, 1629, 1629,
+ 1629, 1630, 1631, 1629, 1630, 1631, 1393, 1393,
+ 1393, 1393, 1393, 1393, 1393, 1393, 1392, 1632,
+ 1633, 1634, 1635, 1636, 1630, 1631, 1636, 1636,
+
+ 1637, 1638, 1575, 1576, 1575, 1576, 1575, 1576,
+ 1575, 1576, 1634, 1634, 1634, 1634, 1639, 1640,
+ 1634, 1641, 1642, 1643, 1643, 1642, 1642, 1642,
+ 1642, 1642, 1644, 1644, 1645, 1646, 1646, 1647,
+
+ 1648, 1646, 1649, 1650, 1650, 1651, 1651, 1651,
+ 1651, 1651, 1652, 1653, 1652, 1653, 1652, 1654,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655,
+ 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655,
+ 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655,
+ 1655, 1655, 202, 1655, 1655, 1655, 1655, 1656,
+
+ 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655,
+ 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655,
+ 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655,
+ 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655,
+
+ 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655,
+ 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655,
+ 1655, 1655, 1655, 1656, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656,
+ 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656,
+ 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656,
+ 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656,
+
+ 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656,
+ 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656,
+ 1656, 1656, 1656, 1656, 1656, 1656, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657,
+ 1657, 1657, 1657, 1657, 202, 202, 202, 202,
+
+ 1347, 1658, 1659, 1660, 1498, 1661, 1662, 1663,
+ 16, 1384, 16, 1384, 16, 1384, 16, 1384,
+ 16, 1384, 1498, 1498, 16, 1384, 16, 1384,
+ 16, 1384, 16, 1384, 1664, 1362, 1665, 1665,
+
+ 1498, 1663, 1663, 1663, 1663, 1663, 1663, 1663,
+ 1663, 1663, 1666, 1667, 174, 1668, 1669, 1669,
+ 1670, 1671, 1671, 1671, 1671, 1672, 1673, 1498,
+ 1674, 1674, 1674, 1675, 1676, 1677, 1657, 1498,
+
+ 202, 1678, 1679, 1678, 1679, 1678, 1679, 1678,
+ 1679, 1678, 1679, 1679, 1680, 1679, 1680, 1679,
+ 1680, 1679, 1680, 1679, 1680, 1679, 1680, 1679,
+ 1680, 1679, 1680, 1679, 1680, 1679, 1680, 1679,
+
+ 1680, 1679, 1680, 1678, 1679, 1680, 1679, 1680,
+ 1679, 1680, 1679, 1679, 1679, 1679, 1679, 1679,
+ 1680, 1680, 1679, 1680, 1680, 1679, 1680, 1680,
+ 1679, 1680, 1680, 1679, 1680, 1680, 1679, 1679,
+
+ 1679, 1679, 1679, 1678, 1679, 1678, 1679, 1678,
+ 1679, 1679, 1679, 1679, 1679, 1679, 1678, 1679,
+ 1679, 1679, 1679, 1679, 1680, 1681, 1681, 202,
+ 202, 1682, 1682, 1683, 1683, 1684, 1685, 1686,
+
+ 1687, 1688, 1689, 1688, 1689, 1688, 1689, 1688,
+ 1689, 1688, 1689, 1689, 1690, 1689, 1690, 1689,
+ 1690, 1689, 1690, 1689, 1690, 1689, 1690, 1689,
+ 1690, 1689, 1690, 1689, 1690, 1689, 1690, 1689,
+
+ 1690, 1689, 1690, 1688, 1689, 1690, 1689, 1690,
+ 1689, 1690, 1689, 1689, 1689, 1689, 1689, 1689,
+ 1690, 1690, 1689, 1690, 1690, 1689, 1690, 1690,
+ 1689, 1690, 1690, 1689, 1690, 1690, 1689, 1689,
+
+ 1689, 1689, 1689, 1688, 1689, 1688, 1689, 1688,
+ 1689, 1689, 1689, 1689, 1689, 1689, 1688, 1689,
+ 1689, 1689, 1689, 1689, 1690, 1688, 1688, 1690,
+ 1690, 1690, 1690, 1691, 1692, 1693, 1694, 1695,
+
+ 202, 202, 202, 202, 202, 1696, 1696, 1696,
+ 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696,
+ 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696,
+ 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696,
+
+ 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696,
+ 1696, 1696, 1696, 1696, 1696, 1697, 1698, 1699,
+ 202, 1700, 1700, 1700, 1700, 1700, 1700, 1700,
+ 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700,
+
+ 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700,
+ 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700,
+ 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700,
+ 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700,
+
+ 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700,
+ 1700, 1700, 1700, 1700, 1700, 1700, 1700, 202,
+ 1701, 1701, 1702, 1702, 1702, 1702, 1703, 1703,
+ 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703,
+
+ 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704,
+ 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704,
+ 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704,
+ 1705, 1705, 1705, 202, 202, 202, 202, 202,
+
+ 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537,
+ 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537,
+ 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542,
+ 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542,
+
+ 1542, 1542, 1542, 1542, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
+ 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
+
+ 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707,
+ 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707,
+ 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707,
+ 1707, 1707, 1707, 1707, 1707, 1708, 1708, 202,
+
+ 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702,
+ 1702, 1702, 1703, 1703, 1703, 1703, 1703, 1703,
+ 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703,
+ 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703,
+
+ 1703, 1703, 1703, 1703, 1709, 1709, 1709, 1709,
+ 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
+ 1711, 1712, 1712, 1712, 1712, 1712, 1712, 1712,
+ 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712,
+
+ 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707,
+ 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707,
+ 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707,
+ 1707, 1707, 1707, 1707, 1708, 1708, 1713, 1701,
+
+ 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703,
+ 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703,
+ 1703, 1712, 1712, 1712, 1712, 1712, 1712, 1712,
+ 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712,
+
+ 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703,
+ 1703, 1703, 1703, 1703, 1711, 1711, 1711, 1711,
+ 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714,
+ 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714,
+
+ 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714,
+ 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714,
+ 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714,
+ 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1715,
+
+ 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714,
+ 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714,
+ 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714,
+ 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714,
+
+ 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714,
+ 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714,
+ 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714,
+ 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703,
+
+ 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703,
+ 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703,
+ 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1711,
+ 1711, 1711, 1711, 1703, 1703, 1703, 1703, 1703,
+
+ 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703,
+ 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703,
+ 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703,
+ 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703,
+
+ 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703,
+ 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703,
+ 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703,
+ 1703, 1703, 1703, 1703, 1703, 1703, 1711, 1711,
+
+ 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703,
+ 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703,
+ 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703,
+ 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1711,
+
+ 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716,
+ 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716,
+ 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716,
+ 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716,
+
+ 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716,
+ 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716,
+ 1716, 1716, 1716, 1716, 1716, 1716, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+
+ 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503,
+ 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503,
+ 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503,
+ 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503,
+
+ 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718,
+ 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718,
+ 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718,
+ 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718,
+
+ 1718, 1718, 1718, 1718, 1718, 1718, 1719, 1719,
+ 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719,
+ 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719,
+ 1719, 1719, 1719, 1719, 1720, 1720, 1720, 1720,
+
+ 1720, 1720, 1720, 1720, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1722, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1725, 1725, 1725, 1725, 1725,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
- 1624, 1624, 1624, 1624, 201, 201, 201, 201,
-
- 1330, 1625, 1626, 1627, 1473, 1628, 1629, 1630,
- 16, 1367, 16, 1367, 16, 1367, 16, 1367,
- 16, 1367, 1473, 1473, 16, 1367, 16, 1367,
- 16, 1367, 16, 1367, 1631, 1345, 1632, 1632,
-
- 1473, 1630, 1630, 1630, 1630, 1630, 1630, 1630,
- 1630, 1630, 1633, 1634, 173, 1635, 1636, 1636,
- 1637, 1638, 1638, 1638, 1638, 1639, 1640, 1473,
- 1641, 1641, 1641, 1642, 1643, 1644, 1624, 1473,
-
- 201, 1645, 1646, 1645, 1646, 1645, 1646, 1645,
- 1646, 1645, 1646, 1646, 1647, 1646, 1647, 1646,
- 1647, 1646, 1647, 1646, 1647, 1646, 1647, 1646,
- 1647, 1646, 1647, 1646, 1647, 1646, 1647, 1646,
-
- 1647, 1646, 1647, 1645, 1646, 1647, 1646, 1647,
- 1646, 1647, 1646, 1646, 1646, 1646, 1646, 1646,
- 1647, 1647, 1646, 1647, 1647, 1646, 1647, 1647,
- 1646, 1647, 1647, 1646, 1647, 1647, 1646, 1646,
-
- 1646, 1646, 1646, 1645, 1646, 1645, 1646, 1645,
- 1646, 1646, 1646, 1646, 1646, 1646, 1645, 1646,
- 1646, 1646, 1646, 1646, 1647, 1648, 1648, 201,
- 201, 1649, 1649, 1650, 1650, 1651, 1652, 1653,
-
- 1654, 1655, 1656, 1655, 1656, 1655, 1656, 1655,
- 1656, 1655, 1656, 1656, 1657, 1656, 1657, 1656,
- 1657, 1656, 1657, 1656, 1657, 1656, 1657, 1656,
- 1657, 1656, 1657, 1656, 1657, 1656, 1657, 1656,
-
- 1657, 1656, 1657, 1655, 1656, 1657, 1656, 1657,
- 1656, 1657, 1656, 1656, 1656, 1656, 1656, 1656,
- 1657, 1657, 1656, 1657, 1657, 1656, 1657, 1657,
- 1656, 1657, 1657, 1656, 1657, 1657, 1656, 1656,
-
- 1656, 1656, 1656, 1655, 1656, 1655, 1656, 1655,
- 1656, 1656, 1656, 1656, 1656, 1656, 1655, 1656,
- 1656, 1656, 1656, 1656, 1657, 1655, 1655, 1657,
- 1657, 1657, 1657, 1658, 1659, 1660, 1661, 1662,
-
- 201, 201, 201, 201, 201, 1663, 1663, 1663,
- 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663,
- 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663,
- 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663,
-
- 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663,
- 1663, 1663, 1663, 1663, 1663, 1664, 1665, 201,
- 201, 1666, 1666, 1666, 1666, 1666, 1666, 1666,
- 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666,
-
- 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666,
- 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666,
- 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666,
- 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666,
-
- 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666,
- 1666, 1666, 1666, 1666, 1666, 1666, 1666, 201,
- 1667, 1667, 1668, 1668, 1668, 1668, 1669, 1669,
- 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669,
-
- 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670,
- 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670,
- 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670,
- 1671, 1671, 1671, 201, 201, 201, 201, 201,
-
- 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512,
- 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512,
- 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519,
- 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519,
-
- 1519, 1519, 1519, 1519, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672,
- 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672,
-
- 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673,
- 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673,
- 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673,
- 1673, 1673, 1673, 1673, 1673, 1674, 1674, 201,
-
- 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668,
- 1668, 1668, 1669, 1669, 1669, 1669, 1669, 1669,
- 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669,
- 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669,
-
- 1669, 1669, 1669, 1669, 1675, 1675, 1675, 1675,
- 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676,
- 1677, 1678, 1678, 1678, 1678, 1678, 1678, 1678,
- 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678,
-
- 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673,
- 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673,
- 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673,
- 1673, 1673, 1673, 1673, 1674, 1674, 1679, 1667,
-
- 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669,
- 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669,
- 1669, 1678, 1678, 1678, 1678, 1678, 1678, 1678,
- 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678,
-
- 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669,
- 1669, 1669, 1669, 1669, 1677, 1677, 1677, 1677,
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680,
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680,
-
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680,
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680,
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680,
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 201,
-
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680,
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680,
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680,
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680,
-
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680,
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680,
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680,
- 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669,
-
- 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669,
- 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669,
- 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1677,
- 1677, 1677, 1677, 1669, 1669, 1669, 1669, 1669,
-
- 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669,
- 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669,
- 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669,
- 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669,
-
- 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669,
- 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669,
- 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669,
- 1669, 1669, 1669, 1669, 1669, 1669, 1677, 1677,
-
- 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669,
- 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669,
- 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669,
- 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1677,
-
- 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681,
- 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681,
- 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681,
- 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681,
-
- 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681,
- 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681,
- 1681, 1681, 1681, 1681, 1681, 1681, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
-
- 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
- 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
- 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
- 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
-
- 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683,
- 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683,
- 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683,
- 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683,
-
- 1683, 1683, 1683, 1683, 1683, 1683, 1684, 1684,
- 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684,
- 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684,
- 1684, 1684, 1684, 1684, 1685, 1685, 1685, 1685,
-
- 1685, 1685, 1685, 1685, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1687, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
-
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
-
- 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690,
- 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690,
- 1690, 1690, 1690, 1690, 1690, 1691, 1690, 1690,
- 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690,
-
- 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690,
- 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690,
- 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690,
- 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690,
-
- 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690,
- 1690, 1690, 1690, 1690, 1690, 201, 201, 201,
- 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692,
- 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692,
-
- 1692, 1692, 1693, 1693, 1692, 1692, 1692, 1692,
- 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692,
- 1692, 1692, 1692, 1692, 1693, 1692, 1692, 1692,
- 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692,
-
- 1692, 1693, 1692, 1692, 1692, 1693, 1692, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694,
- 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694,
-
- 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694,
- 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694,
- 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694,
- 1695, 1695, 1695, 1695, 1695, 1695, 1696, 1697,
-
- 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698,
- 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698,
- 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698,
- 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698,
-
- 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698,
- 1698, 1698, 1698, 1698, 1699, 1700, 1701, 1702,
- 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698,
- 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698,
-
- 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710,
- 1711, 1712, 1698, 1698, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 280, 281, 280, 281, 280, 281, 280, 281,
- 280, 281, 280, 281, 280, 281, 280, 281,
- 280, 281, 280, 281, 280, 281, 280, 281,
- 280, 281, 280, 281, 280, 281, 280, 281,
-
- 284, 285, 280, 281, 280, 281, 280, 281,
- 280, 281, 280, 281, 280, 281, 1713, 266,
- 1714, 1714, 1714, 1715, 1716, 1716, 1716, 1716,
- 1716, 1716, 1716, 1716, 266, 266, 1715, 1717,
-
- 280, 281, 280, 281, 280, 281, 280, 281,
- 280, 281, 280, 281, 280, 281, 280, 281,
- 280, 281, 280, 281, 280, 281, 280, 281,
- 286, 287, 286, 287, 1718, 1718, 1719, 1716,
-
- 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720,
- 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720,
- 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720,
- 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720,
-
- 1720, 1720, 1720, 1720, 1720, 1720, 1721, 1721,
- 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
- 1722, 1722, 1723, 1724, 1725, 1725, 1725, 1724,
- 201, 201, 201, 201, 201, 201, 201, 201,
+ 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726,
+ 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726,
+ 1726, 1726, 1726, 1726, 1726, 1727, 1726, 1726,
+ 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726,
1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726,
1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726,
- 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1727,
- 1727, 1727, 1727, 1610, 1610, 1610, 1610, 1610,
-
- 1728, 1728, 1216, 1217, 1216, 1217, 1216, 1217,
- 1216, 1217, 1216, 1217, 1216, 1217, 1216, 1217,
- 1214, 1214, 1216, 1217, 1216, 1217, 1216, 1217,
- 1216, 1217, 1216, 1217, 1216, 1217, 1216, 1217,
-
- 1216, 1217, 1216, 1217, 1216, 1217, 1216, 1217,
- 1216, 1217, 1216, 1217, 1216, 1217, 1216, 1217,
- 1216, 1217, 1216, 1217, 1216, 1217, 1216, 1217,
- 1216, 1217, 1216, 1217, 1216, 1217, 1216, 1217,
-
- 1216, 1217, 1216, 1217, 1216, 1217, 1216, 1217,
- 1216, 1217, 1216, 1217, 1216, 1217, 1216, 1217,
- 1577, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
- 1214, 1216, 1217, 1216, 1217, 1729, 1216, 1217,
-
- 1216, 1217, 1216, 1217, 1216, 1217, 1216, 1217,
- 1610, 1730, 1730, 1216, 1217, 1731, 1732, 1733,
- 1734, 1735, 1736, 1737, 1738, 1738, 1739, 1740,
- 1739, 1740, 1739, 1740, 1739, 1740, 1739, 1740,
-
- 1734, 1735, 1734, 1735, 1734, 1735, 1734, 1735,
- 1734, 1735, 1741, 1742, 1743, 1744, 1745, 201,
- 1746, 1747, 1748, 1749, 1750, 1751, 1750, 1751,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 1752,
- 1753, 1753, 1732, 1754, 1754, 1754, 1754, 1754,
-
- 1755, 1755, 1756, 1755, 1755, 1755, 1757, 1755,
- 1755, 1755, 1755, 1756, 1755, 1755, 1755, 1755,
- 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755,
- 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755,
-
- 1755, 1755, 1755, 1758, 1758, 1756, 1756, 1758,
- 1759, 1759, 1759, 1759, 201, 201, 201, 201,
- 1676, 1676, 1676, 1676, 1676, 1676, 796, 796,
- 1407, 1760, 201, 201, 201, 201, 201, 201,
-
- 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761,
- 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761,
- 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761,
- 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761,
-
- 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761,
- 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761,
- 1761, 1761, 1762, 1763, 1764, 1764, 1765, 1765,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 1766, 1766, 1767, 1767, 1767, 1767, 1767, 1767,
- 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767,
- 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767,
- 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767,
-
- 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767,
- 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767,
- 1767, 1767, 1767, 1767, 1766, 1766, 1766, 1766,
- 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766,
-
- 1766, 1766, 1766, 1766, 1768, 1769, 201, 201,
- 201, 201, 201, 201, 201, 201, 1770, 1770,
- 1771, 1772, 1773, 1774, 1775, 1776, 1777, 1778,
- 1779, 1780, 201, 201, 201, 201, 201, 201,
-
- 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781,
- 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781,
- 1781, 1781, 501, 501, 501, 501, 501, 501,
- 1782, 1782, 1782, 501, 1783, 1784, 201, 201,
-
- 1785, 1786, 1787, 1788, 1789, 1790, 1791, 1792,
- 1793, 1794, 1795, 1795, 1795, 1795, 1795, 1795,
- 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795,
- 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795,
-
- 1795, 1795, 1795, 1795, 1795, 1795, 1796, 1796,
- 1796, 1796, 1796, 1797, 1797, 1797, 1798, 1799,
+ 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726,
+ 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726,
+
+ 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726,
+ 1726, 1726, 1726, 1726, 1726, 202, 202, 202,
+ 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728,
+ 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728,
+
+ 1728, 1728, 1729, 1729, 1728, 1728, 1728, 1728,
+ 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728,
+ 1728, 1728, 1728, 1728, 1729, 1728, 1728, 1728,
+ 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728,
+
+ 1728, 1729, 1728, 1728, 1728, 1729, 1728, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730,
+ 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730,
+
+ 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730,
+ 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730,
+ 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730,
+ 1731, 1731, 1731, 1731, 1731, 1731, 1732, 1733,
+
+ 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734,
+ 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734,
+ 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734,
+ 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734,
+
+ 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734,
+ 1734, 1734, 1734, 1734, 1735, 1736, 1737, 1738,
+ 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734,
+ 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734,
+
+ 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746,
+ 1747, 1748, 1734, 1734, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 281, 282, 281, 282, 281, 282, 281, 282,
+ 281, 282, 281, 282, 281, 282, 281, 282,
+ 281, 282, 281, 282, 281, 282, 281, 282,
+ 281, 282, 281, 282, 281, 282, 281, 282,
+
+ 285, 286, 281, 282, 281, 282, 281, 282,
+ 281, 282, 281, 282, 281, 282, 1749, 267,
+ 1750, 1750, 1750, 1751, 1752, 1752, 1752, 1752,
+ 1752, 1752, 1752, 1752, 267, 267, 1751, 1753,
+
+ 281, 282, 281, 282, 281, 282, 281, 282,
+ 281, 282, 281, 282, 281, 282, 281, 282,
+ 281, 282, 281, 282, 281, 282, 281, 282,
+ 287, 288, 287, 288, 1754, 1754, 1755, 1752,
+
+ 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
+ 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
+ 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
+ 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
+
+ 1756, 1756, 1756, 1756, 1756, 1756, 1757, 1757,
+ 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757,
+ 1758, 1758, 1759, 1760, 1761, 1761, 1761, 1760,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762,
+ 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762,
+ 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1763,
+ 1763, 1763, 1763, 1640, 1640, 1640, 1640, 1640,
+
+ 1764, 1764, 1233, 1234, 1233, 1234, 1233, 1234,
+ 1233, 1234, 1233, 1234, 1233, 1234, 1233, 1234,
+ 1231, 1231, 1233, 1234, 1233, 1234, 1233, 1234,
+ 1233, 1234, 1233, 1234, 1233, 1234, 1233, 1234,
+
+ 1233, 1234, 1233, 1234, 1233, 1234, 1233, 1234,
+ 1233, 1234, 1233, 1234, 1233, 1234, 1233, 1234,
+ 1233, 1234, 1233, 1234, 1233, 1234, 1233, 1234,
+ 1233, 1234, 1233, 1234, 1233, 1234, 1233, 1234,
+
+ 1233, 1234, 1233, 1234, 1233, 1234, 1233, 1234,
+ 1233, 1234, 1233, 1234, 1233, 1234, 1233, 1234,
+ 1607, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
+ 1231, 1233, 1234, 1233, 1234, 1765, 1233, 1234,
+
+ 1233, 1234, 1233, 1234, 1233, 1234, 1233, 1234,
+ 1640, 1766, 1766, 1233, 1234, 1767, 1768, 1769,
+ 1770, 1771, 1772, 1773, 1774, 1775, 1776, 1777,
+ 1776, 1777, 1776, 1777, 1776, 1777, 1776, 1777,
+
+ 1770, 1771, 1770, 1771, 1770, 1771, 1770, 1771,
+ 1770, 1771, 1778, 1779, 1780, 1781, 1782, 1783,
+ 1784, 1785, 1786, 1787, 1788, 1789, 1788, 1789,
+ 1790, 1791, 1792, 1793, 1792, 1793, 1792, 1793,
+
+ 202, 202, 1792, 1793, 1794, 1795, 1796, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 1797,
+ 1798, 1798, 1768, 1799, 1799, 1799, 1799, 1799,
+
+ 1800, 1800, 1801, 1800, 1800, 1800, 1802, 1800,
+ 1800, 1800, 1800, 1801, 1800, 1800, 1800, 1800,
1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800,
1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800,
- 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1801,
- 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801,
- 1801, 1801, 1802, 1803, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 1804,
-
- 846, 846, 846, 846, 846, 846, 846, 846,
- 846, 846, 846, 846, 846, 846, 846, 846,
- 846, 846, 846, 846, 846, 846, 846, 846,
- 846, 846, 846, 846, 846, 201, 201, 201,
-
- 1805, 1805, 1805, 1806, 1807, 1807, 1807, 1807,
- 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807,
- 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807,
- 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807,
-
- 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807,
- 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807,
- 1807, 1807, 1807, 1808, 1806, 1806, 1805, 1805,
- 1805, 1805, 1806, 1806, 1805, 1806, 1806, 1806,
-
- 1809, 1810, 1810, 1810, 1810, 1810, 1810, 1811,
- 1812, 1812, 1810, 1810, 1810, 1810, 201, 1813,
- 1814, 1815, 1816, 1817, 1818, 1819, 1820, 1821,
- 1822, 1823, 201, 201, 201, 201, 1810, 1810,
-
- 1824, 1824, 1824, 1824, 1824, 1825, 1826, 1824,
- 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824,
- 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1834,
- 1835, 1836, 1824, 1824, 1824, 1824, 1824, 201,
-
- 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837,
- 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837,
- 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837,
- 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837,
-
- 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837,
- 1837, 1838, 1838, 1838, 1838, 1838, 1838, 1839,
- 1839, 1838, 1838, 1839, 1839, 1838, 1838, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 1837, 1837, 1837, 1838, 1837, 1837, 1837, 1837,
- 1837, 1837, 1837, 1837, 1838, 1839, 201, 201,
- 1840, 1841, 1842, 1843, 1844, 1845, 1846, 1847,
- 1848, 1849, 201, 201, 1850, 1851, 1851, 1851,
-
- 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852,
- 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852,
- 1853, 1852, 1852, 1852, 1852, 1852, 1852, 1854,
- 1854, 1854, 1852, 834, 1825, 1855, 1824, 1824,
-
- 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856,
- 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856,
- 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856,
- 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856,
-
- 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856,
- 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856,
- 1857, 1856, 1857, 1857, 1858, 1856, 1856, 1857,
- 1857, 1856, 1856, 1856, 1856, 1856, 1857, 1857,
-
- 1856, 1857, 1856, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 1856, 1856, 1859, 1860, 1860,
-
- 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861,
- 1861, 1861, 1861, 1862, 1863, 1863, 1862, 1862,
- 1864, 1864, 1861, 1865, 1865, 1862, 1866, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 201, 1867, 1867, 1867, 1867, 1867, 1867, 201,
- 201, 1867, 1867, 1867, 1867, 1867, 1867, 201,
- 201, 1867, 1867, 1867, 1867, 1867, 1867, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 1867, 1867, 1867, 1867, 1867, 1867, 1867, 201,
- 1867, 1867, 1867, 1867, 1867, 1867, 1867, 201,
- 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738,
- 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738,
-
- 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738,
- 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738,
- 1738, 1738, 1738, 1868, 1738, 1738, 1738, 1738,
- 1738, 1738, 1738, 1869, 1870, 1870, 1870, 1870,
-
- 1871, 1871, 1871, 1871, 1738, 1872, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 1873, 1874, 1875, 1876, 1877, 1878, 1879, 1880,
- 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1888,
-
- 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1896,
- 1897, 1898, 1899, 1900, 1901, 1902, 1903, 1904,
- 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912,
- 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920,
-
+ 1800, 1800, 1800, 1803, 1803, 1801, 1801, 1803,
+ 1804, 1804, 1804, 1804, 202, 202, 202, 202,
+ 1710, 1710, 1710, 1710, 1710, 1710, 810, 810,
+ 1424, 1805, 202, 202, 202, 202, 202, 202,
+
+ 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806,
+ 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806,
+ 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806,
+ 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806,
+
+ 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806,
+ 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806,
+ 1806, 1806, 1807, 1808, 1809, 1809, 1810, 1810,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 1811, 1811, 1812, 1812, 1812, 1812, 1812, 1812,
+ 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812,
+ 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812,
+ 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812,
+
+ 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812,
+ 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812,
+ 1812, 1812, 1812, 1812, 1811, 1811, 1811, 1811,
+ 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811,
+
+ 1811, 1811, 1811, 1811, 1813, 1814, 202, 202,
+ 202, 202, 202, 202, 202, 202, 1815, 1815,
+ 1816, 1817, 1818, 1819, 1820, 1821, 1822, 1823,
+ 1824, 1825, 202, 202, 202, 202, 202, 202,
+
+ 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826,
+ 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826,
+ 1826, 1826, 508, 508, 508, 508, 508, 508,
+ 1827, 1827, 1827, 508, 1828, 1829, 1830, 1831,
+
+ 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1839,
+ 1840, 1841, 1842, 1842, 1842, 1842, 1842, 1842,
+ 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842,
+ 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842,
+
+ 1842, 1842, 1842, 1842, 1842, 1842, 1843, 1843,
+ 1843, 1843, 1843, 1844, 1844, 1844, 1845, 1846,
+ 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847,
+ 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847,
+
+ 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1848,
+ 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848,
+ 1848, 1848, 1849, 1850, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 1851,
+
+ 860, 860, 860, 860, 860, 860, 860, 860,
+ 860, 860, 860, 860, 860, 860, 860, 860,
+ 860, 860, 860, 860, 860, 860, 860, 860,
+ 860, 860, 860, 860, 860, 202, 202, 202,
+
+ 1852, 1852, 1852, 1853, 1854, 1854, 1854, 1854,
+ 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854,
+ 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854,
+ 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854,
+
+ 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854,
+ 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854,
+ 1854, 1854, 1854, 1855, 1853, 1853, 1852, 1852,
+ 1852, 1852, 1853, 1853, 1852, 1852, 1853, 1853,
+
+ 1856, 1857, 1857, 1857, 1857, 1857, 1857, 1858,
+ 1859, 1859, 1857, 1857, 1857, 1857, 202, 1860,
+ 1861, 1862, 1863, 1864, 1865, 1866, 1867, 1868,
+ 1869, 1870, 202, 202, 202, 202, 1857, 1857,
+
+ 1871, 1871, 1871, 1871, 1871, 1872, 1873, 1871,
+ 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871,
+ 1874, 1875, 1876, 1877, 1878, 1879, 1880, 1881,
+ 1882, 1883, 1871, 1871, 1871, 1871, 1871, 202,
+
+ 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884,
+ 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884,
+ 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884,
+ 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884,
+
+ 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884,
+ 1884, 1885, 1885, 1885, 1885, 1885, 1885, 1886,
+ 1886, 1885, 1885, 1886, 1886, 1885, 1885, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 1884, 1884, 1884, 1885, 1884, 1884, 1884, 1884,
+ 1884, 1884, 1884, 1884, 1885, 1886, 202, 202,
+ 1887, 1888, 1889, 1890, 1891, 1892, 1893, 1894,
+ 1895, 1896, 202, 202, 1897, 1898, 1898, 1898,
+
+ 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899,
+ 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899,
+ 1900, 1899, 1899, 1899, 1899, 1899, 1899, 1901,
+ 1901, 1901, 1899, 848, 1872, 1902, 1871, 1871,
+
+ 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903,
+ 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903,
+ 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903,
+ 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903,
+
+ 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903,
+ 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903,
+ 1904, 1903, 1904, 1904, 1905, 1903, 1903, 1904,
+ 1904, 1903, 1903, 1903, 1903, 1903, 1904, 1904,
+
+ 1903, 1904, 1903, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 1903, 1903, 1906, 1907, 1907,
+
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1909, 1910, 1910, 1909, 1909,
+ 1911, 1911, 1908, 1912, 1912, 1909, 1913, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 202, 1914, 1914, 1914, 1914, 1914, 1914, 202,
+ 202, 1914, 1914, 1914, 1914, 1914, 1914, 202,
+ 202, 1914, 1914, 1914, 1914, 1914, 1914, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 1914, 1914, 1914, 1914, 1914, 1914, 1914, 202,
+ 1914, 1914, 1914, 1914, 1914, 1914, 1914, 202,
+ 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775,
+ 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775,
+
+ 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775,
+ 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775,
+ 1775, 1775, 1775, 1915, 1775, 1775, 1775, 1775,
+ 1775, 1775, 1775, 1916, 1917, 1917, 1917, 1917,
+
+ 1918, 1918, 1918, 1918, 1775, 1919, 1920, 1920,
+ 202, 202, 202, 202, 202, 202, 202, 202,
1921, 1922, 1923, 1924, 1925, 1926, 1927, 1928,
1929, 1930, 1931, 1932, 1933, 1934, 1935, 1936,
+
1937, 1938, 1939, 1940, 1941, 1942, 1943, 1944,
1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952,
-
- 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953,
- 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953,
- 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953,
- 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953,
-
- 1953, 1953, 1953, 1954, 1954, 1955, 1954, 1954,
- 1955, 1954, 1954, 1956, 1954, 1957, 201, 201,
- 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965,
- 1966, 1967, 201, 201, 201, 201, 201, 201,
-
- 1968, 1969, 1969, 1969, 1969, 1969, 1969, 1969,
- 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969,
- 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969,
- 1969, 1969, 1969, 1969, 1968, 1969, 1969, 1969,
-
- 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969,
- 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969,
- 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969,
- 1968, 1969, 1969, 1969, 1969, 1969, 1969, 1969,
-
- 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969,
- 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969,
- 1969, 1969, 1969, 1969, 1968, 1969, 1969, 1969,
- 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969,
-
- 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969,
- 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969,
- 1968, 1969, 1969, 1969, 1969, 1969, 1969, 1969,
- 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969,
-
- 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969,
- 1969, 1969, 1969, 1969, 1968, 1969, 1969, 1969,
- 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969,
- 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969,
-
- 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969,
- 1968, 1969, 1969, 1969, 1969, 1969, 1969, 1969,
- 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969,
- 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969,
-
- 1969, 1969, 1969, 1969, 1968, 1969, 1969, 1969,
- 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969,
- 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969,
- 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969,
-
- 1969, 1969, 1969, 1969, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 849, 849, 849, 849, 849, 849, 849, 849,
- 849, 849, 849, 849, 849, 849, 849, 849,
-
- 849, 849, 849, 849, 849, 849, 849, 201,
- 201, 201, 201, 852, 852, 852, 852, 852,
- 852, 852, 852, 852, 852, 852, 852, 852,
- 852, 852, 852, 852, 852, 852, 852, 852,
-
- 852, 852, 852, 852, 852, 852, 852, 852,
- 852, 852, 852, 852, 852, 852, 852, 852,
- 852, 852, 852, 852, 852, 852, 852, 852,
- 852, 852, 852, 852, 201, 201, 201, 201,
-
- 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970,
- 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970,
- 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970,
- 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970,
-
- 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971,
- 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971,
- 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971,
- 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971,
-
- 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972,
- 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972,
- 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972,
- 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972,
-
- 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972,
- 1972, 1972, 1972, 1972, 1972, 1972, 1683, 1683,
- 1972, 1683, 1972, 1683, 1683, 1972, 1972, 1972,
- 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1683,
-
- 1972, 1683, 1972, 1683, 1683, 1972, 1972, 1683,
- 1683, 1683, 1972, 1972, 1972, 1972, 1973, 1973,
- 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
- 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
-
- 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
- 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
- 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
- 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
-
- 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
- 1974, 1974, 1974, 1975, 1975, 1975, 1682, 1682,
- 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976,
- 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976,
-
- 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976,
- 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976,
- 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976,
- 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976,
-
- 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976,
- 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976,
- 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976,
- 1976, 1976, 1682, 1682, 1682, 1682, 1682, 1682,
-
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
-
- 1977, 1978, 1979, 1980, 1981, 1982, 1982, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 1983, 1984, 1985, 1986, 1987,
- 201, 201, 201, 201, 201, 1988, 1989, 1990,
-
- 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991,
- 1991, 1992, 1990, 1990, 1990, 1990, 1990, 1990,
- 1990, 1990, 1990, 1990, 1990, 1990, 1990, 298,
- 1990, 1990, 1990, 1990, 1990, 298, 1990, 298,
-
- 1990, 1990, 298, 1990, 1990, 298, 1990, 1990,
- 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1991,
- 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993,
- 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993,
-
- 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993,
- 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993,
- 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993,
- 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993,
-
- 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993,
- 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993,
- 1993, 1993, 1994, 1994, 1994, 1994, 1994, 1994,
- 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994,
-
- 1994, 1994, 344, 344, 344, 344, 344, 344,
- 344, 344, 344, 344, 344, 344, 344, 344,
- 344, 344, 344, 1993, 1993, 1993, 1993, 1993,
- 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993,
-
- 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993,
- 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993,
- 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993,
- 1993, 1993, 1993, 1993, 1993, 1993, 1632, 1345,
-
- 344, 344, 344, 344, 344, 344, 344, 344,
- 344, 344, 344, 344, 344, 344, 344, 344,
- 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993,
- 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993,
-
- 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993,
- 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993,
- 344, 344, 1993, 1993, 1993, 1993, 1993, 1993,
- 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993,
-
- 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993,
- 344, 344, 344, 344, 344, 344, 344, 344,
- 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995,
- 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995,
-
- 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995,
- 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995,
- 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993,
- 1993, 1993, 1993, 1993, 1996, 336, 344, 344,
-
- 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997,
- 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997,
- 1998, 1999, 2000, 2001, 2002, 2003, 2003, 2004,
- 2005, 2006, 201, 201, 201, 201, 201, 201,
-
- 172, 172, 172, 172, 1198, 1198, 1198, 1089,
- 1089, 1089, 1089, 1089, 1089, 1089, 1719, 1719,
- 2007, 2008, 2008, 2009, 2009, 2010, 2011, 2010,
- 2011, 2010, 2011, 2010, 2011, 2010, 2011, 2010,
-
- 2011, 2010, 2011, 2010, 2011, 1644, 1644, 2012,
- 2013, 2007, 2007, 2007, 2007, 2009, 2009, 2009,
- 2014, 2015, 2016, 201, 2017, 2018, 2019, 2019,
- 2008, 1398, 1399, 1398, 1399, 1398, 1399, 2020,
-
- 2007, 2007, 2021, 2022, 2023, 2024, 2025, 201,
- 2007, 1401, 1359, 2007, 201, 201, 201, 201,
- 1993, 1993, 1993, 2026, 1993, 344, 1993, 1993,
- 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993,
-
- 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993,
- 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993,
- 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993,
- 1993, 1993, 1993, 1993, 1993, 344, 344, 2027,
-
- 201, 2019, 2007, 2020, 1401, 1359, 2007, 2028,
- 1398, 1399, 2007, 2021, 2014, 2022, 2016, 2029,
- 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037,
- 2038, 2039, 2018, 2017, 2040, 2025, 2041, 2019,
-
- 2007, 2042, 2042, 2042, 2042, 2042, 2042, 2042,
- 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042,
+ 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960,
+ 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968,
+
+ 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976,
+ 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984,
+ 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992,
+ 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+
+ 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001,
+ 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001,
+ 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001,
+ 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001,
+
+ 2001, 2001, 2001, 2002, 2002, 2003, 2002, 2002,
+ 2003, 2002, 2002, 2004, 2002, 2005, 202, 202,
+ 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013,
+ 2014, 2015, 202, 202, 202, 202, 202, 202,
+
+ 2016, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
+ 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
+ 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
+ 2017, 2017, 2017, 2017, 2016, 2017, 2017, 2017,
+
+ 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
+ 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
+ 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
+ 2016, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
+
+ 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
+ 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
+ 2017, 2017, 2017, 2017, 2016, 2017, 2017, 2017,
+ 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
+
+ 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
+ 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
+ 2016, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
+ 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
+
+ 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
+ 2017, 2017, 2017, 2017, 2016, 2017, 2017, 2017,
+ 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
+ 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
+
+ 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
+ 2016, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
+ 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
+ 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
+
+ 2017, 2017, 2017, 2017, 2016, 2017, 2017, 2017,
+ 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
+ 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
+ 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
+
+ 2017, 2017, 2017, 2017, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 863, 863, 863, 863, 863, 863, 863, 863,
+ 863, 863, 863, 863, 863, 863, 863, 863,
+
+ 863, 863, 863, 863, 863, 863, 863, 202,
+ 202, 202, 202, 866, 866, 866, 866, 866,
+ 866, 866, 866, 866, 866, 866, 866, 866,
+ 866, 866, 866, 866, 866, 866, 866, 866,
+
+ 866, 866, 866, 866, 866, 866, 866, 866,
+ 866, 866, 866, 866, 866, 866, 866, 866,
+ 866, 866, 866, 866, 866, 866, 866, 866,
+ 866, 866, 866, 866, 202, 202, 202, 202,
+
+ 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018,
+ 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018,
+ 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018,
+ 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018,
+
+ 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019,
+ 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019,
+ 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019,
+ 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019,
+
+ 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020,
+ 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020,
+ 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020,
+ 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020,
+
+ 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020,
+ 2020, 2020, 2020, 2020, 2020, 2020, 1718, 1718,
+ 2020, 1718, 2020, 1718, 1718, 2020, 2020, 2020,
+ 2020, 2020, 2020, 2020, 2020, 2020, 2020, 1718,
+
+ 2020, 1718, 2020, 1718, 1718, 2020, 2020, 1718,
+ 1718, 1718, 2020, 2020, 2020, 2020, 2021, 2021,
+ 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
+ 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
+
+ 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
+ 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
+ 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
+ 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
+
+ 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
+ 2022, 2022, 2022, 2023, 2023, 2023, 1717, 1717,
+ 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024,
+ 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024,
+
+ 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024,
+ 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024,
+ 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024,
+ 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024,
+
+ 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024,
+ 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024,
+ 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024,
+ 2024, 2024, 1717, 1717, 1717, 1717, 1717, 1717,
+
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+
+ 2025, 2026, 2027, 2028, 2029, 2030, 2030, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 2031, 2032, 2033, 2034, 2035,
+ 202, 202, 202, 202, 202, 2036, 2037, 2038,
+
+ 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039,
+ 2039, 2040, 2038, 2038, 2038, 2038, 2038, 2038,
+ 2038, 2038, 2038, 2038, 2038, 2038, 2038, 301,
+ 2038, 2038, 2038, 2038, 2038, 301, 2038, 301,
+
+ 2038, 2038, 301, 2038, 2038, 301, 2038, 2038,
+ 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2039,
+ 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+ 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+
+ 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+ 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+ 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+ 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+
+ 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+ 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+ 2041, 2041, 2042, 2042, 2042, 2042, 2042, 2042,
2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042,
- 2042, 2042, 2042, 2043, 2007, 2044, 2045, 2009,
-
- 2045, 2046, 2046, 2046, 2046, 2046, 2046, 2046,
- 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046,
- 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046,
- 2046, 2046, 2046, 2043, 2025, 2044, 2025, 2047,
-
- 2048, 2049, 1398, 1399, 2050, 2051, 2052, 2053,
- 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
- 2054, 2052, 2052, 2052, 2052, 2052, 2052, 2052,
- 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052,
-
- 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052,
- 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052,
- 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052,
- 2052, 2052, 2052, 2052, 2052, 2052, 2055, 2055,
-
- 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666,
- 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666,
- 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666,
- 1666, 1666, 1666, 1666, 1666, 1666, 1666, 201,
-
- 201, 201, 1666, 1666, 1666, 1666, 1666, 1666,
- 201, 201, 1666, 1666, 1666, 1666, 1666, 1666,
- 201, 201, 1666, 1666, 1666, 1666, 1666, 1666,
- 201, 201, 1666, 1666, 1666, 201, 201, 201,
-
- 2056, 1401, 2025, 2045, 1640, 1401, 1401, 201,
- 1422, 1397, 1397, 1397, 1397, 1422, 1422, 201,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 2057, 2057, 2057, 2058, 51, 2059, 2059,
-
- 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060,
- 2060, 2060, 2060, 2060, 201, 2060, 2060, 2060,
- 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060,
- 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060,
-
- 2060, 2060, 2060, 2060, 2060, 2060, 2060, 201,
- 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060,
- 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060,
- 2060, 2060, 2060, 201, 2060, 2060, 201, 2060,
-
- 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060,
- 2060, 2060, 2060, 2060, 2060, 2060, 201, 201,
- 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060,
- 2060, 2060, 2060, 2060, 2060, 2060, 201, 201,
-
- 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060,
- 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060,
- 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060,
- 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060,
-
- 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060,
- 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060,
- 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060,
- 2060, 2060, 2060, 201, 201, 201, 201, 201,
-
- 2061, 2062, 2061, 201, 201, 201, 201, 2063,
- 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063,
- 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063,
- 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063,
-
- 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063,
- 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063,
- 2063, 2063, 2063, 2063, 201, 201, 201, 2064,
- 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064,
-
- 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065,
- 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065,
- 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065,
- 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065,
-
- 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065,
- 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065,
- 2065, 2065, 2065, 2065, 2065, 2066, 2066, 2066,
- 2066, 2067, 2067, 2067, 2067, 2067, 2067, 2067,
-
- 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067,
- 2067, 2067, 2066, 2068, 2069, 2070, 2070, 201,
- 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516,
- 1516, 1516, 1516, 1516, 201, 201, 201, 201,
-
- 2069, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444,
- 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444,
-
- 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444,
- 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444,
- 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444,
- 1444, 1444, 1444, 1444, 1444, 1201, 201, 201,
-
- 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071,
- 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071,
- 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071,
- 2071, 2071, 2071, 2071, 2071, 201, 201, 201,
-
- 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072,
- 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072,
- 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072,
- 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072,
-
- 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072,
- 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072,
- 2072, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 1089, 2073, 2073, 2073, 2073, 2073, 2073, 2073,
- 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073,
- 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073,
- 2073, 2073, 2073, 2073, 201, 201, 201, 201,
-
- 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074,
- 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074,
- 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074,
- 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2075,
-
- 2076, 2076, 2076, 2076, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 2077, 2077, 2077,
- 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078,
- 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078,
-
- 2078, 2079, 2078, 2078, 2078, 2078, 2078, 2078,
- 2078, 2078, 2079, 201, 201, 201, 201, 201,
- 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080,
- 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080,
-
- 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080,
- 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080,
- 2080, 2080, 2080, 2080, 2080, 2080, 2081, 2081,
- 2081, 2081, 2081, 201, 201, 201, 201, 201,
-
- 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082,
- 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082,
- 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082,
- 2082, 2082, 2082, 2082, 2082, 2082, 201, 2083,
-
- 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084,
- 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084,
- 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084,
- 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084,
-
- 2084, 2084, 2084, 2084, 201, 201, 201, 201,
- 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084,
- 2085, 2086, 2086, 2086, 2086, 2086, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087,
- 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087,
- 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087,
- 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087,
-
- 2087, 2087, 2087, 2087, 2087, 2087, 2088, 2088,
- 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089,
- 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089,
- 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089,
-
- 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089,
- 2089, 2089, 2089, 2089, 2089, 2089, 2090, 2090,
- 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091,
- 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091,
-
- 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091,
- 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091,
- 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091,
- 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091,
-
- 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092,
- 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092,
- 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092,
- 2092, 2092, 2092, 2092, 2092, 2092, 201, 201,
-
- 2093, 2094, 2095, 2096, 2097, 2098, 2099, 2100,
- 2101, 2102, 201, 201, 201, 201, 201, 201,
- 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103,
- 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103,
-
- 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103,
- 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103,
- 2103, 2103, 2103, 2103, 201, 201, 201, 201,
- 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104,
-
- 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104,
- 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104,
- 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104,
- 2104, 2104, 2104, 2104, 201, 201, 201, 201,
-
- 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105,
- 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105,
- 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105,
- 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105,
-
- 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106,
- 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106,
-
- 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106,
- 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106,
- 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106,
- 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106,
-
- 2106, 2106, 2106, 2106, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 2107,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
+
+ 2042, 2042, 348, 348, 348, 348, 348, 348,
+ 348, 348, 348, 348, 348, 348, 348, 348,
+ 348, 348, 348, 2041, 2041, 2041, 2041, 2041,
+ 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+
+ 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+ 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+ 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+ 2041, 2041, 2041, 2041, 2041, 2041, 1665, 1362,
+
+ 348, 348, 348, 348, 348, 348, 348, 348,
+ 348, 348, 348, 348, 348, 348, 348, 348,
+ 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+ 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+
+ 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+ 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+ 348, 348, 2041, 2041, 2041, 2041, 2041, 2041,
+ 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+
+ 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+ 348, 348, 348, 348, 348, 348, 348, 348,
+ 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043,
+ 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043,
+
+ 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043,
+ 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043,
+ 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+ 2041, 2041, 2041, 2041, 2044, 340, 348, 348,
+
+ 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045,
+ 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045,
+ 2046, 2047, 2048, 2049, 2050, 2051, 2051, 2052,
+ 2053, 2054, 202, 202, 202, 202, 202, 202,
+
+ 173, 173, 173, 173, 1215, 1215, 1215, 1104,
+ 1104, 1104, 1104, 1104, 1104, 1104, 1755, 1755,
+ 2055, 2056, 2056, 2057, 2057, 2058, 2059, 2058,
+ 2059, 2058, 2059, 2058, 2059, 2058, 2059, 2058,
+
+ 2059, 2058, 2059, 2058, 2059, 1677, 1677, 2060,
+ 2061, 2055, 2055, 2055, 2055, 2057, 2057, 2057,
+ 2062, 2063, 2064, 202, 2065, 2066, 2067, 2067,
+ 2056, 1415, 1416, 1415, 1416, 1415, 1416, 2068,
+
+ 2055, 2055, 2069, 2070, 2071, 2072, 2073, 202,
+ 2055, 1418, 1376, 2055, 202, 202, 202, 202,
+ 2041, 2041, 2041, 2074, 2041, 348, 2041, 2041,
+ 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+
+ 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+ 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+ 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+ 2041, 2041, 2041, 2041, 2041, 348, 348, 2075,
+
+ 202, 2067, 2055, 2068, 1418, 1376, 2055, 2076,
+ 1415, 1416, 2055, 2069, 2062, 2070, 2064, 2077,
+ 2078, 2079, 2080, 2081, 2082, 2083, 2084, 2085,
+ 2086, 2087, 2066, 2065, 2088, 2073, 2089, 2067,
+
+ 2055, 2090, 2090, 2090, 2090, 2090, 2090, 2090,
+ 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090,
+ 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090,
+ 2090, 2090, 2090, 2091, 2055, 2092, 2093, 2057,
+
+ 2093, 2094, 2094, 2094, 2094, 2094, 2094, 2094,
+ 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094,
+ 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094,
+ 2094, 2094, 2094, 2091, 2073, 2092, 2073, 2095,
+
+ 2096, 2097, 1415, 1416, 2098, 2099, 2100, 2101,
+ 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101,
+ 2102, 2100, 2100, 2100, 2100, 2100, 2100, 2100,
+ 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100,
+
+ 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100,
+ 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100,
+ 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100,
+ 2100, 2100, 2100, 2100, 2100, 2100, 2103, 2103,
+
+ 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700,
+ 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700,
+ 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700,
+ 1700, 1700, 1700, 1700, 1700, 1700, 1700, 202,
+
+ 202, 202, 1700, 1700, 1700, 1700, 1700, 1700,
+ 202, 202, 1700, 1700, 1700, 1700, 1700, 1700,
+ 202, 202, 1700, 1700, 1700, 1700, 1700, 1700,
+ 202, 202, 1700, 1700, 1700, 202, 202, 202,
+
+ 2104, 1418, 2073, 2093, 1673, 1418, 1418, 202,
+ 1439, 1414, 1414, 1414, 1414, 1439, 1439, 202,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 2105, 2105, 2105, 2106, 51, 2107, 2107,
2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108,
+ 2108, 2108, 2108, 2108, 202, 2108, 2108, 2108,
2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108,
2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108,
+
+ 2108, 2108, 2108, 2108, 2108, 2108, 2108, 202,
+ 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108,
2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108,
+ 2108, 2108, 2108, 202, 2108, 2108, 202, 2108,
2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108,
+ 2108, 2108, 2108, 2108, 2108, 2108, 202, 202,
2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108,
- 2108, 2108, 2108, 2108, 2108, 2108, 2108, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
+ 2108, 2108, 2108, 2108, 2108, 2108, 202, 202,
2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108,
2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108,
- 2108, 2108, 2108, 2108, 2108, 2108, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
+ 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108,
+ 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108,
2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 2109, 2109, 2109, 2109, 2109, 2109, 298, 298,
- 2109, 298, 2109, 2109, 2109, 2109, 2109, 2109,
- 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109,
- 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109,
-
- 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109,
- 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109,
- 2109, 2109, 2109, 2109, 2109, 2109, 298, 2109,
- 2109, 298, 298, 298, 2109, 298, 298, 2109,
-
- 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110,
- 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110,
- 2110, 2110, 2110, 2110, 2110, 2110, 298, 2111,
+ 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108,
+ 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108,
+ 2108, 2108, 2108, 202, 202, 202, 202, 202,
+
+ 2109, 2110, 2109, 202, 202, 202, 202, 2111,
+ 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111,
+ 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111,
+ 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111,
+
+ 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111,
+ 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111,
+ 2111, 2111, 2111, 2111, 202, 202, 202, 2112,
2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112,
2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113,
2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113,
- 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2114,
+ 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113,
+ 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113,
+
+ 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113,
+ 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113,
+ 2113, 2113, 2113, 2113, 2113, 2114, 2114, 2114,
2114, 2115, 2115, 2115, 2115, 2115, 2115, 2115,
- 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116,
- 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116,
- 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116,
- 2116, 2116, 2116, 2116, 2116, 2116, 2116, 298,
+ 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115,
+ 2115, 2115, 2114, 2116, 2117, 2118, 2118, 202,
+ 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539,
+ 1539, 1539, 1539, 1539, 202, 202, 202, 202,
+
+ 2117, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
- 298, 298, 298, 298, 298, 298, 298, 2117,
- 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461,
+ 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461,
- 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118,
- 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118,
- 2118, 2118, 2118, 298, 2118, 2118, 298, 298,
- 298, 298, 298, 2119, 2119, 2119, 2119, 2119,
+ 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461,
+ 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461,
+ 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461,
+ 1461, 1461, 1461, 1461, 1461, 1218, 202, 202,
+ 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119,
+ 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119,
+ 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119,
+ 2119, 2119, 2119, 2119, 2119, 202, 202, 202,
+
+ 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120,
2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120,
2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120,
- 2120, 2120, 2120, 2120, 2120, 2120, 2121, 2121,
- 2121, 2121, 2122, 2122, 298, 298, 298, 2123,
+ 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120,
+
+ 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120,
+ 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120,
+ 2120, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
- 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124,
- 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124,
- 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124,
- 2124, 2124, 298, 298, 298, 298, 298, 2125,
+ 1104, 2121, 2121, 2121, 2121, 2121, 2121, 2121,
+ 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121,
+ 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121,
+ 2121, 2121, 2121, 2121, 202, 202, 202, 202,
+ 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122,
+ 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122,
+ 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122,
+ 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2123,
+
+ 2124, 2124, 2124, 2124, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 2125, 2125, 2125,
2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126,
2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126,
- 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126,
- 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126,
-
- 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127,
- 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127,
- 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127,
- 298, 298, 298, 298, 2128, 2128, 2127, 2127,
+ 2126, 2127, 2126, 2126, 2126, 2126, 2126, 2126,
+ 2126, 2126, 2127, 202, 202, 202, 202, 202,
2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128,
2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128,
- 298, 298, 2128, 2128, 2128, 2128, 2128, 2128,
- 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128,
2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128,
2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128,
- 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128,
- 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128,
-
- 2129, 2130, 2130, 2130, 298, 2130, 2130, 298,
- 298, 298, 298, 298, 2130, 2131, 2130, 2132,
- 2129, 2129, 2129, 2129, 298, 2129, 2129, 2129,
- 298, 2129, 2129, 2129, 2129, 2129, 2129, 2129,
-
- 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129,
- 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129,
- 2129, 2129, 2129, 2129, 298, 298, 298, 298,
- 2132, 2133, 2131, 298, 298, 298, 298, 2134,
-
- 2135, 2136, 2137, 2138, 2139, 2139, 2139, 2139,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 2140, 2140, 2140, 2140, 2140, 2140, 2141, 2141,
- 2142, 298, 298, 298, 298, 298, 298, 298,
-
- 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143,
- 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143,
- 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143,
- 2143, 2143, 2143, 2143, 2143, 2144, 2144, 2145,
-
- 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146,
- 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146,
- 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146,
- 2146, 2146, 2146, 2146, 2146, 2147, 2147, 2147,
-
- 2148, 2148, 2148, 2148, 2148, 2149, 2150, 2149,
- 2151, 2149, 2149, 2150, 2150, 2152, 2149, 2149,
- 2149, 2149, 2149, 2148, 2148, 2148, 2148, 2152,
- 2148, 2148, 2148, 2148, 2148, 2149, 2148, 2148,
-
- 2148, 2149, 2150, 2150, 2149, 2153, 2154, 298,
- 298, 298, 298, 2155, 2155, 2155, 2155, 2156,
- 2157, 2157, 2157, 2157, 2157, 2157, 2158, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
-
- 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159,
- 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159,
- 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159,
- 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159,
-
- 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159,
- 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159,
- 2159, 2159, 2159, 2159, 2159, 2159, 298, 298,
- 298, 2160, 2160, 2160, 2160, 2160, 2160, 2160,
+ 2128, 2128, 2128, 2128, 2128, 2128, 2129, 2129,
+ 2129, 2129, 2129, 202, 202, 202, 202, 202,
+
+ 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130,
+ 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130,
+ 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130,
+ 2130, 2130, 2130, 2130, 2130, 2130, 202, 2131,
+
+ 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132,
+ 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132,
+ 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132,
+ 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132,
+
+ 2132, 2132, 2132, 2132, 202, 202, 202, 202,
+ 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132,
+ 2133, 2134, 2134, 2134, 2134, 2134, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135,
+ 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135,
+ 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135,
+ 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135,
+
+ 2135, 2135, 2135, 2135, 2135, 2135, 2136, 2136,
+ 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137,
+ 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137,
+ 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137,
+
+ 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137,
+ 2137, 2137, 2137, 2137, 2137, 2137, 2138, 2138,
+ 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139,
+ 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139,
+
+ 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139,
+ 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139,
+ 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139,
+ 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139,
+
+ 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140,
+ 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140,
+ 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140,
+ 2140, 2140, 2140, 2140, 2140, 2140, 202, 202,
+
+ 2141, 2142, 2143, 2144, 2145, 2146, 2147, 2148,
+ 2149, 2150, 202, 202, 202, 202, 202, 202,
+ 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151,
+ 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151,
+
+ 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151,
+ 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151,
+ 2151, 2151, 2151, 2151, 202, 202, 202, 202,
+ 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152,
+
+ 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152,
+ 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152,
+ 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152,
+ 2152, 2152, 2152, 2152, 202, 202, 202, 202,
+
+ 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153,
+ 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153,
+ 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153,
+ 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153,
+
+ 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154,
+ 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154,
+
+ 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154,
+ 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154,
+ 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154,
+ 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154,
+
+ 2154, 2154, 2154, 2154, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 2155,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156,
+ 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156,
+ 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156,
+ 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156,
+
+ 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156,
+ 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156,
+ 2156, 2156, 2156, 2156, 2156, 2156, 2156, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156,
+ 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156,
+ 2156, 2156, 2156, 2156, 2156, 2156, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2157, 2157, 2157, 2157, 2157, 2157, 301, 301,
+ 2157, 301, 2157, 2157, 2157, 2157, 2157, 2157,
+ 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157,
+ 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157,
+
+ 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157,
+ 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157,
+ 2157, 2157, 2157, 2157, 2157, 2157, 301, 2157,
+ 2157, 301, 301, 301, 2157, 301, 301, 2157,
+
+ 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158,
+ 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158,
+ 2158, 2158, 2158, 2158, 2158, 2158, 301, 2159,
+ 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160,
2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161,
2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161,
- 2161, 2161, 2161, 2161, 2161, 2161, 298, 298,
- 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162,
+ 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2162,
+ 2162, 2163, 2163, 2163, 2163, 2163, 2163, 2163,
- 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163,
- 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163,
- 2163, 2163, 2163, 298, 298, 298, 298, 298,
2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164,
+ 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164,
+ 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164,
+ 2164, 2164, 2164, 2164, 2164, 2164, 2164, 301,
- 2165, 2166, 2165, 2166, 2166, 2166, 2165, 2165,
- 2165, 2166, 2165, 2165, 2166, 2165, 2166, 2166,
- 2165, 2166, 298, 298, 298, 298, 298, 298,
- 298, 2167, 2167, 2167, 2167, 298, 298, 298,
-
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 2168, 2168, 2168, 2168, 2169, 2169, 2170,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
+ 301, 301, 301, 301, 301, 301, 301, 2165,
+ 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
- 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171,
- 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171,
- 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171,
- 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171,
+ 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166,
+ 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166,
+ 2166, 2166, 2166, 301, 2166, 2166, 301, 301,
+ 301, 301, 301, 2167, 2167, 2167, 2167, 2167,
- 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171,
- 2171, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
+ 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168,
+ 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168,
+ 2168, 2168, 2168, 2168, 2168, 2168, 2169, 2169,
+ 2169, 2169, 2170, 2170, 301, 301, 301, 2171,
2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172,
2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172,
2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172,
- 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172,
-
- 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172,
- 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172,
- 2172, 2172, 2172, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
-
- 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173,
- 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173,
- 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173,
- 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173,
-
- 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173,
- 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173,
- 2173, 2173, 2173, 298, 298, 298, 298, 298,
- 298, 298, 2174, 2174, 2174, 2174, 2174, 2174,
-
- 2175, 2176, 2177, 2178, 2179, 2180, 2181, 2182,
- 2183, 2184, 2184, 2184, 2184, 2184, 2184, 2184,
- 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184,
- 2184, 2184, 2184, 2184, 2184, 2184, 2184, 298,
-
- 2185, 2186, 2185, 2187, 2187, 2187, 2187, 2187,
- 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187,
- 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187,
- 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187,
- 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187,
- 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187,
- 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187,
- 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186,
- 2186, 2186, 2186, 2186, 2186, 2186, 2188, 2189,
- 2189, 2190, 2190, 2190, 2190, 2190, 201, 201,
- 201, 201, 2191, 2192, 2193, 2194, 2195, 2196,
- 2197, 2198, 2199, 2200, 2200, 2200, 2200, 2200,
- 2200, 2200, 2200, 2200, 2200, 2200, 2201, 2202,
- 2203, 2204, 2205, 2206, 2207, 2208, 2209, 2210,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 2211,
- 2212, 2212, 2213, 2214, 2214, 2214, 2214, 2214,
- 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214,
- 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214,
- 2214, 2214, 2215, 2214, 2215, 2214, 2214, 2214,
+ 2172, 2172, 301, 301, 301, 301, 301, 2173,
+
+ 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174,
+ 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174,
+ 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174,
+ 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174,
+
+ 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175,
+ 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175,
+ 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175,
+ 301, 301, 301, 301, 2176, 2176, 2175, 2175,
+
+ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176,
+ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176,
+ 301, 301, 2176, 2176, 2176, 2176, 2176, 2176,
+ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176,
+
+ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176,
+ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176,
+ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176,
+ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176,
+
+ 2177, 2178, 2178, 2178, 301, 2178, 2178, 301,
+ 301, 301, 301, 301, 2178, 2179, 2178, 2180,
+ 2177, 2177, 2177, 2177, 301, 2177, 2177, 2177,
+ 301, 2177, 2177, 2177, 2177, 2177, 2177, 2177,
+
+ 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177,
+ 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177,
+ 2177, 2177, 2177, 2177, 2181, 2181, 301, 301,
+ 2180, 2182, 2179, 301, 301, 301, 301, 2183,
+
+ 2184, 2185, 2186, 2187, 2188, 2188, 2188, 2188,
+ 2189, 301, 301, 301, 301, 301, 301, 301,
+ 2190, 2190, 2190, 2190, 2190, 2190, 2191, 2191,
+ 2192, 301, 301, 301, 301, 301, 301, 301,
+
+ 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193,
+ 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193,
+ 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193,
+ 2193, 2193, 2193, 2193, 2193, 2194, 2194, 2195,
+
+ 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196,
+ 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196,
+ 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196,
+ 2196, 2196, 2196, 2196, 2196, 2197, 2197, 2197,
+
+ 2198, 2198, 2198, 2198, 2198, 2199, 2200, 2199,
+ 2201, 2199, 2199, 2200, 2200, 2202, 2199, 2199,
+ 2199, 2199, 2199, 2198, 2198, 2198, 2198, 2202,
+ 2198, 2198, 2198, 2198, 2198, 2199, 2198, 2198,
+
+ 2198, 2199, 2200, 2200, 2199, 2203, 2204, 301,
+ 301, 301, 301, 2205, 2205, 2205, 2205, 2206,
+ 2207, 2207, 2207, 2207, 2207, 2207, 2208, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+
+ 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209,
+ 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209,
+ 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209,
+ 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209,
+
+ 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209,
+ 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209,
+ 2209, 2209, 2209, 2209, 2209, 2209, 301, 301,
+ 301, 2210, 2210, 2210, 2210, 2210, 2210, 2210,
+
+ 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211,
+ 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211,
+ 2211, 2211, 2211, 2211, 2211, 2211, 301, 301,
+ 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212,
+
+ 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213,
+ 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213,
+ 2213, 2213, 2213, 301, 301, 301, 301, 301,
2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214,
- 2214, 2214, 2214, 2215, 2214, 2214, 2214, 2214,
- 2213, 2213, 2213, 2212, 2212, 2212, 2212, 2213,
- 2213, 2216, 2217, 2218, 2218, 2219, 2220, 2220,
- 2220, 2220, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
+
+ 2215, 2216, 2215, 2216, 2216, 2216, 2215, 2215,
+ 2215, 2216, 2215, 2215, 2216, 2215, 2216, 2216,
+ 2215, 2216, 301, 301, 301, 301, 301, 301,
+ 301, 2217, 2217, 2217, 2217, 301, 301, 301,
+
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 2218, 2218, 2218, 2218, 2219, 2219, 2220,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+
2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221,
2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221,
2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221,
- 2221, 201, 201, 201, 201, 201, 201, 201,
- 2222, 2223, 2224, 2225, 2226, 2227, 2228, 2229,
- 2230, 2231, 201, 201, 201, 201, 201, 201,
-
- 2232, 2232, 2232, 2233, 2233, 2233, 2233, 2233,
- 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233,
- 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233,
- 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233,
- 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2234,
- 2235, 2235, 2235, 2235, 2236, 2235, 2237, 2237,
- 2235, 2235, 2235, 2238, 2238, 201, 2239, 2240,
- 2241, 2242, 2243, 2244, 2245, 2246, 2247, 2248,
- 2249, 2250, 2250, 2250, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251,
- 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251,
- 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251,
+ 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221,
+
+ 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221,
+ 2221, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+
+ 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222,
+ 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222,
+ 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222,
+ 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222,
+
+ 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222,
+ 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222,
+ 2222, 2222, 2222, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 301, 301, 301, 301, 301,
+ 301, 301, 2224, 2224, 2224, 2224, 2224, 2224,
+
+ 2225, 2226, 2226, 2226, 2226, 2226, 2226, 2226,
+ 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226,
+ 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226,
+ 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226,
+
+ 2226, 2226, 2227, 2226, 2228, 2228, 2228, 2228,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 2229, 2230, 2231, 2232, 2233, 2234, 2235, 2236,
+ 2237, 2238, 301, 301, 301, 301, 301, 301,
+
+ 2239, 2240, 2241, 2242, 2243, 2244, 2245, 2246,
+ 2247, 2248, 2248, 2248, 2248, 2248, 2248, 2248,
+ 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248,
+ 2248, 2248, 2248, 2248, 2248, 2248, 2248, 301,
+
+ 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249,
+ 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249,
+ 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249,
+ 2249, 2249, 2249, 2249, 2249, 2250, 2250, 2250,
+
+ 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2249,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 2251, 2251, 2251, 2252, 2251, 2251, 2251, 2251,
2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251,
- 2251, 2251, 2251, 2252, 2253, 2254, 2251, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 2255, 2255, 2256, 2257, 2257, 2257, 2257, 2257,
- 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257,
- 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257,
- 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257,
- 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257,
- 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257,
- 2257, 2257, 2257, 2256, 2256, 2256, 2255, 2255,
- 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2256,
- 2258, 2257, 2259, 2259, 2257, 2260, 2260, 2261,
- 2262, 2263, 2264, 2265, 2265, 2266, 201, 201,
- 2267, 2268, 2269, 2270, 2271, 2272, 2273, 2274,
- 2275, 2276, 2277, 2278, 2279, 2280, 2281, 2281,
- 201, 2282, 2282, 2282, 2282, 2282, 2282, 2282,
- 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282,
- 2282, 2282, 2282, 2282, 2282, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283,
- 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283,
- 2283, 2283, 201, 2283, 2283, 2283, 2283, 2283,
- 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283,
- 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283,
- 2283, 2283, 2283, 2283, 2284, 2284, 2284, 2285,
- 2285, 2285, 2284, 2284, 2285, 2286, 2287, 2285,
- 2288, 2288, 2289, 2288, 2288, 2289, 2290, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 2291, 2291, 2291, 2291, 2291, 2291, 2291, 201,
- 2291, 201, 2291, 2291, 2291, 2291, 201, 2291,
- 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291,
- 2291, 2291, 2291, 2291, 2291, 2291, 201, 2291,
- 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291,
- 2291, 2292, 201, 201, 201, 201, 201, 201,
- 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293,
- 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293,
- 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293,
- 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293,
- 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293,
- 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2294,
- 2295, 2295, 2295, 2294, 2294, 2294, 2294, 2294,
- 2294, 2296, 2297, 201, 201, 201, 201, 201,
+
+ 2251, 2251, 2251, 2251, 2251, 2253, 2254, 2254,
+ 2255, 2255, 2255, 2254, 2255, 2254, 2254, 2254,
+ 2254, 2256, 2256, 2256, 2257, 2258, 2258, 2258,
+ 2258, 2258, 301, 301, 301, 301, 301, 301,
+
+ 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259,
+ 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259,
+ 2259, 2259, 2259, 2259, 2259, 2259, 2259, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+
+ 2260, 2261, 2260, 2262, 2262, 2262, 2262, 2262,
+ 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262,
+ 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262,
+ 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262,
+ 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262,
+ 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262,
+ 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262,
+ 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261,
+ 2261, 2261, 2261, 2261, 2261, 2261, 2263, 2264,
+ 2264, 2265, 2265, 2265, 2265, 2265, 202, 202,
+ 202, 202, 2266, 2267, 2268, 2269, 2270, 2271,
+ 2272, 2273, 2274, 2275, 2275, 2275, 2275, 2275,
+ 2275, 2275, 2275, 2275, 2275, 2275, 2276, 2277,
+ 2278, 2279, 2280, 2281, 2282, 2283, 2284, 2285,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 2286,
+ 2287, 2287, 2288, 2289, 2289, 2289, 2289, 2289,
+ 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289,
+ 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289,
+ 2289, 2289, 2290, 2289, 2290, 2289, 2289, 2289,
+ 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289,
+ 2289, 2289, 2289, 2290, 2289, 2289, 2289, 2289,
+ 2288, 2288, 2288, 2287, 2287, 2287, 2287, 2288,
+ 2288, 2291, 2292, 2293, 2293, 2294, 2295, 2295,
+ 2295, 2295, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 2296, 202, 202,
+ 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297,
+ 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297,
+ 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297,
+ 2297, 202, 202, 202, 202, 202, 202, 202,
2298, 2299, 2300, 2301, 2302, 2303, 2304, 2305,
- 2306, 2307, 201, 201, 201, 201, 201, 201,
-
- 2308, 2309, 2310, 2310, 201, 2311, 2311, 2311,
- 2311, 2311, 2311, 2311, 2311, 201, 201, 2311,
- 2311, 201, 201, 2311, 2311, 2311, 2311, 2311,
- 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311,
- 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311,
- 2311, 201, 2311, 2311, 2311, 2311, 2311, 2311,
- 2311, 201, 2311, 2311, 201, 2311, 2311, 2311,
- 2311, 2311, 201, 201, 2312, 2311, 2313, 2310,
- 2309, 2310, 2310, 2310, 2310, 201, 201, 2310,
- 2310, 201, 201, 2314, 2314, 2315, 201, 201,
- 2316, 201, 201, 201, 201, 201, 201, 2313,
- 201, 201, 201, 201, 201, 2311, 2311, 2311,
- 2311, 2311, 2310, 2310, 201, 201, 2317, 2317,
- 2317, 2317, 2317, 2317, 2317, 201, 201, 201,
- 2317, 2317, 2317, 2317, 2317, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318,
- 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318,
- 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318,
- 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318,
- 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318,
- 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318,
- 2318, 2318, 2318, 2318, 2318, 2319, 2319, 2319,
- 2320, 2320, 2320, 2320, 2320, 2320, 2320, 2320,
- 2319, 2319, 2321, 2320, 2320, 2319, 2322, 2318,
- 2318, 2318, 2318, 2323, 2323, 2324, 2324, 2325,
- 2326, 2327, 2328, 2329, 2330, 2331, 2332, 2333,
- 2334, 2335, 201, 2324, 201, 2325, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336,
- 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336,
- 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336,
- 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336,
- 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336,
- 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336,
- 2337, 2338, 2338, 2339, 2339, 2339, 2339, 2339,
- 2339, 2338, 2340, 2341, 2341, 2337, 2341, 2339,
- 2339, 2338, 2342, 2343, 2336, 2336, 2344, 2336,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 2345, 2346, 2347, 2348, 2349, 2350, 2351, 2352,
- 2353, 2354, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 2355, 2355, 2355, 2355, 2355, 2355, 2355, 2355,
- 2355, 2355, 2355, 2355, 2355, 2355, 2355, 2355,
- 2355, 2355, 2355, 2355, 2355, 2355, 2355, 2355,
- 2355, 2355, 2355, 2355, 2355, 2355, 2355, 2355,
- 2355, 2355, 2355, 2355, 2355, 2355, 2355, 2355,
- 2355, 2355, 2355, 2355, 2355, 2355, 2355, 2356,
- 2357, 2357, 2358, 2358, 2358, 2358, 201, 201,
- 2357, 2357, 2359, 2359, 2358, 2358, 2357, 2360,
- 2361, 2362, 2363, 2363, 2364, 2364, 2365, 2365,
- 2365, 2363, 2366, 2366, 2366, 2366, 2366, 2366,
- 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366,
- 2367, 2367, 2367, 2367, 2368, 2368, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369,
- 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369,
- 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369,
- 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369,
- 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369,
- 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369,
- 2370, 2370, 2370, 2371, 2371, 2371, 2371, 2371,
- 2371, 2371, 2371, 2370, 2370, 2371, 2370, 2372,
- 2371, 2373, 2373, 2374, 2369, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
+ 2306, 2307, 202, 202, 202, 202, 202, 202,
+
+ 2308, 2308, 2308, 2309, 2309, 2309, 2309, 2309,
+ 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309,
+ 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309,
+ 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309,
+ 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2310,
+ 2311, 2311, 2311, 2311, 2312, 2311, 2313, 2313,
+ 2311, 2311, 2311, 2314, 2314, 202, 2315, 2316,
+ 2317, 2318, 2319, 2320, 2321, 2322, 2323, 2324,
+ 2325, 2326, 2326, 2326, 2327, 2328, 2328, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329,
+ 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329,
+ 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329,
+ 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329,
+ 2329, 2329, 2329, 2330, 2331, 2332, 2329, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2333, 2333, 2334, 2335, 2335, 2335, 2335, 2335,
+ 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335,
+ 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335,
+ 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335,
+ 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335,
+ 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335,
+ 2335, 2335, 2335, 2334, 2334, 2334, 2333, 2333,
+ 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2334,
+ 2336, 2335, 2337, 2337, 2335, 2338, 2338, 2339,
+ 2340, 2341, 2342, 2341, 2341, 2343, 202, 202,
+ 2344, 2345, 2346, 2347, 2348, 2349, 2350, 2351,
+ 2352, 2353, 2354, 2355, 2356, 2357, 2358, 2358,
+ 202, 2359, 2359, 2359, 2359, 2359, 2359, 2359,
+ 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359,
+ 2359, 2359, 2359, 2359, 2359, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360,
+ 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360,
+ 2360, 2360, 202, 2360, 2360, 2360, 2360, 2360,
+ 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360,
+ 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360,
+ 2360, 2360, 2360, 2360, 2361, 2361, 2361, 2362,
+ 2362, 2362, 2361, 2361, 2362, 2363, 2364, 2362,
+ 2365, 2365, 2366, 2365, 2365, 2366, 2367, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2368, 2368, 2368, 2368, 2368, 2368, 2368, 202,
+ 2368, 202, 2368, 2368, 2368, 2368, 202, 2368,
+ 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368,
+ 2368, 2368, 2368, 2368, 2368, 2368, 202, 2368,
+ 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368,
+ 2368, 2369, 202, 202, 202, 202, 202, 202,
+ 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370,
+ 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370,
+ 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370,
+ 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370,
+ 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370,
+ 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2371,
+ 2372, 2372, 2372, 2371, 2371, 2371, 2371, 2371,
+ 2371, 2373, 2374, 202, 202, 202, 202, 202,
2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382,
- 2383, 2384, 201, 201, 201, 201, 201, 201,
- 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385,
- 2385, 2385, 2385, 2385, 2385, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386,
- 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386,
- 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386,
- 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386,
- 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386,
- 2386, 2386, 2386, 2387, 2388, 2387, 2388, 2388,
- 2387, 2387, 2387, 2387, 2387, 2387, 2389, 2390,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 2391, 2392, 2393, 2394, 2395, 2396, 2397, 2398,
- 2399, 2400, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 2401, 2401, 2401, 2401, 2401, 2401, 2401, 2401,
- 2401, 2401, 2401, 2401, 2401, 2401, 2401, 2401,
- 2401, 2401, 2401, 2401, 2401, 2401, 2401, 2401,
- 2401, 2401, 201, 201, 201, 2402, 2402, 2402,
- 2403, 2403, 2402, 2402, 2402, 2402, 2403, 2402,
- 2402, 2402, 2402, 2404, 201, 201, 201, 201,
- 2405, 2406, 2407, 2408, 2409, 2410, 2411, 2412,
- 2413, 2414, 2415, 2415, 2416, 2416, 2416, 2417,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418,
- 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418,
- 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418,
- 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418,
- 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419,
- 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419,
- 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419,
- 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419,
- 2420, 2421, 2422, 2423, 2424, 2425, 2426, 2427,
- 2428, 2429, 2430, 2430, 2430, 2430, 2430, 2430,
- 2430, 2430, 2430, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 2431,
-
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 2432, 2433, 2433, 2433, 2433, 2433, 2433, 2434,
- 2434, 2433, 2433, 2432, 2432, 2432, 2432, 2432,
- 2432, 2432, 2432, 2432, 2432, 2432, 2432, 2432,
- 2432, 2432, 2432, 2432, 2432, 2432, 2432, 2432,
- 2432, 2432, 2432, 2432, 2432, 2432, 2432, 2432,
- 2432, 2432, 2432, 2432, 2432, 2432, 2432, 2432,
- 2432, 2432, 2432, 2433, 2435, 2433, 2433, 2433,
- 2433, 2434, 2436, 2433, 2433, 2433, 2433, 2437,
- 2438, 2439, 2440, 2440, 2439, 2437, 2438, 2435,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 2441, 2442, 2442, 2442, 2442, 2442, 2442, 2443,
- 2443, 2442, 2442, 2442, 2441, 2441, 2441, 2441,
- 2441, 2441, 2441, 2441, 2441, 2441, 2441, 2441,
- 2441, 2441, 2441, 2441, 2441, 2441, 2441, 2441,
- 2441, 2441, 2441, 2441, 2441, 2441, 2441, 2441,
- 2441, 2441, 2441, 2441, 2441, 2441, 2441, 2441,
- 2441, 2441, 2441, 2441, 201, 201, 2444, 2444,
- 2444, 2444, 2442, 2442, 2442, 2442, 2442, 2442,
- 2442, 2442, 2442, 2442, 2442, 2442, 2442, 2443,
- 2442, 2445, 2446, 2447, 2447, 201, 2448, 2448,
- 2448, 2446, 2446, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449,
+ 2383, 2384, 202, 202, 202, 202, 202, 202,
+
+ 2385, 2386, 2387, 2387, 202, 2388, 2388, 2388,
+ 2388, 2388, 2388, 2388, 2388, 202, 202, 2388,
+ 2388, 202, 202, 2388, 2388, 2388, 2388, 2388,
+ 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388,
+ 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388,
+ 2388, 202, 2388, 2388, 2388, 2388, 2388, 2388,
+ 2388, 202, 2388, 2388, 202, 2388, 2388, 2388,
+ 2388, 2388, 202, 2389, 2390, 2388, 2391, 2387,
+ 2386, 2387, 2387, 2387, 2387, 202, 202, 2387,
+ 2387, 202, 202, 2392, 2392, 2393, 202, 202,
+ 2394, 202, 202, 202, 202, 202, 202, 2391,
+ 202, 202, 202, 202, 202, 2388, 2388, 2388,
+ 2388, 2388, 2387, 2387, 202, 202, 2395, 2395,
+ 2395, 2395, 2395, 2395, 2395, 202, 202, 202,
+ 2395, 2395, 2395, 2395, 2395, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396,
+ 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396,
+ 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396,
+ 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396,
+ 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396,
+ 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396,
+ 2396, 2396, 2396, 2396, 2396, 2397, 2397, 2397,
+ 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398,
+ 2397, 2397, 2399, 2398, 2398, 2397, 2400, 2396,
+ 2396, 2396, 2396, 2401, 2401, 2402, 2402, 2403,
+ 2404, 2405, 2406, 2407, 2408, 2409, 2410, 2411,
+ 2412, 2413, 202, 2402, 202, 2403, 2414, 2415,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416,
+ 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416,
+ 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416,
+ 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416,
+ 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416,
+ 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416,
+ 2417, 2418, 2418, 2419, 2419, 2419, 2419, 2419,
+ 2419, 2418, 2420, 2421, 2421, 2417, 2421, 2419,
+ 2419, 2418, 2422, 2423, 2416, 2416, 2424, 2416,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2425, 2426, 2427, 2428, 2429, 2430, 2431, 2432,
+ 2433, 2434, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435,
+ 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435,
+ 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435,
+ 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435,
+ 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435,
+ 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2436,
+ 2437, 2437, 2438, 2438, 2438, 2438, 202, 202,
+ 2437, 2437, 2439, 2439, 2438, 2438, 2437, 2440,
+ 2441, 2442, 2443, 2443, 2444, 2444, 2445, 2445,
+ 2445, 2443, 2446, 2446, 2446, 2446, 2446, 2446,
+ 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446,
+ 2447, 2447, 2447, 2447, 2448, 2448, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449,
2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449,
2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449,
2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449,
2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449,
2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449,
- 2449, 201, 201, 201, 201, 201, 201, 201,
-
- 2450, 2450, 2450, 2450, 2450, 2450, 2450, 2450,
- 2450, 201, 2450, 2450, 2450, 2450, 2450, 2450,
- 2450, 2450, 2450, 2450, 2450, 2450, 2450, 2450,
- 2450, 2450, 2450, 2450, 2450, 2450, 2450, 2450,
- 2450, 2450, 2450, 2450, 2450, 2450, 2450, 2450,
- 2450, 2450, 2450, 2450, 2450, 2450, 2450, 2451,
- 2452, 2452, 2452, 2452, 2452, 2452, 2452, 201,
- 2452, 2452, 2452, 2452, 2452, 2452, 2451, 2453,
- 2450, 2454, 2454, 2455, 2455, 2455, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 2456, 2457, 2458, 2459, 2460, 2461, 2462, 2463,
- 2464, 2465, 2466, 2466, 2466, 2466, 2466, 2466,
+ 2450, 2450, 2450, 2451, 2451, 2451, 2451, 2451,
+ 2451, 2451, 2451, 2450, 2450, 2451, 2450, 2452,
+ 2451, 2453, 2453, 2454, 2449, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2455, 2456, 2457, 2458, 2459, 2460, 2461, 2462,
+ 2463, 2464, 202, 202, 202, 202, 202, 202,
+ 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465,
+ 2465, 2465, 2465, 2465, 2465, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466,
- 2466, 2466, 2466, 2466, 2466, 201, 201, 201,
- 2467, 2468, 2469, 2469, 2469, 2469, 2469, 2469,
- 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469,
- 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469,
- 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469,
- 201, 201, 2470, 2470, 2470, 2470, 2470, 2470,
- 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470,
- 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470,
- 201, 2471, 2470, 2470, 2470, 2470, 2470, 2470,
- 2470, 2471, 2470, 2470, 2471, 2470, 2470, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 2472, 2472, 2472, 2472, 2472, 2472, 2472, 201,
- 2472, 2472, 201, 2472, 2472, 2472, 2472, 2472,
- 2472, 2472, 2472, 2472, 2472, 2472, 2472, 2472,
- 2472, 2472, 2472, 2472, 2472, 2472, 2472, 2472,
- 2472, 2472, 2472, 2472, 2472, 2472, 2472, 2472,
- 2472, 2472, 2472, 2472, 2472, 2472, 2472, 2472,
- 2472, 2473, 2473, 2473, 2473, 2473, 2473, 201,
- 201, 201, 2473, 201, 2473, 2473, 201, 2473,
- 2473, 2473, 2474, 2473, 2475, 2475, 2476, 2473,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 2477, 2478, 2479, 2480, 2481, 2482, 2483, 2484,
- 2485, 2486, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
-
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2488,
- 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488,
- 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488,
- 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488,
- 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488,
- 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488,
- 2488, 2489, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490,
- 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490,
- 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490,
- 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490,
- 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490,
- 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490,
- 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490,
- 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490,
- 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490,
- 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490,
- 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490,
- 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490,
- 2490, 2490, 2490, 2491, 2491, 2491, 2491, 2491,
- 2491, 2491, 2491, 2491, 2491, 2491, 2491, 201,
- 2492, 2492, 2492, 2492, 2493, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489,
- 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489,
- 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489,
- 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489,
- 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489,
- 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489,
- 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489,
- 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489,
- 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489,
- 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489,
- 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489,
- 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489,
- 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489,
- 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489,
- 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489,
- 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489,
-
- 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489,
- 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489,
- 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489,
- 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489,
- 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489,
- 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489,
- 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489,
- 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489,
- 2489, 2489, 2489, 2489, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
-
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2495, 2495, 2495, 2496, 2496, 2496, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2496, 2494, 2494, 2494, 2495, 2496,
- 2495, 2496, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
-
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2495, 2496, 2496, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
-
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
-
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2498, 2499,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
-
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
+ 2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466,
+ 2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466,
+ 2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466,
+ 2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466,
+ 2466, 2466, 2466, 2467, 2468, 2467, 2468, 2468,
+ 2467, 2467, 2467, 2467, 2467, 2467, 2469, 2470,
+ 2471, 202, 202, 202, 202, 202, 202, 202,
+ 2472, 2473, 2474, 2475, 2476, 2477, 2478, 2479,
+ 2480, 2481, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482,
+ 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482,
+ 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482,
+ 2482, 2482, 2483, 202, 202, 2484, 2484, 2484,
+ 2485, 2485, 2484, 2484, 2484, 2484, 2485, 2484,
+ 2484, 2484, 2484, 2486, 202, 202, 202, 202,
+ 2487, 2488, 2489, 2490, 2491, 2492, 2493, 2494,
+ 2495, 2496, 2497, 2497, 2498, 2498, 2498, 2499,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 201, 201, 201, 201, 201, 201, 201,
- 2501, 2501, 2501, 2501, 2501, 2501, 2501, 2501,
- 2501, 2501, 2501, 2501, 2501, 2501, 2501, 2501,
- 2501, 2501, 2501, 2501, 2501, 2501, 2501, 2501,
- 2501, 2501, 2501, 2501, 2501, 2501, 2501, 201,
- 2502, 2503, 2504, 2505, 2506, 2507, 2508, 2509,
- 2510, 2511, 201, 201, 201, 201, 2512, 2512,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513,
- 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513,
- 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513,
- 2513, 2513, 2513, 2513, 2513, 2513, 201, 201,
- 2514, 2514, 2514, 2514, 2514, 2515, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 2516, 2516, 2516, 2516, 2516, 2516, 2516, 2516,
- 2516, 2516, 2516, 2516, 2516, 2516, 2516, 2516,
- 2516, 2516, 2516, 2516, 2516, 2516, 2516, 2516,
- 2516, 2516, 2516, 2516, 2516, 2516, 2516, 2516,
- 2516, 2516, 2516, 2516, 2516, 2516, 2516, 2516,
- 2516, 2516, 2516, 2516, 2516, 2516, 2516, 2516,
- 2517, 2517, 2517, 2517, 2517, 2517, 2517, 2518,
- 2518, 2519, 2520, 2520, 2521, 2521, 2521, 2521,
- 2522, 2522, 2522, 2522, 2518, 2521, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 2523, 2524, 2525, 2526, 2527, 2528, 2529, 2530,
- 2531, 2532, 201, 2533, 2533, 2533, 2533, 2533,
- 2533, 2533, 201, 2516, 2516, 2516, 2516, 2516,
- 2516, 2516, 2516, 2516, 2516, 2516, 2516, 2516,
- 2516, 2516, 2516, 2516, 2516, 2516, 2516, 2516,
- 201, 201, 201, 201, 201, 2516, 2516, 2516,
- 2516, 2516, 2516, 2516, 2516, 2516, 2516, 2516,
- 2516, 2516, 2516, 2516, 2516, 2516, 2516, 2516,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534,
- 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534,
- 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534,
- 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534,
- 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534,
- 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534,
- 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534,
- 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534,
- 2534, 2534, 2534, 2534, 2534, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 2534, 2535, 2535, 2535, 2535, 2535, 2535, 2535,
+ 2500, 2500, 2500, 2500, 2501, 2501, 2501, 2502,
+ 2502, 2502, 2502, 2502, 2502, 2502, 2502, 2502,
+ 2501, 2503, 2504, 2505, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506,
+ 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506,
+ 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506,
+ 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506,
+ 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507,
+ 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507,
+ 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507,
+ 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507,
+ 2508, 2509, 2510, 2511, 2512, 2513, 2514, 2515,
+ 2516, 2517, 2518, 2518, 2518, 2518, 2518, 2518,
+ 2518, 2518, 2518, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 2519,
+
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2520, 2520, 2520, 2520, 2520, 2520, 2520, 2520,
+ 202, 202, 2520, 2520, 2520, 2520, 2520, 2520,
+ 2520, 2520, 2520, 2520, 2520, 2520, 2520, 2520,
+ 2520, 2520, 2520, 2520, 2520, 2520, 2520, 2520,
+ 2520, 2520, 2520, 2520, 2520, 2520, 2520, 2520,
+ 2520, 2520, 2520, 2520, 2520, 2520, 2520, 2520,
+ 2520, 2521, 2521, 2521, 2522, 2522, 2522, 2522,
+ 202, 202, 2522, 2522, 2521, 2521, 2521, 2521,
+ 2523, 2520, 2524, 2520, 2521, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2525, 2526, 2526, 2526, 2526, 2526, 2526, 2527,
+ 2527, 2526, 2526, 2525, 2525, 2525, 2525, 2525,
+ 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525,
+ 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525,
+ 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525,
+ 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525,
+ 2525, 2525, 2525, 2526, 2528, 2526, 2526, 2526,
+ 2526, 2529, 2530, 2526, 2526, 2526, 2526, 2531,
+ 2532, 2533, 2534, 2534, 2533, 2531, 2532, 2528,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2535, 2536, 2536, 2536, 2536, 2536, 2536, 2537,
+ 2537, 2536, 2536, 2536, 2535, 2535, 2535, 2535,
2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535,
2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535,
2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535,
2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535,
- 2535, 2535, 2535, 2535, 2535, 2535, 2535, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 2536,
- 2536, 2536, 2536, 2537, 2537, 2537, 2537, 2537,
- 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 2538, 2539, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
-
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 2541, 2542, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
-
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
-
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 201, 201, 201, 201,
-
- 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545,
- 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545,
- 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545,
+ 2535, 2535, 2535, 2535, 2538, 2538, 2539, 2539,
+ 2539, 2539, 2536, 2536, 2536, 2536, 2536, 2536,
+ 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2537,
+ 2536, 2540, 2541, 2542, 2542, 2543, 2544, 2544,
+ 2544, 2541, 2541, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545,
2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545,
2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545,
@@ -4664,1480 +3928,2548 @@ static const unsigned short uc_property_trie[] = {
2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545,
2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545,
2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545,
- 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545,
- 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545,
- 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545,
- 2545, 2545, 2545, 201, 201, 201, 201, 201,
- 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545,
- 2545, 2545, 2545, 2545, 2545, 201, 201, 201,
- 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545,
- 2545, 201, 201, 201, 201, 201, 201, 201,
- 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545,
- 2545, 2545, 201, 201, 2546, 2547, 2548, 2549,
- 2550, 2550, 2550, 2550, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 201,
- 201, 1444, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2552, 2552,
- 2552, 2552, 2552, 2552, 2552, 2553, 2554, 2555,
- 2555, 2555, 2551, 2551, 2551, 2556, 2553, 2553,
- 2553, 2553, 2553, 2557, 2557, 2557, 2557, 2557,
- 2557, 2557, 2557, 2558, 2558, 2558, 2558, 2558,
- 2558, 2558, 2558, 2551, 2551, 2559, 2559, 2559,
- 2559, 2559, 2558, 2558, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2559, 2559, 2559, 2559, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2552, 2552, 2552, 2552, 2552,
- 2552, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2560, 2560,
- 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560,
- 2560, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067,
- 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067,
- 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067,
- 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067,
- 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067,
- 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067,
- 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067,
- 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067,
- 2067, 2067, 2561, 2561, 2561, 2067, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
- 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
- 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
- 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
- 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
- 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
- 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
- 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
- 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
- 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
- 1478, 1478, 1478, 1478, 1478, 1478, 1478, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
+ 2545, 202, 202, 202, 202, 202, 202, 202,
+
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2546, 2546, 2546, 2546, 2546, 2546, 2546, 2546,
+ 2546, 202, 2546, 2546, 2546, 2546, 2546, 2546,
+ 2546, 2546, 2546, 2546, 2546, 2546, 2546, 2546,
+ 2546, 2546, 2546, 2546, 2546, 2546, 2546, 2546,
+ 2546, 2546, 2546, 2546, 2546, 2546, 2546, 2546,
+ 2546, 2546, 2546, 2546, 2546, 2546, 2546, 2547,
+ 2548, 2548, 2548, 2548, 2548, 2548, 2548, 202,
+ 2548, 2548, 2548, 2548, 2548, 2548, 2547, 2549,
+ 2546, 2550, 2550, 2551, 2551, 2551, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2552, 2553, 2554, 2555, 2556, 2557, 2558, 2559,
+ 2560, 2561, 2562, 2562, 2562, 2562, 2562, 2562,
2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562,
- 2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562,
- 2562, 2562, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 201, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2563, 201, 2563, 2563,
- 201, 201, 2563, 201, 201, 2563, 2563, 201,
- 201, 2563, 2563, 2563, 2563, 201, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2564, 2564,
- 2564, 2564, 201, 2564, 201, 2564, 2564, 2564,
- 2564, 2565, 2564, 2564, 201, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
-
- 2564, 2564, 2564, 2564, 2563, 2563, 201, 2563,
- 2563, 2563, 2563, 201, 201, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 201, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 201, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2563, 2563, 201, 2563, 2563, 2563, 2563, 201,
- 2563, 2563, 2563, 2563, 2563, 201, 2563, 201,
- 201, 201, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 201, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
-
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 1436, 1436, 201, 201,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2566, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2567, 2564, 2564, 2564, 2564,
- 2564, 2564, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2566, 2564, 2564, 2564, 2564,
-
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2567, 2564, 2564,
- 2564, 2564, 2564, 2564, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2566, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2567,
- 2564, 2564, 2564, 2564, 2564, 2564, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2566,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2567, 2564, 2564, 2564, 2564, 2564, 2564,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2566, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2567, 2564, 2564, 2564, 2564,
- 2564, 2564, 2568, 2569, 201, 201, 2570, 2571,
- 2572, 2573, 2574, 2575, 2576, 2577, 2578, 2579,
- 2570, 2571, 2572, 2573, 2574, 2575, 2576, 2577,
- 2578, 2579, 2570, 2571, 2572, 2573, 2574, 2575,
- 2576, 2577, 2578, 2579, 2570, 2571, 2572, 2573,
- 2574, 2575, 2576, 2577, 2578, 2579, 2570, 2571,
- 2572, 2573, 2574, 2575, 2576, 2577, 2578, 2579,
-
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
-
- 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581,
- 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581,
- 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581,
- 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581,
- 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581,
- 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581,
- 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2580,
- 2580, 2580, 2580, 2581, 2581, 2581, 2581, 2581,
- 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581,
- 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581,
- 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581,
- 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581,
- 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581,
- 2581, 2581, 2581, 2581, 2581, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2581, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2581, 2580, 2580, 2582,
- 2583, 2582, 2582, 2584, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 2581, 2581, 2581, 2581, 2581,
- 201, 2581, 2581, 2581, 2581, 2581, 2581, 2581,
- 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 2585, 2585, 2585, 2585, 2585, 2585, 2585, 201,
- 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585,
- 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585,
- 2585, 201, 201, 2585, 2585, 2585, 2585, 2585,
- 2585, 2585, 201, 2585, 2585, 201, 2585, 2585,
- 2585, 2585, 2585, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 298, 298, 2587,
- 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587,
- 2588, 2588, 2588, 2588, 2588, 2588, 2588, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
-
- 2589, 2589, 2589, 2589, 2589, 2589, 2589, 2589,
- 2589, 2589, 2589, 2589, 2589, 2589, 2589, 2589,
- 2589, 2589, 2589, 2589, 2589, 2589, 2589, 2589,
- 2589, 2589, 2589, 2589, 2589, 2589, 2589, 2589,
- 2589, 2589, 2590, 2590, 2590, 2590, 2590, 2590,
- 2590, 2590, 2590, 2590, 2590, 2590, 2590, 2590,
- 2590, 2590, 2590, 2590, 2590, 2590, 2590, 2590,
- 2590, 2590, 2590, 2590, 2590, 2590, 2590, 2590,
- 2590, 2590, 2590, 2590, 2591, 2591, 2591, 2591,
- 2591, 2591, 2592, 298, 298, 298, 298, 298,
- 2593, 2594, 2595, 2596, 2597, 2598, 2599, 2600,
- 2601, 2602, 298, 298, 298, 298, 2603, 2603,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
-
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
-
- 2604, 2604, 2604, 2604, 344, 2604, 2604, 2604,
- 2604, 2604, 2604, 2604, 2604, 2604, 2604, 2604,
- 2604, 2604, 2604, 2604, 2604, 2604, 2604, 2604,
- 2604, 2604, 2604, 2604, 2604, 2604, 2604, 2604,
- 344, 2604, 2604, 344, 2604, 344, 344, 2604,
- 344, 2604, 2604, 2604, 2604, 2604, 2604, 2604,
- 2604, 2604, 2604, 344, 2604, 2604, 2604, 2604,
- 344, 2604, 344, 2604, 344, 344, 344, 344,
- 344, 344, 2604, 344, 344, 344, 344, 2604,
- 344, 2604, 344, 2604, 344, 2604, 2604, 2604,
- 344, 2604, 2604, 344, 2604, 344, 344, 2604,
- 344, 2604, 344, 2604, 344, 2604, 344, 2604,
- 344, 2604, 2604, 344, 2604, 344, 344, 2604,
- 2604, 2604, 2604, 344, 2604, 2604, 2604, 2604,
- 2604, 2604, 2604, 344, 2604, 2604, 2604, 2604,
- 344, 2604, 2604, 2604, 2604, 344, 2604, 344,
- 2604, 2604, 2604, 2604, 2604, 2604, 2604, 2604,
- 2604, 2604, 344, 2604, 2604, 2604, 2604, 2604,
- 2604, 2604, 2604, 2604, 2604, 2604, 2604, 2604,
- 2604, 2604, 2604, 2604, 344, 344, 344, 344,
- 344, 2604, 2604, 2604, 344, 2604, 2604, 2604,
- 2604, 2604, 344, 2604, 2604, 2604, 2604, 2604,
- 2604, 2604, 2604, 2604, 2604, 2604, 2604, 2604,
- 2604, 2604, 2604, 2604, 344, 344, 344, 344,
- 344, 344, 344, 344, 344, 344, 344, 344,
- 344, 344, 344, 344, 344, 344, 344, 344,
- 344, 344, 344, 344, 344, 344, 344, 344,
- 344, 344, 344, 344, 344, 344, 344, 344,
- 344, 344, 344, 344, 344, 344, 344, 344,
- 344, 344, 344, 344, 344, 344, 344, 344,
- 2605, 2605, 344, 344, 344, 344, 344, 344,
- 344, 344, 344, 344, 344, 344, 344, 344,
-
- 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519,
- 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519,
- 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519,
- 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519,
- 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519,
- 1519, 1519, 1519, 1519, 1682, 1682, 1682, 1682,
- 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519,
- 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519,
- 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519,
- 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519,
- 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519,
- 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519,
- 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519,
- 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519,
- 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519,
- 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519,
- 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519,
- 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519,
- 1519, 1519, 1519, 1519, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1682,
- 1682, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1521,
- 1682, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1682, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521,
- 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521,
- 1521, 1521, 1521, 1521, 1521, 1521, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
-
- 2606, 2606, 2607, 2608, 2609, 2610, 2611, 2612,
- 2613, 2614, 2615, 2616, 2616, 1682, 1682, 1682,
- 2617, 2617, 2617, 2617, 2617, 2617, 2617, 2617,
- 2617, 2617, 2617, 2617, 2617, 2617, 2617, 2617,
- 2617, 2617, 2617, 2617, 2617, 2617, 2617, 2617,
- 2617, 2617, 2617, 2617, 2617, 2617, 2617, 1682,
- 2618, 2619, 2618, 2618, 2618, 2618, 2618, 2618,
- 2618, 2618, 2618, 2618, 2618, 2619, 2618, 2619,
- 2618, 2618, 2619, 2618, 2618, 2618, 2619, 2618,
- 2618, 2618, 2617, 2617, 2617, 2617, 2617, 2620,
- 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2622,
- 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2622,
+ 2562, 2562, 2562, 2562, 2562, 202, 202, 202,
+ 2563, 2564, 2565, 2565, 2565, 2565, 2565, 2565,
+ 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565,
+ 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565,
+ 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565,
+ 202, 202, 2566, 2566, 2566, 2566, 2566, 2566,
+ 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566,
+ 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566,
+ 202, 2567, 2566, 2566, 2566, 2566, 2566, 2566,
+ 2566, 2567, 2566, 2566, 2567, 2566, 2566, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2568, 2568, 2568, 2568, 2568, 2568, 2568, 202,
+ 2568, 2568, 202, 2568, 2568, 2568, 2568, 2568,
+ 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568,
+ 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568,
+ 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568,
+ 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568,
+ 2568, 2569, 2569, 2569, 2569, 2569, 2569, 202,
+ 202, 202, 2569, 202, 2569, 2569, 202, 2569,
+ 2569, 2569, 2570, 2569, 2571, 2571, 2572, 2569,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580,
+ 2581, 2582, 202, 202, 202, 202, 202, 202,
+ 2583, 2583, 2583, 2583, 2583, 2583, 202, 2583,
+ 2583, 202, 2583, 2583, 2583, 2583, 2583, 2583,
+ 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583,
+ 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583,
+ 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583,
+ 2583, 2583, 2584, 2584, 2584, 2584, 2584, 202,
+ 2585, 2585, 202, 2584, 2584, 2585, 2584, 2586,
+ 2583, 202, 202, 202, 202, 202, 202, 202,
+ 2587, 2588, 2589, 2590, 2591, 2592, 2593, 2594,
+ 2595, 2596, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2597, 2597, 2597, 2597, 2597, 2597, 2597, 2597,
+ 2597, 2597, 2597, 2597, 2597, 2597, 2597, 2597,
+ 2597, 2597, 2597, 2598, 2598, 2599, 2599, 2600,
+ 2600, 202, 202, 202, 202, 202, 202, 202,
+
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2601, 2601, 2601, 2601, 2601, 2601, 2601, 2601,
+ 2601, 2601, 2601, 2601, 2601, 2601, 2601, 2601,
+ 2601, 2601, 2601, 2601, 2601, 2602, 2602, 2602,
+ 2602, 2602, 2602, 2602, 2602, 2603, 2603, 2603,
+ 2603, 2602, 2602, 2602, 2602, 2602, 2602, 2602,
+ 2602, 2602, 2602, 2602, 2602, 2602, 2602, 2602,
+ 2602, 2602, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 2604,
+
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2606,
+ 2606, 2606, 2606, 2606, 2606, 2606, 2606, 2606,
+ 2606, 2606, 2606, 2606, 2606, 2606, 2606, 2606,
+ 2606, 2606, 2606, 2606, 2606, 2606, 2606, 2606,
+ 2606, 2606, 2606, 2606, 2606, 2606, 2606, 2606,
+ 2606, 2606, 2606, 2606, 2606, 2606, 2606, 2606,
+ 2606, 2607, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608,
+ 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608,
+ 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608,
+ 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608,
+ 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608,
+ 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608,
+ 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608,
+ 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608,
+ 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608,
+ 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608,
+ 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608,
+ 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608,
+ 2608, 2608, 2608, 2609, 2609, 2609, 2609, 2609,
+ 2609, 2609, 2609, 2609, 2609, 2609, 2609, 202,
+ 2610, 2610, 2610, 2610, 2611, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607,
+ 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607,
+ 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607,
+ 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607,
+ 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607,
+ 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607,
+ 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607,
+ 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607,
+ 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607,
+ 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607,
+ 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607,
+ 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607,
+ 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607,
+ 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607,
+ 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607,
+ 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607,
+
+ 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607,
+ 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607,
+ 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607,
+ 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607,
+ 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607,
+ 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607,
+ 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607,
+ 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607,
+ 2607, 2607, 2607, 2607, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2613, 2613, 2613, 2614, 2614, 2614, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2614, 2612, 2612, 2612, 2613, 2614,
+ 2613, 2614, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2613, 2614, 2614, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 202,
+ 2615, 2615, 2615, 2615, 2615, 2615, 2615, 2616,
+ 2617, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2619, 2620,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
- 2621, 2621, 2623, 2623, 1682, 1682, 1682, 1682,
2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
- 2621, 2622, 2621, 2622, 2622, 2621, 2621, 2622,
2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
- 2621, 2621, 796, 796, 796, 796, 2624, 2624,
- 2617, 2624, 2624, 2624, 2624, 2624, 2624, 2624,
- 2624, 2624, 2624, 2625, 2625, 2625, 2625, 2625,
- 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625,
- 2625, 2625, 2625, 2625, 2625, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 2626, 2626,
- 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626,
- 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626,
- 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626,
-
- 2627, 2628, 2628, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675,
- 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675,
- 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675,
- 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675,
- 1675, 1675, 2628, 2628, 2628, 2628, 2628, 2628,
- 2628, 2628, 2628, 2629, 1682, 1682, 1682, 1682,
- 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675,
- 1675, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 2628, 2628, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 2630, 2630, 2630, 2630, 2630, 2630, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
-
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 2631, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1521, 1521, 1521, 1521, 1521, 1521, 1521,
- 1521, 1521, 1521, 1521, 1521, 2632, 2632, 2632,
- 1482, 1482, 1482, 1482, 1482, 1482, 1521, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 2631, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 2631, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1521, 2632, 2632,
- 1482, 1482, 1482, 1482, 1482, 1523, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 2631, 1521, 1521, 1521, 1521,
- 1521, 1521, 1521, 1521, 1483, 1483, 1521, 1521,
- 1482, 1482, 1482, 1482, 2631, 1482, 1482, 1482,
- 2631, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1481, 1481, 1482,
- 1482, 1482, 1482, 1482, 1481, 1482, 1482, 1482,
- 1482, 1482, 1523, 1523, 1523, 1521, 1482, 1523,
- 1482, 1482, 1523, 2633, 2633, 1521, 1521, 2632,
- 2632, 2632, 2632, 2632, 1521, 1521, 1521, 1521,
- 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 2631, 1482, 2631, 1482, 1482,
- 1482, 1521, 1521, 1521, 1521, 1521, 1521, 1521,
- 2632, 2632, 2632, 2634, 2634, 2634, 2634, 2634,
-
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1521,
- 1482, 1521, 1523, 1523, 1482, 1482, 1523, 1523,
- 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523,
- 1523, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 2635, 2635,
- 2635, 2635, 1482, 1482, 1482, 1482, 1523, 1482,
- 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523,
- 1523, 1482, 1482, 1482, 1523, 1482, 1482, 1482,
- 1482, 1523, 1523, 1523, 1482, 1523, 1523, 1523,
- 1482, 1482, 1482, 2631, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1481, 1482, 1481, 1482, 1481, 1482, 1482, 1482,
- 1482, 1482, 1523, 1482, 1482, 1482, 1482, 1481,
- 1482, 1481, 1481, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 2631, 2631, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1521, 1482, 1482, 1482, 1482, 1521, 1521, 2632,
-
- 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1481,
- 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481,
- 1481, 1481, 1481, 1481, 1481, 1482, 1482, 2631,
- 1482, 1482, 1482, 1482, 2631, 1482, 1482, 1482,
- 1482, 1482, 1481, 1481, 1481, 1481, 1481, 1481,
- 1481, 1481, 1481, 1481, 1481, 1481, 1483, 1483,
- 2636, 2636, 2636, 2636, 1483, 1483, 1483, 1483,
- 1483, 1483, 1521, 2632, 2632, 2632, 2632, 2632,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521,
- 1521, 1521, 1521, 1521, 2633, 2633, 1521, 1521,
- 1521, 1521, 2637, 1521, 1521, 1521, 1521, 1521,
- 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521,
- 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521,
- 2633, 1521, 1521, 1521, 1521, 2633, 2633, 1521,
- 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521,
- 1521, 1521, 1521, 1521, 2638, 1521, 1521, 1521,
- 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521,
- 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521,
- 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521,
- 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521,
- 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521,
- 1521, 1521, 1521, 1521, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1521, 1521, 1521, 1521,
- 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521,
- 2639, 1521, 1521, 1521, 1521, 1521, 1521, 1521,
- 1521, 1521, 1521, 1521, 1483, 1483, 1483, 1483,
- 1483, 1483, 1521, 1482, 1482, 1482, 1482, 1482,
-
- 2640, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 2640, 1482, 1482, 1482, 2640, 1482, 2640,
- 1482, 2640, 1482, 2640, 1482, 1482, 1482, 2640,
- 1482, 1482, 1482, 1482, 1482, 1482, 2640, 2640,
- 1482, 1482, 1482, 1482, 2640, 1482, 2640, 2640,
- 1482, 1482, 1482, 1482, 2640, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1521, 1521, 2632, 2632, 1523, 1523, 1523,
- 1482, 1482, 1482, 1523, 1523, 1523, 1523, 1523,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 2641, 2641,
- 2641, 2642, 2642, 2642, 1483, 1483, 1483, 1483,
- 2631, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 2631, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1523, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1523, 1523, 1523, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1523, 1482, 1482, 1482, 1482, 1482, 1521, 1521,
- 1521, 1521, 1521, 1521, 2633, 1521, 1521, 1521,
- 2632, 2638, 2638, 2630, 2630, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521,
- 1521, 1521, 1521, 1521, 1521, 1682, 1682, 1682,
- 1521, 1521, 1521, 1521, 2638, 2638, 2638, 2630,
- 2630, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
-
- 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481,
- 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481,
- 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481,
- 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481,
- 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481,
- 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481,
- 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481,
- 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481,
- 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481,
- 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481,
- 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481,
- 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481,
- 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481,
- 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481,
- 1481, 1481, 1481, 1481, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
-
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1682, 1682, 1682, 1682,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1682, 1682, 1682, 1682, 1682, 1682,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
-
- 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485,
- 1485, 1485, 1485, 1485, 1682, 1682, 1682, 1682,
- 2632, 2632, 2632, 2632, 2632, 2632, 2632, 2632,
- 2643, 2637, 2637, 2637, 2637, 2638, 2637, 2644,
- 2638, 2638, 2638, 2638, 2638, 2638, 2637, 2638,
- 2630, 2630, 2630, 2630, 2630, 2630, 2630, 2630,
- 2637, 2644, 2644, 2637, 2637, 2637, 2637, 2637,
- 2637, 2637, 2638, 2638, 2638, 2637, 2637, 1682,
- 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638,
- 2638, 2638, 2638, 2638, 2630, 1682, 1682, 1682,
- 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638,
- 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2630,
- 2630, 2630, 2630, 2630, 2630, 2630, 2630, 2630,
- 2630, 2630, 2630, 2630, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 2632, 2632, 2632, 2632, 2632, 2638, 2638, 2638,
- 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638,
- 2638, 2638, 2630, 2630, 2630, 2630, 2630, 2630,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 2632, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 2630, 2644, 2644, 2644, 2644, 2644, 2644, 2644,
- 2644, 2644, 2644, 2644, 2644, 2644, 2630, 2630,
- 2630, 2630, 2630, 2630, 2630, 2630, 2630, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
-
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
-
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 2645, 2645,
-
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
-
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
-
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
-
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
-
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 1682, 1682,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
-
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
-
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
-
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
-
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
-
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
-
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
-
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 2645, 2645,
-
- 1382, 2557, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649,
- 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649,
- 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649,
- 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649,
- 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649,
- 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649,
- 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649,
- 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649,
- 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649,
- 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649,
- 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649,
- 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
-
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
-
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
-
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
-
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2645, 2645
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 202, 202, 202, 202, 202, 202, 202,
+ 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622,
+ 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622,
+ 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622,
+ 2622, 2622, 2622, 2622, 2622, 2622, 2622, 202,
+ 2623, 2624, 2625, 2626, 2627, 2628, 2629, 2630,
+ 2631, 2632, 202, 202, 202, 202, 2633, 2633,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2634, 2634, 2634, 2634, 2634, 2634, 2634, 2634,
+ 2634, 2634, 2634, 2634, 2634, 2634, 2634, 2634,
+ 2634, 2634, 2634, 2634, 2634, 2634, 2634, 2634,
+ 2634, 2634, 2634, 2634, 2634, 2634, 202, 202,
+ 2635, 2635, 2635, 2635, 2635, 2636, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637,
+ 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637,
+ 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637,
+ 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637,
+ 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637,
+ 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637,
+ 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2639,
+ 2639, 2640, 2641, 2641, 2642, 2642, 2642, 2642,
+ 2643, 2643, 2643, 2643, 2639, 2642, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2644, 2645, 2646, 2647, 2648, 2649, 2650, 2651,
+ 2652, 2653, 202, 2654, 2654, 2654, 2654, 2654,
+ 2654, 2654, 202, 2637, 2637, 2637, 2637, 2637,
+ 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637,
+ 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637,
+ 202, 202, 202, 202, 202, 2637, 2637, 2637,
+ 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637,
+ 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655,
+ 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655,
+ 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655,
+ 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655,
+ 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656,
+ 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656,
+ 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656,
+ 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656,
+ 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657,
+ 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657,
+ 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2658,
+ 2659, 2660, 2660, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2661, 2661, 2661, 2661, 2661, 2661, 2661, 2661,
+ 2661, 2661, 2661, 2661, 2661, 2661, 2661, 2661,
+ 2661, 2661, 2661, 2661, 2661, 2661, 2661, 2661,
+ 2661, 2661, 2661, 2661, 2661, 2661, 2661, 2661,
+ 2661, 2661, 2661, 2661, 2661, 2661, 2661, 2661,
+ 2661, 2661, 2661, 2661, 2661, 2661, 2661, 2661,
+ 2661, 2661, 2661, 2661, 2661, 2661, 2661, 2661,
+ 2661, 2661, 2661, 2661, 2661, 2661, 2661, 2661,
+ 2661, 2661, 2661, 2661, 2661, 2662, 2662, 2662,
+ 2662, 2662, 2662, 202, 202, 202, 202, 2663,
+ 2661, 2664, 2664, 2664, 2664, 2664, 2664, 2664,
+ 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664,
+ 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664,
+ 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664,
+ 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664,
+ 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2665,
+ 2665, 2665, 2665, 2665, 2665, 2665, 2665, 2665,
+ 202, 202, 202, 202, 202, 202, 202, 2666,
+ 2666, 2666, 2666, 2667, 2667, 2667, 2667, 2667,
+ 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2668, 2669, 2670, 2671, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2673, 2673, 2673,
+ 2673, 2673, 2674, 2674, 2674, 2674, 2674, 2674,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2675, 2676, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2678, 2678, 2678, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 2679, 2679, 2679, 2679,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 202, 202, 202, 202,
+
+ 2681, 2681, 2681, 2681, 2681, 2681, 2681, 2681,
+ 2681, 2681, 2681, 2681, 2681, 2681, 2681, 2681,
+ 2681, 2681, 2681, 2681, 2681, 2681, 2681, 2681,
+ 2681, 2681, 2681, 2681, 2681, 2681, 2681, 2681,
+ 2681, 2681, 2681, 2681, 2681, 2681, 2681, 2681,
+ 2681, 2681, 2681, 2681, 2681, 2681, 2681, 2681,
+ 2681, 2681, 2681, 2681, 2681, 2681, 2681, 2681,
+ 2681, 2681, 2681, 2681, 2681, 2681, 2681, 2681,
+ 2681, 2681, 2681, 2681, 2681, 2681, 2681, 2681,
+ 2681, 2681, 2681, 2681, 2681, 2681, 2681, 2681,
+ 2681, 2681, 2681, 2681, 2681, 2681, 2681, 2681,
+ 2681, 2681, 2681, 2681, 2681, 2681, 2681, 2681,
+ 2681, 2681, 2681, 2681, 2681, 2681, 2681, 2681,
+ 2681, 2681, 2681, 202, 202, 202, 202, 202,
+ 2681, 2681, 2681, 2681, 2681, 2681, 2681, 2681,
+ 2681, 2681, 2681, 2681, 2681, 202, 202, 202,
+ 2681, 2681, 2681, 2681, 2681, 2681, 2681, 2681,
+ 2681, 202, 202, 202, 202, 202, 202, 202,
+ 2681, 2681, 2681, 2681, 2681, 2681, 2681, 2681,
+ 2681, 2681, 202, 202, 2682, 2683, 2684, 2685,
+ 2686, 2686, 2686, 2686, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 202,
+ 202, 1461, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2688, 2688,
+ 2688, 2688, 2688, 2688, 2688, 2689, 2690, 2691,
+ 2691, 2691, 2687, 2687, 2687, 2692, 2689, 2689,
+ 2689, 2689, 2689, 2693, 2693, 2693, 2693, 2693,
+ 2693, 2693, 2693, 2694, 2694, 2694, 2694, 2694,
+ 2694, 2694, 2694, 2687, 2687, 2695, 2695, 2695,
+ 2695, 2695, 2694, 2694, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2695, 2695, 2695, 2695, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2688, 2688, 2688, 2688, 2688,
+ 2688, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2696, 2696,
+ 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
+ 2696, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115,
+ 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115,
+ 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115,
+ 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115,
+ 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115,
+ 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115,
+ 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115,
+ 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115,
+ 2115, 2115, 2697, 2697, 2697, 2115, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698,
+ 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698,
+ 2698, 2698, 2698, 2698, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503,
+ 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503,
+ 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503,
+ 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503,
+ 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503,
+ 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503,
+ 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503,
+ 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503,
+ 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503,
+ 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503,
+ 1503, 1503, 1503, 1503, 1503, 1503, 1503, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699,
+ 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699,
+ 2699, 2699, 2698, 2698, 2698, 2698, 2698, 2698,
+ 2698, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 202, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2700, 202, 2700, 2700,
+ 202, 202, 2700, 202, 202, 2700, 2700, 202,
+ 202, 2700, 2700, 2700, 2700, 202, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2701, 2701,
+ 2701, 2701, 202, 2701, 202, 2701, 2701, 2701,
+ 2701, 2702, 2701, 2701, 202, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+
+ 2701, 2701, 2701, 2701, 2700, 2700, 202, 2700,
+ 2700, 2700, 2700, 202, 202, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 202, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 202, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2700, 2700, 202, 2700, 2700, 2700, 2700, 202,
+ 2700, 2700, 2700, 2700, 2700, 202, 2700, 202,
+ 202, 202, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 202, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 1453, 1453, 202, 202,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2703, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2704, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2703, 2701, 2701, 2701, 2701,
+
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2704, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2703, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2704,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2703,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2704, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2703, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2704, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2705, 2706, 202, 202, 2707, 2708,
+ 2709, 2710, 2711, 2712, 2713, 2714, 2715, 2716,
+ 2707, 2708, 2709, 2710, 2711, 2712, 2713, 2714,
+ 2715, 2716, 2707, 2708, 2709, 2710, 2711, 2712,
+ 2713, 2714, 2715, 2716, 2707, 2708, 2709, 2710,
+ 2711, 2712, 2713, 2714, 2715, 2716, 2707, 2708,
+ 2709, 2710, 2711, 2712, 2713, 2714, 2715, 2716,
+
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+
+ 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718,
+ 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718,
+ 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718,
+ 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718,
+ 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718,
+ 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718,
+ 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2717,
+ 2717, 2717, 2717, 2718, 2718, 2718, 2718, 2718,
+ 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718,
+ 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718,
+ 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718,
+ 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718,
+ 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718,
+ 2718, 2718, 2718, 2718, 2718, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2718, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2718, 2717, 2717, 2719,
+ 2720, 2719, 2719, 2721, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 2718, 2718, 2718, 2718, 2718,
+ 202, 2718, 2718, 2718, 2718, 2718, 2718, 2718,
+ 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2722, 2722, 2722, 2722, 2722, 2722, 2722, 202,
+ 2722, 2722, 2722, 2722, 2722, 2722, 2722, 2722,
+ 2722, 2722, 2722, 2722, 2722, 2722, 2722, 2722,
+ 2722, 202, 202, 2722, 2722, 2722, 2722, 2722,
+ 2722, 2722, 202, 2722, 2722, 202, 2722, 2722,
+ 2722, 2722, 2722, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2723, 2723, 2723, 2723, 2723, 2723, 2723, 2723,
+ 2723, 2723, 2723, 2723, 2723, 2723, 2723, 2723,
+ 2723, 2723, 2723, 2723, 2723, 2723, 2723, 2723,
+ 2723, 2723, 2723, 2723, 2723, 2723, 2723, 2723,
+ 2723, 2723, 2723, 2723, 2723, 2723, 2723, 2723,
+ 2723, 2723, 2723, 2723, 2723, 202, 202, 202,
+ 2724, 2724, 2724, 2724, 2724, 2724, 2724, 2725,
+ 2725, 2725, 2725, 2725, 2725, 2725, 202, 202,
+ 2726, 2727, 2728, 2729, 2730, 2731, 2732, 2733,
+ 2734, 2735, 202, 202, 202, 202, 2723, 2736,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2737, 2737, 2737, 2737, 2737, 2737, 2737, 2737,
+ 2737, 2737, 2737, 2737, 2737, 2737, 2737, 2737,
+ 2737, 2737, 2737, 2737, 2737, 2737, 2737, 2737,
+ 2737, 2737, 2737, 2737, 2737, 2737, 2737, 2737,
+ 2737, 2737, 2737, 2737, 2737, 2737, 2737, 2737,
+ 2737, 2737, 2737, 2737, 2738, 2738, 2738, 2738,
+ 2739, 2740, 2741, 2742, 2743, 2744, 2745, 2746,
+ 2747, 2748, 202, 202, 202, 202, 202, 2749,
+
+ 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750,
+ 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750,
+ 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750,
+ 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750,
+ 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750,
+ 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750,
+ 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750,
+ 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750,
+ 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750,
+ 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750,
+ 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750,
+ 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750,
+ 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750,
+ 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750,
+ 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750,
+ 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750,
+ 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750,
+ 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750,
+ 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750,
+ 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750,
+ 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750,
+ 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750,
+ 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750,
+ 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750,
+ 2750, 2750, 2750, 2750, 2750, 301, 301, 2751,
+ 2751, 2751, 2751, 2751, 2751, 2751, 2751, 2751,
+ 2752, 2752, 2752, 2752, 2752, 2752, 2752, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+
+ 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753,
+ 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753,
+ 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753,
+ 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753,
+ 2753, 2753, 2754, 2754, 2754, 2754, 2754, 2754,
+ 2754, 2754, 2754, 2754, 2754, 2754, 2754, 2754,
+ 2754, 2754, 2754, 2754, 2754, 2754, 2754, 2754,
+ 2754, 2754, 2754, 2754, 2754, 2754, 2754, 2754,
+ 2754, 2754, 2754, 2754, 2755, 2755, 2755, 2755,
+ 2755, 2755, 2756, 2757, 301, 301, 301, 301,
+ 2758, 2759, 2760, 2761, 2762, 2763, 2764, 2765,
+ 2766, 2767, 301, 301, 301, 301, 2768, 2768,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 2769, 2769, 2769, 2769, 2769, 2769, 2769,
+ 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769,
+ 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769,
+ 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769,
+ 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769,
+ 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769,
+ 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769,
+ 2769, 2769, 2769, 2769, 2770, 2769, 2769, 2769,
+ 2771, 2769, 2769, 2769, 2769, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+
+ 301, 2772, 2772, 2772, 2772, 2772, 2772, 2772,
+ 2772, 2772, 2772, 2772, 2772, 2772, 2772, 2772,
+ 2772, 2772, 2772, 2772, 2772, 2772, 2772, 2772,
+ 2772, 2772, 2772, 2772, 2772, 2772, 2772, 2772,
+ 2772, 2772, 2772, 2772, 2772, 2772, 2772, 2772,
+ 2772, 2772, 2772, 2772, 2772, 2772, 2773, 2772,
+ 2772, 2772, 2772, 2772, 2772, 2772, 2772, 2772,
+ 2772, 2772, 2772, 2772, 2772, 2772, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+
+ 2774, 2774, 2774, 2774, 348, 2774, 2774, 2774,
+ 2774, 2774, 2774, 2774, 2774, 2774, 2774, 2774,
+ 2774, 2774, 2774, 2774, 2774, 2774, 2774, 2774,
+ 2774, 2774, 2774, 2774, 2774, 2774, 2774, 2774,
+ 348, 2774, 2774, 348, 2774, 348, 348, 2774,
+ 348, 2774, 2774, 2774, 2774, 2774, 2774, 2774,
+ 2774, 2774, 2774, 348, 2774, 2774, 2774, 2774,
+ 348, 2774, 348, 2774, 348, 348, 348, 348,
+ 348, 348, 2774, 348, 348, 348, 348, 2774,
+ 348, 2774, 348, 2774, 348, 2774, 2774, 2774,
+ 348, 2774, 2774, 348, 2774, 348, 348, 2774,
+ 348, 2774, 348, 2774, 348, 2774, 348, 2774,
+ 348, 2774, 2774, 348, 2774, 348, 348, 2774,
+ 2774, 2774, 2774, 348, 2774, 2774, 2774, 2774,
+ 2774, 2774, 2774, 348, 2774, 2774, 2774, 2774,
+ 348, 2774, 2774, 2774, 2774, 348, 2774, 348,
+ 2774, 2774, 2774, 2774, 2774, 2774, 2774, 2774,
+ 2774, 2774, 348, 2774, 2774, 2774, 2774, 2774,
+ 2774, 2774, 2774, 2774, 2774, 2774, 2774, 2774,
+ 2774, 2774, 2774, 2774, 348, 348, 348, 348,
+ 348, 2774, 2774, 2774, 348, 2774, 2774, 2774,
+ 2774, 2774, 348, 2774, 2774, 2774, 2774, 2774,
+ 2774, 2774, 2774, 2774, 2774, 2774, 2774, 2774,
+ 2774, 2774, 2774, 2774, 348, 348, 348, 348,
+ 348, 348, 348, 348, 348, 348, 348, 348,
+ 348, 348, 348, 348, 348, 348, 348, 348,
+ 348, 348, 348, 348, 348, 348, 348, 348,
+ 348, 348, 348, 348, 348, 348, 348, 348,
+ 348, 348, 348, 348, 348, 348, 348, 348,
+ 348, 348, 348, 348, 348, 348, 348, 348,
+ 2775, 2775, 348, 348, 348, 348, 348, 348,
+ 348, 348, 348, 348, 348, 348, 348, 348,
+
+ 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542,
+ 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542,
+ 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542,
+ 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542,
+ 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542,
+ 1542, 1542, 1542, 1542, 1717, 1717, 1717, 1717,
+ 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542,
+ 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542,
+ 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542,
+ 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542,
+ 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542,
+ 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542,
+ 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542,
+ 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542,
+ 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542,
+ 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542,
+ 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542,
+ 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542,
+ 1542, 1542, 1542, 1542, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1717,
+ 1717, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1544,
+ 1717, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1717, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544,
+ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544,
+ 1544, 1544, 1544, 1544, 1544, 1544, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+
+ 2776, 2776, 2777, 2778, 2779, 2780, 2781, 2782,
+ 2783, 2784, 2785, 2786, 2786, 1717, 1717, 1717,
+ 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787,
+ 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787,
+ 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787,
+ 2787, 2787, 2787, 2787, 2787, 2787, 2787, 1592,
+ 2788, 2789, 2788, 2788, 2788, 2788, 2788, 2788,
+ 2788, 2788, 2788, 2788, 2788, 2789, 2788, 2789,
+ 2788, 2788, 2789, 2788, 2788, 2788, 2789, 2788,
+ 2788, 2788, 2787, 2787, 2787, 2787, 2787, 2790,
+ 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2792,
+ 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2792,
+ 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
+ 2791, 2791, 2793, 2793, 2794, 1717, 1717, 1717,
+ 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
+ 2791, 2792, 2791, 2792, 2792, 2791, 2791, 2792,
+ 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
+ 2791, 2791, 810, 810, 810, 810, 2795, 2795,
+ 2787, 2795, 2795, 2795, 2795, 2795, 2795, 2795,
+ 2795, 2795, 2795, 2796, 2796, 2796, 2796, 2796,
+ 2796, 2796, 2796, 2796, 2796, 2796, 2796, 2796,
+ 2796, 2796, 2796, 2796, 2796, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 2797, 2797,
+ 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
+ 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
+ 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
+
+ 2798, 2799, 2799, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709,
+ 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709,
+ 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709,
+ 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709,
+ 1709, 1709, 2799, 2799, 2799, 2799, 2799, 2799,
+ 2799, 2799, 2799, 2800, 1717, 1717, 1717, 1717,
+ 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709,
+ 1709, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 2799, 2799, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 2801, 2801, 2801, 2801, 2801, 2801, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1544, 1544, 1544, 1544, 1544, 1544, 1544,
+ 1544, 1544, 1544, 1544, 1544, 2802, 2802, 2802,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1544, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1544, 2802, 2802,
+ 1507, 1507, 1507, 1507, 1507, 1545, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1544, 1544, 1544, 1544,
+ 1544, 1544, 1544, 1544, 1508, 1508, 1544, 1544,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1506, 1506, 1507,
+ 1507, 1507, 1507, 1507, 1506, 1507, 1507, 1507,
+ 1507, 1507, 1545, 1545, 1545, 1544, 1507, 1545,
+ 1507, 1507, 1545, 2803, 2803, 1544, 1544, 2802,
+ 2802, 2802, 2802, 2802, 1544, 1544, 1544, 1544,
+ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1544, 1544, 1544, 1544, 1544, 1544, 1544,
+ 2802, 2802, 2802, 2804, 2804, 2804, 2804, 2804,
+
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1544,
+ 1507, 1544, 1545, 1545, 1507, 1507, 1545, 1545,
+ 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545,
+ 1545, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1545, 1545,
+ 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545,
+ 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545,
+ 1545, 1507, 1507, 1507, 1545, 1507, 1507, 1507,
+ 1507, 1545, 1545, 1545, 1507, 1545, 1545, 1545,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1545,
+ 1507, 1545, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1506, 1507, 1506, 1507, 1506, 1507, 1507, 1507,
+ 1507, 1507, 1545, 1507, 1507, 1507, 1507, 1506,
+ 1507, 1506, 1506, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1544, 1507, 1507, 1507, 1507, 1544, 1544, 2802,
+
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1508, 1508,
+ 2805, 2805, 2805, 2805, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1544, 2802, 2802, 2802, 2802, 2802,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544,
+ 1544, 1544, 1544, 1544, 2803, 2803, 1544, 1544,
+ 1544, 1544, 2806, 1544, 1544, 1544, 1544, 1544,
+ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544,
+ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544,
+ 2803, 1544, 1544, 1544, 1544, 2803, 2803, 1544,
+ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544,
+ 1544, 1544, 1544, 1544, 2807, 1544, 1544, 1544,
+ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544,
+ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544,
+ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544,
+ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544,
+ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544,
+ 1544, 1544, 1544, 1544, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1544, 1544, 1544, 1544,
+ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544,
+ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544,
+ 1544, 1544, 1544, 1544, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1544, 1507, 1507, 1507, 1507, 1507,
+
+ 2808, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 2808, 1507, 1507, 1507, 2808, 1507, 2808,
+ 1507, 2808, 1507, 2808, 1507, 1507, 1507, 2808,
+ 1507, 1507, 1507, 1507, 1507, 1507, 2808, 2808,
+ 1507, 1507, 1507, 1507, 2808, 1507, 2808, 2808,
+ 1507, 1507, 1507, 1507, 2808, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1544, 1544, 2802, 2802, 1545, 1545, 1545,
+ 1507, 1507, 1507, 1545, 1545, 1545, 1545, 1545,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 2809, 2809,
+ 2809, 2810, 2810, 2810, 1508, 1508, 1508, 1508,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1545, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1545, 1545, 1545, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1545, 1507, 1507, 1507, 1507, 1507, 1544, 1544,
+ 1544, 1544, 1544, 1544, 2803, 1544, 1544, 1544,
+ 2802, 2807, 2807, 2801, 2801, 2811, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544,
+ 1544, 1544, 1544, 1544, 1544, 1717, 1717, 1717,
+ 1544, 1544, 1544, 1544, 2807, 2807, 2807, 2801,
+ 2801, 2812, 2811, 1717, 1717, 1717, 1717, 1717,
+
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 2812, 2812, 2812,
+ 2812, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 2811, 2811, 2811, 2811, 2811, 2811, 2811, 2811,
+ 2811, 2811, 2811, 2811, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1717, 1717, 1717, 1717,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+
+ 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510,
+ 1510, 1510, 1510, 1510, 1717, 2811, 2811, 2813,
+ 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
+ 2814, 2806, 2806, 2806, 2806, 2806, 2806, 2815,
+ 2807, 2807, 2807, 2807, 2807, 2807, 2806, 2807,
+ 2801, 2801, 2801, 2801, 2801, 2801, 2801, 2801,
+ 2806, 2815, 2815, 2806, 2806, 2806, 2806, 2806,
+ 2806, 2806, 2807, 2807, 2806, 2806, 2806, 2811,
+ 2807, 2807, 2807, 2807, 2807, 2807, 2807, 2807,
+ 2807, 2807, 2807, 2807, 2801, 2812, 2812, 2812,
+ 2807, 2807, 2807, 2807, 2807, 2807, 2807, 2807,
+ 2807, 2807, 2807, 2807, 2807, 2807, 2807, 2801,
+ 2801, 2801, 2801, 2801, 2801, 2801, 2801, 2801,
+ 2801, 2801, 2801, 2801, 2812, 2812, 2812, 2812,
+ 2812, 2811, 1717, 2812, 2812, 2812, 2812, 1717,
+ 1717, 1717, 2812, 2811, 2812, 2812, 2812, 2812,
+ 2802, 2802, 2802, 2802, 2802, 2807, 2807, 2807,
+ 2807, 2807, 2807, 2807, 2807, 2807, 2807, 2807,
+ 2807, 2807, 2801, 2801, 2801, 2801, 2801, 2801,
+ 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812,
+ 2812, 2812, 2812, 1717, 1717, 2811, 2811, 2811,
+ 2811, 2811, 2811, 1717, 1717, 1717, 2811, 2811,
+ 2812, 2812, 2812, 2812, 2812, 2816, 2816, 2812,
+ 2816, 2816, 2811, 2813, 2811, 2811, 2811, 2811,
+ 2802, 2812, 2812, 2811, 2811, 2811, 2811, 2811,
+ 2811, 2811, 2811, 1717, 1717, 2813, 2813, 2813,
+ 2801, 2815, 2815, 2815, 2815, 2815, 2815, 2815,
+ 2815, 2815, 2815, 2815, 2815, 2815, 2801, 2801,
+ 2801, 2801, 2801, 2801, 2801, 2801, 2801, 2812,
+ 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812,
+ 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812,
+ 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812,
+
+ 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593,
+ 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593,
+ 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593,
+ 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593,
+ 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593,
+ 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593,
+ 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593,
+ 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593,
+ 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593,
+ 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593,
+ 1593, 1593, 1593, 1593, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812,
+ 2812, 2812, 2812, 2812, 2812, 2812, 1717, 1717,
+ 2811, 2811, 2811, 2811, 1717, 1717, 1717, 1717,
+ 2811, 2811, 2811, 1717, 1717, 1717, 1717, 1717,
+ 2811, 2811, 2811, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 2811, 2811, 2811, 2811, 2811, 2811, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 2817, 2817,
+
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 1717, 1717,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 2817, 2817,
+
+ 1399, 2693, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 2821, 2821, 2821, 2821, 2821, 2821, 2821, 2821,
+ 2821, 2821, 2821, 2821, 2821, 2821, 2821, 2821,
+ 2821, 2821, 2821, 2821, 2821, 2821, 2821, 2821,
+ 2821, 2821, 2821, 2821, 2821, 2821, 2821, 2821,
+ 2821, 2821, 2821, 2821, 2821, 2821, 2821, 2821,
+ 2821, 2821, 2821, 2821, 2821, 2821, 2821, 2821,
+ 2821, 2821, 2821, 2821, 2821, 2821, 2821, 2821,
+ 2821, 2821, 2821, 2821, 2821, 2821, 2821, 2821,
+ 2821, 2821, 2821, 2821, 2821, 2821, 2821, 2821,
+ 2821, 2821, 2821, 2821, 2821, 2821, 2821, 2821,
+ 2821, 2821, 2821, 2821, 2821, 2821, 2821, 2821,
+ 2821, 2821, 2821, 2821, 2821, 2821, 2821, 2821,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2817, 2817
};
#define GET_PROP_INDEX(ucs4) \
@@ -6157,7 +6489,7 @@ static const Properties uc_properties[] = {
{ 9, 7, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 1, 1, 36, 1, 2 },
{ 9, 7, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 0, 21, 0, 2 },
{ 9, 8, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 0, 21, 0, 2 },
- { 6, 9, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 35, 5, 2 },
+ { 6, 9, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 22, 35, 5, 2 },
{ 25, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 6, 12, 2 },
{ 25, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 12, 3, 13, 2 },
{ 25, 4, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
@@ -6216,19 +6548,19 @@ static const Properties uc_properties[] = {
{ 24, 10, 0, 0, -1, -16, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 3, 13, 2 },
{ 5, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 14, 0, 0, 0, -1, 0, 1, 17, { {0, 32}, {0, 0}, {0, 0}, {0, 32} }, 0, 10, 12, 7, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {1, 410}, {1, 407}, {0, 0} }, 0, 10, 12, 6, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {1, 418}, {1, 415}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, -32}, {0, -32}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, 121}, {0, 121}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 14, 0, 0, 0, -1, 0, 1, 17, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3 },
{ 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 14, 0, 0, 0, -1, 0, 1, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3 },
{ 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 3 },
- { 14, 0, 0, 0, -1, 0, 1, 17, { {1, 413}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 3 },
+ { 14, 0, 0, 0, -1, 0, 1, 17, { {1, 421}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 3 },
{ 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, -232}, {0, -232}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 14, 0, 0, 0, -1, 0, 1, 80, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3 },
{ 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 492}, {1, 492}, {0, 0} }, 0, 10, 12, 6, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 500}, {1, 500}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 14, 0, 0, 0, -1, 0, 1, 17, { {0, -121}, {0, 0}, {0, 0}, {0, -121} }, 0, 10, 12, 7, 3 },
{ 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, -300}, {0, -300}, {0, -268} }, 0, 10, 12, 6, 3 },
{ 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 195}, {0, 195}, {0, 0} }, 0, 10, 12, 6, 3 },
@@ -6255,7 +6587,7 @@ static const Properties uc_properties[] = {
{ 16, 0, 0, 0, -1, 0, 1, 80, { {0, 1}, {0, -1}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3 },
{ 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, -2}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, -79}, {0, -79}, {0, 0} }, 0, 10, 12, 6, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 503}, {1, 503}, {0, 0} }, 0, 10, 12, 6, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 511}, {1, 511}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 14, 0, 0, 0, -1, 0, 4, 0, { {0, -97}, {0, 0}, {0, 0}, {0, -97} }, 0, 10, 12, 7, 3 },
{ 14, 0, 0, 0, -1, 0, 4, 0, { {0, -56}, {0, 0}, {0, 0}, {0, -56} }, 0, 10, 12, 7, 3 },
{ 14, 0, 0, 0, -1, 0, 4, 17, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3 },
@@ -6301,12 +6633,13 @@ static const Properties uc_properties[] = {
{ 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {1, 31}, {1, 31}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, -218}, {0, -218}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {1, 33}, {1, 33}, {0, 0} }, 0, 10, 12, 6, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {1, 35}, {1, 35}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, -69}, {0, -69}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, -217}, {0, -217}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, -71}, {0, -71}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, -219}, {0, -219}, {0, 0} }, 0, 10, 12, 6, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {1, 35}, {1, 35}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {1, 37}, {1, 37}, {0, 0} }, 0, 10, 12, 6, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {1, 39}, {1, 39}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 15, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 17, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 17, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 2 },
@@ -6362,12 +6695,12 @@ static const Properties uc_properties[] = {
{ 14, 0, 0, 0, -1, 0, 1, 17, { {0, 37}, {0, 0}, {0, 0}, {0, 37} }, 0, 10, 12, 7, 4 },
{ 14, 0, 0, 0, -1, 0, 1, 17, { {0, 64}, {0, 0}, {0, 0}, {0, 64} }, 0, 10, 12, 7, 4 },
{ 14, 0, 0, 0, -1, 0, 1, 17, { {0, 63}, {0, 0}, {0, 0}, {0, 63} }, 0, 10, 12, 7, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 495}, {1, 495}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 503}, {1, 503}, {0, 0} }, 0, 10, 12, 6, 4 },
{ 14, 0, 0, 0, -1, 0, 1, 0, { {0, 32}, {0, 0}, {0, 0}, {0, 32} }, 0, 10, 12, 7, 4 },
{ 14, 0, 0, 0, -1, 0, 1, 17, { {0, 32}, {0, 0}, {0, 0}, {0, 32} }, 0, 10, 12, 7, 4 },
{ 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, -38}, {0, -38}, {0, 0} }, 0, 10, 12, 6, 4 },
{ 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, -37}, {0, -37}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 499}, {1, 499}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 507}, {1, 507}, {0, 0} }, 0, 10, 12, 6, 4 },
{ 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, -32}, {0, -32}, {0, 0} }, 0, 10, 12, 6, 4 },
{ 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, -31}, {0, -31}, {0, 1} }, 0, 10, 12, 6, 4 },
{ 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, -32}, {0, -32}, {0, 0} }, 0, 10, 12, 6, 4 },
@@ -6440,9 +6773,11 @@ static const Properties uc_properties[] = {
{ 14, 0, 0, 0, -1, 0, 1, 0, { {0, 48}, {0, 0}, {0, 0}, {0, 48} }, 0, 10, 12, 7, 6 },
{ 17, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 6 },
{ 25, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 6 },
+ { 25, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 0, 6 },
{ 25, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 11, 6 },
+ { 15, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 6 },
{ 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, -48}, {0, -48}, {0, 0} }, 0, 10, 12, 6, 6 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 459}, {1, 456}, {0, 0} }, 0, 10, 12, 6, 6 },
+ { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 467}, {1, 464}, {0, 0} }, 0, 10, 12, 6, 6 },
{ 25, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 15, 8, 12, 2 },
{ 20, 10, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 6 },
{ 29, 10, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 6 },
@@ -6475,6 +6810,7 @@ static const Properties uc_properties[] = {
{ 25, 1, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 6, 0, 7 },
{ 0, 17, 18, 5, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 7 },
{ 18, 1, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 9, 13, 8, 7 },
+ { 18, 1, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 9, 13, 8, 7 },
{ 25, 1, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 7 },
{ 25, 1, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 14, 12, 0, 7 },
{ 10, 5, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 7, 6, 12, 4, 8 },
@@ -6494,7 +6830,7 @@ static const Properties uc_properties[] = {
{ 25, 13, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 6, 0, 2 },
{ 10, 13, 0, 5, -1, 0, 15, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 21, 4, 8 },
{ 13, 13, 0, 0, -1, 0, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0 },
- { 25, 13, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 6, 0, 8 },
+ { 25, 13, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 6, 12, 8 },
{ 25, 13, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 6, 12, 2 },
{ 18, 13, 0, 2, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 8 },
{ 18, 13, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 8 },
@@ -6592,10 +6928,13 @@ static const Properties uc_properties[] = {
{ 25, 10, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 15, 8, 11, 66 },
{ 25, 10, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 6, 12, 66 },
{ 17, 1, 0, 1, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 66 },
+ { 0, 17, 220, 5, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 66 },
+ { 27, 1, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 9, 0, 66 },
{ 18, 1, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 82 },
{ 0, 17, 230, 5, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 82 },
{ 17, 1, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 82 },
{ 25, 1, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 82 },
+ { 25, 1, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 12, 82 },
{ 18, 1, 0, 3, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 95 },
{ 18, 1, 0, 2, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 95 },
{ 18, 1, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 95 },
@@ -6612,6 +6951,7 @@ static const Properties uc_properties[] = {
{ 18, 13, 0, 2, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 8 },
{ 18, 13, 0, 2, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 8 },
{ 18, 13, 0, 3, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 8 },
+ { 0, 17, 220, 5, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 8 },
{ 0, 17, 230, 5, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 8 },
{ 10, 5, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 7, 6, 12, 4, 2 },
{ 0, 17, 220, 5, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 8 },
@@ -6632,7 +6972,6 @@ static const Properties uc_properties[] = {
{ 0, 17, 7, 5, -1, 0, 1, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 11 },
{ 0, 17, 9, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 11 },
{ 1, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 11 },
- { 0, 17, 230, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 11 },
{ 18, 0, 0, 0, -1, 0, 1, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 11 },
{ 25, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 2 },
{ 3, 0, 0, 0, 0, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 11 },
@@ -6681,6 +7020,7 @@ static const Properties uc_properties[] = {
{ 27, 4, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 9, 0, 12 },
{ 18, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 12 },
{ 25, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 12 },
+ { 0, 17, 230, 5, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 12 },
{ 0, 17, 0, 5, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 13 },
{ 0, 17, 0, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 13 },
{ 1, 0, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 13 },
@@ -6700,6 +7040,7 @@ static const Properties uc_properties[] = {
{ 3, 0, 0, 0, 7, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 13 },
{ 3, 0, 0, 0, 8, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 13 },
{ 3, 0, 0, 0, 9, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 13 },
+ { 25, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 13 },
{ 0, 17, 0, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 14 },
{ 1, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 14 },
{ 18, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 14 },
@@ -6768,6 +7109,7 @@ static const Properties uc_properties[] = {
{ 27, 4, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 9, 0, 16 },
{ 0, 17, 0, 5, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 17 },
{ 1, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 17 },
+ { 0, 17, 0, 5, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 17 },
{ 18, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 17 },
{ 18, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 17 },
{ 18, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 17 },
@@ -6788,11 +7130,13 @@ static const Properties uc_properties[] = {
{ 3, 0, 0, 0, 7, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 17 },
{ 3, 0, 0, 0, 8, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 17 },
{ 3, 0, 0, 0, 9, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 17 },
+ { 25, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 18, 0, 17 },
{ 5, 10, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 17 },
{ 29, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 17 },
{ 18, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 18 },
{ 0, 17, 0, 5, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 18 },
{ 1, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 18 },
+ { 25, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 18, 0, 18 },
{ 18, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 18 },
{ 0, 17, 7, 5, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 18 },
{ 18, 0, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 18 },
@@ -6879,9 +7223,11 @@ static const Properties uc_properties[] = {
{ 3, 0, 0, 0, 9, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 21 },
{ 25, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 21 },
{ 18, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 8, 22 },
+ { 18, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 8, 22 },
{ 0, 17, 0, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 33, 4, 22 },
{ 18, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 0, 33, 8, 22 },
{ 0, 17, 118, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 33, 4, 22 },
+ { 0, 17, 9, 5, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 33, 4, 22 },
{ 17, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 8, 22 },
{ 0, 17, 122, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 33, 4, 22 },
{ 3, 0, 0, 0, 0, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 22 },
@@ -6988,12 +7334,12 @@ static const Properties uc_properties[] = {
{ 29, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 0, 24 },
{ 14, 0, 0, 0, -1, 0, 1, 0, { {0, 7264}, {0, 0}, {0, 0}, {0, 7264} }, 0, 10, 12, 7, 25 },
{ 14, 0, 0, 0, -1, 0, 13, 0, { {0, 7264}, {0, 0}, {0, 0}, {0, 7264} }, 0, 10, 12, 7, 25 },
- { 18, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 25 },
- { 18, 0, 0, 0, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 25 },
- { 18, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 25 },
+ { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 3008}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 25 },
+ { 15, 0, 0, 0, -1, 0, 6, 0, { {0, 0}, {0, 3008}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 25 },
+ { 15, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 3008}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 25 },
{ 25, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 17, 0, 0, 0, -1, 0, 8, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 25 },
- { 18, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 25 },
+ { 15, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 3008}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 25 },
{ 18, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 9, 10, 25, 8, 26 },
{ 18, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 9, 10, 25, 8, 26 },
{ 18, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 10, 10, 26, 8, 26 },
@@ -7021,7 +7367,6 @@ static const Properties uc_properties[] = {
{ 5, 0, 0, 0, 9, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 27 },
{ 5, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 27 },
{ 29, 10, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 27 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 39}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 28 },
{ 14, 0, 0, 0, -1, 0, 4, 0, { {1, 41}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 28 },
{ 14, 0, 0, 0, -1, 0, 4, 0, { {1, 43}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 28 },
{ 14, 0, 0, 0, -1, 0, 4, 0, { {1, 45}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 28 },
@@ -7101,15 +7446,16 @@ static const Properties uc_properties[] = {
{ 14, 0, 0, 0, -1, 0, 4, 0, { {1, 193}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 28 },
{ 14, 0, 0, 0, -1, 0, 4, 0, { {1, 195}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 28 },
{ 14, 0, 0, 0, -1, 0, 4, 0, { {1, 197}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 199}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 28 },
{ 14, 0, 0, 0, -1, 0, 4, 0, { {0, 8}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 28 },
{ 14, 0, 0, 0, -1, 0, 17, 0, { {0, 8}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 28 },
{ 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, -8}, {0, -8}, {0, -8} }, 0, 10, 12, 6, 28 },
{ 20, 10, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 29 },
{ 18, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 29 },
- { 25, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 29 },
+ { 29, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 29 },
{ 25, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 12, 29 },
{ 18, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 29 },
- { 6, 9, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 5, 30 },
+ { 6, 9, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 22, 17, 5, 30 },
{ 18, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 30 },
{ 21, 10, 0, 0, -1, 1, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 30 },
{ 22, 10, 0, 0, -1, -1, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 30 },
@@ -7173,6 +7519,7 @@ static const Properties uc_properties[] = {
{ 3, 0, 0, 0, 9, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 33 },
{ 18, 0, 0, 2, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 33 },
{ 17, 0, 0, 2, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 33 },
+ { 18, 0, 0, 2, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 33 },
{ 18, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 33 },
{ 0, 17, 228, 5, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 33 },
{ 18, 0, 0, 2, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 33 },
@@ -7245,7 +7592,7 @@ static const Properties uc_properties[] = {
{ 18, 0, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 62 },
{ 18, 0, 0, 0, -1, 0, 9, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 62 },
{ 0, 17, 7, 5, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 62 },
- { 1, 0, 0, 0, -1, 0, 9, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 62 },
+ { 1, 0, 0, 0, -1, 0, 9, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 62 },
{ 1, 0, 0, 0, -1, 0, 9, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 62 },
{ 1, 0, 9, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 62 },
{ 3, 0, 0, 0, 0, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 62 },
@@ -7323,7 +7670,8 @@ static const Properties uc_properties[] = {
{ 15, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, -6243}, {0, -6243}, {0, -6211} }, 0, 10, 12, 6, 5 },
{ 15, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, -6236}, {0, -6236}, {0, -6204} }, 0, 10, 12, 6, 5 },
{ 15, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, -6181}, {0, -6181}, {0, -6180} }, 0, 10, 12, 6, 5 },
- { 15, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {1, 199}, {1, 199}, {1, 711} }, 0, 10, 12, 6, 5 },
+ { 15, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {1, 201}, {1, 201}, {1, 719} }, 0, 10, 12, 6, 5 },
+ { 14, 0, 0, 0, -1, 0, 20, 0, { {0, -3008}, {0, 0}, {0, 0}, {0, -3008} }, 0, 10, 12, 8, 25 },
{ 25, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 67 },
{ 0, 17, 230, 5, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1 },
{ 25, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
@@ -7331,18 +7679,19 @@ static const Properties uc_properties[] = {
{ 0, 17, 220, 5, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1 },
{ 1, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 2 },
{ 18, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 2 },
- { 1, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 2 },
- { 0, 17, 230, 5, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1 },
{ 18, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 2 },
+ { 0, 17, 230, 5, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1 },
{ 1, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 2 },
+ { 18, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 2 },
{ 15, 0, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 4 },
{ 15, 0, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 5 },
{ 17, 0, 0, 0, -1, 0, 7, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 17, 0, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 17, 0, 0, 0, -1, 0, 7, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 4 },
{ 17, 0, 0, 0, -1, 0, 8, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 5 },
- { 15, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {1, 201}, {1, 201}, {0, 0} }, 0, 10, 12, 6, 3 },
+ { 15, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {1, 203}, {1, 203}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 15, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 3814}, {0, 3814}, {0, 0} }, 0, 10, 12, 6, 3 },
+ { 15, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {1, 205}, {1, 205}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 17, 0, 0, 0, -1, 0, 8, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 17, 0, 0, 0, -1, 0, 8, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 4 },
{ 0, 17, 230, 5, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1 },
@@ -7357,11 +7706,11 @@ static const Properties uc_properties[] = {
{ 0, 17, 220, 5, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1 },
{ 0, 17, 230, 5, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1 },
{ 0, 17, 233, 5, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 506}, {1, 506}, {0, 0} }, 0, 10, 12, 6, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 509}, {1, 509}, {0, 0} }, 0, 10, 12, 6, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 512}, {1, 512}, {0, 0} }, 0, 10, 12, 6, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 515}, {1, 515}, {0, 0} }, 0, 10, 12, 6, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 518}, {1, 518}, {0, 0} }, 0, 10, 12, 6, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 514}, {1, 514}, {0, 0} }, 0, 10, 12, 6, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 517}, {1, 517}, {0, 0} }, 0, 10, 12, 6, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 520}, {1, 520}, {0, 0} }, 0, 10, 12, 6, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 523}, {1, 523}, {0, 0} }, 0, 10, 12, 6, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 526}, {1, 526}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 15, 0, 0, 0, -1, 0, 2, 81, { {0, 0}, {0, -59}, {0, -59}, {0, -58} }, 0, 10, 12, 6, 3 },
{ 15, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 14, 0, 0, 0, -1, 0, 10, 0, { {0, -7615}, {0, 0}, {0, 0}, {0, -7615} }, 0, 10, 12, 7, 3 },
@@ -7369,10 +7718,10 @@ static const Properties uc_properties[] = {
{ 15, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, 8}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
{ 14, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {0, 0}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 521}, {1, 521}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 524}, {1, 524}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 528}, {1, 528}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 529}, {1, 529}, {0, 0} }, 0, 10, 12, 6, 4 },
{ 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 532}, {1, 532}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 536}, {1, 536}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 540}, {1, 540}, {0, 0} }, 0, 10, 12, 6, 4 },
{ 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, 74}, {0, 74}, {0, 0} }, 0, 10, 12, 6, 4 },
{ 15, 0, 0, 0, -1, 0, 1, 85, { {0, 0}, {0, 74}, {0, 74}, {0, 0} }, 0, 10, 12, 6, 4 },
{ 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, 86}, {0, 86}, {0, 0} }, 0, 10, 12, 6, 4 },
@@ -7385,101 +7734,101 @@ static const Properties uc_properties[] = {
{ 15, 0, 0, 0, -1, 0, 1, 85, { {0, 0}, {0, 112}, {0, 112}, {0, 0} }, 0, 10, 12, 6, 4 },
{ 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, 126}, {0, 126}, {0, 0} }, 0, 10, 12, 6, 4 },
{ 15, 0, 0, 0, -1, 0, 1, 85, { {0, 0}, {0, 126}, {0, 126}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 570}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 573}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 576}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 579}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 582}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 585}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 588}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 591}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 570}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 573}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 576}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 579}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 582}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 585}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 588}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 591}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 594}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 597}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 600}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 603}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 606}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 609}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 612}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 615}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 594}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 597}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 600}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 603}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 606}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 609}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 612}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 615}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 618}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 621}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 624}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 627}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 630}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 633}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 636}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 639}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 618}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 621}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 624}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 627}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 630}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 633}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 636}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 639}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 654}, {1, 651}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 642}, {0, 9}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 660}, {1, 657}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 536}, {1, 536}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 691}, {1, 687}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 578}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 581}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 584}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 587}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 590}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 593}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 596}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 599}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 578}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 581}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 584}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 587}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 590}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 593}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 596}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 599}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 602}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 605}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 608}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 611}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 614}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 617}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 620}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 623}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 602}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 605}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 608}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 611}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 614}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 617}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 620}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 623}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 626}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 629}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 632}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 635}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 638}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 641}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 644}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 647}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 626}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 629}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 632}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 635}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 638}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 641}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 644}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 647}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 662}, {1, 659}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 650}, {0, 9}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 668}, {1, 665}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 544}, {1, 544}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 699}, {1, 695}, {0, 0} }, 0, 10, 12, 6, 4 },
{ 14, 0, 0, 0, -1, 0, 1, 17, { {0, -74}, {0, 0}, {0, 0}, {0, -74} }, 0, 10, 12, 7, 4 },
{ 14, 0, 0, 0, -1, 0, 1, 85, { {0, -74}, {0, 0}, {0, 0}, {0, -74} }, 0, 10, 12, 7, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -9}, {1, 642}, {0, 0}, {0, -9} }, 0, 10, 12, 7, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -9}, {1, 650}, {0, 0}, {0, -9} }, 0, 10, 12, 7, 4 },
{ 15, 0, 0, 0, -1, 0, 1, 85, { {0, 0}, {0, -7205}, {0, -7205}, {0, -7173} }, 0, 10, 12, 6, 4 },
{ 28, 10, 0, 0, -1, 0, 1, 81, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 666}, {1, 663}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 645}, {0, 9}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 672}, {1, 669}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 539}, {1, 539}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 699}, {1, 695}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 674}, {1, 671}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 653}, {0, 9}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 680}, {1, 677}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 547}, {1, 547}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 707}, {1, 703}, {0, 0} }, 0, 10, 12, 6, 4 },
{ 14, 0, 0, 0, -1, 0, 1, 17, { {0, -86}, {0, 0}, {0, 0}, {0, -86} }, 0, 10, 12, 7, 4 },
{ 14, 0, 0, 0, -1, 0, 1, 85, { {0, -86}, {0, 0}, {0, 0}, {0, -86} }, 0, 10, 12, 7, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -9}, {1, 645}, {0, 0}, {0, -9} }, 0, 10, 12, 7, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 542}, {1, 542}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 85, { {0, 0}, {1, 495}, {1, 495}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 546}, {1, 546}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 549}, {1, 549}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -9}, {1, 653}, {0, 0}, {0, -9} }, 0, 10, 12, 7, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 550}, {1, 550}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 85, { {0, 0}, {1, 503}, {1, 503}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 554}, {1, 554}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 557}, {1, 557}, {0, 0} }, 0, 10, 12, 6, 4 },
{ 14, 0, 0, 0, -1, 0, 1, 17, { {0, -100}, {0, 0}, {0, 0}, {0, -100} }, 0, 10, 12, 7, 4 },
{ 14, 0, 0, 0, -1, 0, 1, 85, { {0, -100}, {0, 0}, {0, 0}, {0, -100} }, 0, 10, 12, 7, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 553}, {1, 553}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 85, { {0, 0}, {1, 499}, {1, 499}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 557}, {1, 557}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 561}, {1, 561}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 85, { {0, 0}, {1, 507}, {1, 507}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 565}, {1, 565}, {0, 0} }, 0, 10, 12, 6, 4 },
{ 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, 7}, {0, 7}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 560}, {1, 560}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 563}, {1, 563}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 568}, {1, 568}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 571}, {1, 571}, {0, 0} }, 0, 10, 12, 6, 4 },
{ 14, 0, 0, 0, -1, 0, 1, 17, { {0, -112}, {0, 0}, {0, 0}, {0, -112} }, 0, 10, 12, 7, 4 },
{ 14, 0, 0, 0, -1, 0, 1, 85, { {0, -112}, {0, 0}, {0, 0}, {0, -112} }, 0, 10, 12, 7, 4 },
{ 14, 0, 0, 0, -1, 0, 1, 17, { {0, -7}, {0, 0}, {0, 0}, {0, -7} }, 0, 10, 12, 7, 4 },
{ 28, 10, 0, 0, -1, 0, 1, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 678}, {1, 675}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 648}, {0, 9}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 684}, {1, 681}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 567}, {1, 567}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 707}, {1, 703}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 686}, {1, 683}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 656}, {0, 9}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 692}, {1, 689}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 575}, {1, 575}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 715}, {1, 711}, {0, 0} }, 0, 10, 12, 6, 4 },
{ 14, 0, 0, 0, -1, 0, 1, 17, { {0, -128}, {0, 0}, {0, 0}, {0, -128} }, 0, 10, 12, 7, 4 },
{ 14, 0, 0, 0, -1, 0, 1, 85, { {0, -128}, {0, 0}, {0, 0}, {0, -128} }, 0, 10, 12, 7, 4 },
{ 14, 0, 0, 0, -1, 0, 1, 17, { {0, -126}, {0, 0}, {0, 0}, {0, -126} }, 0, 10, 12, 7, 4 },
{ 14, 0, 0, 0, -1, 0, 1, 85, { {0, -126}, {0, 0}, {0, 0}, {0, -126} }, 0, 10, 12, 7, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -9}, {1, 648}, {0, 0}, {0, -9} }, 0, 10, 12, 7, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -9}, {1, 656}, {0, 0}, {0, -9} }, 0, 10, 12, 7, 4 },
{ 28, 10, 0, 0, -1, 0, 1, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 18, 0, 4 },
- { 6, 9, 0, 0, -1, 0, 1, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 5, 2 },
- { 6, 9, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 5, 2 },
+ { 6, 9, 0, 0, -1, 0, 1, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 22, 17, 5, 2 },
+ { 6, 9, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 22, 17, 5, 2 },
{ 6, 9, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 4, 5, 2 },
{ 10, 18, 0, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 0, 20, 4, 2 },
{ 10, 18, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1 },
@@ -7527,7 +7876,7 @@ static const Properties uc_properties[] = {
{ 25, 10, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 25, 10, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 2 },
{ 25, 10, 0, 0, -1, 0, 6, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
- { 6, 9, 0, 0, -1, 0, 6, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 5, 2 },
+ { 6, 9, 0, 0, -1, 0, 6, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 22, 17, 5, 2 },
{ 10, 18, 0, 5, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 22, 4, 2 },
{ 10, 18, 0, 5, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 12, 4, 2 },
{ 10, 18, 0, 5, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 12, 4, 2 },
@@ -7577,8 +7926,8 @@ static const Properties uc_properties[] = {
{ 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 2 },
{ 29, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 9, 0, 2 },
{ 14, 0, 0, 0, -1, 0, 1, 85, { {0, -7517}, {0, 0}, {0, 0}, {0, -7517} }, 0, 10, 12, 7, 4 },
- { 14, 0, 0, 0, -1, 0, 1, 85, { {1, 203}, {0, 0}, {0, 0}, {1, 203} }, 0, 10, 12, 7, 3 },
- { 14, 0, 0, 0, -1, 0, 1, 85, { {1, 205}, {0, 0}, {0, 0}, {1, 205} }, 0, 10, 12, 7, 3 },
+ { 14, 0, 0, 0, -1, 0, 1, 85, { {1, 207}, {0, 0}, {0, 0}, {1, 207} }, 0, 10, 12, 7, 3 },
+ { 14, 0, 0, 0, -1, 0, 1, 85, { {1, 209}, {0, 0}, {0, 0}, {1, 209} }, 0, 10, 12, 7, 3 },
{ 29, 4, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 14, 0, 0, 0, -1, 0, 1, 0, { {0, 28}, {0, 0}, {0, 0}, {0, 28} }, 0, 10, 12, 7, 3 },
{ 18, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 2 },
@@ -7607,15 +7956,23 @@ static const Properties uc_properties[] = {
{ 26, 10, 0, 0, -1, -3, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 26, 10, 0, 0, -1, -3, 1, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 26, 10, 0, 0, -1, 2016, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
+ { 26, 10, 0, 0, -1, 2527, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
+ { 26, 10, 0, 0, -1, 1923, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
+ { 26, 10, 0, 0, -1, 1914, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
+ { 26, 10, 0, 0, -1, 1918, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
+ { 26, 10, 0, 0, -1, 2250, 1, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 26, 10, 0, 0, -1, 1, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 26, 10, 0, 0, -1, -1, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 26, 10, 0, 0, -1, 138, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
+ { 26, 10, 0, 0, -1, 7, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
+ { 26, 10, 0, 0, -1, -7, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 26, 10, 0, 0, -1, 1, 1, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 26, 10, 0, 0, -1, -1, 1, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 26, 10, 0, 0, -1, 1824, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 26, 10, 0, 0, -1, 2104, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 26, 10, 0, 0, -1, 2108, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 26, 10, 0, 0, -1, 2106, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
+ { 26, 10, 0, 0, -1, 1316, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 26, 10, 0, 0, -1, -138, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 26, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 15, 0, 2 },
{ 26, 10, 0, 0, -1, 8, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
@@ -7662,17 +8019,14 @@ static const Properties uc_properties[] = {
{ 5, 10, 0, 0, 0, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 29, 10, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
{ 29, 10, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
- { 29, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 18, 30, 0, 2 },
- { 29, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 16, 20, 12, 0, 2 },
- { 29, 10, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 16, 20, 12, 0, 2 },
+ { 29, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 30, 0, 2 },
{ 29, 10, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 29, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 29, 10, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
{ 29, 10, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
- { 29, 10, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 18, 30, 0, 2 },
+ { 29, 10, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 30, 0, 2 },
{ 29, 10, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
- { 29, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 16, 20, 14, 0, 2 },
- { 29, 10, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 18, 30, 0, 2 },
+ { 29, 10, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 30, 0, 2 },
{ 29, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 3, 13, 2 },
{ 29, 10, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 3, 13, 2 },
{ 29, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 6, 0, 2 },
@@ -7701,6 +8055,7 @@ static const Properties uc_properties[] = {
{ 26, 10, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 26, 10, 0, 0, -1, 1, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 26, 10, 0, 0, -1, -1, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
+ { 26, 10, 0, 0, -1, -1316, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 21, 10, 0, 0, -1, 1, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 2 },
{ 22, 10, 0, 0, -1, -1, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 2 },
{ 29, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 54 },
@@ -7708,27 +8063,34 @@ static const Properties uc_properties[] = {
{ 22, 10, 0, 0, -1, 1, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 2 },
{ 21, 10, 0, 0, -1, -1, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 2 },
{ 22, 10, 0, 0, -1, -3, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 2 },
+ { 26, 10, 0, 0, -1, -1914, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
+ { 26, 10, 0, 0, -1, -1918, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
+ { 26, 10, 0, 0, -1, -1923, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 26, 10, 0, 0, -1, -1824, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 26, 10, 0, 0, -1, -2016, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 26, 10, 0, 0, -1, 0, 6, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 26, 10, 0, 0, -1, -2104, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 26, 10, 0, 0, -1, -2106, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 26, 10, 0, 0, -1, -2108, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
+ { 26, 10, 0, 0, -1, -2250, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
+ { 29, 10, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
+ { 29, 10, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
+ { 29, 10, 0, 0, -1, -2527, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 14, 0, 0, 0, -1, 0, 8, 0, { {0, 48}, {0, 0}, {0, 0}, {0, 48} }, 0, 10, 12, 7, 57 },
{ 15, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, -48}, {0, -48}, {0, 0} }, 0, 10, 12, 6, 57 },
- { 14, 0, 0, 0, -1, 0, 9, 0, { {1, 207}, {0, 0}, {0, 0}, {1, 207} }, 0, 10, 12, 7, 3 },
+ { 14, 0, 0, 0, -1, 0, 9, 0, { {1, 211}, {0, 0}, {0, 0}, {1, 211} }, 0, 10, 12, 7, 3 },
{ 14, 0, 0, 0, -1, 0, 9, 0, { {0, -3814}, {0, 0}, {0, 0}, {0, -3814} }, 0, 10, 12, 7, 3 },
- { 14, 0, 0, 0, -1, 0, 9, 0, { {1, 209}, {0, 0}, {0, 0}, {1, 209} }, 0, 10, 12, 7, 3 },
- { 15, 0, 0, 0, -1, 0, 9, 0, { {0, 0}, {1, 211}, {1, 211}, {0, 0} }, 0, 10, 12, 6, 3 },
- { 15, 0, 0, 0, -1, 0, 9, 0, { {0, 0}, {1, 213}, {1, 213}, {0, 0} }, 0, 10, 12, 6, 3 },
- { 14, 0, 0, 0, -1, 0, 10, 0, { {1, 215}, {0, 0}, {0, 0}, {1, 215} }, 0, 10, 12, 7, 3 },
- { 14, 0, 0, 0, -1, 0, 10, 0, { {1, 217}, {0, 0}, {0, 0}, {1, 217} }, 0, 10, 12, 7, 3 },
+ { 14, 0, 0, 0, -1, 0, 9, 0, { {1, 213}, {0, 0}, {0, 0}, {1, 213} }, 0, 10, 12, 7, 3 },
+ { 15, 0, 0, 0, -1, 0, 9, 0, { {0, 0}, {1, 215}, {1, 215}, {0, 0} }, 0, 10, 12, 6, 3 },
+ { 15, 0, 0, 0, -1, 0, 9, 0, { {0, 0}, {1, 217}, {1, 217}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 14, 0, 0, 0, -1, 0, 10, 0, { {1, 219}, {0, 0}, {0, 0}, {1, 219} }, 0, 10, 12, 7, 3 },
- { 14, 0, 0, 0, -1, 0, 11, 0, { {1, 221}, {0, 0}, {0, 0}, {1, 221} }, 0, 10, 12, 7, 3 },
+ { 14, 0, 0, 0, -1, 0, 10, 0, { {1, 221}, {0, 0}, {0, 0}, {1, 221} }, 0, 10, 12, 7, 3 },
+ { 14, 0, 0, 0, -1, 0, 10, 0, { {1, 223}, {0, 0}, {0, 0}, {1, 223} }, 0, 10, 12, 7, 3 },
+ { 14, 0, 0, 0, -1, 0, 11, 0, { {1, 225}, {0, 0}, {0, 0}, {1, 225} }, 0, 10, 12, 7, 3 },
{ 15, 0, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 17, 0, 0, 0, -1, 0, 10, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3 },
- { 14, 0, 0, 0, -1, 0, 11, 0, { {1, 223}, {0, 0}, {0, 0}, {1, 223} }, 0, 10, 12, 7, 3 },
- { 14, 0, 0, 0, -1, 0, 11, 0, { {1, 225}, {0, 0}, {0, 0}, {1, 225} }, 0, 10, 12, 7, 3 },
+ { 14, 0, 0, 0, -1, 0, 11, 0, { {1, 227}, {0, 0}, {0, 0}, {1, 227} }, 0, 10, 12, 7, 3 },
+ { 14, 0, 0, 0, -1, 0, 11, 0, { {1, 229}, {0, 0}, {0, 0}, {1, 229} }, 0, 10, 12, 7, 3 },
{ 14, 0, 0, 0, -1, 0, 8, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 46 },
{ 15, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 46 },
{ 15, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 46 },
@@ -7771,6 +8133,9 @@ static const Properties uc_properties[] = {
{ 21, 10, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 2 },
{ 25, 10, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 2 },
{ 25, 10, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 2 },
+ { 25, 10, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 2 },
+ { 25, 10, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
+ { 25, 10, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 2 },
{ 29, 10, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 37 },
{ 29, 10, 0, 0, -1, 0, 4, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 37 },
{ 29, 10, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
@@ -7815,6 +8180,7 @@ static const Properties uc_properties[] = {
{ 18, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 36 },
{ 18, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 36 },
{ 18, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 36 },
+ { 18, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 36 },
{ 18, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 26 },
{ 29, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
{ 5, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
@@ -7830,6 +8196,7 @@ static const Properties uc_properties[] = {
{ 5, 10, 0, 0, -1, 0, 6, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
{ 29, 10, 0, 0, -1, 0, 8, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 26 },
{ 29, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 14, 0, 35 },
+ { 29, 0, 0, 0, -1, 0, 22, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
{ 18, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 37 },
{ 13, 0, 0, 0, -1, 0, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0 },
{ 18, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 37 },
@@ -7839,6 +8206,7 @@ static const Properties uc_properties[] = {
{ 18, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 37 },
{ 18, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 37 },
{ 18, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 37 },
+ { 18, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 37 },
{ 18, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 38 },
{ 17, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 5, 8, 38 },
{ 29, 10, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 38 },
@@ -7878,29 +8246,38 @@ static const Properties uc_properties[] = {
{ 28, 10, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 17, 10, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 2 },
{ 28, 10, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 0, 2 },
- { 14, 0, 0, 0, -1, 0, 10, 0, { {1, 227}, {0, 0}, {0, 0}, {1, 227} }, 0, 10, 12, 7, 3 },
+ { 14, 0, 0, 0, -1, 0, 10, 0, { {1, 231}, {0, 0}, {0, 0}, {1, 231} }, 0, 10, 12, 7, 3 },
{ 28, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 0, 2 },
- { 14, 0, 0, 0, -1, 0, 12, 0, { {1, 229}, {0, 0}, {0, 0}, {1, 229} }, 0, 10, 12, 7, 3 },
+ { 14, 0, 0, 0, -1, 0, 12, 0, { {1, 233}, {0, 0}, {0, 0}, {1, 233} }, 0, 10, 12, 7, 3 },
{ 15, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 18, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 3 },
{ 14, 0, 0, 0, -1, 0, 12, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3 },
{ 15, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 14, 0, 0, 0, -1, 0, 13, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3 },
{ 15, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 3 },
+ { 15, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 48}, {0, 48}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 15, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 14, 0, 0, 0, -1, 0, 16, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3 },
{ 15, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 3 },
- { 14, 0, 0, 0, -1, 0, 13, 0, { {1, 231}, {0, 0}, {0, 0}, {1, 231} }, 0, 10, 12, 7, 3 },
- { 14, 0, 0, 0, -1, 0, 16, 0, { {1, 233}, {0, 0}, {0, 0}, {1, 233} }, 0, 10, 12, 7, 3 },
- { 14, 0, 0, 0, -1, 0, 16, 0, { {1, 235}, {0, 0}, {0, 0}, {1, 235} }, 0, 10, 12, 7, 3 },
+ { 14, 0, 0, 0, -1, 0, 13, 0, { {1, 235}, {0, 0}, {0, 0}, {1, 235} }, 0, 10, 12, 7, 3 },
{ 14, 0, 0, 0, -1, 0, 16, 0, { {1, 237}, {0, 0}, {0, 0}, {1, 237} }, 0, 10, 12, 7, 3 },
- { 14, 0, 0, 0, -1, 0, 18, 0, { {1, 239}, {0, 0}, {0, 0}, {1, 239} }, 0, 10, 12, 7, 3 },
+ { 14, 0, 0, 0, -1, 0, 16, 0, { {1, 239}, {0, 0}, {0, 0}, {1, 239} }, 0, 10, 12, 7, 3 },
{ 14, 0, 0, 0, -1, 0, 16, 0, { {1, 241}, {0, 0}, {0, 0}, {1, 241} }, 0, 10, 12, 7, 3 },
- { 14, 0, 0, 0, -1, 0, 16, 0, { {1, 243}, {0, 0}, {0, 0}, {1, 243} }, 0, 10, 12, 7, 3 },
- { 14, 0, 0, 0, -1, 0, 17, 0, { {1, 245}, {0, 0}, {0, 0}, {1, 245} }, 0, 10, 12, 7, 3 },
+ { 14, 0, 0, 0, -1, 0, 18, 0, { {1, 243}, {0, 0}, {0, 0}, {1, 243} }, 0, 10, 12, 7, 3 },
+ { 15, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3 },
+ { 14, 0, 0, 0, -1, 0, 16, 0, { {1, 245}, {0, 0}, {0, 0}, {1, 245} }, 0, 10, 12, 7, 3 },
+ { 14, 0, 0, 0, -1, 0, 16, 0, { {1, 247}, {0, 0}, {0, 0}, {1, 247} }, 0, 10, 12, 7, 3 },
+ { 14, 0, 0, 0, -1, 0, 17, 0, { {1, 249}, {0, 0}, {0, 0}, {1, 249} }, 0, 10, 12, 7, 3 },
{ 14, 0, 0, 0, -1, 0, 17, 0, { {0, 928}, {0, 0}, {0, 0}, {0, 928} }, 0, 10, 12, 7, 3 },
{ 14, 0, 0, 0, -1, 0, 17, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3 },
{ 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 3 },
+ { 14, 0, 0, 0, -1, 0, 20, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3 },
+ { 15, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 3 },
+ { 14, 0, 0, 0, -1, 0, 21, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3 },
+ { 15, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 3 },
+ { 14, 0, 0, 0, -1, 0, 21, 0, { {0, -48}, {0, 0}, {0, 0}, {0, -48} }, 0, 10, 12, 7, 3 },
+ { 14, 0, 0, 0, -1, 0, 21, 0, { {1, 251}, {0, 0}, {0, 0}, {1, 251} }, 0, 10, 12, 7, 3 },
+ { 14, 0, 0, 0, -1, 0, 21, 0, { {1, 253}, {0, 0}, {0, 0}, {1, 253} }, 0, 10, 12, 7, 3 },
{ 18, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 3 },
{ 17, 0, 0, 0, -1, 0, 13, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 18, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 3 },
@@ -7934,6 +8311,8 @@ static const Properties uc_properties[] = {
{ 25, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 11 },
{ 25, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 18, 0, 11 },
{ 18, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 11 },
+ { 18, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 11 },
+ { 0, 17, 0, 5, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 11 },
{ 3, 0, 0, 0, 0, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 72 },
{ 3, 0, 0, 0, 1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 72 },
{ 3, 0, 0, 0, 2, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 72 },
@@ -8022,10 +8401,7 @@ static const Properties uc_properties[] = {
{ 17, 0, 0, 0, -1, 0, 16, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 15, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 247}, {1, 247}, {1, 247} }, 0, 10, 12, 6, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 249}, {1, 249}, {1, 249} }, 0, 10, 12, 6, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 251}, {1, 251}, {1, 251} }, 0, 10, 12, 6, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 253}, {1, 253}, {1, 253} }, 0, 10, 12, 6, 28 },
+ { 15, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 255}, {1, 255}, {1, 255} }, 0, 10, 12, 6, 28 },
{ 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 257}, {1, 257}, {1, 257} }, 0, 10, 12, 6, 28 },
{ 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 259}, {1, 259}, {1, 259} }, 0, 10, 12, 6, 28 },
@@ -8102,6 +8478,10 @@ static const Properties uc_properties[] = {
{ 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 401}, {1, 401}, {1, 401} }, 0, 10, 12, 6, 28 },
{ 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 403}, {1, 403}, {1, 403} }, 0, 10, 12, 6, 28 },
{ 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 405}, {1, 405}, {1, 405} }, 0, 10, 12, 6, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 407}, {1, 407}, {1, 407} }, 0, 10, 12, 6, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 409}, {1, 409}, {1, 409} }, 0, 10, 12, 6, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 411}, {1, 411}, {1, 411} }, 0, 10, 12, 6, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 413}, {1, 413}, {1, 413} }, 0, 10, 12, 6, 28 },
{ 18, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 86 },
{ 1, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 86 },
{ 0, 17, 0, 5, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 86 },
@@ -8119,24 +8499,24 @@ static const Properties uc_properties[] = {
{ 3, 0, 0, 0, 9, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 86 },
{ 18, 0, 0, 0, -1, 0, 2, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 12, 10, 23, 8, 26 },
{ 18, 0, 0, 0, -1, 0, 2, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 13, 10, 24, 8, 26 },
- { 11, 0, 0, 0, -1, 0, 2, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 0, 34, 0, 0 },
+ { 11, 0, 0, 0, -1, 0, 2, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 34, 0, 0 },
{ 12, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0 },
{ 18, 0, 0, 0, -1, 0, 1, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 37 },
{ 18, 0, 0, 0, -1, 0, 13, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 37 },
{ 18, 0, 0, 0, -1, 0, 6, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 37 },
{ 18, 0, 0, 0, -1, 0, 11, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 37 },
{ 18, 0, 0, 0, -1, 0, 8, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 37 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 419}, {1, 416}, {0, 0} }, 0, 10, 12, 6, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 425}, {1, 422}, {0, 0} }, 0, 10, 12, 6, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 431}, {1, 428}, {0, 0} }, 0, 10, 12, 6, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 438}, {1, 434}, {0, 0} }, 0, 10, 12, 6, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 427}, {1, 424}, {0, 0} }, 0, 10, 12, 6, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 433}, {1, 430}, {0, 0} }, 0, 10, 12, 6, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 439}, {1, 436}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 446}, {1, 442}, {0, 0} }, 0, 10, 12, 6, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 453}, {1, 450}, {0, 0} }, 0, 10, 12, 6, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 465}, {1, 462}, {0, 0} }, 0, 10, 12, 6, 6 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 471}, {1, 468}, {0, 0} }, 0, 10, 12, 6, 6 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 477}, {1, 474}, {0, 0} }, 0, 10, 12, 6, 6 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 483}, {1, 480}, {0, 0} }, 0, 10, 12, 6, 6 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 489}, {1, 486}, {0, 0} }, 0, 10, 12, 6, 6 },
+ { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 454}, {1, 450}, {0, 0} }, 0, 10, 12, 6, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 461}, {1, 458}, {0, 0} }, 0, 10, 12, 6, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 473}, {1, 470}, {0, 0} }, 0, 10, 12, 6, 6 },
+ { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 479}, {1, 476}, {0, 0} }, 0, 10, 12, 6, 6 },
+ { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 485}, {1, 482}, {0, 0} }, 0, 10, 12, 6, 6 },
+ { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 491}, {1, 488}, {0, 0} }, 0, 10, 12, 6, 6 },
+ { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 497}, {1, 494}, {0, 0} }, 0, 10, 12, 6, 6 },
{ 18, 1, 0, 0, -1, 0, 4, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 9, 13, 8, 7 },
{ 0, 17, 26, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 7 },
{ 18, 1, 0, 0, -1, 0, 1, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 9, 13, 8, 7 },
@@ -8179,16 +8559,16 @@ static const Properties uc_properties[] = {
{ 10, 18, 0, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 22, 4, 2 },
{ 25, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 13, 14, 0, 2 },
{ 25, 6, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
- { 3, 2, 0, 0, 0, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
- { 3, 2, 0, 0, 1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
- { 3, 2, 0, 0, 2, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
- { 3, 2, 0, 0, 3, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
- { 3, 2, 0, 0, 4, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
- { 3, 2, 0, 0, 5, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
- { 3, 2, 0, 0, 6, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
- { 3, 2, 0, 0, 7, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
- { 3, 2, 0, 0, 8, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
- { 3, 2, 0, 0, 9, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
+ { 3, 2, 0, 0, 0, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 2 },
+ { 3, 2, 0, 0, 1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 2 },
+ { 3, 2, 0, 0, 2, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 2 },
+ { 3, 2, 0, 0, 3, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 2 },
+ { 3, 2, 0, 0, 4, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 2 },
+ { 3, 2, 0, 0, 5, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 2 },
+ { 3, 2, 0, 0, 6, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 2 },
+ { 3, 2, 0, 0, 7, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 2 },
+ { 3, 2, 0, 0, 8, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 2 },
+ { 3, 2, 0, 0, 9, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 2 },
{ 26, 10, 0, 0, -1, 2, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
{ 26, 10, 0, 0, -1, -2, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
{ 14, 0, 0, 0, -1, 0, 1, 80, { {0, 32}, {0, 0}, {0, 0}, {0, 32} }, 0, 10, 14, 7, 3 },
@@ -8282,6 +8662,7 @@ static const Properties uc_properties[] = {
{ 0, 17, 0, 5, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 61 },
{ 0, 17, 220, 5, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 61 },
{ 0, 17, 230, 5, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 61 },
+ { 18, 1, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 61 },
{ 0, 17, 1, 5, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 61 },
{ 0, 17, 9, 5, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 61 },
{ 5, 1, 0, 0, 1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 61 },
@@ -8289,6 +8670,7 @@ static const Properties uc_properties[] = {
{ 5, 1, 0, 0, 3, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 61 },
{ 5, 1, 0, 0, 4, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 61 },
{ 5, 1, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 61 },
+ { 5, 1, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 61 },
{ 25, 1, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 61 },
{ 25, 1, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 61 },
{ 25, 1, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 61 },
@@ -8324,6 +8706,20 @@ static const Properties uc_properties[] = {
{ 14, 1, 0, 0, -1, 0, 17, 0, { {0, 64}, {0, 0}, {0, 0}, {0, 64} }, 0, 10, 12, 7, 130 },
{ 15, 1, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, -64}, {0, -64}, {0, 0} }, 0, 10, 12, 6, 130 },
{ 5, 1, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 130 },
+ { 18, 13, 0, 4, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 144 },
+ { 18, 13, 0, 2, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 144 },
+ { 18, 13, 0, 3, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 144 },
+ { 0, 17, 230, 5, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 144 },
+ { 3, 5, 0, 0, 0, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 144 },
+ { 3, 5, 0, 0, 1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 144 },
+ { 3, 5, 0, 0, 2, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 144 },
+ { 3, 5, 0, 0, 3, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 144 },
+ { 3, 5, 0, 0, 4, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 144 },
+ { 3, 5, 0, 0, 5, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 144 },
+ { 3, 5, 0, 0, 6, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 144 },
+ { 3, 5, 0, 0, 7, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 144 },
+ { 3, 5, 0, 0, 8, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 144 },
+ { 3, 5, 0, 0, 9, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 144 },
{ 5, 5, 0, 0, 1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 8 },
{ 5, 5, 0, 0, 2, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 8 },
{ 5, 5, 0, 0, 3, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 8 },
@@ -8334,6 +8730,17 @@ static const Properties uc_properties[] = {
{ 5, 5, 0, 0, 8, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 8 },
{ 5, 5, 0, 0, 9, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 8 },
{ 5, 5, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 8 },
+ { 18, 1, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 147 },
+ { 5, 1, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 147 },
+ { 18, 13, 0, 2, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 148 },
+ { 18, 13, 0, 3, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 148 },
+ { 18, 13, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 148 },
+ { 0, 17, 220, 5, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 148 },
+ { 0, 17, 230, 5, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 148 },
+ { 5, 13, 0, 2, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 148 },
+ { 5, 13, 0, 3, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 148 },
+ { 25, 13, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 12, 148 },
+ { 18, 1, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 149 },
{ 1, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 94 },
{ 0, 17, 0, 5, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 94 },
{ 18, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 94 },
@@ -8368,8 +8775,9 @@ static const Properties uc_properties[] = {
{ 0, 17, 9, 5, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 92 },
{ 0, 17, 7, 5, -1, 0, 11, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 92 },
{ 25, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 92 },
- { 10, 0, 0, 5, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 7, 6, 12, 4, 92 },
+ { 10, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 7, 6, 12, 4, 92 },
{ 25, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 92 },
+ { 10, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 7, 6, 12, 4, 92 },
{ 18, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 101 },
{ 3, 0, 0, 0, 0, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 101 },
{ 3, 0, 0, 0, 1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 101 },
@@ -8400,6 +8808,8 @@ static const Properties uc_properties[] = {
{ 3, 0, 0, 0, 9, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 96 },
{ 25, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 96 },
{ 25, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 96 },
+ { 18, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 96 },
+ { 1, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 96 },
{ 18, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 111 },
{ 0, 17, 7, 5, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 111 },
{ 25, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 111 },
@@ -8412,9 +8822,8 @@ static const Properties uc_properties[] = {
{ 25, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 100 },
{ 25, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 100 },
{ 25, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 100 },
- { 25, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 100 },
- { 0, 17, 7, 5, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 100 },
{ 0, 17, 0, 5, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 100 },
+ { 0, 17, 7, 5, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 100 },
{ 25, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 12, 100 },
{ 3, 0, 0, 0, 0, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 100 },
{ 3, 0, 0, 0, 1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 100 },
@@ -8461,6 +8870,7 @@ static const Properties uc_properties[] = {
{ 0, 17, 0, 5, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 107 },
{ 1, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 107 },
{ 18, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 107 },
+ { 0, 17, 7, 5, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1 },
{ 0, 17, 7, 5, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 107 },
{ 1, 0, 0, 0, -1, 0, 16, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 107 },
{ 1, 0, 0, 0, -1, 0, 16, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 107 },
@@ -8485,6 +8895,8 @@ static const Properties uc_properties[] = {
{ 3, 0, 0, 0, 7, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 135 },
{ 3, 0, 0, 0, 8, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 135 },
{ 3, 0, 0, 0, 9, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 135 },
+ { 0, 17, 230, 5, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 135 },
+ { 18, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 135 },
{ 18, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 124 },
{ 1, 0, 0, 0, -1, 0, 16, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 124 },
{ 1, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 124 },
@@ -8540,6 +8952,7 @@ static const Properties uc_properties[] = {
{ 1, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 102 },
{ 1, 0, 9, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 102 },
{ 0, 17, 7, 5, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 102 },
+ { 18, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 102 },
{ 3, 0, 0, 0, 0, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 102 },
{ 3, 0, 0, 0, 1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 102 },
{ 3, 0, 0, 0, 2, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 102 },
@@ -8551,6 +8964,7 @@ static const Properties uc_properties[] = {
{ 3, 0, 0, 0, 8, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 102 },
{ 3, 0, 0, 0, 9, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 102 },
{ 18, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 8, 126 },
+ { 18, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 8, 126 },
{ 0, 17, 0, 5, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 33, 4, 126 },
{ 1, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 33, 4, 126 },
{ 0, 17, 9, 5, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 33, 4, 126 },
@@ -8567,6 +8981,12 @@ static const Properties uc_properties[] = {
{ 5, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 0, 126 },
{ 25, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 126 },
{ 29, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 0, 126 },
+ { 18, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 142 },
+ { 1, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 142 },
+ { 0, 17, 0, 5, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 142 },
+ { 0, 17, 9, 5, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 142 },
+ { 0, 17, 7, 5, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 142 },
+ { 25, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 142 },
{ 14, 0, 0, 0, -1, 0, 16, 0, { {0, 32}, {0, 0}, {0, 0}, {0, 32} }, 0, 10, 12, 7, 125 },
{ 15, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, -32}, {0, -32}, {0, 0} }, 0, 10, 12, 6, 125 },
{ 3, 0, 0, 0, 0, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 125 },
@@ -8581,10 +9001,16 @@ static const Properties uc_properties[] = {
{ 3, 0, 0, 0, 9, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 125 },
{ 5, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 125 },
{ 18, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 125 },
+ { 18, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 150 },
+ { 1, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 150 },
+ { 0, 17, 0, 5, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 150 },
+ { 0, 17, 9, 5, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 150 },
+ { 25, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 18, 0, 150 },
{ 18, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 141 },
{ 0, 17, 0, 5, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 141 },
- { 1, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 141 },
+ { 0, 0, 0, 5, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 141 },
{ 0, 17, 9, 5, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 141 },
+ { 1, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 141 },
{ 18, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 7, 10, 12, 8, 141 },
{ 25, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 18, 0, 141 },
{ 25, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 141 },
@@ -8593,10 +9019,12 @@ static const Properties uc_properties[] = {
{ 18, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 140 },
{ 0, 17, 0, 5, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 140 },
{ 1, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 140 },
+ { 18, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 7, 10, 12, 8, 140 },
{ 18, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 7, 10, 12, 8, 140 },
{ 0, 17, 9, 5, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 140 },
{ 25, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 140 },
{ 25, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 140 },
+ { 18, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 140 },
{ 25, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 18, 0, 140 },
{ 18, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 119 },
{ 18, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 133 },
@@ -8636,6 +9064,28 @@ static const Properties uc_properties[] = {
{ 3, 0, 0, 0, 7, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 138 },
{ 3, 0, 0, 0, 8, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 138 },
{ 3, 0, 0, 0, 9, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 138 },
+ { 18, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 143 },
+ { 1, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 143 },
+ { 0, 17, 0, 5, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 143 },
+ { 0, 17, 9, 5, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 143 },
+ { 3, 0, 0, 0, 0, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 143 },
+ { 3, 0, 0, 0, 1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 143 },
+ { 3, 0, 0, 0, 2, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 143 },
+ { 3, 0, 0, 0, 3, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 143 },
+ { 3, 0, 0, 0, 4, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 143 },
+ { 3, 0, 0, 0, 5, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 143 },
+ { 3, 0, 0, 0, 6, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 143 },
+ { 3, 0, 0, 0, 7, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 143 },
+ { 3, 0, 0, 0, 8, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 143 },
+ { 3, 0, 0, 0, 9, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 143 },
+ { 18, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 145 },
+ { 0, 17, 0, 5, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 145 },
+ { 1, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 145 },
+ { 25, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 12, 145 },
+ { 5, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 16 },
+ { 29, 10, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 16 },
+ { 27, 4, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 10, 0, 16 },
+ { 25, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 16 },
{ 18, 0, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 63 },
{ 18, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 63 },
{ 18, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 63 },
@@ -8646,6 +9096,9 @@ static const Properties uc_properties[] = {
{ 18, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 81 },
{ 18, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 0, 8, 81 },
{ 18, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 1, 8, 81 },
+ { 10, 0, 0, 5, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 4, 4, 81 },
+ { 10, 0, 0, 5, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 0, 4, 81 },
+ { 10, 0, 0, 5, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 1, 4, 81 },
{ 18, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 127 },
{ 18, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 0, 8, 127 },
{ 18, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 1, 8, 127 },
@@ -8683,16 +9136,31 @@ static const Properties uc_properties[] = {
{ 3, 0, 0, 0, 8, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 108 },
{ 3, 0, 0, 0, 9, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 108 },
{ 5, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 108 },
+ { 14, 0, 0, 0, -1, 0, 20, 0, { {0, 32}, {0, 0}, {0, 0}, {0, 32} }, 0, 10, 12, 7, 146 },
+ { 15, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, -32}, {0, -32}, {0, 0} }, 0, 10, 12, 6, 146 },
+ { 5, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 146 },
+ { 25, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 146 },
+ { 25, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 146 },
+ { 25, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 146 },
{ 18, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 99 },
+ { 18, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 99 },
+ { 0, 17, 0, 5, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 99 },
{ 1, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 99 },
+ { 1, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 99 },
{ 0, 17, 0, 5, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 99 },
{ 17, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 99 },
{ 17, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 5, 8, 137 },
{ 17, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 5, 8, 139 },
+ { 25, 10, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 5, 0, 2 },
+ { 17, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 5, 8, 2 },
{ 18, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 137 },
+ { 18, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 137 },
+ { 18, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 137 },
{ 18, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 14, 8, 35 },
{ 18, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 34 },
{ 18, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 34 },
+ { 18, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 5, 8, 34 },
+ { 18, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 5, 8, 35 },
{ 18, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 139 },
{ 18, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 105 },
{ 29, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 105 },
@@ -8711,6 +9179,7 @@ static const Properties uc_properties[] = {
{ 0, 17, 230, 5, -1, 0, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1 },
{ 29, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 0, 17, 230, 5, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 4 },
+ { 5, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 5, 0, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 14, 0, 0, 0, -1, 0, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 2 },
{ 15, 0, 0, 0, -1, 0, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 2 },
@@ -8735,6 +9204,33 @@ static const Properties uc_properties[] = {
{ 25, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 131 },
{ 25, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 131 },
{ 0, 17, 230, 5, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 57 },
+ { 18, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 151 },
+ { 0, 17, 230, 5, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 151 },
+ { 17, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 151 },
+ { 3, 0, 0, 0, 0, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 151 },
+ { 3, 0, 0, 0, 1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 151 },
+ { 3, 0, 0, 0, 2, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 151 },
+ { 3, 0, 0, 0, 3, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 151 },
+ { 3, 0, 0, 0, 4, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 151 },
+ { 3, 0, 0, 0, 5, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 151 },
+ { 3, 0, 0, 0, 6, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 151 },
+ { 3, 0, 0, 0, 7, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 151 },
+ { 3, 0, 0, 0, 8, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 151 },
+ { 3, 0, 0, 0, 9, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 151 },
+ { 29, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 151 },
+ { 18, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 152 },
+ { 0, 17, 230, 5, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 152 },
+ { 3, 0, 0, 0, 0, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 152 },
+ { 3, 0, 0, 0, 1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 152 },
+ { 3, 0, 0, 0, 2, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 152 },
+ { 3, 0, 0, 0, 3, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 152 },
+ { 3, 0, 0, 0, 4, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 152 },
+ { 3, 0, 0, 0, 5, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 152 },
+ { 3, 0, 0, 0, 6, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 152 },
+ { 3, 0, 0, 0, 7, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 152 },
+ { 3, 0, 0, 0, 8, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 152 },
+ { 3, 0, 0, 0, 9, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 152 },
+ { 27, 4, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 9, 0, 152 },
{ 18, 1, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 113 },
{ 5, 1, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 113 },
{ 0, 17, 220, 5, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 113 },
@@ -8742,6 +9238,7 @@ static const Properties uc_properties[] = {
{ 15, 1, 0, 2, -1, 0, 18, 0, { {0, 0}, {0, -34}, {0, -34}, {0, 0} }, 0, 10, 12, 6, 132 },
{ 0, 17, 230, 5, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 132 },
{ 0, 17, 7, 5, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 132 },
+ { 17, 1, 0, 5, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 132 },
{ 3, 1, 0, 0, 0, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 132 },
{ 3, 1, 0, 0, 1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 132 },
{ 3, 1, 0, 0, 2, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 132 },
@@ -8753,6 +9250,11 @@ static const Properties uc_properties[] = {
{ 3, 1, 0, 0, 8, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 132 },
{ 3, 1, 0, 0, 9, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 132 },
{ 25, 1, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 0, 132 },
+ { 5, 13, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
+ { 29, 13, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 10, 0, 2 },
+ { 27, 13, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 10, 0, 2 },
+ { 5, 13, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
+ { 29, 13, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 18, 13, 0, 0, -1, 0, 13, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 8 },
{ 26, 10, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 8 },
{ 5, 2, 0, 0, 0, 0, 11, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
@@ -8773,6 +9275,7 @@ static const Properties uc_properties[] = {
{ 29, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 2 },
{ 29, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 2 },
{ 29, 10, 0, 0, -1, 0, 13, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
+ { 29, 10, 0, 0, -1, 0, 21, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 29, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 29, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 29, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 6, 7, 28, 0, 2 },
@@ -8780,20 +9283,21 @@ static const Properties uc_properties[] = {
{ 29, 0, 0, 0, -1, 0, 12, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
{ 29, 0, 0, 0, -1, 0, 18, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
{ 29, 10, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
- { 29, 10, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 16, 20, 14, 0, 2 },
{ 29, 10, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
- { 29, 10, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 18, 30, 0, 2 },
- { 28, 10, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 15, 19, 31, 0, 2 },
- { 29, 10, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 17, 21, 30, 0, 2 },
+ { 29, 10, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 30, 0, 2 },
+ { 28, 10, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 31, 0, 2 },
{ 29, 10, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
- { 29, 10, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 18, 30, 0, 2 },
+ { 29, 10, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 30, 0, 2 },
{ 29, 10, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
- { 29, 10, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 16, 20, 14, 0, 2 },
{ 29, 10, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
{ 29, 10, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 3, 13, 2 },
{ 29, 10, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 5, 0, 2 },
- { 29, 10, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 18, 30, 0, 2 },
- { 29, 10, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 18, 30, 0, 2 },
+ { 29, 10, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
+ { 29, 10, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
+ { 29, 10, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 30, 0, 2 },
+ { 29, 10, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 30, 0, 2 },
+ { 29, 10, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 30, 0, 2 },
+ { 29, 10, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 30, 0, 2 },
{ 13, 18, 0, 0, -1, 0, 2, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0 },
{ 18, 0, 0, 0, -1, 0, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 37 },
{ 18, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 37 },
@@ -8862,6 +9366,7 @@ static const unsigned short specialCaseMap[] = {
0x1, 0xa7ad,
0x1, 0x2c6e,
0x1, 0x2c64,
+ 0x1, 0xa7c5,
0x1, 0xa7b1,
0x1, 0xa7b2,
0x1, 0xa7b0,
@@ -8947,6 +9452,7 @@ static const unsigned short specialCaseMap[] = {
0x1, 0xabbf,
0x1, 0xa64a,
0x1, 0xa77d,
+ 0x1, 0xa7c6,
0x1, 0x6b,
0x1, 0xe5,
0x1, 0x26b,
@@ -8969,6 +9475,8 @@ static const unsigned short specialCaseMap[] = {
0x1, 0x29e,
0x1, 0x287,
0x1, 0x29d,
+ 0x1, 0x282,
+ 0x1, 0x1d8e,
0x1, 0x13a0,
0x1, 0x13a1,
0x1, 0x13a2,
@@ -10020,55 +10528,55 @@ static const unsigned short uc_decomposition_trie[] = {
0x15f5, 0x15f7, 0x15f9, 0x15fb, 0x15fd, 0x15ff, 0x1601, 0x1603,
0x1605, 0x1607, 0x1609, 0x160b, 0x160d, 0x160f, 0x1611, 0x1613,
- 0x1615, 0x1617, 0x1619, 0x161b, 0x161d, 0x161f, 0x1621, 0xffff,
+ 0x1615, 0x1617, 0x1619, 0x161b, 0x161d, 0x161f, 0x1621, 0x1623,
- 0x1623, 0x1628, 0x162d, 0x1632, 0x1636, 0x163b, 0x163f, 0x1643,
- 0x1649, 0x164e, 0x1652, 0x1656, 0x165a, 0x165f, 0x1664, 0x1668,
+ 0x1626, 0x162b, 0x1630, 0x1635, 0x1639, 0x163e, 0x1642, 0x1646,
+ 0x164c, 0x1651, 0x1655, 0x1659, 0x165d, 0x1662, 0x1667, 0x166b,
- 0x166c, 0x166f, 0x1673, 0x1678, 0x167d, 0x1680, 0x1686, 0x168d,
- 0x1693, 0x1697, 0x169d, 0x16a3, 0x16a8, 0x16ac, 0x16b0, 0x16b4,
+ 0x166f, 0x1672, 0x1676, 0x167b, 0x1680, 0x1683, 0x1689, 0x1690,
+ 0x1696, 0x169a, 0x16a0, 0x16a6, 0x16ab, 0x16af, 0x16b3, 0x16b7,
- 0x16b9, 0x16bf, 0x16c4, 0x16c8, 0x16cc, 0x16d0, 0x16d3, 0x16d6,
- 0x16d9, 0x16dc, 0x16e0, 0x16e4, 0x16ea, 0x16ee, 0x16f3, 0x16f9,
+ 0x16bc, 0x16c2, 0x16c7, 0x16cb, 0x16cf, 0x16d3, 0x16d6, 0x16d9,
+ 0x16dc, 0x16df, 0x16e3, 0x16e7, 0x16ed, 0x16f1, 0x16f6, 0x16fc,
- 0x16fd, 0x1700, 0x1703, 0x1709, 0x170e, 0x1714, 0x1718, 0x171e,
- 0x1721, 0x1725, 0x1729, 0x172d, 0x1731, 0x1735, 0x173a, 0x173e,
+ 0x1700, 0x1703, 0x1706, 0x170c, 0x1711, 0x1717, 0x171b, 0x1721,
+ 0x1724, 0x1728, 0x172c, 0x1730, 0x1734, 0x1738, 0x173d, 0x1741,
- 0x1741, 0x1745, 0x1749, 0x174d, 0x1752, 0x1756, 0x175a, 0x175e,
- 0x1764, 0x1769, 0x176c, 0x1772, 0x1775, 0x177a, 0x177f, 0x1783,
+ 0x1744, 0x1748, 0x174c, 0x1750, 0x1755, 0x1759, 0x175d, 0x1761,
+ 0x1767, 0x176c, 0x176f, 0x1775, 0x1778, 0x177d, 0x1782, 0x1786,
- 0x1787, 0x178b, 0x1790, 0x1793, 0x1797, 0x179c, 0x179f, 0x17a5,
- 0x17a9, 0x17ac, 0x17af, 0x17b2, 0x17b5, 0x17b8, 0x17bb, 0x17be,
+ 0x178a, 0x178e, 0x1793, 0x1796, 0x179a, 0x179f, 0x17a2, 0x17a8,
+ 0x17ac, 0x17af, 0x17b2, 0x17b5, 0x17b8, 0x17bb, 0x17be, 0x17c1,
- 0x17c1, 0x17c4, 0x17c7, 0x17cb, 0x17cf, 0x17d3, 0x17d7, 0x17db,
- 0x17df, 0x17e3, 0x17e7, 0x17eb, 0x17ef, 0x17f3, 0x17f7, 0x17fb,
+ 0x17c4, 0x17c7, 0x17ca, 0x17ce, 0x17d2, 0x17d6, 0x17da, 0x17de,
+ 0x17e2, 0x17e6, 0x17ea, 0x17ee, 0x17f2, 0x17f6, 0x17fa, 0x17fe,
- 0x17ff, 0x1803, 0x1807, 0x180a, 0x180d, 0x1811, 0x1814, 0x1817,
- 0x181a, 0x181e, 0x1822, 0x1825, 0x1828, 0x182b, 0x182e, 0x1831,
+ 0x1802, 0x1806, 0x180a, 0x180d, 0x1810, 0x1814, 0x1817, 0x181a,
+ 0x181d, 0x1821, 0x1825, 0x1828, 0x182b, 0x182e, 0x1831, 0x1834,
- 0x1836, 0x1839, 0x183c, 0x183f, 0x1842, 0x1845, 0x1848, 0x184b,
- 0x184e, 0x1852, 0x1857, 0x185a, 0x185d, 0x1860, 0x1863, 0x1866,
+ 0x1839, 0x183c, 0x183f, 0x1842, 0x1845, 0x1848, 0x184b, 0x184e,
+ 0x1851, 0x1855, 0x185a, 0x185d, 0x1860, 0x1863, 0x1866, 0x1869,
- 0x1869, 0x186c, 0x1870, 0x1874, 0x1878, 0x187c, 0x187f, 0x1882,
- 0x1885, 0x1888, 0x188b, 0x188e, 0x1891, 0x1894, 0x1897, 0x189a,
+ 0x186c, 0x186f, 0x1873, 0x1877, 0x187b, 0x187f, 0x1882, 0x1885,
+ 0x1888, 0x188b, 0x188e, 0x1891, 0x1894, 0x1897, 0x189a, 0x189d,
- 0x189e, 0x18a2, 0x18a5, 0x18a9, 0x18ad, 0x18b1, 0x18b4, 0x18b8,
- 0x18bc, 0x18c1, 0x18c4, 0x18c8, 0x18cc, 0x18d0, 0x18d4, 0x18da,
+ 0x18a1, 0x18a5, 0x18a8, 0x18ac, 0x18b0, 0x18b4, 0x18b7, 0x18bb,
+ 0x18bf, 0x18c4, 0x18c7, 0x18cb, 0x18cf, 0x18d3, 0x18d7, 0x18dd,
- 0x18e1, 0x18e4, 0x18e7, 0x18ea, 0x18ed, 0x18f0, 0x18f3, 0x18f6,
- 0x18f9, 0x18fc, 0x18ff, 0x1902, 0x1905, 0x1908, 0x190b, 0x190e,
+ 0x18e4, 0x18e7, 0x18ea, 0x18ed, 0x18f0, 0x18f3, 0x18f6, 0x18f9,
+ 0x18fc, 0x18ff, 0x1902, 0x1905, 0x1908, 0x190b, 0x190e, 0x1911,
- 0x1911, 0x1914, 0x1917, 0x191c, 0x191f, 0x1922, 0x1925, 0x192a,
- 0x192e, 0x1931, 0x1934, 0x1937, 0x193a, 0x193d, 0x1940, 0x1943,
+ 0x1914, 0x1917, 0x191a, 0x191f, 0x1922, 0x1925, 0x1928, 0x192d,
+ 0x1931, 0x1934, 0x1937, 0x193a, 0x193d, 0x1940, 0x1943, 0x1946,
- 0x1946, 0x1949, 0x194c, 0x1950, 0x1953, 0x1956, 0x195a, 0x195e,
- 0x1961, 0x1966, 0x196a, 0x196d, 0x1970, 0x1973, 0x1976, 0x197a,
+ 0x1949, 0x194c, 0x194f, 0x1953, 0x1956, 0x1959, 0x195d, 0x1961,
+ 0x1964, 0x1969, 0x196d, 0x1970, 0x1973, 0x1976, 0x1979, 0x197d,
- 0x197e, 0x1981, 0x1984, 0x1987, 0x198a, 0x198d, 0x1990, 0x1993,
- 0x1996, 0x1999, 0x199d, 0x19a1, 0x19a5, 0x19a9, 0x19ad, 0x19b1,
+ 0x1981, 0x1984, 0x1987, 0x198a, 0x198d, 0x1990, 0x1993, 0x1996,
+ 0x1999, 0x199c, 0x19a0, 0x19a4, 0x19a8, 0x19ac, 0x19b0, 0x19b4,
- 0x19b5, 0x19b9, 0x19bd, 0x19c1, 0x19c5, 0x19c9, 0x19cd, 0x19d1,
- 0x19d5, 0x19d9, 0x19dd, 0x19e1, 0x19e5, 0x19e9, 0x19ed, 0x19f1,
+ 0x19b8, 0x19bc, 0x19c0, 0x19c4, 0x19c8, 0x19cc, 0x19d0, 0x19d4,
+ 0x19d8, 0x19dc, 0x19e0, 0x19e4, 0x19e8, 0x19ec, 0x19f0, 0x19f4,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
@@ -10122,7 +10630,7 @@ static const unsigned short uc_decomposition_trie[] = {
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0xffff, 0xffff, 0xffff, 0xffff, 0x19f5, 0x19f7, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0x19f8, 0x19fa, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
@@ -10150,7 +10658,7 @@ static const unsigned short uc_decomposition_trie[] = {
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0x19f9, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0x19fc, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
@@ -10167,7 +10675,7 @@ static const unsigned short uc_decomposition_trie[] = {
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0x19fb, 0x19fd, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0x19fe, 0x1a00, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
@@ -10180,7 +10688,7 @@ static const unsigned short uc_decomposition_trie[] = {
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0xffff, 0xffff, 0xffff, 0xffff, 0x19ff, 0x1a01, 0x1a03, 0x1a05,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0x1a02, 0x1a04, 0x1a06, 0x1a08,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
@@ -10202,234 +10710,234 @@ static const unsigned short uc_decomposition_trie[] = {
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0x1a07, 0x1a09, 0x1a0b, 0x1a0d, 0x1a0f, 0x1a11, 0x1a13, 0x1a15,
- 0x1a17, 0x1a19, 0x1a1b, 0x1a1d, 0x1a1f, 0x1a21, 0x1a23, 0x1a25,
- 0x1a27, 0x1a29, 0x1a2b, 0x1a2d, 0x1a2f, 0x1a31, 0x1a33, 0x1a35,
- 0x1a37, 0x1a39, 0x1a3b, 0x1a3d, 0x1a3f, 0x1a41, 0x1a43, 0x1a45,
- 0x1a47, 0x1a49, 0x1a4b, 0x1a4d, 0x1a4f, 0x1a51, 0x1a53, 0x1a55,
- 0x1a57, 0x1a59, 0x1a5b, 0x1a5d, 0x1a5f, 0x1a61, 0x1a63, 0x1a65,
- 0x1a67, 0x1a69, 0x1a6b, 0x1a6d, 0x1a6f, 0x1a71, 0x1a73, 0x1a75,
- 0x1a77, 0x1a79, 0x1a7b, 0x1a7d, 0x1a7f, 0x1a81, 0x1a83, 0x1a85,
- 0x1a87, 0x1a89, 0x1a8b, 0x1a8d, 0x1a8f, 0x1a91, 0x1a93, 0x1a95,
- 0x1a97, 0x1a99, 0x1a9b, 0x1a9d, 0x1a9f, 0x1aa1, 0x1aa3, 0x1aa5,
- 0x1aa7, 0x1aa9, 0x1aab, 0x1aad, 0x1aaf, 0x1ab1, 0x1ab3, 0x1ab5,
- 0x1ab7, 0x1ab9, 0x1abb, 0x1abd, 0x1abf, 0x1ac1, 0x1ac3, 0x1ac5,
- 0x1ac7, 0x1ac9, 0x1acb, 0x1acd, 0x1acf, 0x1ad1, 0x1ad3, 0x1ad5,
- 0x1ad7, 0x1ad9, 0x1adb, 0x1add, 0x1adf, 0x1ae1, 0x1ae3, 0x1ae5,
- 0x1ae7, 0x1ae9, 0x1aeb, 0x1aed, 0x1aef, 0x1af1, 0x1af3, 0x1af5,
- 0x1af7, 0x1af9, 0x1afb, 0x1afd, 0x1aff, 0x1b01, 0x1b03, 0x1b05,
- 0x1b07, 0x1b09, 0x1b0b, 0x1b0d, 0x1b0f, 0x1b11, 0x1b13, 0x1b15,
- 0x1b17, 0x1b19, 0x1b1b, 0x1b1d, 0x1b1f, 0x1b21, 0x1b23, 0x1b25,
- 0x1b27, 0x1b29, 0x1b2b, 0x1b2d, 0x1b2f, 0x1b31, 0x1b33, 0x1b35,
- 0x1b37, 0x1b39, 0x1b3b, 0x1b3d, 0x1b3f, 0x1b41, 0x1b43, 0x1b45,
- 0x1b47, 0x1b49, 0x1b4b, 0x1b4d, 0x1b4f, 0x1b51, 0x1b53, 0x1b55,
- 0x1b57, 0x1b59, 0x1b5b, 0x1b5d, 0x1b5f, 0x1b61, 0x1b63, 0x1b65,
- 0x1b67, 0x1b69, 0x1b6b, 0x1b6d, 0x1b6f, 0x1b71, 0x1b73, 0x1b75,
- 0x1b77, 0x1b79, 0x1b7b, 0x1b7d, 0x1b7f, 0x1b81, 0x1b83, 0x1b85,
- 0x1b87, 0x1b89, 0x1b8b, 0x1b8d, 0x1b8f, 0x1b91, 0x1b93, 0x1b95,
- 0x1b97, 0x1b99, 0x1b9b, 0x1b9d, 0x1b9f, 0x1ba1, 0x1ba3, 0x1ba5,
- 0x1ba7, 0x1ba9, 0x1bab, 0x1bad, 0x1baf, 0x1bb1, 0x1bb3, 0x1bb5,
- 0x1bb7, 0x1bb9, 0x1bbb, 0x1bbd, 0x1bbf, 0x1bc1, 0x1bc3, 0x1bc5,
- 0x1bc7, 0x1bc9, 0x1bcb, 0x1bcd, 0x1bcf, 0x1bd1, 0x1bd3, 0x1bd5,
- 0x1bd7, 0x1bd9, 0x1bdb, 0x1bdd, 0x1bdf, 0x1be1, 0x1be3, 0x1be5,
- 0x1be7, 0x1be9, 0x1beb, 0x1bed, 0x1bef, 0x1bf1, 0x1bf3, 0x1bf5,
- 0x1bf7, 0x1bf9, 0x1bfb, 0x1bfd, 0x1bff, 0x1c01, 0x1c03, 0x1c05,
+ 0x1a0a, 0x1a0c, 0x1a0e, 0x1a10, 0x1a12, 0x1a14, 0x1a16, 0x1a18,
+ 0x1a1a, 0x1a1c, 0x1a1e, 0x1a20, 0x1a22, 0x1a24, 0x1a26, 0x1a28,
+ 0x1a2a, 0x1a2c, 0x1a2e, 0x1a30, 0x1a32, 0x1a34, 0x1a36, 0x1a38,
+ 0x1a3a, 0x1a3c, 0x1a3e, 0x1a40, 0x1a42, 0x1a44, 0x1a46, 0x1a48,
+ 0x1a4a, 0x1a4c, 0x1a4e, 0x1a50, 0x1a52, 0x1a54, 0x1a56, 0x1a58,
+ 0x1a5a, 0x1a5c, 0x1a5e, 0x1a60, 0x1a62, 0x1a64, 0x1a66, 0x1a68,
+ 0x1a6a, 0x1a6c, 0x1a6e, 0x1a70, 0x1a72, 0x1a74, 0x1a76, 0x1a78,
+ 0x1a7a, 0x1a7c, 0x1a7e, 0x1a80, 0x1a82, 0x1a84, 0x1a86, 0x1a88,
+ 0x1a8a, 0x1a8c, 0x1a8e, 0x1a90, 0x1a92, 0x1a94, 0x1a96, 0x1a98,
+ 0x1a9a, 0x1a9c, 0x1a9e, 0x1aa0, 0x1aa2, 0x1aa4, 0x1aa6, 0x1aa8,
+ 0x1aaa, 0x1aac, 0x1aae, 0x1ab0, 0x1ab2, 0x1ab4, 0x1ab6, 0x1ab8,
+ 0x1aba, 0x1abc, 0x1abe, 0x1ac0, 0x1ac2, 0x1ac4, 0x1ac6, 0x1ac8,
+ 0x1aca, 0x1acc, 0x1ace, 0x1ad0, 0x1ad2, 0x1ad4, 0x1ad6, 0x1ad8,
+ 0x1ada, 0x1adc, 0x1ade, 0x1ae0, 0x1ae2, 0x1ae4, 0x1ae6, 0x1ae8,
+ 0x1aea, 0x1aec, 0x1aee, 0x1af0, 0x1af2, 0x1af4, 0x1af6, 0x1af8,
+ 0x1afa, 0x1afc, 0x1afe, 0x1b00, 0x1b02, 0x1b04, 0x1b06, 0x1b08,
+ 0x1b0a, 0x1b0c, 0x1b0e, 0x1b10, 0x1b12, 0x1b14, 0x1b16, 0x1b18,
+ 0x1b1a, 0x1b1c, 0x1b1e, 0x1b20, 0x1b22, 0x1b24, 0x1b26, 0x1b28,
+ 0x1b2a, 0x1b2c, 0x1b2e, 0x1b30, 0x1b32, 0x1b34, 0x1b36, 0x1b38,
+ 0x1b3a, 0x1b3c, 0x1b3e, 0x1b40, 0x1b42, 0x1b44, 0x1b46, 0x1b48,
+ 0x1b4a, 0x1b4c, 0x1b4e, 0x1b50, 0x1b52, 0x1b54, 0x1b56, 0x1b58,
+ 0x1b5a, 0x1b5c, 0x1b5e, 0x1b60, 0x1b62, 0x1b64, 0x1b66, 0x1b68,
+ 0x1b6a, 0x1b6c, 0x1b6e, 0x1b70, 0x1b72, 0x1b74, 0x1b76, 0x1b78,
+ 0x1b7a, 0x1b7c, 0x1b7e, 0x1b80, 0x1b82, 0x1b84, 0x1b86, 0x1b88,
+ 0x1b8a, 0x1b8c, 0x1b8e, 0x1b90, 0x1b92, 0x1b94, 0x1b96, 0x1b98,
+ 0x1b9a, 0x1b9c, 0x1b9e, 0x1ba0, 0x1ba2, 0x1ba4, 0x1ba6, 0x1ba8,
+ 0x1baa, 0x1bac, 0x1bae, 0x1bb0, 0x1bb2, 0x1bb4, 0x1bb6, 0x1bb8,
+ 0x1bba, 0x1bbc, 0x1bbe, 0x1bc0, 0x1bc2, 0x1bc4, 0x1bc6, 0x1bc8,
+ 0x1bca, 0x1bcc, 0x1bce, 0x1bd0, 0x1bd2, 0x1bd4, 0x1bd6, 0x1bd8,
+ 0x1bda, 0x1bdc, 0x1bde, 0x1be0, 0x1be2, 0x1be4, 0x1be6, 0x1be8,
+ 0x1bea, 0x1bec, 0x1bee, 0x1bf0, 0x1bf2, 0x1bf4, 0x1bf6, 0x1bf8,
+ 0x1bfa, 0x1bfc, 0x1bfe, 0x1c00, 0x1c02, 0x1c04, 0x1c06, 0x1c08,
- 0x1c07, 0x1c09, 0x1c0b, 0x1c0d, 0x1c0f, 0x1c11, 0x1c13, 0x1c15,
- 0x1c17, 0x1c19, 0x1c1b, 0x1c1d, 0x1c1f, 0x1c21, 0xffff, 0xffff,
- 0x1c23, 0xffff, 0x1c25, 0xffff, 0xffff, 0x1c27, 0x1c29, 0x1c2b,
- 0x1c2d, 0x1c2f, 0x1c31, 0x1c33, 0x1c35, 0x1c37, 0x1c39, 0xffff,
- 0x1c3b, 0xffff, 0x1c3d, 0xffff, 0xffff, 0x1c3f, 0x1c41, 0xffff,
- 0xffff, 0xffff, 0x1c43, 0x1c45, 0x1c47, 0x1c49, 0x1c4b, 0x1c4d,
- 0x1c4f, 0x1c51, 0x1c53, 0x1c55, 0x1c57, 0x1c59, 0x1c5b, 0x1c5d,
- 0x1c5f, 0x1c61, 0x1c63, 0x1c65, 0x1c67, 0x1c69, 0x1c6b, 0x1c6d,
- 0x1c6f, 0x1c71, 0x1c73, 0x1c75, 0x1c77, 0x1c79, 0x1c7b, 0x1c7d,
- 0x1c7f, 0x1c81, 0x1c83, 0x1c85, 0x1c87, 0x1c89, 0x1c8b, 0x1c8d,
- 0x1c8f, 0x1c91, 0x1c93, 0x1c95, 0x1c97, 0x1c99, 0x1c9b, 0x1c9d,
- 0x1c9f, 0x1ca1, 0x1ca3, 0x1ca5, 0x1ca7, 0x1ca9, 0x1cab, 0x1cad,
- 0x1caf, 0x1cb1, 0x1cb3, 0x1cb5, 0x1cb7, 0x1cb9, 0x1cbb, 0x1cbd,
- 0x1cbf, 0x1cc1, 0x1cc3, 0x1cc5, 0x1cc7, 0x1cca, 0xffff, 0xffff,
- 0x1ccc, 0x1cce, 0x1cd0, 0x1cd2, 0x1cd4, 0x1cd6, 0x1cd8, 0x1cda,
- 0x1cdc, 0x1cde, 0x1ce0, 0x1ce2, 0x1ce4, 0x1ce6, 0x1ce8, 0x1cea,
- 0x1cec, 0x1cee, 0x1cf0, 0x1cf2, 0x1cf4, 0x1cf6, 0x1cf8, 0x1cfa,
- 0x1cfc, 0x1cfe, 0x1d00, 0x1d02, 0x1d04, 0x1d06, 0x1d08, 0x1d0a,
- 0x1d0c, 0x1d0e, 0x1d10, 0x1d12, 0x1d14, 0x1d16, 0x1d18, 0x1d1a,
- 0x1d1c, 0x1d1e, 0x1d20, 0x1d22, 0x1d24, 0x1d26, 0x1d28, 0x1d2a,
- 0x1d2c, 0x1d2e, 0x1d30, 0x1d32, 0x1d34, 0x1d36, 0x1d38, 0x1d3a,
- 0x1d3c, 0x1d3e, 0x1d40, 0x1d42, 0x1d44, 0x1d46, 0x1d48, 0x1d4a,
- 0x1d4c, 0x1d4e, 0x1d50, 0x1d52, 0x1d54, 0x1d56, 0x1d58, 0x1d5a,
- 0x1d5c, 0x1d5e, 0x1d60, 0x1d62, 0x1d64, 0x1d66, 0x1d68, 0x1d6a,
- 0x1d6c, 0x1d6e, 0x1d70, 0x1d72, 0x1d74, 0x1d76, 0x1d78, 0x1d7a,
- 0x1d7c, 0x1d7e, 0x1d80, 0x1d82, 0x1d84, 0x1d86, 0x1d88, 0x1d8a,
- 0x1d8d, 0x1d90, 0x1d93, 0x1d95, 0x1d97, 0x1d99, 0x1d9c, 0x1d9f,
- 0x1da2, 0x1da4, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0x1c0a, 0x1c0c, 0x1c0e, 0x1c10, 0x1c12, 0x1c14, 0x1c16, 0x1c18,
+ 0x1c1a, 0x1c1c, 0x1c1e, 0x1c20, 0x1c22, 0x1c24, 0xffff, 0xffff,
+ 0x1c26, 0xffff, 0x1c28, 0xffff, 0xffff, 0x1c2a, 0x1c2c, 0x1c2e,
+ 0x1c30, 0x1c32, 0x1c34, 0x1c36, 0x1c38, 0x1c3a, 0x1c3c, 0xffff,
+ 0x1c3e, 0xffff, 0x1c40, 0xffff, 0xffff, 0x1c42, 0x1c44, 0xffff,
+ 0xffff, 0xffff, 0x1c46, 0x1c48, 0x1c4a, 0x1c4c, 0x1c4e, 0x1c50,
+ 0x1c52, 0x1c54, 0x1c56, 0x1c58, 0x1c5a, 0x1c5c, 0x1c5e, 0x1c60,
+ 0x1c62, 0x1c64, 0x1c66, 0x1c68, 0x1c6a, 0x1c6c, 0x1c6e, 0x1c70,
+ 0x1c72, 0x1c74, 0x1c76, 0x1c78, 0x1c7a, 0x1c7c, 0x1c7e, 0x1c80,
+ 0x1c82, 0x1c84, 0x1c86, 0x1c88, 0x1c8a, 0x1c8c, 0x1c8e, 0x1c90,
+ 0x1c92, 0x1c94, 0x1c96, 0x1c98, 0x1c9a, 0x1c9c, 0x1c9e, 0x1ca0,
+ 0x1ca2, 0x1ca4, 0x1ca6, 0x1ca8, 0x1caa, 0x1cac, 0x1cae, 0x1cb0,
+ 0x1cb2, 0x1cb4, 0x1cb6, 0x1cb8, 0x1cba, 0x1cbc, 0x1cbe, 0x1cc0,
+ 0x1cc2, 0x1cc4, 0x1cc6, 0x1cc8, 0x1cca, 0x1ccd, 0xffff, 0xffff,
+ 0x1ccf, 0x1cd1, 0x1cd3, 0x1cd5, 0x1cd7, 0x1cd9, 0x1cdb, 0x1cdd,
+ 0x1cdf, 0x1ce1, 0x1ce3, 0x1ce5, 0x1ce7, 0x1ce9, 0x1ceb, 0x1ced,
+ 0x1cef, 0x1cf1, 0x1cf3, 0x1cf5, 0x1cf7, 0x1cf9, 0x1cfb, 0x1cfd,
+ 0x1cff, 0x1d01, 0x1d03, 0x1d05, 0x1d07, 0x1d09, 0x1d0b, 0x1d0d,
+ 0x1d0f, 0x1d11, 0x1d13, 0x1d15, 0x1d17, 0x1d19, 0x1d1b, 0x1d1d,
+ 0x1d1f, 0x1d21, 0x1d23, 0x1d25, 0x1d27, 0x1d29, 0x1d2b, 0x1d2d,
+ 0x1d2f, 0x1d31, 0x1d33, 0x1d35, 0x1d37, 0x1d39, 0x1d3b, 0x1d3d,
+ 0x1d3f, 0x1d41, 0x1d43, 0x1d45, 0x1d47, 0x1d49, 0x1d4b, 0x1d4d,
+ 0x1d4f, 0x1d51, 0x1d53, 0x1d55, 0x1d57, 0x1d59, 0x1d5b, 0x1d5d,
+ 0x1d5f, 0x1d61, 0x1d63, 0x1d65, 0x1d67, 0x1d69, 0x1d6b, 0x1d6d,
+ 0x1d6f, 0x1d71, 0x1d73, 0x1d75, 0x1d77, 0x1d79, 0x1d7b, 0x1d7d,
+ 0x1d7f, 0x1d81, 0x1d83, 0x1d85, 0x1d87, 0x1d89, 0x1d8b, 0x1d8d,
+ 0x1d90, 0x1d93, 0x1d96, 0x1d98, 0x1d9a, 0x1d9c, 0x1d9f, 0x1da2,
+ 0x1da5, 0x1da7, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0x1da6, 0x1da9, 0x1dac, 0x1daf, 0x1db3, 0x1db7, 0x1dba, 0xffff,
+ 0x1da9, 0x1dac, 0x1daf, 0x1db2, 0x1db6, 0x1dba, 0x1dbd, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0xffff, 0xffff, 0xffff, 0x1dbd, 0x1dc0, 0x1dc3, 0x1dc6, 0x1dc9,
- 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1dcc, 0xffff, 0x1dcf,
- 0x1dd2, 0x1dd4, 0x1dd6, 0x1dd8, 0x1dda, 0x1ddc, 0x1dde, 0x1de0,
- 0x1de2, 0x1de4, 0x1de6, 0x1de9, 0x1dec, 0x1def, 0x1df2, 0x1df5,
- 0x1df8, 0x1dfb, 0x1dfe, 0x1e01, 0x1e04, 0x1e07, 0x1e0a, 0xffff,
- 0x1e0d, 0x1e10, 0x1e13, 0x1e16, 0x1e19, 0xffff, 0x1e1c, 0xffff,
- 0x1e1f, 0x1e22, 0xffff, 0x1e25, 0x1e28, 0xffff, 0x1e2b, 0x1e2e,
- 0x1e31, 0x1e34, 0x1e37, 0x1e3a, 0x1e3d, 0x1e40, 0x1e43, 0x1e46,
- 0x1e49, 0x1e4b, 0x1e4d, 0x1e4f, 0x1e51, 0x1e53, 0x1e55, 0x1e57,
- 0x1e59, 0x1e5b, 0x1e5d, 0x1e5f, 0x1e61, 0x1e63, 0x1e65, 0x1e67,
- 0x1e69, 0x1e6b, 0x1e6d, 0x1e6f, 0x1e71, 0x1e73, 0x1e75, 0x1e77,
- 0x1e79, 0x1e7b, 0x1e7d, 0x1e7f, 0x1e81, 0x1e83, 0x1e85, 0x1e87,
- 0x1e89, 0x1e8b, 0x1e8d, 0x1e8f, 0x1e91, 0x1e93, 0x1e95, 0x1e97,
- 0x1e99, 0x1e9b, 0x1e9d, 0x1e9f, 0x1ea1, 0x1ea3, 0x1ea5, 0x1ea7,
- 0x1ea9, 0x1eab, 0x1ead, 0x1eaf, 0x1eb1, 0x1eb3, 0x1eb5, 0x1eb7,
- 0x1eb9, 0x1ebb, 0x1ebd, 0x1ebf, 0x1ec1, 0x1ec3, 0x1ec5, 0x1ec7,
- 0x1ec9, 0x1ecb, 0x1ecd, 0x1ecf, 0x1ed1, 0x1ed3, 0x1ed5, 0x1ed7,
- 0x1ed9, 0x1edb, 0x1edd, 0x1edf, 0x1ee1, 0x1ee3, 0x1ee5, 0x1ee7,
- 0x1ee9, 0x1eeb, 0x1eed, 0x1eef, 0x1ef1, 0x1ef3, 0x1ef5, 0x1ef7,
- 0x1ef9, 0x1efb, 0x1efd, 0x1eff, 0x1f01, 0x1f03, 0x1f05, 0x1f07,
- 0x1f09, 0x1f0b, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0xffff, 0xffff, 0xffff, 0x1f0d, 0x1f0f, 0x1f11, 0x1f13, 0x1f15,
- 0x1f17, 0x1f19, 0x1f1b, 0x1f1d, 0x1f1f, 0x1f21, 0x1f23, 0x1f25,
- 0x1f27, 0x1f29, 0x1f2b, 0x1f2d, 0x1f2f, 0x1f31, 0x1f33, 0x1f35,
- 0x1f37, 0x1f39, 0x1f3b, 0x1f3e, 0x1f41, 0x1f44, 0x1f47, 0x1f4a,
- 0x1f4d, 0x1f50, 0x1f53, 0x1f56, 0x1f59, 0x1f5c, 0x1f5f, 0x1f62,
- 0x1f65, 0x1f68, 0x1f6b, 0x1f6e, 0x1f71, 0x1f73, 0x1f75, 0x1f77,
-
- 0x1f79, 0x1f7c, 0x1f7f, 0x1f82, 0x1f85, 0x1f88, 0x1f8b, 0x1f8e,
- 0x1f91, 0x1f94, 0x1f97, 0x1f9a, 0x1f9d, 0x1fa0, 0x1fa3, 0x1fa6,
- 0x1fa9, 0x1fac, 0x1faf, 0x1fb2, 0x1fb5, 0x1fb8, 0x1fbb, 0x1fbe,
- 0x1fc1, 0x1fc4, 0x1fc7, 0x1fca, 0x1fcd, 0x1fd0, 0x1fd3, 0x1fd6,
- 0x1fd9, 0x1fdc, 0x1fdf, 0x1fe2, 0x1fe5, 0x1fe8, 0x1feb, 0x1fee,
- 0x1ff1, 0x1ff4, 0x1ff7, 0x1ffa, 0x1ffd, 0x2000, 0x2003, 0x2006,
- 0x2009, 0x200c, 0x200f, 0x2012, 0x2015, 0x2018, 0x201b, 0x201e,
- 0x2021, 0x2024, 0x2027, 0x202a, 0x202d, 0x2030, 0x2033, 0x2036,
- 0x2039, 0x203c, 0x203f, 0x2042, 0x2045, 0x2048, 0x204b, 0x204e,
- 0x2051, 0x2054, 0x2057, 0x205a, 0x205d, 0x2060, 0x2063, 0x2066,
- 0x2069, 0x206c, 0x206f, 0x2072, 0x2075, 0x2078, 0x207b, 0x207e,
- 0x2081, 0x2084, 0x2087, 0x208a, 0x208d, 0x2090, 0x2093, 0x2097,
- 0x209b, 0x209f, 0x20a3, 0x20a7, 0x20ab, 0x20ae, 0x20b1, 0x20b4,
- 0x20b7, 0x20ba, 0x20bd, 0x20c0, 0x20c3, 0x20c6, 0x20c9, 0x20cc,
- 0x20cf, 0x20d2, 0x20d5, 0x20d8, 0x20db, 0x20de, 0x20e1, 0x20e4,
- 0x20e7, 0x20ea, 0x20ed, 0x20f0, 0x20f3, 0x20f6, 0x20f9, 0x20fc,
- 0x20ff, 0x2102, 0x2105, 0x2108, 0x210b, 0x210e, 0x2111, 0x2114,
- 0x2117, 0x211a, 0x211d, 0x2120, 0x2123, 0x2126, 0x2129, 0x212c,
- 0x212f, 0x2132, 0x2135, 0x2138, 0x213b, 0x213e, 0x2141, 0x2144,
- 0x2147, 0x214a, 0x214d, 0x2150, 0x2153, 0x2156, 0x2159, 0x215c,
- 0x215f, 0x2162, 0x2165, 0x2168, 0x216b, 0x216e, 0x2171, 0x2174,
- 0x2177, 0x217a, 0x217d, 0x2180, 0x2183, 0x2186, 0x2189, 0x218c,
- 0x218f, 0x2192, 0x2195, 0x2198, 0x219b, 0x219e, 0x21a1, 0x21a4,
- 0x21a7, 0x21aa, 0x21ad, 0x21b0, 0x21b3, 0x21b6, 0x21b9, 0x21bc,
- 0x21bf, 0x21c2, 0x21c5, 0x21c8, 0x21cb, 0x21ce, 0x21d1, 0x21d4,
- 0x21d7, 0x21da, 0x21dd, 0x21e0, 0x21e3, 0x21e6, 0x21e9, 0x21ec,
- 0x21ef, 0x21f2, 0x21f5, 0x21f8, 0x21fb, 0x21fe, 0x2201, 0x2204,
- 0x2207, 0x220a, 0x220d, 0x2210, 0x2213, 0x2216, 0x2219, 0x221c,
- 0x221f, 0x2222, 0x2225, 0x2228, 0x222b, 0x222e, 0x2231, 0x2234,
- 0x2237, 0x223a, 0x223d, 0x2240, 0x2243, 0x2246, 0x2249, 0x224c,
- 0x224f, 0x2252, 0x2255, 0x2259, 0x225d, 0x2261, 0x2264, 0x2267,
- 0x226a, 0x226d, 0x2270, 0x2273, 0x2276, 0x2279, 0x227c, 0x227f,
-
- 0x2282, 0x2285, 0x2288, 0x228b, 0x228e, 0x2291, 0x2294, 0x2297,
- 0x229a, 0x229d, 0x22a0, 0x22a3, 0x22a6, 0x22a9, 0x22ac, 0x22af,
- 0x22b2, 0x22b5, 0x22b8, 0x22bb, 0x22be, 0x22c1, 0x22c4, 0x22c7,
- 0x22ca, 0x22cd, 0x22d0, 0x22d3, 0x22d6, 0x22d9, 0x22dc, 0x22df,
- 0x22e2, 0x22e5, 0x22e8, 0x22eb, 0x22ee, 0x22f1, 0x22f4, 0x22f7,
- 0x22fa, 0x22fd, 0x2300, 0x2303, 0x2306, 0x2309, 0x230c, 0x230f,
- 0x2312, 0x2315, 0x2318, 0x231b, 0x231e, 0x2321, 0x2324, 0x2327,
- 0x232a, 0x232d, 0x2330, 0x2333, 0x2336, 0x2339, 0xffff, 0xffff,
- 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0x233c, 0x2340, 0x2344, 0x2348, 0x234c, 0x2350, 0x2354, 0x2358,
- 0x235c, 0x2360, 0x2364, 0x2368, 0x236c, 0x2370, 0x2374, 0x2378,
- 0x237c, 0x2380, 0x2384, 0x2388, 0x238c, 0x2390, 0x2394, 0x2398,
- 0x239c, 0x23a0, 0x23a4, 0x23a8, 0x23ac, 0x23b0, 0x23b4, 0x23b8,
- 0x23bc, 0x23c0, 0x23c4, 0x23c8, 0x23cc, 0x23d0, 0x23d4, 0x23d8,
- 0x23dc, 0x23e0, 0x23e4, 0x23e8, 0x23ec, 0x23f0, 0x23f4, 0x23f8,
- 0x23fc, 0x2400, 0x2404, 0x2408, 0x240c, 0x2410, 0x2414, 0x2418,
- 0x241c, 0x2420, 0x2424, 0x2428, 0x242c, 0x2430, 0x2434, 0x2438,
- 0xffff, 0xffff, 0x243c, 0x2440, 0x2444, 0x2448, 0x244c, 0x2450,
- 0x2454, 0x2458, 0x245c, 0x2460, 0x2464, 0x2468, 0x246c, 0x2470,
- 0x2474, 0x2478, 0x247c, 0x2480, 0x2484, 0x2488, 0x248c, 0x2490,
- 0x2494, 0x2498, 0x249c, 0x24a0, 0x24a4, 0x24a8, 0x24ac, 0x24b0,
- 0x24b4, 0x24b8, 0x24bc, 0x24c0, 0x24c4, 0x24c8, 0x24cc, 0x24d0,
- 0x24d4, 0x24d8, 0x24dc, 0x24e0, 0x24e4, 0x24e8, 0x24ec, 0x24f0,
- 0x24f4, 0x24f8, 0x24fc, 0x2500, 0x2504, 0x2508, 0x250c, 0x2510,
+ 0xffff, 0xffff, 0xffff, 0x1dc0, 0x1dc3, 0x1dc6, 0x1dc9, 0x1dcc,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1dcf, 0xffff, 0x1dd2,
+ 0x1dd5, 0x1dd7, 0x1dd9, 0x1ddb, 0x1ddd, 0x1ddf, 0x1de1, 0x1de3,
+ 0x1de5, 0x1de7, 0x1de9, 0x1dec, 0x1def, 0x1df2, 0x1df5, 0x1df8,
+ 0x1dfb, 0x1dfe, 0x1e01, 0x1e04, 0x1e07, 0x1e0a, 0x1e0d, 0xffff,
+ 0x1e10, 0x1e13, 0x1e16, 0x1e19, 0x1e1c, 0xffff, 0x1e1f, 0xffff,
+ 0x1e22, 0x1e25, 0xffff, 0x1e28, 0x1e2b, 0xffff, 0x1e2e, 0x1e31,
+ 0x1e34, 0x1e37, 0x1e3a, 0x1e3d, 0x1e40, 0x1e43, 0x1e46, 0x1e49,
+ 0x1e4c, 0x1e4e, 0x1e50, 0x1e52, 0x1e54, 0x1e56, 0x1e58, 0x1e5a,
+ 0x1e5c, 0x1e5e, 0x1e60, 0x1e62, 0x1e64, 0x1e66, 0x1e68, 0x1e6a,
+ 0x1e6c, 0x1e6e, 0x1e70, 0x1e72, 0x1e74, 0x1e76, 0x1e78, 0x1e7a,
+ 0x1e7c, 0x1e7e, 0x1e80, 0x1e82, 0x1e84, 0x1e86, 0x1e88, 0x1e8a,
+ 0x1e8c, 0x1e8e, 0x1e90, 0x1e92, 0x1e94, 0x1e96, 0x1e98, 0x1e9a,
+ 0x1e9c, 0x1e9e, 0x1ea0, 0x1ea2, 0x1ea4, 0x1ea6, 0x1ea8, 0x1eaa,
+ 0x1eac, 0x1eae, 0x1eb0, 0x1eb2, 0x1eb4, 0x1eb6, 0x1eb8, 0x1eba,
+ 0x1ebc, 0x1ebe, 0x1ec0, 0x1ec2, 0x1ec4, 0x1ec6, 0x1ec8, 0x1eca,
+ 0x1ecc, 0x1ece, 0x1ed0, 0x1ed2, 0x1ed4, 0x1ed6, 0x1ed8, 0x1eda,
+ 0x1edc, 0x1ede, 0x1ee0, 0x1ee2, 0x1ee4, 0x1ee6, 0x1ee8, 0x1eea,
+ 0x1eec, 0x1eee, 0x1ef0, 0x1ef2, 0x1ef4, 0x1ef6, 0x1ef8, 0x1efa,
+ 0x1efc, 0x1efe, 0x1f00, 0x1f02, 0x1f04, 0x1f06, 0x1f08, 0x1f0a,
+ 0x1f0c, 0x1f0e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0x1f10, 0x1f12, 0x1f14, 0x1f16, 0x1f18,
+ 0x1f1a, 0x1f1c, 0x1f1e, 0x1f20, 0x1f22, 0x1f24, 0x1f26, 0x1f28,
+ 0x1f2a, 0x1f2c, 0x1f2e, 0x1f30, 0x1f32, 0x1f34, 0x1f36, 0x1f38,
+ 0x1f3a, 0x1f3c, 0x1f3e, 0x1f41, 0x1f44, 0x1f47, 0x1f4a, 0x1f4d,
+ 0x1f50, 0x1f53, 0x1f56, 0x1f59, 0x1f5c, 0x1f5f, 0x1f62, 0x1f65,
+ 0x1f68, 0x1f6b, 0x1f6e, 0x1f71, 0x1f74, 0x1f76, 0x1f78, 0x1f7a,
+
+ 0x1f7c, 0x1f7f, 0x1f82, 0x1f85, 0x1f88, 0x1f8b, 0x1f8e, 0x1f91,
+ 0x1f94, 0x1f97, 0x1f9a, 0x1f9d, 0x1fa0, 0x1fa3, 0x1fa6, 0x1fa9,
+ 0x1fac, 0x1faf, 0x1fb2, 0x1fb5, 0x1fb8, 0x1fbb, 0x1fbe, 0x1fc1,
+ 0x1fc4, 0x1fc7, 0x1fca, 0x1fcd, 0x1fd0, 0x1fd3, 0x1fd6, 0x1fd9,
+ 0x1fdc, 0x1fdf, 0x1fe2, 0x1fe5, 0x1fe8, 0x1feb, 0x1fee, 0x1ff1,
+ 0x1ff4, 0x1ff7, 0x1ffa, 0x1ffd, 0x2000, 0x2003, 0x2006, 0x2009,
+ 0x200c, 0x200f, 0x2012, 0x2015, 0x2018, 0x201b, 0x201e, 0x2021,
+ 0x2024, 0x2027, 0x202a, 0x202d, 0x2030, 0x2033, 0x2036, 0x2039,
+ 0x203c, 0x203f, 0x2042, 0x2045, 0x2048, 0x204b, 0x204e, 0x2051,
+ 0x2054, 0x2057, 0x205a, 0x205d, 0x2060, 0x2063, 0x2066, 0x2069,
+ 0x206c, 0x206f, 0x2072, 0x2075, 0x2078, 0x207b, 0x207e, 0x2081,
+ 0x2084, 0x2087, 0x208a, 0x208d, 0x2090, 0x2093, 0x2096, 0x209a,
+ 0x209e, 0x20a2, 0x20a6, 0x20aa, 0x20ae, 0x20b1, 0x20b4, 0x20b7,
+ 0x20ba, 0x20bd, 0x20c0, 0x20c3, 0x20c6, 0x20c9, 0x20cc, 0x20cf,
+ 0x20d2, 0x20d5, 0x20d8, 0x20db, 0x20de, 0x20e1, 0x20e4, 0x20e7,
+ 0x20ea, 0x20ed, 0x20f0, 0x20f3, 0x20f6, 0x20f9, 0x20fc, 0x20ff,
+ 0x2102, 0x2105, 0x2108, 0x210b, 0x210e, 0x2111, 0x2114, 0x2117,
+ 0x211a, 0x211d, 0x2120, 0x2123, 0x2126, 0x2129, 0x212c, 0x212f,
+ 0x2132, 0x2135, 0x2138, 0x213b, 0x213e, 0x2141, 0x2144, 0x2147,
+ 0x214a, 0x214d, 0x2150, 0x2153, 0x2156, 0x2159, 0x215c, 0x215f,
+ 0x2162, 0x2165, 0x2168, 0x216b, 0x216e, 0x2171, 0x2174, 0x2177,
+ 0x217a, 0x217d, 0x2180, 0x2183, 0x2186, 0x2189, 0x218c, 0x218f,
+ 0x2192, 0x2195, 0x2198, 0x219b, 0x219e, 0x21a1, 0x21a4, 0x21a7,
+ 0x21aa, 0x21ad, 0x21b0, 0x21b3, 0x21b6, 0x21b9, 0x21bc, 0x21bf,
+ 0x21c2, 0x21c5, 0x21c8, 0x21cb, 0x21ce, 0x21d1, 0x21d4, 0x21d7,
+ 0x21da, 0x21dd, 0x21e0, 0x21e3, 0x21e6, 0x21e9, 0x21ec, 0x21ef,
+ 0x21f2, 0x21f5, 0x21f8, 0x21fb, 0x21fe, 0x2201, 0x2204, 0x2207,
+ 0x220a, 0x220d, 0x2210, 0x2213, 0x2216, 0x2219, 0x221c, 0x221f,
+ 0x2222, 0x2225, 0x2228, 0x222b, 0x222e, 0x2231, 0x2234, 0x2237,
+ 0x223a, 0x223d, 0x2240, 0x2243, 0x2246, 0x2249, 0x224c, 0x224f,
+ 0x2252, 0x2255, 0x2258, 0x225c, 0x2260, 0x2264, 0x2267, 0x226a,
+ 0x226d, 0x2270, 0x2273, 0x2276, 0x2279, 0x227c, 0x227f, 0x2282,
+
+ 0x2285, 0x2288, 0x228b, 0x228e, 0x2291, 0x2294, 0x2297, 0x229a,
+ 0x229d, 0x22a0, 0x22a3, 0x22a6, 0x22a9, 0x22ac, 0x22af, 0x22b2,
+ 0x22b5, 0x22b8, 0x22bb, 0x22be, 0x22c1, 0x22c4, 0x22c7, 0x22ca,
+ 0x22cd, 0x22d0, 0x22d3, 0x22d6, 0x22d9, 0x22dc, 0x22df, 0x22e2,
+ 0x22e5, 0x22e8, 0x22eb, 0x22ee, 0x22f1, 0x22f4, 0x22f7, 0x22fa,
+ 0x22fd, 0x2300, 0x2303, 0x2306, 0x2309, 0x230c, 0x230f, 0x2312,
+ 0x2315, 0x2318, 0x231b, 0x231e, 0x2321, 0x2324, 0x2327, 0x232a,
+ 0x232d, 0x2330, 0x2333, 0x2336, 0x2339, 0x233c, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0x233f, 0x2343, 0x2347, 0x234b, 0x234f, 0x2353, 0x2357, 0x235b,
+ 0x235f, 0x2363, 0x2367, 0x236b, 0x236f, 0x2373, 0x2377, 0x237b,
+ 0x237f, 0x2383, 0x2387, 0x238b, 0x238f, 0x2393, 0x2397, 0x239b,
+ 0x239f, 0x23a3, 0x23a7, 0x23ab, 0x23af, 0x23b3, 0x23b7, 0x23bb,
+ 0x23bf, 0x23c3, 0x23c7, 0x23cb, 0x23cf, 0x23d3, 0x23d7, 0x23db,
+ 0x23df, 0x23e3, 0x23e7, 0x23eb, 0x23ef, 0x23f3, 0x23f7, 0x23fb,
+ 0x23ff, 0x2403, 0x2407, 0x240b, 0x240f, 0x2413, 0x2417, 0x241b,
+ 0x241f, 0x2423, 0x2427, 0x242b, 0x242f, 0x2433, 0x2437, 0x243b,
+ 0xffff, 0xffff, 0x243f, 0x2443, 0x2447, 0x244b, 0x244f, 0x2453,
+ 0x2457, 0x245b, 0x245f, 0x2463, 0x2467, 0x246b, 0x246f, 0x2473,
+ 0x2477, 0x247b, 0x247f, 0x2483, 0x2487, 0x248b, 0x248f, 0x2493,
+ 0x2497, 0x249b, 0x249f, 0x24a3, 0x24a7, 0x24ab, 0x24af, 0x24b3,
+ 0x24b7, 0x24bb, 0x24bf, 0x24c3, 0x24c7, 0x24cb, 0x24cf, 0x24d3,
+ 0x24d7, 0x24db, 0x24df, 0x24e3, 0x24e7, 0x24eb, 0x24ef, 0x24f3,
+ 0x24f7, 0x24fb, 0x24ff, 0x2503, 0x2507, 0x250b, 0x250f, 0x2513,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0x2514, 0x2518, 0x251c, 0x2521, 0x2526, 0x252b, 0x2530, 0x2535,
- 0x253a, 0x253f, 0x2543, 0x2556, 0x255f, 0xffff, 0xffff, 0xffff,
+ 0x2517, 0x251b, 0x251f, 0x2524, 0x2529, 0x252e, 0x2533, 0x2538,
+ 0x253d, 0x2542, 0x2546, 0x2559, 0x2562, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0x2564, 0x2566, 0x2568, 0x256a, 0x256c, 0x256e, 0x2570, 0x2572,
- 0x2574, 0x2576, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0x2567, 0x2569, 0x256b, 0x256d, 0x256f, 0x2571, 0x2573, 0x2575,
+ 0x2577, 0x2579, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0x2578, 0x257a, 0x257c, 0x257e, 0x2580, 0x2582, 0x2584, 0x2586,
- 0x2588, 0x258a, 0x258c, 0x258e, 0x2590, 0x2592, 0x2594, 0x2596,
- 0x2598, 0x259a, 0x259c, 0x259e, 0x25a0, 0xffff, 0xffff, 0x25a2,
- 0x25a4, 0x25a6, 0x25a8, 0x25aa, 0x25ac, 0x25ae, 0x25b0, 0x25b2,
- 0x25b4, 0x25b6, 0x25b8, 0xffff, 0x25ba, 0x25bc, 0x25be, 0x25c0,
- 0x25c2, 0x25c4, 0x25c6, 0x25c8, 0x25ca, 0x25cc, 0x25ce, 0x25d0,
- 0x25d2, 0x25d4, 0x25d6, 0x25d8, 0x25da, 0x25dc, 0x25de, 0xffff,
- 0x25e0, 0x25e2, 0x25e4, 0x25e6, 0xffff, 0xffff, 0xffff, 0xffff,
- 0x25e8, 0x25eb, 0x25ee, 0xffff, 0x25f1, 0xffff, 0x25f4, 0x25f7,
- 0x25fa, 0x25fd, 0x2600, 0x2603, 0x2606, 0x2609, 0x260c, 0x260f,
- 0x2612, 0x2614, 0x2616, 0x2618, 0x261a, 0x261c, 0x261e, 0x2620,
- 0x2622, 0x2624, 0x2626, 0x2628, 0x262a, 0x262c, 0x262e, 0x2630,
- 0x2632, 0x2634, 0x2636, 0x2638, 0x263a, 0x263c, 0x263e, 0x2640,
- 0x2642, 0x2644, 0x2646, 0x2648, 0x264a, 0x264c, 0x264e, 0x2650,
- 0x2652, 0x2654, 0x2656, 0x2658, 0x265a, 0x265c, 0x265e, 0x2660,
- 0x2662, 0x2664, 0x2666, 0x2668, 0x266a, 0x266c, 0x266e, 0x2670,
- 0x2672, 0x2674, 0x2676, 0x2678, 0x267a, 0x267c, 0x267e, 0x2680,
- 0x2682, 0x2684, 0x2686, 0x2688, 0x268a, 0x268c, 0x268e, 0x2690,
- 0x2692, 0x2694, 0x2696, 0x2698, 0x269a, 0x269c, 0x269e, 0x26a0,
- 0x26a2, 0x26a4, 0x26a6, 0x26a8, 0x26aa, 0x26ac, 0x26ae, 0x26b0,
- 0x26b2, 0x26b4, 0x26b6, 0x26b8, 0x26ba, 0x26bc, 0x26be, 0x26c0,
- 0x26c2, 0x26c4, 0x26c6, 0x26c8, 0x26ca, 0x26cc, 0x26ce, 0x26d0,
- 0x26d2, 0x26d4, 0x26d6, 0x26d8, 0x26da, 0x26dc, 0x26de, 0x26e0,
- 0x26e2, 0x26e4, 0x26e6, 0x26e8, 0x26ea, 0x26ec, 0x26ee, 0x26f0,
- 0x26f2, 0x26f4, 0x26f6, 0x26f8, 0x26fa, 0x26fc, 0x26ff, 0x2702,
- 0x2705, 0x2708, 0x270b, 0x270e, 0x2711, 0xffff, 0xffff, 0xffff,
+ 0x257b, 0x257d, 0x257f, 0x2581, 0x2583, 0x2585, 0x2587, 0x2589,
+ 0x258b, 0x258d, 0x258f, 0x2591, 0x2593, 0x2595, 0x2597, 0x2599,
+ 0x259b, 0x259d, 0x259f, 0x25a1, 0x25a3, 0xffff, 0xffff, 0x25a5,
+ 0x25a7, 0x25a9, 0x25ab, 0x25ad, 0x25af, 0x25b1, 0x25b3, 0x25b5,
+ 0x25b7, 0x25b9, 0x25bb, 0xffff, 0x25bd, 0x25bf, 0x25c1, 0x25c3,
+ 0x25c5, 0x25c7, 0x25c9, 0x25cb, 0x25cd, 0x25cf, 0x25d1, 0x25d3,
+ 0x25d5, 0x25d7, 0x25d9, 0x25db, 0x25dd, 0x25df, 0x25e1, 0xffff,
+ 0x25e3, 0x25e5, 0x25e7, 0x25e9, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0x25eb, 0x25ee, 0x25f1, 0xffff, 0x25f4, 0xffff, 0x25f7, 0x25fa,
+ 0x25fd, 0x2600, 0x2603, 0x2606, 0x2609, 0x260c, 0x260f, 0x2612,
+ 0x2615, 0x2617, 0x2619, 0x261b, 0x261d, 0x261f, 0x2621, 0x2623,
+ 0x2625, 0x2627, 0x2629, 0x262b, 0x262d, 0x262f, 0x2631, 0x2633,
+ 0x2635, 0x2637, 0x2639, 0x263b, 0x263d, 0x263f, 0x2641, 0x2643,
+ 0x2645, 0x2647, 0x2649, 0x264b, 0x264d, 0x264f, 0x2651, 0x2653,
+ 0x2655, 0x2657, 0x2659, 0x265b, 0x265d, 0x265f, 0x2661, 0x2663,
+ 0x2665, 0x2667, 0x2669, 0x266b, 0x266d, 0x266f, 0x2671, 0x2673,
+ 0x2675, 0x2677, 0x2679, 0x267b, 0x267d, 0x267f, 0x2681, 0x2683,
+ 0x2685, 0x2687, 0x2689, 0x268b, 0x268d, 0x268f, 0x2691, 0x2693,
+ 0x2695, 0x2697, 0x2699, 0x269b, 0x269d, 0x269f, 0x26a1, 0x26a3,
+ 0x26a5, 0x26a7, 0x26a9, 0x26ab, 0x26ad, 0x26af, 0x26b1, 0x26b3,
+ 0x26b5, 0x26b7, 0x26b9, 0x26bb, 0x26bd, 0x26bf, 0x26c1, 0x26c3,
+ 0x26c5, 0x26c7, 0x26c9, 0x26cb, 0x26cd, 0x26cf, 0x26d1, 0x26d3,
+ 0x26d5, 0x26d7, 0x26d9, 0x26db, 0x26dd, 0x26df, 0x26e1, 0x26e3,
+ 0x26e5, 0x26e7, 0x26e9, 0x26eb, 0x26ed, 0x26ef, 0x26f1, 0x26f3,
+ 0x26f5, 0x26f7, 0x26f9, 0x26fb, 0x26fd, 0x26ff, 0x2702, 0x2705,
+ 0x2708, 0x270b, 0x270e, 0x2711, 0x2714, 0xffff, 0xffff, 0xffff,
- 0xffff, 0x2714, 0x2716, 0x2718, 0x271a, 0x271c, 0x271e, 0x2720,
- 0x2722, 0x2724, 0x2726, 0x2728, 0x272a, 0x272c, 0x272e, 0x2730,
- 0x2732, 0x2734, 0x2736, 0x2738, 0x273a, 0x273c, 0x273e, 0x2740,
- 0x2742, 0x2744, 0x2746, 0x2748, 0x274a, 0x274c, 0x274e, 0x2750,
- 0x2752, 0x2754, 0x2756, 0x2758, 0x275a, 0x275c, 0x275e, 0x2760,
- 0x2762, 0x2764, 0x2766, 0x2768, 0x276a, 0x276c, 0x276e, 0x2770,
- 0x2772, 0x2774, 0x2776, 0x2778, 0x277a, 0x277c, 0x277e, 0x2780,
- 0x2782, 0x2784, 0x2786, 0x2788, 0x278a, 0x278c, 0x278e, 0x2790,
- 0x2792, 0x2794, 0x2796, 0x2798, 0x279a, 0x279c, 0x279e, 0x27a0,
- 0x27a2, 0x27a4, 0x27a6, 0x27a8, 0x27aa, 0x27ac, 0x27ae, 0x27b0,
- 0x27b2, 0x27b4, 0x27b6, 0x27b8, 0x27ba, 0x27bc, 0x27be, 0x27c0,
- 0x27c2, 0x27c4, 0x27c6, 0x27c8, 0x27ca, 0x27cc, 0x27ce, 0x27d0,
- 0x27d2, 0x27d4, 0x27d6, 0x27d8, 0x27da, 0x27dc, 0x27de, 0x27e0,
- 0x27e2, 0x27e4, 0x27e6, 0x27e8, 0x27ea, 0x27ec, 0x27ee, 0x27f0,
- 0x27f2, 0x27f4, 0x27f6, 0x27f8, 0x27fa, 0x27fc, 0x27fe, 0x2800,
- 0x2802, 0x2804, 0x2806, 0x2808, 0x280a, 0x280c, 0x280e, 0x2810,
- 0x2812, 0x2814, 0x2816, 0x2818, 0x281a, 0x281c, 0x281e, 0x2820,
- 0x2822, 0x2824, 0x2826, 0x2828, 0x282a, 0x282c, 0x282e, 0x2830,
- 0x2832, 0x2834, 0x2836, 0x2838, 0x283a, 0x283c, 0x283e, 0x2840,
- 0x2842, 0x2844, 0x2846, 0x2848, 0x284a, 0x284c, 0x284e, 0x2850,
- 0x2852, 0x2854, 0x2856, 0x2858, 0x285a, 0x285c, 0x285e, 0x2860,
- 0x2862, 0x2864, 0x2866, 0x2868, 0x286a, 0x286c, 0x286e, 0x2870,
- 0x2872, 0x2874, 0x2876, 0x2878, 0x287a, 0x287c, 0x287e, 0x2880,
- 0x2882, 0x2884, 0x2886, 0x2888, 0x288a, 0x288c, 0x288e, 0xffff,
- 0xffff, 0xffff, 0x2890, 0x2892, 0x2894, 0x2896, 0x2898, 0x289a,
- 0xffff, 0xffff, 0x289c, 0x289e, 0x28a0, 0x28a2, 0x28a4, 0x28a6,
- 0xffff, 0xffff, 0x28a8, 0x28aa, 0x28ac, 0x28ae, 0x28b0, 0x28b2,
- 0xffff, 0xffff, 0x28b4, 0x28b6, 0x28b8, 0xffff, 0xffff, 0xffff,
- 0x28ba, 0x28bc, 0x28be, 0x28c0, 0x28c2, 0x28c4, 0x28c6, 0xffff,
- 0x28c8, 0x28ca, 0x28cc, 0x28ce, 0x28d0, 0x28d2, 0x28d4, 0xffff,
+ 0xffff, 0x2717, 0x2719, 0x271b, 0x271d, 0x271f, 0x2721, 0x2723,
+ 0x2725, 0x2727, 0x2729, 0x272b, 0x272d, 0x272f, 0x2731, 0x2733,
+ 0x2735, 0x2737, 0x2739, 0x273b, 0x273d, 0x273f, 0x2741, 0x2743,
+ 0x2745, 0x2747, 0x2749, 0x274b, 0x274d, 0x274f, 0x2751, 0x2753,
+ 0x2755, 0x2757, 0x2759, 0x275b, 0x275d, 0x275f, 0x2761, 0x2763,
+ 0x2765, 0x2767, 0x2769, 0x276b, 0x276d, 0x276f, 0x2771, 0x2773,
+ 0x2775, 0x2777, 0x2779, 0x277b, 0x277d, 0x277f, 0x2781, 0x2783,
+ 0x2785, 0x2787, 0x2789, 0x278b, 0x278d, 0x278f, 0x2791, 0x2793,
+ 0x2795, 0x2797, 0x2799, 0x279b, 0x279d, 0x279f, 0x27a1, 0x27a3,
+ 0x27a5, 0x27a7, 0x27a9, 0x27ab, 0x27ad, 0x27af, 0x27b1, 0x27b3,
+ 0x27b5, 0x27b7, 0x27b9, 0x27bb, 0x27bd, 0x27bf, 0x27c1, 0x27c3,
+ 0x27c5, 0x27c7, 0x27c9, 0x27cb, 0x27cd, 0x27cf, 0x27d1, 0x27d3,
+ 0x27d5, 0x27d7, 0x27d9, 0x27db, 0x27dd, 0x27df, 0x27e1, 0x27e3,
+ 0x27e5, 0x27e7, 0x27e9, 0x27eb, 0x27ed, 0x27ef, 0x27f1, 0x27f3,
+ 0x27f5, 0x27f7, 0x27f9, 0x27fb, 0x27fd, 0x27ff, 0x2801, 0x2803,
+ 0x2805, 0x2807, 0x2809, 0x280b, 0x280d, 0x280f, 0x2811, 0x2813,
+ 0x2815, 0x2817, 0x2819, 0x281b, 0x281d, 0x281f, 0x2821, 0x2823,
+ 0x2825, 0x2827, 0x2829, 0x282b, 0x282d, 0x282f, 0x2831, 0x2833,
+ 0x2835, 0x2837, 0x2839, 0x283b, 0x283d, 0x283f, 0x2841, 0x2843,
+ 0x2845, 0x2847, 0x2849, 0x284b, 0x284d, 0x284f, 0x2851, 0x2853,
+ 0x2855, 0x2857, 0x2859, 0x285b, 0x285d, 0x285f, 0x2861, 0x2863,
+ 0x2865, 0x2867, 0x2869, 0x286b, 0x286d, 0x286f, 0x2871, 0x2873,
+ 0x2875, 0x2877, 0x2879, 0x287b, 0x287d, 0x287f, 0x2881, 0x2883,
+ 0x2885, 0x2887, 0x2889, 0x288b, 0x288d, 0x288f, 0x2891, 0xffff,
+ 0xffff, 0xffff, 0x2893, 0x2895, 0x2897, 0x2899, 0x289b, 0x289d,
+ 0xffff, 0xffff, 0x289f, 0x28a1, 0x28a3, 0x28a5, 0x28a7, 0x28a9,
+ 0xffff, 0xffff, 0x28ab, 0x28ad, 0x28af, 0x28b1, 0x28b3, 0x28b5,
+ 0xffff, 0xffff, 0x28b7, 0x28b9, 0x28bb, 0xffff, 0xffff, 0xffff,
+ 0x28bd, 0x28bf, 0x28c1, 0x28c3, 0x28c5, 0x28c7, 0x28c9, 0xffff,
+ 0x28cb, 0x28cd, 0x28cf, 0x28d1, 0x28d3, 0x28d5, 0x28d7, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
@@ -10452,9 +10960,9 @@ static const unsigned short uc_decomposition_trie[] = {
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0xffff, 0xffff, 0x28d6, 0xffff, 0x28db, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0x28d9, 0xffff, 0x28de, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0xffff, 0xffff, 0xffff, 0x28e0, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0x28e3, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
@@ -10471,7 +10979,7 @@ static const unsigned short uc_decomposition_trie[] = {
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x28e5, 0x28ea,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x28e8, 0x28ed,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
@@ -10508,7 +11016,7 @@ static const unsigned short uc_decomposition_trie[] = {
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0xffff, 0xffff, 0xffff, 0x28ef, 0x28f4, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0x28f2, 0x28f7, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
@@ -10555,7 +11063,7 @@ static const unsigned short uc_decomposition_trie[] = {
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0xffff, 0xffff, 0xffff, 0x28f9, 0x28fe, 0xffff, 0x2903, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0x28fc, 0x2901, 0xffff, 0x2906, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
@@ -10588,7 +11096,7 @@ static const unsigned short uc_decomposition_trie[] = {
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0xffff, 0xffff, 0x2908, 0x290d, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0x290b, 0x2910, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
@@ -10609,8 +11117,8 @@ static const unsigned short uc_decomposition_trie[] = {
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2912, 0x2917,
- 0x291c, 0x2921, 0x2926, 0x292b, 0x2930, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2915, 0x291a,
+ 0x291f, 0x2924, 0x2929, 0x292e, 0x2933, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
@@ -10621,8 +11129,8 @@ static const unsigned short uc_decomposition_trie[] = {
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0xffff, 0xffff, 0xffff, 0x2935, 0x293a, 0x293f, 0x2944, 0x2949,
- 0x294e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0x2938, 0x293d, 0x2942, 0x2947, 0x294c,
+ 0x2951, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
@@ -10631,162 +11139,162 @@ static const unsigned short uc_decomposition_trie[] = {
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0x2953, 0x2955, 0x2957, 0x2959, 0x295b, 0x295d, 0x295f, 0x2961,
- 0x2963, 0x2965, 0x2967, 0x2969, 0x296b, 0x296d, 0x296f, 0x2971,
- 0x2973, 0x2975, 0x2977, 0x2979, 0x297b, 0x297d, 0x297f, 0x2981,
- 0x2983, 0x2985, 0x2987, 0x2989, 0x298b, 0x298d, 0x298f, 0x2991,
- 0x2993, 0x2995, 0x2997, 0x2999, 0x299b, 0x299d, 0x299f, 0x29a1,
- 0x29a3, 0x29a5, 0x29a7, 0x29a9, 0x29ab, 0x29ad, 0x29af, 0x29b1,
- 0x29b3, 0x29b5, 0x29b7, 0x29b9, 0x29bb, 0x29bd, 0x29bf, 0x29c1,
- 0x29c3, 0x29c5, 0x29c7, 0x29c9, 0x29cb, 0x29cd, 0x29cf, 0x29d1,
- 0x29d3, 0x29d5, 0x29d7, 0x29d9, 0x29db, 0x29dd, 0x29df, 0x29e1,
- 0x29e3, 0x29e5, 0x29e7, 0x29e9, 0x29eb, 0x29ed, 0x29ef, 0x29f1,
- 0x29f3, 0x29f5, 0x29f7, 0x29f9, 0x29fb, 0xffff, 0x29fd, 0x29ff,
- 0x2a01, 0x2a03, 0x2a05, 0x2a07, 0x2a09, 0x2a0b, 0x2a0d, 0x2a0f,
- 0x2a11, 0x2a13, 0x2a15, 0x2a17, 0x2a19, 0x2a1b, 0x2a1d, 0x2a1f,
- 0x2a21, 0x2a23, 0x2a25, 0x2a27, 0x2a29, 0x2a2b, 0x2a2d, 0x2a2f,
- 0x2a31, 0x2a33, 0x2a35, 0x2a37, 0x2a39, 0x2a3b, 0x2a3d, 0x2a3f,
- 0x2a41, 0x2a43, 0x2a45, 0x2a47, 0x2a49, 0x2a4b, 0x2a4d, 0x2a4f,
- 0x2a51, 0x2a53, 0x2a55, 0x2a57, 0x2a59, 0x2a5b, 0x2a5d, 0x2a5f,
- 0x2a61, 0x2a63, 0x2a65, 0x2a67, 0x2a69, 0x2a6b, 0x2a6d, 0x2a6f,
- 0x2a71, 0x2a73, 0x2a75, 0x2a77, 0x2a79, 0x2a7b, 0x2a7d, 0x2a7f,
- 0x2a81, 0x2a83, 0x2a85, 0x2a87, 0x2a89, 0xffff, 0x2a8b, 0x2a8d,
- 0xffff, 0xffff, 0x2a8f, 0xffff, 0xffff, 0x2a91, 0x2a93, 0xffff,
- 0xffff, 0x2a95, 0x2a97, 0x2a99, 0x2a9b, 0xffff, 0x2a9d, 0x2a9f,
- 0x2aa1, 0x2aa3, 0x2aa5, 0x2aa7, 0x2aa9, 0x2aab, 0x2aad, 0x2aaf,
- 0x2ab1, 0x2ab3, 0xffff, 0x2ab5, 0xffff, 0x2ab7, 0x2ab9, 0x2abb,
- 0x2abd, 0x2abf, 0x2ac1, 0x2ac3, 0xffff, 0x2ac5, 0x2ac7, 0x2ac9,
- 0x2acb, 0x2acd, 0x2acf, 0x2ad1, 0x2ad3, 0x2ad5, 0x2ad7, 0x2ad9,
- 0x2adb, 0x2add, 0x2adf, 0x2ae1, 0x2ae3, 0x2ae5, 0x2ae7, 0x2ae9,
- 0x2aeb, 0x2aed, 0x2aef, 0x2af1, 0x2af3, 0x2af5, 0x2af7, 0x2af9,
- 0x2afb, 0x2afd, 0x2aff, 0x2b01, 0x2b03, 0x2b05, 0x2b07, 0x2b09,
- 0x2b0b, 0x2b0d, 0x2b0f, 0x2b11, 0x2b13, 0x2b15, 0x2b17, 0x2b19,
- 0x2b1b, 0x2b1d, 0x2b1f, 0x2b21, 0x2b23, 0x2b25, 0x2b27, 0x2b29,
- 0x2b2b, 0x2b2d, 0x2b2f, 0x2b31, 0x2b33, 0x2b35, 0x2b37, 0x2b39,
+ 0x2956, 0x2958, 0x295a, 0x295c, 0x295e, 0x2960, 0x2962, 0x2964,
+ 0x2966, 0x2968, 0x296a, 0x296c, 0x296e, 0x2970, 0x2972, 0x2974,
+ 0x2976, 0x2978, 0x297a, 0x297c, 0x297e, 0x2980, 0x2982, 0x2984,
+ 0x2986, 0x2988, 0x298a, 0x298c, 0x298e, 0x2990, 0x2992, 0x2994,
+ 0x2996, 0x2998, 0x299a, 0x299c, 0x299e, 0x29a0, 0x29a2, 0x29a4,
+ 0x29a6, 0x29a8, 0x29aa, 0x29ac, 0x29ae, 0x29b0, 0x29b2, 0x29b4,
+ 0x29b6, 0x29b8, 0x29ba, 0x29bc, 0x29be, 0x29c0, 0x29c2, 0x29c4,
+ 0x29c6, 0x29c8, 0x29ca, 0x29cc, 0x29ce, 0x29d0, 0x29d2, 0x29d4,
+ 0x29d6, 0x29d8, 0x29da, 0x29dc, 0x29de, 0x29e0, 0x29e2, 0x29e4,
+ 0x29e6, 0x29e8, 0x29ea, 0x29ec, 0x29ee, 0x29f0, 0x29f2, 0x29f4,
+ 0x29f6, 0x29f8, 0x29fa, 0x29fc, 0x29fe, 0xffff, 0x2a00, 0x2a02,
+ 0x2a04, 0x2a06, 0x2a08, 0x2a0a, 0x2a0c, 0x2a0e, 0x2a10, 0x2a12,
+ 0x2a14, 0x2a16, 0x2a18, 0x2a1a, 0x2a1c, 0x2a1e, 0x2a20, 0x2a22,
+ 0x2a24, 0x2a26, 0x2a28, 0x2a2a, 0x2a2c, 0x2a2e, 0x2a30, 0x2a32,
+ 0x2a34, 0x2a36, 0x2a38, 0x2a3a, 0x2a3c, 0x2a3e, 0x2a40, 0x2a42,
+ 0x2a44, 0x2a46, 0x2a48, 0x2a4a, 0x2a4c, 0x2a4e, 0x2a50, 0x2a52,
+ 0x2a54, 0x2a56, 0x2a58, 0x2a5a, 0x2a5c, 0x2a5e, 0x2a60, 0x2a62,
+ 0x2a64, 0x2a66, 0x2a68, 0x2a6a, 0x2a6c, 0x2a6e, 0x2a70, 0x2a72,
+ 0x2a74, 0x2a76, 0x2a78, 0x2a7a, 0x2a7c, 0x2a7e, 0x2a80, 0x2a82,
+ 0x2a84, 0x2a86, 0x2a88, 0x2a8a, 0x2a8c, 0xffff, 0x2a8e, 0x2a90,
+ 0xffff, 0xffff, 0x2a92, 0xffff, 0xffff, 0x2a94, 0x2a96, 0xffff,
+ 0xffff, 0x2a98, 0x2a9a, 0x2a9c, 0x2a9e, 0xffff, 0x2aa0, 0x2aa2,
+ 0x2aa4, 0x2aa6, 0x2aa8, 0x2aaa, 0x2aac, 0x2aae, 0x2ab0, 0x2ab2,
+ 0x2ab4, 0x2ab6, 0xffff, 0x2ab8, 0xffff, 0x2aba, 0x2abc, 0x2abe,
+ 0x2ac0, 0x2ac2, 0x2ac4, 0x2ac6, 0xffff, 0x2ac8, 0x2aca, 0x2acc,
+ 0x2ace, 0x2ad0, 0x2ad2, 0x2ad4, 0x2ad6, 0x2ad8, 0x2ada, 0x2adc,
+ 0x2ade, 0x2ae0, 0x2ae2, 0x2ae4, 0x2ae6, 0x2ae8, 0x2aea, 0x2aec,
+ 0x2aee, 0x2af0, 0x2af2, 0x2af4, 0x2af6, 0x2af8, 0x2afa, 0x2afc,
+ 0x2afe, 0x2b00, 0x2b02, 0x2b04, 0x2b06, 0x2b08, 0x2b0a, 0x2b0c,
+ 0x2b0e, 0x2b10, 0x2b12, 0x2b14, 0x2b16, 0x2b18, 0x2b1a, 0x2b1c,
+ 0x2b1e, 0x2b20, 0x2b22, 0x2b24, 0x2b26, 0x2b28, 0x2b2a, 0x2b2c,
+ 0x2b2e, 0x2b30, 0x2b32, 0x2b34, 0x2b36, 0x2b38, 0x2b3a, 0x2b3c,
- 0x2b3b, 0x2b3d, 0x2b3f, 0x2b41, 0x2b43, 0x2b45, 0xffff, 0x2b47,
- 0x2b49, 0x2b4b, 0x2b4d, 0xffff, 0xffff, 0x2b4f, 0x2b51, 0x2b53,
- 0x2b55, 0x2b57, 0x2b59, 0x2b5b, 0x2b5d, 0xffff, 0x2b5f, 0x2b61,
- 0x2b63, 0x2b65, 0x2b67, 0x2b69, 0x2b6b, 0xffff, 0x2b6d, 0x2b6f,
- 0x2b71, 0x2b73, 0x2b75, 0x2b77, 0x2b79, 0x2b7b, 0x2b7d, 0x2b7f,
- 0x2b81, 0x2b83, 0x2b85, 0x2b87, 0x2b89, 0x2b8b, 0x2b8d, 0x2b8f,
- 0x2b91, 0x2b93, 0x2b95, 0x2b97, 0x2b99, 0x2b9b, 0x2b9d, 0x2b9f,
- 0x2ba1, 0x2ba3, 0xffff, 0x2ba5, 0x2ba7, 0x2ba9, 0x2bab, 0xffff,
- 0x2bad, 0x2baf, 0x2bb1, 0x2bb3, 0x2bb5, 0xffff, 0x2bb7, 0xffff,
- 0xffff, 0xffff, 0x2bb9, 0x2bbb, 0x2bbd, 0x2bbf, 0x2bc1, 0x2bc3,
- 0x2bc5, 0xffff, 0x2bc7, 0x2bc9, 0x2bcb, 0x2bcd, 0x2bcf, 0x2bd1,
- 0x2bd3, 0x2bd5, 0x2bd7, 0x2bd9, 0x2bdb, 0x2bdd, 0x2bdf, 0x2be1,
- 0x2be3, 0x2be5, 0x2be7, 0x2be9, 0x2beb, 0x2bed, 0x2bef, 0x2bf1,
- 0x2bf3, 0x2bf5, 0x2bf7, 0x2bf9, 0x2bfb, 0x2bfd, 0x2bff, 0x2c01,
- 0x2c03, 0x2c05, 0x2c07, 0x2c09, 0x2c0b, 0x2c0d, 0x2c0f, 0x2c11,
- 0x2c13, 0x2c15, 0x2c17, 0x2c19, 0x2c1b, 0x2c1d, 0x2c1f, 0x2c21,
- 0x2c23, 0x2c25, 0x2c27, 0x2c29, 0x2c2b, 0x2c2d, 0x2c2f, 0x2c31,
- 0x2c33, 0x2c35, 0x2c37, 0x2c39, 0x2c3b, 0x2c3d, 0x2c3f, 0x2c41,
- 0x2c43, 0x2c45, 0x2c47, 0x2c49, 0x2c4b, 0x2c4d, 0x2c4f, 0x2c51,
- 0x2c53, 0x2c55, 0x2c57, 0x2c59, 0x2c5b, 0x2c5d, 0x2c5f, 0x2c61,
- 0x2c63, 0x2c65, 0x2c67, 0x2c69, 0x2c6b, 0x2c6d, 0x2c6f, 0x2c71,
- 0x2c73, 0x2c75, 0x2c77, 0x2c79, 0x2c7b, 0x2c7d, 0x2c7f, 0x2c81,
- 0x2c83, 0x2c85, 0x2c87, 0x2c89, 0x2c8b, 0x2c8d, 0x2c8f, 0x2c91,
- 0x2c93, 0x2c95, 0x2c97, 0x2c99, 0x2c9b, 0x2c9d, 0x2c9f, 0x2ca1,
- 0x2ca3, 0x2ca5, 0x2ca7, 0x2ca9, 0x2cab, 0x2cad, 0x2caf, 0x2cb1,
- 0x2cb3, 0x2cb5, 0x2cb7, 0x2cb9, 0x2cbb, 0x2cbd, 0x2cbf, 0x2cc1,
- 0x2cc3, 0x2cc5, 0x2cc7, 0x2cc9, 0x2ccb, 0x2ccd, 0x2ccf, 0x2cd1,
- 0x2cd3, 0x2cd5, 0x2cd7, 0x2cd9, 0x2cdb, 0x2cdd, 0x2cdf, 0x2ce1,
- 0x2ce3, 0x2ce5, 0x2ce7, 0x2ce9, 0x2ceb, 0x2ced, 0x2cef, 0x2cf1,
- 0x2cf3, 0x2cf5, 0x2cf7, 0x2cf9, 0x2cfb, 0x2cfd, 0x2cff, 0x2d01,
- 0x2d03, 0x2d05, 0x2d07, 0x2d09, 0x2d0b, 0x2d0d, 0x2d0f, 0x2d11,
- 0x2d13, 0x2d15, 0x2d17, 0x2d19, 0x2d1b, 0x2d1d, 0x2d1f, 0x2d21,
-
- 0x2d23, 0x2d25, 0x2d27, 0x2d29, 0x2d2b, 0x2d2d, 0x2d2f, 0x2d31,
- 0x2d33, 0x2d35, 0x2d37, 0x2d39, 0x2d3b, 0x2d3d, 0x2d3f, 0x2d41,
- 0x2d43, 0x2d45, 0x2d47, 0x2d49, 0x2d4b, 0x2d4d, 0x2d4f, 0x2d51,
- 0x2d53, 0x2d55, 0x2d57, 0x2d59, 0x2d5b, 0x2d5d, 0x2d5f, 0x2d61,
- 0x2d63, 0x2d65, 0x2d67, 0x2d69, 0x2d6b, 0x2d6d, 0x2d6f, 0x2d71,
- 0x2d73, 0x2d75, 0x2d77, 0x2d79, 0x2d7b, 0x2d7d, 0x2d7f, 0x2d81,
- 0x2d83, 0x2d85, 0x2d87, 0x2d89, 0x2d8b, 0x2d8d, 0x2d8f, 0x2d91,
- 0x2d93, 0x2d95, 0x2d97, 0x2d99, 0x2d9b, 0x2d9d, 0x2d9f, 0x2da1,
- 0x2da3, 0x2da5, 0x2da7, 0x2da9, 0x2dab, 0x2dad, 0x2daf, 0x2db1,
- 0x2db3, 0x2db5, 0x2db7, 0x2db9, 0x2dbb, 0x2dbd, 0x2dbf, 0x2dc1,
- 0x2dc3, 0x2dc5, 0x2dc7, 0x2dc9, 0x2dcb, 0x2dcd, 0x2dcf, 0x2dd1,
- 0x2dd3, 0x2dd5, 0x2dd7, 0x2dd9, 0x2ddb, 0x2ddd, 0x2ddf, 0x2de1,
- 0x2de3, 0x2de5, 0x2de7, 0x2de9, 0x2deb, 0x2ded, 0x2def, 0x2df1,
- 0x2df3, 0x2df5, 0x2df7, 0x2df9, 0x2dfb, 0x2dfd, 0x2dff, 0x2e01,
- 0x2e03, 0x2e05, 0x2e07, 0x2e09, 0x2e0b, 0x2e0d, 0x2e0f, 0x2e11,
- 0x2e13, 0x2e15, 0x2e17, 0x2e19, 0x2e1b, 0x2e1d, 0x2e1f, 0x2e21,
- 0x2e23, 0x2e25, 0x2e27, 0x2e29, 0x2e2b, 0x2e2d, 0x2e2f, 0x2e31,
- 0x2e33, 0x2e35, 0x2e37, 0x2e39, 0x2e3b, 0x2e3d, 0x2e3f, 0x2e41,
- 0x2e43, 0x2e45, 0x2e47, 0x2e49, 0x2e4b, 0x2e4d, 0x2e4f, 0x2e51,
- 0x2e53, 0x2e55, 0x2e57, 0x2e59, 0x2e5b, 0x2e5d, 0x2e5f, 0x2e61,
- 0x2e63, 0x2e65, 0x2e67, 0x2e69, 0x2e6b, 0x2e6d, 0xffff, 0xffff,
- 0x2e6f, 0x2e71, 0x2e73, 0x2e75, 0x2e77, 0x2e79, 0x2e7b, 0x2e7d,
- 0x2e7f, 0x2e81, 0x2e83, 0x2e85, 0x2e87, 0x2e89, 0x2e8b, 0x2e8d,
- 0x2e8f, 0x2e91, 0x2e93, 0x2e95, 0x2e97, 0x2e99, 0x2e9b, 0x2e9d,
- 0x2e9f, 0x2ea1, 0x2ea3, 0x2ea5, 0x2ea7, 0x2ea9, 0x2eab, 0x2ead,
- 0x2eaf, 0x2eb1, 0x2eb3, 0x2eb5, 0x2eb7, 0x2eb9, 0x2ebb, 0x2ebd,
- 0x2ebf, 0x2ec1, 0x2ec3, 0x2ec5, 0x2ec7, 0x2ec9, 0x2ecb, 0x2ecd,
- 0x2ecf, 0x2ed1, 0x2ed3, 0x2ed5, 0x2ed7, 0x2ed9, 0x2edb, 0x2edd,
- 0x2edf, 0x2ee1, 0x2ee3, 0x2ee5, 0x2ee7, 0x2ee9, 0x2eeb, 0x2eed,
- 0x2eef, 0x2ef1, 0x2ef3, 0x2ef5, 0x2ef7, 0x2ef9, 0x2efb, 0x2efd,
- 0x2eff, 0x2f01, 0x2f03, 0x2f05, 0x2f07, 0x2f09, 0x2f0b, 0x2f0d,
- 0x2f0f, 0x2f11, 0x2f13, 0x2f15, 0x2f17, 0x2f19, 0x2f1b, 0x2f1d,
-
- 0x2f1f, 0x2f21, 0x2f23, 0x2f25, 0x2f27, 0x2f29, 0x2f2b, 0x2f2d,
- 0x2f2f, 0x2f31, 0x2f33, 0x2f35, 0x2f37, 0x2f39, 0x2f3b, 0x2f3d,
- 0x2f3f, 0x2f41, 0x2f43, 0x2f45, 0x2f47, 0x2f49, 0x2f4b, 0x2f4d,
- 0x2f4f, 0x2f51, 0x2f53, 0x2f55, 0x2f57, 0x2f59, 0x2f5b, 0x2f5d,
- 0x2f5f, 0x2f61, 0x2f63, 0x2f65, 0x2f67, 0x2f69, 0x2f6b, 0x2f6d,
- 0x2f6f, 0x2f71, 0x2f73, 0x2f75, 0x2f77, 0x2f79, 0x2f7b, 0x2f7d,
- 0x2f7f, 0x2f81, 0x2f83, 0x2f85, 0x2f87, 0x2f89, 0x2f8b, 0x2f8d,
- 0x2f8f, 0x2f91, 0x2f93, 0x2f95, 0x2f97, 0x2f99, 0x2f9b, 0x2f9d,
- 0x2f9f, 0x2fa1, 0x2fa3, 0x2fa5, 0x2fa7, 0x2fa9, 0x2fab, 0x2fad,
- 0x2faf, 0x2fb1, 0x2fb3, 0x2fb5, 0x2fb7, 0x2fb9, 0x2fbb, 0x2fbd,
- 0x2fbf, 0x2fc1, 0x2fc3, 0x2fc5, 0x2fc7, 0x2fc9, 0x2fcb, 0x2fcd,
- 0x2fcf, 0x2fd1, 0x2fd3, 0x2fd5, 0x2fd7, 0x2fd9, 0x2fdb, 0x2fdd,
- 0x2fdf, 0x2fe1, 0x2fe3, 0x2fe5, 0x2fe7, 0x2fe9, 0x2feb, 0x2fed,
- 0x2fef, 0x2ff1, 0x2ff3, 0x2ff5, 0x2ff7, 0x2ff9, 0x2ffb, 0x2ffd,
- 0x2fff, 0x3001, 0x3003, 0x3005, 0x3007, 0x3009, 0x300b, 0x300d,
- 0x300f, 0x3011, 0x3013, 0x3015, 0x3017, 0x3019, 0x301b, 0x301d,
- 0x301f, 0x3021, 0x3023, 0x3025, 0x3027, 0x3029, 0x302b, 0x302d,
- 0x302f, 0x3031, 0x3033, 0x3035, 0x3037, 0x3039, 0x303b, 0x303d,
- 0x303f, 0x3041, 0x3043, 0x3045, 0x3047, 0x3049, 0x304b, 0x304d,
- 0x304f, 0x3051, 0x3053, 0x3055, 0x3057, 0x3059, 0x305b, 0x305d,
- 0x305f, 0x3061, 0x3063, 0x3065, 0x3067, 0x3069, 0x306b, 0x306d,
- 0x306f, 0x3071, 0x3073, 0x3075, 0x3077, 0x3079, 0x307b, 0x307d,
- 0x307f, 0x3081, 0x3083, 0x3085, 0x3087, 0x3089, 0x308b, 0x308d,
- 0x308f, 0x3091, 0x3093, 0x3095, 0x3097, 0x3099, 0x309b, 0x309d,
- 0x309f, 0x30a1, 0x30a3, 0x30a5, 0x30a7, 0x30a9, 0x30ab, 0x30ad,
- 0x30af, 0x30b1, 0x30b3, 0x30b5, 0xffff, 0xffff, 0x30b7, 0x30b9,
- 0x30bb, 0x30bd, 0x30bf, 0x30c1, 0x30c3, 0x30c5, 0x30c7, 0x30c9,
- 0x30cb, 0x30cd, 0x30cf, 0x30d1, 0x30d3, 0x30d5, 0x30d7, 0x30d9,
- 0x30db, 0x30dd, 0x30df, 0x30e1, 0x30e3, 0x30e5, 0x30e7, 0x30e9,
- 0x30eb, 0x30ed, 0x30ef, 0x30f1, 0x30f3, 0x30f5, 0x30f7, 0x30f9,
- 0x30fb, 0x30fd, 0x30ff, 0x3101, 0x3103, 0x3105, 0x3107, 0x3109,
- 0x310b, 0x310d, 0x310f, 0x3111, 0x3113, 0x3115, 0x3117, 0x3119,
+ 0x2b3e, 0x2b40, 0x2b42, 0x2b44, 0x2b46, 0x2b48, 0xffff, 0x2b4a,
+ 0x2b4c, 0x2b4e, 0x2b50, 0xffff, 0xffff, 0x2b52, 0x2b54, 0x2b56,
+ 0x2b58, 0x2b5a, 0x2b5c, 0x2b5e, 0x2b60, 0xffff, 0x2b62, 0x2b64,
+ 0x2b66, 0x2b68, 0x2b6a, 0x2b6c, 0x2b6e, 0xffff, 0x2b70, 0x2b72,
+ 0x2b74, 0x2b76, 0x2b78, 0x2b7a, 0x2b7c, 0x2b7e, 0x2b80, 0x2b82,
+ 0x2b84, 0x2b86, 0x2b88, 0x2b8a, 0x2b8c, 0x2b8e, 0x2b90, 0x2b92,
+ 0x2b94, 0x2b96, 0x2b98, 0x2b9a, 0x2b9c, 0x2b9e, 0x2ba0, 0x2ba2,
+ 0x2ba4, 0x2ba6, 0xffff, 0x2ba8, 0x2baa, 0x2bac, 0x2bae, 0xffff,
+ 0x2bb0, 0x2bb2, 0x2bb4, 0x2bb6, 0x2bb8, 0xffff, 0x2bba, 0xffff,
+ 0xffff, 0xffff, 0x2bbc, 0x2bbe, 0x2bc0, 0x2bc2, 0x2bc4, 0x2bc6,
+ 0x2bc8, 0xffff, 0x2bca, 0x2bcc, 0x2bce, 0x2bd0, 0x2bd2, 0x2bd4,
+ 0x2bd6, 0x2bd8, 0x2bda, 0x2bdc, 0x2bde, 0x2be0, 0x2be2, 0x2be4,
+ 0x2be6, 0x2be8, 0x2bea, 0x2bec, 0x2bee, 0x2bf0, 0x2bf2, 0x2bf4,
+ 0x2bf6, 0x2bf8, 0x2bfa, 0x2bfc, 0x2bfe, 0x2c00, 0x2c02, 0x2c04,
+ 0x2c06, 0x2c08, 0x2c0a, 0x2c0c, 0x2c0e, 0x2c10, 0x2c12, 0x2c14,
+ 0x2c16, 0x2c18, 0x2c1a, 0x2c1c, 0x2c1e, 0x2c20, 0x2c22, 0x2c24,
+ 0x2c26, 0x2c28, 0x2c2a, 0x2c2c, 0x2c2e, 0x2c30, 0x2c32, 0x2c34,
+ 0x2c36, 0x2c38, 0x2c3a, 0x2c3c, 0x2c3e, 0x2c40, 0x2c42, 0x2c44,
+ 0x2c46, 0x2c48, 0x2c4a, 0x2c4c, 0x2c4e, 0x2c50, 0x2c52, 0x2c54,
+ 0x2c56, 0x2c58, 0x2c5a, 0x2c5c, 0x2c5e, 0x2c60, 0x2c62, 0x2c64,
+ 0x2c66, 0x2c68, 0x2c6a, 0x2c6c, 0x2c6e, 0x2c70, 0x2c72, 0x2c74,
+ 0x2c76, 0x2c78, 0x2c7a, 0x2c7c, 0x2c7e, 0x2c80, 0x2c82, 0x2c84,
+ 0x2c86, 0x2c88, 0x2c8a, 0x2c8c, 0x2c8e, 0x2c90, 0x2c92, 0x2c94,
+ 0x2c96, 0x2c98, 0x2c9a, 0x2c9c, 0x2c9e, 0x2ca0, 0x2ca2, 0x2ca4,
+ 0x2ca6, 0x2ca8, 0x2caa, 0x2cac, 0x2cae, 0x2cb0, 0x2cb2, 0x2cb4,
+ 0x2cb6, 0x2cb8, 0x2cba, 0x2cbc, 0x2cbe, 0x2cc0, 0x2cc2, 0x2cc4,
+ 0x2cc6, 0x2cc8, 0x2cca, 0x2ccc, 0x2cce, 0x2cd0, 0x2cd2, 0x2cd4,
+ 0x2cd6, 0x2cd8, 0x2cda, 0x2cdc, 0x2cde, 0x2ce0, 0x2ce2, 0x2ce4,
+ 0x2ce6, 0x2ce8, 0x2cea, 0x2cec, 0x2cee, 0x2cf0, 0x2cf2, 0x2cf4,
+ 0x2cf6, 0x2cf8, 0x2cfa, 0x2cfc, 0x2cfe, 0x2d00, 0x2d02, 0x2d04,
+ 0x2d06, 0x2d08, 0x2d0a, 0x2d0c, 0x2d0e, 0x2d10, 0x2d12, 0x2d14,
+ 0x2d16, 0x2d18, 0x2d1a, 0x2d1c, 0x2d1e, 0x2d20, 0x2d22, 0x2d24,
+
+ 0x2d26, 0x2d28, 0x2d2a, 0x2d2c, 0x2d2e, 0x2d30, 0x2d32, 0x2d34,
+ 0x2d36, 0x2d38, 0x2d3a, 0x2d3c, 0x2d3e, 0x2d40, 0x2d42, 0x2d44,
+ 0x2d46, 0x2d48, 0x2d4a, 0x2d4c, 0x2d4e, 0x2d50, 0x2d52, 0x2d54,
+ 0x2d56, 0x2d58, 0x2d5a, 0x2d5c, 0x2d5e, 0x2d60, 0x2d62, 0x2d64,
+ 0x2d66, 0x2d68, 0x2d6a, 0x2d6c, 0x2d6e, 0x2d70, 0x2d72, 0x2d74,
+ 0x2d76, 0x2d78, 0x2d7a, 0x2d7c, 0x2d7e, 0x2d80, 0x2d82, 0x2d84,
+ 0x2d86, 0x2d88, 0x2d8a, 0x2d8c, 0x2d8e, 0x2d90, 0x2d92, 0x2d94,
+ 0x2d96, 0x2d98, 0x2d9a, 0x2d9c, 0x2d9e, 0x2da0, 0x2da2, 0x2da4,
+ 0x2da6, 0x2da8, 0x2daa, 0x2dac, 0x2dae, 0x2db0, 0x2db2, 0x2db4,
+ 0x2db6, 0x2db8, 0x2dba, 0x2dbc, 0x2dbe, 0x2dc0, 0x2dc2, 0x2dc4,
+ 0x2dc6, 0x2dc8, 0x2dca, 0x2dcc, 0x2dce, 0x2dd0, 0x2dd2, 0x2dd4,
+ 0x2dd6, 0x2dd8, 0x2dda, 0x2ddc, 0x2dde, 0x2de0, 0x2de2, 0x2de4,
+ 0x2de6, 0x2de8, 0x2dea, 0x2dec, 0x2dee, 0x2df0, 0x2df2, 0x2df4,
+ 0x2df6, 0x2df8, 0x2dfa, 0x2dfc, 0x2dfe, 0x2e00, 0x2e02, 0x2e04,
+ 0x2e06, 0x2e08, 0x2e0a, 0x2e0c, 0x2e0e, 0x2e10, 0x2e12, 0x2e14,
+ 0x2e16, 0x2e18, 0x2e1a, 0x2e1c, 0x2e1e, 0x2e20, 0x2e22, 0x2e24,
+ 0x2e26, 0x2e28, 0x2e2a, 0x2e2c, 0x2e2e, 0x2e30, 0x2e32, 0x2e34,
+ 0x2e36, 0x2e38, 0x2e3a, 0x2e3c, 0x2e3e, 0x2e40, 0x2e42, 0x2e44,
+ 0x2e46, 0x2e48, 0x2e4a, 0x2e4c, 0x2e4e, 0x2e50, 0x2e52, 0x2e54,
+ 0x2e56, 0x2e58, 0x2e5a, 0x2e5c, 0x2e5e, 0x2e60, 0x2e62, 0x2e64,
+ 0x2e66, 0x2e68, 0x2e6a, 0x2e6c, 0x2e6e, 0x2e70, 0xffff, 0xffff,
+ 0x2e72, 0x2e74, 0x2e76, 0x2e78, 0x2e7a, 0x2e7c, 0x2e7e, 0x2e80,
+ 0x2e82, 0x2e84, 0x2e86, 0x2e88, 0x2e8a, 0x2e8c, 0x2e8e, 0x2e90,
+ 0x2e92, 0x2e94, 0x2e96, 0x2e98, 0x2e9a, 0x2e9c, 0x2e9e, 0x2ea0,
+ 0x2ea2, 0x2ea4, 0x2ea6, 0x2ea8, 0x2eaa, 0x2eac, 0x2eae, 0x2eb0,
+ 0x2eb2, 0x2eb4, 0x2eb6, 0x2eb8, 0x2eba, 0x2ebc, 0x2ebe, 0x2ec0,
+ 0x2ec2, 0x2ec4, 0x2ec6, 0x2ec8, 0x2eca, 0x2ecc, 0x2ece, 0x2ed0,
+ 0x2ed2, 0x2ed4, 0x2ed6, 0x2ed8, 0x2eda, 0x2edc, 0x2ede, 0x2ee0,
+ 0x2ee2, 0x2ee4, 0x2ee6, 0x2ee8, 0x2eea, 0x2eec, 0x2eee, 0x2ef0,
+ 0x2ef2, 0x2ef4, 0x2ef6, 0x2ef8, 0x2efa, 0x2efc, 0x2efe, 0x2f00,
+ 0x2f02, 0x2f04, 0x2f06, 0x2f08, 0x2f0a, 0x2f0c, 0x2f0e, 0x2f10,
+ 0x2f12, 0x2f14, 0x2f16, 0x2f18, 0x2f1a, 0x2f1c, 0x2f1e, 0x2f20,
+
+ 0x2f22, 0x2f24, 0x2f26, 0x2f28, 0x2f2a, 0x2f2c, 0x2f2e, 0x2f30,
+ 0x2f32, 0x2f34, 0x2f36, 0x2f38, 0x2f3a, 0x2f3c, 0x2f3e, 0x2f40,
+ 0x2f42, 0x2f44, 0x2f46, 0x2f48, 0x2f4a, 0x2f4c, 0x2f4e, 0x2f50,
+ 0x2f52, 0x2f54, 0x2f56, 0x2f58, 0x2f5a, 0x2f5c, 0x2f5e, 0x2f60,
+ 0x2f62, 0x2f64, 0x2f66, 0x2f68, 0x2f6a, 0x2f6c, 0x2f6e, 0x2f70,
+ 0x2f72, 0x2f74, 0x2f76, 0x2f78, 0x2f7a, 0x2f7c, 0x2f7e, 0x2f80,
+ 0x2f82, 0x2f84, 0x2f86, 0x2f88, 0x2f8a, 0x2f8c, 0x2f8e, 0x2f90,
+ 0x2f92, 0x2f94, 0x2f96, 0x2f98, 0x2f9a, 0x2f9c, 0x2f9e, 0x2fa0,
+ 0x2fa2, 0x2fa4, 0x2fa6, 0x2fa8, 0x2faa, 0x2fac, 0x2fae, 0x2fb0,
+ 0x2fb2, 0x2fb4, 0x2fb6, 0x2fb8, 0x2fba, 0x2fbc, 0x2fbe, 0x2fc0,
+ 0x2fc2, 0x2fc4, 0x2fc6, 0x2fc8, 0x2fca, 0x2fcc, 0x2fce, 0x2fd0,
+ 0x2fd2, 0x2fd4, 0x2fd6, 0x2fd8, 0x2fda, 0x2fdc, 0x2fde, 0x2fe0,
+ 0x2fe2, 0x2fe4, 0x2fe6, 0x2fe8, 0x2fea, 0x2fec, 0x2fee, 0x2ff0,
+ 0x2ff2, 0x2ff4, 0x2ff6, 0x2ff8, 0x2ffa, 0x2ffc, 0x2ffe, 0x3000,
+ 0x3002, 0x3004, 0x3006, 0x3008, 0x300a, 0x300c, 0x300e, 0x3010,
+ 0x3012, 0x3014, 0x3016, 0x3018, 0x301a, 0x301c, 0x301e, 0x3020,
+ 0x3022, 0x3024, 0x3026, 0x3028, 0x302a, 0x302c, 0x302e, 0x3030,
+ 0x3032, 0x3034, 0x3036, 0x3038, 0x303a, 0x303c, 0x303e, 0x3040,
+ 0x3042, 0x3044, 0x3046, 0x3048, 0x304a, 0x304c, 0x304e, 0x3050,
+ 0x3052, 0x3054, 0x3056, 0x3058, 0x305a, 0x305c, 0x305e, 0x3060,
+ 0x3062, 0x3064, 0x3066, 0x3068, 0x306a, 0x306c, 0x306e, 0x3070,
+ 0x3072, 0x3074, 0x3076, 0x3078, 0x307a, 0x307c, 0x307e, 0x3080,
+ 0x3082, 0x3084, 0x3086, 0x3088, 0x308a, 0x308c, 0x308e, 0x3090,
+ 0x3092, 0x3094, 0x3096, 0x3098, 0x309a, 0x309c, 0x309e, 0x30a0,
+ 0x30a2, 0x30a4, 0x30a6, 0x30a8, 0x30aa, 0x30ac, 0x30ae, 0x30b0,
+ 0x30b2, 0x30b4, 0x30b6, 0x30b8, 0xffff, 0xffff, 0x30ba, 0x30bc,
+ 0x30be, 0x30c0, 0x30c2, 0x30c4, 0x30c6, 0x30c8, 0x30ca, 0x30cc,
+ 0x30ce, 0x30d0, 0x30d2, 0x30d4, 0x30d6, 0x30d8, 0x30da, 0x30dc,
+ 0x30de, 0x30e0, 0x30e2, 0x30e4, 0x30e6, 0x30e8, 0x30ea, 0x30ec,
+ 0x30ee, 0x30f0, 0x30f2, 0x30f4, 0x30f6, 0x30f8, 0x30fa, 0x30fc,
+ 0x30fe, 0x3100, 0x3102, 0x3104, 0x3106, 0x3108, 0x310a, 0x310c,
+ 0x310e, 0x3110, 0x3112, 0x3114, 0x3116, 0x3118, 0x311a, 0x311c,
- 0x311b, 0x311d, 0x311f, 0x3121, 0xffff, 0x3123, 0x3125, 0x3127,
- 0x3129, 0x312b, 0x312d, 0x312f, 0x3131, 0x3133, 0x3135, 0x3137,
- 0x3139, 0x313b, 0x313d, 0x313f, 0x3141, 0x3143, 0x3145, 0x3147,
- 0x3149, 0x314b, 0x314d, 0x314f, 0x3151, 0x3153, 0x3155, 0x3157,
- 0xffff, 0x3159, 0x315b, 0xffff, 0x315d, 0xffff, 0xffff, 0x315f,
- 0xffff, 0x3161, 0x3163, 0x3165, 0x3167, 0x3169, 0x316b, 0x316d,
- 0x316f, 0x3171, 0x3173, 0xffff, 0x3175, 0x3177, 0x3179, 0x317b,
- 0xffff, 0x317d, 0xffff, 0x317f, 0xffff, 0xffff, 0xffff, 0xffff,
- 0xffff, 0xffff, 0x3181, 0xffff, 0xffff, 0xffff, 0xffff, 0x3183,
- 0xffff, 0x3185, 0xffff, 0x3187, 0xffff, 0x3189, 0x318b, 0x318d,
- 0xffff, 0x318f, 0x3191, 0xffff, 0x3193, 0xffff, 0xffff, 0x3195,
- 0xffff, 0x3197, 0xffff, 0x3199, 0xffff, 0x319b, 0xffff, 0x319d,
- 0xffff, 0x319f, 0x31a1, 0xffff, 0x31a3, 0xffff, 0xffff, 0x31a5,
- 0x31a7, 0x31a9, 0x31ab, 0xffff, 0x31ad, 0x31af, 0x31b1, 0x31b3,
- 0x31b5, 0x31b7, 0x31b9, 0xffff, 0x31bb, 0x31bd, 0x31bf, 0x31c1,
- 0xffff, 0x31c3, 0x31c5, 0x31c7, 0x31c9, 0xffff, 0x31cb, 0xffff,
- 0x31cd, 0x31cf, 0x31d1, 0x31d3, 0x31d5, 0x31d7, 0x31d9, 0x31db,
- 0x31dd, 0x31df, 0xffff, 0x31e1, 0x31e3, 0x31e5, 0x31e7, 0x31e9,
- 0x31eb, 0x31ed, 0x31ef, 0x31f1, 0x31f3, 0x31f5, 0x31f7, 0x31f9,
- 0x31fb, 0x31fd, 0x31ff, 0x3201, 0xffff, 0xffff, 0xffff, 0xffff,
- 0xffff, 0x3203, 0x3205, 0x3207, 0xffff, 0x3209, 0x320b, 0x320d,
- 0x320f, 0x3211, 0xffff, 0x3213, 0x3215, 0x3217, 0x3219, 0x321b,
- 0x321d, 0x321f, 0x3221, 0x3223, 0x3225, 0x3227, 0x3229, 0x322b,
- 0x322d, 0x322f, 0x3231, 0x3233, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0x311e, 0x3120, 0x3122, 0x3124, 0xffff, 0x3126, 0x3128, 0x312a,
+ 0x312c, 0x312e, 0x3130, 0x3132, 0x3134, 0x3136, 0x3138, 0x313a,
+ 0x313c, 0x313e, 0x3140, 0x3142, 0x3144, 0x3146, 0x3148, 0x314a,
+ 0x314c, 0x314e, 0x3150, 0x3152, 0x3154, 0x3156, 0x3158, 0x315a,
+ 0xffff, 0x315c, 0x315e, 0xffff, 0x3160, 0xffff, 0xffff, 0x3162,
+ 0xffff, 0x3164, 0x3166, 0x3168, 0x316a, 0x316c, 0x316e, 0x3170,
+ 0x3172, 0x3174, 0x3176, 0xffff, 0x3178, 0x317a, 0x317c, 0x317e,
+ 0xffff, 0x3180, 0xffff, 0x3182, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0x3184, 0xffff, 0xffff, 0xffff, 0xffff, 0x3186,
+ 0xffff, 0x3188, 0xffff, 0x318a, 0xffff, 0x318c, 0x318e, 0x3190,
+ 0xffff, 0x3192, 0x3194, 0xffff, 0x3196, 0xffff, 0xffff, 0x3198,
+ 0xffff, 0x319a, 0xffff, 0x319c, 0xffff, 0x319e, 0xffff, 0x31a0,
+ 0xffff, 0x31a2, 0x31a4, 0xffff, 0x31a6, 0xffff, 0xffff, 0x31a8,
+ 0x31aa, 0x31ac, 0x31ae, 0xffff, 0x31b0, 0x31b2, 0x31b4, 0x31b6,
+ 0x31b8, 0x31ba, 0x31bc, 0xffff, 0x31be, 0x31c0, 0x31c2, 0x31c4,
+ 0xffff, 0x31c6, 0x31c8, 0x31ca, 0x31cc, 0xffff, 0x31ce, 0xffff,
+ 0x31d0, 0x31d2, 0x31d4, 0x31d6, 0x31d8, 0x31da, 0x31dc, 0x31de,
+ 0x31e0, 0x31e2, 0xffff, 0x31e4, 0x31e6, 0x31e8, 0x31ea, 0x31ec,
+ 0x31ee, 0x31f0, 0x31f2, 0x31f4, 0x31f6, 0x31f8, 0x31fa, 0x31fc,
+ 0x31fe, 0x3200, 0x3202, 0x3204, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0x3206, 0x3208, 0x320a, 0xffff, 0x320c, 0x320e, 0x3210,
+ 0x3212, 0x3214, 0xffff, 0x3216, 0x3218, 0x321a, 0x321c, 0x321e,
+ 0x3220, 0x3222, 0x3224, 0x3226, 0x3228, 0x322a, 0x322c, 0x322e,
+ 0x3230, 0x3232, 0x3234, 0x3236, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
@@ -10796,25 +11304,25 @@ static const unsigned short uc_decomposition_trie[] = {
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0x3235, 0x3238, 0x323b, 0x323e, 0x3241, 0x3244, 0x3247, 0x324a,
- 0x324d, 0x3250, 0x3253, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0x3256, 0x325a, 0x325e, 0x3262, 0x3266, 0x326a, 0x326e, 0x3272,
- 0x3276, 0x327a, 0x327e, 0x3282, 0x3286, 0x328a, 0x328e, 0x3292,
- 0x3296, 0x329a, 0x329e, 0x32a2, 0x32a6, 0x32aa, 0x32ae, 0x32b2,
- 0x32b6, 0x32ba, 0x32be, 0x32c2, 0x32c4, 0x32c6, 0x32c9, 0xffff,
- 0x32cc, 0x32ce, 0x32d0, 0x32d2, 0x32d4, 0x32d6, 0x32d8, 0x32da,
- 0x32dc, 0x32de, 0x32e0, 0x32e2, 0x32e4, 0x32e6, 0x32e8, 0x32ea,
- 0x32ec, 0x32ee, 0x32f0, 0x32f2, 0x32f4, 0x32f6, 0x32f8, 0x32fa,
- 0x32fc, 0x32fe, 0x3300, 0x3303, 0x3306, 0x3309, 0x330c, 0x3310,
+ 0x3238, 0x323b, 0x323e, 0x3241, 0x3244, 0x3247, 0x324a, 0x324d,
+ 0x3250, 0x3253, 0x3256, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0x3259, 0x325d, 0x3261, 0x3265, 0x3269, 0x326d, 0x3271, 0x3275,
+ 0x3279, 0x327d, 0x3281, 0x3285, 0x3289, 0x328d, 0x3291, 0x3295,
+ 0x3299, 0x329d, 0x32a1, 0x32a5, 0x32a9, 0x32ad, 0x32b1, 0x32b5,
+ 0x32b9, 0x32bd, 0x32c1, 0x32c5, 0x32c7, 0x32c9, 0x32cc, 0xffff,
+ 0x32cf, 0x32d1, 0x32d3, 0x32d5, 0x32d7, 0x32d9, 0x32db, 0x32dd,
+ 0x32df, 0x32e1, 0x32e3, 0x32e5, 0x32e7, 0x32e9, 0x32eb, 0x32ed,
+ 0x32ef, 0x32f1, 0x32f3, 0x32f5, 0x32f7, 0x32f9, 0x32fb, 0x32fd,
+ 0x32ff, 0x3301, 0x3303, 0x3306, 0x3309, 0x330c, 0x330f, 0x3313,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0xffff, 0xffff, 0x3313, 0x3316, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0x3316, 0x3319, 0x331c, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0x3319, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0x331f, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
@@ -10829,17 +11337,17 @@ static const unsigned short uc_decomposition_trie[] = {
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0x331c, 0x331f, 0x3322, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0x3322, 0x3325, 0x3328, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0x3324, 0x3326, 0x3328, 0x332a, 0x332c, 0x332e, 0x3330, 0x3332,
- 0x3334, 0x3336, 0x3338, 0x333a, 0x333c, 0x333e, 0x3340, 0x3342,
- 0x3344, 0x3346, 0x3348, 0x334a, 0x334c, 0x334e, 0x3350, 0x3352,
- 0x3354, 0x3356, 0x3358, 0x335a, 0x335c, 0x335e, 0x3360, 0x3362,
- 0x3364, 0x3366, 0x3368, 0x336a, 0x336c, 0x336e, 0x3370, 0x3372,
- 0x3374, 0x3376, 0x3378, 0x337a, 0xffff, 0xffff, 0xffff, 0xffff,
- 0x337c, 0x3380, 0x3384, 0x3388, 0x338c, 0x3390, 0x3394, 0x3398,
- 0x339c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0x33a0, 0x33a2, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0x332a, 0x332c, 0x332e, 0x3330, 0x3332, 0x3334, 0x3336, 0x3338,
+ 0x333a, 0x333c, 0x333e, 0x3340, 0x3342, 0x3344, 0x3346, 0x3348,
+ 0x334a, 0x334c, 0x334e, 0x3350, 0x3352, 0x3354, 0x3356, 0x3358,
+ 0x335a, 0x335c, 0x335e, 0x3360, 0x3362, 0x3364, 0x3366, 0x3368,
+ 0x336a, 0x336c, 0x336e, 0x3370, 0x3372, 0x3374, 0x3376, 0x3378,
+ 0x337a, 0x337c, 0x337e, 0x3380, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0x3382, 0x3386, 0x338a, 0x338e, 0x3392, 0x3396, 0x339a, 0x339e,
+ 0x33a2, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0x33a6, 0x33a8, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
@@ -10862,76 +11370,76 @@ static const unsigned short uc_decomposition_trie[] = {
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0x33a4, 0x33a6, 0x33a8, 0x33aa, 0x33ad, 0x33af, 0x33b1, 0x33b3,
- 0x33b5, 0x33b7, 0x33b9, 0x33bb, 0x33bd, 0x33bf, 0x33c2, 0x33c4,
- 0x33c6, 0x33c8, 0x33ca, 0x33cd, 0x33cf, 0x33d1, 0x33d3, 0x33d6,
- 0x33d8, 0x33da, 0x33dc, 0x33de, 0x33e0, 0x33e3, 0x33e5, 0x33e7,
- 0x33e9, 0x33eb, 0x33ed, 0x33ef, 0x33f1, 0x33f3, 0x33f5, 0x33f7,
- 0x33f9, 0x33fb, 0x33fd, 0x33ff, 0x3401, 0x3403, 0x3405, 0x3407,
- 0x3409, 0x340b, 0x340d, 0x340f, 0x3411, 0x3414, 0x3416, 0x3418,
- 0x341a, 0x341d, 0x341f, 0x3421, 0x3423, 0x3425, 0x3427, 0x3429,
- 0x342b, 0x342d, 0x342f, 0x3431, 0x3433, 0x3435, 0x3437, 0x3439,
- 0x343b, 0x343d, 0x343f, 0x3441, 0x3443, 0x3445, 0x3447, 0x3449,
- 0x344b, 0x344d, 0x344f, 0x3451, 0x3453, 0x3455, 0x3457, 0x3459,
- 0x345b, 0x345d, 0x3460, 0x3462, 0x3464, 0x3466, 0x3468, 0x346a,
- 0x346c, 0x346f, 0x3472, 0x3474, 0x3476, 0x3478, 0x347a, 0x347c,
- 0x347e, 0x3480, 0x3482, 0x3484, 0x3486, 0x3489, 0x348b, 0x348d,
- 0x348f, 0x3491, 0x3494, 0x3496, 0x3498, 0x349a, 0x349c, 0x349e,
- 0x34a0, 0x34a2, 0x34a4, 0x34a6, 0x34a9, 0x34ab, 0x34ae, 0x34b0,
- 0x34b2, 0x34b4, 0x34b6, 0x34b8, 0x34ba, 0x34bc, 0x34be, 0x34c0,
- 0x34c2, 0x34c4, 0x34c7, 0x34c9, 0x34cb, 0x34cd, 0x34cf, 0x34d1,
- 0x34d4, 0x34d6, 0x34d9, 0x34dc, 0x34de, 0x34e0, 0x34e2, 0x34e4,
- 0x34e7, 0x34ea, 0x34ec, 0x34ee, 0x34f0, 0x34f2, 0x34f4, 0x34f6,
- 0x34f8, 0x34fa, 0x34fc, 0x34fe, 0x3500, 0x3503, 0x3505, 0x3507,
- 0x3509, 0x350b, 0x350d, 0x350f, 0x3511, 0x3513, 0x3515, 0x3517,
- 0x3519, 0x351b, 0x351d, 0x351f, 0x3521, 0x3523, 0x3525, 0x3527,
- 0x3529, 0x352c, 0x352e, 0x3530, 0x3532, 0x3534, 0x3536, 0x3539,
- 0x353b, 0x353d, 0x353f, 0x3541, 0x3543, 0x3545, 0x3547, 0x3549,
- 0x354b, 0x354d, 0x354f, 0x3552, 0x3554, 0x3556, 0x3558, 0x355a,
- 0x355c, 0x355e, 0x3560, 0x3562, 0x3564, 0x3566, 0x3568, 0x356a,
- 0x356c, 0x356e, 0x3570, 0x3572, 0x3574, 0x3576, 0x3579, 0x357b,
- 0x357d, 0x357f, 0x3581, 0x3583, 0x3586, 0x3588, 0x358a, 0x358c,
- 0x358e, 0x3590, 0x3592, 0x3594, 0x3596, 0x3599, 0x359b, 0x359d,
- 0x359f, 0x35a2, 0x35a4, 0x35a6, 0x35a8, 0x35aa, 0x35ac, 0x35ae,
- 0x35b1, 0x35b4, 0x35b7, 0x35b9, 0x35bc, 0x35be, 0x35c0, 0x35c2,
+ 0x33aa, 0x33ac, 0x33ae, 0x33b0, 0x33b3, 0x33b5, 0x33b7, 0x33b9,
+ 0x33bb, 0x33bd, 0x33bf, 0x33c1, 0x33c3, 0x33c5, 0x33c8, 0x33ca,
+ 0x33cc, 0x33ce, 0x33d0, 0x33d3, 0x33d5, 0x33d7, 0x33d9, 0x33dc,
+ 0x33de, 0x33e0, 0x33e2, 0x33e4, 0x33e6, 0x33e9, 0x33eb, 0x33ed,
+ 0x33ef, 0x33f1, 0x33f3, 0x33f5, 0x33f7, 0x33f9, 0x33fb, 0x33fd,
+ 0x33ff, 0x3401, 0x3403, 0x3405, 0x3407, 0x3409, 0x340b, 0x340d,
+ 0x340f, 0x3411, 0x3413, 0x3415, 0x3417, 0x341a, 0x341c, 0x341e,
+ 0x3420, 0x3423, 0x3425, 0x3427, 0x3429, 0x342b, 0x342d, 0x342f,
+ 0x3431, 0x3433, 0x3435, 0x3437, 0x3439, 0x343b, 0x343d, 0x343f,
+ 0x3441, 0x3443, 0x3445, 0x3447, 0x3449, 0x344b, 0x344d, 0x344f,
+ 0x3451, 0x3453, 0x3455, 0x3457, 0x3459, 0x345b, 0x345d, 0x345f,
+ 0x3461, 0x3463, 0x3466, 0x3468, 0x346a, 0x346c, 0x346e, 0x3470,
+ 0x3472, 0x3475, 0x3478, 0x347a, 0x347c, 0x347e, 0x3480, 0x3482,
+ 0x3484, 0x3486, 0x3488, 0x348a, 0x348c, 0x348f, 0x3491, 0x3493,
+ 0x3495, 0x3497, 0x349a, 0x349c, 0x349e, 0x34a0, 0x34a2, 0x34a4,
+ 0x34a6, 0x34a8, 0x34aa, 0x34ac, 0x34af, 0x34b1, 0x34b4, 0x34b6,
+ 0x34b8, 0x34ba, 0x34bc, 0x34be, 0x34c0, 0x34c2, 0x34c4, 0x34c6,
+ 0x34c8, 0x34ca, 0x34cd, 0x34cf, 0x34d1, 0x34d3, 0x34d5, 0x34d7,
+ 0x34da, 0x34dc, 0x34df, 0x34e2, 0x34e4, 0x34e6, 0x34e8, 0x34ea,
+ 0x34ed, 0x34f0, 0x34f2, 0x34f4, 0x34f6, 0x34f8, 0x34fa, 0x34fc,
+ 0x34fe, 0x3500, 0x3502, 0x3504, 0x3506, 0x3509, 0x350b, 0x350d,
+ 0x350f, 0x3511, 0x3513, 0x3515, 0x3517, 0x3519, 0x351b, 0x351d,
+ 0x351f, 0x3521, 0x3523, 0x3525, 0x3527, 0x3529, 0x352b, 0x352d,
+ 0x352f, 0x3532, 0x3534, 0x3536, 0x3538, 0x353a, 0x353c, 0x353f,
+ 0x3541, 0x3543, 0x3545, 0x3547, 0x3549, 0x354b, 0x354d, 0x354f,
+ 0x3551, 0x3553, 0x3555, 0x3558, 0x355a, 0x355c, 0x355e, 0x3560,
+ 0x3562, 0x3564, 0x3566, 0x3568, 0x356a, 0x356c, 0x356e, 0x3570,
+ 0x3572, 0x3574, 0x3576, 0x3578, 0x357a, 0x357c, 0x357f, 0x3581,
+ 0x3583, 0x3585, 0x3587, 0x3589, 0x358c, 0x358e, 0x3590, 0x3592,
+ 0x3594, 0x3596, 0x3598, 0x359a, 0x359c, 0x359f, 0x35a1, 0x35a3,
+ 0x35a5, 0x35a8, 0x35aa, 0x35ac, 0x35ae, 0x35b0, 0x35b2, 0x35b4,
+ 0x35b7, 0x35ba, 0x35bd, 0x35bf, 0x35c2, 0x35c4, 0x35c6, 0x35c8,
- 0x35c4, 0x35c6, 0x35c8, 0x35ca, 0x35cc, 0x35ce, 0x35d0, 0x35d3,
- 0x35d5, 0x35d7, 0x35d9, 0x35db, 0x35dd, 0x35df, 0x35e2, 0x35e4,
- 0x35e6, 0x35e9, 0x35ec, 0x35ee, 0x35f0, 0x35f2, 0x35f4, 0x35f6,
- 0x35f8, 0x35fa, 0x35fc, 0x35fe, 0x3601, 0x3603, 0x3606, 0x3608,
- 0x360b, 0x360d, 0x360f, 0x3611, 0x3614, 0x3616, 0x3618, 0x361b,
- 0x361e, 0x3620, 0x3622, 0x3624, 0x3626, 0x3628, 0x362a, 0x362c,
- 0x362e, 0x3630, 0x3632, 0x3634, 0x3636, 0x3638, 0x363b, 0x363d,
- 0x3640, 0x3642, 0x3645, 0x3647, 0x364a, 0x364d, 0x3650, 0x3652,
- 0x3654, 0x3656, 0x3659, 0x365c, 0x365f, 0x3662, 0x3664, 0x3666,
- 0x3668, 0x366a, 0x366c, 0x366e, 0x3670, 0x3672, 0x3675, 0x3677,
- 0x3679, 0x367b, 0x367d, 0x3680, 0x3682, 0x3685, 0x3688, 0x368a,
- 0x368c, 0x368e, 0x3690, 0x3692, 0x3694, 0x3697, 0x369a, 0x369d,
- 0x369f, 0x36a1, 0x36a4, 0x36a6, 0x36a8, 0x36aa, 0x36ad, 0x36af,
- 0x36b1, 0x36b3, 0x36b5, 0x36b7, 0x36ba, 0x36bc, 0x36be, 0x36c0,
- 0x36c2, 0x36c4, 0x36c6, 0x36c9, 0x36cc, 0x36ce, 0x36d1, 0x36d3,
- 0x36d6, 0x36d8, 0x36da, 0x36dc, 0x36df, 0x36e2, 0x36e4, 0x36e7,
- 0x36e9, 0x36ec, 0x36ee, 0x36f0, 0x36f2, 0x36f4, 0x36f6, 0x36f8,
- 0x36fb, 0x36fe, 0x3701, 0x3704, 0x3706, 0x3708, 0x370a, 0x370c,
- 0x370e, 0x3710, 0x3712, 0x3714, 0x3716, 0x3718, 0x371a, 0x371c,
- 0x371f, 0x3721, 0x3723, 0x3725, 0x3727, 0x3729, 0x372b, 0x372d,
- 0x372f, 0x3731, 0x3733, 0x3735, 0x3737, 0x373a, 0x373d, 0x3740,
- 0x3742, 0x3744, 0x3746, 0x3748, 0x374b, 0x374d, 0x3750, 0x3752,
- 0x3754, 0x3757, 0x375a, 0x375c, 0x375e, 0x3760, 0x3762, 0x3764,
- 0x3766, 0x3768, 0x376a, 0x376c, 0x376e, 0x3770, 0x3772, 0x3774,
- 0x3776, 0x3778, 0x377a, 0x377c, 0x377e, 0x3780, 0x3783, 0x3785,
- 0x3787, 0x3789, 0x378b, 0x378d, 0x3790, 0x3793, 0x3795, 0x3797,
- 0x3799, 0x379b, 0x379d, 0x379f, 0x37a2, 0x37a4, 0x37a6, 0x37a8,
- 0x37aa, 0x37ad, 0x37b0, 0x37b2, 0x37b4, 0x37b6, 0x37b9, 0x37bb,
- 0x37bd, 0x37c0, 0x37c3, 0x37c5, 0x37c7, 0x37c9, 0x37cc, 0x37ce,
- 0x37d0, 0x37d2, 0x37d4, 0x37d6, 0x37d8, 0x37da, 0x37dd, 0x37df,
- 0x37e1, 0x37e3, 0x37e6, 0x37e8, 0x37ea, 0x37ec, 0x37ee, 0x37f1,
- 0x37f4, 0x37f6, 0x37f8, 0x37fa, 0x37fd, 0x37ff, 0x3802, 0x3804,
+ 0x35ca, 0x35cc, 0x35ce, 0x35d0, 0x35d2, 0x35d4, 0x35d6, 0x35d9,
+ 0x35db, 0x35dd, 0x35df, 0x35e1, 0x35e3, 0x35e5, 0x35e8, 0x35ea,
+ 0x35ec, 0x35ef, 0x35f2, 0x35f4, 0x35f6, 0x35f8, 0x35fa, 0x35fc,
+ 0x35fe, 0x3600, 0x3602, 0x3604, 0x3607, 0x3609, 0x360c, 0x360e,
+ 0x3611, 0x3613, 0x3615, 0x3617, 0x361a, 0x361c, 0x361e, 0x3621,
+ 0x3624, 0x3626, 0x3628, 0x362a, 0x362c, 0x362e, 0x3630, 0x3632,
+ 0x3634, 0x3636, 0x3638, 0x363a, 0x363c, 0x363e, 0x3641, 0x3643,
+ 0x3646, 0x3648, 0x364b, 0x364d, 0x3650, 0x3653, 0x3656, 0x3658,
+ 0x365a, 0x365c, 0x365f, 0x3662, 0x3665, 0x3668, 0x366a, 0x366c,
+ 0x366e, 0x3670, 0x3672, 0x3674, 0x3676, 0x3678, 0x367b, 0x367d,
+ 0x367f, 0x3681, 0x3683, 0x3686, 0x3688, 0x368b, 0x368e, 0x3690,
+ 0x3692, 0x3694, 0x3696, 0x3698, 0x369a, 0x369d, 0x36a0, 0x36a3,
+ 0x36a5, 0x36a7, 0x36aa, 0x36ac, 0x36ae, 0x36b0, 0x36b3, 0x36b5,
+ 0x36b7, 0x36b9, 0x36bb, 0x36bd, 0x36c0, 0x36c2, 0x36c4, 0x36c6,
+ 0x36c8, 0x36ca, 0x36cc, 0x36cf, 0x36d2, 0x36d4, 0x36d7, 0x36d9,
+ 0x36dc, 0x36de, 0x36e0, 0x36e2, 0x36e5, 0x36e8, 0x36ea, 0x36ed,
+ 0x36ef, 0x36f2, 0x36f4, 0x36f6, 0x36f8, 0x36fa, 0x36fc, 0x36fe,
+ 0x3701, 0x3704, 0x3707, 0x370a, 0x370c, 0x370e, 0x3710, 0x3712,
+ 0x3714, 0x3716, 0x3718, 0x371a, 0x371c, 0x371e, 0x3720, 0x3722,
+ 0x3725, 0x3727, 0x3729, 0x372b, 0x372d, 0x372f, 0x3731, 0x3733,
+ 0x3735, 0x3737, 0x3739, 0x373b, 0x373d, 0x3740, 0x3743, 0x3746,
+ 0x3748, 0x374a, 0x374c, 0x374e, 0x3751, 0x3753, 0x3756, 0x3758,
+ 0x375a, 0x375d, 0x3760, 0x3762, 0x3764, 0x3766, 0x3768, 0x376a,
+ 0x376c, 0x376e, 0x3770, 0x3772, 0x3774, 0x3776, 0x3778, 0x377a,
+ 0x377c, 0x377e, 0x3780, 0x3782, 0x3784, 0x3786, 0x3789, 0x378b,
+ 0x378d, 0x378f, 0x3791, 0x3793, 0x3796, 0x3799, 0x379b, 0x379d,
+ 0x379f, 0x37a1, 0x37a3, 0x37a5, 0x37a8, 0x37aa, 0x37ac, 0x37ae,
+ 0x37b0, 0x37b3, 0x37b6, 0x37b8, 0x37ba, 0x37bc, 0x37bf, 0x37c1,
+ 0x37c3, 0x37c6, 0x37c9, 0x37cb, 0x37cd, 0x37cf, 0x37d2, 0x37d4,
+ 0x37d6, 0x37d8, 0x37da, 0x37dc, 0x37de, 0x37e0, 0x37e3, 0x37e5,
+ 0x37e7, 0x37e9, 0x37ec, 0x37ee, 0x37f0, 0x37f2, 0x37f4, 0x37f7,
+ 0x37fa, 0x37fc, 0x37fe, 0x3800, 0x3803, 0x3805, 0x3808, 0x380a,
- 0x3806, 0x3808, 0x380b, 0x380d, 0x380f, 0x3811, 0x3813, 0x3815,
- 0x3817, 0x3819, 0x381c, 0x381e, 0x3820, 0x3822, 0x3824, 0x3826,
- 0x3828, 0x382b, 0x382d, 0x3830, 0x3833, 0x3836, 0x3838, 0x383a,
- 0x383c, 0x383e, 0x3840, 0x3842, 0x3844, 0x3846, 0xffff, 0xffff,
+ 0x380c, 0x380e, 0x3811, 0x3813, 0x3815, 0x3817, 0x3819, 0x381b,
+ 0x381d, 0x381f, 0x3822, 0x3824, 0x3826, 0x3828, 0x382a, 0x382c,
+ 0x382e, 0x3831, 0x3833, 0x3836, 0x3839, 0x383c, 0x383e, 0x3840,
+ 0x3842, 0x3844, 0x3846, 0x3848, 0x384a, 0x384c, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
@@ -11678,1100 +12186,1100 @@ static const unsigned short uc_decomposition_map[] = {
0x30e1, 0x108, 0x30e2, 0x108, 0x30e4, 0x108, 0x30e6, 0x108,
0x30e8, 0x108, 0x30e9, 0x108, 0x30ea, 0x108, 0x30eb, 0x108,
0x30ec, 0x108, 0x30ed, 0x108, 0x30ef, 0x108, 0x30f0, 0x108,
- 0x30f1, 0x108, 0x30f2, 0x40f, 0x30a2, 0x30d1, 0x30fc, 0x30c8,
- 0x40f, 0x30a2, 0x30eb, 0x30d5, 0x30a1, 0x40f, 0x30a2, 0x30f3,
- 0x30da, 0x30a2, 0x30f, 0x30a2, 0x30fc, 0x30eb, 0x40f, 0x30a4,
- 0x30cb, 0x30f3, 0x30b0, 0x30f, 0x30a4, 0x30f3, 0x30c1, 0x30f,
- 0x30a6, 0x30a9, 0x30f3, 0x50f, 0x30a8, 0x30b9, 0x30af, 0x30fc,
- 0x30c9, 0x40f, 0x30a8, 0x30fc, 0x30ab, 0x30fc, 0x30f, 0x30aa,
- 0x30f3, 0x30b9, 0x30f, 0x30aa, 0x30fc, 0x30e0, 0x30f, 0x30ab,
- 0x30a4, 0x30ea, 0x40f, 0x30ab, 0x30e9, 0x30c3, 0x30c8, 0x40f,
- 0x30ab, 0x30ed, 0x30ea, 0x30fc, 0x30f, 0x30ac, 0x30ed, 0x30f3,
- 0x30f, 0x30ac, 0x30f3, 0x30de, 0x20f, 0x30ae, 0x30ac, 0x30f,
- 0x30ae, 0x30cb, 0x30fc, 0x40f, 0x30ad, 0x30e5, 0x30ea, 0x30fc,
- 0x40f, 0x30ae, 0x30eb, 0x30c0, 0x30fc, 0x20f, 0x30ad, 0x30ed,
- 0x50f, 0x30ad, 0x30ed, 0x30b0, 0x30e9, 0x30e0, 0x60f, 0x30ad,
- 0x30ed, 0x30e1, 0x30fc, 0x30c8, 0x30eb, 0x50f, 0x30ad, 0x30ed,
- 0x30ef, 0x30c3, 0x30c8, 0x30f, 0x30b0, 0x30e9, 0x30e0, 0x50f,
- 0x30b0, 0x30e9, 0x30e0, 0x30c8, 0x30f3, 0x50f, 0x30af, 0x30eb,
- 0x30bc, 0x30a4, 0x30ed, 0x40f, 0x30af, 0x30ed, 0x30fc, 0x30cd,
- 0x30f, 0x30b1, 0x30fc, 0x30b9, 0x30f, 0x30b3, 0x30eb, 0x30ca,
- 0x30f, 0x30b3, 0x30fc, 0x30dd, 0x40f, 0x30b5, 0x30a4, 0x30af,
- 0x30eb, 0x50f, 0x30b5, 0x30f3, 0x30c1, 0x30fc, 0x30e0, 0x40f,
- 0x30b7, 0x30ea, 0x30f3, 0x30b0, 0x30f, 0x30bb, 0x30f3, 0x30c1,
- 0x30f, 0x30bb, 0x30f3, 0x30c8, 0x30f, 0x30c0, 0x30fc, 0x30b9,
- 0x20f, 0x30c7, 0x30b7, 0x20f, 0x30c9, 0x30eb, 0x20f, 0x30c8,
- 0x30f3, 0x20f, 0x30ca, 0x30ce, 0x30f, 0x30ce, 0x30c3, 0x30c8,
- 0x30f, 0x30cf, 0x30a4, 0x30c4, 0x50f, 0x30d1, 0x30fc, 0x30bb,
- 0x30f3, 0x30c8, 0x30f, 0x30d1, 0x30fc, 0x30c4, 0x40f, 0x30d0,
- 0x30fc, 0x30ec, 0x30eb, 0x50f, 0x30d4, 0x30a2, 0x30b9, 0x30c8,
- 0x30eb, 0x30f, 0x30d4, 0x30af, 0x30eb, 0x20f, 0x30d4, 0x30b3,
- 0x20f, 0x30d3, 0x30eb, 0x50f, 0x30d5, 0x30a1, 0x30e9, 0x30c3,
- 0x30c9, 0x40f, 0x30d5, 0x30a3, 0x30fc, 0x30c8, 0x50f, 0x30d6,
- 0x30c3, 0x30b7, 0x30a7, 0x30eb, 0x30f, 0x30d5, 0x30e9, 0x30f3,
- 0x50f, 0x30d8, 0x30af, 0x30bf, 0x30fc, 0x30eb, 0x20f, 0x30da,
- 0x30bd, 0x30f, 0x30da, 0x30cb, 0x30d2, 0x30f, 0x30d8, 0x30eb,
- 0x30c4, 0x30f, 0x30da, 0x30f3, 0x30b9, 0x30f, 0x30da, 0x30fc,
- 0x30b8, 0x30f, 0x30d9, 0x30fc, 0x30bf, 0x40f, 0x30dd, 0x30a4,
- 0x30f3, 0x30c8, 0x30f, 0x30dc, 0x30eb, 0x30c8, 0x20f, 0x30db,
- 0x30f3, 0x30f, 0x30dd, 0x30f3, 0x30c9, 0x30f, 0x30db, 0x30fc,
- 0x30eb, 0x30f, 0x30db, 0x30fc, 0x30f3, 0x40f, 0x30de, 0x30a4,
- 0x30af, 0x30ed, 0x30f, 0x30de, 0x30a4, 0x30eb, 0x30f, 0x30de,
- 0x30c3, 0x30cf, 0x30f, 0x30de, 0x30eb, 0x30af, 0x50f, 0x30de,
- 0x30f3, 0x30b7, 0x30e7, 0x30f3, 0x40f, 0x30df, 0x30af, 0x30ed,
- 0x30f3, 0x20f, 0x30df, 0x30ea, 0x50f, 0x30df, 0x30ea, 0x30d0,
- 0x30fc, 0x30eb, 0x20f, 0x30e1, 0x30ac, 0x40f, 0x30e1, 0x30ac,
- 0x30c8, 0x30f3, 0x40f, 0x30e1, 0x30fc, 0x30c8, 0x30eb, 0x30f,
- 0x30e4, 0x30fc, 0x30c9, 0x30f, 0x30e4, 0x30fc, 0x30eb, 0x30f,
- 0x30e6, 0x30a2, 0x30f3, 0x40f, 0x30ea, 0x30c3, 0x30c8, 0x30eb,
- 0x20f, 0x30ea, 0x30e9, 0x30f, 0x30eb, 0x30d4, 0x30fc, 0x40f,
- 0x30eb, 0x30fc, 0x30d6, 0x30eb, 0x20f, 0x30ec, 0x30e0, 0x50f,
- 0x30ec, 0x30f3, 0x30c8, 0x30b2, 0x30f3, 0x30f, 0x30ef, 0x30c3,
- 0x30c8, 0x210, 0x30, 0x70b9, 0x210, 0x31, 0x70b9, 0x210,
- 0x32, 0x70b9, 0x210, 0x33, 0x70b9, 0x210, 0x34, 0x70b9,
- 0x210, 0x35, 0x70b9, 0x210, 0x36, 0x70b9, 0x210, 0x37,
- 0x70b9, 0x210, 0x38, 0x70b9, 0x210, 0x39, 0x70b9, 0x310,
- 0x31, 0x30, 0x70b9, 0x310, 0x31, 0x31, 0x70b9, 0x310,
- 0x31, 0x32, 0x70b9, 0x310, 0x31, 0x33, 0x70b9, 0x310,
- 0x31, 0x34, 0x70b9, 0x310, 0x31, 0x35, 0x70b9, 0x310,
- 0x31, 0x36, 0x70b9, 0x310, 0x31, 0x37, 0x70b9, 0x310,
- 0x31, 0x38, 0x70b9, 0x310, 0x31, 0x39, 0x70b9, 0x310,
- 0x32, 0x30, 0x70b9, 0x310, 0x32, 0x31, 0x70b9, 0x310,
- 0x32, 0x32, 0x70b9, 0x310, 0x32, 0x33, 0x70b9, 0x310,
- 0x32, 0x34, 0x70b9, 0x30f, 0x68, 0x50, 0x61, 0x20f,
- 0x64, 0x61, 0x20f, 0x41, 0x55, 0x30f, 0x62, 0x61,
- 0x72, 0x20f, 0x6f, 0x56, 0x20f, 0x70, 0x63, 0x20f,
- 0x64, 0x6d, 0x30f, 0x64, 0x6d, 0xb2, 0x30f, 0x64,
- 0x6d, 0xb3, 0x20f, 0x49, 0x55, 0x20f, 0x5e73, 0x6210,
- 0x20f, 0x662d, 0x548c, 0x20f, 0x5927, 0x6b63, 0x20f, 0x660e,
- 0x6cbb, 0x40f, 0x682a, 0x5f0f, 0x4f1a, 0x793e, 0x20f, 0x70,
- 0x41, 0x20f, 0x6e, 0x41, 0x20f, 0x3bc, 0x41, 0x20f,
- 0x6d, 0x41, 0x20f, 0x6b, 0x41, 0x20f, 0x4b, 0x42,
- 0x20f, 0x4d, 0x42, 0x20f, 0x47, 0x42, 0x30f, 0x63,
- 0x61, 0x6c, 0x40f, 0x6b, 0x63, 0x61, 0x6c, 0x20f,
- 0x70, 0x46, 0x20f, 0x6e, 0x46, 0x20f, 0x3bc, 0x46,
- 0x20f, 0x3bc, 0x67, 0x20f, 0x6d, 0x67, 0x20f, 0x6b,
- 0x67, 0x20f, 0x48, 0x7a, 0x30f, 0x6b, 0x48, 0x7a,
- 0x30f, 0x4d, 0x48, 0x7a, 0x30f, 0x47, 0x48, 0x7a,
- 0x30f, 0x54, 0x48, 0x7a, 0x20f, 0x3bc, 0x2113, 0x20f,
- 0x6d, 0x2113, 0x20f, 0x64, 0x2113, 0x20f, 0x6b, 0x2113,
- 0x20f, 0x66, 0x6d, 0x20f, 0x6e, 0x6d, 0x20f, 0x3bc,
- 0x6d, 0x20f, 0x6d, 0x6d, 0x20f, 0x63, 0x6d, 0x20f,
- 0x6b, 0x6d, 0x30f, 0x6d, 0x6d, 0xb2, 0x30f, 0x63,
- 0x6d, 0xb2, 0x20f, 0x6d, 0xb2, 0x30f, 0x6b, 0x6d,
- 0xb2, 0x30f, 0x6d, 0x6d, 0xb3, 0x30f, 0x63, 0x6d,
- 0xb3, 0x20f, 0x6d, 0xb3, 0x30f, 0x6b, 0x6d, 0xb3,
- 0x30f, 0x6d, 0x2215, 0x73, 0x40f, 0x6d, 0x2215, 0x73,
- 0xb2, 0x20f, 0x50, 0x61, 0x30f, 0x6b, 0x50, 0x61,
- 0x30f, 0x4d, 0x50, 0x61, 0x30f, 0x47, 0x50, 0x61,
- 0x30f, 0x72, 0x61, 0x64, 0x50f, 0x72, 0x61, 0x64,
- 0x2215, 0x73, 0x60f, 0x72, 0x61, 0x64, 0x2215, 0x73,
- 0xb2, 0x20f, 0x70, 0x73, 0x20f, 0x6e, 0x73, 0x20f,
- 0x3bc, 0x73, 0x20f, 0x6d, 0x73, 0x20f, 0x70, 0x56,
- 0x20f, 0x6e, 0x56, 0x20f, 0x3bc, 0x56, 0x20f, 0x6d,
- 0x56, 0x20f, 0x6b, 0x56, 0x20f, 0x4d, 0x56, 0x20f,
- 0x70, 0x57, 0x20f, 0x6e, 0x57, 0x20f, 0x3bc, 0x57,
- 0x20f, 0x6d, 0x57, 0x20f, 0x6b, 0x57, 0x20f, 0x4d,
- 0x57, 0x20f, 0x6b, 0x3a9, 0x20f, 0x4d, 0x3a9, 0x40f,
- 0x61, 0x2e, 0x6d, 0x2e, 0x20f, 0x42, 0x71, 0x20f,
- 0x63, 0x63, 0x20f, 0x63, 0x64, 0x40f, 0x43, 0x2215,
- 0x6b, 0x67, 0x30f, 0x43, 0x6f, 0x2e, 0x20f, 0x64,
- 0x42, 0x20f, 0x47, 0x79, 0x20f, 0x68, 0x61, 0x20f,
- 0x48, 0x50, 0x20f, 0x69, 0x6e, 0x20f, 0x4b, 0x4b,
- 0x20f, 0x4b, 0x4d, 0x20f, 0x6b, 0x74, 0x20f, 0x6c,
- 0x6d, 0x20f, 0x6c, 0x6e, 0x30f, 0x6c, 0x6f, 0x67,
- 0x20f, 0x6c, 0x78, 0x20f, 0x6d, 0x62, 0x30f, 0x6d,
- 0x69, 0x6c, 0x30f, 0x6d, 0x6f, 0x6c, 0x20f, 0x50,
- 0x48, 0x40f, 0x70, 0x2e, 0x6d, 0x2e, 0x30f, 0x50,
- 0x50, 0x4d, 0x20f, 0x50, 0x52, 0x20f, 0x73, 0x72,
- 0x20f, 0x53, 0x76, 0x20f, 0x57, 0x62, 0x30f, 0x56,
- 0x2215, 0x6d, 0x30f, 0x41, 0x2215, 0x6d, 0x210, 0x31,
- 0x65e5, 0x210, 0x32, 0x65e5, 0x210, 0x33, 0x65e5, 0x210,
- 0x34, 0x65e5, 0x210, 0x35, 0x65e5, 0x210, 0x36, 0x65e5,
- 0x210, 0x37, 0x65e5, 0x210, 0x38, 0x65e5, 0x210, 0x39,
- 0x65e5, 0x310, 0x31, 0x30, 0x65e5, 0x310, 0x31, 0x31,
- 0x65e5, 0x310, 0x31, 0x32, 0x65e5, 0x310, 0x31, 0x33,
- 0x65e5, 0x310, 0x31, 0x34, 0x65e5, 0x310, 0x31, 0x35,
- 0x65e5, 0x310, 0x31, 0x36, 0x65e5, 0x310, 0x31, 0x37,
- 0x65e5, 0x310, 0x31, 0x38, 0x65e5, 0x310, 0x31, 0x39,
- 0x65e5, 0x310, 0x32, 0x30, 0x65e5, 0x310, 0x32, 0x31,
- 0x65e5, 0x310, 0x32, 0x32, 0x65e5, 0x310, 0x32, 0x33,
- 0x65e5, 0x310, 0x32, 0x34, 0x65e5, 0x310, 0x32, 0x35,
- 0x65e5, 0x310, 0x32, 0x36, 0x65e5, 0x310, 0x32, 0x37,
- 0x65e5, 0x310, 0x32, 0x38, 0x65e5, 0x310, 0x32, 0x39,
- 0x65e5, 0x310, 0x33, 0x30, 0x65e5, 0x310, 0x33, 0x31,
- 0x65e5, 0x30f, 0x67, 0x61, 0x6c, 0x109, 0x44a, 0x109,
- 0x44c, 0x109, 0xa76f, 0x109, 0x126, 0x109, 0x153, 0x109,
- 0xa727, 0x109, 0xab37, 0x109, 0x26b, 0x109, 0xab52, 0x101,
- 0x8c48, 0x101, 0x66f4, 0x101, 0x8eca, 0x101, 0x8cc8, 0x101,
- 0x6ed1, 0x101, 0x4e32, 0x101, 0x53e5, 0x101, 0x9f9c, 0x101,
- 0x9f9c, 0x101, 0x5951, 0x101, 0x91d1, 0x101, 0x5587, 0x101,
- 0x5948, 0x101, 0x61f6, 0x101, 0x7669, 0x101, 0x7f85, 0x101,
- 0x863f, 0x101, 0x87ba, 0x101, 0x88f8, 0x101, 0x908f, 0x101,
- 0x6a02, 0x101, 0x6d1b, 0x101, 0x70d9, 0x101, 0x73de, 0x101,
- 0x843d, 0x101, 0x916a, 0x101, 0x99f1, 0x101, 0x4e82, 0x101,
- 0x5375, 0x101, 0x6b04, 0x101, 0x721b, 0x101, 0x862d, 0x101,
- 0x9e1e, 0x101, 0x5d50, 0x101, 0x6feb, 0x101, 0x85cd, 0x101,
- 0x8964, 0x101, 0x62c9, 0x101, 0x81d8, 0x101, 0x881f, 0x101,
- 0x5eca, 0x101, 0x6717, 0x101, 0x6d6a, 0x101, 0x72fc, 0x101,
- 0x90ce, 0x101, 0x4f86, 0x101, 0x51b7, 0x101, 0x52de, 0x101,
- 0x64c4, 0x101, 0x6ad3, 0x101, 0x7210, 0x101, 0x76e7, 0x101,
- 0x8001, 0x101, 0x8606, 0x101, 0x865c, 0x101, 0x8def, 0x101,
- 0x9732, 0x101, 0x9b6f, 0x101, 0x9dfa, 0x101, 0x788c, 0x101,
- 0x797f, 0x101, 0x7da0, 0x101, 0x83c9, 0x101, 0x9304, 0x101,
- 0x9e7f, 0x101, 0x8ad6, 0x101, 0x58df, 0x101, 0x5f04, 0x101,
- 0x7c60, 0x101, 0x807e, 0x101, 0x7262, 0x101, 0x78ca, 0x101,
- 0x8cc2, 0x101, 0x96f7, 0x101, 0x58d8, 0x101, 0x5c62, 0x101,
- 0x6a13, 0x101, 0x6dda, 0x101, 0x6f0f, 0x101, 0x7d2f, 0x101,
- 0x7e37, 0x101, 0x964b, 0x101, 0x52d2, 0x101, 0x808b, 0x101,
- 0x51dc, 0x101, 0x51cc, 0x101, 0x7a1c, 0x101, 0x7dbe, 0x101,
- 0x83f1, 0x101, 0x9675, 0x101, 0x8b80, 0x101, 0x62cf, 0x101,
- 0x6a02, 0x101, 0x8afe, 0x101, 0x4e39, 0x101, 0x5be7, 0x101,
- 0x6012, 0x101, 0x7387, 0x101, 0x7570, 0x101, 0x5317, 0x101,
- 0x78fb, 0x101, 0x4fbf, 0x101, 0x5fa9, 0x101, 0x4e0d, 0x101,
- 0x6ccc, 0x101, 0x6578, 0x101, 0x7d22, 0x101, 0x53c3, 0x101,
- 0x585e, 0x101, 0x7701, 0x101, 0x8449, 0x101, 0x8aaa, 0x101,
- 0x6bba, 0x101, 0x8fb0, 0x101, 0x6c88, 0x101, 0x62fe, 0x101,
- 0x82e5, 0x101, 0x63a0, 0x101, 0x7565, 0x101, 0x4eae, 0x101,
- 0x5169, 0x101, 0x51c9, 0x101, 0x6881, 0x101, 0x7ce7, 0x101,
- 0x826f, 0x101, 0x8ad2, 0x101, 0x91cf, 0x101, 0x52f5, 0x101,
- 0x5442, 0x101, 0x5973, 0x101, 0x5eec, 0x101, 0x65c5, 0x101,
- 0x6ffe, 0x101, 0x792a, 0x101, 0x95ad, 0x101, 0x9a6a, 0x101,
- 0x9e97, 0x101, 0x9ece, 0x101, 0x529b, 0x101, 0x66c6, 0x101,
- 0x6b77, 0x101, 0x8f62, 0x101, 0x5e74, 0x101, 0x6190, 0x101,
- 0x6200, 0x101, 0x649a, 0x101, 0x6f23, 0x101, 0x7149, 0x101,
- 0x7489, 0x101, 0x79ca, 0x101, 0x7df4, 0x101, 0x806f, 0x101,
- 0x8f26, 0x101, 0x84ee, 0x101, 0x9023, 0x101, 0x934a, 0x101,
- 0x5217, 0x101, 0x52a3, 0x101, 0x54bd, 0x101, 0x70c8, 0x101,
- 0x88c2, 0x101, 0x8aaa, 0x101, 0x5ec9, 0x101, 0x5ff5, 0x101,
- 0x637b, 0x101, 0x6bae, 0x101, 0x7c3e, 0x101, 0x7375, 0x101,
- 0x4ee4, 0x101, 0x56f9, 0x101, 0x5be7, 0x101, 0x5dba, 0x101,
- 0x601c, 0x101, 0x73b2, 0x101, 0x7469, 0x101, 0x7f9a, 0x101,
- 0x8046, 0x101, 0x9234, 0x101, 0x96f6, 0x101, 0x9748, 0x101,
- 0x9818, 0x101, 0x4f8b, 0x101, 0x79ae, 0x101, 0x91b4, 0x101,
- 0x96b8, 0x101, 0x60e1, 0x101, 0x4e86, 0x101, 0x50da, 0x101,
- 0x5bee, 0x101, 0x5c3f, 0x101, 0x6599, 0x101, 0x6a02, 0x101,
- 0x71ce, 0x101, 0x7642, 0x101, 0x84fc, 0x101, 0x907c, 0x101,
- 0x9f8d, 0x101, 0x6688, 0x101, 0x962e, 0x101, 0x5289, 0x101,
- 0x677b, 0x101, 0x67f3, 0x101, 0x6d41, 0x101, 0x6e9c, 0x101,
- 0x7409, 0x101, 0x7559, 0x101, 0x786b, 0x101, 0x7d10, 0x101,
- 0x985e, 0x101, 0x516d, 0x101, 0x622e, 0x101, 0x9678, 0x101,
- 0x502b, 0x101, 0x5d19, 0x101, 0x6dea, 0x101, 0x8f2a, 0x101,
- 0x5f8b, 0x101, 0x6144, 0x101, 0x6817, 0x101, 0x7387, 0x101,
- 0x9686, 0x101, 0x5229, 0x101, 0x540f, 0x101, 0x5c65, 0x101,
- 0x6613, 0x101, 0x674e, 0x101, 0x68a8, 0x101, 0x6ce5, 0x101,
- 0x7406, 0x101, 0x75e2, 0x101, 0x7f79, 0x101, 0x88cf, 0x101,
- 0x88e1, 0x101, 0x91cc, 0x101, 0x96e2, 0x101, 0x533f, 0x101,
- 0x6eba, 0x101, 0x541d, 0x101, 0x71d0, 0x101, 0x7498, 0x101,
- 0x85fa, 0x101, 0x96a3, 0x101, 0x9c57, 0x101, 0x9e9f, 0x101,
- 0x6797, 0x101, 0x6dcb, 0x101, 0x81e8, 0x101, 0x7acb, 0x101,
- 0x7b20, 0x101, 0x7c92, 0x101, 0x72c0, 0x101, 0x7099, 0x101,
- 0x8b58, 0x101, 0x4ec0, 0x101, 0x8336, 0x101, 0x523a, 0x101,
- 0x5207, 0x101, 0x5ea6, 0x101, 0x62d3, 0x101, 0x7cd6, 0x101,
- 0x5b85, 0x101, 0x6d1e, 0x101, 0x66b4, 0x101, 0x8f3b, 0x101,
- 0x884c, 0x101, 0x964d, 0x101, 0x898b, 0x101, 0x5ed3, 0x101,
- 0x5140, 0x101, 0x55c0, 0x101, 0x585a, 0x101, 0x6674, 0x101,
- 0x51de, 0x101, 0x732a, 0x101, 0x76ca, 0x101, 0x793c, 0x101,
- 0x795e, 0x101, 0x7965, 0x101, 0x798f, 0x101, 0x9756, 0x101,
- 0x7cbe, 0x101, 0x7fbd, 0x101, 0x8612, 0x101, 0x8af8, 0x101,
- 0x9038, 0x101, 0x90fd, 0x101, 0x98ef, 0x101, 0x98fc, 0x101,
- 0x9928, 0x101, 0x9db4, 0x101, 0x90de, 0x101, 0x96b7, 0x101,
- 0x4fae, 0x101, 0x50e7, 0x101, 0x514d, 0x101, 0x52c9, 0x101,
- 0x52e4, 0x101, 0x5351, 0x101, 0x559d, 0x101, 0x5606, 0x101,
- 0x5668, 0x101, 0x5840, 0x101, 0x58a8, 0x101, 0x5c64, 0x101,
- 0x5c6e, 0x101, 0x6094, 0x101, 0x6168, 0x101, 0x618e, 0x101,
- 0x61f2, 0x101, 0x654f, 0x101, 0x65e2, 0x101, 0x6691, 0x101,
- 0x6885, 0x101, 0x6d77, 0x101, 0x6e1a, 0x101, 0x6f22, 0x101,
- 0x716e, 0x101, 0x722b, 0x101, 0x7422, 0x101, 0x7891, 0x101,
- 0x793e, 0x101, 0x7949, 0x101, 0x7948, 0x101, 0x7950, 0x101,
- 0x7956, 0x101, 0x795d, 0x101, 0x798d, 0x101, 0x798e, 0x101,
- 0x7a40, 0x101, 0x7a81, 0x101, 0x7bc0, 0x101, 0x7df4, 0x101,
- 0x7e09, 0x101, 0x7e41, 0x101, 0x7f72, 0x101, 0x8005, 0x101,
- 0x81ed, 0x101, 0x8279, 0x101, 0x8279, 0x101, 0x8457, 0x101,
- 0x8910, 0x101, 0x8996, 0x101, 0x8b01, 0x101, 0x8b39, 0x101,
- 0x8cd3, 0x101, 0x8d08, 0x101, 0x8fb6, 0x101, 0x9038, 0x101,
- 0x96e3, 0x101, 0x97ff, 0x101, 0x983b, 0x101, 0x6075, 0x201,
- 0xd850, 0xdeee, 0x101, 0x8218, 0x101, 0x4e26, 0x101, 0x51b5,
- 0x101, 0x5168, 0x101, 0x4f80, 0x101, 0x5145, 0x101, 0x5180,
- 0x101, 0x52c7, 0x101, 0x52fa, 0x101, 0x559d, 0x101, 0x5555,
- 0x101, 0x5599, 0x101, 0x55e2, 0x101, 0x585a, 0x101, 0x58b3,
- 0x101, 0x5944, 0x101, 0x5954, 0x101, 0x5a62, 0x101, 0x5b28,
- 0x101, 0x5ed2, 0x101, 0x5ed9, 0x101, 0x5f69, 0x101, 0x5fad,
- 0x101, 0x60d8, 0x101, 0x614e, 0x101, 0x6108, 0x101, 0x618e,
- 0x101, 0x6160, 0x101, 0x61f2, 0x101, 0x6234, 0x101, 0x63c4,
- 0x101, 0x641c, 0x101, 0x6452, 0x101, 0x6556, 0x101, 0x6674,
- 0x101, 0x6717, 0x101, 0x671b, 0x101, 0x6756, 0x101, 0x6b79,
- 0x101, 0x6bba, 0x101, 0x6d41, 0x101, 0x6edb, 0x101, 0x6ecb,
- 0x101, 0x6f22, 0x101, 0x701e, 0x101, 0x716e, 0x101, 0x77a7,
- 0x101, 0x7235, 0x101, 0x72af, 0x101, 0x732a, 0x101, 0x7471,
- 0x101, 0x7506, 0x101, 0x753b, 0x101, 0x761d, 0x101, 0x761f,
- 0x101, 0x76ca, 0x101, 0x76db, 0x101, 0x76f4, 0x101, 0x774a,
- 0x101, 0x7740, 0x101, 0x78cc, 0x101, 0x7ab1, 0x101, 0x7bc0,
- 0x101, 0x7c7b, 0x101, 0x7d5b, 0x101, 0x7df4, 0x101, 0x7f3e,
- 0x101, 0x8005, 0x101, 0x8352, 0x101, 0x83ef, 0x101, 0x8779,
- 0x101, 0x8941, 0x101, 0x8986, 0x101, 0x8996, 0x101, 0x8abf,
- 0x101, 0x8af8, 0x101, 0x8acb, 0x101, 0x8b01, 0x101, 0x8afe,
- 0x101, 0x8aed, 0x101, 0x8b39, 0x101, 0x8b8a, 0x101, 0x8d08,
- 0x101, 0x8f38, 0x101, 0x9072, 0x101, 0x9199, 0x101, 0x9276,
- 0x101, 0x967c, 0x101, 0x96e3, 0x101, 0x9756, 0x101, 0x97db,
- 0x101, 0x97ff, 0x101, 0x980b, 0x101, 0x983b, 0x101, 0x9b12,
- 0x101, 0x9f9c, 0x201, 0xd84a, 0xdc4a, 0x201, 0xd84a, 0xdc44,
- 0x201, 0xd84c, 0xdfd5, 0x101, 0x3b9d, 0x101, 0x4018, 0x101,
- 0x4039, 0x201, 0xd854, 0xde49, 0x201, 0xd857, 0xdcd0, 0x201,
- 0xd85f, 0xded3, 0x101, 0x9f43, 0x101, 0x9f8e, 0x210, 0x66,
- 0x66, 0x210, 0x66, 0x69, 0x210, 0x66, 0x6c, 0x310,
- 0x66, 0x66, 0x69, 0x310, 0x66, 0x66, 0x6c, 0x210,
- 0x17f, 0x74, 0x210, 0x73, 0x74, 0x210, 0x574, 0x576,
- 0x210, 0x574, 0x565, 0x210, 0x574, 0x56b, 0x210, 0x57e,
- 0x576, 0x210, 0x574, 0x56d, 0x201, 0x5d9, 0x5b4, 0x201,
- 0x5f2, 0x5b7, 0x102, 0x5e2, 0x102, 0x5d0, 0x102, 0x5d3,
- 0x102, 0x5d4, 0x102, 0x5db, 0x102, 0x5dc, 0x102, 0x5dd,
- 0x102, 0x5e8, 0x102, 0x5ea, 0x102, 0x2b, 0x201, 0x5e9,
- 0x5c1, 0x201, 0x5e9, 0x5c2, 0x201, 0xfb49, 0x5c1, 0x201,
- 0xfb49, 0x5c2, 0x201, 0x5d0, 0x5b7, 0x201, 0x5d0, 0x5b8,
- 0x201, 0x5d0, 0x5bc, 0x201, 0x5d1, 0x5bc, 0x201, 0x5d2,
- 0x5bc, 0x201, 0x5d3, 0x5bc, 0x201, 0x5d4, 0x5bc, 0x201,
- 0x5d5, 0x5bc, 0x201, 0x5d6, 0x5bc, 0x201, 0x5d8, 0x5bc,
- 0x201, 0x5d9, 0x5bc, 0x201, 0x5da, 0x5bc, 0x201, 0x5db,
- 0x5bc, 0x201, 0x5dc, 0x5bc, 0x201, 0x5de, 0x5bc, 0x201,
- 0x5e0, 0x5bc, 0x201, 0x5e1, 0x5bc, 0x201, 0x5e3, 0x5bc,
- 0x201, 0x5e4, 0x5bc, 0x201, 0x5e6, 0x5bc, 0x201, 0x5e7,
- 0x5bc, 0x201, 0x5e8, 0x5bc, 0x201, 0x5e9, 0x5bc, 0x201,
- 0x5ea, 0x5bc, 0x201, 0x5d5, 0x5b9, 0x201, 0x5d1, 0x5bf,
- 0x201, 0x5db, 0x5bf, 0x201, 0x5e4, 0x5bf, 0x210, 0x5d0,
- 0x5dc, 0x107, 0x671, 0x106, 0x671, 0x107, 0x67b, 0x106,
- 0x67b, 0x104, 0x67b, 0x105, 0x67b, 0x107, 0x67e, 0x106,
- 0x67e, 0x104, 0x67e, 0x105, 0x67e, 0x107, 0x680, 0x106,
- 0x680, 0x104, 0x680, 0x105, 0x680, 0x107, 0x67a, 0x106,
- 0x67a, 0x104, 0x67a, 0x105, 0x67a, 0x107, 0x67f, 0x106,
- 0x67f, 0x104, 0x67f, 0x105, 0x67f, 0x107, 0x679, 0x106,
- 0x679, 0x104, 0x679, 0x105, 0x679, 0x107, 0x6a4, 0x106,
- 0x6a4, 0x104, 0x6a4, 0x105, 0x6a4, 0x107, 0x6a6, 0x106,
- 0x6a6, 0x104, 0x6a6, 0x105, 0x6a6, 0x107, 0x684, 0x106,
- 0x684, 0x104, 0x684, 0x105, 0x684, 0x107, 0x683, 0x106,
- 0x683, 0x104, 0x683, 0x105, 0x683, 0x107, 0x686, 0x106,
- 0x686, 0x104, 0x686, 0x105, 0x686, 0x107, 0x687, 0x106,
- 0x687, 0x104, 0x687, 0x105, 0x687, 0x107, 0x68d, 0x106,
- 0x68d, 0x107, 0x68c, 0x106, 0x68c, 0x107, 0x68e, 0x106,
- 0x68e, 0x107, 0x688, 0x106, 0x688, 0x107, 0x698, 0x106,
- 0x698, 0x107, 0x691, 0x106, 0x691, 0x107, 0x6a9, 0x106,
- 0x6a9, 0x104, 0x6a9, 0x105, 0x6a9, 0x107, 0x6af, 0x106,
- 0x6af, 0x104, 0x6af, 0x105, 0x6af, 0x107, 0x6b3, 0x106,
- 0x6b3, 0x104, 0x6b3, 0x105, 0x6b3, 0x107, 0x6b1, 0x106,
- 0x6b1, 0x104, 0x6b1, 0x105, 0x6b1, 0x107, 0x6ba, 0x106,
- 0x6ba, 0x107, 0x6bb, 0x106, 0x6bb, 0x104, 0x6bb, 0x105,
- 0x6bb, 0x107, 0x6c0, 0x106, 0x6c0, 0x107, 0x6c1, 0x106,
- 0x6c1, 0x104, 0x6c1, 0x105, 0x6c1, 0x107, 0x6be, 0x106,
- 0x6be, 0x104, 0x6be, 0x105, 0x6be, 0x107, 0x6d2, 0x106,
- 0x6d2, 0x107, 0x6d3, 0x106, 0x6d3, 0x107, 0x6ad, 0x106,
- 0x6ad, 0x104, 0x6ad, 0x105, 0x6ad, 0x107, 0x6c7, 0x106,
- 0x6c7, 0x107, 0x6c6, 0x106, 0x6c6, 0x107, 0x6c8, 0x106,
- 0x6c8, 0x107, 0x677, 0x107, 0x6cb, 0x106, 0x6cb, 0x107,
- 0x6c5, 0x106, 0x6c5, 0x107, 0x6c9, 0x106, 0x6c9, 0x107,
- 0x6d0, 0x106, 0x6d0, 0x104, 0x6d0, 0x105, 0x6d0, 0x104,
- 0x649, 0x105, 0x649, 0x207, 0x626, 0x627, 0x206, 0x626,
- 0x627, 0x207, 0x626, 0x6d5, 0x206, 0x626, 0x6d5, 0x207,
- 0x626, 0x648, 0x206, 0x626, 0x648, 0x207, 0x626, 0x6c7,
- 0x206, 0x626, 0x6c7, 0x207, 0x626, 0x6c6, 0x206, 0x626,
- 0x6c6, 0x207, 0x626, 0x6c8, 0x206, 0x626, 0x6c8, 0x207,
- 0x626, 0x6d0, 0x206, 0x626, 0x6d0, 0x204, 0x626, 0x6d0,
- 0x207, 0x626, 0x649, 0x206, 0x626, 0x649, 0x204, 0x626,
- 0x649, 0x107, 0x6cc, 0x106, 0x6cc, 0x104, 0x6cc, 0x105,
- 0x6cc, 0x207, 0x626, 0x62c, 0x207, 0x626, 0x62d, 0x207,
- 0x626, 0x645, 0x207, 0x626, 0x649, 0x207, 0x626, 0x64a,
- 0x207, 0x628, 0x62c, 0x207, 0x628, 0x62d, 0x207, 0x628,
- 0x62e, 0x207, 0x628, 0x645, 0x207, 0x628, 0x649, 0x207,
- 0x628, 0x64a, 0x207, 0x62a, 0x62c, 0x207, 0x62a, 0x62d,
- 0x207, 0x62a, 0x62e, 0x207, 0x62a, 0x645, 0x207, 0x62a,
- 0x649, 0x207, 0x62a, 0x64a, 0x207, 0x62b, 0x62c, 0x207,
- 0x62b, 0x645, 0x207, 0x62b, 0x649, 0x207, 0x62b, 0x64a,
- 0x207, 0x62c, 0x62d, 0x207, 0x62c, 0x645, 0x207, 0x62d,
- 0x62c, 0x207, 0x62d, 0x645, 0x207, 0x62e, 0x62c, 0x207,
- 0x62e, 0x62d, 0x207, 0x62e, 0x645, 0x207, 0x633, 0x62c,
- 0x207, 0x633, 0x62d, 0x207, 0x633, 0x62e, 0x207, 0x633,
- 0x645, 0x207, 0x635, 0x62d, 0x207, 0x635, 0x645, 0x207,
- 0x636, 0x62c, 0x207, 0x636, 0x62d, 0x207, 0x636, 0x62e,
- 0x207, 0x636, 0x645, 0x207, 0x637, 0x62d, 0x207, 0x637,
- 0x645, 0x207, 0x638, 0x645, 0x207, 0x639, 0x62c, 0x207,
- 0x639, 0x645, 0x207, 0x63a, 0x62c, 0x207, 0x63a, 0x645,
- 0x207, 0x641, 0x62c, 0x207, 0x641, 0x62d, 0x207, 0x641,
- 0x62e, 0x207, 0x641, 0x645, 0x207, 0x641, 0x649, 0x207,
- 0x641, 0x64a, 0x207, 0x642, 0x62d, 0x207, 0x642, 0x645,
- 0x207, 0x642, 0x649, 0x207, 0x642, 0x64a, 0x207, 0x643,
- 0x627, 0x207, 0x643, 0x62c, 0x207, 0x643, 0x62d, 0x207,
- 0x643, 0x62e, 0x207, 0x643, 0x644, 0x207, 0x643, 0x645,
- 0x207, 0x643, 0x649, 0x207, 0x643, 0x64a, 0x207, 0x644,
- 0x62c, 0x207, 0x644, 0x62d, 0x207, 0x644, 0x62e, 0x207,
- 0x644, 0x645, 0x207, 0x644, 0x649, 0x207, 0x644, 0x64a,
- 0x207, 0x645, 0x62c, 0x207, 0x645, 0x62d, 0x207, 0x645,
- 0x62e, 0x207, 0x645, 0x645, 0x207, 0x645, 0x649, 0x207,
- 0x645, 0x64a, 0x207, 0x646, 0x62c, 0x207, 0x646, 0x62d,
- 0x207, 0x646, 0x62e, 0x207, 0x646, 0x645, 0x207, 0x646,
- 0x649, 0x207, 0x646, 0x64a, 0x207, 0x647, 0x62c, 0x207,
- 0x647, 0x645, 0x207, 0x647, 0x649, 0x207, 0x647, 0x64a,
- 0x207, 0x64a, 0x62c, 0x207, 0x64a, 0x62d, 0x207, 0x64a,
- 0x62e, 0x207, 0x64a, 0x645, 0x207, 0x64a, 0x649, 0x207,
- 0x64a, 0x64a, 0x207, 0x630, 0x670, 0x207, 0x631, 0x670,
- 0x207, 0x649, 0x670, 0x307, 0x20, 0x64c, 0x651, 0x307,
- 0x20, 0x64d, 0x651, 0x307, 0x20, 0x64e, 0x651, 0x307,
- 0x20, 0x64f, 0x651, 0x307, 0x20, 0x650, 0x651, 0x307,
- 0x20, 0x651, 0x670, 0x206, 0x626, 0x631, 0x206, 0x626,
- 0x632, 0x206, 0x626, 0x645, 0x206, 0x626, 0x646, 0x206,
- 0x626, 0x649, 0x206, 0x626, 0x64a, 0x206, 0x628, 0x631,
- 0x206, 0x628, 0x632, 0x206, 0x628, 0x645, 0x206, 0x628,
- 0x646, 0x206, 0x628, 0x649, 0x206, 0x628, 0x64a, 0x206,
- 0x62a, 0x631, 0x206, 0x62a, 0x632, 0x206, 0x62a, 0x645,
- 0x206, 0x62a, 0x646, 0x206, 0x62a, 0x649, 0x206, 0x62a,
- 0x64a, 0x206, 0x62b, 0x631, 0x206, 0x62b, 0x632, 0x206,
- 0x62b, 0x645, 0x206, 0x62b, 0x646, 0x206, 0x62b, 0x649,
- 0x206, 0x62b, 0x64a, 0x206, 0x641, 0x649, 0x206, 0x641,
- 0x64a, 0x206, 0x642, 0x649, 0x206, 0x642, 0x64a, 0x206,
- 0x643, 0x627, 0x206, 0x643, 0x644, 0x206, 0x643, 0x645,
- 0x206, 0x643, 0x649, 0x206, 0x643, 0x64a, 0x206, 0x644,
- 0x645, 0x206, 0x644, 0x649, 0x206, 0x644, 0x64a, 0x206,
- 0x645, 0x627, 0x206, 0x645, 0x645, 0x206, 0x646, 0x631,
- 0x206, 0x646, 0x632, 0x206, 0x646, 0x645, 0x206, 0x646,
- 0x646, 0x206, 0x646, 0x649, 0x206, 0x646, 0x64a, 0x206,
- 0x649, 0x670, 0x206, 0x64a, 0x631, 0x206, 0x64a, 0x632,
- 0x206, 0x64a, 0x645, 0x206, 0x64a, 0x646, 0x206, 0x64a,
- 0x649, 0x206, 0x64a, 0x64a, 0x204, 0x626, 0x62c, 0x204,
- 0x626, 0x62d, 0x204, 0x626, 0x62e, 0x204, 0x626, 0x645,
- 0x204, 0x626, 0x647, 0x204, 0x628, 0x62c, 0x204, 0x628,
- 0x62d, 0x204, 0x628, 0x62e, 0x204, 0x628, 0x645, 0x204,
- 0x628, 0x647, 0x204, 0x62a, 0x62c, 0x204, 0x62a, 0x62d,
- 0x204, 0x62a, 0x62e, 0x204, 0x62a, 0x645, 0x204, 0x62a,
- 0x647, 0x204, 0x62b, 0x645, 0x204, 0x62c, 0x62d, 0x204,
- 0x62c, 0x645, 0x204, 0x62d, 0x62c, 0x204, 0x62d, 0x645,
- 0x204, 0x62e, 0x62c, 0x204, 0x62e, 0x645, 0x204, 0x633,
- 0x62c, 0x204, 0x633, 0x62d, 0x204, 0x633, 0x62e, 0x204,
- 0x633, 0x645, 0x204, 0x635, 0x62d, 0x204, 0x635, 0x62e,
- 0x204, 0x635, 0x645, 0x204, 0x636, 0x62c, 0x204, 0x636,
- 0x62d, 0x204, 0x636, 0x62e, 0x204, 0x636, 0x645, 0x204,
- 0x637, 0x62d, 0x204, 0x638, 0x645, 0x204, 0x639, 0x62c,
- 0x204, 0x639, 0x645, 0x204, 0x63a, 0x62c, 0x204, 0x63a,
- 0x645, 0x204, 0x641, 0x62c, 0x204, 0x641, 0x62d, 0x204,
- 0x641, 0x62e, 0x204, 0x641, 0x645, 0x204, 0x642, 0x62d,
- 0x204, 0x642, 0x645, 0x204, 0x643, 0x62c, 0x204, 0x643,
- 0x62d, 0x204, 0x643, 0x62e, 0x204, 0x643, 0x644, 0x204,
- 0x643, 0x645, 0x204, 0x644, 0x62c, 0x204, 0x644, 0x62d,
- 0x204, 0x644, 0x62e, 0x204, 0x644, 0x645, 0x204, 0x644,
- 0x647, 0x204, 0x645, 0x62c, 0x204, 0x645, 0x62d, 0x204,
- 0x645, 0x62e, 0x204, 0x645, 0x645, 0x204, 0x646, 0x62c,
- 0x204, 0x646, 0x62d, 0x204, 0x646, 0x62e, 0x204, 0x646,
- 0x645, 0x204, 0x646, 0x647, 0x204, 0x647, 0x62c, 0x204,
- 0x647, 0x645, 0x204, 0x647, 0x670, 0x204, 0x64a, 0x62c,
- 0x204, 0x64a, 0x62d, 0x204, 0x64a, 0x62e, 0x204, 0x64a,
- 0x645, 0x204, 0x64a, 0x647, 0x205, 0x626, 0x645, 0x205,
- 0x626, 0x647, 0x205, 0x628, 0x645, 0x205, 0x628, 0x647,
- 0x205, 0x62a, 0x645, 0x205, 0x62a, 0x647, 0x205, 0x62b,
- 0x645, 0x205, 0x62b, 0x647, 0x205, 0x633, 0x645, 0x205,
- 0x633, 0x647, 0x205, 0x634, 0x645, 0x205, 0x634, 0x647,
- 0x205, 0x643, 0x644, 0x205, 0x643, 0x645, 0x205, 0x644,
- 0x645, 0x205, 0x646, 0x645, 0x205, 0x646, 0x647, 0x205,
- 0x64a, 0x645, 0x205, 0x64a, 0x647, 0x305, 0x640, 0x64e,
- 0x651, 0x305, 0x640, 0x64f, 0x651, 0x305, 0x640, 0x650,
- 0x651, 0x207, 0x637, 0x649, 0x207, 0x637, 0x64a, 0x207,
- 0x639, 0x649, 0x207, 0x639, 0x64a, 0x207, 0x63a, 0x649,
- 0x207, 0x63a, 0x64a, 0x207, 0x633, 0x649, 0x207, 0x633,
- 0x64a, 0x207, 0x634, 0x649, 0x207, 0x634, 0x64a, 0x207,
- 0x62d, 0x649, 0x207, 0x62d, 0x64a, 0x207, 0x62c, 0x649,
- 0x207, 0x62c, 0x64a, 0x207, 0x62e, 0x649, 0x207, 0x62e,
- 0x64a, 0x207, 0x635, 0x649, 0x207, 0x635, 0x64a, 0x207,
- 0x636, 0x649, 0x207, 0x636, 0x64a, 0x207, 0x634, 0x62c,
- 0x207, 0x634, 0x62d, 0x207, 0x634, 0x62e, 0x207, 0x634,
- 0x645, 0x207, 0x634, 0x631, 0x207, 0x633, 0x631, 0x207,
- 0x635, 0x631, 0x207, 0x636, 0x631, 0x206, 0x637, 0x649,
- 0x206, 0x637, 0x64a, 0x206, 0x639, 0x649, 0x206, 0x639,
- 0x64a, 0x206, 0x63a, 0x649, 0x206, 0x63a, 0x64a, 0x206,
- 0x633, 0x649, 0x206, 0x633, 0x64a, 0x206, 0x634, 0x649,
- 0x206, 0x634, 0x64a, 0x206, 0x62d, 0x649, 0x206, 0x62d,
- 0x64a, 0x206, 0x62c, 0x649, 0x206, 0x62c, 0x64a, 0x206,
- 0x62e, 0x649, 0x206, 0x62e, 0x64a, 0x206, 0x635, 0x649,
- 0x206, 0x635, 0x64a, 0x206, 0x636, 0x649, 0x206, 0x636,
- 0x64a, 0x206, 0x634, 0x62c, 0x206, 0x634, 0x62d, 0x206,
- 0x634, 0x62e, 0x206, 0x634, 0x645, 0x206, 0x634, 0x631,
- 0x206, 0x633, 0x631, 0x206, 0x635, 0x631, 0x206, 0x636,
- 0x631, 0x204, 0x634, 0x62c, 0x204, 0x634, 0x62d, 0x204,
- 0x634, 0x62e, 0x204, 0x634, 0x645, 0x204, 0x633, 0x647,
- 0x204, 0x634, 0x647, 0x204, 0x637, 0x645, 0x205, 0x633,
- 0x62c, 0x205, 0x633, 0x62d, 0x205, 0x633, 0x62e, 0x205,
- 0x634, 0x62c, 0x205, 0x634, 0x62d, 0x205, 0x634, 0x62e,
- 0x205, 0x637, 0x645, 0x205, 0x638, 0x645, 0x206, 0x627,
- 0x64b, 0x207, 0x627, 0x64b, 0x304, 0x62a, 0x62c, 0x645,
- 0x306, 0x62a, 0x62d, 0x62c, 0x304, 0x62a, 0x62d, 0x62c,
- 0x304, 0x62a, 0x62d, 0x645, 0x304, 0x62a, 0x62e, 0x645,
- 0x304, 0x62a, 0x645, 0x62c, 0x304, 0x62a, 0x645, 0x62d,
- 0x304, 0x62a, 0x645, 0x62e, 0x306, 0x62c, 0x645, 0x62d,
- 0x304, 0x62c, 0x645, 0x62d, 0x306, 0x62d, 0x645, 0x64a,
- 0x306, 0x62d, 0x645, 0x649, 0x304, 0x633, 0x62d, 0x62c,
- 0x304, 0x633, 0x62c, 0x62d, 0x306, 0x633, 0x62c, 0x649,
- 0x306, 0x633, 0x645, 0x62d, 0x304, 0x633, 0x645, 0x62d,
- 0x304, 0x633, 0x645, 0x62c, 0x306, 0x633, 0x645, 0x645,
- 0x304, 0x633, 0x645, 0x645, 0x306, 0x635, 0x62d, 0x62d,
- 0x304, 0x635, 0x62d, 0x62d, 0x306, 0x635, 0x645, 0x645,
- 0x306, 0x634, 0x62d, 0x645, 0x304, 0x634, 0x62d, 0x645,
- 0x306, 0x634, 0x62c, 0x64a, 0x306, 0x634, 0x645, 0x62e,
- 0x304, 0x634, 0x645, 0x62e, 0x306, 0x634, 0x645, 0x645,
- 0x304, 0x634, 0x645, 0x645, 0x306, 0x636, 0x62d, 0x649,
- 0x306, 0x636, 0x62e, 0x645, 0x304, 0x636, 0x62e, 0x645,
- 0x306, 0x637, 0x645, 0x62d, 0x304, 0x637, 0x645, 0x62d,
- 0x304, 0x637, 0x645, 0x645, 0x306, 0x637, 0x645, 0x64a,
- 0x306, 0x639, 0x62c, 0x645, 0x306, 0x639, 0x645, 0x645,
- 0x304, 0x639, 0x645, 0x645, 0x306, 0x639, 0x645, 0x649,
- 0x306, 0x63a, 0x645, 0x645, 0x306, 0x63a, 0x645, 0x64a,
- 0x306, 0x63a, 0x645, 0x649, 0x306, 0x641, 0x62e, 0x645,
- 0x304, 0x641, 0x62e, 0x645, 0x306, 0x642, 0x645, 0x62d,
- 0x306, 0x642, 0x645, 0x645, 0x306, 0x644, 0x62d, 0x645,
- 0x306, 0x644, 0x62d, 0x64a, 0x306, 0x644, 0x62d, 0x649,
- 0x304, 0x644, 0x62c, 0x62c, 0x306, 0x644, 0x62c, 0x62c,
- 0x306, 0x644, 0x62e, 0x645, 0x304, 0x644, 0x62e, 0x645,
- 0x306, 0x644, 0x645, 0x62d, 0x304, 0x644, 0x645, 0x62d,
- 0x304, 0x645, 0x62d, 0x62c, 0x304, 0x645, 0x62d, 0x645,
- 0x306, 0x645, 0x62d, 0x64a, 0x304, 0x645, 0x62c, 0x62d,
- 0x304, 0x645, 0x62c, 0x645, 0x304, 0x645, 0x62e, 0x62c,
- 0x304, 0x645, 0x62e, 0x645, 0x304, 0x645, 0x62c, 0x62e,
- 0x304, 0x647, 0x645, 0x62c, 0x304, 0x647, 0x645, 0x645,
- 0x304, 0x646, 0x62d, 0x645, 0x306, 0x646, 0x62d, 0x649,
- 0x306, 0x646, 0x62c, 0x645, 0x304, 0x646, 0x62c, 0x645,
- 0x306, 0x646, 0x62c, 0x649, 0x306, 0x646, 0x645, 0x64a,
- 0x306, 0x646, 0x645, 0x649, 0x306, 0x64a, 0x645, 0x645,
- 0x304, 0x64a, 0x645, 0x645, 0x306, 0x628, 0x62e, 0x64a,
- 0x306, 0x62a, 0x62c, 0x64a, 0x306, 0x62a, 0x62c, 0x649,
- 0x306, 0x62a, 0x62e, 0x64a, 0x306, 0x62a, 0x62e, 0x649,
- 0x306, 0x62a, 0x645, 0x64a, 0x306, 0x62a, 0x645, 0x649,
- 0x306, 0x62c, 0x645, 0x64a, 0x306, 0x62c, 0x62d, 0x649,
- 0x306, 0x62c, 0x645, 0x649, 0x306, 0x633, 0x62e, 0x649,
- 0x306, 0x635, 0x62d, 0x64a, 0x306, 0x634, 0x62d, 0x64a,
- 0x306, 0x636, 0x62d, 0x64a, 0x306, 0x644, 0x62c, 0x64a,
- 0x306, 0x644, 0x645, 0x64a, 0x306, 0x64a, 0x62d, 0x64a,
- 0x306, 0x64a, 0x62c, 0x64a, 0x306, 0x64a, 0x645, 0x64a,
- 0x306, 0x645, 0x645, 0x64a, 0x306, 0x642, 0x645, 0x64a,
- 0x306, 0x646, 0x62d, 0x64a, 0x304, 0x642, 0x645, 0x62d,
- 0x304, 0x644, 0x62d, 0x645, 0x306, 0x639, 0x645, 0x64a,
- 0x306, 0x643, 0x645, 0x64a, 0x304, 0x646, 0x62c, 0x62d,
- 0x306, 0x645, 0x62e, 0x64a, 0x304, 0x644, 0x62c, 0x645,
- 0x306, 0x643, 0x645, 0x645, 0x306, 0x644, 0x62c, 0x645,
- 0x306, 0x646, 0x62c, 0x62d, 0x306, 0x62c, 0x62d, 0x64a,
- 0x306, 0x62d, 0x62c, 0x64a, 0x306, 0x645, 0x62c, 0x64a,
- 0x306, 0x641, 0x645, 0x64a, 0x306, 0x628, 0x62d, 0x64a,
- 0x304, 0x643, 0x645, 0x645, 0x304, 0x639, 0x62c, 0x645,
- 0x304, 0x635, 0x645, 0x645, 0x306, 0x633, 0x62e, 0x64a,
- 0x306, 0x646, 0x62c, 0x64a, 0x307, 0x635, 0x644, 0x6d2,
- 0x307, 0x642, 0x644, 0x6d2, 0x407, 0x627, 0x644, 0x644,
- 0x647, 0x407, 0x627, 0x643, 0x628, 0x631, 0x407, 0x645,
- 0x62d, 0x645, 0x62f, 0x407, 0x635, 0x644, 0x639, 0x645,
- 0x407, 0x631, 0x633, 0x648, 0x644, 0x407, 0x639, 0x644,
- 0x64a, 0x647, 0x407, 0x648, 0x633, 0x644, 0x645, 0x307,
- 0x635, 0x644, 0x649, 0x1207, 0x635, 0x644, 0x649, 0x20,
- 0x627, 0x644, 0x644, 0x647, 0x20, 0x639, 0x644, 0x64a,
- 0x647, 0x20, 0x648, 0x633, 0x644, 0x645, 0x807, 0x62c,
- 0x644, 0x20, 0x62c, 0x644, 0x627, 0x644, 0x647, 0x407,
- 0x631, 0x6cc, 0x627, 0x644, 0x10b, 0x2c, 0x10b, 0x3001,
- 0x10b, 0x3002, 0x10b, 0x3a, 0x10b, 0x3b, 0x10b, 0x21,
- 0x10b, 0x3f, 0x10b, 0x3016, 0x10b, 0x3017, 0x10b, 0x2026,
- 0x10b, 0x2025, 0x10b, 0x2014, 0x10b, 0x2013, 0x10b, 0x5f,
- 0x10b, 0x5f, 0x10b, 0x28, 0x10b, 0x29, 0x10b, 0x7b,
- 0x10b, 0x7d, 0x10b, 0x3014, 0x10b, 0x3015, 0x10b, 0x3010,
- 0x10b, 0x3011, 0x10b, 0x300a, 0x10b, 0x300b, 0x10b, 0x3008,
- 0x10b, 0x3009, 0x10b, 0x300c, 0x10b, 0x300d, 0x10b, 0x300e,
- 0x10b, 0x300f, 0x10b, 0x5b, 0x10b, 0x5d, 0x110, 0x203e,
- 0x110, 0x203e, 0x110, 0x203e, 0x110, 0x203e, 0x110, 0x5f,
- 0x110, 0x5f, 0x110, 0x5f, 0x10e, 0x2c, 0x10e, 0x3001,
- 0x10e, 0x2e, 0x10e, 0x3b, 0x10e, 0x3a, 0x10e, 0x3f,
- 0x10e, 0x21, 0x10e, 0x2014, 0x10e, 0x28, 0x10e, 0x29,
- 0x10e, 0x7b, 0x10e, 0x7d, 0x10e, 0x3014, 0x10e, 0x3015,
- 0x10e, 0x23, 0x10e, 0x26, 0x10e, 0x2a, 0x10e, 0x2b,
- 0x10e, 0x2d, 0x10e, 0x3c, 0x10e, 0x3e, 0x10e, 0x3d,
- 0x10e, 0x5c, 0x10e, 0x24, 0x10e, 0x25, 0x10e, 0x40,
- 0x207, 0x20, 0x64b, 0x205, 0x640, 0x64b, 0x207, 0x20,
- 0x64c, 0x207, 0x20, 0x64d, 0x207, 0x20, 0x64e, 0x205,
- 0x640, 0x64e, 0x207, 0x20, 0x64f, 0x205, 0x640, 0x64f,
- 0x207, 0x20, 0x650, 0x205, 0x640, 0x650, 0x207, 0x20,
- 0x651, 0x205, 0x640, 0x651, 0x207, 0x20, 0x652, 0x205,
- 0x640, 0x652, 0x107, 0x621, 0x107, 0x622, 0x106, 0x622,
- 0x107, 0x623, 0x106, 0x623, 0x107, 0x624, 0x106, 0x624,
- 0x107, 0x625, 0x106, 0x625, 0x107, 0x626, 0x106, 0x626,
- 0x104, 0x626, 0x105, 0x626, 0x107, 0x627, 0x106, 0x627,
- 0x107, 0x628, 0x106, 0x628, 0x104, 0x628, 0x105, 0x628,
- 0x107, 0x629, 0x106, 0x629, 0x107, 0x62a, 0x106, 0x62a,
- 0x104, 0x62a, 0x105, 0x62a, 0x107, 0x62b, 0x106, 0x62b,
- 0x104, 0x62b, 0x105, 0x62b, 0x107, 0x62c, 0x106, 0x62c,
- 0x104, 0x62c, 0x105, 0x62c, 0x107, 0x62d, 0x106, 0x62d,
- 0x104, 0x62d, 0x105, 0x62d, 0x107, 0x62e, 0x106, 0x62e,
- 0x104, 0x62e, 0x105, 0x62e, 0x107, 0x62f, 0x106, 0x62f,
- 0x107, 0x630, 0x106, 0x630, 0x107, 0x631, 0x106, 0x631,
- 0x107, 0x632, 0x106, 0x632, 0x107, 0x633, 0x106, 0x633,
- 0x104, 0x633, 0x105, 0x633, 0x107, 0x634, 0x106, 0x634,
- 0x104, 0x634, 0x105, 0x634, 0x107, 0x635, 0x106, 0x635,
- 0x104, 0x635, 0x105, 0x635, 0x107, 0x636, 0x106, 0x636,
- 0x104, 0x636, 0x105, 0x636, 0x107, 0x637, 0x106, 0x637,
- 0x104, 0x637, 0x105, 0x637, 0x107, 0x638, 0x106, 0x638,
- 0x104, 0x638, 0x105, 0x638, 0x107, 0x639, 0x106, 0x639,
- 0x104, 0x639, 0x105, 0x639, 0x107, 0x63a, 0x106, 0x63a,
- 0x104, 0x63a, 0x105, 0x63a, 0x107, 0x641, 0x106, 0x641,
- 0x104, 0x641, 0x105, 0x641, 0x107, 0x642, 0x106, 0x642,
- 0x104, 0x642, 0x105, 0x642, 0x107, 0x643, 0x106, 0x643,
- 0x104, 0x643, 0x105, 0x643, 0x107, 0x644, 0x106, 0x644,
- 0x104, 0x644, 0x105, 0x644, 0x107, 0x645, 0x106, 0x645,
- 0x104, 0x645, 0x105, 0x645, 0x107, 0x646, 0x106, 0x646,
- 0x104, 0x646, 0x105, 0x646, 0x107, 0x647, 0x106, 0x647,
- 0x104, 0x647, 0x105, 0x647, 0x107, 0x648, 0x106, 0x648,
- 0x107, 0x649, 0x106, 0x649, 0x107, 0x64a, 0x106, 0x64a,
- 0x104, 0x64a, 0x105, 0x64a, 0x207, 0x644, 0x622, 0x206,
- 0x644, 0x622, 0x207, 0x644, 0x623, 0x206, 0x644, 0x623,
- 0x207, 0x644, 0x625, 0x206, 0x644, 0x625, 0x207, 0x644,
- 0x627, 0x206, 0x644, 0x627, 0x10c, 0x21, 0x10c, 0x22,
- 0x10c, 0x23, 0x10c, 0x24, 0x10c, 0x25, 0x10c, 0x26,
- 0x10c, 0x27, 0x10c, 0x28, 0x10c, 0x29, 0x10c, 0x2a,
- 0x10c, 0x2b, 0x10c, 0x2c, 0x10c, 0x2d, 0x10c, 0x2e,
- 0x10c, 0x2f, 0x10c, 0x30, 0x10c, 0x31, 0x10c, 0x32,
- 0x10c, 0x33, 0x10c, 0x34, 0x10c, 0x35, 0x10c, 0x36,
- 0x10c, 0x37, 0x10c, 0x38, 0x10c, 0x39, 0x10c, 0x3a,
- 0x10c, 0x3b, 0x10c, 0x3c, 0x10c, 0x3d, 0x10c, 0x3e,
- 0x10c, 0x3f, 0x10c, 0x40, 0x10c, 0x41, 0x10c, 0x42,
- 0x10c, 0x43, 0x10c, 0x44, 0x10c, 0x45, 0x10c, 0x46,
- 0x10c, 0x47, 0x10c, 0x48, 0x10c, 0x49, 0x10c, 0x4a,
- 0x10c, 0x4b, 0x10c, 0x4c, 0x10c, 0x4d, 0x10c, 0x4e,
- 0x10c, 0x4f, 0x10c, 0x50, 0x10c, 0x51, 0x10c, 0x52,
- 0x10c, 0x53, 0x10c, 0x54, 0x10c, 0x55, 0x10c, 0x56,
- 0x10c, 0x57, 0x10c, 0x58, 0x10c, 0x59, 0x10c, 0x5a,
- 0x10c, 0x5b, 0x10c, 0x5c, 0x10c, 0x5d, 0x10c, 0x5e,
- 0x10c, 0x5f, 0x10c, 0x60, 0x10c, 0x61, 0x10c, 0x62,
- 0x10c, 0x63, 0x10c, 0x64, 0x10c, 0x65, 0x10c, 0x66,
- 0x10c, 0x67, 0x10c, 0x68, 0x10c, 0x69, 0x10c, 0x6a,
- 0x10c, 0x6b, 0x10c, 0x6c, 0x10c, 0x6d, 0x10c, 0x6e,
- 0x10c, 0x6f, 0x10c, 0x70, 0x10c, 0x71, 0x10c, 0x72,
- 0x10c, 0x73, 0x10c, 0x74, 0x10c, 0x75, 0x10c, 0x76,
- 0x10c, 0x77, 0x10c, 0x78, 0x10c, 0x79, 0x10c, 0x7a,
- 0x10c, 0x7b, 0x10c, 0x7c, 0x10c, 0x7d, 0x10c, 0x7e,
- 0x10c, 0x2985, 0x10c, 0x2986, 0x10d, 0x3002, 0x10d, 0x300c,
- 0x10d, 0x300d, 0x10d, 0x3001, 0x10d, 0x30fb, 0x10d, 0x30f2,
- 0x10d, 0x30a1, 0x10d, 0x30a3, 0x10d, 0x30a5, 0x10d, 0x30a7,
- 0x10d, 0x30a9, 0x10d, 0x30e3, 0x10d, 0x30e5, 0x10d, 0x30e7,
- 0x10d, 0x30c3, 0x10d, 0x30fc, 0x10d, 0x30a2, 0x10d, 0x30a4,
- 0x10d, 0x30a6, 0x10d, 0x30a8, 0x10d, 0x30aa, 0x10d, 0x30ab,
- 0x10d, 0x30ad, 0x10d, 0x30af, 0x10d, 0x30b1, 0x10d, 0x30b3,
- 0x10d, 0x30b5, 0x10d, 0x30b7, 0x10d, 0x30b9, 0x10d, 0x30bb,
- 0x10d, 0x30bd, 0x10d, 0x30bf, 0x10d, 0x30c1, 0x10d, 0x30c4,
- 0x10d, 0x30c6, 0x10d, 0x30c8, 0x10d, 0x30ca, 0x10d, 0x30cb,
- 0x10d, 0x30cc, 0x10d, 0x30cd, 0x10d, 0x30ce, 0x10d, 0x30cf,
- 0x10d, 0x30d2, 0x10d, 0x30d5, 0x10d, 0x30d8, 0x10d, 0x30db,
- 0x10d, 0x30de, 0x10d, 0x30df, 0x10d, 0x30e0, 0x10d, 0x30e1,
- 0x10d, 0x30e2, 0x10d, 0x30e4, 0x10d, 0x30e6, 0x10d, 0x30e8,
- 0x10d, 0x30e9, 0x10d, 0x30ea, 0x10d, 0x30eb, 0x10d, 0x30ec,
- 0x10d, 0x30ed, 0x10d, 0x30ef, 0x10d, 0x30f3, 0x10d, 0x3099,
- 0x10d, 0x309a, 0x10d, 0x3164, 0x10d, 0x3131, 0x10d, 0x3132,
- 0x10d, 0x3133, 0x10d, 0x3134, 0x10d, 0x3135, 0x10d, 0x3136,
- 0x10d, 0x3137, 0x10d, 0x3138, 0x10d, 0x3139, 0x10d, 0x313a,
- 0x10d, 0x313b, 0x10d, 0x313c, 0x10d, 0x313d, 0x10d, 0x313e,
- 0x10d, 0x313f, 0x10d, 0x3140, 0x10d, 0x3141, 0x10d, 0x3142,
- 0x10d, 0x3143, 0x10d, 0x3144, 0x10d, 0x3145, 0x10d, 0x3146,
- 0x10d, 0x3147, 0x10d, 0x3148, 0x10d, 0x3149, 0x10d, 0x314a,
- 0x10d, 0x314b, 0x10d, 0x314c, 0x10d, 0x314d, 0x10d, 0x314e,
- 0x10d, 0x314f, 0x10d, 0x3150, 0x10d, 0x3151, 0x10d, 0x3152,
- 0x10d, 0x3153, 0x10d, 0x3154, 0x10d, 0x3155, 0x10d, 0x3156,
- 0x10d, 0x3157, 0x10d, 0x3158, 0x10d, 0x3159, 0x10d, 0x315a,
- 0x10d, 0x315b, 0x10d, 0x315c, 0x10d, 0x315d, 0x10d, 0x315e,
- 0x10d, 0x315f, 0x10d, 0x3160, 0x10d, 0x3161, 0x10d, 0x3162,
- 0x10d, 0x3163, 0x10c, 0xa2, 0x10c, 0xa3, 0x10c, 0xac,
- 0x10c, 0xaf, 0x10c, 0xa6, 0x10c, 0xa5, 0x10c, 0x20a9,
- 0x10d, 0x2502, 0x10d, 0x2190, 0x10d, 0x2191, 0x10d, 0x2192,
- 0x10d, 0x2193, 0x10d, 0x25a0, 0x10d, 0x25cb, 0x401, 0xd804,
- 0xdc99, 0xd804, 0xdcba, 0x401, 0xd804, 0xdc9b, 0xd804, 0xdcba,
- 0x401, 0xd804, 0xdca5, 0xd804, 0xdcba, 0x401, 0xd804, 0xdd31,
- 0xd804, 0xdd27, 0x401, 0xd804, 0xdd32, 0xd804, 0xdd27, 0x401,
- 0xd804, 0xdf47, 0xd804, 0xdf3e, 0x401, 0xd804, 0xdf47, 0xd804,
- 0xdf57, 0x401, 0xd805, 0xdcb9, 0xd805, 0xdcba, 0x401, 0xd805,
- 0xdcb9, 0xd805, 0xdcb0, 0x401, 0xd805, 0xdcb9, 0xd805, 0xdcbd,
- 0x401, 0xd805, 0xddb8, 0xd805, 0xddaf, 0x401, 0xd805, 0xddb9,
- 0xd805, 0xddaf, 0x401, 0xd834, 0xdd57, 0xd834, 0xdd65, 0x401,
- 0xd834, 0xdd58, 0xd834, 0xdd65, 0x401, 0xd834, 0xdd5f, 0xd834,
- 0xdd6e, 0x401, 0xd834, 0xdd5f, 0xd834, 0xdd6f, 0x401, 0xd834,
- 0xdd5f, 0xd834, 0xdd70, 0x401, 0xd834, 0xdd5f, 0xd834, 0xdd71,
- 0x401, 0xd834, 0xdd5f, 0xd834, 0xdd72, 0x401, 0xd834, 0xddb9,
- 0xd834, 0xdd65, 0x401, 0xd834, 0xddba, 0xd834, 0xdd65, 0x401,
- 0xd834, 0xddbb, 0xd834, 0xdd6e, 0x401, 0xd834, 0xddbc, 0xd834,
- 0xdd6e, 0x401, 0xd834, 0xddbb, 0xd834, 0xdd6f, 0x401, 0xd834,
- 0xddbc, 0xd834, 0xdd6f, 0x102, 0x41, 0x102, 0x42, 0x102,
- 0x43, 0x102, 0x44, 0x102, 0x45, 0x102, 0x46, 0x102,
- 0x47, 0x102, 0x48, 0x102, 0x49, 0x102, 0x4a, 0x102,
- 0x4b, 0x102, 0x4c, 0x102, 0x4d, 0x102, 0x4e, 0x102,
- 0x4f, 0x102, 0x50, 0x102, 0x51, 0x102, 0x52, 0x102,
- 0x53, 0x102, 0x54, 0x102, 0x55, 0x102, 0x56, 0x102,
- 0x57, 0x102, 0x58, 0x102, 0x59, 0x102, 0x5a, 0x102,
- 0x61, 0x102, 0x62, 0x102, 0x63, 0x102, 0x64, 0x102,
- 0x65, 0x102, 0x66, 0x102, 0x67, 0x102, 0x68, 0x102,
- 0x69, 0x102, 0x6a, 0x102, 0x6b, 0x102, 0x6c, 0x102,
- 0x6d, 0x102, 0x6e, 0x102, 0x6f, 0x102, 0x70, 0x102,
- 0x71, 0x102, 0x72, 0x102, 0x73, 0x102, 0x74, 0x102,
- 0x75, 0x102, 0x76, 0x102, 0x77, 0x102, 0x78, 0x102,
- 0x79, 0x102, 0x7a, 0x102, 0x41, 0x102, 0x42, 0x102,
- 0x43, 0x102, 0x44, 0x102, 0x45, 0x102, 0x46, 0x102,
- 0x47, 0x102, 0x48, 0x102, 0x49, 0x102, 0x4a, 0x102,
- 0x4b, 0x102, 0x4c, 0x102, 0x4d, 0x102, 0x4e, 0x102,
- 0x4f, 0x102, 0x50, 0x102, 0x51, 0x102, 0x52, 0x102,
- 0x53, 0x102, 0x54, 0x102, 0x55, 0x102, 0x56, 0x102,
- 0x57, 0x102, 0x58, 0x102, 0x59, 0x102, 0x5a, 0x102,
- 0x61, 0x102, 0x62, 0x102, 0x63, 0x102, 0x64, 0x102,
- 0x65, 0x102, 0x66, 0x102, 0x67, 0x102, 0x69, 0x102,
- 0x6a, 0x102, 0x6b, 0x102, 0x6c, 0x102, 0x6d, 0x102,
- 0x6e, 0x102, 0x6f, 0x102, 0x70, 0x102, 0x71, 0x102,
- 0x72, 0x102, 0x73, 0x102, 0x74, 0x102, 0x75, 0x102,
- 0x76, 0x102, 0x77, 0x102, 0x78, 0x102, 0x79, 0x102,
- 0x7a, 0x102, 0x41, 0x102, 0x42, 0x102, 0x43, 0x102,
- 0x44, 0x102, 0x45, 0x102, 0x46, 0x102, 0x47, 0x102,
- 0x48, 0x102, 0x49, 0x102, 0x4a, 0x102, 0x4b, 0x102,
- 0x4c, 0x102, 0x4d, 0x102, 0x4e, 0x102, 0x4f, 0x102,
- 0x50, 0x102, 0x51, 0x102, 0x52, 0x102, 0x53, 0x102,
- 0x54, 0x102, 0x55, 0x102, 0x56, 0x102, 0x57, 0x102,
- 0x58, 0x102, 0x59, 0x102, 0x5a, 0x102, 0x61, 0x102,
- 0x62, 0x102, 0x63, 0x102, 0x64, 0x102, 0x65, 0x102,
- 0x66, 0x102, 0x67, 0x102, 0x68, 0x102, 0x69, 0x102,
- 0x6a, 0x102, 0x6b, 0x102, 0x6c, 0x102, 0x6d, 0x102,
- 0x6e, 0x102, 0x6f, 0x102, 0x70, 0x102, 0x71, 0x102,
- 0x72, 0x102, 0x73, 0x102, 0x74, 0x102, 0x75, 0x102,
- 0x76, 0x102, 0x77, 0x102, 0x78, 0x102, 0x79, 0x102,
- 0x7a, 0x102, 0x41, 0x102, 0x43, 0x102, 0x44, 0x102,
- 0x47, 0x102, 0x4a, 0x102, 0x4b, 0x102, 0x4e, 0x102,
- 0x4f, 0x102, 0x50, 0x102, 0x51, 0x102, 0x53, 0x102,
- 0x54, 0x102, 0x55, 0x102, 0x56, 0x102, 0x57, 0x102,
- 0x58, 0x102, 0x59, 0x102, 0x5a, 0x102, 0x61, 0x102,
- 0x62, 0x102, 0x63, 0x102, 0x64, 0x102, 0x66, 0x102,
- 0x68, 0x102, 0x69, 0x102, 0x6a, 0x102, 0x6b, 0x102,
- 0x6c, 0x102, 0x6d, 0x102, 0x6e, 0x102, 0x70, 0x102,
- 0x71, 0x102, 0x72, 0x102, 0x73, 0x102, 0x74, 0x102,
- 0x75, 0x102, 0x76, 0x102, 0x77, 0x102, 0x78, 0x102,
- 0x79, 0x102, 0x7a, 0x102, 0x41, 0x102, 0x42, 0x102,
- 0x43, 0x102, 0x44, 0x102, 0x45, 0x102, 0x46, 0x102,
- 0x47, 0x102, 0x48, 0x102, 0x49, 0x102, 0x4a, 0x102,
- 0x4b, 0x102, 0x4c, 0x102, 0x4d, 0x102, 0x4e, 0x102,
- 0x4f, 0x102, 0x50, 0x102, 0x51, 0x102, 0x52, 0x102,
- 0x53, 0x102, 0x54, 0x102, 0x55, 0x102, 0x56, 0x102,
- 0x57, 0x102, 0x58, 0x102, 0x59, 0x102, 0x5a, 0x102,
- 0x61, 0x102, 0x62, 0x102, 0x63, 0x102, 0x64, 0x102,
- 0x65, 0x102, 0x66, 0x102, 0x67, 0x102, 0x68, 0x102,
- 0x69, 0x102, 0x6a, 0x102, 0x6b, 0x102, 0x6c, 0x102,
- 0x6d, 0x102, 0x6e, 0x102, 0x6f, 0x102, 0x70, 0x102,
- 0x71, 0x102, 0x72, 0x102, 0x73, 0x102, 0x74, 0x102,
- 0x75, 0x102, 0x76, 0x102, 0x77, 0x102, 0x78, 0x102,
- 0x79, 0x102, 0x7a, 0x102, 0x41, 0x102, 0x42, 0x102,
- 0x44, 0x102, 0x45, 0x102, 0x46, 0x102, 0x47, 0x102,
- 0x4a, 0x102, 0x4b, 0x102, 0x4c, 0x102, 0x4d, 0x102,
- 0x4e, 0x102, 0x4f, 0x102, 0x50, 0x102, 0x51, 0x102,
- 0x53, 0x102, 0x54, 0x102, 0x55, 0x102, 0x56, 0x102,
- 0x57, 0x102, 0x58, 0x102, 0x59, 0x102, 0x61, 0x102,
- 0x62, 0x102, 0x63, 0x102, 0x64, 0x102, 0x65, 0x102,
- 0x66, 0x102, 0x67, 0x102, 0x68, 0x102, 0x69, 0x102,
- 0x6a, 0x102, 0x6b, 0x102, 0x6c, 0x102, 0x6d, 0x102,
- 0x6e, 0x102, 0x6f, 0x102, 0x70, 0x102, 0x71, 0x102,
- 0x72, 0x102, 0x73, 0x102, 0x74, 0x102, 0x75, 0x102,
- 0x76, 0x102, 0x77, 0x102, 0x78, 0x102, 0x79, 0x102,
- 0x7a, 0x102, 0x41, 0x102, 0x42, 0x102, 0x44, 0x102,
- 0x45, 0x102, 0x46, 0x102, 0x47, 0x102, 0x49, 0x102,
- 0x4a, 0x102, 0x4b, 0x102, 0x4c, 0x102, 0x4d, 0x102,
- 0x4f, 0x102, 0x53, 0x102, 0x54, 0x102, 0x55, 0x102,
- 0x56, 0x102, 0x57, 0x102, 0x58, 0x102, 0x59, 0x102,
- 0x61, 0x102, 0x62, 0x102, 0x63, 0x102, 0x64, 0x102,
- 0x65, 0x102, 0x66, 0x102, 0x67, 0x102, 0x68, 0x102,
- 0x69, 0x102, 0x6a, 0x102, 0x6b, 0x102, 0x6c, 0x102,
- 0x6d, 0x102, 0x6e, 0x102, 0x6f, 0x102, 0x70, 0x102,
- 0x71, 0x102, 0x72, 0x102, 0x73, 0x102, 0x74, 0x102,
- 0x75, 0x102, 0x76, 0x102, 0x77, 0x102, 0x78, 0x102,
- 0x79, 0x102, 0x7a, 0x102, 0x41, 0x102, 0x42, 0x102,
- 0x43, 0x102, 0x44, 0x102, 0x45, 0x102, 0x46, 0x102,
- 0x47, 0x102, 0x48, 0x102, 0x49, 0x102, 0x4a, 0x102,
- 0x4b, 0x102, 0x4c, 0x102, 0x4d, 0x102, 0x4e, 0x102,
- 0x4f, 0x102, 0x50, 0x102, 0x51, 0x102, 0x52, 0x102,
- 0x53, 0x102, 0x54, 0x102, 0x55, 0x102, 0x56, 0x102,
- 0x57, 0x102, 0x58, 0x102, 0x59, 0x102, 0x5a, 0x102,
- 0x61, 0x102, 0x62, 0x102, 0x63, 0x102, 0x64, 0x102,
- 0x65, 0x102, 0x66, 0x102, 0x67, 0x102, 0x68, 0x102,
- 0x69, 0x102, 0x6a, 0x102, 0x6b, 0x102, 0x6c, 0x102,
- 0x6d, 0x102, 0x6e, 0x102, 0x6f, 0x102, 0x70, 0x102,
- 0x71, 0x102, 0x72, 0x102, 0x73, 0x102, 0x74, 0x102,
- 0x75, 0x102, 0x76, 0x102, 0x77, 0x102, 0x78, 0x102,
- 0x79, 0x102, 0x7a, 0x102, 0x41, 0x102, 0x42, 0x102,
- 0x43, 0x102, 0x44, 0x102, 0x45, 0x102, 0x46, 0x102,
- 0x47, 0x102, 0x48, 0x102, 0x49, 0x102, 0x4a, 0x102,
- 0x4b, 0x102, 0x4c, 0x102, 0x4d, 0x102, 0x4e, 0x102,
- 0x4f, 0x102, 0x50, 0x102, 0x51, 0x102, 0x52, 0x102,
- 0x53, 0x102, 0x54, 0x102, 0x55, 0x102, 0x56, 0x102,
- 0x57, 0x102, 0x58, 0x102, 0x59, 0x102, 0x5a, 0x102,
- 0x61, 0x102, 0x62, 0x102, 0x63, 0x102, 0x64, 0x102,
- 0x65, 0x102, 0x66, 0x102, 0x67, 0x102, 0x68, 0x102,
- 0x69, 0x102, 0x6a, 0x102, 0x6b, 0x102, 0x6c, 0x102,
- 0x6d, 0x102, 0x6e, 0x102, 0x6f, 0x102, 0x70, 0x102,
- 0x71, 0x102, 0x72, 0x102, 0x73, 0x102, 0x74, 0x102,
- 0x75, 0x102, 0x76, 0x102, 0x77, 0x102, 0x78, 0x102,
- 0x79, 0x102, 0x7a, 0x102, 0x41, 0x102, 0x42, 0x102,
- 0x43, 0x102, 0x44, 0x102, 0x45, 0x102, 0x46, 0x102,
- 0x47, 0x102, 0x48, 0x102, 0x49, 0x102, 0x4a, 0x102,
- 0x4b, 0x102, 0x4c, 0x102, 0x4d, 0x102, 0x4e, 0x102,
- 0x4f, 0x102, 0x50, 0x102, 0x51, 0x102, 0x52, 0x102,
- 0x53, 0x102, 0x54, 0x102, 0x55, 0x102, 0x56, 0x102,
- 0x57, 0x102, 0x58, 0x102, 0x59, 0x102, 0x5a, 0x102,
- 0x61, 0x102, 0x62, 0x102, 0x63, 0x102, 0x64, 0x102,
- 0x65, 0x102, 0x66, 0x102, 0x67, 0x102, 0x68, 0x102,
- 0x69, 0x102, 0x6a, 0x102, 0x6b, 0x102, 0x6c, 0x102,
- 0x6d, 0x102, 0x6e, 0x102, 0x6f, 0x102, 0x70, 0x102,
- 0x71, 0x102, 0x72, 0x102, 0x73, 0x102, 0x74, 0x102,
- 0x75, 0x102, 0x76, 0x102, 0x77, 0x102, 0x78, 0x102,
- 0x79, 0x102, 0x7a, 0x102, 0x41, 0x102, 0x42, 0x102,
- 0x43, 0x102, 0x44, 0x102, 0x45, 0x102, 0x46, 0x102,
- 0x47, 0x102, 0x48, 0x102, 0x49, 0x102, 0x4a, 0x102,
- 0x4b, 0x102, 0x4c, 0x102, 0x4d, 0x102, 0x4e, 0x102,
- 0x4f, 0x102, 0x50, 0x102, 0x51, 0x102, 0x52, 0x102,
- 0x53, 0x102, 0x54, 0x102, 0x55, 0x102, 0x56, 0x102,
- 0x57, 0x102, 0x58, 0x102, 0x59, 0x102, 0x5a, 0x102,
- 0x61, 0x102, 0x62, 0x102, 0x63, 0x102, 0x64, 0x102,
- 0x65, 0x102, 0x66, 0x102, 0x67, 0x102, 0x68, 0x102,
- 0x69, 0x102, 0x6a, 0x102, 0x6b, 0x102, 0x6c, 0x102,
- 0x6d, 0x102, 0x6e, 0x102, 0x6f, 0x102, 0x70, 0x102,
- 0x71, 0x102, 0x72, 0x102, 0x73, 0x102, 0x74, 0x102,
- 0x75, 0x102, 0x76, 0x102, 0x77, 0x102, 0x78, 0x102,
- 0x79, 0x102, 0x7a, 0x102, 0x41, 0x102, 0x42, 0x102,
- 0x43, 0x102, 0x44, 0x102, 0x45, 0x102, 0x46, 0x102,
- 0x47, 0x102, 0x48, 0x102, 0x49, 0x102, 0x4a, 0x102,
- 0x4b, 0x102, 0x4c, 0x102, 0x4d, 0x102, 0x4e, 0x102,
- 0x4f, 0x102, 0x50, 0x102, 0x51, 0x102, 0x52, 0x102,
- 0x53, 0x102, 0x54, 0x102, 0x55, 0x102, 0x56, 0x102,
- 0x57, 0x102, 0x58, 0x102, 0x59, 0x102, 0x5a, 0x102,
- 0x61, 0x102, 0x62, 0x102, 0x63, 0x102, 0x64, 0x102,
- 0x65, 0x102, 0x66, 0x102, 0x67, 0x102, 0x68, 0x102,
- 0x69, 0x102, 0x6a, 0x102, 0x6b, 0x102, 0x6c, 0x102,
- 0x6d, 0x102, 0x6e, 0x102, 0x6f, 0x102, 0x70, 0x102,
- 0x71, 0x102, 0x72, 0x102, 0x73, 0x102, 0x74, 0x102,
- 0x75, 0x102, 0x76, 0x102, 0x77, 0x102, 0x78, 0x102,
- 0x79, 0x102, 0x7a, 0x102, 0x41, 0x102, 0x42, 0x102,
- 0x43, 0x102, 0x44, 0x102, 0x45, 0x102, 0x46, 0x102,
- 0x47, 0x102, 0x48, 0x102, 0x49, 0x102, 0x4a, 0x102,
- 0x4b, 0x102, 0x4c, 0x102, 0x4d, 0x102, 0x4e, 0x102,
- 0x4f, 0x102, 0x50, 0x102, 0x51, 0x102, 0x52, 0x102,
- 0x53, 0x102, 0x54, 0x102, 0x55, 0x102, 0x56, 0x102,
- 0x57, 0x102, 0x58, 0x102, 0x59, 0x102, 0x5a, 0x102,
- 0x61, 0x102, 0x62, 0x102, 0x63, 0x102, 0x64, 0x102,
- 0x65, 0x102, 0x66, 0x102, 0x67, 0x102, 0x68, 0x102,
- 0x69, 0x102, 0x6a, 0x102, 0x6b, 0x102, 0x6c, 0x102,
- 0x6d, 0x102, 0x6e, 0x102, 0x6f, 0x102, 0x70, 0x102,
- 0x71, 0x102, 0x72, 0x102, 0x73, 0x102, 0x74, 0x102,
- 0x75, 0x102, 0x76, 0x102, 0x77, 0x102, 0x78, 0x102,
- 0x79, 0x102, 0x7a, 0x102, 0x131, 0x102, 0x237, 0x102,
- 0x391, 0x102, 0x392, 0x102, 0x393, 0x102, 0x394, 0x102,
- 0x395, 0x102, 0x396, 0x102, 0x397, 0x102, 0x398, 0x102,
- 0x399, 0x102, 0x39a, 0x102, 0x39b, 0x102, 0x39c, 0x102,
- 0x39d, 0x102, 0x39e, 0x102, 0x39f, 0x102, 0x3a0, 0x102,
- 0x3a1, 0x102, 0x3f4, 0x102, 0x3a3, 0x102, 0x3a4, 0x102,
- 0x3a5, 0x102, 0x3a6, 0x102, 0x3a7, 0x102, 0x3a8, 0x102,
- 0x3a9, 0x102, 0x2207, 0x102, 0x3b1, 0x102, 0x3b2, 0x102,
- 0x3b3, 0x102, 0x3b4, 0x102, 0x3b5, 0x102, 0x3b6, 0x102,
- 0x3b7, 0x102, 0x3b8, 0x102, 0x3b9, 0x102, 0x3ba, 0x102,
- 0x3bb, 0x102, 0x3bc, 0x102, 0x3bd, 0x102, 0x3be, 0x102,
- 0x3bf, 0x102, 0x3c0, 0x102, 0x3c1, 0x102, 0x3c2, 0x102,
- 0x3c3, 0x102, 0x3c4, 0x102, 0x3c5, 0x102, 0x3c6, 0x102,
- 0x3c7, 0x102, 0x3c8, 0x102, 0x3c9, 0x102, 0x2202, 0x102,
- 0x3f5, 0x102, 0x3d1, 0x102, 0x3f0, 0x102, 0x3d5, 0x102,
- 0x3f1, 0x102, 0x3d6, 0x102, 0x391, 0x102, 0x392, 0x102,
- 0x393, 0x102, 0x394, 0x102, 0x395, 0x102, 0x396, 0x102,
- 0x397, 0x102, 0x398, 0x102, 0x399, 0x102, 0x39a, 0x102,
- 0x39b, 0x102, 0x39c, 0x102, 0x39d, 0x102, 0x39e, 0x102,
- 0x39f, 0x102, 0x3a0, 0x102, 0x3a1, 0x102, 0x3f4, 0x102,
- 0x3a3, 0x102, 0x3a4, 0x102, 0x3a5, 0x102, 0x3a6, 0x102,
- 0x3a7, 0x102, 0x3a8, 0x102, 0x3a9, 0x102, 0x2207, 0x102,
- 0x3b1, 0x102, 0x3b2, 0x102, 0x3b3, 0x102, 0x3b4, 0x102,
- 0x3b5, 0x102, 0x3b6, 0x102, 0x3b7, 0x102, 0x3b8, 0x102,
- 0x3b9, 0x102, 0x3ba, 0x102, 0x3bb, 0x102, 0x3bc, 0x102,
- 0x3bd, 0x102, 0x3be, 0x102, 0x3bf, 0x102, 0x3c0, 0x102,
- 0x3c1, 0x102, 0x3c2, 0x102, 0x3c3, 0x102, 0x3c4, 0x102,
- 0x3c5, 0x102, 0x3c6, 0x102, 0x3c7, 0x102, 0x3c8, 0x102,
- 0x3c9, 0x102, 0x2202, 0x102, 0x3f5, 0x102, 0x3d1, 0x102,
- 0x3f0, 0x102, 0x3d5, 0x102, 0x3f1, 0x102, 0x3d6, 0x102,
- 0x391, 0x102, 0x392, 0x102, 0x393, 0x102, 0x394, 0x102,
- 0x395, 0x102, 0x396, 0x102, 0x397, 0x102, 0x398, 0x102,
- 0x399, 0x102, 0x39a, 0x102, 0x39b, 0x102, 0x39c, 0x102,
- 0x39d, 0x102, 0x39e, 0x102, 0x39f, 0x102, 0x3a0, 0x102,
- 0x3a1, 0x102, 0x3f4, 0x102, 0x3a3, 0x102, 0x3a4, 0x102,
- 0x3a5, 0x102, 0x3a6, 0x102, 0x3a7, 0x102, 0x3a8, 0x102,
- 0x3a9, 0x102, 0x2207, 0x102, 0x3b1, 0x102, 0x3b2, 0x102,
- 0x3b3, 0x102, 0x3b4, 0x102, 0x3b5, 0x102, 0x3b6, 0x102,
- 0x3b7, 0x102, 0x3b8, 0x102, 0x3b9, 0x102, 0x3ba, 0x102,
- 0x3bb, 0x102, 0x3bc, 0x102, 0x3bd, 0x102, 0x3be, 0x102,
- 0x3bf, 0x102, 0x3c0, 0x102, 0x3c1, 0x102, 0x3c2, 0x102,
- 0x3c3, 0x102, 0x3c4, 0x102, 0x3c5, 0x102, 0x3c6, 0x102,
- 0x3c7, 0x102, 0x3c8, 0x102, 0x3c9, 0x102, 0x2202, 0x102,
- 0x3f5, 0x102, 0x3d1, 0x102, 0x3f0, 0x102, 0x3d5, 0x102,
- 0x3f1, 0x102, 0x3d6, 0x102, 0x391, 0x102, 0x392, 0x102,
- 0x393, 0x102, 0x394, 0x102, 0x395, 0x102, 0x396, 0x102,
- 0x397, 0x102, 0x398, 0x102, 0x399, 0x102, 0x39a, 0x102,
- 0x39b, 0x102, 0x39c, 0x102, 0x39d, 0x102, 0x39e, 0x102,
- 0x39f, 0x102, 0x3a0, 0x102, 0x3a1, 0x102, 0x3f4, 0x102,
- 0x3a3, 0x102, 0x3a4, 0x102, 0x3a5, 0x102, 0x3a6, 0x102,
- 0x3a7, 0x102, 0x3a8, 0x102, 0x3a9, 0x102, 0x2207, 0x102,
- 0x3b1, 0x102, 0x3b2, 0x102, 0x3b3, 0x102, 0x3b4, 0x102,
- 0x3b5, 0x102, 0x3b6, 0x102, 0x3b7, 0x102, 0x3b8, 0x102,
- 0x3b9, 0x102, 0x3ba, 0x102, 0x3bb, 0x102, 0x3bc, 0x102,
- 0x3bd, 0x102, 0x3be, 0x102, 0x3bf, 0x102, 0x3c0, 0x102,
- 0x3c1, 0x102, 0x3c2, 0x102, 0x3c3, 0x102, 0x3c4, 0x102,
- 0x3c5, 0x102, 0x3c6, 0x102, 0x3c7, 0x102, 0x3c8, 0x102,
- 0x3c9, 0x102, 0x2202, 0x102, 0x3f5, 0x102, 0x3d1, 0x102,
- 0x3f0, 0x102, 0x3d5, 0x102, 0x3f1, 0x102, 0x3d6, 0x102,
- 0x391, 0x102, 0x392, 0x102, 0x393, 0x102, 0x394, 0x102,
- 0x395, 0x102, 0x396, 0x102, 0x397, 0x102, 0x398, 0x102,
- 0x399, 0x102, 0x39a, 0x102, 0x39b, 0x102, 0x39c, 0x102,
- 0x39d, 0x102, 0x39e, 0x102, 0x39f, 0x102, 0x3a0, 0x102,
- 0x3a1, 0x102, 0x3f4, 0x102, 0x3a3, 0x102, 0x3a4, 0x102,
- 0x3a5, 0x102, 0x3a6, 0x102, 0x3a7, 0x102, 0x3a8, 0x102,
- 0x3a9, 0x102, 0x2207, 0x102, 0x3b1, 0x102, 0x3b2, 0x102,
- 0x3b3, 0x102, 0x3b4, 0x102, 0x3b5, 0x102, 0x3b6, 0x102,
- 0x3b7, 0x102, 0x3b8, 0x102, 0x3b9, 0x102, 0x3ba, 0x102,
- 0x3bb, 0x102, 0x3bc, 0x102, 0x3bd, 0x102, 0x3be, 0x102,
- 0x3bf, 0x102, 0x3c0, 0x102, 0x3c1, 0x102, 0x3c2, 0x102,
- 0x3c3, 0x102, 0x3c4, 0x102, 0x3c5, 0x102, 0x3c6, 0x102,
- 0x3c7, 0x102, 0x3c8, 0x102, 0x3c9, 0x102, 0x2202, 0x102,
- 0x3f5, 0x102, 0x3d1, 0x102, 0x3f0, 0x102, 0x3d5, 0x102,
- 0x3f1, 0x102, 0x3d6, 0x102, 0x3dc, 0x102, 0x3dd, 0x102,
- 0x30, 0x102, 0x31, 0x102, 0x32, 0x102, 0x33, 0x102,
- 0x34, 0x102, 0x35, 0x102, 0x36, 0x102, 0x37, 0x102,
- 0x38, 0x102, 0x39, 0x102, 0x30, 0x102, 0x31, 0x102,
- 0x32, 0x102, 0x33, 0x102, 0x34, 0x102, 0x35, 0x102,
- 0x36, 0x102, 0x37, 0x102, 0x38, 0x102, 0x39, 0x102,
- 0x30, 0x102, 0x31, 0x102, 0x32, 0x102, 0x33, 0x102,
- 0x34, 0x102, 0x35, 0x102, 0x36, 0x102, 0x37, 0x102,
- 0x38, 0x102, 0x39, 0x102, 0x30, 0x102, 0x31, 0x102,
- 0x32, 0x102, 0x33, 0x102, 0x34, 0x102, 0x35, 0x102,
- 0x36, 0x102, 0x37, 0x102, 0x38, 0x102, 0x39, 0x102,
- 0x30, 0x102, 0x31, 0x102, 0x32, 0x102, 0x33, 0x102,
- 0x34, 0x102, 0x35, 0x102, 0x36, 0x102, 0x37, 0x102,
- 0x38, 0x102, 0x39, 0x102, 0x627, 0x102, 0x628, 0x102,
- 0x62c, 0x102, 0x62f, 0x102, 0x648, 0x102, 0x632, 0x102,
- 0x62d, 0x102, 0x637, 0x102, 0x64a, 0x102, 0x643, 0x102,
- 0x644, 0x102, 0x645, 0x102, 0x646, 0x102, 0x633, 0x102,
- 0x639, 0x102, 0x641, 0x102, 0x635, 0x102, 0x642, 0x102,
- 0x631, 0x102, 0x634, 0x102, 0x62a, 0x102, 0x62b, 0x102,
- 0x62e, 0x102, 0x630, 0x102, 0x636, 0x102, 0x638, 0x102,
- 0x63a, 0x102, 0x66e, 0x102, 0x6ba, 0x102, 0x6a1, 0x102,
- 0x66f, 0x102, 0x628, 0x102, 0x62c, 0x102, 0x647, 0x102,
- 0x62d, 0x102, 0x64a, 0x102, 0x643, 0x102, 0x644, 0x102,
- 0x645, 0x102, 0x646, 0x102, 0x633, 0x102, 0x639, 0x102,
- 0x641, 0x102, 0x635, 0x102, 0x642, 0x102, 0x634, 0x102,
- 0x62a, 0x102, 0x62b, 0x102, 0x62e, 0x102, 0x636, 0x102,
- 0x63a, 0x102, 0x62c, 0x102, 0x62d, 0x102, 0x64a, 0x102,
- 0x644, 0x102, 0x646, 0x102, 0x633, 0x102, 0x639, 0x102,
- 0x635, 0x102, 0x642, 0x102, 0x634, 0x102, 0x62e, 0x102,
- 0x636, 0x102, 0x63a, 0x102, 0x6ba, 0x102, 0x66f, 0x102,
- 0x628, 0x102, 0x62c, 0x102, 0x647, 0x102, 0x62d, 0x102,
- 0x637, 0x102, 0x64a, 0x102, 0x643, 0x102, 0x645, 0x102,
- 0x646, 0x102, 0x633, 0x102, 0x639, 0x102, 0x641, 0x102,
- 0x635, 0x102, 0x642, 0x102, 0x634, 0x102, 0x62a, 0x102,
- 0x62b, 0x102, 0x62e, 0x102, 0x636, 0x102, 0x638, 0x102,
- 0x63a, 0x102, 0x66e, 0x102, 0x6a1, 0x102, 0x627, 0x102,
- 0x628, 0x102, 0x62c, 0x102, 0x62f, 0x102, 0x647, 0x102,
- 0x648, 0x102, 0x632, 0x102, 0x62d, 0x102, 0x637, 0x102,
- 0x64a, 0x102, 0x644, 0x102, 0x645, 0x102, 0x646, 0x102,
- 0x633, 0x102, 0x639, 0x102, 0x641, 0x102, 0x635, 0x102,
- 0x642, 0x102, 0x631, 0x102, 0x634, 0x102, 0x62a, 0x102,
- 0x62b, 0x102, 0x62e, 0x102, 0x630, 0x102, 0x636, 0x102,
- 0x638, 0x102, 0x63a, 0x102, 0x628, 0x102, 0x62c, 0x102,
- 0x62f, 0x102, 0x648, 0x102, 0x632, 0x102, 0x62d, 0x102,
- 0x637, 0x102, 0x64a, 0x102, 0x644, 0x102, 0x645, 0x102,
- 0x646, 0x102, 0x633, 0x102, 0x639, 0x102, 0x641, 0x102,
- 0x635, 0x102, 0x642, 0x102, 0x631, 0x102, 0x634, 0x102,
- 0x62a, 0x102, 0x62b, 0x102, 0x62e, 0x102, 0x630, 0x102,
- 0x636, 0x102, 0x638, 0x102, 0x63a, 0x210, 0x30, 0x2e,
- 0x210, 0x30, 0x2c, 0x210, 0x31, 0x2c, 0x210, 0x32,
- 0x2c, 0x210, 0x33, 0x2c, 0x210, 0x34, 0x2c, 0x210,
- 0x35, 0x2c, 0x210, 0x36, 0x2c, 0x210, 0x37, 0x2c,
- 0x210, 0x38, 0x2c, 0x210, 0x39, 0x2c, 0x310, 0x28,
- 0x41, 0x29, 0x310, 0x28, 0x42, 0x29, 0x310, 0x28,
- 0x43, 0x29, 0x310, 0x28, 0x44, 0x29, 0x310, 0x28,
- 0x45, 0x29, 0x310, 0x28, 0x46, 0x29, 0x310, 0x28,
- 0x47, 0x29, 0x310, 0x28, 0x48, 0x29, 0x310, 0x28,
- 0x49, 0x29, 0x310, 0x28, 0x4a, 0x29, 0x310, 0x28,
- 0x4b, 0x29, 0x310, 0x28, 0x4c, 0x29, 0x310, 0x28,
- 0x4d, 0x29, 0x310, 0x28, 0x4e, 0x29, 0x310, 0x28,
- 0x4f, 0x29, 0x310, 0x28, 0x50, 0x29, 0x310, 0x28,
- 0x51, 0x29, 0x310, 0x28, 0x52, 0x29, 0x310, 0x28,
- 0x53, 0x29, 0x310, 0x28, 0x54, 0x29, 0x310, 0x28,
- 0x55, 0x29, 0x310, 0x28, 0x56, 0x29, 0x310, 0x28,
- 0x57, 0x29, 0x310, 0x28, 0x58, 0x29, 0x310, 0x28,
- 0x59, 0x29, 0x310, 0x28, 0x5a, 0x29, 0x310, 0x3014,
- 0x53, 0x3015, 0x108, 0x43, 0x108, 0x52, 0x208, 0x43,
- 0x44, 0x208, 0x57, 0x5a, 0x10f, 0x41, 0x10f, 0x42,
- 0x10f, 0x43, 0x10f, 0x44, 0x10f, 0x45, 0x10f, 0x46,
- 0x10f, 0x47, 0x10f, 0x48, 0x10f, 0x49, 0x10f, 0x4a,
- 0x10f, 0x4b, 0x10f, 0x4c, 0x10f, 0x4d, 0x10f, 0x4e,
- 0x10f, 0x4f, 0x10f, 0x50, 0x10f, 0x51, 0x10f, 0x52,
- 0x10f, 0x53, 0x10f, 0x54, 0x10f, 0x55, 0x10f, 0x56,
- 0x10f, 0x57, 0x10f, 0x58, 0x10f, 0x59, 0x10f, 0x5a,
- 0x20f, 0x48, 0x56, 0x20f, 0x4d, 0x56, 0x20f, 0x53,
- 0x44, 0x20f, 0x53, 0x53, 0x30f, 0x50, 0x50, 0x56,
- 0x20f, 0x57, 0x43, 0x209, 0x4d, 0x43, 0x209, 0x4d,
- 0x44, 0x20f, 0x44, 0x4a, 0x20f, 0x307b, 0x304b, 0x20f,
- 0x30b3, 0x30b3, 0x10f, 0x30b5, 0x10f, 0x624b, 0x10f, 0x5b57,
- 0x10f, 0x53cc, 0x10f, 0x30c7, 0x10f, 0x4e8c, 0x10f, 0x591a,
- 0x10f, 0x89e3, 0x10f, 0x5929, 0x10f, 0x4ea4, 0x10f, 0x6620,
- 0x10f, 0x7121, 0x10f, 0x6599, 0x10f, 0x524d, 0x10f, 0x5f8c,
- 0x10f, 0x518d, 0x10f, 0x65b0, 0x10f, 0x521d, 0x10f, 0x7d42,
- 0x10f, 0x751f, 0x10f, 0x8ca9, 0x10f, 0x58f0, 0x10f, 0x5439,
- 0x10f, 0x6f14, 0x10f, 0x6295, 0x10f, 0x6355, 0x10f, 0x4e00,
- 0x10f, 0x4e09, 0x10f, 0x904a, 0x10f, 0x5de6, 0x10f, 0x4e2d,
- 0x10f, 0x53f3, 0x10f, 0x6307, 0x10f, 0x8d70, 0x10f, 0x6253,
- 0x10f, 0x7981, 0x10f, 0x7a7a, 0x10f, 0x5408, 0x10f, 0x6e80,
- 0x10f, 0x6709, 0x10f, 0x6708, 0x10f, 0x7533, 0x10f, 0x5272,
- 0x10f, 0x55b6, 0x10f, 0x914d, 0x310, 0x3014, 0x672c, 0x3015,
- 0x310, 0x3014, 0x4e09, 0x3015, 0x310, 0x3014, 0x4e8c, 0x3015,
- 0x310, 0x3014, 0x5b89, 0x3015, 0x310, 0x3014, 0x70b9, 0x3015,
- 0x310, 0x3014, 0x6253, 0x3015, 0x310, 0x3014, 0x76d7, 0x3015,
- 0x310, 0x3014, 0x52dd, 0x3015, 0x310, 0x3014, 0x6557, 0x3015,
- 0x108, 0x5f97, 0x108, 0x53ef, 0x101, 0x4e3d, 0x101, 0x4e38,
- 0x101, 0x4e41, 0x201, 0xd840, 0xdd22, 0x101, 0x4f60, 0x101,
- 0x4fae, 0x101, 0x4fbb, 0x101, 0x5002, 0x101, 0x507a, 0x101,
- 0x5099, 0x101, 0x50e7, 0x101, 0x50cf, 0x101, 0x349e, 0x201,
- 0xd841, 0xde3a, 0x101, 0x514d, 0x101, 0x5154, 0x101, 0x5164,
- 0x101, 0x5177, 0x201, 0xd841, 0xdd1c, 0x101, 0x34b9, 0x101,
- 0x5167, 0x101, 0x518d, 0x201, 0xd841, 0xdd4b, 0x101, 0x5197,
- 0x101, 0x51a4, 0x101, 0x4ecc, 0x101, 0x51ac, 0x101, 0x51b5,
- 0x201, 0xd864, 0xdddf, 0x101, 0x51f5, 0x101, 0x5203, 0x101,
- 0x34df, 0x101, 0x523b, 0x101, 0x5246, 0x101, 0x5272, 0x101,
- 0x5277, 0x101, 0x3515, 0x101, 0x52c7, 0x101, 0x52c9, 0x101,
- 0x52e4, 0x101, 0x52fa, 0x101, 0x5305, 0x101, 0x5306, 0x101,
- 0x5317, 0x101, 0x5349, 0x101, 0x5351, 0x101, 0x535a, 0x101,
- 0x5373, 0x101, 0x537d, 0x101, 0x537f, 0x101, 0x537f, 0x101,
- 0x537f, 0x201, 0xd842, 0xde2c, 0x101, 0x7070, 0x101, 0x53ca,
- 0x101, 0x53df, 0x201, 0xd842, 0xdf63, 0x101, 0x53eb, 0x101,
- 0x53f1, 0x101, 0x5406, 0x101, 0x549e, 0x101, 0x5438, 0x101,
- 0x5448, 0x101, 0x5468, 0x101, 0x54a2, 0x101, 0x54f6, 0x101,
- 0x5510, 0x101, 0x5553, 0x101, 0x5563, 0x101, 0x5584, 0x101,
- 0x5584, 0x101, 0x5599, 0x101, 0x55ab, 0x101, 0x55b3, 0x101,
- 0x55c2, 0x101, 0x5716, 0x101, 0x5606, 0x101, 0x5717, 0x101,
- 0x5651, 0x101, 0x5674, 0x101, 0x5207, 0x101, 0x58ee, 0x101,
- 0x57ce, 0x101, 0x57f4, 0x101, 0x580d, 0x101, 0x578b, 0x101,
- 0x5832, 0x101, 0x5831, 0x101, 0x58ac, 0x201, 0xd845, 0xdce4,
- 0x101, 0x58f2, 0x101, 0x58f7, 0x101, 0x5906, 0x101, 0x591a,
- 0x101, 0x5922, 0x101, 0x5962, 0x201, 0xd845, 0xdea8, 0x201,
- 0xd845, 0xdeea, 0x101, 0x59ec, 0x101, 0x5a1b, 0x101, 0x5a27,
- 0x101, 0x59d8, 0x101, 0x5a66, 0x101, 0x36ee, 0x101, 0x36fc,
- 0x101, 0x5b08, 0x101, 0x5b3e, 0x101, 0x5b3e, 0x201, 0xd846,
- 0xddc8, 0x101, 0x5bc3, 0x101, 0x5bd8, 0x101, 0x5be7, 0x101,
- 0x5bf3, 0x201, 0xd846, 0xdf18, 0x101, 0x5bff, 0x101, 0x5c06,
- 0x101, 0x5f53, 0x101, 0x5c22, 0x101, 0x3781, 0x101, 0x5c60,
- 0x101, 0x5c6e, 0x101, 0x5cc0, 0x101, 0x5c8d, 0x201, 0xd847,
- 0xdde4, 0x101, 0x5d43, 0x201, 0xd847, 0xdde6, 0x101, 0x5d6e,
- 0x101, 0x5d6b, 0x101, 0x5d7c, 0x101, 0x5de1, 0x101, 0x5de2,
- 0x101, 0x382f, 0x101, 0x5dfd, 0x101, 0x5e28, 0x101, 0x5e3d,
- 0x101, 0x5e69, 0x101, 0x3862, 0x201, 0xd848, 0xdd83, 0x101,
- 0x387c, 0x101, 0x5eb0, 0x101, 0x5eb3, 0x101, 0x5eb6, 0x101,
- 0x5eca, 0x201, 0xd868, 0xdf92, 0x101, 0x5efe, 0x201, 0xd848,
- 0xdf31, 0x201, 0xd848, 0xdf31, 0x101, 0x8201, 0x101, 0x5f22,
- 0x101, 0x5f22, 0x101, 0x38c7, 0x201, 0xd84c, 0xdeb8, 0x201,
- 0xd858, 0xddda, 0x101, 0x5f62, 0x101, 0x5f6b, 0x101, 0x38e3,
- 0x101, 0x5f9a, 0x101, 0x5fcd, 0x101, 0x5fd7, 0x101, 0x5ff9,
- 0x101, 0x6081, 0x101, 0x393a, 0x101, 0x391c, 0x101, 0x6094,
- 0x201, 0xd849, 0xded4, 0x101, 0x60c7, 0x101, 0x6148, 0x101,
- 0x614c, 0x101, 0x614e, 0x101, 0x614c, 0x101, 0x617a, 0x101,
- 0x618e, 0x101, 0x61b2, 0x101, 0x61a4, 0x101, 0x61af, 0x101,
- 0x61de, 0x101, 0x61f2, 0x101, 0x61f6, 0x101, 0x6210, 0x101,
- 0x621b, 0x101, 0x625d, 0x101, 0x62b1, 0x101, 0x62d4, 0x101,
- 0x6350, 0x201, 0xd84a, 0xdf0c, 0x101, 0x633d, 0x101, 0x62fc,
- 0x101, 0x6368, 0x101, 0x6383, 0x101, 0x63e4, 0x201, 0xd84a,
- 0xdff1, 0x101, 0x6422, 0x101, 0x63c5, 0x101, 0x63a9, 0x101,
- 0x3a2e, 0x101, 0x6469, 0x101, 0x647e, 0x101, 0x649d, 0x101,
- 0x6477, 0x101, 0x3a6c, 0x101, 0x654f, 0x101, 0x656c, 0x201,
- 0xd84c, 0xdc0a, 0x101, 0x65e3, 0x101, 0x66f8, 0x101, 0x6649,
- 0x101, 0x3b19, 0x101, 0x6691, 0x101, 0x3b08, 0x101, 0x3ae4,
- 0x101, 0x5192, 0x101, 0x5195, 0x101, 0x6700, 0x101, 0x669c,
- 0x101, 0x80ad, 0x101, 0x43d9, 0x101, 0x6717, 0x101, 0x671b,
- 0x101, 0x6721, 0x101, 0x675e, 0x101, 0x6753, 0x201, 0xd84c,
- 0xdfc3, 0x101, 0x3b49, 0x101, 0x67fa, 0x101, 0x6785, 0x101,
- 0x6852, 0x101, 0x6885, 0x201, 0xd84d, 0xdc6d, 0x101, 0x688e,
- 0x101, 0x681f, 0x101, 0x6914, 0x101, 0x3b9d, 0x101, 0x6942,
- 0x101, 0x69a3, 0x101, 0x69ea, 0x101, 0x6aa8, 0x201, 0xd84d,
- 0xdea3, 0x101, 0x6adb, 0x101, 0x3c18, 0x101, 0x6b21, 0x201,
- 0xd84e, 0xdca7, 0x101, 0x6b54, 0x101, 0x3c4e, 0x101, 0x6b72,
- 0x101, 0x6b9f, 0x101, 0x6bba, 0x101, 0x6bbb, 0x201, 0xd84e,
- 0xde8d, 0x201, 0xd847, 0xdd0b, 0x201, 0xd84e, 0xdefa, 0x101,
- 0x6c4e, 0x201, 0xd84f, 0xdcbc, 0x101, 0x6cbf, 0x101, 0x6ccd,
- 0x101, 0x6c67, 0x101, 0x6d16, 0x101, 0x6d3e, 0x101, 0x6d77,
- 0x101, 0x6d41, 0x101, 0x6d69, 0x101, 0x6d78, 0x101, 0x6d85,
- 0x201, 0xd84f, 0xdd1e, 0x101, 0x6d34, 0x101, 0x6e2f, 0x101,
- 0x6e6e, 0x101, 0x3d33, 0x101, 0x6ecb, 0x101, 0x6ec7, 0x201,
- 0xd84f, 0xded1, 0x101, 0x6df9, 0x101, 0x6f6e, 0x201, 0xd84f,
- 0xdf5e, 0x201, 0xd84f, 0xdf8e, 0x101, 0x6fc6, 0x101, 0x7039,
- 0x101, 0x701e, 0x101, 0x701b, 0x101, 0x3d96, 0x101, 0x704a,
- 0x101, 0x707d, 0x101, 0x7077, 0x101, 0x70ad, 0x201, 0xd841,
- 0xdd25, 0x101, 0x7145, 0x201, 0xd850, 0xde63, 0x101, 0x719c,
- 0x201, 0xd850, 0xdfab, 0x101, 0x7228, 0x101, 0x7235, 0x101,
- 0x7250, 0x201, 0xd851, 0xde08, 0x101, 0x7280, 0x101, 0x7295,
- 0x201, 0xd851, 0xdf35, 0x201, 0xd852, 0xdc14, 0x101, 0x737a,
- 0x101, 0x738b, 0x101, 0x3eac, 0x101, 0x73a5, 0x101, 0x3eb8,
- 0x101, 0x3eb8, 0x101, 0x7447, 0x101, 0x745c, 0x101, 0x7471,
- 0x101, 0x7485, 0x101, 0x74ca, 0x101, 0x3f1b, 0x101, 0x7524,
- 0x201, 0xd853, 0xdc36, 0x101, 0x753e, 0x201, 0xd853, 0xdc92,
- 0x101, 0x7570, 0x201, 0xd848, 0xdd9f, 0x101, 0x7610, 0x201,
- 0xd853, 0xdfa1, 0x201, 0xd853, 0xdfb8, 0x201, 0xd854, 0xdc44,
- 0x101, 0x3ffc, 0x101, 0x4008, 0x101, 0x76f4, 0x201, 0xd854,
- 0xdcf3, 0x201, 0xd854, 0xdcf2, 0x201, 0xd854, 0xdd19, 0x201,
- 0xd854, 0xdd33, 0x101, 0x771e, 0x101, 0x771f, 0x101, 0x771f,
- 0x101, 0x774a, 0x101, 0x4039, 0x101, 0x778b, 0x101, 0x4046,
- 0x101, 0x4096, 0x201, 0xd855, 0xdc1d, 0x101, 0x784e, 0x101,
- 0x788c, 0x101, 0x78cc, 0x101, 0x40e3, 0x201, 0xd855, 0xde26,
- 0x101, 0x7956, 0x201, 0xd855, 0xde9a, 0x201, 0xd855, 0xdec5,
- 0x101, 0x798f, 0x101, 0x79eb, 0x101, 0x412f, 0x101, 0x7a40,
- 0x101, 0x7a4a, 0x101, 0x7a4f, 0x201, 0xd856, 0xdd7c, 0x201,
- 0xd856, 0xdea7, 0x201, 0xd856, 0xdea7, 0x101, 0x7aee, 0x101,
- 0x4202, 0x201, 0xd856, 0xdfab, 0x101, 0x7bc6, 0x101, 0x7bc9,
- 0x101, 0x4227, 0x201, 0xd857, 0xdc80, 0x101, 0x7cd2, 0x101,
- 0x42a0, 0x101, 0x7ce8, 0x101, 0x7ce3, 0x101, 0x7d00, 0x201,
- 0xd857, 0xdf86, 0x101, 0x7d63, 0x101, 0x4301, 0x101, 0x7dc7,
- 0x101, 0x7e02, 0x101, 0x7e45, 0x101, 0x4334, 0x201, 0xd858,
- 0xde28, 0x201, 0xd858, 0xde47, 0x101, 0x4359, 0x201, 0xd858,
- 0xded9, 0x101, 0x7f7a, 0x201, 0xd858, 0xdf3e, 0x101, 0x7f95,
- 0x101, 0x7ffa, 0x101, 0x8005, 0x201, 0xd859, 0xdcda, 0x201,
- 0xd859, 0xdd23, 0x101, 0x8060, 0x201, 0xd859, 0xdda8, 0x101,
- 0x8070, 0x201, 0xd84c, 0xdf5f, 0x101, 0x43d5, 0x101, 0x80b2,
- 0x101, 0x8103, 0x101, 0x440b, 0x101, 0x813e, 0x101, 0x5ab5,
- 0x201, 0xd859, 0xdfa7, 0x201, 0xd859, 0xdfb5, 0x201, 0xd84c,
- 0xdf93, 0x201, 0xd84c, 0xdf9c, 0x101, 0x8201, 0x101, 0x8204,
- 0x101, 0x8f9e, 0x101, 0x446b, 0x101, 0x8291, 0x101, 0x828b,
- 0x101, 0x829d, 0x101, 0x52b3, 0x101, 0x82b1, 0x101, 0x82b3,
- 0x101, 0x82bd, 0x101, 0x82e6, 0x201, 0xd85a, 0xdf3c, 0x101,
- 0x82e5, 0x101, 0x831d, 0x101, 0x8363, 0x101, 0x83ad, 0x101,
- 0x8323, 0x101, 0x83bd, 0x101, 0x83e7, 0x101, 0x8457, 0x101,
- 0x8353, 0x101, 0x83ca, 0x101, 0x83cc, 0x101, 0x83dc, 0x201,
- 0xd85b, 0xdc36, 0x201, 0xd85b, 0xdd6b, 0x201, 0xd85b, 0xdcd5,
- 0x101, 0x452b, 0x101, 0x84f1, 0x101, 0x84f3, 0x101, 0x8516,
- 0x201, 0xd85c, 0xdfca, 0x101, 0x8564, 0x201, 0xd85b, 0xdf2c,
- 0x101, 0x455d, 0x101, 0x4561, 0x201, 0xd85b, 0xdfb1, 0x201,
- 0xd85c, 0xdcd2, 0x101, 0x456b, 0x101, 0x8650, 0x101, 0x865c,
- 0x101, 0x8667, 0x101, 0x8669, 0x101, 0x86a9, 0x101, 0x8688,
- 0x101, 0x870e, 0x101, 0x86e2, 0x101, 0x8779, 0x101, 0x8728,
- 0x101, 0x876b, 0x101, 0x8786, 0x101, 0x45d7, 0x101, 0x87e1,
- 0x101, 0x8801, 0x101, 0x45f9, 0x101, 0x8860, 0x101, 0x8863,
- 0x201, 0xd85d, 0xde67, 0x101, 0x88d7, 0x101, 0x88de, 0x101,
- 0x4635, 0x101, 0x88fa, 0x101, 0x34bb, 0x201, 0xd85e, 0xdcae,
- 0x201, 0xd85e, 0xdd66, 0x101, 0x46be, 0x101, 0x46c7, 0x101,
- 0x8aa0, 0x101, 0x8aed, 0x101, 0x8b8a, 0x101, 0x8c55, 0x201,
- 0xd85f, 0xdca8, 0x101, 0x8cab, 0x101, 0x8cc1, 0x101, 0x8d1b,
- 0x101, 0x8d77, 0x201, 0xd85f, 0xdf2f, 0x201, 0xd842, 0xdc04,
- 0x101, 0x8dcb, 0x101, 0x8dbc, 0x101, 0x8df0, 0x201, 0xd842,
- 0xdcde, 0x101, 0x8ed4, 0x101, 0x8f38, 0x201, 0xd861, 0xddd2,
- 0x201, 0xd861, 0xdded, 0x101, 0x9094, 0x101, 0x90f1, 0x101,
- 0x9111, 0x201, 0xd861, 0xdf2e, 0x101, 0x911b, 0x101, 0x9238,
- 0x101, 0x92d7, 0x101, 0x92d8, 0x101, 0x927c, 0x101, 0x93f9,
- 0x101, 0x9415, 0x201, 0xd862, 0xdffa, 0x101, 0x958b, 0x101,
- 0x4995, 0x101, 0x95b7, 0x201, 0xd863, 0xdd77, 0x101, 0x49e6,
- 0x101, 0x96c3, 0x101, 0x5db2, 0x101, 0x9723, 0x201, 0xd864,
- 0xdd45, 0x201, 0xd864, 0xde1a, 0x101, 0x4a6e, 0x101, 0x4a76,
- 0x101, 0x97e0, 0x201, 0xd865, 0xdc0a, 0x101, 0x4ab2, 0x201,
- 0xd865, 0xdc96, 0x101, 0x980b, 0x101, 0x980b, 0x101, 0x9829,
- 0x201, 0xd865, 0xddb6, 0x101, 0x98e2, 0x101, 0x4b33, 0x101,
- 0x9929, 0x101, 0x99a7, 0x101, 0x99c2, 0x101, 0x99fe, 0x101,
- 0x4bce, 0x201, 0xd866, 0xdf30, 0x101, 0x9b12, 0x101, 0x9c40,
- 0x101, 0x9cfd, 0x101, 0x4cce, 0x101, 0x4ced, 0x101, 0x9d67,
- 0x201, 0xd868, 0xdcce, 0x101, 0x4cf8, 0x201, 0xd868, 0xdd05,
- 0x201, 0xd868, 0xde0e, 0x201, 0xd868, 0xde91, 0x101, 0x9ebb,
- 0x101, 0x4d56, 0x101, 0x9ef9, 0x101, 0x9efe, 0x101, 0x9f05,
- 0x101, 0x9f0f, 0x101, 0x9f16, 0x101, 0x9f3b, 0x201, 0xd869,
- 0xde00
+ 0x30f1, 0x108, 0x30f2, 0x20f, 0x4ee4, 0x548c, 0x40f, 0x30a2,
+ 0x30d1, 0x30fc, 0x30c8, 0x40f, 0x30a2, 0x30eb, 0x30d5, 0x30a1,
+ 0x40f, 0x30a2, 0x30f3, 0x30da, 0x30a2, 0x30f, 0x30a2, 0x30fc,
+ 0x30eb, 0x40f, 0x30a4, 0x30cb, 0x30f3, 0x30b0, 0x30f, 0x30a4,
+ 0x30f3, 0x30c1, 0x30f, 0x30a6, 0x30a9, 0x30f3, 0x50f, 0x30a8,
+ 0x30b9, 0x30af, 0x30fc, 0x30c9, 0x40f, 0x30a8, 0x30fc, 0x30ab,
+ 0x30fc, 0x30f, 0x30aa, 0x30f3, 0x30b9, 0x30f, 0x30aa, 0x30fc,
+ 0x30e0, 0x30f, 0x30ab, 0x30a4, 0x30ea, 0x40f, 0x30ab, 0x30e9,
+ 0x30c3, 0x30c8, 0x40f, 0x30ab, 0x30ed, 0x30ea, 0x30fc, 0x30f,
+ 0x30ac, 0x30ed, 0x30f3, 0x30f, 0x30ac, 0x30f3, 0x30de, 0x20f,
+ 0x30ae, 0x30ac, 0x30f, 0x30ae, 0x30cb, 0x30fc, 0x40f, 0x30ad,
+ 0x30e5, 0x30ea, 0x30fc, 0x40f, 0x30ae, 0x30eb, 0x30c0, 0x30fc,
+ 0x20f, 0x30ad, 0x30ed, 0x50f, 0x30ad, 0x30ed, 0x30b0, 0x30e9,
+ 0x30e0, 0x60f, 0x30ad, 0x30ed, 0x30e1, 0x30fc, 0x30c8, 0x30eb,
+ 0x50f, 0x30ad, 0x30ed, 0x30ef, 0x30c3, 0x30c8, 0x30f, 0x30b0,
+ 0x30e9, 0x30e0, 0x50f, 0x30b0, 0x30e9, 0x30e0, 0x30c8, 0x30f3,
+ 0x50f, 0x30af, 0x30eb, 0x30bc, 0x30a4, 0x30ed, 0x40f, 0x30af,
+ 0x30ed, 0x30fc, 0x30cd, 0x30f, 0x30b1, 0x30fc, 0x30b9, 0x30f,
+ 0x30b3, 0x30eb, 0x30ca, 0x30f, 0x30b3, 0x30fc, 0x30dd, 0x40f,
+ 0x30b5, 0x30a4, 0x30af, 0x30eb, 0x50f, 0x30b5, 0x30f3, 0x30c1,
+ 0x30fc, 0x30e0, 0x40f, 0x30b7, 0x30ea, 0x30f3, 0x30b0, 0x30f,
+ 0x30bb, 0x30f3, 0x30c1, 0x30f, 0x30bb, 0x30f3, 0x30c8, 0x30f,
+ 0x30c0, 0x30fc, 0x30b9, 0x20f, 0x30c7, 0x30b7, 0x20f, 0x30c9,
+ 0x30eb, 0x20f, 0x30c8, 0x30f3, 0x20f, 0x30ca, 0x30ce, 0x30f,
+ 0x30ce, 0x30c3, 0x30c8, 0x30f, 0x30cf, 0x30a4, 0x30c4, 0x50f,
+ 0x30d1, 0x30fc, 0x30bb, 0x30f3, 0x30c8, 0x30f, 0x30d1, 0x30fc,
+ 0x30c4, 0x40f, 0x30d0, 0x30fc, 0x30ec, 0x30eb, 0x50f, 0x30d4,
+ 0x30a2, 0x30b9, 0x30c8, 0x30eb, 0x30f, 0x30d4, 0x30af, 0x30eb,
+ 0x20f, 0x30d4, 0x30b3, 0x20f, 0x30d3, 0x30eb, 0x50f, 0x30d5,
+ 0x30a1, 0x30e9, 0x30c3, 0x30c9, 0x40f, 0x30d5, 0x30a3, 0x30fc,
+ 0x30c8, 0x50f, 0x30d6, 0x30c3, 0x30b7, 0x30a7, 0x30eb, 0x30f,
+ 0x30d5, 0x30e9, 0x30f3, 0x50f, 0x30d8, 0x30af, 0x30bf, 0x30fc,
+ 0x30eb, 0x20f, 0x30da, 0x30bd, 0x30f, 0x30da, 0x30cb, 0x30d2,
+ 0x30f, 0x30d8, 0x30eb, 0x30c4, 0x30f, 0x30da, 0x30f3, 0x30b9,
+ 0x30f, 0x30da, 0x30fc, 0x30b8, 0x30f, 0x30d9, 0x30fc, 0x30bf,
+ 0x40f, 0x30dd, 0x30a4, 0x30f3, 0x30c8, 0x30f, 0x30dc, 0x30eb,
+ 0x30c8, 0x20f, 0x30db, 0x30f3, 0x30f, 0x30dd, 0x30f3, 0x30c9,
+ 0x30f, 0x30db, 0x30fc, 0x30eb, 0x30f, 0x30db, 0x30fc, 0x30f3,
+ 0x40f, 0x30de, 0x30a4, 0x30af, 0x30ed, 0x30f, 0x30de, 0x30a4,
+ 0x30eb, 0x30f, 0x30de, 0x30c3, 0x30cf, 0x30f, 0x30de, 0x30eb,
+ 0x30af, 0x50f, 0x30de, 0x30f3, 0x30b7, 0x30e7, 0x30f3, 0x40f,
+ 0x30df, 0x30af, 0x30ed, 0x30f3, 0x20f, 0x30df, 0x30ea, 0x50f,
+ 0x30df, 0x30ea, 0x30d0, 0x30fc, 0x30eb, 0x20f, 0x30e1, 0x30ac,
+ 0x40f, 0x30e1, 0x30ac, 0x30c8, 0x30f3, 0x40f, 0x30e1, 0x30fc,
+ 0x30c8, 0x30eb, 0x30f, 0x30e4, 0x30fc, 0x30c9, 0x30f, 0x30e4,
+ 0x30fc, 0x30eb, 0x30f, 0x30e6, 0x30a2, 0x30f3, 0x40f, 0x30ea,
+ 0x30c3, 0x30c8, 0x30eb, 0x20f, 0x30ea, 0x30e9, 0x30f, 0x30eb,
+ 0x30d4, 0x30fc, 0x40f, 0x30eb, 0x30fc, 0x30d6, 0x30eb, 0x20f,
+ 0x30ec, 0x30e0, 0x50f, 0x30ec, 0x30f3, 0x30c8, 0x30b2, 0x30f3,
+ 0x30f, 0x30ef, 0x30c3, 0x30c8, 0x210, 0x30, 0x70b9, 0x210,
+ 0x31, 0x70b9, 0x210, 0x32, 0x70b9, 0x210, 0x33, 0x70b9,
+ 0x210, 0x34, 0x70b9, 0x210, 0x35, 0x70b9, 0x210, 0x36,
+ 0x70b9, 0x210, 0x37, 0x70b9, 0x210, 0x38, 0x70b9, 0x210,
+ 0x39, 0x70b9, 0x310, 0x31, 0x30, 0x70b9, 0x310, 0x31,
+ 0x31, 0x70b9, 0x310, 0x31, 0x32, 0x70b9, 0x310, 0x31,
+ 0x33, 0x70b9, 0x310, 0x31, 0x34, 0x70b9, 0x310, 0x31,
+ 0x35, 0x70b9, 0x310, 0x31, 0x36, 0x70b9, 0x310, 0x31,
+ 0x37, 0x70b9, 0x310, 0x31, 0x38, 0x70b9, 0x310, 0x31,
+ 0x39, 0x70b9, 0x310, 0x32, 0x30, 0x70b9, 0x310, 0x32,
+ 0x31, 0x70b9, 0x310, 0x32, 0x32, 0x70b9, 0x310, 0x32,
+ 0x33, 0x70b9, 0x310, 0x32, 0x34, 0x70b9, 0x30f, 0x68,
+ 0x50, 0x61, 0x20f, 0x64, 0x61, 0x20f, 0x41, 0x55,
+ 0x30f, 0x62, 0x61, 0x72, 0x20f, 0x6f, 0x56, 0x20f,
+ 0x70, 0x63, 0x20f, 0x64, 0x6d, 0x30f, 0x64, 0x6d,
+ 0xb2, 0x30f, 0x64, 0x6d, 0xb3, 0x20f, 0x49, 0x55,
+ 0x20f, 0x5e73, 0x6210, 0x20f, 0x662d, 0x548c, 0x20f, 0x5927,
+ 0x6b63, 0x20f, 0x660e, 0x6cbb, 0x40f, 0x682a, 0x5f0f, 0x4f1a,
+ 0x793e, 0x20f, 0x70, 0x41, 0x20f, 0x6e, 0x41, 0x20f,
+ 0x3bc, 0x41, 0x20f, 0x6d, 0x41, 0x20f, 0x6b, 0x41,
+ 0x20f, 0x4b, 0x42, 0x20f, 0x4d, 0x42, 0x20f, 0x47,
+ 0x42, 0x30f, 0x63, 0x61, 0x6c, 0x40f, 0x6b, 0x63,
+ 0x61, 0x6c, 0x20f, 0x70, 0x46, 0x20f, 0x6e, 0x46,
+ 0x20f, 0x3bc, 0x46, 0x20f, 0x3bc, 0x67, 0x20f, 0x6d,
+ 0x67, 0x20f, 0x6b, 0x67, 0x20f, 0x48, 0x7a, 0x30f,
+ 0x6b, 0x48, 0x7a, 0x30f, 0x4d, 0x48, 0x7a, 0x30f,
+ 0x47, 0x48, 0x7a, 0x30f, 0x54, 0x48, 0x7a, 0x20f,
+ 0x3bc, 0x2113, 0x20f, 0x6d, 0x2113, 0x20f, 0x64, 0x2113,
+ 0x20f, 0x6b, 0x2113, 0x20f, 0x66, 0x6d, 0x20f, 0x6e,
+ 0x6d, 0x20f, 0x3bc, 0x6d, 0x20f, 0x6d, 0x6d, 0x20f,
+ 0x63, 0x6d, 0x20f, 0x6b, 0x6d, 0x30f, 0x6d, 0x6d,
+ 0xb2, 0x30f, 0x63, 0x6d, 0xb2, 0x20f, 0x6d, 0xb2,
+ 0x30f, 0x6b, 0x6d, 0xb2, 0x30f, 0x6d, 0x6d, 0xb3,
+ 0x30f, 0x63, 0x6d, 0xb3, 0x20f, 0x6d, 0xb3, 0x30f,
+ 0x6b, 0x6d, 0xb3, 0x30f, 0x6d, 0x2215, 0x73, 0x40f,
+ 0x6d, 0x2215, 0x73, 0xb2, 0x20f, 0x50, 0x61, 0x30f,
+ 0x6b, 0x50, 0x61, 0x30f, 0x4d, 0x50, 0x61, 0x30f,
+ 0x47, 0x50, 0x61, 0x30f, 0x72, 0x61, 0x64, 0x50f,
+ 0x72, 0x61, 0x64, 0x2215, 0x73, 0x60f, 0x72, 0x61,
+ 0x64, 0x2215, 0x73, 0xb2, 0x20f, 0x70, 0x73, 0x20f,
+ 0x6e, 0x73, 0x20f, 0x3bc, 0x73, 0x20f, 0x6d, 0x73,
+ 0x20f, 0x70, 0x56, 0x20f, 0x6e, 0x56, 0x20f, 0x3bc,
+ 0x56, 0x20f, 0x6d, 0x56, 0x20f, 0x6b, 0x56, 0x20f,
+ 0x4d, 0x56, 0x20f, 0x70, 0x57, 0x20f, 0x6e, 0x57,
+ 0x20f, 0x3bc, 0x57, 0x20f, 0x6d, 0x57, 0x20f, 0x6b,
+ 0x57, 0x20f, 0x4d, 0x57, 0x20f, 0x6b, 0x3a9, 0x20f,
+ 0x4d, 0x3a9, 0x40f, 0x61, 0x2e, 0x6d, 0x2e, 0x20f,
+ 0x42, 0x71, 0x20f, 0x63, 0x63, 0x20f, 0x63, 0x64,
+ 0x40f, 0x43, 0x2215, 0x6b, 0x67, 0x30f, 0x43, 0x6f,
+ 0x2e, 0x20f, 0x64, 0x42, 0x20f, 0x47, 0x79, 0x20f,
+ 0x68, 0x61, 0x20f, 0x48, 0x50, 0x20f, 0x69, 0x6e,
+ 0x20f, 0x4b, 0x4b, 0x20f, 0x4b, 0x4d, 0x20f, 0x6b,
+ 0x74, 0x20f, 0x6c, 0x6d, 0x20f, 0x6c, 0x6e, 0x30f,
+ 0x6c, 0x6f, 0x67, 0x20f, 0x6c, 0x78, 0x20f, 0x6d,
+ 0x62, 0x30f, 0x6d, 0x69, 0x6c, 0x30f, 0x6d, 0x6f,
+ 0x6c, 0x20f, 0x50, 0x48, 0x40f, 0x70, 0x2e, 0x6d,
+ 0x2e, 0x30f, 0x50, 0x50, 0x4d, 0x20f, 0x50, 0x52,
+ 0x20f, 0x73, 0x72, 0x20f, 0x53, 0x76, 0x20f, 0x57,
+ 0x62, 0x30f, 0x56, 0x2215, 0x6d, 0x30f, 0x41, 0x2215,
+ 0x6d, 0x210, 0x31, 0x65e5, 0x210, 0x32, 0x65e5, 0x210,
+ 0x33, 0x65e5, 0x210, 0x34, 0x65e5, 0x210, 0x35, 0x65e5,
+ 0x210, 0x36, 0x65e5, 0x210, 0x37, 0x65e5, 0x210, 0x38,
+ 0x65e5, 0x210, 0x39, 0x65e5, 0x310, 0x31, 0x30, 0x65e5,
+ 0x310, 0x31, 0x31, 0x65e5, 0x310, 0x31, 0x32, 0x65e5,
+ 0x310, 0x31, 0x33, 0x65e5, 0x310, 0x31, 0x34, 0x65e5,
+ 0x310, 0x31, 0x35, 0x65e5, 0x310, 0x31, 0x36, 0x65e5,
+ 0x310, 0x31, 0x37, 0x65e5, 0x310, 0x31, 0x38, 0x65e5,
+ 0x310, 0x31, 0x39, 0x65e5, 0x310, 0x32, 0x30, 0x65e5,
+ 0x310, 0x32, 0x31, 0x65e5, 0x310, 0x32, 0x32, 0x65e5,
+ 0x310, 0x32, 0x33, 0x65e5, 0x310, 0x32, 0x34, 0x65e5,
+ 0x310, 0x32, 0x35, 0x65e5, 0x310, 0x32, 0x36, 0x65e5,
+ 0x310, 0x32, 0x37, 0x65e5, 0x310, 0x32, 0x38, 0x65e5,
+ 0x310, 0x32, 0x39, 0x65e5, 0x310, 0x33, 0x30, 0x65e5,
+ 0x310, 0x33, 0x31, 0x65e5, 0x30f, 0x67, 0x61, 0x6c,
+ 0x109, 0x44a, 0x109, 0x44c, 0x109, 0xa76f, 0x109, 0x126,
+ 0x109, 0x153, 0x109, 0xa727, 0x109, 0xab37, 0x109, 0x26b,
+ 0x109, 0xab52, 0x101, 0x8c48, 0x101, 0x66f4, 0x101, 0x8eca,
+ 0x101, 0x8cc8, 0x101, 0x6ed1, 0x101, 0x4e32, 0x101, 0x53e5,
+ 0x101, 0x9f9c, 0x101, 0x9f9c, 0x101, 0x5951, 0x101, 0x91d1,
+ 0x101, 0x5587, 0x101, 0x5948, 0x101, 0x61f6, 0x101, 0x7669,
+ 0x101, 0x7f85, 0x101, 0x863f, 0x101, 0x87ba, 0x101, 0x88f8,
+ 0x101, 0x908f, 0x101, 0x6a02, 0x101, 0x6d1b, 0x101, 0x70d9,
+ 0x101, 0x73de, 0x101, 0x843d, 0x101, 0x916a, 0x101, 0x99f1,
+ 0x101, 0x4e82, 0x101, 0x5375, 0x101, 0x6b04, 0x101, 0x721b,
+ 0x101, 0x862d, 0x101, 0x9e1e, 0x101, 0x5d50, 0x101, 0x6feb,
+ 0x101, 0x85cd, 0x101, 0x8964, 0x101, 0x62c9, 0x101, 0x81d8,
+ 0x101, 0x881f, 0x101, 0x5eca, 0x101, 0x6717, 0x101, 0x6d6a,
+ 0x101, 0x72fc, 0x101, 0x90ce, 0x101, 0x4f86, 0x101, 0x51b7,
+ 0x101, 0x52de, 0x101, 0x64c4, 0x101, 0x6ad3, 0x101, 0x7210,
+ 0x101, 0x76e7, 0x101, 0x8001, 0x101, 0x8606, 0x101, 0x865c,
+ 0x101, 0x8def, 0x101, 0x9732, 0x101, 0x9b6f, 0x101, 0x9dfa,
+ 0x101, 0x788c, 0x101, 0x797f, 0x101, 0x7da0, 0x101, 0x83c9,
+ 0x101, 0x9304, 0x101, 0x9e7f, 0x101, 0x8ad6, 0x101, 0x58df,
+ 0x101, 0x5f04, 0x101, 0x7c60, 0x101, 0x807e, 0x101, 0x7262,
+ 0x101, 0x78ca, 0x101, 0x8cc2, 0x101, 0x96f7, 0x101, 0x58d8,
+ 0x101, 0x5c62, 0x101, 0x6a13, 0x101, 0x6dda, 0x101, 0x6f0f,
+ 0x101, 0x7d2f, 0x101, 0x7e37, 0x101, 0x964b, 0x101, 0x52d2,
+ 0x101, 0x808b, 0x101, 0x51dc, 0x101, 0x51cc, 0x101, 0x7a1c,
+ 0x101, 0x7dbe, 0x101, 0x83f1, 0x101, 0x9675, 0x101, 0x8b80,
+ 0x101, 0x62cf, 0x101, 0x6a02, 0x101, 0x8afe, 0x101, 0x4e39,
+ 0x101, 0x5be7, 0x101, 0x6012, 0x101, 0x7387, 0x101, 0x7570,
+ 0x101, 0x5317, 0x101, 0x78fb, 0x101, 0x4fbf, 0x101, 0x5fa9,
+ 0x101, 0x4e0d, 0x101, 0x6ccc, 0x101, 0x6578, 0x101, 0x7d22,
+ 0x101, 0x53c3, 0x101, 0x585e, 0x101, 0x7701, 0x101, 0x8449,
+ 0x101, 0x8aaa, 0x101, 0x6bba, 0x101, 0x8fb0, 0x101, 0x6c88,
+ 0x101, 0x62fe, 0x101, 0x82e5, 0x101, 0x63a0, 0x101, 0x7565,
+ 0x101, 0x4eae, 0x101, 0x5169, 0x101, 0x51c9, 0x101, 0x6881,
+ 0x101, 0x7ce7, 0x101, 0x826f, 0x101, 0x8ad2, 0x101, 0x91cf,
+ 0x101, 0x52f5, 0x101, 0x5442, 0x101, 0x5973, 0x101, 0x5eec,
+ 0x101, 0x65c5, 0x101, 0x6ffe, 0x101, 0x792a, 0x101, 0x95ad,
+ 0x101, 0x9a6a, 0x101, 0x9e97, 0x101, 0x9ece, 0x101, 0x529b,
+ 0x101, 0x66c6, 0x101, 0x6b77, 0x101, 0x8f62, 0x101, 0x5e74,
+ 0x101, 0x6190, 0x101, 0x6200, 0x101, 0x649a, 0x101, 0x6f23,
+ 0x101, 0x7149, 0x101, 0x7489, 0x101, 0x79ca, 0x101, 0x7df4,
+ 0x101, 0x806f, 0x101, 0x8f26, 0x101, 0x84ee, 0x101, 0x9023,
+ 0x101, 0x934a, 0x101, 0x5217, 0x101, 0x52a3, 0x101, 0x54bd,
+ 0x101, 0x70c8, 0x101, 0x88c2, 0x101, 0x8aaa, 0x101, 0x5ec9,
+ 0x101, 0x5ff5, 0x101, 0x637b, 0x101, 0x6bae, 0x101, 0x7c3e,
+ 0x101, 0x7375, 0x101, 0x4ee4, 0x101, 0x56f9, 0x101, 0x5be7,
+ 0x101, 0x5dba, 0x101, 0x601c, 0x101, 0x73b2, 0x101, 0x7469,
+ 0x101, 0x7f9a, 0x101, 0x8046, 0x101, 0x9234, 0x101, 0x96f6,
+ 0x101, 0x9748, 0x101, 0x9818, 0x101, 0x4f8b, 0x101, 0x79ae,
+ 0x101, 0x91b4, 0x101, 0x96b8, 0x101, 0x60e1, 0x101, 0x4e86,
+ 0x101, 0x50da, 0x101, 0x5bee, 0x101, 0x5c3f, 0x101, 0x6599,
+ 0x101, 0x6a02, 0x101, 0x71ce, 0x101, 0x7642, 0x101, 0x84fc,
+ 0x101, 0x907c, 0x101, 0x9f8d, 0x101, 0x6688, 0x101, 0x962e,
+ 0x101, 0x5289, 0x101, 0x677b, 0x101, 0x67f3, 0x101, 0x6d41,
+ 0x101, 0x6e9c, 0x101, 0x7409, 0x101, 0x7559, 0x101, 0x786b,
+ 0x101, 0x7d10, 0x101, 0x985e, 0x101, 0x516d, 0x101, 0x622e,
+ 0x101, 0x9678, 0x101, 0x502b, 0x101, 0x5d19, 0x101, 0x6dea,
+ 0x101, 0x8f2a, 0x101, 0x5f8b, 0x101, 0x6144, 0x101, 0x6817,
+ 0x101, 0x7387, 0x101, 0x9686, 0x101, 0x5229, 0x101, 0x540f,
+ 0x101, 0x5c65, 0x101, 0x6613, 0x101, 0x674e, 0x101, 0x68a8,
+ 0x101, 0x6ce5, 0x101, 0x7406, 0x101, 0x75e2, 0x101, 0x7f79,
+ 0x101, 0x88cf, 0x101, 0x88e1, 0x101, 0x91cc, 0x101, 0x96e2,
+ 0x101, 0x533f, 0x101, 0x6eba, 0x101, 0x541d, 0x101, 0x71d0,
+ 0x101, 0x7498, 0x101, 0x85fa, 0x101, 0x96a3, 0x101, 0x9c57,
+ 0x101, 0x9e9f, 0x101, 0x6797, 0x101, 0x6dcb, 0x101, 0x81e8,
+ 0x101, 0x7acb, 0x101, 0x7b20, 0x101, 0x7c92, 0x101, 0x72c0,
+ 0x101, 0x7099, 0x101, 0x8b58, 0x101, 0x4ec0, 0x101, 0x8336,
+ 0x101, 0x523a, 0x101, 0x5207, 0x101, 0x5ea6, 0x101, 0x62d3,
+ 0x101, 0x7cd6, 0x101, 0x5b85, 0x101, 0x6d1e, 0x101, 0x66b4,
+ 0x101, 0x8f3b, 0x101, 0x884c, 0x101, 0x964d, 0x101, 0x898b,
+ 0x101, 0x5ed3, 0x101, 0x5140, 0x101, 0x55c0, 0x101, 0x585a,
+ 0x101, 0x6674, 0x101, 0x51de, 0x101, 0x732a, 0x101, 0x76ca,
+ 0x101, 0x793c, 0x101, 0x795e, 0x101, 0x7965, 0x101, 0x798f,
+ 0x101, 0x9756, 0x101, 0x7cbe, 0x101, 0x7fbd, 0x101, 0x8612,
+ 0x101, 0x8af8, 0x101, 0x9038, 0x101, 0x90fd, 0x101, 0x98ef,
+ 0x101, 0x98fc, 0x101, 0x9928, 0x101, 0x9db4, 0x101, 0x90de,
+ 0x101, 0x96b7, 0x101, 0x4fae, 0x101, 0x50e7, 0x101, 0x514d,
+ 0x101, 0x52c9, 0x101, 0x52e4, 0x101, 0x5351, 0x101, 0x559d,
+ 0x101, 0x5606, 0x101, 0x5668, 0x101, 0x5840, 0x101, 0x58a8,
+ 0x101, 0x5c64, 0x101, 0x5c6e, 0x101, 0x6094, 0x101, 0x6168,
+ 0x101, 0x618e, 0x101, 0x61f2, 0x101, 0x654f, 0x101, 0x65e2,
+ 0x101, 0x6691, 0x101, 0x6885, 0x101, 0x6d77, 0x101, 0x6e1a,
+ 0x101, 0x6f22, 0x101, 0x716e, 0x101, 0x722b, 0x101, 0x7422,
+ 0x101, 0x7891, 0x101, 0x793e, 0x101, 0x7949, 0x101, 0x7948,
+ 0x101, 0x7950, 0x101, 0x7956, 0x101, 0x795d, 0x101, 0x798d,
+ 0x101, 0x798e, 0x101, 0x7a40, 0x101, 0x7a81, 0x101, 0x7bc0,
+ 0x101, 0x7df4, 0x101, 0x7e09, 0x101, 0x7e41, 0x101, 0x7f72,
+ 0x101, 0x8005, 0x101, 0x81ed, 0x101, 0x8279, 0x101, 0x8279,
+ 0x101, 0x8457, 0x101, 0x8910, 0x101, 0x8996, 0x101, 0x8b01,
+ 0x101, 0x8b39, 0x101, 0x8cd3, 0x101, 0x8d08, 0x101, 0x8fb6,
+ 0x101, 0x9038, 0x101, 0x96e3, 0x101, 0x97ff, 0x101, 0x983b,
+ 0x101, 0x6075, 0x201, 0xd850, 0xdeee, 0x101, 0x8218, 0x101,
+ 0x4e26, 0x101, 0x51b5, 0x101, 0x5168, 0x101, 0x4f80, 0x101,
+ 0x5145, 0x101, 0x5180, 0x101, 0x52c7, 0x101, 0x52fa, 0x101,
+ 0x559d, 0x101, 0x5555, 0x101, 0x5599, 0x101, 0x55e2, 0x101,
+ 0x585a, 0x101, 0x58b3, 0x101, 0x5944, 0x101, 0x5954, 0x101,
+ 0x5a62, 0x101, 0x5b28, 0x101, 0x5ed2, 0x101, 0x5ed9, 0x101,
+ 0x5f69, 0x101, 0x5fad, 0x101, 0x60d8, 0x101, 0x614e, 0x101,
+ 0x6108, 0x101, 0x618e, 0x101, 0x6160, 0x101, 0x61f2, 0x101,
+ 0x6234, 0x101, 0x63c4, 0x101, 0x641c, 0x101, 0x6452, 0x101,
+ 0x6556, 0x101, 0x6674, 0x101, 0x6717, 0x101, 0x671b, 0x101,
+ 0x6756, 0x101, 0x6b79, 0x101, 0x6bba, 0x101, 0x6d41, 0x101,
+ 0x6edb, 0x101, 0x6ecb, 0x101, 0x6f22, 0x101, 0x701e, 0x101,
+ 0x716e, 0x101, 0x77a7, 0x101, 0x7235, 0x101, 0x72af, 0x101,
+ 0x732a, 0x101, 0x7471, 0x101, 0x7506, 0x101, 0x753b, 0x101,
+ 0x761d, 0x101, 0x761f, 0x101, 0x76ca, 0x101, 0x76db, 0x101,
+ 0x76f4, 0x101, 0x774a, 0x101, 0x7740, 0x101, 0x78cc, 0x101,
+ 0x7ab1, 0x101, 0x7bc0, 0x101, 0x7c7b, 0x101, 0x7d5b, 0x101,
+ 0x7df4, 0x101, 0x7f3e, 0x101, 0x8005, 0x101, 0x8352, 0x101,
+ 0x83ef, 0x101, 0x8779, 0x101, 0x8941, 0x101, 0x8986, 0x101,
+ 0x8996, 0x101, 0x8abf, 0x101, 0x8af8, 0x101, 0x8acb, 0x101,
+ 0x8b01, 0x101, 0x8afe, 0x101, 0x8aed, 0x101, 0x8b39, 0x101,
+ 0x8b8a, 0x101, 0x8d08, 0x101, 0x8f38, 0x101, 0x9072, 0x101,
+ 0x9199, 0x101, 0x9276, 0x101, 0x967c, 0x101, 0x96e3, 0x101,
+ 0x9756, 0x101, 0x97db, 0x101, 0x97ff, 0x101, 0x980b, 0x101,
+ 0x983b, 0x101, 0x9b12, 0x101, 0x9f9c, 0x201, 0xd84a, 0xdc4a,
+ 0x201, 0xd84a, 0xdc44, 0x201, 0xd84c, 0xdfd5, 0x101, 0x3b9d,
+ 0x101, 0x4018, 0x101, 0x4039, 0x201, 0xd854, 0xde49, 0x201,
+ 0xd857, 0xdcd0, 0x201, 0xd85f, 0xded3, 0x101, 0x9f43, 0x101,
+ 0x9f8e, 0x210, 0x66, 0x66, 0x210, 0x66, 0x69, 0x210,
+ 0x66, 0x6c, 0x310, 0x66, 0x66, 0x69, 0x310, 0x66,
+ 0x66, 0x6c, 0x210, 0x17f, 0x74, 0x210, 0x73, 0x74,
+ 0x210, 0x574, 0x576, 0x210, 0x574, 0x565, 0x210, 0x574,
+ 0x56b, 0x210, 0x57e, 0x576, 0x210, 0x574, 0x56d, 0x201,
+ 0x5d9, 0x5b4, 0x201, 0x5f2, 0x5b7, 0x102, 0x5e2, 0x102,
+ 0x5d0, 0x102, 0x5d3, 0x102, 0x5d4, 0x102, 0x5db, 0x102,
+ 0x5dc, 0x102, 0x5dd, 0x102, 0x5e8, 0x102, 0x5ea, 0x102,
+ 0x2b, 0x201, 0x5e9, 0x5c1, 0x201, 0x5e9, 0x5c2, 0x201,
+ 0xfb49, 0x5c1, 0x201, 0xfb49, 0x5c2, 0x201, 0x5d0, 0x5b7,
+ 0x201, 0x5d0, 0x5b8, 0x201, 0x5d0, 0x5bc, 0x201, 0x5d1,
+ 0x5bc, 0x201, 0x5d2, 0x5bc, 0x201, 0x5d3, 0x5bc, 0x201,
+ 0x5d4, 0x5bc, 0x201, 0x5d5, 0x5bc, 0x201, 0x5d6, 0x5bc,
+ 0x201, 0x5d8, 0x5bc, 0x201, 0x5d9, 0x5bc, 0x201, 0x5da,
+ 0x5bc, 0x201, 0x5db, 0x5bc, 0x201, 0x5dc, 0x5bc, 0x201,
+ 0x5de, 0x5bc, 0x201, 0x5e0, 0x5bc, 0x201, 0x5e1, 0x5bc,
+ 0x201, 0x5e3, 0x5bc, 0x201, 0x5e4, 0x5bc, 0x201, 0x5e6,
+ 0x5bc, 0x201, 0x5e7, 0x5bc, 0x201, 0x5e8, 0x5bc, 0x201,
+ 0x5e9, 0x5bc, 0x201, 0x5ea, 0x5bc, 0x201, 0x5d5, 0x5b9,
+ 0x201, 0x5d1, 0x5bf, 0x201, 0x5db, 0x5bf, 0x201, 0x5e4,
+ 0x5bf, 0x210, 0x5d0, 0x5dc, 0x107, 0x671, 0x106, 0x671,
+ 0x107, 0x67b, 0x106, 0x67b, 0x104, 0x67b, 0x105, 0x67b,
+ 0x107, 0x67e, 0x106, 0x67e, 0x104, 0x67e, 0x105, 0x67e,
+ 0x107, 0x680, 0x106, 0x680, 0x104, 0x680, 0x105, 0x680,
+ 0x107, 0x67a, 0x106, 0x67a, 0x104, 0x67a, 0x105, 0x67a,
+ 0x107, 0x67f, 0x106, 0x67f, 0x104, 0x67f, 0x105, 0x67f,
+ 0x107, 0x679, 0x106, 0x679, 0x104, 0x679, 0x105, 0x679,
+ 0x107, 0x6a4, 0x106, 0x6a4, 0x104, 0x6a4, 0x105, 0x6a4,
+ 0x107, 0x6a6, 0x106, 0x6a6, 0x104, 0x6a6, 0x105, 0x6a6,
+ 0x107, 0x684, 0x106, 0x684, 0x104, 0x684, 0x105, 0x684,
+ 0x107, 0x683, 0x106, 0x683, 0x104, 0x683, 0x105, 0x683,
+ 0x107, 0x686, 0x106, 0x686, 0x104, 0x686, 0x105, 0x686,
+ 0x107, 0x687, 0x106, 0x687, 0x104, 0x687, 0x105, 0x687,
+ 0x107, 0x68d, 0x106, 0x68d, 0x107, 0x68c, 0x106, 0x68c,
+ 0x107, 0x68e, 0x106, 0x68e, 0x107, 0x688, 0x106, 0x688,
+ 0x107, 0x698, 0x106, 0x698, 0x107, 0x691, 0x106, 0x691,
+ 0x107, 0x6a9, 0x106, 0x6a9, 0x104, 0x6a9, 0x105, 0x6a9,
+ 0x107, 0x6af, 0x106, 0x6af, 0x104, 0x6af, 0x105, 0x6af,
+ 0x107, 0x6b3, 0x106, 0x6b3, 0x104, 0x6b3, 0x105, 0x6b3,
+ 0x107, 0x6b1, 0x106, 0x6b1, 0x104, 0x6b1, 0x105, 0x6b1,
+ 0x107, 0x6ba, 0x106, 0x6ba, 0x107, 0x6bb, 0x106, 0x6bb,
+ 0x104, 0x6bb, 0x105, 0x6bb, 0x107, 0x6c0, 0x106, 0x6c0,
+ 0x107, 0x6c1, 0x106, 0x6c1, 0x104, 0x6c1, 0x105, 0x6c1,
+ 0x107, 0x6be, 0x106, 0x6be, 0x104, 0x6be, 0x105, 0x6be,
+ 0x107, 0x6d2, 0x106, 0x6d2, 0x107, 0x6d3, 0x106, 0x6d3,
+ 0x107, 0x6ad, 0x106, 0x6ad, 0x104, 0x6ad, 0x105, 0x6ad,
+ 0x107, 0x6c7, 0x106, 0x6c7, 0x107, 0x6c6, 0x106, 0x6c6,
+ 0x107, 0x6c8, 0x106, 0x6c8, 0x107, 0x677, 0x107, 0x6cb,
+ 0x106, 0x6cb, 0x107, 0x6c5, 0x106, 0x6c5, 0x107, 0x6c9,
+ 0x106, 0x6c9, 0x107, 0x6d0, 0x106, 0x6d0, 0x104, 0x6d0,
+ 0x105, 0x6d0, 0x104, 0x649, 0x105, 0x649, 0x207, 0x626,
+ 0x627, 0x206, 0x626, 0x627, 0x207, 0x626, 0x6d5, 0x206,
+ 0x626, 0x6d5, 0x207, 0x626, 0x648, 0x206, 0x626, 0x648,
+ 0x207, 0x626, 0x6c7, 0x206, 0x626, 0x6c7, 0x207, 0x626,
+ 0x6c6, 0x206, 0x626, 0x6c6, 0x207, 0x626, 0x6c8, 0x206,
+ 0x626, 0x6c8, 0x207, 0x626, 0x6d0, 0x206, 0x626, 0x6d0,
+ 0x204, 0x626, 0x6d0, 0x207, 0x626, 0x649, 0x206, 0x626,
+ 0x649, 0x204, 0x626, 0x649, 0x107, 0x6cc, 0x106, 0x6cc,
+ 0x104, 0x6cc, 0x105, 0x6cc, 0x207, 0x626, 0x62c, 0x207,
+ 0x626, 0x62d, 0x207, 0x626, 0x645, 0x207, 0x626, 0x649,
+ 0x207, 0x626, 0x64a, 0x207, 0x628, 0x62c, 0x207, 0x628,
+ 0x62d, 0x207, 0x628, 0x62e, 0x207, 0x628, 0x645, 0x207,
+ 0x628, 0x649, 0x207, 0x628, 0x64a, 0x207, 0x62a, 0x62c,
+ 0x207, 0x62a, 0x62d, 0x207, 0x62a, 0x62e, 0x207, 0x62a,
+ 0x645, 0x207, 0x62a, 0x649, 0x207, 0x62a, 0x64a, 0x207,
+ 0x62b, 0x62c, 0x207, 0x62b, 0x645, 0x207, 0x62b, 0x649,
+ 0x207, 0x62b, 0x64a, 0x207, 0x62c, 0x62d, 0x207, 0x62c,
+ 0x645, 0x207, 0x62d, 0x62c, 0x207, 0x62d, 0x645, 0x207,
+ 0x62e, 0x62c, 0x207, 0x62e, 0x62d, 0x207, 0x62e, 0x645,
+ 0x207, 0x633, 0x62c, 0x207, 0x633, 0x62d, 0x207, 0x633,
+ 0x62e, 0x207, 0x633, 0x645, 0x207, 0x635, 0x62d, 0x207,
+ 0x635, 0x645, 0x207, 0x636, 0x62c, 0x207, 0x636, 0x62d,
+ 0x207, 0x636, 0x62e, 0x207, 0x636, 0x645, 0x207, 0x637,
+ 0x62d, 0x207, 0x637, 0x645, 0x207, 0x638, 0x645, 0x207,
+ 0x639, 0x62c, 0x207, 0x639, 0x645, 0x207, 0x63a, 0x62c,
+ 0x207, 0x63a, 0x645, 0x207, 0x641, 0x62c, 0x207, 0x641,
+ 0x62d, 0x207, 0x641, 0x62e, 0x207, 0x641, 0x645, 0x207,
+ 0x641, 0x649, 0x207, 0x641, 0x64a, 0x207, 0x642, 0x62d,
+ 0x207, 0x642, 0x645, 0x207, 0x642, 0x649, 0x207, 0x642,
+ 0x64a, 0x207, 0x643, 0x627, 0x207, 0x643, 0x62c, 0x207,
+ 0x643, 0x62d, 0x207, 0x643, 0x62e, 0x207, 0x643, 0x644,
+ 0x207, 0x643, 0x645, 0x207, 0x643, 0x649, 0x207, 0x643,
+ 0x64a, 0x207, 0x644, 0x62c, 0x207, 0x644, 0x62d, 0x207,
+ 0x644, 0x62e, 0x207, 0x644, 0x645, 0x207, 0x644, 0x649,
+ 0x207, 0x644, 0x64a, 0x207, 0x645, 0x62c, 0x207, 0x645,
+ 0x62d, 0x207, 0x645, 0x62e, 0x207, 0x645, 0x645, 0x207,
+ 0x645, 0x649, 0x207, 0x645, 0x64a, 0x207, 0x646, 0x62c,
+ 0x207, 0x646, 0x62d, 0x207, 0x646, 0x62e, 0x207, 0x646,
+ 0x645, 0x207, 0x646, 0x649, 0x207, 0x646, 0x64a, 0x207,
+ 0x647, 0x62c, 0x207, 0x647, 0x645, 0x207, 0x647, 0x649,
+ 0x207, 0x647, 0x64a, 0x207, 0x64a, 0x62c, 0x207, 0x64a,
+ 0x62d, 0x207, 0x64a, 0x62e, 0x207, 0x64a, 0x645, 0x207,
+ 0x64a, 0x649, 0x207, 0x64a, 0x64a, 0x207, 0x630, 0x670,
+ 0x207, 0x631, 0x670, 0x207, 0x649, 0x670, 0x307, 0x20,
+ 0x64c, 0x651, 0x307, 0x20, 0x64d, 0x651, 0x307, 0x20,
+ 0x64e, 0x651, 0x307, 0x20, 0x64f, 0x651, 0x307, 0x20,
+ 0x650, 0x651, 0x307, 0x20, 0x651, 0x670, 0x206, 0x626,
+ 0x631, 0x206, 0x626, 0x632, 0x206, 0x626, 0x645, 0x206,
+ 0x626, 0x646, 0x206, 0x626, 0x649, 0x206, 0x626, 0x64a,
+ 0x206, 0x628, 0x631, 0x206, 0x628, 0x632, 0x206, 0x628,
+ 0x645, 0x206, 0x628, 0x646, 0x206, 0x628, 0x649, 0x206,
+ 0x628, 0x64a, 0x206, 0x62a, 0x631, 0x206, 0x62a, 0x632,
+ 0x206, 0x62a, 0x645, 0x206, 0x62a, 0x646, 0x206, 0x62a,
+ 0x649, 0x206, 0x62a, 0x64a, 0x206, 0x62b, 0x631, 0x206,
+ 0x62b, 0x632, 0x206, 0x62b, 0x645, 0x206, 0x62b, 0x646,
+ 0x206, 0x62b, 0x649, 0x206, 0x62b, 0x64a, 0x206, 0x641,
+ 0x649, 0x206, 0x641, 0x64a, 0x206, 0x642, 0x649, 0x206,
+ 0x642, 0x64a, 0x206, 0x643, 0x627, 0x206, 0x643, 0x644,
+ 0x206, 0x643, 0x645, 0x206, 0x643, 0x649, 0x206, 0x643,
+ 0x64a, 0x206, 0x644, 0x645, 0x206, 0x644, 0x649, 0x206,
+ 0x644, 0x64a, 0x206, 0x645, 0x627, 0x206, 0x645, 0x645,
+ 0x206, 0x646, 0x631, 0x206, 0x646, 0x632, 0x206, 0x646,
+ 0x645, 0x206, 0x646, 0x646, 0x206, 0x646, 0x649, 0x206,
+ 0x646, 0x64a, 0x206, 0x649, 0x670, 0x206, 0x64a, 0x631,
+ 0x206, 0x64a, 0x632, 0x206, 0x64a, 0x645, 0x206, 0x64a,
+ 0x646, 0x206, 0x64a, 0x649, 0x206, 0x64a, 0x64a, 0x204,
+ 0x626, 0x62c, 0x204, 0x626, 0x62d, 0x204, 0x626, 0x62e,
+ 0x204, 0x626, 0x645, 0x204, 0x626, 0x647, 0x204, 0x628,
+ 0x62c, 0x204, 0x628, 0x62d, 0x204, 0x628, 0x62e, 0x204,
+ 0x628, 0x645, 0x204, 0x628, 0x647, 0x204, 0x62a, 0x62c,
+ 0x204, 0x62a, 0x62d, 0x204, 0x62a, 0x62e, 0x204, 0x62a,
+ 0x645, 0x204, 0x62a, 0x647, 0x204, 0x62b, 0x645, 0x204,
+ 0x62c, 0x62d, 0x204, 0x62c, 0x645, 0x204, 0x62d, 0x62c,
+ 0x204, 0x62d, 0x645, 0x204, 0x62e, 0x62c, 0x204, 0x62e,
+ 0x645, 0x204, 0x633, 0x62c, 0x204, 0x633, 0x62d, 0x204,
+ 0x633, 0x62e, 0x204, 0x633, 0x645, 0x204, 0x635, 0x62d,
+ 0x204, 0x635, 0x62e, 0x204, 0x635, 0x645, 0x204, 0x636,
+ 0x62c, 0x204, 0x636, 0x62d, 0x204, 0x636, 0x62e, 0x204,
+ 0x636, 0x645, 0x204, 0x637, 0x62d, 0x204, 0x638, 0x645,
+ 0x204, 0x639, 0x62c, 0x204, 0x639, 0x645, 0x204, 0x63a,
+ 0x62c, 0x204, 0x63a, 0x645, 0x204, 0x641, 0x62c, 0x204,
+ 0x641, 0x62d, 0x204, 0x641, 0x62e, 0x204, 0x641, 0x645,
+ 0x204, 0x642, 0x62d, 0x204, 0x642, 0x645, 0x204, 0x643,
+ 0x62c, 0x204, 0x643, 0x62d, 0x204, 0x643, 0x62e, 0x204,
+ 0x643, 0x644, 0x204, 0x643, 0x645, 0x204, 0x644, 0x62c,
+ 0x204, 0x644, 0x62d, 0x204, 0x644, 0x62e, 0x204, 0x644,
+ 0x645, 0x204, 0x644, 0x647, 0x204, 0x645, 0x62c, 0x204,
+ 0x645, 0x62d, 0x204, 0x645, 0x62e, 0x204, 0x645, 0x645,
+ 0x204, 0x646, 0x62c, 0x204, 0x646, 0x62d, 0x204, 0x646,
+ 0x62e, 0x204, 0x646, 0x645, 0x204, 0x646, 0x647, 0x204,
+ 0x647, 0x62c, 0x204, 0x647, 0x645, 0x204, 0x647, 0x670,
+ 0x204, 0x64a, 0x62c, 0x204, 0x64a, 0x62d, 0x204, 0x64a,
+ 0x62e, 0x204, 0x64a, 0x645, 0x204, 0x64a, 0x647, 0x205,
+ 0x626, 0x645, 0x205, 0x626, 0x647, 0x205, 0x628, 0x645,
+ 0x205, 0x628, 0x647, 0x205, 0x62a, 0x645, 0x205, 0x62a,
+ 0x647, 0x205, 0x62b, 0x645, 0x205, 0x62b, 0x647, 0x205,
+ 0x633, 0x645, 0x205, 0x633, 0x647, 0x205, 0x634, 0x645,
+ 0x205, 0x634, 0x647, 0x205, 0x643, 0x644, 0x205, 0x643,
+ 0x645, 0x205, 0x644, 0x645, 0x205, 0x646, 0x645, 0x205,
+ 0x646, 0x647, 0x205, 0x64a, 0x645, 0x205, 0x64a, 0x647,
+ 0x305, 0x640, 0x64e, 0x651, 0x305, 0x640, 0x64f, 0x651,
+ 0x305, 0x640, 0x650, 0x651, 0x207, 0x637, 0x649, 0x207,
+ 0x637, 0x64a, 0x207, 0x639, 0x649, 0x207, 0x639, 0x64a,
+ 0x207, 0x63a, 0x649, 0x207, 0x63a, 0x64a, 0x207, 0x633,
+ 0x649, 0x207, 0x633, 0x64a, 0x207, 0x634, 0x649, 0x207,
+ 0x634, 0x64a, 0x207, 0x62d, 0x649, 0x207, 0x62d, 0x64a,
+ 0x207, 0x62c, 0x649, 0x207, 0x62c, 0x64a, 0x207, 0x62e,
+ 0x649, 0x207, 0x62e, 0x64a, 0x207, 0x635, 0x649, 0x207,
+ 0x635, 0x64a, 0x207, 0x636, 0x649, 0x207, 0x636, 0x64a,
+ 0x207, 0x634, 0x62c, 0x207, 0x634, 0x62d, 0x207, 0x634,
+ 0x62e, 0x207, 0x634, 0x645, 0x207, 0x634, 0x631, 0x207,
+ 0x633, 0x631, 0x207, 0x635, 0x631, 0x207, 0x636, 0x631,
+ 0x206, 0x637, 0x649, 0x206, 0x637, 0x64a, 0x206, 0x639,
+ 0x649, 0x206, 0x639, 0x64a, 0x206, 0x63a, 0x649, 0x206,
+ 0x63a, 0x64a, 0x206, 0x633, 0x649, 0x206, 0x633, 0x64a,
+ 0x206, 0x634, 0x649, 0x206, 0x634, 0x64a, 0x206, 0x62d,
+ 0x649, 0x206, 0x62d, 0x64a, 0x206, 0x62c, 0x649, 0x206,
+ 0x62c, 0x64a, 0x206, 0x62e, 0x649, 0x206, 0x62e, 0x64a,
+ 0x206, 0x635, 0x649, 0x206, 0x635, 0x64a, 0x206, 0x636,
+ 0x649, 0x206, 0x636, 0x64a, 0x206, 0x634, 0x62c, 0x206,
+ 0x634, 0x62d, 0x206, 0x634, 0x62e, 0x206, 0x634, 0x645,
+ 0x206, 0x634, 0x631, 0x206, 0x633, 0x631, 0x206, 0x635,
+ 0x631, 0x206, 0x636, 0x631, 0x204, 0x634, 0x62c, 0x204,
+ 0x634, 0x62d, 0x204, 0x634, 0x62e, 0x204, 0x634, 0x645,
+ 0x204, 0x633, 0x647, 0x204, 0x634, 0x647, 0x204, 0x637,
+ 0x645, 0x205, 0x633, 0x62c, 0x205, 0x633, 0x62d, 0x205,
+ 0x633, 0x62e, 0x205, 0x634, 0x62c, 0x205, 0x634, 0x62d,
+ 0x205, 0x634, 0x62e, 0x205, 0x637, 0x645, 0x205, 0x638,
+ 0x645, 0x206, 0x627, 0x64b, 0x207, 0x627, 0x64b, 0x304,
+ 0x62a, 0x62c, 0x645, 0x306, 0x62a, 0x62d, 0x62c, 0x304,
+ 0x62a, 0x62d, 0x62c, 0x304, 0x62a, 0x62d, 0x645, 0x304,
+ 0x62a, 0x62e, 0x645, 0x304, 0x62a, 0x645, 0x62c, 0x304,
+ 0x62a, 0x645, 0x62d, 0x304, 0x62a, 0x645, 0x62e, 0x306,
+ 0x62c, 0x645, 0x62d, 0x304, 0x62c, 0x645, 0x62d, 0x306,
+ 0x62d, 0x645, 0x64a, 0x306, 0x62d, 0x645, 0x649, 0x304,
+ 0x633, 0x62d, 0x62c, 0x304, 0x633, 0x62c, 0x62d, 0x306,
+ 0x633, 0x62c, 0x649, 0x306, 0x633, 0x645, 0x62d, 0x304,
+ 0x633, 0x645, 0x62d, 0x304, 0x633, 0x645, 0x62c, 0x306,
+ 0x633, 0x645, 0x645, 0x304, 0x633, 0x645, 0x645, 0x306,
+ 0x635, 0x62d, 0x62d, 0x304, 0x635, 0x62d, 0x62d, 0x306,
+ 0x635, 0x645, 0x645, 0x306, 0x634, 0x62d, 0x645, 0x304,
+ 0x634, 0x62d, 0x645, 0x306, 0x634, 0x62c, 0x64a, 0x306,
+ 0x634, 0x645, 0x62e, 0x304, 0x634, 0x645, 0x62e, 0x306,
+ 0x634, 0x645, 0x645, 0x304, 0x634, 0x645, 0x645, 0x306,
+ 0x636, 0x62d, 0x649, 0x306, 0x636, 0x62e, 0x645, 0x304,
+ 0x636, 0x62e, 0x645, 0x306, 0x637, 0x645, 0x62d, 0x304,
+ 0x637, 0x645, 0x62d, 0x304, 0x637, 0x645, 0x645, 0x306,
+ 0x637, 0x645, 0x64a, 0x306, 0x639, 0x62c, 0x645, 0x306,
+ 0x639, 0x645, 0x645, 0x304, 0x639, 0x645, 0x645, 0x306,
+ 0x639, 0x645, 0x649, 0x306, 0x63a, 0x645, 0x645, 0x306,
+ 0x63a, 0x645, 0x64a, 0x306, 0x63a, 0x645, 0x649, 0x306,
+ 0x641, 0x62e, 0x645, 0x304, 0x641, 0x62e, 0x645, 0x306,
+ 0x642, 0x645, 0x62d, 0x306, 0x642, 0x645, 0x645, 0x306,
+ 0x644, 0x62d, 0x645, 0x306, 0x644, 0x62d, 0x64a, 0x306,
+ 0x644, 0x62d, 0x649, 0x304, 0x644, 0x62c, 0x62c, 0x306,
+ 0x644, 0x62c, 0x62c, 0x306, 0x644, 0x62e, 0x645, 0x304,
+ 0x644, 0x62e, 0x645, 0x306, 0x644, 0x645, 0x62d, 0x304,
+ 0x644, 0x645, 0x62d, 0x304, 0x645, 0x62d, 0x62c, 0x304,
+ 0x645, 0x62d, 0x645, 0x306, 0x645, 0x62d, 0x64a, 0x304,
+ 0x645, 0x62c, 0x62d, 0x304, 0x645, 0x62c, 0x645, 0x304,
+ 0x645, 0x62e, 0x62c, 0x304, 0x645, 0x62e, 0x645, 0x304,
+ 0x645, 0x62c, 0x62e, 0x304, 0x647, 0x645, 0x62c, 0x304,
+ 0x647, 0x645, 0x645, 0x304, 0x646, 0x62d, 0x645, 0x306,
+ 0x646, 0x62d, 0x649, 0x306, 0x646, 0x62c, 0x645, 0x304,
+ 0x646, 0x62c, 0x645, 0x306, 0x646, 0x62c, 0x649, 0x306,
+ 0x646, 0x645, 0x64a, 0x306, 0x646, 0x645, 0x649, 0x306,
+ 0x64a, 0x645, 0x645, 0x304, 0x64a, 0x645, 0x645, 0x306,
+ 0x628, 0x62e, 0x64a, 0x306, 0x62a, 0x62c, 0x64a, 0x306,
+ 0x62a, 0x62c, 0x649, 0x306, 0x62a, 0x62e, 0x64a, 0x306,
+ 0x62a, 0x62e, 0x649, 0x306, 0x62a, 0x645, 0x64a, 0x306,
+ 0x62a, 0x645, 0x649, 0x306, 0x62c, 0x645, 0x64a, 0x306,
+ 0x62c, 0x62d, 0x649, 0x306, 0x62c, 0x645, 0x649, 0x306,
+ 0x633, 0x62e, 0x649, 0x306, 0x635, 0x62d, 0x64a, 0x306,
+ 0x634, 0x62d, 0x64a, 0x306, 0x636, 0x62d, 0x64a, 0x306,
+ 0x644, 0x62c, 0x64a, 0x306, 0x644, 0x645, 0x64a, 0x306,
+ 0x64a, 0x62d, 0x64a, 0x306, 0x64a, 0x62c, 0x64a, 0x306,
+ 0x64a, 0x645, 0x64a, 0x306, 0x645, 0x645, 0x64a, 0x306,
+ 0x642, 0x645, 0x64a, 0x306, 0x646, 0x62d, 0x64a, 0x304,
+ 0x642, 0x645, 0x62d, 0x304, 0x644, 0x62d, 0x645, 0x306,
+ 0x639, 0x645, 0x64a, 0x306, 0x643, 0x645, 0x64a, 0x304,
+ 0x646, 0x62c, 0x62d, 0x306, 0x645, 0x62e, 0x64a, 0x304,
+ 0x644, 0x62c, 0x645, 0x306, 0x643, 0x645, 0x645, 0x306,
+ 0x644, 0x62c, 0x645, 0x306, 0x646, 0x62c, 0x62d, 0x306,
+ 0x62c, 0x62d, 0x64a, 0x306, 0x62d, 0x62c, 0x64a, 0x306,
+ 0x645, 0x62c, 0x64a, 0x306, 0x641, 0x645, 0x64a, 0x306,
+ 0x628, 0x62d, 0x64a, 0x304, 0x643, 0x645, 0x645, 0x304,
+ 0x639, 0x62c, 0x645, 0x304, 0x635, 0x645, 0x645, 0x306,
+ 0x633, 0x62e, 0x64a, 0x306, 0x646, 0x62c, 0x64a, 0x307,
+ 0x635, 0x644, 0x6d2, 0x307, 0x642, 0x644, 0x6d2, 0x407,
+ 0x627, 0x644, 0x644, 0x647, 0x407, 0x627, 0x643, 0x628,
+ 0x631, 0x407, 0x645, 0x62d, 0x645, 0x62f, 0x407, 0x635,
+ 0x644, 0x639, 0x645, 0x407, 0x631, 0x633, 0x648, 0x644,
+ 0x407, 0x639, 0x644, 0x64a, 0x647, 0x407, 0x648, 0x633,
+ 0x644, 0x645, 0x307, 0x635, 0x644, 0x649, 0x1207, 0x635,
+ 0x644, 0x649, 0x20, 0x627, 0x644, 0x644, 0x647, 0x20,
+ 0x639, 0x644, 0x64a, 0x647, 0x20, 0x648, 0x633, 0x644,
+ 0x645, 0x807, 0x62c, 0x644, 0x20, 0x62c, 0x644, 0x627,
+ 0x644, 0x647, 0x407, 0x631, 0x6cc, 0x627, 0x644, 0x10b,
+ 0x2c, 0x10b, 0x3001, 0x10b, 0x3002, 0x10b, 0x3a, 0x10b,
+ 0x3b, 0x10b, 0x21, 0x10b, 0x3f, 0x10b, 0x3016, 0x10b,
+ 0x3017, 0x10b, 0x2026, 0x10b, 0x2025, 0x10b, 0x2014, 0x10b,
+ 0x2013, 0x10b, 0x5f, 0x10b, 0x5f, 0x10b, 0x28, 0x10b,
+ 0x29, 0x10b, 0x7b, 0x10b, 0x7d, 0x10b, 0x3014, 0x10b,
+ 0x3015, 0x10b, 0x3010, 0x10b, 0x3011, 0x10b, 0x300a, 0x10b,
+ 0x300b, 0x10b, 0x3008, 0x10b, 0x3009, 0x10b, 0x300c, 0x10b,
+ 0x300d, 0x10b, 0x300e, 0x10b, 0x300f, 0x10b, 0x5b, 0x10b,
+ 0x5d, 0x110, 0x203e, 0x110, 0x203e, 0x110, 0x203e, 0x110,
+ 0x203e, 0x110, 0x5f, 0x110, 0x5f, 0x110, 0x5f, 0x10e,
+ 0x2c, 0x10e, 0x3001, 0x10e, 0x2e, 0x10e, 0x3b, 0x10e,
+ 0x3a, 0x10e, 0x3f, 0x10e, 0x21, 0x10e, 0x2014, 0x10e,
+ 0x28, 0x10e, 0x29, 0x10e, 0x7b, 0x10e, 0x7d, 0x10e,
+ 0x3014, 0x10e, 0x3015, 0x10e, 0x23, 0x10e, 0x26, 0x10e,
+ 0x2a, 0x10e, 0x2b, 0x10e, 0x2d, 0x10e, 0x3c, 0x10e,
+ 0x3e, 0x10e, 0x3d, 0x10e, 0x5c, 0x10e, 0x24, 0x10e,
+ 0x25, 0x10e, 0x40, 0x207, 0x20, 0x64b, 0x205, 0x640,
+ 0x64b, 0x207, 0x20, 0x64c, 0x207, 0x20, 0x64d, 0x207,
+ 0x20, 0x64e, 0x205, 0x640, 0x64e, 0x207, 0x20, 0x64f,
+ 0x205, 0x640, 0x64f, 0x207, 0x20, 0x650, 0x205, 0x640,
+ 0x650, 0x207, 0x20, 0x651, 0x205, 0x640, 0x651, 0x207,
+ 0x20, 0x652, 0x205, 0x640, 0x652, 0x107, 0x621, 0x107,
+ 0x622, 0x106, 0x622, 0x107, 0x623, 0x106, 0x623, 0x107,
+ 0x624, 0x106, 0x624, 0x107, 0x625, 0x106, 0x625, 0x107,
+ 0x626, 0x106, 0x626, 0x104, 0x626, 0x105, 0x626, 0x107,
+ 0x627, 0x106, 0x627, 0x107, 0x628, 0x106, 0x628, 0x104,
+ 0x628, 0x105, 0x628, 0x107, 0x629, 0x106, 0x629, 0x107,
+ 0x62a, 0x106, 0x62a, 0x104, 0x62a, 0x105, 0x62a, 0x107,
+ 0x62b, 0x106, 0x62b, 0x104, 0x62b, 0x105, 0x62b, 0x107,
+ 0x62c, 0x106, 0x62c, 0x104, 0x62c, 0x105, 0x62c, 0x107,
+ 0x62d, 0x106, 0x62d, 0x104, 0x62d, 0x105, 0x62d, 0x107,
+ 0x62e, 0x106, 0x62e, 0x104, 0x62e, 0x105, 0x62e, 0x107,
+ 0x62f, 0x106, 0x62f, 0x107, 0x630, 0x106, 0x630, 0x107,
+ 0x631, 0x106, 0x631, 0x107, 0x632, 0x106, 0x632, 0x107,
+ 0x633, 0x106, 0x633, 0x104, 0x633, 0x105, 0x633, 0x107,
+ 0x634, 0x106, 0x634, 0x104, 0x634, 0x105, 0x634, 0x107,
+ 0x635, 0x106, 0x635, 0x104, 0x635, 0x105, 0x635, 0x107,
+ 0x636, 0x106, 0x636, 0x104, 0x636, 0x105, 0x636, 0x107,
+ 0x637, 0x106, 0x637, 0x104, 0x637, 0x105, 0x637, 0x107,
+ 0x638, 0x106, 0x638, 0x104, 0x638, 0x105, 0x638, 0x107,
+ 0x639, 0x106, 0x639, 0x104, 0x639, 0x105, 0x639, 0x107,
+ 0x63a, 0x106, 0x63a, 0x104, 0x63a, 0x105, 0x63a, 0x107,
+ 0x641, 0x106, 0x641, 0x104, 0x641, 0x105, 0x641, 0x107,
+ 0x642, 0x106, 0x642, 0x104, 0x642, 0x105, 0x642, 0x107,
+ 0x643, 0x106, 0x643, 0x104, 0x643, 0x105, 0x643, 0x107,
+ 0x644, 0x106, 0x644, 0x104, 0x644, 0x105, 0x644, 0x107,
+ 0x645, 0x106, 0x645, 0x104, 0x645, 0x105, 0x645, 0x107,
+ 0x646, 0x106, 0x646, 0x104, 0x646, 0x105, 0x646, 0x107,
+ 0x647, 0x106, 0x647, 0x104, 0x647, 0x105, 0x647, 0x107,
+ 0x648, 0x106, 0x648, 0x107, 0x649, 0x106, 0x649, 0x107,
+ 0x64a, 0x106, 0x64a, 0x104, 0x64a, 0x105, 0x64a, 0x207,
+ 0x644, 0x622, 0x206, 0x644, 0x622, 0x207, 0x644, 0x623,
+ 0x206, 0x644, 0x623, 0x207, 0x644, 0x625, 0x206, 0x644,
+ 0x625, 0x207, 0x644, 0x627, 0x206, 0x644, 0x627, 0x10c,
+ 0x21, 0x10c, 0x22, 0x10c, 0x23, 0x10c, 0x24, 0x10c,
+ 0x25, 0x10c, 0x26, 0x10c, 0x27, 0x10c, 0x28, 0x10c,
+ 0x29, 0x10c, 0x2a, 0x10c, 0x2b, 0x10c, 0x2c, 0x10c,
+ 0x2d, 0x10c, 0x2e, 0x10c, 0x2f, 0x10c, 0x30, 0x10c,
+ 0x31, 0x10c, 0x32, 0x10c, 0x33, 0x10c, 0x34, 0x10c,
+ 0x35, 0x10c, 0x36, 0x10c, 0x37, 0x10c, 0x38, 0x10c,
+ 0x39, 0x10c, 0x3a, 0x10c, 0x3b, 0x10c, 0x3c, 0x10c,
+ 0x3d, 0x10c, 0x3e, 0x10c, 0x3f, 0x10c, 0x40, 0x10c,
+ 0x41, 0x10c, 0x42, 0x10c, 0x43, 0x10c, 0x44, 0x10c,
+ 0x45, 0x10c, 0x46, 0x10c, 0x47, 0x10c, 0x48, 0x10c,
+ 0x49, 0x10c, 0x4a, 0x10c, 0x4b, 0x10c, 0x4c, 0x10c,
+ 0x4d, 0x10c, 0x4e, 0x10c, 0x4f, 0x10c, 0x50, 0x10c,
+ 0x51, 0x10c, 0x52, 0x10c, 0x53, 0x10c, 0x54, 0x10c,
+ 0x55, 0x10c, 0x56, 0x10c, 0x57, 0x10c, 0x58, 0x10c,
+ 0x59, 0x10c, 0x5a, 0x10c, 0x5b, 0x10c, 0x5c, 0x10c,
+ 0x5d, 0x10c, 0x5e, 0x10c, 0x5f, 0x10c, 0x60, 0x10c,
+ 0x61, 0x10c, 0x62, 0x10c, 0x63, 0x10c, 0x64, 0x10c,
+ 0x65, 0x10c, 0x66, 0x10c, 0x67, 0x10c, 0x68, 0x10c,
+ 0x69, 0x10c, 0x6a, 0x10c, 0x6b, 0x10c, 0x6c, 0x10c,
+ 0x6d, 0x10c, 0x6e, 0x10c, 0x6f, 0x10c, 0x70, 0x10c,
+ 0x71, 0x10c, 0x72, 0x10c, 0x73, 0x10c, 0x74, 0x10c,
+ 0x75, 0x10c, 0x76, 0x10c, 0x77, 0x10c, 0x78, 0x10c,
+ 0x79, 0x10c, 0x7a, 0x10c, 0x7b, 0x10c, 0x7c, 0x10c,
+ 0x7d, 0x10c, 0x7e, 0x10c, 0x2985, 0x10c, 0x2986, 0x10d,
+ 0x3002, 0x10d, 0x300c, 0x10d, 0x300d, 0x10d, 0x3001, 0x10d,
+ 0x30fb, 0x10d, 0x30f2, 0x10d, 0x30a1, 0x10d, 0x30a3, 0x10d,
+ 0x30a5, 0x10d, 0x30a7, 0x10d, 0x30a9, 0x10d, 0x30e3, 0x10d,
+ 0x30e5, 0x10d, 0x30e7, 0x10d, 0x30c3, 0x10d, 0x30fc, 0x10d,
+ 0x30a2, 0x10d, 0x30a4, 0x10d, 0x30a6, 0x10d, 0x30a8, 0x10d,
+ 0x30aa, 0x10d, 0x30ab, 0x10d, 0x30ad, 0x10d, 0x30af, 0x10d,
+ 0x30b1, 0x10d, 0x30b3, 0x10d, 0x30b5, 0x10d, 0x30b7, 0x10d,
+ 0x30b9, 0x10d, 0x30bb, 0x10d, 0x30bd, 0x10d, 0x30bf, 0x10d,
+ 0x30c1, 0x10d, 0x30c4, 0x10d, 0x30c6, 0x10d, 0x30c8, 0x10d,
+ 0x30ca, 0x10d, 0x30cb, 0x10d, 0x30cc, 0x10d, 0x30cd, 0x10d,
+ 0x30ce, 0x10d, 0x30cf, 0x10d, 0x30d2, 0x10d, 0x30d5, 0x10d,
+ 0x30d8, 0x10d, 0x30db, 0x10d, 0x30de, 0x10d, 0x30df, 0x10d,
+ 0x30e0, 0x10d, 0x30e1, 0x10d, 0x30e2, 0x10d, 0x30e4, 0x10d,
+ 0x30e6, 0x10d, 0x30e8, 0x10d, 0x30e9, 0x10d, 0x30ea, 0x10d,
+ 0x30eb, 0x10d, 0x30ec, 0x10d, 0x30ed, 0x10d, 0x30ef, 0x10d,
+ 0x30f3, 0x10d, 0x3099, 0x10d, 0x309a, 0x10d, 0x3164, 0x10d,
+ 0x3131, 0x10d, 0x3132, 0x10d, 0x3133, 0x10d, 0x3134, 0x10d,
+ 0x3135, 0x10d, 0x3136, 0x10d, 0x3137, 0x10d, 0x3138, 0x10d,
+ 0x3139, 0x10d, 0x313a, 0x10d, 0x313b, 0x10d, 0x313c, 0x10d,
+ 0x313d, 0x10d, 0x313e, 0x10d, 0x313f, 0x10d, 0x3140, 0x10d,
+ 0x3141, 0x10d, 0x3142, 0x10d, 0x3143, 0x10d, 0x3144, 0x10d,
+ 0x3145, 0x10d, 0x3146, 0x10d, 0x3147, 0x10d, 0x3148, 0x10d,
+ 0x3149, 0x10d, 0x314a, 0x10d, 0x314b, 0x10d, 0x314c, 0x10d,
+ 0x314d, 0x10d, 0x314e, 0x10d, 0x314f, 0x10d, 0x3150, 0x10d,
+ 0x3151, 0x10d, 0x3152, 0x10d, 0x3153, 0x10d, 0x3154, 0x10d,
+ 0x3155, 0x10d, 0x3156, 0x10d, 0x3157, 0x10d, 0x3158, 0x10d,
+ 0x3159, 0x10d, 0x315a, 0x10d, 0x315b, 0x10d, 0x315c, 0x10d,
+ 0x315d, 0x10d, 0x315e, 0x10d, 0x315f, 0x10d, 0x3160, 0x10d,
+ 0x3161, 0x10d, 0x3162, 0x10d, 0x3163, 0x10c, 0xa2, 0x10c,
+ 0xa3, 0x10c, 0xac, 0x10c, 0xaf, 0x10c, 0xa6, 0x10c,
+ 0xa5, 0x10c, 0x20a9, 0x10d, 0x2502, 0x10d, 0x2190, 0x10d,
+ 0x2191, 0x10d, 0x2192, 0x10d, 0x2193, 0x10d, 0x25a0, 0x10d,
+ 0x25cb, 0x401, 0xd804, 0xdc99, 0xd804, 0xdcba, 0x401, 0xd804,
+ 0xdc9b, 0xd804, 0xdcba, 0x401, 0xd804, 0xdca5, 0xd804, 0xdcba,
+ 0x401, 0xd804, 0xdd31, 0xd804, 0xdd27, 0x401, 0xd804, 0xdd32,
+ 0xd804, 0xdd27, 0x401, 0xd804, 0xdf47, 0xd804, 0xdf3e, 0x401,
+ 0xd804, 0xdf47, 0xd804, 0xdf57, 0x401, 0xd805, 0xdcb9, 0xd805,
+ 0xdcba, 0x401, 0xd805, 0xdcb9, 0xd805, 0xdcb0, 0x401, 0xd805,
+ 0xdcb9, 0xd805, 0xdcbd, 0x401, 0xd805, 0xddb8, 0xd805, 0xddaf,
+ 0x401, 0xd805, 0xddb9, 0xd805, 0xddaf, 0x401, 0xd834, 0xdd57,
+ 0xd834, 0xdd65, 0x401, 0xd834, 0xdd58, 0xd834, 0xdd65, 0x401,
+ 0xd834, 0xdd5f, 0xd834, 0xdd6e, 0x401, 0xd834, 0xdd5f, 0xd834,
+ 0xdd6f, 0x401, 0xd834, 0xdd5f, 0xd834, 0xdd70, 0x401, 0xd834,
+ 0xdd5f, 0xd834, 0xdd71, 0x401, 0xd834, 0xdd5f, 0xd834, 0xdd72,
+ 0x401, 0xd834, 0xddb9, 0xd834, 0xdd65, 0x401, 0xd834, 0xddba,
+ 0xd834, 0xdd65, 0x401, 0xd834, 0xddbb, 0xd834, 0xdd6e, 0x401,
+ 0xd834, 0xddbc, 0xd834, 0xdd6e, 0x401, 0xd834, 0xddbb, 0xd834,
+ 0xdd6f, 0x401, 0xd834, 0xddbc, 0xd834, 0xdd6f, 0x102, 0x41,
+ 0x102, 0x42, 0x102, 0x43, 0x102, 0x44, 0x102, 0x45,
+ 0x102, 0x46, 0x102, 0x47, 0x102, 0x48, 0x102, 0x49,
+ 0x102, 0x4a, 0x102, 0x4b, 0x102, 0x4c, 0x102, 0x4d,
+ 0x102, 0x4e, 0x102, 0x4f, 0x102, 0x50, 0x102, 0x51,
+ 0x102, 0x52, 0x102, 0x53, 0x102, 0x54, 0x102, 0x55,
+ 0x102, 0x56, 0x102, 0x57, 0x102, 0x58, 0x102, 0x59,
+ 0x102, 0x5a, 0x102, 0x61, 0x102, 0x62, 0x102, 0x63,
+ 0x102, 0x64, 0x102, 0x65, 0x102, 0x66, 0x102, 0x67,
+ 0x102, 0x68, 0x102, 0x69, 0x102, 0x6a, 0x102, 0x6b,
+ 0x102, 0x6c, 0x102, 0x6d, 0x102, 0x6e, 0x102, 0x6f,
+ 0x102, 0x70, 0x102, 0x71, 0x102, 0x72, 0x102, 0x73,
+ 0x102, 0x74, 0x102, 0x75, 0x102, 0x76, 0x102, 0x77,
+ 0x102, 0x78, 0x102, 0x79, 0x102, 0x7a, 0x102, 0x41,
+ 0x102, 0x42, 0x102, 0x43, 0x102, 0x44, 0x102, 0x45,
+ 0x102, 0x46, 0x102, 0x47, 0x102, 0x48, 0x102, 0x49,
+ 0x102, 0x4a, 0x102, 0x4b, 0x102, 0x4c, 0x102, 0x4d,
+ 0x102, 0x4e, 0x102, 0x4f, 0x102, 0x50, 0x102, 0x51,
+ 0x102, 0x52, 0x102, 0x53, 0x102, 0x54, 0x102, 0x55,
+ 0x102, 0x56, 0x102, 0x57, 0x102, 0x58, 0x102, 0x59,
+ 0x102, 0x5a, 0x102, 0x61, 0x102, 0x62, 0x102, 0x63,
+ 0x102, 0x64, 0x102, 0x65, 0x102, 0x66, 0x102, 0x67,
+ 0x102, 0x69, 0x102, 0x6a, 0x102, 0x6b, 0x102, 0x6c,
+ 0x102, 0x6d, 0x102, 0x6e, 0x102, 0x6f, 0x102, 0x70,
+ 0x102, 0x71, 0x102, 0x72, 0x102, 0x73, 0x102, 0x74,
+ 0x102, 0x75, 0x102, 0x76, 0x102, 0x77, 0x102, 0x78,
+ 0x102, 0x79, 0x102, 0x7a, 0x102, 0x41, 0x102, 0x42,
+ 0x102, 0x43, 0x102, 0x44, 0x102, 0x45, 0x102, 0x46,
+ 0x102, 0x47, 0x102, 0x48, 0x102, 0x49, 0x102, 0x4a,
+ 0x102, 0x4b, 0x102, 0x4c, 0x102, 0x4d, 0x102, 0x4e,
+ 0x102, 0x4f, 0x102, 0x50, 0x102, 0x51, 0x102, 0x52,
+ 0x102, 0x53, 0x102, 0x54, 0x102, 0x55, 0x102, 0x56,
+ 0x102, 0x57, 0x102, 0x58, 0x102, 0x59, 0x102, 0x5a,
+ 0x102, 0x61, 0x102, 0x62, 0x102, 0x63, 0x102, 0x64,
+ 0x102, 0x65, 0x102, 0x66, 0x102, 0x67, 0x102, 0x68,
+ 0x102, 0x69, 0x102, 0x6a, 0x102, 0x6b, 0x102, 0x6c,
+ 0x102, 0x6d, 0x102, 0x6e, 0x102, 0x6f, 0x102, 0x70,
+ 0x102, 0x71, 0x102, 0x72, 0x102, 0x73, 0x102, 0x74,
+ 0x102, 0x75, 0x102, 0x76, 0x102, 0x77, 0x102, 0x78,
+ 0x102, 0x79, 0x102, 0x7a, 0x102, 0x41, 0x102, 0x43,
+ 0x102, 0x44, 0x102, 0x47, 0x102, 0x4a, 0x102, 0x4b,
+ 0x102, 0x4e, 0x102, 0x4f, 0x102, 0x50, 0x102, 0x51,
+ 0x102, 0x53, 0x102, 0x54, 0x102, 0x55, 0x102, 0x56,
+ 0x102, 0x57, 0x102, 0x58, 0x102, 0x59, 0x102, 0x5a,
+ 0x102, 0x61, 0x102, 0x62, 0x102, 0x63, 0x102, 0x64,
+ 0x102, 0x66, 0x102, 0x68, 0x102, 0x69, 0x102, 0x6a,
+ 0x102, 0x6b, 0x102, 0x6c, 0x102, 0x6d, 0x102, 0x6e,
+ 0x102, 0x70, 0x102, 0x71, 0x102, 0x72, 0x102, 0x73,
+ 0x102, 0x74, 0x102, 0x75, 0x102, 0x76, 0x102, 0x77,
+ 0x102, 0x78, 0x102, 0x79, 0x102, 0x7a, 0x102, 0x41,
+ 0x102, 0x42, 0x102, 0x43, 0x102, 0x44, 0x102, 0x45,
+ 0x102, 0x46, 0x102, 0x47, 0x102, 0x48, 0x102, 0x49,
+ 0x102, 0x4a, 0x102, 0x4b, 0x102, 0x4c, 0x102, 0x4d,
+ 0x102, 0x4e, 0x102, 0x4f, 0x102, 0x50, 0x102, 0x51,
+ 0x102, 0x52, 0x102, 0x53, 0x102, 0x54, 0x102, 0x55,
+ 0x102, 0x56, 0x102, 0x57, 0x102, 0x58, 0x102, 0x59,
+ 0x102, 0x5a, 0x102, 0x61, 0x102, 0x62, 0x102, 0x63,
+ 0x102, 0x64, 0x102, 0x65, 0x102, 0x66, 0x102, 0x67,
+ 0x102, 0x68, 0x102, 0x69, 0x102, 0x6a, 0x102, 0x6b,
+ 0x102, 0x6c, 0x102, 0x6d, 0x102, 0x6e, 0x102, 0x6f,
+ 0x102, 0x70, 0x102, 0x71, 0x102, 0x72, 0x102, 0x73,
+ 0x102, 0x74, 0x102, 0x75, 0x102, 0x76, 0x102, 0x77,
+ 0x102, 0x78, 0x102, 0x79, 0x102, 0x7a, 0x102, 0x41,
+ 0x102, 0x42, 0x102, 0x44, 0x102, 0x45, 0x102, 0x46,
+ 0x102, 0x47, 0x102, 0x4a, 0x102, 0x4b, 0x102, 0x4c,
+ 0x102, 0x4d, 0x102, 0x4e, 0x102, 0x4f, 0x102, 0x50,
+ 0x102, 0x51, 0x102, 0x53, 0x102, 0x54, 0x102, 0x55,
+ 0x102, 0x56, 0x102, 0x57, 0x102, 0x58, 0x102, 0x59,
+ 0x102, 0x61, 0x102, 0x62, 0x102, 0x63, 0x102, 0x64,
+ 0x102, 0x65, 0x102, 0x66, 0x102, 0x67, 0x102, 0x68,
+ 0x102, 0x69, 0x102, 0x6a, 0x102, 0x6b, 0x102, 0x6c,
+ 0x102, 0x6d, 0x102, 0x6e, 0x102, 0x6f, 0x102, 0x70,
+ 0x102, 0x71, 0x102, 0x72, 0x102, 0x73, 0x102, 0x74,
+ 0x102, 0x75, 0x102, 0x76, 0x102, 0x77, 0x102, 0x78,
+ 0x102, 0x79, 0x102, 0x7a, 0x102, 0x41, 0x102, 0x42,
+ 0x102, 0x44, 0x102, 0x45, 0x102, 0x46, 0x102, 0x47,
+ 0x102, 0x49, 0x102, 0x4a, 0x102, 0x4b, 0x102, 0x4c,
+ 0x102, 0x4d, 0x102, 0x4f, 0x102, 0x53, 0x102, 0x54,
+ 0x102, 0x55, 0x102, 0x56, 0x102, 0x57, 0x102, 0x58,
+ 0x102, 0x59, 0x102, 0x61, 0x102, 0x62, 0x102, 0x63,
+ 0x102, 0x64, 0x102, 0x65, 0x102, 0x66, 0x102, 0x67,
+ 0x102, 0x68, 0x102, 0x69, 0x102, 0x6a, 0x102, 0x6b,
+ 0x102, 0x6c, 0x102, 0x6d, 0x102, 0x6e, 0x102, 0x6f,
+ 0x102, 0x70, 0x102, 0x71, 0x102, 0x72, 0x102, 0x73,
+ 0x102, 0x74, 0x102, 0x75, 0x102, 0x76, 0x102, 0x77,
+ 0x102, 0x78, 0x102, 0x79, 0x102, 0x7a, 0x102, 0x41,
+ 0x102, 0x42, 0x102, 0x43, 0x102, 0x44, 0x102, 0x45,
+ 0x102, 0x46, 0x102, 0x47, 0x102, 0x48, 0x102, 0x49,
+ 0x102, 0x4a, 0x102, 0x4b, 0x102, 0x4c, 0x102, 0x4d,
+ 0x102, 0x4e, 0x102, 0x4f, 0x102, 0x50, 0x102, 0x51,
+ 0x102, 0x52, 0x102, 0x53, 0x102, 0x54, 0x102, 0x55,
+ 0x102, 0x56, 0x102, 0x57, 0x102, 0x58, 0x102, 0x59,
+ 0x102, 0x5a, 0x102, 0x61, 0x102, 0x62, 0x102, 0x63,
+ 0x102, 0x64, 0x102, 0x65, 0x102, 0x66, 0x102, 0x67,
+ 0x102, 0x68, 0x102, 0x69, 0x102, 0x6a, 0x102, 0x6b,
+ 0x102, 0x6c, 0x102, 0x6d, 0x102, 0x6e, 0x102, 0x6f,
+ 0x102, 0x70, 0x102, 0x71, 0x102, 0x72, 0x102, 0x73,
+ 0x102, 0x74, 0x102, 0x75, 0x102, 0x76, 0x102, 0x77,
+ 0x102, 0x78, 0x102, 0x79, 0x102, 0x7a, 0x102, 0x41,
+ 0x102, 0x42, 0x102, 0x43, 0x102, 0x44, 0x102, 0x45,
+ 0x102, 0x46, 0x102, 0x47, 0x102, 0x48, 0x102, 0x49,
+ 0x102, 0x4a, 0x102, 0x4b, 0x102, 0x4c, 0x102, 0x4d,
+ 0x102, 0x4e, 0x102, 0x4f, 0x102, 0x50, 0x102, 0x51,
+ 0x102, 0x52, 0x102, 0x53, 0x102, 0x54, 0x102, 0x55,
+ 0x102, 0x56, 0x102, 0x57, 0x102, 0x58, 0x102, 0x59,
+ 0x102, 0x5a, 0x102, 0x61, 0x102, 0x62, 0x102, 0x63,
+ 0x102, 0x64, 0x102, 0x65, 0x102, 0x66, 0x102, 0x67,
+ 0x102, 0x68, 0x102, 0x69, 0x102, 0x6a, 0x102, 0x6b,
+ 0x102, 0x6c, 0x102, 0x6d, 0x102, 0x6e, 0x102, 0x6f,
+ 0x102, 0x70, 0x102, 0x71, 0x102, 0x72, 0x102, 0x73,
+ 0x102, 0x74, 0x102, 0x75, 0x102, 0x76, 0x102, 0x77,
+ 0x102, 0x78, 0x102, 0x79, 0x102, 0x7a, 0x102, 0x41,
+ 0x102, 0x42, 0x102, 0x43, 0x102, 0x44, 0x102, 0x45,
+ 0x102, 0x46, 0x102, 0x47, 0x102, 0x48, 0x102, 0x49,
+ 0x102, 0x4a, 0x102, 0x4b, 0x102, 0x4c, 0x102, 0x4d,
+ 0x102, 0x4e, 0x102, 0x4f, 0x102, 0x50, 0x102, 0x51,
+ 0x102, 0x52, 0x102, 0x53, 0x102, 0x54, 0x102, 0x55,
+ 0x102, 0x56, 0x102, 0x57, 0x102, 0x58, 0x102, 0x59,
+ 0x102, 0x5a, 0x102, 0x61, 0x102, 0x62, 0x102, 0x63,
+ 0x102, 0x64, 0x102, 0x65, 0x102, 0x66, 0x102, 0x67,
+ 0x102, 0x68, 0x102, 0x69, 0x102, 0x6a, 0x102, 0x6b,
+ 0x102, 0x6c, 0x102, 0x6d, 0x102, 0x6e, 0x102, 0x6f,
+ 0x102, 0x70, 0x102, 0x71, 0x102, 0x72, 0x102, 0x73,
+ 0x102, 0x74, 0x102, 0x75, 0x102, 0x76, 0x102, 0x77,
+ 0x102, 0x78, 0x102, 0x79, 0x102, 0x7a, 0x102, 0x41,
+ 0x102, 0x42, 0x102, 0x43, 0x102, 0x44, 0x102, 0x45,
+ 0x102, 0x46, 0x102, 0x47, 0x102, 0x48, 0x102, 0x49,
+ 0x102, 0x4a, 0x102, 0x4b, 0x102, 0x4c, 0x102, 0x4d,
+ 0x102, 0x4e, 0x102, 0x4f, 0x102, 0x50, 0x102, 0x51,
+ 0x102, 0x52, 0x102, 0x53, 0x102, 0x54, 0x102, 0x55,
+ 0x102, 0x56, 0x102, 0x57, 0x102, 0x58, 0x102, 0x59,
+ 0x102, 0x5a, 0x102, 0x61, 0x102, 0x62, 0x102, 0x63,
+ 0x102, 0x64, 0x102, 0x65, 0x102, 0x66, 0x102, 0x67,
+ 0x102, 0x68, 0x102, 0x69, 0x102, 0x6a, 0x102, 0x6b,
+ 0x102, 0x6c, 0x102, 0x6d, 0x102, 0x6e, 0x102, 0x6f,
+ 0x102, 0x70, 0x102, 0x71, 0x102, 0x72, 0x102, 0x73,
+ 0x102, 0x74, 0x102, 0x75, 0x102, 0x76, 0x102, 0x77,
+ 0x102, 0x78, 0x102, 0x79, 0x102, 0x7a, 0x102, 0x41,
+ 0x102, 0x42, 0x102, 0x43, 0x102, 0x44, 0x102, 0x45,
+ 0x102, 0x46, 0x102, 0x47, 0x102, 0x48, 0x102, 0x49,
+ 0x102, 0x4a, 0x102, 0x4b, 0x102, 0x4c, 0x102, 0x4d,
+ 0x102, 0x4e, 0x102, 0x4f, 0x102, 0x50, 0x102, 0x51,
+ 0x102, 0x52, 0x102, 0x53, 0x102, 0x54, 0x102, 0x55,
+ 0x102, 0x56, 0x102, 0x57, 0x102, 0x58, 0x102, 0x59,
+ 0x102, 0x5a, 0x102, 0x61, 0x102, 0x62, 0x102, 0x63,
+ 0x102, 0x64, 0x102, 0x65, 0x102, 0x66, 0x102, 0x67,
+ 0x102, 0x68, 0x102, 0x69, 0x102, 0x6a, 0x102, 0x6b,
+ 0x102, 0x6c, 0x102, 0x6d, 0x102, 0x6e, 0x102, 0x6f,
+ 0x102, 0x70, 0x102, 0x71, 0x102, 0x72, 0x102, 0x73,
+ 0x102, 0x74, 0x102, 0x75, 0x102, 0x76, 0x102, 0x77,
+ 0x102, 0x78, 0x102, 0x79, 0x102, 0x7a, 0x102, 0x41,
+ 0x102, 0x42, 0x102, 0x43, 0x102, 0x44, 0x102, 0x45,
+ 0x102, 0x46, 0x102, 0x47, 0x102, 0x48, 0x102, 0x49,
+ 0x102, 0x4a, 0x102, 0x4b, 0x102, 0x4c, 0x102, 0x4d,
+ 0x102, 0x4e, 0x102, 0x4f, 0x102, 0x50, 0x102, 0x51,
+ 0x102, 0x52, 0x102, 0x53, 0x102, 0x54, 0x102, 0x55,
+ 0x102, 0x56, 0x102, 0x57, 0x102, 0x58, 0x102, 0x59,
+ 0x102, 0x5a, 0x102, 0x61, 0x102, 0x62, 0x102, 0x63,
+ 0x102, 0x64, 0x102, 0x65, 0x102, 0x66, 0x102, 0x67,
+ 0x102, 0x68, 0x102, 0x69, 0x102, 0x6a, 0x102, 0x6b,
+ 0x102, 0x6c, 0x102, 0x6d, 0x102, 0x6e, 0x102, 0x6f,
+ 0x102, 0x70, 0x102, 0x71, 0x102, 0x72, 0x102, 0x73,
+ 0x102, 0x74, 0x102, 0x75, 0x102, 0x76, 0x102, 0x77,
+ 0x102, 0x78, 0x102, 0x79, 0x102, 0x7a, 0x102, 0x131,
+ 0x102, 0x237, 0x102, 0x391, 0x102, 0x392, 0x102, 0x393,
+ 0x102, 0x394, 0x102, 0x395, 0x102, 0x396, 0x102, 0x397,
+ 0x102, 0x398, 0x102, 0x399, 0x102, 0x39a, 0x102, 0x39b,
+ 0x102, 0x39c, 0x102, 0x39d, 0x102, 0x39e, 0x102, 0x39f,
+ 0x102, 0x3a0, 0x102, 0x3a1, 0x102, 0x3f4, 0x102, 0x3a3,
+ 0x102, 0x3a4, 0x102, 0x3a5, 0x102, 0x3a6, 0x102, 0x3a7,
+ 0x102, 0x3a8, 0x102, 0x3a9, 0x102, 0x2207, 0x102, 0x3b1,
+ 0x102, 0x3b2, 0x102, 0x3b3, 0x102, 0x3b4, 0x102, 0x3b5,
+ 0x102, 0x3b6, 0x102, 0x3b7, 0x102, 0x3b8, 0x102, 0x3b9,
+ 0x102, 0x3ba, 0x102, 0x3bb, 0x102, 0x3bc, 0x102, 0x3bd,
+ 0x102, 0x3be, 0x102, 0x3bf, 0x102, 0x3c0, 0x102, 0x3c1,
+ 0x102, 0x3c2, 0x102, 0x3c3, 0x102, 0x3c4, 0x102, 0x3c5,
+ 0x102, 0x3c6, 0x102, 0x3c7, 0x102, 0x3c8, 0x102, 0x3c9,
+ 0x102, 0x2202, 0x102, 0x3f5, 0x102, 0x3d1, 0x102, 0x3f0,
+ 0x102, 0x3d5, 0x102, 0x3f1, 0x102, 0x3d6, 0x102, 0x391,
+ 0x102, 0x392, 0x102, 0x393, 0x102, 0x394, 0x102, 0x395,
+ 0x102, 0x396, 0x102, 0x397, 0x102, 0x398, 0x102, 0x399,
+ 0x102, 0x39a, 0x102, 0x39b, 0x102, 0x39c, 0x102, 0x39d,
+ 0x102, 0x39e, 0x102, 0x39f, 0x102, 0x3a0, 0x102, 0x3a1,
+ 0x102, 0x3f4, 0x102, 0x3a3, 0x102, 0x3a4, 0x102, 0x3a5,
+ 0x102, 0x3a6, 0x102, 0x3a7, 0x102, 0x3a8, 0x102, 0x3a9,
+ 0x102, 0x2207, 0x102, 0x3b1, 0x102, 0x3b2, 0x102, 0x3b3,
+ 0x102, 0x3b4, 0x102, 0x3b5, 0x102, 0x3b6, 0x102, 0x3b7,
+ 0x102, 0x3b8, 0x102, 0x3b9, 0x102, 0x3ba, 0x102, 0x3bb,
+ 0x102, 0x3bc, 0x102, 0x3bd, 0x102, 0x3be, 0x102, 0x3bf,
+ 0x102, 0x3c0, 0x102, 0x3c1, 0x102, 0x3c2, 0x102, 0x3c3,
+ 0x102, 0x3c4, 0x102, 0x3c5, 0x102, 0x3c6, 0x102, 0x3c7,
+ 0x102, 0x3c8, 0x102, 0x3c9, 0x102, 0x2202, 0x102, 0x3f5,
+ 0x102, 0x3d1, 0x102, 0x3f0, 0x102, 0x3d5, 0x102, 0x3f1,
+ 0x102, 0x3d6, 0x102, 0x391, 0x102, 0x392, 0x102, 0x393,
+ 0x102, 0x394, 0x102, 0x395, 0x102, 0x396, 0x102, 0x397,
+ 0x102, 0x398, 0x102, 0x399, 0x102, 0x39a, 0x102, 0x39b,
+ 0x102, 0x39c, 0x102, 0x39d, 0x102, 0x39e, 0x102, 0x39f,
+ 0x102, 0x3a0, 0x102, 0x3a1, 0x102, 0x3f4, 0x102, 0x3a3,
+ 0x102, 0x3a4, 0x102, 0x3a5, 0x102, 0x3a6, 0x102, 0x3a7,
+ 0x102, 0x3a8, 0x102, 0x3a9, 0x102, 0x2207, 0x102, 0x3b1,
+ 0x102, 0x3b2, 0x102, 0x3b3, 0x102, 0x3b4, 0x102, 0x3b5,
+ 0x102, 0x3b6, 0x102, 0x3b7, 0x102, 0x3b8, 0x102, 0x3b9,
+ 0x102, 0x3ba, 0x102, 0x3bb, 0x102, 0x3bc, 0x102, 0x3bd,
+ 0x102, 0x3be, 0x102, 0x3bf, 0x102, 0x3c0, 0x102, 0x3c1,
+ 0x102, 0x3c2, 0x102, 0x3c3, 0x102, 0x3c4, 0x102, 0x3c5,
+ 0x102, 0x3c6, 0x102, 0x3c7, 0x102, 0x3c8, 0x102, 0x3c9,
+ 0x102, 0x2202, 0x102, 0x3f5, 0x102, 0x3d1, 0x102, 0x3f0,
+ 0x102, 0x3d5, 0x102, 0x3f1, 0x102, 0x3d6, 0x102, 0x391,
+ 0x102, 0x392, 0x102, 0x393, 0x102, 0x394, 0x102, 0x395,
+ 0x102, 0x396, 0x102, 0x397, 0x102, 0x398, 0x102, 0x399,
+ 0x102, 0x39a, 0x102, 0x39b, 0x102, 0x39c, 0x102, 0x39d,
+ 0x102, 0x39e, 0x102, 0x39f, 0x102, 0x3a0, 0x102, 0x3a1,
+ 0x102, 0x3f4, 0x102, 0x3a3, 0x102, 0x3a4, 0x102, 0x3a5,
+ 0x102, 0x3a6, 0x102, 0x3a7, 0x102, 0x3a8, 0x102, 0x3a9,
+ 0x102, 0x2207, 0x102, 0x3b1, 0x102, 0x3b2, 0x102, 0x3b3,
+ 0x102, 0x3b4, 0x102, 0x3b5, 0x102, 0x3b6, 0x102, 0x3b7,
+ 0x102, 0x3b8, 0x102, 0x3b9, 0x102, 0x3ba, 0x102, 0x3bb,
+ 0x102, 0x3bc, 0x102, 0x3bd, 0x102, 0x3be, 0x102, 0x3bf,
+ 0x102, 0x3c0, 0x102, 0x3c1, 0x102, 0x3c2, 0x102, 0x3c3,
+ 0x102, 0x3c4, 0x102, 0x3c5, 0x102, 0x3c6, 0x102, 0x3c7,
+ 0x102, 0x3c8, 0x102, 0x3c9, 0x102, 0x2202, 0x102, 0x3f5,
+ 0x102, 0x3d1, 0x102, 0x3f0, 0x102, 0x3d5, 0x102, 0x3f1,
+ 0x102, 0x3d6, 0x102, 0x391, 0x102, 0x392, 0x102, 0x393,
+ 0x102, 0x394, 0x102, 0x395, 0x102, 0x396, 0x102, 0x397,
+ 0x102, 0x398, 0x102, 0x399, 0x102, 0x39a, 0x102, 0x39b,
+ 0x102, 0x39c, 0x102, 0x39d, 0x102, 0x39e, 0x102, 0x39f,
+ 0x102, 0x3a0, 0x102, 0x3a1, 0x102, 0x3f4, 0x102, 0x3a3,
+ 0x102, 0x3a4, 0x102, 0x3a5, 0x102, 0x3a6, 0x102, 0x3a7,
+ 0x102, 0x3a8, 0x102, 0x3a9, 0x102, 0x2207, 0x102, 0x3b1,
+ 0x102, 0x3b2, 0x102, 0x3b3, 0x102, 0x3b4, 0x102, 0x3b5,
+ 0x102, 0x3b6, 0x102, 0x3b7, 0x102, 0x3b8, 0x102, 0x3b9,
+ 0x102, 0x3ba, 0x102, 0x3bb, 0x102, 0x3bc, 0x102, 0x3bd,
+ 0x102, 0x3be, 0x102, 0x3bf, 0x102, 0x3c0, 0x102, 0x3c1,
+ 0x102, 0x3c2, 0x102, 0x3c3, 0x102, 0x3c4, 0x102, 0x3c5,
+ 0x102, 0x3c6, 0x102, 0x3c7, 0x102, 0x3c8, 0x102, 0x3c9,
+ 0x102, 0x2202, 0x102, 0x3f5, 0x102, 0x3d1, 0x102, 0x3f0,
+ 0x102, 0x3d5, 0x102, 0x3f1, 0x102, 0x3d6, 0x102, 0x3dc,
+ 0x102, 0x3dd, 0x102, 0x30, 0x102, 0x31, 0x102, 0x32,
+ 0x102, 0x33, 0x102, 0x34, 0x102, 0x35, 0x102, 0x36,
+ 0x102, 0x37, 0x102, 0x38, 0x102, 0x39, 0x102, 0x30,
+ 0x102, 0x31, 0x102, 0x32, 0x102, 0x33, 0x102, 0x34,
+ 0x102, 0x35, 0x102, 0x36, 0x102, 0x37, 0x102, 0x38,
+ 0x102, 0x39, 0x102, 0x30, 0x102, 0x31, 0x102, 0x32,
+ 0x102, 0x33, 0x102, 0x34, 0x102, 0x35, 0x102, 0x36,
+ 0x102, 0x37, 0x102, 0x38, 0x102, 0x39, 0x102, 0x30,
+ 0x102, 0x31, 0x102, 0x32, 0x102, 0x33, 0x102, 0x34,
+ 0x102, 0x35, 0x102, 0x36, 0x102, 0x37, 0x102, 0x38,
+ 0x102, 0x39, 0x102, 0x30, 0x102, 0x31, 0x102, 0x32,
+ 0x102, 0x33, 0x102, 0x34, 0x102, 0x35, 0x102, 0x36,
+ 0x102, 0x37, 0x102, 0x38, 0x102, 0x39, 0x102, 0x627,
+ 0x102, 0x628, 0x102, 0x62c, 0x102, 0x62f, 0x102, 0x648,
+ 0x102, 0x632, 0x102, 0x62d, 0x102, 0x637, 0x102, 0x64a,
+ 0x102, 0x643, 0x102, 0x644, 0x102, 0x645, 0x102, 0x646,
+ 0x102, 0x633, 0x102, 0x639, 0x102, 0x641, 0x102, 0x635,
+ 0x102, 0x642, 0x102, 0x631, 0x102, 0x634, 0x102, 0x62a,
+ 0x102, 0x62b, 0x102, 0x62e, 0x102, 0x630, 0x102, 0x636,
+ 0x102, 0x638, 0x102, 0x63a, 0x102, 0x66e, 0x102, 0x6ba,
+ 0x102, 0x6a1, 0x102, 0x66f, 0x102, 0x628, 0x102, 0x62c,
+ 0x102, 0x647, 0x102, 0x62d, 0x102, 0x64a, 0x102, 0x643,
+ 0x102, 0x644, 0x102, 0x645, 0x102, 0x646, 0x102, 0x633,
+ 0x102, 0x639, 0x102, 0x641, 0x102, 0x635, 0x102, 0x642,
+ 0x102, 0x634, 0x102, 0x62a, 0x102, 0x62b, 0x102, 0x62e,
+ 0x102, 0x636, 0x102, 0x63a, 0x102, 0x62c, 0x102, 0x62d,
+ 0x102, 0x64a, 0x102, 0x644, 0x102, 0x646, 0x102, 0x633,
+ 0x102, 0x639, 0x102, 0x635, 0x102, 0x642, 0x102, 0x634,
+ 0x102, 0x62e, 0x102, 0x636, 0x102, 0x63a, 0x102, 0x6ba,
+ 0x102, 0x66f, 0x102, 0x628, 0x102, 0x62c, 0x102, 0x647,
+ 0x102, 0x62d, 0x102, 0x637, 0x102, 0x64a, 0x102, 0x643,
+ 0x102, 0x645, 0x102, 0x646, 0x102, 0x633, 0x102, 0x639,
+ 0x102, 0x641, 0x102, 0x635, 0x102, 0x642, 0x102, 0x634,
+ 0x102, 0x62a, 0x102, 0x62b, 0x102, 0x62e, 0x102, 0x636,
+ 0x102, 0x638, 0x102, 0x63a, 0x102, 0x66e, 0x102, 0x6a1,
+ 0x102, 0x627, 0x102, 0x628, 0x102, 0x62c, 0x102, 0x62f,
+ 0x102, 0x647, 0x102, 0x648, 0x102, 0x632, 0x102, 0x62d,
+ 0x102, 0x637, 0x102, 0x64a, 0x102, 0x644, 0x102, 0x645,
+ 0x102, 0x646, 0x102, 0x633, 0x102, 0x639, 0x102, 0x641,
+ 0x102, 0x635, 0x102, 0x642, 0x102, 0x631, 0x102, 0x634,
+ 0x102, 0x62a, 0x102, 0x62b, 0x102, 0x62e, 0x102, 0x630,
+ 0x102, 0x636, 0x102, 0x638, 0x102, 0x63a, 0x102, 0x628,
+ 0x102, 0x62c, 0x102, 0x62f, 0x102, 0x648, 0x102, 0x632,
+ 0x102, 0x62d, 0x102, 0x637, 0x102, 0x64a, 0x102, 0x644,
+ 0x102, 0x645, 0x102, 0x646, 0x102, 0x633, 0x102, 0x639,
+ 0x102, 0x641, 0x102, 0x635, 0x102, 0x642, 0x102, 0x631,
+ 0x102, 0x634, 0x102, 0x62a, 0x102, 0x62b, 0x102, 0x62e,
+ 0x102, 0x630, 0x102, 0x636, 0x102, 0x638, 0x102, 0x63a,
+ 0x210, 0x30, 0x2e, 0x210, 0x30, 0x2c, 0x210, 0x31,
+ 0x2c, 0x210, 0x32, 0x2c, 0x210, 0x33, 0x2c, 0x210,
+ 0x34, 0x2c, 0x210, 0x35, 0x2c, 0x210, 0x36, 0x2c,
+ 0x210, 0x37, 0x2c, 0x210, 0x38, 0x2c, 0x210, 0x39,
+ 0x2c, 0x310, 0x28, 0x41, 0x29, 0x310, 0x28, 0x42,
+ 0x29, 0x310, 0x28, 0x43, 0x29, 0x310, 0x28, 0x44,
+ 0x29, 0x310, 0x28, 0x45, 0x29, 0x310, 0x28, 0x46,
+ 0x29, 0x310, 0x28, 0x47, 0x29, 0x310, 0x28, 0x48,
+ 0x29, 0x310, 0x28, 0x49, 0x29, 0x310, 0x28, 0x4a,
+ 0x29, 0x310, 0x28, 0x4b, 0x29, 0x310, 0x28, 0x4c,
+ 0x29, 0x310, 0x28, 0x4d, 0x29, 0x310, 0x28, 0x4e,
+ 0x29, 0x310, 0x28, 0x4f, 0x29, 0x310, 0x28, 0x50,
+ 0x29, 0x310, 0x28, 0x51, 0x29, 0x310, 0x28, 0x52,
+ 0x29, 0x310, 0x28, 0x53, 0x29, 0x310, 0x28, 0x54,
+ 0x29, 0x310, 0x28, 0x55, 0x29, 0x310, 0x28, 0x56,
+ 0x29, 0x310, 0x28, 0x57, 0x29, 0x310, 0x28, 0x58,
+ 0x29, 0x310, 0x28, 0x59, 0x29, 0x310, 0x28, 0x5a,
+ 0x29, 0x310, 0x3014, 0x53, 0x3015, 0x108, 0x43, 0x108,
+ 0x52, 0x208, 0x43, 0x44, 0x208, 0x57, 0x5a, 0x10f,
+ 0x41, 0x10f, 0x42, 0x10f, 0x43, 0x10f, 0x44, 0x10f,
+ 0x45, 0x10f, 0x46, 0x10f, 0x47, 0x10f, 0x48, 0x10f,
+ 0x49, 0x10f, 0x4a, 0x10f, 0x4b, 0x10f, 0x4c, 0x10f,
+ 0x4d, 0x10f, 0x4e, 0x10f, 0x4f, 0x10f, 0x50, 0x10f,
+ 0x51, 0x10f, 0x52, 0x10f, 0x53, 0x10f, 0x54, 0x10f,
+ 0x55, 0x10f, 0x56, 0x10f, 0x57, 0x10f, 0x58, 0x10f,
+ 0x59, 0x10f, 0x5a, 0x20f, 0x48, 0x56, 0x20f, 0x4d,
+ 0x56, 0x20f, 0x53, 0x44, 0x20f, 0x53, 0x53, 0x30f,
+ 0x50, 0x50, 0x56, 0x20f, 0x57, 0x43, 0x209, 0x4d,
+ 0x43, 0x209, 0x4d, 0x44, 0x209, 0x4d, 0x52, 0x20f,
+ 0x44, 0x4a, 0x20f, 0x307b, 0x304b, 0x20f, 0x30b3, 0x30b3,
+ 0x10f, 0x30b5, 0x10f, 0x624b, 0x10f, 0x5b57, 0x10f, 0x53cc,
+ 0x10f, 0x30c7, 0x10f, 0x4e8c, 0x10f, 0x591a, 0x10f, 0x89e3,
+ 0x10f, 0x5929, 0x10f, 0x4ea4, 0x10f, 0x6620, 0x10f, 0x7121,
+ 0x10f, 0x6599, 0x10f, 0x524d, 0x10f, 0x5f8c, 0x10f, 0x518d,
+ 0x10f, 0x65b0, 0x10f, 0x521d, 0x10f, 0x7d42, 0x10f, 0x751f,
+ 0x10f, 0x8ca9, 0x10f, 0x58f0, 0x10f, 0x5439, 0x10f, 0x6f14,
+ 0x10f, 0x6295, 0x10f, 0x6355, 0x10f, 0x4e00, 0x10f, 0x4e09,
+ 0x10f, 0x904a, 0x10f, 0x5de6, 0x10f, 0x4e2d, 0x10f, 0x53f3,
+ 0x10f, 0x6307, 0x10f, 0x8d70, 0x10f, 0x6253, 0x10f, 0x7981,
+ 0x10f, 0x7a7a, 0x10f, 0x5408, 0x10f, 0x6e80, 0x10f, 0x6709,
+ 0x10f, 0x6708, 0x10f, 0x7533, 0x10f, 0x5272, 0x10f, 0x55b6,
+ 0x10f, 0x914d, 0x310, 0x3014, 0x672c, 0x3015, 0x310, 0x3014,
+ 0x4e09, 0x3015, 0x310, 0x3014, 0x4e8c, 0x3015, 0x310, 0x3014,
+ 0x5b89, 0x3015, 0x310, 0x3014, 0x70b9, 0x3015, 0x310, 0x3014,
+ 0x6253, 0x3015, 0x310, 0x3014, 0x76d7, 0x3015, 0x310, 0x3014,
+ 0x52dd, 0x3015, 0x310, 0x3014, 0x6557, 0x3015, 0x108, 0x5f97,
+ 0x108, 0x53ef, 0x101, 0x4e3d, 0x101, 0x4e38, 0x101, 0x4e41,
+ 0x201, 0xd840, 0xdd22, 0x101, 0x4f60, 0x101, 0x4fae, 0x101,
+ 0x4fbb, 0x101, 0x5002, 0x101, 0x507a, 0x101, 0x5099, 0x101,
+ 0x50e7, 0x101, 0x50cf, 0x101, 0x349e, 0x201, 0xd841, 0xde3a,
+ 0x101, 0x514d, 0x101, 0x5154, 0x101, 0x5164, 0x101, 0x5177,
+ 0x201, 0xd841, 0xdd1c, 0x101, 0x34b9, 0x101, 0x5167, 0x101,
+ 0x518d, 0x201, 0xd841, 0xdd4b, 0x101, 0x5197, 0x101, 0x51a4,
+ 0x101, 0x4ecc, 0x101, 0x51ac, 0x101, 0x51b5, 0x201, 0xd864,
+ 0xdddf, 0x101, 0x51f5, 0x101, 0x5203, 0x101, 0x34df, 0x101,
+ 0x523b, 0x101, 0x5246, 0x101, 0x5272, 0x101, 0x5277, 0x101,
+ 0x3515, 0x101, 0x52c7, 0x101, 0x52c9, 0x101, 0x52e4, 0x101,
+ 0x52fa, 0x101, 0x5305, 0x101, 0x5306, 0x101, 0x5317, 0x101,
+ 0x5349, 0x101, 0x5351, 0x101, 0x535a, 0x101, 0x5373, 0x101,
+ 0x537d, 0x101, 0x537f, 0x101, 0x537f, 0x101, 0x537f, 0x201,
+ 0xd842, 0xde2c, 0x101, 0x7070, 0x101, 0x53ca, 0x101, 0x53df,
+ 0x201, 0xd842, 0xdf63, 0x101, 0x53eb, 0x101, 0x53f1, 0x101,
+ 0x5406, 0x101, 0x549e, 0x101, 0x5438, 0x101, 0x5448, 0x101,
+ 0x5468, 0x101, 0x54a2, 0x101, 0x54f6, 0x101, 0x5510, 0x101,
+ 0x5553, 0x101, 0x5563, 0x101, 0x5584, 0x101, 0x5584, 0x101,
+ 0x5599, 0x101, 0x55ab, 0x101, 0x55b3, 0x101, 0x55c2, 0x101,
+ 0x5716, 0x101, 0x5606, 0x101, 0x5717, 0x101, 0x5651, 0x101,
+ 0x5674, 0x101, 0x5207, 0x101, 0x58ee, 0x101, 0x57ce, 0x101,
+ 0x57f4, 0x101, 0x580d, 0x101, 0x578b, 0x101, 0x5832, 0x101,
+ 0x5831, 0x101, 0x58ac, 0x201, 0xd845, 0xdce4, 0x101, 0x58f2,
+ 0x101, 0x58f7, 0x101, 0x5906, 0x101, 0x591a, 0x101, 0x5922,
+ 0x101, 0x5962, 0x201, 0xd845, 0xdea8, 0x201, 0xd845, 0xdeea,
+ 0x101, 0x59ec, 0x101, 0x5a1b, 0x101, 0x5a27, 0x101, 0x59d8,
+ 0x101, 0x5a66, 0x101, 0x36ee, 0x101, 0x36fc, 0x101, 0x5b08,
+ 0x101, 0x5b3e, 0x101, 0x5b3e, 0x201, 0xd846, 0xddc8, 0x101,
+ 0x5bc3, 0x101, 0x5bd8, 0x101, 0x5be7, 0x101, 0x5bf3, 0x201,
+ 0xd846, 0xdf18, 0x101, 0x5bff, 0x101, 0x5c06, 0x101, 0x5f53,
+ 0x101, 0x5c22, 0x101, 0x3781, 0x101, 0x5c60, 0x101, 0x5c6e,
+ 0x101, 0x5cc0, 0x101, 0x5c8d, 0x201, 0xd847, 0xdde4, 0x101,
+ 0x5d43, 0x201, 0xd847, 0xdde6, 0x101, 0x5d6e, 0x101, 0x5d6b,
+ 0x101, 0x5d7c, 0x101, 0x5de1, 0x101, 0x5de2, 0x101, 0x382f,
+ 0x101, 0x5dfd, 0x101, 0x5e28, 0x101, 0x5e3d, 0x101, 0x5e69,
+ 0x101, 0x3862, 0x201, 0xd848, 0xdd83, 0x101, 0x387c, 0x101,
+ 0x5eb0, 0x101, 0x5eb3, 0x101, 0x5eb6, 0x101, 0x5eca, 0x201,
+ 0xd868, 0xdf92, 0x101, 0x5efe, 0x201, 0xd848, 0xdf31, 0x201,
+ 0xd848, 0xdf31, 0x101, 0x8201, 0x101, 0x5f22, 0x101, 0x5f22,
+ 0x101, 0x38c7, 0x201, 0xd84c, 0xdeb8, 0x201, 0xd858, 0xddda,
+ 0x101, 0x5f62, 0x101, 0x5f6b, 0x101, 0x38e3, 0x101, 0x5f9a,
+ 0x101, 0x5fcd, 0x101, 0x5fd7, 0x101, 0x5ff9, 0x101, 0x6081,
+ 0x101, 0x393a, 0x101, 0x391c, 0x101, 0x6094, 0x201, 0xd849,
+ 0xded4, 0x101, 0x60c7, 0x101, 0x6148, 0x101, 0x614c, 0x101,
+ 0x614e, 0x101, 0x614c, 0x101, 0x617a, 0x101, 0x618e, 0x101,
+ 0x61b2, 0x101, 0x61a4, 0x101, 0x61af, 0x101, 0x61de, 0x101,
+ 0x61f2, 0x101, 0x61f6, 0x101, 0x6210, 0x101, 0x621b, 0x101,
+ 0x625d, 0x101, 0x62b1, 0x101, 0x62d4, 0x101, 0x6350, 0x201,
+ 0xd84a, 0xdf0c, 0x101, 0x633d, 0x101, 0x62fc, 0x101, 0x6368,
+ 0x101, 0x6383, 0x101, 0x63e4, 0x201, 0xd84a, 0xdff1, 0x101,
+ 0x6422, 0x101, 0x63c5, 0x101, 0x63a9, 0x101, 0x3a2e, 0x101,
+ 0x6469, 0x101, 0x647e, 0x101, 0x649d, 0x101, 0x6477, 0x101,
+ 0x3a6c, 0x101, 0x654f, 0x101, 0x656c, 0x201, 0xd84c, 0xdc0a,
+ 0x101, 0x65e3, 0x101, 0x66f8, 0x101, 0x6649, 0x101, 0x3b19,
+ 0x101, 0x6691, 0x101, 0x3b08, 0x101, 0x3ae4, 0x101, 0x5192,
+ 0x101, 0x5195, 0x101, 0x6700, 0x101, 0x669c, 0x101, 0x80ad,
+ 0x101, 0x43d9, 0x101, 0x6717, 0x101, 0x671b, 0x101, 0x6721,
+ 0x101, 0x675e, 0x101, 0x6753, 0x201, 0xd84c, 0xdfc3, 0x101,
+ 0x3b49, 0x101, 0x67fa, 0x101, 0x6785, 0x101, 0x6852, 0x101,
+ 0x6885, 0x201, 0xd84d, 0xdc6d, 0x101, 0x688e, 0x101, 0x681f,
+ 0x101, 0x6914, 0x101, 0x3b9d, 0x101, 0x6942, 0x101, 0x69a3,
+ 0x101, 0x69ea, 0x101, 0x6aa8, 0x201, 0xd84d, 0xdea3, 0x101,
+ 0x6adb, 0x101, 0x3c18, 0x101, 0x6b21, 0x201, 0xd84e, 0xdca7,
+ 0x101, 0x6b54, 0x101, 0x3c4e, 0x101, 0x6b72, 0x101, 0x6b9f,
+ 0x101, 0x6bba, 0x101, 0x6bbb, 0x201, 0xd84e, 0xde8d, 0x201,
+ 0xd847, 0xdd0b, 0x201, 0xd84e, 0xdefa, 0x101, 0x6c4e, 0x201,
+ 0xd84f, 0xdcbc, 0x101, 0x6cbf, 0x101, 0x6ccd, 0x101, 0x6c67,
+ 0x101, 0x6d16, 0x101, 0x6d3e, 0x101, 0x6d77, 0x101, 0x6d41,
+ 0x101, 0x6d69, 0x101, 0x6d78, 0x101, 0x6d85, 0x201, 0xd84f,
+ 0xdd1e, 0x101, 0x6d34, 0x101, 0x6e2f, 0x101, 0x6e6e, 0x101,
+ 0x3d33, 0x101, 0x6ecb, 0x101, 0x6ec7, 0x201, 0xd84f, 0xded1,
+ 0x101, 0x6df9, 0x101, 0x6f6e, 0x201, 0xd84f, 0xdf5e, 0x201,
+ 0xd84f, 0xdf8e, 0x101, 0x6fc6, 0x101, 0x7039, 0x101, 0x701e,
+ 0x101, 0x701b, 0x101, 0x3d96, 0x101, 0x704a, 0x101, 0x707d,
+ 0x101, 0x7077, 0x101, 0x70ad, 0x201, 0xd841, 0xdd25, 0x101,
+ 0x7145, 0x201, 0xd850, 0xde63, 0x101, 0x719c, 0x201, 0xd850,
+ 0xdfab, 0x101, 0x7228, 0x101, 0x7235, 0x101, 0x7250, 0x201,
+ 0xd851, 0xde08, 0x101, 0x7280, 0x101, 0x7295, 0x201, 0xd851,
+ 0xdf35, 0x201, 0xd852, 0xdc14, 0x101, 0x737a, 0x101, 0x738b,
+ 0x101, 0x3eac, 0x101, 0x73a5, 0x101, 0x3eb8, 0x101, 0x3eb8,
+ 0x101, 0x7447, 0x101, 0x745c, 0x101, 0x7471, 0x101, 0x7485,
+ 0x101, 0x74ca, 0x101, 0x3f1b, 0x101, 0x7524, 0x201, 0xd853,
+ 0xdc36, 0x101, 0x753e, 0x201, 0xd853, 0xdc92, 0x101, 0x7570,
+ 0x201, 0xd848, 0xdd9f, 0x101, 0x7610, 0x201, 0xd853, 0xdfa1,
+ 0x201, 0xd853, 0xdfb8, 0x201, 0xd854, 0xdc44, 0x101, 0x3ffc,
+ 0x101, 0x4008, 0x101, 0x76f4, 0x201, 0xd854, 0xdcf3, 0x201,
+ 0xd854, 0xdcf2, 0x201, 0xd854, 0xdd19, 0x201, 0xd854, 0xdd33,
+ 0x101, 0x771e, 0x101, 0x771f, 0x101, 0x771f, 0x101, 0x774a,
+ 0x101, 0x4039, 0x101, 0x778b, 0x101, 0x4046, 0x101, 0x4096,
+ 0x201, 0xd855, 0xdc1d, 0x101, 0x784e, 0x101, 0x788c, 0x101,
+ 0x78cc, 0x101, 0x40e3, 0x201, 0xd855, 0xde26, 0x101, 0x7956,
+ 0x201, 0xd855, 0xde9a, 0x201, 0xd855, 0xdec5, 0x101, 0x798f,
+ 0x101, 0x79eb, 0x101, 0x412f, 0x101, 0x7a40, 0x101, 0x7a4a,
+ 0x101, 0x7a4f, 0x201, 0xd856, 0xdd7c, 0x201, 0xd856, 0xdea7,
+ 0x201, 0xd856, 0xdea7, 0x101, 0x7aee, 0x101, 0x4202, 0x201,
+ 0xd856, 0xdfab, 0x101, 0x7bc6, 0x101, 0x7bc9, 0x101, 0x4227,
+ 0x201, 0xd857, 0xdc80, 0x101, 0x7cd2, 0x101, 0x42a0, 0x101,
+ 0x7ce8, 0x101, 0x7ce3, 0x101, 0x7d00, 0x201, 0xd857, 0xdf86,
+ 0x101, 0x7d63, 0x101, 0x4301, 0x101, 0x7dc7, 0x101, 0x7e02,
+ 0x101, 0x7e45, 0x101, 0x4334, 0x201, 0xd858, 0xde28, 0x201,
+ 0xd858, 0xde47, 0x101, 0x4359, 0x201, 0xd858, 0xded9, 0x101,
+ 0x7f7a, 0x201, 0xd858, 0xdf3e, 0x101, 0x7f95, 0x101, 0x7ffa,
+ 0x101, 0x8005, 0x201, 0xd859, 0xdcda, 0x201, 0xd859, 0xdd23,
+ 0x101, 0x8060, 0x201, 0xd859, 0xdda8, 0x101, 0x8070, 0x201,
+ 0xd84c, 0xdf5f, 0x101, 0x43d5, 0x101, 0x80b2, 0x101, 0x8103,
+ 0x101, 0x440b, 0x101, 0x813e, 0x101, 0x5ab5, 0x201, 0xd859,
+ 0xdfa7, 0x201, 0xd859, 0xdfb5, 0x201, 0xd84c, 0xdf93, 0x201,
+ 0xd84c, 0xdf9c, 0x101, 0x8201, 0x101, 0x8204, 0x101, 0x8f9e,
+ 0x101, 0x446b, 0x101, 0x8291, 0x101, 0x828b, 0x101, 0x829d,
+ 0x101, 0x52b3, 0x101, 0x82b1, 0x101, 0x82b3, 0x101, 0x82bd,
+ 0x101, 0x82e6, 0x201, 0xd85a, 0xdf3c, 0x101, 0x82e5, 0x101,
+ 0x831d, 0x101, 0x8363, 0x101, 0x83ad, 0x101, 0x8323, 0x101,
+ 0x83bd, 0x101, 0x83e7, 0x101, 0x8457, 0x101, 0x8353, 0x101,
+ 0x83ca, 0x101, 0x83cc, 0x101, 0x83dc, 0x201, 0xd85b, 0xdc36,
+ 0x201, 0xd85b, 0xdd6b, 0x201, 0xd85b, 0xdcd5, 0x101, 0x452b,
+ 0x101, 0x84f1, 0x101, 0x84f3, 0x101, 0x8516, 0x201, 0xd85c,
+ 0xdfca, 0x101, 0x8564, 0x201, 0xd85b, 0xdf2c, 0x101, 0x455d,
+ 0x101, 0x4561, 0x201, 0xd85b, 0xdfb1, 0x201, 0xd85c, 0xdcd2,
+ 0x101, 0x456b, 0x101, 0x8650, 0x101, 0x865c, 0x101, 0x8667,
+ 0x101, 0x8669, 0x101, 0x86a9, 0x101, 0x8688, 0x101, 0x870e,
+ 0x101, 0x86e2, 0x101, 0x8779, 0x101, 0x8728, 0x101, 0x876b,
+ 0x101, 0x8786, 0x101, 0x45d7, 0x101, 0x87e1, 0x101, 0x8801,
+ 0x101, 0x45f9, 0x101, 0x8860, 0x101, 0x8863, 0x201, 0xd85d,
+ 0xde67, 0x101, 0x88d7, 0x101, 0x88de, 0x101, 0x4635, 0x101,
+ 0x88fa, 0x101, 0x34bb, 0x201, 0xd85e, 0xdcae, 0x201, 0xd85e,
+ 0xdd66, 0x101, 0x46be, 0x101, 0x46c7, 0x101, 0x8aa0, 0x101,
+ 0x8aed, 0x101, 0x8b8a, 0x101, 0x8c55, 0x201, 0xd85f, 0xdca8,
+ 0x101, 0x8cab, 0x101, 0x8cc1, 0x101, 0x8d1b, 0x101, 0x8d77,
+ 0x201, 0xd85f, 0xdf2f, 0x201, 0xd842, 0xdc04, 0x101, 0x8dcb,
+ 0x101, 0x8dbc, 0x101, 0x8df0, 0x201, 0xd842, 0xdcde, 0x101,
+ 0x8ed4, 0x101, 0x8f38, 0x201, 0xd861, 0xddd2, 0x201, 0xd861,
+ 0xdded, 0x101, 0x9094, 0x101, 0x90f1, 0x101, 0x9111, 0x201,
+ 0xd861, 0xdf2e, 0x101, 0x911b, 0x101, 0x9238, 0x101, 0x92d7,
+ 0x101, 0x92d8, 0x101, 0x927c, 0x101, 0x93f9, 0x101, 0x9415,
+ 0x201, 0xd862, 0xdffa, 0x101, 0x958b, 0x101, 0x4995, 0x101,
+ 0x95b7, 0x201, 0xd863, 0xdd77, 0x101, 0x49e6, 0x101, 0x96c3,
+ 0x101, 0x5db2, 0x101, 0x9723, 0x201, 0xd864, 0xdd45, 0x201,
+ 0xd864, 0xde1a, 0x101, 0x4a6e, 0x101, 0x4a76, 0x101, 0x97e0,
+ 0x201, 0xd865, 0xdc0a, 0x101, 0x4ab2, 0x201, 0xd865, 0xdc96,
+ 0x101, 0x980b, 0x101, 0x980b, 0x101, 0x9829, 0x201, 0xd865,
+ 0xddb6, 0x101, 0x98e2, 0x101, 0x4b33, 0x101, 0x9929, 0x101,
+ 0x99a7, 0x101, 0x99c2, 0x101, 0x99fe, 0x101, 0x4bce, 0x201,
+ 0xd866, 0xdf30, 0x101, 0x9b12, 0x101, 0x9c40, 0x101, 0x9cfd,
+ 0x101, 0x4cce, 0x101, 0x4ced, 0x101, 0x9d67, 0x201, 0xd868,
+ 0xdcce, 0x101, 0x4cf8, 0x201, 0xd868, 0xdd05, 0x201, 0xd868,
+ 0xde0e, 0x201, 0xd868, 0xde91, 0x101, 0x9ebb, 0x101, 0x4d56,
+ 0x101, 0x9ef9, 0x101, 0x9efe, 0x101, 0x9f05, 0x101, 0x9f0f,
+ 0x101, 0x9f16, 0x101, 0x9f3b, 0x201, 0xd869, 0xde00
};
static const unsigned short uc_ligature_trie[] = {
diff --git a/src/corelib/text/qunicodetables_p.h b/src/corelib/text/qunicodetables_p.h
index c453ef53e7..81efc09773 100644
--- a/src/corelib/text/qunicodetables_p.h
+++ b/src/corelib/text/qunicodetables_p.h
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2019 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the QtCore module of the Qt Toolkit.
@@ -37,7 +37,7 @@
**
****************************************************************************/
-/* This file is autogenerated from the Unicode 10.0 database. Do not edit */
+/* This file is autogenerated from the Unicode 12.1 database. Do not edit */
//
// W A R N I N G
@@ -59,7 +59,7 @@
QT_BEGIN_NAMESPACE
-#define UNICODE_DATA_VERSION QChar::Unicode_10_0
+#define UNICODE_DATA_VERSION QChar::Unicode_12_1
namespace QUnicodeTables {
@@ -122,7 +122,8 @@ enum GraphemeBreakClass {
Graphemebreak_E_Modifier,
Graphemebreak_Glue_After_Zwj,
Graphemebreak_E_Base_GAZ,
- NumGraphemeBreakClasses,
+
+ NumGraphemeBreakClasses
};
enum WordBreakClass {
@@ -148,7 +149,9 @@ enum WordBreakClass {
WordBreak_E_Modifier,
WordBreak_Glue_After_Zwj,
WordBreak_E_Base_GAZ,
- NumWordBreakClasses,
+ WordBreak_WSegSpace,
+
+ NumWordBreakClasses
};
enum SentenceBreakClass {
@@ -166,6 +169,7 @@ enum SentenceBreakClass {
SentenceBreak_SContinue,
SentenceBreak_STerm,
SentenceBreak_Close,
+
NumSentenceBreakClasses
};
@@ -181,6 +185,7 @@ enum LineBreakClass {
LineBreak_EB, LineBreak_EM, LineBreak_ZWJ,
LineBreak_SA, LineBreak_SG, LineBreak_SP,
LineBreak_CR, LineBreak_LF, LineBreak_BK,
+
NumLineBreakClasses
};
diff --git a/src/corelib/text/qunicodetools.cpp b/src/corelib/text/qunicodetools.cpp
index 08e1146c59..0db3dc74c6 100644
--- a/src/corelib/text/qunicodetools.cpp
+++ b/src/corelib/text/qunicodetools.cpp
@@ -164,29 +164,30 @@ enum Action {
};
static const uchar breakTable[QUnicodeTables::NumWordBreakClasses][QUnicodeTables::NumWordBreakClasses] = {
-// Any CR LF Newline Extend ZWJ Format RI Katakana HLetter ALetter SQuote DQuote MidNumLet MidLetter MidNum Numeric ExtNumLet E_Base E_Mod GAZ EBG
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // Any
- { Break , Break , NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // CR
- { Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // LF
- { Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // Newline
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // Extend
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , NoBreak, NoBreak }, // ZWJ
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // Format
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // RegionalIndicator
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , NoBreak, Break , Break , Break , Break }, // Katakana
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , NoBreak, NoBreak, LookupW, Lookup , LookupW, LookupW, Break , NoBreak, NoBreak, Break , Break , Break , Break }, // HebrewLetter
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , NoBreak, NoBreak, LookupW, Break , LookupW, LookupW, Break , NoBreak, NoBreak, Break , Break , Break , Break }, // ALetter
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // SingleQuote
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // DoubleQuote
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // MidNumLet
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // MidLetter
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // MidNum
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , NoBreak, NoBreak, Lookup , Break , Lookup , Break , Lookup , NoBreak, NoBreak, Break , Break , Break , Break }, // Numeric
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , NoBreak, NoBreak, Break , Break , Break , Break }, // ExtendNumLet
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , NoBreak, Break , Break }, // E_Base
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // E_Mod
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // GAZ
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , NoBreak, Break , Break }, // EBG
+// Any CR LF Newline Extend ZWJ Format RI Katakana HLetter ALetter SQuote DQuote MidNumLet MidLetter MidNum Numeric ExtNumLet E_Base E_Mod GAZ EBG WSeg
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // Any
+ { Break , Break , NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // CR
+ { Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // LF
+ { Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // Newline
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // Extend
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , NoBreak, NoBreak, Break }, // ZWJ
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // Format
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // RegionalIndicator
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , NoBreak, Break , Break , Break , Break , Break }, // Katakana
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , NoBreak, NoBreak, LookupW, Lookup , LookupW, LookupW, Break , NoBreak, NoBreak, Break , Break , Break , Break , Break }, // HebrewLetter
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , NoBreak, NoBreak, LookupW, Break , LookupW, LookupW, Break , NoBreak, NoBreak, Break , Break , Break , Break , Break }, // ALetter
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // SingleQuote
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // DoubleQuote
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // MidNumLet
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // MidLetter
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // MidNum
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , NoBreak, NoBreak, Lookup , Break , Lookup , Break , Lookup , NoBreak, NoBreak, Break , Break , Break , Break , Break }, // Numeric
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , NoBreak, NoBreak, Break , Break , Break , Break , Break }, // ExtendNumLet
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , NoBreak, Break , Break , Break }, // E_Base
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // E_Mod
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // GAZ
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , NoBreak, Break , Break , Break }, // EBG
+ { Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // WSeg
};
} // namespace WB
diff --git a/src/corelib/thread/qbasicatomic.h b/src/corelib/thread/qbasicatomic.h
index 9804e60119..c9c95cf6ce 100644
--- a/src/corelib/thread/qbasicatomic.h
+++ b/src/corelib/thread/qbasicatomic.h
@@ -47,9 +47,9 @@
# include <QtCore/qatomic_bootstrap.h>
// If C++11 atomics are supported, use them!
-// Note that constexpr support is sometimes disabled in QNX builds but its
-// library has <atomic>.
-#elif defined(Q_COMPILER_ATOMICS) && (defined(Q_COMPILER_CONSTEXPR) || defined(Q_OS_QNX))
+// Note that constexpr support is sometimes disabled in QNX or INTEGRITY builds,
+// but their libraries have <atomic>.
+#elif defined(Q_COMPILER_ATOMICS) && (defined(Q_COMPILER_CONSTEXPR) || defined(Q_OS_QNX) || defined(Q_OS_INTEGRITY))
# include <QtCore/qatomic_cxx11.h>
// We only support one fallback: MSVC, because even on version 2015, it lacks full constexpr support
diff --git a/src/corelib/thread/qexception.cpp b/src/corelib/thread/qexception.cpp
index a3e30d5a7a..f9c63085b7 100644
--- a/src/corelib/thread/qexception.cpp
+++ b/src/corelib/thread/qexception.cpp
@@ -199,7 +199,7 @@ void ExceptionStore::setException(const QException &e)
bool ExceptionStore::hasException() const
{
- return (exceptionHolder.exception() != 0);
+ return (exceptionHolder.exception() != nullptr);
}
ExceptionHolder ExceptionStore::exception()
diff --git a/src/corelib/thread/qfutureinterface.cpp b/src/corelib/thread/qfutureinterface.cpp
index 6430f38a3b..f1fd40e7b6 100644
--- a/src/corelib/thread/qfutureinterface.cpp
+++ b/src/corelib/thread/qfutureinterface.cpp
@@ -471,7 +471,7 @@ bool QFutureInterfaceBase::derefT() const
QFutureInterfaceBasePrivate::QFutureInterfaceBasePrivate(QFutureInterfaceBase::State initialState)
: refCount(1), m_progressValue(0), m_progressMinimum(0), m_progressMaximum(0),
state(initialState),
- manualProgress(false), m_expectedResultCount(0), runnable(0), m_pool(0)
+ manualProgress(false), m_expectedResultCount(0), runnable(nullptr), m_pool(nullptr)
{
progressTime.invalidate();
}
diff --git a/src/corelib/thread/qmutex.cpp b/src/corelib/thread/qmutex.cpp
index 9e52f286ee..f3883278e3 100644
--- a/src/corelib/thread/qmutex.cpp
+++ b/src/corelib/thread/qmutex.cpp
@@ -70,7 +70,7 @@ class QRecursiveMutexPrivate : public QMutexData
{
public:
QRecursiveMutexPrivate()
- : QMutexData(QMutex::Recursive), owner(0), count(0) {}
+ : QMutexData(QMutex::Recursive), owner(nullptr), count(0) {}
// written to by the thread that first owns 'mutex';
// read during attempts to acquire ownership of 'mutex' from any other thread:
@@ -186,7 +186,7 @@ public:
*/
QMutex::QMutex(RecursionMode mode)
{
- d_ptr.storeRelaxed(mode == Recursive ? new QRecursiveMutexPrivate : 0);
+ d_ptr.storeRelaxed(mode == Recursive ? new QRecursiveMutexPrivate : nullptr);
}
/*!
@@ -799,7 +799,7 @@ inline void QRecursiveMutexPrivate::unlock() noexcept
if (count > 0) {
count--;
} else {
- owner.storeRelaxed(0);
+ owner.storeRelaxed(nullptr);
mutex.QBasicMutex::unlock();
}
}
diff --git a/src/corelib/thread/qmutex_linux.cpp b/src/corelib/thread/qmutex_linux.cpp
index 3270875471..72002838cf 100644
--- a/src/corelib/thread/qmutex_linux.cpp
+++ b/src/corelib/thread/qmutex_linux.cpp
@@ -106,7 +106,7 @@ static inline QMutexData *dummyFutexValue()
}
template <bool IsTimed> static inline
-bool lockInternal_helper(QBasicAtomicPointer<QMutexData> &d_ptr, int timeout = -1, QElapsedTimer *elapsedTimer = 0) noexcept
+bool lockInternal_helper(QBasicAtomicPointer<QMutexData> &d_ptr, int timeout = -1, QElapsedTimer *elapsedTimer = nullptr) noexcept
{
if (!IsTimed)
timeout = -1;
@@ -175,7 +175,7 @@ void QBasicMutex::unlockInternal() noexcept
Q_UNUSED(d);
Q_ASSERT(!isRecursive());
- d_ptr.storeRelease(0);
+ d_ptr.storeRelease(nullptr);
futexWakeOne(d_ptr);
}
diff --git a/src/corelib/thread/qorderedmutexlocker_p.h b/src/corelib/thread/qorderedmutexlocker_p.h
index 570c526225..83edfd5879 100644
--- a/src/corelib/thread/qorderedmutexlocker_p.h
+++ b/src/corelib/thread/qorderedmutexlocker_p.h
@@ -69,7 +69,7 @@ class QOrderedMutexLocker
public:
QOrderedMutexLocker(QBasicMutex *m1, QBasicMutex *m2)
: mtx1((m1 == m2) ? m1 : (std::less<QBasicMutex *>()(m1, m2) ? m1 : m2)),
- mtx2((m1 == m2) ? 0 : (std::less<QBasicMutex *>()(m1, m2) ? m2 : m1)),
+ mtx2((m1 == m2) ? nullptr : (std::less<QBasicMutex *>()(m1, m2) ? m2 : m1)),
locked(false)
{
relock();
diff --git a/src/corelib/thread/qreadwritelock.cpp b/src/corelib/thread/qreadwritelock.cpp
index 14654986a0..8c28507d5a 100644
--- a/src/corelib/thread/qreadwritelock.cpp
+++ b/src/corelib/thread/qreadwritelock.cpp
@@ -227,7 +227,7 @@ bool QReadWriteLock::tryLockForRead(int timeout)
return true;
while (true) {
- if (d == 0) {
+ if (d == nullptr) {
if (!d_ptr.testAndSetAcquire(nullptr, dummyLockedForRead, d))
continue;
return true;
@@ -341,7 +341,7 @@ bool QReadWriteLock::tryLockForWrite(int timeout)
return true;
while (true) {
- if (d == 0) {
+ if (d == nullptr) {
if (!d_ptr.testAndSetAcquire(d, dummyLockedForWrite, d))
continue;
return true;
@@ -477,7 +477,7 @@ bool QReadWriteLockPrivate::lockForRead(int timeout)
if (elapsed > timeout)
return false;
waitingReaders++;
- readerCond.wait(&mutex, timeout - elapsed);
+ readerCond.wait(&mutex, QDeadlineTimer(timeout - elapsed));
} else {
waitingReaders++;
readerCond.wait(&mutex);
@@ -511,7 +511,7 @@ bool QReadWriteLockPrivate::lockForWrite(int timeout)
return false;
}
waitingWriters++;
- writerCond.wait(&mutex, timeout - elapsed);
+ writerCond.wait(&mutex, QDeadlineTimer(timeout - elapsed));
} else {
waitingWriters++;
writerCond.wait(&mutex);
@@ -581,7 +581,7 @@ void QReadWriteLockPrivate::recursiveUnlock()
if (self == currentWriter) {
if (--writerCount > 0)
return;
- currentWriter = 0;
+ currentWriter = nullptr;
} else {
auto it = currentReaders.find(self);
if (it == currentReaders.end()) {
diff --git a/src/corelib/thread/qresultstore.cpp b/src/corelib/thread/qresultstore.cpp
index 1b3bc20eca..0b82b938e1 100644
--- a/src/corelib/thread/qresultstore.cpp
+++ b/src/corelib/thread/qresultstore.cpp
@@ -192,7 +192,7 @@ int ResultStoreBase::addResults(int index, const void *results, int vectorSize,
ResultItem filteredIn(results, vectorSize);
insertResultItem(index, filteredIn);
}
- ResultItem filteredAway(0, totalCount - vectorSize);
+ ResultItem filteredAway(nullptr, totalCount - vectorSize);
return insertResultItem(index + vectorSize, filteredAway);
}
}
diff --git a/src/corelib/thread/qsemaphore.h b/src/corelib/thread/qsemaphore.h
index 58c12997ad..b3b9b52052 100644
--- a/src/corelib/thread/qsemaphore.h
+++ b/src/corelib/thread/qsemaphore.h
@@ -80,8 +80,7 @@ public:
explicit QSemaphoreReleaser(QSemaphore *sem, int n = 1) noexcept
: m_sem(sem), m_n(n) {}
QSemaphoreReleaser(QSemaphoreReleaser &&other) noexcept
- : m_sem(other.m_sem), m_n(other.m_n)
- { other.m_sem = nullptr; }
+ : m_sem(other.cancel()), m_n(other.m_n) {}
QSemaphoreReleaser &operator=(QSemaphoreReleaser &&other) noexcept
{ QSemaphoreReleaser moved(std::move(other)); swap(moved); return *this; }
@@ -102,9 +101,7 @@ public:
QSemaphore *cancel() noexcept
{
- QSemaphore *old = m_sem;
- m_sem = nullptr;
- return old;
+ return qExchange(m_sem, nullptr);
}
private:
diff --git a/src/corelib/thread/qthread.cpp b/src/corelib/thread/qthread.cpp
index 880ae9e046..d3bb372b00 100644
--- a/src/corelib/thread/qthread.cpp
+++ b/src/corelib/thread/qthread.cpp
@@ -49,6 +49,8 @@
#include "qthread_p.h"
#include "private/qcoreapplication_p.h"
+#include <limits>
+
QT_BEGIN_NAMESPACE
/*
@@ -57,7 +59,7 @@ QT_BEGIN_NAMESPACE
QThreadData::QThreadData(int initialRefCount)
: _ref(initialRefCount), loopLevel(0), scopeLevel(0),
- eventDispatcher(0),
+ eventDispatcher(nullptr),
quitNow(false), canWait(true), isAdopted(false), requiresCoreApplication(true)
{
// fprintf(stderr, "QThreadData %p created\n", this);
@@ -397,7 +399,7 @@ QThreadPrivate::~QThreadPrivate()
QThread *QThread::currentThread()
{
QThreadData *data = QThreadData::current();
- Q_ASSERT(data != 0);
+ Q_ASSERT(data != nullptr);
return data->thread.loadAcquire();
}
@@ -449,7 +451,7 @@ QThread::~QThread()
if (d->running && !d->finished && !d->data->isAdopted)
qFatal("QThread: Destroyed while thread is still running");
- d->data->thread = 0;
+ d->data->thread = nullptr;
}
}
@@ -726,7 +728,8 @@ QThread::Priority QThread::priority() const
*/
/*!
- \fn bool QThread::wait(unsigned long time)
+ \fn bool QThread::wait(QDeadlineTimer deadline)
+ \since 5.15
Blocks the thread until either of these conditions is met:
@@ -735,12 +738,14 @@ QThread::Priority QThread::priority() const
execution (i.e. when it returns from \l{run()}). This function
will return true if the thread has finished. It also returns
true if the thread has not been started yet.
- \li \a time milliseconds has elapsed. If \a time is ULONG_MAX (the
- default), then the wait will never timeout (the thread must
- return from \l{run()}). This function will return false if the
- wait timed out.
+ \li The \a deadline is reached. This function will return false if the
+ deadline is reached.
\endlist
+ A deadline timer set to \c QDeadlineTimer::Forever (the default) will never
+ time out: in this case, the function only returns when the thread returns
+ from \l{run()} or if the thread has not yet started.
+
This provides similar functionality to the POSIX \c
pthread_join() function.
@@ -833,9 +838,9 @@ void QThread::exit(int returnCode)
}
}
-bool QThread::wait(unsigned long time)
+bool QThread::wait(QDeadlineTimer deadline)
{
- Q_UNUSED(time);
+ Q_UNUSED(deadline);
return false;
}
@@ -966,6 +971,17 @@ void QThread::setEventDispatcher(QAbstractEventDispatcher *eventDispatcher)
}
}
+/*!
+ \fn bool QThread::wait(unsigned long time)
+ \overload
+*/
+bool QThread::wait(unsigned long time)
+{
+ if (time == std::numeric_limits<unsigned long>::max())
+ return wait(QDeadlineTimer(QDeadlineTimer::Forever));
+ return wait(QDeadlineTimer(time));
+}
+
#if QT_CONFIG(thread)
/*!
diff --git a/src/corelib/thread/qthread.h b/src/corelib/thread/qthread.h
index c7a6dc8f1a..2072e22340 100644
--- a/src/corelib/thread/qthread.h
+++ b/src/corelib/thread/qthread.h
@@ -42,6 +42,7 @@
#define QTHREAD_H
#include <QtCore/qobject.h>
+#include <QtCore/qdeadlinetimer.h>
// For QThread::create. The configure-time test just checks for the availability
// of std::future and std::async; for the C++17 codepath we perform some extra
@@ -57,8 +58,6 @@
# endif
#endif
-#include <limits.h>
-
QT_BEGIN_NAMESPACE
@@ -135,8 +134,9 @@ public Q_SLOTS:
void quit();
public:
- // default argument causes thread to block indefinetely
- bool wait(unsigned long time = ULONG_MAX);
+ bool wait(QDeadlineTimer deadline = QDeadlineTimer(QDeadlineTimer::Forever));
+ // ### Qt6 inline this function
+ bool wait(unsigned long time);
static void sleep(unsigned long);
static void msleep(unsigned long);
diff --git a/src/corelib/thread/qthread_unix.cpp b/src/corelib/thread/qthread_unix.cpp
index cb3c0d6bb1..1da68b3130 100644
--- a/src/corelib/thread/qthread_unix.cpp
+++ b/src/corelib/thread/qthread_unix.cpp
@@ -109,7 +109,7 @@ Q_STATIC_ASSERT(sizeof(pthread_t) <= sizeof(Qt::HANDLE));
enum { ThreadPriorityResetFlag = 0x80000000 };
-static thread_local QThreadData *currentThreadData = 0;
+static thread_local QThreadData *currentThreadData = nullptr;
static pthread_once_t current_thread_data_once = PTHREAD_ONCE_INIT;
static pthread_key_t current_thread_data_key;
@@ -144,7 +144,7 @@ static void destroy_current_thread_data(void *p)
#if defined(Q_OS_VXWORKS)
(void *)1);
#else
- 0);
+ nullptr);
#endif
}
@@ -182,8 +182,8 @@ static void set_thread_data(QThreadData *data)
static void clear_thread_data()
{
- currentThreadData = 0;
- pthread_setspecific(current_thread_data_key, 0);
+ currentThreadData = nullptr;
+ pthread_setspecific(current_thread_data_key, nullptr);
}
template <typename T>
@@ -226,7 +226,7 @@ QThreadData *QThreadData::current(bool createIfNecessary)
} QT_CATCH(...) {
clear_thread_data();
data->deref();
- data = 0;
+ data = nullptr;
QT_RETHROW;
}
data->deref();
@@ -294,7 +294,7 @@ static void setCurrentThreadName(const char *name)
void *QThreadPrivate::start(void *arg)
{
#if !defined(Q_OS_ANDROID)
- pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, NULL);
+ pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, nullptr);
#endif
pthread_cleanup_push(QThreadPrivate::finish, arg);
@@ -336,7 +336,7 @@ void *QThreadPrivate::start(void *arg)
emit thr->started(QThread::QPrivateSignal());
#if !defined(Q_OS_ANDROID)
- pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL);
+ pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, nullptr);
pthread_testcancel();
#endif
thr->run();
@@ -360,7 +360,7 @@ void *QThreadPrivate::start(void *arg)
// thrown.
pthread_cleanup_pop(1);
- return 0;
+ return nullptr;
}
void QThreadPrivate::finish(void *arg)
@@ -379,13 +379,13 @@ void QThreadPrivate::finish(void *arg)
void *data = &d->data->tls;
locker.unlock();
emit thr->finished(QThread::QPrivateSignal());
- QCoreApplication::sendPostedEvents(0, QEvent::DeferredDelete);
+ QCoreApplication::sendPostedEvents(nullptr, QEvent::DeferredDelete);
QThreadStorageData::finish((void **)data);
locker.relock();
QAbstractEventDispatcher *eventDispatcher = d->data->eventDispatcher.loadRelaxed();
if (eventDispatcher) {
- d->data->eventDispatcher = 0;
+ d->data->eventDispatcher = nullptr;
locker.unlock();
eventDispatcher->closingDown();
delete eventDispatcher;
@@ -751,7 +751,7 @@ void QThread::terminate()
#endif
}
-bool QThread::wait(unsigned long time)
+bool QThread::wait(QDeadlineTimer deadline)
{
Q_D(QThread);
QMutexLocker locker(&d->mutex);
@@ -765,7 +765,7 @@ bool QThread::wait(unsigned long time)
return true;
while (d->running) {
- if (!d->thread_done.wait(locker.mutex(), time))
+ if (!d->thread_done.wait(locker.mutex(), deadline))
return false;
}
return true;
@@ -774,14 +774,14 @@ bool QThread::wait(unsigned long time)
void QThread::setTerminationEnabled(bool enabled)
{
QThread *thr = currentThread();
- Q_ASSERT_X(thr != 0, "QThread::setTerminationEnabled()",
+ Q_ASSERT_X(thr != nullptr, "QThread::setTerminationEnabled()",
"Current thread was not started with QThread.");
Q_UNUSED(thr)
#if defined(Q_OS_ANDROID)
Q_UNUSED(enabled);
#else
- pthread_setcancelstate(enabled ? PTHREAD_CANCEL_ENABLE : PTHREAD_CANCEL_DISABLE, NULL);
+ pthread_setcancelstate(enabled ? PTHREAD_CANCEL_ENABLE : PTHREAD_CANCEL_DISABLE, nullptr);
if (enabled)
pthread_testcancel();
#endif
diff --git a/src/corelib/thread/qthread_win.cpp b/src/corelib/thread/qthread_win.cpp
index a72df2fc40..3df7080caf 100644
--- a/src/corelib/thread/qthread_win.cpp
+++ b/src/corelib/thread/qthread_win.cpp
@@ -610,7 +610,7 @@ void QThread::terminate()
QThreadPrivate::finish(this, false);
}
-bool QThread::wait(unsigned long time)
+bool QThread::wait(QDeadlineTimer deadline)
{
Q_D(QThread);
QMutexLocker locker(&d->mutex);
@@ -627,9 +627,9 @@ bool QThread::wait(unsigned long time)
bool ret = false;
#ifndef Q_OS_WINRT
- switch (WaitForSingleObject(d->handle, time)) {
+ switch (WaitForSingleObject(d->handle, deadline.remainingTime())) {
#else
- switch (WaitForSingleObjectEx(d->handle, time, false)) {
+ switch (WaitForSingleObjectEx(d->handle, deadline.remainingTime(), false)) {
#endif
case WAIT_OBJECT_0:
ret = true;
diff --git a/src/corelib/thread/qthreadpool.cpp b/src/corelib/thread/qthreadpool.cpp
index 4d2389f699..5f23a78c8a 100644
--- a/src/corelib/thread/qthreadpool.cpp
+++ b/src/corelib/thread/qthreadpool.cpp
@@ -136,7 +136,7 @@ void QThreadPoolThread::run()
manager->waitingThreads.enqueue(this);
registerThreadInactive();
// wait for work, exiting after the expiry timeout is reached
- runnableReady.wait(locker.mutex(), manager->expiryTimeout);
+ runnableReady.wait(locker.mutex(), QDeadlineTimer(manager->expiryTimeout));
++manager->activeThreads;
if (manager->waitingThreads.removeOne(this))
expired = true;
diff --git a/src/corelib/thread/qthreadstorage.cpp b/src/corelib/thread/qthreadstorage.cpp
index fdc484d2d2..464559ffa5 100644
--- a/src/corelib/thread/qthreadstorage.cpp
+++ b/src/corelib/thread/qthreadstorage.cpp
@@ -116,7 +116,7 @@ void **QThreadStorageData::get() const
QThreadData *data = QThreadData::current();
if (!data) {
qWarning("QThreadStorage::get: QThreadStorage can only be used with threads started with QThread");
- return 0;
+ return nullptr;
}
QVector<void *> &tls = data->tls;
if (tls.size() <= id)
@@ -128,7 +128,7 @@ void **QThreadStorageData::get() const
*v,
data->thread.loadRelaxed());
- return *v ? v : 0;
+ return *v ? v : nullptr;
}
void **QThreadStorageData::set(void *p)
@@ -136,7 +136,7 @@ void **QThreadStorageData::set(void *p)
QThreadData *data = QThreadData::current();
if (!data) {
qWarning("QThreadStorage::set: QThreadStorage can only be used with threads started with QThread");
- return 0;
+ return nullptr;
}
QVector<void *> &tls = data->tls;
if (tls.size() <= id)
@@ -144,7 +144,7 @@ void **QThreadStorageData::set(void *p)
void *&value = tls[id];
// delete any previous data
- if (value != 0) {
+ if (value != nullptr) {
DEBUG_MSG("QThreadStorageData: Deleting previous storage %d, data %p, for thread %p",
id,
value,
@@ -156,7 +156,7 @@ void **QThreadStorageData::set(void *p)
locker.unlock();
void *q = value;
- value = 0;
+ value = nullptr;
if (destructor)
destructor(q);
@@ -178,7 +178,7 @@ void QThreadStorageData::finish(void **p)
while (!tls->isEmpty()) {
void *&value = tls->last();
void *q = value;
- value = 0;
+ value = nullptr;
int i = tls->size() - 1;
tls->resize(i);
diff --git a/src/corelib/thread/qwaitcondition.h b/src/corelib/thread/qwaitcondition.h
index 11520e4cfe..079049af25 100644
--- a/src/corelib/thread/qwaitcondition.h
+++ b/src/corelib/thread/qwaitcondition.h
@@ -40,15 +40,12 @@
#ifndef QWAITCONDITION_H
#define QWAITCONDITION_H
-#include <QtCore/qglobal.h>
-
-#include <limits.h>
+#include <QtCore/QDeadlineTimer>
QT_BEGIN_NAMESPACE
#if QT_CONFIG(thread)
-class QDeadlineTimer;
class QWaitConditionPrivate;
class QMutex;
class QReadWriteLock;
@@ -59,11 +56,16 @@ public:
QWaitCondition();
~QWaitCondition();
- // ### Qt 6: remove unsigned long overloads
- bool wait(QMutex *lockedMutex, unsigned long time = ULONG_MAX);
- bool wait(QMutex *lockedMutex, QDeadlineTimer deadline);
- bool wait(QReadWriteLock *lockedReadWriteLock, unsigned long time = ULONG_MAX);
- bool wait(QReadWriteLock *lockedReadWriteLock, QDeadlineTimer deadline);
+ bool wait(QMutex *lockedMutex,
+ QDeadlineTimer deadline = QDeadlineTimer(QDeadlineTimer::Forever));
+ bool wait(QReadWriteLock *lockedReadWriteLock,
+ QDeadlineTimer deadline = QDeadlineTimer(QDeadlineTimer::Forever));
+#if QT_DEPRECATED_SINCE(5, 15)
+ QT_DEPRECATED_VERSION_X_5_15("Use wait(QMutex *lockedMutex, QDeadlineTimer deadline) instead")
+ bool wait(QMutex *lockedMutex, unsigned long time);
+ QT_DEPRECATED_VERSION_X_5_15("Use wait(QReadWriteLock *lockedReadWriteLock, QDeadlineTimer deadline) instead")
+ bool wait(QReadWriteLock *lockedReadWriteLock, unsigned long time);
+#endif
void wakeOne();
void wakeAll();
@@ -80,21 +82,28 @@ private:
#else
class QMutex;
+class QReadWriteLock;
+
class Q_CORE_EXPORT QWaitCondition
{
public:
QWaitCondition() {}
~QWaitCondition() {}
- bool wait(QMutex *mutex, unsigned long time = ULONG_MAX)
- {
- Q_UNUSED(mutex);
- Q_UNUSED(time);
- return true;
- }
+ bool wait(QMutex *, QDeadlineTimer = QDeadlineTimer(QDeadlineTimer::Forever))
+ { return true; }
+ bool wait(QReadWriteLock *, QDeadlineTimer = QDeadlineTimer(QDeadlineTimer::Forever))
+ { return true; }
+#if QT_DEPRECATED_SINCE(5, 15)
+ bool wait(QMutex *, unsigned long) { return true; }
+ bool wait(QReadWriteLock *, unsigned long) { return true; }
+#endif
void wakeOne() {}
void wakeAll() {}
+
+ void notify_one() { wakeOne(); }
+ void notify_all() { wakeAll(); }
};
#endif // QT_CONFIG(thread)
diff --git a/src/corelib/thread/qwaitcondition.qdoc b/src/corelib/thread/qwaitcondition.qdoc
index eebc28f059..9da6f6f25c 100644
--- a/src/corelib/thread/qwaitcondition.qdoc
+++ b/src/corelib/thread/qwaitcondition.qdoc
@@ -119,10 +119,22 @@
\sa wakeOne()
*/
+#if QT_DEPRECATED_SINCE(5, 15)
/*!
\fn bool QWaitCondition::wait(QMutex *lockedMutex, unsigned long time)
+ \obsolete use wait(QMutex *lockedMutex, QDeadlineTimer deadline) instead
+*/
+/*!
+ \fn bool QWaitCondition::wait(QReadWriteLock *lockedReadWriteLock, unsigned long time)
+ \obsolete use wait(QReadWriteLock *lockedReadWriteLock, QDeadlineTimer deadline) instead
+*/
+#endif
- Releases the \a lockedMutex and waits on the wait condition. The
+/*!
+ \fn bool QWaitCondition::wait(QMutex *lockedMutex, QDeadlineTimer deadline)
+ \since 5.12
+
+ Releases the \a lockedMutex and waits on the wait condition. The
\a lockedMutex must be initially locked by the calling thread. If \a
lockedMutex is not in a locked state, the behavior is undefined. If
\a lockedMutex is a recursive mutex, this function
@@ -132,10 +144,10 @@
\list
\li Another thread signals it using wakeOne() or wakeAll(). This
function will return true in this case.
- \li \a time milliseconds has elapsed. If \a time is \c ULONG_MAX
- (the default), then the wait will never timeout (the event
- must be signalled). This function will return false if the
- wait timed out.
+ \li the deadline given by \a deadline is reached. If \a deadline is
+ \c QDeadlineTimer::Forever (the default), then the wait will never
+ timeout (the event must be signalled). This function will return
+ false if the wait timed out.
\endlist
The \a lockedMutex will be returned to the same locked state. This
@@ -146,8 +158,8 @@
*/
/*!
- \fn bool QWaitCondition::wait(QReadWriteLock *lockedReadWriteLock, unsigned long time)
- \since 4.4
+ \fn bool QWaitCondition::wait(QReadWriteLock *lockedReadWriteLock, QDeadlineTimer deadline)
+ \since 5.12
Releases the \a lockedReadWriteLock and waits on the wait
condition. The \a lockedReadWriteLock must be initially locked by the
@@ -160,10 +172,10 @@
\list
\li Another thread signals it using wakeOne() or wakeAll(). This
function will return true in this case.
- \li \a time milliseconds has elapsed. If \a time is \c ULONG_MAX
- (the default), then the wait will never timeout (the event
- must be signalled). This function will return false if the
- wait timed out.
+ \li the deadline given by \a deadline is reached. If \a deadline is
+ \c QDeadlineTimer::Forever (the default), then the wait will never
+ timeout (the event must be signalled). This function will return
+ false if the wait timed out.
\endlist
The \a lockedReadWriteLock will be returned to the same locked
diff --git a/src/corelib/thread/qwaitcondition_p.h b/src/corelib/thread/qwaitcondition_p.h
new file mode 100644
index 0000000000..5133e52e92
--- /dev/null
+++ b/src/corelib/thread/qwaitcondition_p.h
@@ -0,0 +1,153 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Marc Mutz <marc.mutz@kdab.com>
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the QtCore module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef QWAITCONDITION_P_H
+#define QWAITCONDITION_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of qmutex.cpp, qmutex_unix.cpp, and qmutex_win.cpp. This header
+// file may change from version to version without notice, or even be
+// removed.
+//
+// We mean it.
+//
+
+#include <QtCore/QWaitCondition>
+#include <QtCore/QMutex>
+#include <QtCore/QDeadlineTimer>
+
+#include <condition_variable>
+#include <mutex>
+
+QT_BEGIN_NAMESPACE
+
+namespace QtPrivate
+{
+
+#if defined(Q_OS_INTEGRITY)
+
+class condition_variable;
+
+class mutex : private QMutex
+{
+ friend class QtPrivate::condition_variable;
+public:
+ // all special member functions are ok!
+ // do not expose the (QMutex::Recursive) ctor
+ // don't use 'using QMutex::lock;' etc as those have the wrong noexcept
+
+ void lock() { return QMutex::lock(); }
+ void unlock() { return QMutex::unlock(); }
+ bool try_lock() { return QMutex::tryLock(); }
+};
+
+class condition_variable : private QWaitCondition
+{
+public:
+ // all special member functions are ok!
+
+ void notify_one() { QWaitCondition::wakeOne(); }
+ void notify_all() { QWaitCondition::wakeAll(); }
+
+ void wait(std::unique_lock<QtPrivate::mutex> &lock) { QWaitCondition::wait(lock.mutex()); }
+ template <class Predicate>
+ void wait(std::unique_lock<QtPrivate::mutex> &lock, Predicate p)
+ {
+ while (!p())
+ wait(lock);
+ }
+
+ template <typename Rep, typename Period>
+ std::cv_status wait_for(std::unique_lock<QtPrivate::mutex> &lock,
+ const std::chrono::duration<Rep, Period> &d)
+ {
+ return QWaitCondition::wait(lock.mutex(), QDeadlineTimer{d})
+ ? std::cv_status::no_timeout
+ : std::cv_status::timeout;
+ }
+ template <typename Rep, typename Period, typename Predicate>
+ bool wait_for(std::unique_lock<QtPrivate::mutex> &lock,
+ const std::chrono::duration<Rep, Period> &d, Predicate p)
+ {
+ const auto timer = QDeadlineTimer{d};
+ while (!p()) {
+ if (!QWaitCondition::wait(lock.mutex(), timer))
+ return p();
+ }
+ return true;
+ }
+
+ template <typename Clock, typename Duration>
+ std::cv_status wait_until(std::unique_lock<QtPrivate::mutex> &lock,
+ const std::chrono::time_point<Clock, Duration> &t)
+ {
+ return QWaitCondition::wait(lock.mutex(), QDeadlineTimer{t})
+ ? std::cv_status::no_timeout
+ : std::cv_status::timeout;
+ }
+
+ template <typename Clock, typename Duration, typename Predicate>
+ bool wait_until(std::unique_lock<QtPrivate::mutex> &lock,
+ const std::chrono::time_point<Clock, Duration> &t, Predicate p)
+ {
+ const auto timer = QDeadlineTimer{t};
+ while (!p()) {
+ if (!QWaitCondition::wait(lock.mutex(), timer))
+ return p();
+ }
+ return true;
+ }
+
+};
+
+#else // Integrity
+
+using mutex = std::mutex;
+using condition_variable = std::condition_variable;
+
+#endif // Integrity
+
+} // namespace QtPrivate
+
+QT_END_NAMESPACE
+
+#endif /* QWAITCONDITION_P_H */
diff --git a/src/corelib/thread/qwaitcondition_unix.cpp b/src/corelib/thread/qwaitcondition_unix.cpp
index dd7475cec5..80f9e780e7 100644
--- a/src/corelib/thread/qwaitcondition_unix.cpp
+++ b/src/corelib/thread/qwaitcondition_unix.cpp
@@ -173,7 +173,7 @@ public:
QWaitCondition::QWaitCondition()
{
d = new QWaitConditionPrivate;
- report_error(pthread_mutex_init(&d->mutex, NULL), "QWaitCondition", "mutex init");
+ report_error(pthread_mutex_init(&d->mutex, nullptr), "QWaitCondition", "mutex init");
qt_initialize_pthread_cond(&d->cond, "QWaitCondition");
d->waiters = d->wakeups = 0;
}
@@ -202,12 +202,14 @@ void QWaitCondition::wakeAll()
report_error(pthread_mutex_unlock(&d->mutex), "QWaitCondition::wakeAll()", "mutex unlock");
}
+#if QT_DEPRECATED_SINCE(5, 15)
bool QWaitCondition::wait(QMutex *mutex, unsigned long time)
{
if (time == std::numeric_limits<unsigned long>::max())
return wait(mutex, QDeadlineTimer(QDeadlineTimer::Forever));
return wait(mutex, QDeadlineTimer(time));
}
+#endif
bool QWaitCondition::wait(QMutex *mutex, QDeadlineTimer deadline)
{
@@ -229,12 +231,14 @@ bool QWaitCondition::wait(QMutex *mutex, QDeadlineTimer deadline)
return returnValue;
}
+#if QT_DEPRECATED_SINCE(5, 15)
bool QWaitCondition::wait(QReadWriteLock *readWriteLock, unsigned long time)
{
if (time == std::numeric_limits<unsigned long>::max())
return wait(readWriteLock, QDeadlineTimer(QDeadlineTimer::Forever));
return wait(readWriteLock, QDeadlineTimer(time));
}
+#endif
bool QWaitCondition::wait(QReadWriteLock *readWriteLock, QDeadlineTimer deadline)
{
diff --git a/src/corelib/thread/thread.pri b/src/corelib/thread/thread.pri
index 9fc9af0e65..25cf68a324 100644
--- a/src/corelib/thread/thread.pri
+++ b/src/corelib/thread/thread.pri
@@ -6,6 +6,7 @@ HEADERS += \
thread/qrunnable.h \
thread/qthread.h \
thread/qthreadstorage.h \
+ thread/qwaitcondition_p.h \
thread/qwaitcondition.h
SOURCES += \
diff --git a/src/corelib/time/qdatetime.cpp b/src/corelib/time/qdatetime.cpp
index a8d643d483..67d37f19d8 100644
--- a/src/corelib/time/qdatetime.cpp
+++ b/src/corelib/time/qdatetime.cpp
@@ -1794,7 +1794,7 @@ QDate QDate::fromString(const QString &string, const QString &format, QCalendar
QDateTimeParser dt(QVariant::Date, QDateTimeParser::FromString, cal);
// dt.setDefaultLocale(QLocale::c()); ### Qt 6
if (dt.parseFormat(format))
- dt.fromString(string, &date, 0);
+ dt.fromString(string, &date, nullptr);
#else
Q_UNUSED(string);
Q_UNUSED(format);
@@ -2540,7 +2540,7 @@ QTime QTime::fromString(const QString &string, const QString &format)
QDateTimeParser dt(QVariant::Time, QDateTimeParser::FromString, QCalendar());
// dt.setDefaultLocale(QLocale::c()); ### Qt 6
if (dt.parseFormat(format))
- dt.fromString(string, 0, &time);
+ dt.fromString(string, nullptr, &time);
#else
Q_UNUSED(string);
Q_UNUSED(format);
@@ -3307,7 +3307,7 @@ inline QDateTime::Data::Data(Qt::TimeSpec spec)
// the structure is too small, we need to detach
d = new QDateTimePrivate;
d->ref.ref();
- d->m_status = mergeSpec(nullptr, spec);
+ d->m_status = mergeSpec({}, spec);
}
}
diff --git a/src/corelib/time/qdatetimeparser.cpp b/src/corelib/time/qdatetimeparser.cpp
index 61214b0c7e..fa0884c827 100644
--- a/src/corelib/time/qdatetimeparser.cpp
+++ b/src/corelib/time/qdatetimeparser.cpp
@@ -405,7 +405,7 @@ bool QDateTimeParser::parseFormat(const QString &newFormat)
QDTPDEBUGN("parseFormat: %s", newFormat.toLatin1().constData());
QVector<SectionNode> newSectionNodes;
- Sections newDisplay = 0;
+ Sections newDisplay;
QStringList newSeparators;
int i, index = 0;
int add = 0;
@@ -1152,7 +1152,7 @@ QDateTimeParser::scanString(const QDateTime &defaultValue,
}
pos += separator.size();
sectionNodes[index].pos = pos;
- int *current = 0;
+ int *current = nullptr;
const SectionNode sn = sectionNodes.at(index);
ParsedSection sect;
@@ -1797,7 +1797,7 @@ int QDateTimeParser::SectionNode::maxChange() const
QDateTimeParser::FieldInfo QDateTimeParser::fieldInfo(int index) const
{
- FieldInfo ret = 0;
+ FieldInfo ret;
const SectionNode &sn = sectionNode(index);
switch (sn.type) {
case MSecSection:
diff --git a/src/corelib/time/qdatetimeparser_p.h b/src/corelib/time/qdatetimeparser_p.h
index e9f1455380..ec4e4e4df2 100644
--- a/src/corelib/time/qdatetimeparser_p.h
+++ b/src/corelib/time/qdatetimeparser_p.h
@@ -84,7 +84,7 @@ public:
DateTimeEdit
};
QDateTimeParser(QVariant::Type t, Context ctx, const QCalendar &cal = QCalendar())
- : currentSectionIndex(-1), display(nullptr), cachedDay(-1), parserType(t),
+ : currentSectionIndex(-1), cachedDay(-1), parserType(t),
fixday(false), spec(Qt::LocalTime), context(ctx), calendar(cal)
{
defaultLocale = QLocale::system();
diff --git a/src/corelib/time/qtimezone.cpp b/src/corelib/time/qtimezone.cpp
index ef323de14a..3d2078087b 100644
--- a/src/corelib/time/qtimezone.cpp
+++ b/src/corelib/time/qtimezone.cpp
@@ -318,27 +318,40 @@ Q_GLOBAL_STATIC(QTimeZoneSingleton, global_tz);
*/
QTimeZone::QTimeZone() noexcept
- : d(0)
+ : d(nullptr)
{
}
/*!
Creates an instance of the requested time zone \a ianaId.
- The ID must be one of the available system IDs otherwise an invalid
- time zone will be returned.
+ The ID must be one of the available system IDs or a valid UTC-with-offset
+ ID, otherwise an invalid time zone will be returned.
\sa availableTimeZoneIds()
*/
QTimeZone::QTimeZone(const QByteArray &ianaId)
{
- // Try and see if it's a valid UTC offset ID, just as quick to try create as look-up
+ // Try and see if it's a CLDR UTC offset ID - just as quick by creating as
+ // by looking up.
d = new QUtcTimeZonePrivate(ianaId);
- // If not a valid UTC offset ID then try create it with the system backend
- // Relies on backend not creating valid tz with invalid name
+ // If not a CLDR UTC offset ID then try creating it with the system backend.
+ // Relies on backend not creating valid TZ with invalid name.
if (!d->isValid())
d = newBackendTimeZone(ianaId);
+ // Can also handle UTC with arbitrary (valid) offset, but only do so as
+ // fall-back, since either of the above may handle it more informatively.
+ if (!d->isValid()) {
+ qint64 offset = QUtcTimeZonePrivate::offsetFromUtcString(ianaId);
+ if (offset != QTimeZonePrivate::invalidSeconds()) {
+ // Should have abs(offset) < 24 * 60 * 60 = 86400.
+ qint32 seconds = qint32(offset);
+ Q_ASSERT(qint64(seconds) == offset);
+ // NB: this canonicalises the name, so it might not match ianaId
+ d = new QUtcTimeZonePrivate(seconds);
+ }
+ }
}
/*!
diff --git a/src/corelib/time/qtimezoneprivate.cpp b/src/corelib/time/qtimezoneprivate.cpp
index cb019fa1a5..facdf6661d 100644
--- a/src/corelib/time/qtimezoneprivate.cpp
+++ b/src/corelib/time/qtimezoneprivate.cpp
@@ -1,5 +1,6 @@
/****************************************************************************
**
+** Copyright (C) 2019 The Qt Company Ltd.
** Copyright (C) 2013 John Layt <jlayt@kde.org>
** Contact: https://www.qt.io/licensing/
**
@@ -764,6 +765,39 @@ QUtcTimeZonePrivate::QUtcTimeZonePrivate(const QByteArray &id)
}
}
+qint64 QUtcTimeZonePrivate::offsetFromUtcString(const QByteArray &id)
+{
+ // Convert reasonable UTC[+-]\d+(:\d+){,2} to offset in seconds.
+ // Assumption: id has already been tried as a CLDR UTC offset ID (notably
+ // including plain "UTC" itself) and a system offset ID; it's neither.
+ if (!id.startsWith("UTC") || id.size() < 5)
+ return invalidSeconds(); // Doesn't match
+ const char signChar = id.at(3);
+ if (signChar != '-' && signChar != '+')
+ return invalidSeconds(); // No sign
+ const int sign = signChar == '-' ? -1 : 1;
+
+ const auto offsets = id.mid(4).split(':');
+ if (offsets.isEmpty() || offsets.size() > 3)
+ return invalidSeconds(); // No numbers, or too many.
+
+ qint32 seconds = 0;
+ int prior = 0; // Number of fields parsed thus far
+ for (const auto &offset : offsets) {
+ bool ok = false;
+ unsigned short field = offset.toUShort(&ok);
+ // Bound hour above at 24, minutes and seconds at 60:
+ if (!ok || field >= (prior ? 60 : 24))
+ return invalidSeconds();
+ seconds = seconds * 60 + field;
+ ++prior;
+ }
+ while (prior++ < 3)
+ seconds *= 60;
+
+ return seconds * sign;
+}
+
// Create offset from UTC
QUtcTimeZonePrivate::QUtcTimeZonePrivate(qint32 offsetSeconds)
{
@@ -877,22 +911,25 @@ QByteArray QUtcTimeZonePrivate::systemTimeZoneId() const
bool QUtcTimeZonePrivate::isTimeZoneIdAvailable(const QByteArray &ianaId) const
{
+ // Only the zone IDs supplied by CLDR and recognized by constructor.
for (int i = 0; i < utcDataTableSize; ++i) {
const QUtcData *data = utcData(i);
- if (utcId(data) == ianaId) {
+ if (utcId(data) == ianaId)
return true;
- }
}
+ // But see offsetFromUtcString(), which lets us accept some "unavailable" IDs.
return false;
}
QList<QByteArray> QUtcTimeZonePrivate::availableTimeZoneIds() const
{
+ // Only the zone IDs supplied by CLDR and recognized by constructor.
QList<QByteArray> result;
result.reserve(utcDataTableSize);
for (int i = 0; i < utcDataTableSize; ++i)
result << utcId(utcData(i));
- std::sort(result.begin(), result.end()); // ### or already sorted??
+ // Not guaranteed to be sorted, so sort:
+ std::sort(result.begin(), result.end());
// ### assuming no duplicates
return result;
}
@@ -907,13 +944,16 @@ QList<QByteArray> QUtcTimeZonePrivate::availableTimeZoneIds(QLocale::Country cou
QList<QByteArray> QUtcTimeZonePrivate::availableTimeZoneIds(qint32 offsetSeconds) const
{
+ // Only if it's present in CLDR. (May get more than one ID: UTC, UTC+00:00
+ // and UTC-00:00 all have the same offset.)
QList<QByteArray> result;
for (int i = 0; i < utcDataTableSize; ++i) {
const QUtcData *data = utcData(i);
if (data->offsetFromUtc == offsetSeconds)
result << utcId(data);
}
- std::sort(result.begin(), result.end()); // ### or already sorted??
+ // Not guaranteed to be sorted, so sort:
+ std::sort(result.begin(), result.end());
// ### assuming no duplicates
return result;
}
diff --git a/src/corelib/time/qtimezoneprivate_icu.cpp b/src/corelib/time/qtimezoneprivate_icu.cpp
index 5570ce7571..8a92bbb387 100644
--- a/src/corelib/time/qtimezoneprivate_icu.cpp
+++ b/src/corelib/time/qtimezoneprivate_icu.cpp
@@ -273,7 +273,7 @@ static int ucalDaylightOffset(const QByteArray &id)
// Create the system default time zone
QIcuTimeZonePrivate::QIcuTimeZonePrivate()
- : m_ucal(0)
+ : m_ucal(nullptr)
{
// TODO No ICU C API to obtain sysem tz, assume default hasn't been changed
init(ucalDefaultTimeZoneId());
@@ -281,7 +281,7 @@ QIcuTimeZonePrivate::QIcuTimeZonePrivate()
// Create a named time zone
QIcuTimeZonePrivate::QIcuTimeZonePrivate(const QByteArray &ianaId)
- : m_ucal(0)
+ : m_ucal(nullptr)
{
// Need to check validity here as ICu will create a GMT tz if name is invalid
if (availableTimeZoneIds().contains(ianaId))
@@ -289,14 +289,14 @@ QIcuTimeZonePrivate::QIcuTimeZonePrivate(const QByteArray &ianaId)
}
QIcuTimeZonePrivate::QIcuTimeZonePrivate(const QIcuTimeZonePrivate &other)
- : QTimeZonePrivate(other), m_ucal(0)
+ : QTimeZonePrivate(other), m_ucal(nullptr)
{
// Clone the ucal so we don't close the shared object
UErrorCode status = U_ZERO_ERROR;
m_ucal = ucal_clone(other.m_ucal, &status);
if (!U_SUCCESS(status)) {
m_id.clear();
- m_ucal = 0;
+ m_ucal = nullptr;
}
}
@@ -322,7 +322,7 @@ void QIcuTimeZonePrivate::init(const QByteArray &ianaId)
if (!U_SUCCESS(status)) {
m_id.clear();
- m_ucal = 0;
+ m_ucal = nullptr;
}
}
@@ -493,7 +493,7 @@ QList<QByteArray> QIcuTimeZonePrivate::availableTimeZoneIds(int offsetFromUtc) c
// TODO Available directly in C++ api but not C api, from 4.8 onwards new filter method works
#if U_ICU_VERSION_MAJOR_NUM >= 49 || (U_ICU_VERSION_MAJOR_NUM == 4 && U_ICU_VERSION_MINOR_NUM == 8)
UErrorCode status = U_ZERO_ERROR;
- UEnumeration *uenum = ucal_openTimeZoneIDEnumeration(UCAL_ZONE_TYPE_ANY, 0,
+ UEnumeration *uenum = ucal_openTimeZoneIDEnumeration(UCAL_ZONE_TYPE_ANY, nullptr,
&offsetFromUtc, &status);
QList<QByteArray> result;
if (U_SUCCESS(status))
diff --git a/src/corelib/time/qtimezoneprivate_p.h b/src/corelib/time/qtimezoneprivate_p.h
index 5f6491ef81..a57f61f381 100644
--- a/src/corelib/time/qtimezoneprivate_p.h
+++ b/src/corelib/time/qtimezoneprivate_p.h
@@ -188,6 +188,9 @@ public:
QUtcTimeZonePrivate(const QUtcTimeZonePrivate &other);
virtual ~QUtcTimeZonePrivate();
+ // Fall-back for UTC[+-]\d+(:\d+){,2} IDs.
+ static qint64 offsetFromUtcString(const QByteArray &id);
+
QUtcTimeZonePrivate *clone() const override;
Data data(qint64 forMSecsSinceEpoch) const override;
diff --git a/src/corelib/time/qtimezoneprivate_tz.cpp b/src/corelib/time/qtimezoneprivate_tz.cpp
index 3c2695a789..5e55c6897d 100644
--- a/src/corelib/time/qtimezoneprivate_tz.cpp
+++ b/src/corelib/time/qtimezoneprivate_tz.cpp
@@ -512,7 +512,7 @@ PosixZone PosixZone::parse(const char *&pos, const char *end)
if (zoneEnd < end && (zoneEnd[0] == '+' || zoneEnd[0] == '-'))
++zoneEnd;
while (zoneEnd < end) {
- if (strchr(offsetChars, char(*zoneEnd)) == NULL)
+ if (strchr(offsetChars, char(*zoneEnd)) == nullptr)
break;
++zoneEnd;
}
diff --git a/src/corelib/tools/qarraydata.cpp b/src/corelib/tools/qarraydata.cpp
index 234a44f6b6..3879b48cbb 100644
--- a/src/corelib/tools/qarraydata.cpp
+++ b/src/corelib/tools/qarraydata.cpp
@@ -143,7 +143,7 @@ qCalculateGrowingBlockSize(size_t elementCount, size_t elementSize, size_t heade
}
result.elementCount = (bytes - unsigned(headerSize)) / unsigned(elementSize);
- result.size = bytes;
+ result.size = result.elementCount * elementSize + headerSize;
return result;
}
@@ -265,7 +265,7 @@ void QArrayData::deallocate(QArrayData *data, size_t objectSize,
return;
#endif
- Q_ASSERT_X(data == 0 || !data->ref.isStatic(), "QArrayData::deallocate",
+ Q_ASSERT_X(data == nullptr || !data->ref.isStatic(), "QArrayData::deallocate",
"Static data cannot be deleted");
::free(data);
}
diff --git a/src/corelib/tools/qeasingcurve.cpp b/src/corelib/tools/qeasingcurve.cpp
index 52c8d13fe3..7f9b6ef39f 100644
--- a/src/corelib/tools/qeasingcurve.cpp
+++ b/src/corelib/tools/qeasingcurve.cpp
@@ -443,12 +443,12 @@ class QEasingCurvePrivate
public:
QEasingCurvePrivate()
: type(QEasingCurve::Linear),
- config(0),
+ config(nullptr),
func(&easeNone)
{ }
QEasingCurvePrivate(const QEasingCurvePrivate &other)
: type(other.type),
- config(other.config ? other.config->copy() : 0),
+ config(other.config ? other.config->copy() : nullptr),
func(other.func)
{ }
~QEasingCurvePrivate() { delete config; }
@@ -590,7 +590,7 @@ struct BezierEase : public QEasingCurveFunction
if (!(x < 1))
return 1;
- SingleCubicBezier *singleCubicBezier = 0;
+ SingleCubicBezier *singleCubicBezier = nullptr;
getBezierSegment(singleCubicBezier, x);
return evaluateSegmentForY(*singleCubicBezier, findTForX(*singleCubicBezier, x));
@@ -1097,7 +1097,7 @@ static QEasingCurve::EasingFunction curveToFunc(QEasingCurve::Type curve)
case QEasingCurve::CosineCurve:
return &easeCosineCurve;
default:
- return 0;
+ return nullptr;
};
}
@@ -1127,7 +1127,7 @@ static QEasingCurveFunction *curveToFunctionObject(QEasingCurve::Type type)
return new QEasingCurveFunction(type, qreal(0.3), qreal(1.0), qreal(1.70158));
}
- return 0;
+ return nullptr;
}
/*!
@@ -1422,7 +1422,7 @@ void QEasingCurvePrivate::setType_helper(QEasingCurve::Type newType)
tcbPoints = std::move(config->_tcbPoints);
delete config;
- config = 0;
+ config = nullptr;
}
if (isConfigFunction(newType) || (amp != -1.0) || (period != -1.0) || (overshoot != -1.0) ||
@@ -1436,11 +1436,11 @@ void QEasingCurvePrivate::setType_helper(QEasingCurve::Type newType)
config->_o = overshoot;
config->_bezierCurves = std::move(bezierCurves);
config->_tcbPoints = std::move(tcbPoints);
- func = 0;
+ func = nullptr;
} else if (newType != QEasingCurve::Custom) {
func = curveToFunc(newType);
}
- Q_ASSERT((func == 0) == (config != 0));
+ Q_ASSERT((func == nullptr) == (config != nullptr));
type = newType;
}
@@ -1487,7 +1487,7 @@ void QEasingCurve::setCustomType(EasingFunction func)
*/
QEasingCurve::EasingFunction QEasingCurve::customType() const
{
- return d_ptr->type == Custom ? d_ptr->func : 0;
+ return d_ptr->type == Custom ? d_ptr->func : nullptr;
}
/*!
diff --git a/src/corelib/tools/qhash.cpp b/src/corelib/tools/qhash.cpp
index a53d6db997..dcac91778f 100644
--- a/src/corelib/tools/qhash.cpp
+++ b/src/corelib/tools/qhash.cpp
@@ -1807,6 +1807,18 @@ uint qHash(long double key, uint seed) noexcept
\sa insertMulti()
*/
+/*! \fn template <class Key, class T> void QHash<Key, T>::insert(const QHash &other)
+ \since 5.15
+
+ Inserts all the items in the \a other hash into this hash.
+
+ If a key is common to both hashes, its value will be replaced with the
+ value stored in \a other.
+
+ \note If \a other contains multiple entries with the same key then the
+ final value of the key is undefined.
+*/
+
/*! \fn template <class Key, class T> QHash<Key, T>::iterator QHash<Key, T>::insertMulti(const Key &key, const T &value)
Inserts a new item with the \a key and a value of \a value.
diff --git a/src/corelib/tools/qhash.h b/src/corelib/tools/qhash.h
index 236e433101..89697b1fd1 100644
--- a/src/corelib/tools/qhash.h
+++ b/src/corelib/tools/qhash.h
@@ -325,7 +325,11 @@ public:
QHashData::Node *i;
public:
+#if QT_DEPRECATED_SINCE(5, 15)
typedef std::bidirectional_iterator_tag iterator_category;
+#else
+ typedef std::forward_iterator_tag iterator_category;
+#endif
typedef qptrdiff difference_type;
typedef T value_type;
typedef T *pointer;
@@ -350,21 +354,25 @@ public:
i = QHashData::nextNode(i);
return r;
}
- inline iterator &operator--() {
+#if QT_DEPRECATED_SINCE(5, 15)
+ inline QT_DEPRECATED iterator &operator--()
+ {
i = QHashData::previousNode(i);
return *this;
}
- inline iterator operator--(int) {
+ inline QT_DEPRECATED iterator operator--(int)
+ {
iterator r = *this;
i = QHashData::previousNode(i);
return r;
}
- inline iterator operator+(int j) const
+ inline QT_DEPRECATED iterator operator+(int j) const
{ iterator r = *this; if (j > 0) while (j--) ++r; else while (j++) --r; return r; }
- inline iterator operator-(int j) const { return operator+(-j); }
- inline iterator &operator+=(int j) { return *this = *this + j; }
- inline iterator &operator-=(int j) { return *this = *this - j; }
- friend inline iterator operator+(int j, iterator k) { return k + j; }
+ inline QT_DEPRECATED iterator operator-(int j) const { return operator+(-j); }
+ inline QT_DEPRECATED iterator &operator+=(int j) { return *this = *this + j; }
+ inline QT_DEPRECATED iterator &operator-=(int j) { return *this = *this - j; }
+ friend inline QT_DEPRECATED iterator operator+(int j, iterator k) { return k + j; }
+#endif
#ifndef QT_STRICT_ITERATORS
public:
@@ -384,7 +392,11 @@ public:
QHashData::Node *i;
public:
+#if QT_DEPRECATED_SINCE(5, 15)
typedef std::bidirectional_iterator_tag iterator_category;
+#else
+ typedef std::forward_iterator_tag iterator_category;
+#endif
typedef qptrdiff difference_type;
typedef T value_type;
typedef const T *pointer;
@@ -416,21 +428,28 @@ public:
i = QHashData::nextNode(i);
return r;
}
- inline const_iterator &operator--() {
+#if QT_DEPRECATED_SINCE(5, 15)
+ inline QT_DEPRECATED const_iterator &operator--()
+ {
i = QHashData::previousNode(i);
return *this;
}
- inline const_iterator operator--(int) {
+ inline QT_DEPRECATED const_iterator operator--(int)
+ {
const_iterator r = *this;
i = QHashData::previousNode(i);
return r;
}
- inline const_iterator operator+(int j) const
+ inline QT_DEPRECATED const_iterator operator+(int j) const
{ const_iterator r = *this; if (j > 0) while (j--) ++r; else while (j++) --r; return r; }
- inline const_iterator operator-(int j) const { return operator+(-j); }
- inline const_iterator &operator+=(int j) { return *this = *this + j; }
- inline const_iterator &operator-=(int j) { return *this = *this - j; }
- friend inline const_iterator operator+(int j, const_iterator k) { return k + j; }
+ inline QT_DEPRECATED const_iterator operator-(int j) const { return operator+(-j); }
+ inline QT_DEPRECATED const_iterator &operator+=(int j) { return *this = *this + j; }
+ inline QT_DEPRECATED const_iterator &operator-=(int j) { return *this = *this - j; }
+ friend inline QT_DEPRECATED const_iterator operator+(int j, const_iterator k)
+ {
+ return k + j;
+ }
+#endif
// ### Qt 5: not sure this is necessary anymore
#ifdef QT_STRICT_ITERATORS
@@ -462,8 +481,14 @@ public:
inline key_iterator &operator++() { ++i; return *this; }
inline key_iterator operator++(int) { return key_iterator(i++);}
- inline key_iterator &operator--() { --i; return *this; }
- inline key_iterator operator--(int) { return key_iterator(i--); }
+#if QT_DEPRECATED_SINCE(5, 15)
+ inline QT_DEPRECATED key_iterator &operator--()
+ {
+ --i;
+ return *this;
+ }
+ inline QT_DEPRECATED key_iterator operator--(int) { return key_iterator(i--); }
+#endif
const_iterator base() const { return i; }
};
@@ -501,6 +526,7 @@ public:
const_iterator find(const Key &key) const;
const_iterator constFind(const Key &key) const;
iterator insert(const Key &key, const T &value);
+ void insert(const QHash &hash);
iterator insertMulti(const Key &key, const T &value);
QHash &unite(const QHash &other);
@@ -587,12 +613,28 @@ Q_INLINE_TEMPLATE QHash<Key, T> &QHash<Key, T>::unite(const QHash &other)
if (d == &QHashData::shared_null) {
*this = other;
} else {
+#if QT_DEPRECATED_SINCE(5, 15)
QHash copy(other);
const_iterator it = copy.constEnd();
while (it != copy.constBegin()) {
- --it;
+ it.i = QHashData::previousNode(it.i);
insertMulti(it.key(), it.value());
}
+#else
+ QHash copy(other);
+ const_iterator it = copy.cbegin();
+ const const_iterator end = copy.cend();
+ while (it != end) {
+ const auto rangeStart = it++;
+ while (it != end && rangeStart.key() == it.key())
+ ++it;
+ const qint64 last = std::distance(rangeStart, it) - 1;
+ for (qint64 i = last; i >= 0; --i) {
+ auto next = std::next(rangeStart, i);
+ insertMulti(next.key(), next.value());
+ }
+ }
+#endif
}
return *this;
}
@@ -800,6 +842,31 @@ Q_INLINE_TEMPLATE typename QHash<Key, T>::iterator QHash<Key, T>::insert(const K
}
template <class Key, class T>
+Q_INLINE_TEMPLATE void QHash<Key, T>::insert(const QHash &hash)
+{
+ if (d == hash.d)
+ return;
+
+ detach();
+
+ QHashData::Node *i = hash.d->firstNode();
+ QHashData::Node *end = reinterpret_cast<QHashData::Node *>(hash.e);
+ while (i != end) {
+ Node *n = concrete(i);
+ Node **node = findNode(n->key, n->h);
+ if (*node == e) {
+ if (d->willGrow())
+ node = findNode(n->key, n->h);
+ createNode(n->h, n->key, n->value, node);
+ } else {
+ if (!std::is_same<T, QHashDummyValue>::value)
+ (*node)->value = n->value;
+ }
+ i = QHashData::nextNode(i);
+ }
+}
+
+template <class Key, class T>
Q_INLINE_TEMPLATE typename QHash<Key, T>::iterator QHash<Key, T>::insertMulti(const Key &akey,
const T &avalue)
{
@@ -1145,8 +1212,180 @@ Q_INLINE_TEMPLATE int QMultiHash<Key, T>::count(const Key &key, const T &value)
return n;
}
-Q_DECLARE_ASSOCIATIVE_ITERATOR(Hash)
-Q_DECLARE_MUTABLE_ASSOCIATIVE_ITERATOR(Hash)
+template<class Key, class T>
+class QHashIterator
+{
+ typedef typename QHash<Key, T>::const_iterator const_iterator;
+ typedef const_iterator Item;
+ QHash<Key, T> c;
+ const_iterator i, n;
+ inline bool item_exists() const { return n != c.constEnd(); }
+
+public:
+ inline QHashIterator(const QHash<Key, T> &container)
+ : c(container), i(c.constBegin()), n(c.constEnd())
+ {
+ }
+ inline QHashIterator &operator=(const QHash<Key, T> &container)
+ {
+ c = container;
+ i = c.constBegin();
+ n = c.constEnd();
+ return *this;
+ }
+ inline void toFront()
+ {
+ i = c.constBegin();
+ n = c.constEnd();
+ }
+ inline void toBack()
+ {
+ i = c.constEnd();
+ n = c.constEnd();
+ }
+ inline bool hasNext() const { return i != c.constEnd(); }
+ inline Item next()
+ {
+ n = i++;
+ return n;
+ }
+ inline Item peekNext() const { return i; }
+ inline const T &value() const
+ {
+ Q_ASSERT(item_exists());
+ return *n;
+ }
+ inline const Key &key() const
+ {
+ Q_ASSERT(item_exists());
+ return n.key();
+ }
+ inline bool findNext(const T &t)
+ {
+ while ((n = i) != c.constEnd())
+ if (*i++ == t)
+ return true;
+ return false;
+ }
+#if QT_DEPRECATED_SINCE(5, 15)
+ inline QT_DEPRECATED bool hasPrevious() const { return i != c.constBegin(); }
+ inline QT_DEPRECATED Item previous()
+ {
+ n = --i;
+ return n;
+ }
+ inline QT_DEPRECATED Item peekPrevious() const
+ {
+ const_iterator p = i;
+ return --p;
+ }
+ inline bool QT_DEPRECATED findPrevious(const T &t)
+ {
+ while (i != c.constBegin())
+ if (*(n = --i) == t)
+ return true;
+ n = c.constEnd();
+ return false;
+ }
+#endif
+};
+
+template<class Key, class T>
+class QMutableHashIterator
+{
+ typedef typename QHash<Key, T>::iterator iterator;
+ typedef typename QHash<Key, T>::const_iterator const_iterator;
+ typedef iterator Item;
+ QHash<Key, T> *c;
+ iterator i, n;
+ inline bool item_exists() const { return const_iterator(n) != c->constEnd(); }
+
+public:
+ inline QMutableHashIterator(QHash<Key, T> &container) : c(&container)
+ {
+ i = c->begin();
+ n = c->end();
+ }
+ inline QMutableHashIterator &operator=(QHash<Key, T> &container)
+ {
+ c = &container;
+ i = c->begin();
+ n = c->end();
+ return *this;
+ }
+ inline void toFront()
+ {
+ i = c->begin();
+ n = c->end();
+ }
+ inline void toBack()
+ {
+ i = c->end();
+ n = c->end();
+ }
+ inline bool hasNext() const { return const_iterator(i) != c->constEnd(); }
+ inline Item next()
+ {
+ n = i++;
+ return n;
+ }
+ inline Item peekNext() const { return i; }
+ inline void remove()
+ {
+ if (const_iterator(n) != c->constEnd()) {
+ i = c->erase(n);
+ n = c->end();
+ }
+ }
+ inline void setValue(const T &t)
+ {
+ if (const_iterator(n) != c->constEnd())
+ *n = t;
+ }
+ inline T &value()
+ {
+ Q_ASSERT(item_exists());
+ return *n;
+ }
+ inline const T &value() const
+ {
+ Q_ASSERT(item_exists());
+ return *n;
+ }
+ inline const Key &key() const
+ {
+ Q_ASSERT(item_exists());
+ return n.key();
+ }
+ inline bool findNext(const T &t)
+ {
+ while (const_iterator(n = i) != c->constEnd())
+ if (*i++ == t)
+ return true;
+ return false;
+ }
+#if QT_DEPRECATED_SINCE(5, 15)
+ inline QT_DEPRECATED bool hasPrevious() const { return const_iterator(i) != c->constBegin(); }
+ inline QT_DEPRECATED Item previous()
+ {
+ n = --i;
+ return n;
+ }
+ inline QT_DEPRECATED Item peekPrevious() const
+ {
+ iterator p = i;
+ return --p;
+ }
+ inline QT_DEPRECATED bool findPrevious(const T &t)
+ {
+ while (const_iterator(i) != c->constBegin())
+ if (*(n = --i) == t)
+ return true;
+ n = c->end();
+ return false;
+ }
+#endif
+};
template <class Key, class T>
uint qHash(const QHash<Key, T> &key, uint seed = 0)
diff --git a/src/corelib/tools/qlist.cpp b/src/corelib/tools/qlist.cpp
index 66770f6866..5d5da20752 100644
--- a/src/corelib/tools/qlist.cpp
+++ b/src/corelib/tools/qlist.cpp
@@ -847,9 +847,10 @@ void **QListData::erase(void **xi)
/*! \fn template <class T> void QList<T>::insert(int i, const T &value)
- Inserts \a value at index position \a i in the list. If \a i <= 0,
- the value is prepended to the list. If \a i >= size(), the
- value is appended to the list.
+ Inserts \a value at index position \a i in the list.
+
+ If \a i == 0, the value is prepended to the list. If \a i == size(),
+ the value is appended to the list.
Example:
\snippet code/src_corelib_tools_qlistdata.cpp 8
diff --git a/src/corelib/tools/qlist.h b/src/corelib/tools/qlist.h
index 425ffa42a5..ffd470efcd 100644
--- a/src/corelib/tools/qlist.h
+++ b/src/corelib/tools/qlist.h
@@ -580,8 +580,16 @@ inline T &QList<T>::operator[](int i)
detach(); return reinterpret_cast<Node *>(p.at(i))->t(); }
template <typename T>
inline void QList<T>::removeAt(int i)
-{ if(i >= 0 && i < p.size()) { detach();
- node_destruct(reinterpret_cast<Node *>(p.at(i))); p.remove(i); } }
+{
+#if !QT_DEPRECATED_SINCE(5, 15)
+ Q_ASSERT_X(i >= 0 && i < p.size(), "QList<T>::removeAt", "index out of range");
+#elif !defined(QT_NO_DEBUG)
+ if (i < 0 || i >= p.size())
+ qWarning("QList::removeAt(): Index out of range.");
+#endif
+ detach();
+ node_destruct(reinterpret_cast<Node *>(p.at(i))); p.remove(i);
+}
template <typename T>
inline T QList<T>::takeAt(int i)
{ Q_ASSERT_X(i >= 0 && i < p.size(), "QList<T>::take", "index out of range");
@@ -676,6 +684,12 @@ inline void QList<T>::prepend(const T &t)
template <typename T>
inline void QList<T>::insert(int i, const T &t)
{
+#if !QT_DEPRECATED_SINCE(5, 15)
+ Q_ASSERT_X(i >= 0 && i <= p.size(), "QList<T>::insert", "index out of range");
+#elif !defined(QT_NO_DEBUG)
+ if (i < 0 || i > p.size())
+ qWarning("QList::insert(): Index out of range.");
+#endif
if (d->ref.isShared()) {
Node *n = detach_helper_grow(i, 1);
QT_TRY {
diff --git a/src/corelib/tools/qscopedvaluerollback.h b/src/corelib/tools/qscopedvaluerollback.h
index f904b8dfcb..b8ceff6665 100644
--- a/src/corelib/tools/qscopedvaluerollback.h
+++ b/src/corelib/tools/qscopedvaluerollback.h
@@ -45,7 +45,11 @@
QT_BEGIN_NAMESPACE
template <typename T>
-class QScopedValueRollback
+class
+#if QT_HAS_CPP_ATTRIBUTE(nodiscard) && __cplusplus >= 201703L
+[[nodiscard]]
+#endif
+QScopedValueRollback
{
public:
explicit QScopedValueRollback(T &var)
diff --git a/src/corelib/tools/qset.h b/src/corelib/tools/qset.h
index 2e72832185..879e2176f2 100644
--- a/src/corelib/tools/qset.h
+++ b/src/corelib/tools/qset.h
@@ -108,7 +108,11 @@ public:
friend class QSet<T>;
public:
+#if QT_DEPRECATED_SINCE(5, 15)
typedef std::bidirectional_iterator_tag iterator_category;
+#else
+ typedef std::forward_iterator_tag iterator_category;
+#endif
typedef qptrdiff difference_type;
typedef T value_type;
typedef const T *pointer;
@@ -128,13 +132,15 @@ public:
{ return i != o.i; }
inline iterator &operator++() { ++i; return *this; }
inline iterator operator++(int) { iterator r = *this; ++i; return r; }
- inline iterator &operator--() { --i; return *this; }
- inline iterator operator--(int) { iterator r = *this; --i; return r; }
- inline iterator operator+(int j) const { return i + j; }
- inline iterator operator-(int j) const { return i - j; }
- friend inline iterator operator+(int j, iterator k) { return k + j; }
- inline iterator &operator+=(int j) { i += j; return *this; }
- inline iterator &operator-=(int j) { i -= j; return *this; }
+#if QT_DEPRECATED_SINCE(5, 15)
+ inline QT_DEPRECATED iterator &operator--() { --i; return *this; }
+ inline QT_DEPRECATED iterator operator--(int) { iterator r = *this; --i; return r; }
+ inline QT_DEPRECATED iterator operator+(int j) const { return i + j; }
+ inline QT_DEPRECATED iterator operator-(int j) const { return i - j; }
+ friend inline QT_DEPRECATED iterator operator+(int j, iterator k) { return k + j; }
+ inline QT_DEPRECATED iterator &operator+=(int j) { i += j; return *this; }
+ inline QT_DEPRECATED iterator &operator-=(int j) { i -= j; return *this; }
+#endif
};
class const_iterator
@@ -145,7 +151,11 @@ public:
friend class QSet<T>;
public:
+#if QT_DEPRECATED_SINCE(5, 15)
typedef std::bidirectional_iterator_tag iterator_category;
+#else
+ typedef std::forward_iterator_tag iterator_category;
+#endif
typedef qptrdiff difference_type;
typedef T value_type;
typedef const T *pointer;
@@ -163,19 +173,18 @@ public:
inline bool operator!=(const const_iterator &o) const { return i != o.i; }
inline const_iterator &operator++() { ++i; return *this; }
inline const_iterator operator++(int) { const_iterator r = *this; ++i; return r; }
- inline const_iterator &operator--() { --i; return *this; }
- inline const_iterator operator--(int) { const_iterator r = *this; --i; return r; }
- inline const_iterator operator+(int j) const { return i + j; }
- inline const_iterator operator-(int j) const { return i - j; }
- friend inline const_iterator operator+(int j, const_iterator k) { return k + j; }
- inline const_iterator &operator+=(int j) { i += j; return *this; }
- inline const_iterator &operator-=(int j) { i -= j; return *this; }
+#if QT_DEPRECATED_SINCE(5, 15)
+ inline QT_DEPRECATED const_iterator &operator--() { --i; return *this; }
+ inline QT_DEPRECATED const_iterator operator--(int) { const_iterator r = *this; --i; return r; }
+ inline QT_DEPRECATED const_iterator operator+(int j) const { return i + j; }
+ inline QT_DEPRECATED const_iterator operator-(int j) const { return i - j; }
+ friend inline QT_DEPRECATED const_iterator operator+(int j, const_iterator k) { return k + j; }
+ inline QT_DEPRECATED const_iterator &operator+=(int j) { i += j; return *this; }
+ inline QT_DEPRECATED const_iterator &operator-=(int j) { i -= j; return *this; }
+#endif
};
// STL style
- typedef std::reverse_iterator<iterator> reverse_iterator;
- typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
-
inline iterator begin() { return q_hash.begin(); }
inline const_iterator begin() const noexcept { return q_hash.begin(); }
inline const_iterator cbegin() const noexcept { return q_hash.begin(); }
@@ -185,12 +194,17 @@ public:
inline const_iterator cend() const noexcept { return q_hash.end(); }
inline const_iterator constEnd() const noexcept { return q_hash.constEnd(); }
- reverse_iterator rbegin() { return reverse_iterator(end()); }
- reverse_iterator rend() { return reverse_iterator(begin()); }
- const_reverse_iterator rbegin() const noexcept { return const_reverse_iterator(end()); }
- const_reverse_iterator rend() const noexcept { return const_reverse_iterator(begin()); }
- const_reverse_iterator crbegin() const noexcept { return const_reverse_iterator(end()); }
- const_reverse_iterator crend() const noexcept { return const_reverse_iterator(begin()); }
+#if QT_DEPRECATED_SINCE(5, 15)
+ typedef std::reverse_iterator<iterator> reverse_iterator;
+ typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
+
+ reverse_iterator QT_DEPRECATED rbegin() { return reverse_iterator(end()); }
+ reverse_iterator QT_DEPRECATED rend() { return reverse_iterator(begin()); }
+ const_reverse_iterator QT_DEPRECATED rbegin() const noexcept { return const_reverse_iterator(end()); }
+ const_reverse_iterator QT_DEPRECATED rend() const noexcept { return const_reverse_iterator(begin()); }
+ const_reverse_iterator QT_DEPRECATED crbegin() const noexcept { return const_reverse_iterator(end()); }
+ const_reverse_iterator QT_DEPRECATED crend() const noexcept { return const_reverse_iterator(begin()); }
+#endif
iterator erase(iterator i)
{ return erase(m2c(i)); }
@@ -429,17 +443,19 @@ public:
inline bool hasNext() const { return c->constEnd() != i; }
inline const T &next() { n = i++; return *n; }
inline const T &peekNext() const { return *i; }
- inline bool hasPrevious() const { return c->constBegin() != i; }
- inline const T &previous() { n = --i; return *n; }
- inline const T &peekPrevious() const { iterator p = i; return *--p; }
inline void remove()
{ if (c->constEnd() != n) { i = c->erase(n); n = c->end(); } }
inline const T &value() const { Q_ASSERT(item_exists()); return *n; }
inline bool findNext(const T &t)
{ while (c->constEnd() != (n = i)) if (*i++ == t) return true; return false; }
- inline bool findPrevious(const T &t)
+#if QT_DEPRECATED_SINCE(5, 15)
+ inline QT_DEPRECATED bool hasPrevious() const { return c->constBegin() != i; }
+ inline QT_DEPRECATED const T &previous() { n = --i; return *n; }
+ inline QT_DEPRECATED const T &peekPrevious() const { iterator p = i; return *--p; }
+ inline QT_DEPRECATED bool findPrevious(const T &t)
{ while (c->constBegin() != i) if (*(n = --i) == t) return true;
n = c->end(); return false; }
+#endif
};
#endif // QT_NO_JAVA_STYLE_ITERATORS
diff --git a/src/corelib/tools/qset.qdoc b/src/corelib/tools/qset.qdoc
index 78854be0de..33a0697e12 100644
--- a/src/corelib/tools/qset.qdoc
+++ b/src/corelib/tools/qset.qdoc
@@ -906,8 +906,6 @@
Calling this function on QSet<T>::constEnd() leads to
undefined results.
-
- \sa operator--()
*/
/*!
@@ -924,6 +922,7 @@
/*!
\fn template <class T> QSet<T>::iterator &QSet<T>::iterator::operator--()
\fn template <class T> QSet<T>::const_iterator &QSet<T>::const_iterator::operator--()
+ \obsolete
The prefix -- operator (\c{--it}) makes the preceding item
current and returns an iterator to the new current item.
@@ -937,6 +936,7 @@
/*!
\fn template <class T> QSet<T>::iterator QSet<T>::iterator::operator--(int)
\fn template <class T> QSet<T>::const_iterator QSet<T>::const_iterator::operator--(int)
+ \obsolete
\overload
@@ -947,6 +947,7 @@
/*!
\fn template <class T> QSet<T>::iterator QSet<T>::iterator::operator+(int j) const
\fn template <class T> QSet<T>::const_iterator QSet<T>::const_iterator::operator+(int j) const
+ \obsolete
Returns an iterator to the item at \a j positions forward from
this iterator. (If \a j is negative, the iterator goes backward.)
@@ -959,6 +960,7 @@
/*!
\fn template <class T> QSet<T>::iterator QSet<T>::iterator::operator-(int j) const
\fn template <class T> QSet<T>::const_iterator QSet<T>::const_iterator::operator-(int j) const
+ \obsolete
Returns an iterator to the item at \a j positions backward from
this iterator. (If \a j is negative, the iterator goes forward.)
@@ -971,6 +973,7 @@
/*!
\fn template <class T> QSet<T>::iterator &QSet<T>::iterator::operator+=(int j)
\fn template <class T> QSet<T>::const_iterator &QSet<T>::const_iterator::operator+=(int j)
+ \obsolete
Advances the iterator by \a j items. (If \a j is negative, the
iterator goes backward.)
@@ -983,6 +986,7 @@
/*!
\fn template <class T> QSet<T>::iterator &QSet<T>::iterator::operator-=(int j)
\fn template <class T> QSet<T>::const_iterator &QSet<T>::const_iterator::operator-=(int j)
+ \obsolete
Makes the iterator go back by \a j items. (If \a j is negative,
the iterator goes forward.)
diff --git a/src/corelib/tools/qsimd.cpp b/src/corelib/tools/qsimd.cpp
index fb9b5996f6..75c380ee8a 100644
--- a/src/corelib/tools/qsimd.cpp
+++ b/src/corelib/tools/qsimd.cpp
@@ -1,7 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
-** Copyright (C) 2018 Intel Corporation.
+** Copyright (C) 2019 Intel Corporation.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the QtCore module of the Qt Toolkit.
@@ -188,6 +188,8 @@ static inline quint64 detectProcessorFeatures()
# define PICreg "%%rbx"
#endif
+static bool checkRdrndWorks() noexcept;
+
static int maxBasicCpuidSupported()
{
#if defined(Q_CC_EMSCRIPTEN)
@@ -376,37 +378,8 @@ static quint64 detectProcessorFeatures()
features &= ~AllAVX512;
}
-#if defined(Q_PROCESSOR_X86) && QT_COMPILER_SUPPORTS_HERE(RDRND)
- /**
- * Some AMD CPUs (e.g. AMD A4-6250J and AMD Ryzen 3000-series) have a
- * failing random generation instruction, which always returns
- * 0xffffffff, even when generation was "successful".
- *
- * This code checks if hardware random generator generates four consecutive
- * equal numbers. If it does, then we probably have a failing one and
- * should disable it completely.
- *
- * https://bugreports.qt.io/browse/QTBUG-69423
- */
- if (features & CpuFeatureRDRND) {
- const qsizetype testBufferSize = 4;
- unsigned testBuffer[4] = {};
-
- const qsizetype generated = qRandomCpu(testBuffer, testBufferSize);
-
- if (Q_UNLIKELY(generated == testBufferSize &&
- testBuffer[0] == testBuffer[1] &&
- testBuffer[1] == testBuffer[2] &&
- testBuffer[2] == testBuffer[3])) {
-
- fprintf(stderr, "WARNING: CPU random generator seem to be failing, disable hardware random number generation\n");
- fprintf(stderr, "WARNING: RDRND generated: 0x%x 0x%x 0x%x 0x%x\n",
- testBuffer[0], testBuffer[1], testBuffer[2], testBuffer[3]);
-
- features &= ~CpuFeatureRDRND;
- }
- }
-#endif
+ if (features & CpuFeatureRDRND && !checkRdrndWorks())
+ features &= ~(CpuFeatureRDRND | CpuFeatureRDSEED);
return features;
}
@@ -626,16 +599,45 @@ void qDumpCPUFeatures()
# ifdef Q_PROCESSOR_X86_64
# define _rdrandXX_step _rdrand64_step
+# define _rdseedXX_step _rdseed64_step
# else
# define _rdrandXX_step _rdrand32_step
+# define _rdseedXX_step _rdseed32_step
# endif
-QT_FUNCTION_TARGET(RDRND) qsizetype qRandomCpu(void *buffer, qsizetype count) noexcept
+# if QT_COMPILER_SUPPORTS_HERE(RDSEED)
+static QT_FUNCTION_TARGET(RDSEED) unsigned *qt_random_rdseed(unsigned *ptr, unsigned *end) noexcept
{
- unsigned *ptr = reinterpret_cast<unsigned *>(buffer);
- unsigned *end = ptr + count;
- int retries = 10;
+ // Unlike for the RDRAND code below, the Intel whitepaper describing the
+ // use of the RDSEED instruction indicates we should not retry in a loop.
+ // If the independent bit generator used by RDSEED is out of entropy, it
+ // may take time to replenish.
+ // https://software.intel.com/en-us/articles/intel-digital-random-number-generator-drng-software-implementation-guide
+ while (ptr + sizeof(qregisteruint)/sizeof(*ptr) <= end) {
+ if (_rdseedXX_step(reinterpret_cast<qregisteruint *>(ptr)) == 0)
+ goto out;
+ ptr += sizeof(qregisteruint)/sizeof(*ptr);
+ }
+
+ if (sizeof(*ptr) != sizeof(qregisteruint) && ptr != end) {
+ if (_rdseed32_step(ptr) == 0)
+ goto out;
+ ++ptr;
+ }
+
+out:
+ return ptr;
+}
+# else
+static unsigned *qt_random_rdseed(unsigned *ptr, unsigned *)
+{
+ return ptr;
+}
+# endif
+static QT_FUNCTION_TARGET(RDRND) unsigned *qt_random_rdrnd(unsigned *ptr, unsigned *end) noexcept
+{
+ int retries = 10;
while (ptr + sizeof(qregisteruint)/sizeof(*ptr) <= end) {
if (_rdrandXX_step(reinterpret_cast<qregisteruint *>(ptr)))
ptr += sizeof(qregisteruint)/sizeof(*ptr);
@@ -653,9 +655,64 @@ QT_FUNCTION_TARGET(RDRND) qsizetype qRandomCpu(void *buffer, qsizetype count) no
}
out:
- return ptr - reinterpret_cast<unsigned *>(buffer);
+ return ptr;
+}
+
+static QT_FUNCTION_TARGET(RDRND) Q_DECL_COLD_FUNCTION bool checkRdrndWorks() noexcept
+{
+ /*
+ * Some AMD CPUs (e.g. AMD A4-6250J and AMD Ryzen 3000-series) have a
+ * failing random generation instruction, which always returns
+ * 0xffffffff, even when generation was "successful".
+ *
+ * This code checks if hardware random generator generates four consecutive
+ * equal numbers. If it does, then we probably have a failing one and
+ * should disable it completely.
+ *
+ * https://bugreports.qt.io/browse/QTBUG-69423
+ */
+ constexpr qsizetype TestBufferSize = 4;
+ unsigned testBuffer[TestBufferSize] = {};
+
+ unsigned *end = qt_random_rdrnd(testBuffer, testBuffer + TestBufferSize);
+ if (end < testBuffer + 3) {
+ // Random generation didn't produce enough data for us to make a
+ // determination whether it's working or not. Assume it isn't, but
+ // don't print a warning.
+ return false;
+ }
+
+ // Check the results for equality
+ if (testBuffer[0] == testBuffer[1]
+ && testBuffer[0] == testBuffer[2]
+ && (end < testBuffer + TestBufferSize || testBuffer[0] == testBuffer[3])) {
+ fprintf(stderr, "WARNING: CPU random generator seem to be failing, "
+ "disabling hardware random number generation\n"
+ "WARNING: RDRND generated:");
+ for (unsigned *ptr = testBuffer; ptr < end; ++ptr)
+ fprintf(stderr, " 0x%x", *ptr);
+ fprintf(stderr, "\n");
+ return false;
+ }
+
+ // We're good
+ return true;
}
-#endif
+QT_FUNCTION_TARGET(RDRND) qsizetype qRandomCpu(void *buffer, qsizetype count) noexcept
+{
+ unsigned *ptr = reinterpret_cast<unsigned *>(buffer);
+ unsigned *end = ptr + count;
+
+ if (qCpuHasFeature(RDSEED))
+ ptr = qt_random_rdseed(ptr, end);
+
+ // fill the buffer with RDRND if RDSEED didn't
+ ptr = qt_random_rdrnd(ptr, end);
+ return ptr - reinterpret_cast<unsigned *>(buffer);
+}
+#elif defined(Q_PROCESSOR_X86) && !defined(Q_OS_NACL) && !defined(Q_PROCESSOR_ARM)
+static bool checkRdrndWorks() noexcept { return false; }
+#endif // Q_PROCESSOR_X86 && RDRND
QT_END_NAMESPACE
diff --git a/src/dbus/Qt5DBusMacros.cmake b/src/dbus/Qt5DBusMacros.cmake
index b381ab0934..9b69e77dc7 100644
--- a/src/dbus/Qt5DBusMacros.cmake
+++ b/src/dbus/Qt5DBusMacros.cmake
@@ -34,7 +34,7 @@ include(MacroAddFileDependencies)
include(CMakeParseArguments)
-function(QT5_ADD_DBUS_INTERFACE _sources _interface _basename)
+function(qt5_add_dbus_interface _sources _interface _basename)
get_filename_component(_infile ${_interface} ABSOLUTE)
set(_header "${CMAKE_CURRENT_BINARY_DIR}/${_basename}.h")
set(_impl "${CMAKE_CURRENT_BINARY_DIR}/${_basename}.cpp")
@@ -71,7 +71,7 @@ function(QT5_ADD_DBUS_INTERFACE _sources _interface _basename)
endfunction()
-function(QT5_ADD_DBUS_INTERFACES _sources)
+function(qt5_add_dbus_interfaces _sources)
foreach(_current_FILE ${ARGN})
get_filename_component(_infile ${_current_FILE} ABSOLUTE)
get_filename_component(_basename ${_current_FILE} NAME)
@@ -84,7 +84,7 @@ function(QT5_ADD_DBUS_INTERFACES _sources)
endfunction()
-function(QT5_GENERATE_DBUS_INTERFACE _header) # _customName OPTIONS -some -options )
+function(qt5_generate_dbus_interface _header) # _customName OPTIONS -some -options )
set(options)
set(oneValueArgs)
set(multiValueArgs OPTIONS)
@@ -117,7 +117,7 @@ function(QT5_GENERATE_DBUS_INTERFACE _header) # _customName OPTIONS -some -optio
endfunction()
-function(QT5_ADD_DBUS_ADAPTOR _sources _xml_file _include _parentClass) # _optionalBasename _optionalClassName)
+function(qt5_add_dbus_adaptor _sources _xml_file _include _parentClass) # _optionalBasename _optionalClassName)
get_filename_component(_infile ${_xml_file} ABSOLUTE)
set(_optionalBasename "${ARGV4}")
diff --git a/src/dbus/qdbusabstractadaptor.cpp b/src/dbus/qdbusabstractadaptor.cpp
index 993607a643..bf0e33e26e 100644
--- a/src/dbus/qdbusabstractadaptor.cpp
+++ b/src/dbus/qdbusabstractadaptor.cpp
@@ -72,7 +72,7 @@ int QDBusAdaptorConnector::relaySlotMethodIndex()
QDBusAdaptorConnector *qDBusFindAdaptorConnector(QObject *obj)
{
if (!obj)
- return 0;
+ return nullptr;
const QObjectList &children = obj->children();
QObjectList::ConstIterator it = children.constBegin();
QObjectList::ConstIterator end = children.constEnd();
@@ -83,7 +83,7 @@ QDBusAdaptorConnector *qDBusFindAdaptorConnector(QObject *obj)
return connector;
}
}
- return 0;
+ return nullptr;
}
QDBusAdaptorConnector *qDBusFindAdaptorConnector(QDBusAbstractAdaptor *adaptor)
@@ -411,7 +411,7 @@ void QDBusAdaptorConnector::qt_static_metacall(QObject *_o, QMetaObject::Call _c
const QMetaObject QDBusAdaptorConnector::staticMetaObject = {
{ &QObject::staticMetaObject, qt_meta_stringdata_QDBusAdaptorConnector.data,
- qt_meta_data_QDBusAdaptorConnector, qt_static_metacall, 0, 0 }
+ qt_meta_data_QDBusAdaptorConnector, qt_static_metacall, nullptr, nullptr }
};
const QMetaObject *QDBusAdaptorConnector::metaObject() const
@@ -421,7 +421,7 @@ const QMetaObject *QDBusAdaptorConnector::metaObject() const
void *QDBusAdaptorConnector::qt_metacast(const char *_clname)
{
- if (!_clname) return 0;
+ if (!_clname) return nullptr;
if (!strcmp(_clname, qt_meta_stringdata_QDBusAdaptorConnector.stringdata))
return static_cast<void*>(const_cast< QDBusAdaptorConnector*>(this));
return QObject::qt_metacast(_clname);
@@ -443,7 +443,7 @@ int QDBusAdaptorConnector::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
// SIGNAL 0
void QDBusAdaptorConnector::relaySignal(QObject * _t1, const QMetaObject * _t2, int _t3, const QVariantList & _t4)
{
- void *_a[] = { 0, const_cast<void*>(reinterpret_cast<const void*>(&_t1)), const_cast<void*>(reinterpret_cast<const void*>(&_t2)), const_cast<void*>(reinterpret_cast<const void*>(&_t3)), const_cast<void*>(reinterpret_cast<const void*>(&_t4)) };
+ void *_a[] = { nullptr, const_cast<void*>(reinterpret_cast<const void*>(&_t1)), const_cast<void*>(reinterpret_cast<const void*>(&_t2)), const_cast<void*>(reinterpret_cast<const void*>(&_t3)), const_cast<void*>(reinterpret_cast<const void*>(&_t4)) };
QMetaObject::activate(this, &staticMetaObject, 0, _a);
}
diff --git a/src/dbus/qdbusabstractinterface.cpp b/src/dbus/qdbusabstractinterface.cpp
index 87de784fc0..b628c2b560 100644
--- a/src/dbus/qdbusabstractinterface.cpp
+++ b/src/dbus/qdbusabstractinterface.cpp
@@ -159,7 +159,7 @@ bool QDBusAbstractInterfacePrivate::property(const QMetaProperty &mp, void *retu
const char *expectedSignature = "";
if (int(mp.type()) != QMetaType::QVariant) {
expectedSignature = QDBusMetaType::typeToSignature(type);
- if (expectedSignature == 0) {
+ if (expectedSignature == nullptr) {
qWarning("QDBusAbstractInterface: type %s must be registered with Qt D-Bus before it can be "
"used to read property %s.%s",
mp.typeName(), qPrintable(interface), mp.name());
@@ -190,7 +190,7 @@ bool QDBusAbstractInterfacePrivate::property(const QMetaProperty &mp, void *retu
}
QByteArray foundSignature;
- const char *foundType = 0;
+ const char *foundType = nullptr;
QVariant value = qvariant_cast<QDBusVariant>(reply.arguments().at(0)).variant();
if (value.userType() == type || type == QMetaType::QVariant
@@ -597,7 +597,7 @@ bool QDBusAbstractInterface::callWithCallback(const QString &method,
QObject *receiver,
const char *slot)
{
- return callWithCallback(method, args, receiver, slot, 0);
+ return callWithCallback(method, args, receiver, slot, nullptr);
}
/*!
diff --git a/src/dbus/qdbusargument.cpp b/src/dbus/qdbusargument.cpp
index 764bc24165..5a0f0f013b 100644
--- a/src/dbus/qdbusargument.cpp
+++ b/src/dbus/qdbusargument.cpp
@@ -74,11 +74,11 @@ QByteArray QDBusArgumentPrivate::createSignature(int id)
marshaller->ba = &signature;
// run it
- void *null = 0;
+ void *null = nullptr;
QVariant v(id, null);
QDBusArgument arg(marshaller);
QDBusMetaType::marshall(arg, v.userType(), v.constData());
- arg.d = 0;
+ arg.d = nullptr;
// delete it
bool ok = marshaller->ok;
@@ -290,7 +290,7 @@ bool QDBusArgumentPrivate::checkReadAndDetach(QDBusArgumentPrivate *&d)
QDBusArgument::QDBusArgument()
{
if (!qdbus_loadLibDBus()) {
- d = 0;
+ d = nullptr;
return;
}
diff --git a/src/dbus/qdbusconnection.cpp b/src/dbus/qdbusconnection.cpp
index d6f3230fd2..412b428bdc 100644
--- a/src/dbus/qdbusconnection.cpp
+++ b/src/dbus/qdbusconnection.cpp
@@ -101,7 +101,7 @@ QDBusConnectionPrivate *QDBusConnectionManager::busConnection(QDBusConnection::B
Q_ASSERT(type == QDBusConnection::SessionBus || type == QDBusConnection::SystemBus);
if (!qdbus_loadLibDBus())
- return 0;
+ return nullptr;
// we'll start in suspended delivery mode if we're in the main thread
// (the event loop will resume delivery)
@@ -124,7 +124,7 @@ QDBusConnectionPrivate *QDBusConnectionManager::connection(const QString &name)
void QDBusConnectionManager::removeConnection(const QString &name)
{
- QDBusConnectionPrivate *d = 0;
+ QDBusConnectionPrivate *d = nullptr;
d = connectionHash.take(name);
if (d && !d->ref.deref())
d->deleteLater();
@@ -251,7 +251,7 @@ void QDBusConnectionManager::executeConnectionRequest(QDBusConnectionManager::Co
return;
d = new QDBusConnectionPrivate;
- DBusConnection *c = 0;
+ DBusConnection *c = nullptr;
QDBusErrorInternal error;
switch (data->type) {
case ConnectionRequestData::ConnectToStandardBus:
@@ -275,7 +275,7 @@ void QDBusConnectionManager::executeConnectionRequest(QDBusConnectionManager::Co
// register on the bus
if (!q_dbus_bus_register(c, error)) {
q_dbus_connection_unref(c);
- c = 0;
+ c = nullptr;
}
}
break;
@@ -427,7 +427,7 @@ void QDBusConnectionManager::createServer(const QString &address, void *server)
QDBusConnection::QDBusConnection(const QString &name)
{
if (name.isEmpty() || _q_manager.isDestroyed()) {
- d = 0;
+ d = nullptr;
} else {
const auto locker = qt_scoped_lock(_q_manager()->mutex);
d = _q_manager()->connection(name);
@@ -492,7 +492,7 @@ QDBusConnection &QDBusConnection::operator=(const QDBusConnection &other)
QDBusConnection QDBusConnection::connectToBus(BusType type, const QString &name)
{
if (_q_manager.isDestroyed() || !qdbus_loadLibDBus()) {
- QDBusConnectionPrivate *d = 0;
+ QDBusConnectionPrivate *d = nullptr;
return QDBusConnection(d);
}
return QDBusConnection(_q_manager()->connectToBus(type, name, false));
@@ -506,7 +506,7 @@ QDBusConnection QDBusConnection::connectToBus(const QString &address,
const QString &name)
{
if (_q_manager.isDestroyed() || !qdbus_loadLibDBus()) {
- QDBusConnectionPrivate *d = 0;
+ QDBusConnectionPrivate *d = nullptr;
return QDBusConnection(d);
}
return QDBusConnection(_q_manager()->connectToBus(address, name));
@@ -521,7 +521,7 @@ QDBusConnection QDBusConnection::connectToPeer(const QString &address,
const QString &name)
{
if (_q_manager.isDestroyed() || !qdbus_loadLibDBus()) {
- QDBusConnectionPrivate *d = 0;
+ QDBusConnectionPrivate *d = nullptr;
return QDBusConnection(d);
}
return QDBusConnection(_q_manager()->connectToPeer(address, name));
@@ -616,7 +616,7 @@ bool QDBusConnection::callWithCallback(const QDBusMessage &message, QObject *rec
d->lastError = err;
return false;
}
- return d->sendWithReplyAsync(message, receiver, returnMethod, errorMethod, timeout) != 0;
+ return d->sendWithReplyAsync(message, receiver, returnMethod, errorMethod, timeout) != nullptr;
}
/*!
@@ -639,7 +639,7 @@ bool QDBusConnection::callWithCallback(const QDBusMessage &message, QObject *rec
bool QDBusConnection::callWithCallback(const QDBusMessage &message, QObject *receiver,
const char *returnMethod, int timeout) const
{
- return callWithCallback(message, receiver, returnMethod, 0, timeout);
+ return callWithCallback(message, receiver, returnMethod, nullptr, timeout);
}
/*!
@@ -705,10 +705,10 @@ QDBusMessage QDBusConnection::call(const QDBusMessage &message, QDBus::CallMode
QDBusPendingCall QDBusConnection::asyncCall(const QDBusMessage &message, int timeout) const
{
if (!d || !d->connection) {
- return QDBusPendingCall(0); // null pointer -> disconnected
+ return QDBusPendingCall(nullptr); // null pointer -> disconnected
}
- QDBusPendingCallPrivate *priv = d->sendWithReplyAsync(message, 0, 0, 0, timeout);
+ QDBusPendingCallPrivate *priv = d->sendWithReplyAsync(message, nullptr, nullptr, nullptr, timeout);
return QDBusPendingCall(priv);
}
@@ -1015,7 +1015,7 @@ QObject *QDBusConnection::objectRegisteredAt(const QString &path) const
Q_ASSERT_X(QDBusUtil::isValidObjectPath(path), "QDBusConnection::registeredObject",
"Invalid object path given");
if (!d || !d->connection || !QDBusUtil::isValidObjectPath(path))
- return 0;
+ return nullptr;
auto pathComponents = path.splitRef(QLatin1Char('/'));
if (pathComponents.constLast().isEmpty())
@@ -1040,7 +1040,7 @@ QObject *QDBusConnection::objectRegisteredAt(const QString &path) const
node = it;
++i;
}
- return 0;
+ return nullptr;
}
@@ -1052,7 +1052,7 @@ QObject *QDBusConnection::objectRegisteredAt(const QString &path) const
QDBusConnectionInterface *QDBusConnection::interface() const
{
if (!d || d->mode != QDBusConnectionPrivate::ClientMode)
- return 0;
+ return nullptr;
return d->busService;
}
@@ -1068,7 +1068,7 @@ QDBusConnectionInterface *QDBusConnection::interface() const
*/
void *QDBusConnection::internalPointer() const
{
- return d ? d->connection : 0;
+ return d ? d->connection : nullptr;
}
/*!
@@ -1139,7 +1139,7 @@ QString QDBusConnection::name() const
*/
QDBusConnection::ConnectionCapabilities QDBusConnection::connectionCapabilities() const
{
- return d ? d->capabilities : ConnectionCapabilities(0);
+ return d ? d->capabilities : ConnectionCapabilities();
}
/*!
diff --git a/src/dbus/qdbuscontext.cpp b/src/dbus/qdbuscontext.cpp
index 5b21c4fa74..de0482be70 100644
--- a/src/dbus/qdbuscontext.cpp
+++ b/src/dbus/qdbuscontext.cpp
@@ -64,7 +64,7 @@ QDBusContextPrivate *QDBusContextPrivate::set(QObject *obj, QDBusContextPrivate
return old;
}
- return 0;
+ return nullptr;
}
/*!
@@ -104,7 +104,7 @@ QDBusContextPrivate *QDBusContextPrivate::set(QObject *obj, QDBusContextPrivate
Constructs an empty QDBusContext.
*/
QDBusContext::QDBusContext()
- : d_ptr(0)
+ : d_ptr(nullptr)
{
}
diff --git a/src/dbus/qdbusdemarshaller.cpp b/src/dbus/qdbusdemarshaller.cpp
index 6befb33d61..c9da593ad2 100644
--- a/src/dbus/qdbusdemarshaller.cpp
+++ b/src/dbus/qdbusdemarshaller.cpp
@@ -295,7 +295,7 @@ QVariant QDBusDemarshaller::toVariantInternal()
// qWarning("QDBusDemarshaller: Found unknown D-Bus type %d '%c'",
// q_dbus_message_iter_get_arg_type(&iterator),
// q_dbus_message_iter_get_arg_type(&iterator));
- char *ptr = 0;
+ char *ptr = nullptr;
ptr += q_dbus_message_iter_get_arg_type(&iterator);
q_dbus_message_iter_next(&iterator);
diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp
index 4c27a93382..bca02be59e 100644
--- a/src/dbus/qdbusintegrator.cpp
+++ b/src/dbus/qdbusintegrator.cpp
@@ -127,7 +127,7 @@ void qdbusDefaultThreadDebug(int action, int condition, QDBusConnectionPrivate *
"condition unknown")
<< "in connection" << conn;
}
-qdbusThreadDebugFunc qdbusThreadDebug = 0;
+qdbusThreadDebugFunc qdbusThreadDebug = nullptr;
#endif
typedef QVarLengthArray<QDBusSpyCallEvent::Hook, 4> QDBusSpyHookList;
@@ -222,7 +222,7 @@ static dbus_bool_t qDBusAddWatch(DBusWatch *watch, void *data)
watcher.write->setEnabled(q_dbus_watch_get_enabled(watch));
d->connect(watcher.write, &QSocketNotifier::activated, d, &QDBusConnectionPrivate::socketWrite);
}
- d->watchers.insertMulti(fd, watcher);
+ d->watchers.insert(fd, watcher);
return true;
}
@@ -400,7 +400,7 @@ static bool findObject(const QDBusConnectionPrivate::ObjectTreeNode *root,
// match
node = it;
else
- node = 0;
+ node = nullptr;
start = end + 1;
}
@@ -413,7 +413,7 @@ static bool findObject(const QDBusConnectionPrivate::ObjectTreeNode *root,
else
// there really is no object here
// we're just looking at an unused space in the QVector
- node = 0;
+ node = nullptr;
}
return node;
}
@@ -440,7 +440,7 @@ static QObject *findChildObject(const QDBusConnectionPrivate::ObjectTreeNode *ro
const QObjectList children = obj->children();
// find a child with the proper name
- QObject *next = 0;
+ QObject *next = nullptr;
QObjectList::ConstIterator it = children.constBegin();
QObjectList::ConstIterator end = children.constEnd();
for ( ; it != end; ++it)
@@ -458,7 +458,7 @@ static QObject *findChildObject(const QDBusConnectionPrivate::ObjectTreeNode *ro
}
// object not found
- return 0;
+ return nullptr;
}
static QDBusConnectionPrivate::ArgMatchRules matchArgsForService(const QString &service, QDBusServiceWatcher::WatchMode mode)
@@ -599,7 +599,7 @@ static void huntAndDestroy(QObject *needle, QDBusConnectionPrivate::ObjectTreeNo
haystack.children.end());
if (needle == haystack.obj) {
- haystack.obj = 0;
+ haystack.obj = nullptr;
haystack.flags = 0;
}
}
@@ -609,7 +609,7 @@ static void huntAndUnregister(const QVector<QStringRef> &pathComponents, int i,
{
if (pathComponents.count() == i) {
// found it
- node->obj = 0;
+ node->obj = nullptr;
node->flags = 0;
if (mode == QDBusConnection::UnregisterTree) {
@@ -660,7 +660,7 @@ static void huntAndEmit(DBusConnection *connection, DBusMessage *msg,
qDBusDebug() << QThread::currentThread() << "emitting signal at" << p;
DBusMessage *msg2 = q_dbus_message_copy(msg);
q_dbus_message_set_path(msg2, p);
- q_dbus_connection_send(connection, msg2, 0);
+ q_dbus_connection_send(connection, msg2, nullptr);
q_dbus_message_unref(msg2);
}
}
@@ -727,12 +727,12 @@ static int findSlot(const QMetaObject *mo, const QByteArray &name, int flags,
++i;
// make sure that the output parameters have signatures too
- if (returnType != QMetaType::UnknownType && returnType != QMetaType::Void && QDBusMetaType::typeToSignature(returnType) == 0)
+ if (returnType != QMetaType::UnknownType && returnType != QMetaType::Void && QDBusMetaType::typeToSignature(returnType) == nullptr)
continue;
bool ok = true;
for (int j = i; ok && j < metaTypes.count(); ++j)
- if (QDBusMetaType::typeToSignature(metaTypes.at(i)) == 0)
+ if (QDBusMetaType::typeToSignature(metaTypes.at(i)) == nullptr)
ok = false;
if (!ok)
continue;
@@ -790,13 +790,13 @@ QDBusCallDeliveryEvent* QDBusConnectionPrivate::prepareReply(QDBusConnectionPriv
--n;
if (msg.arguments().count() < n)
- return 0; // too few arguments
+ return nullptr; // too few arguments
// check that types match
for (int i = 0; i < n; ++i)
if (metaTypes.at(i + 1) != msg.arguments().at(i).userType() &&
msg.arguments().at(i).userType() != qMetaTypeId<QDBusArgument>())
- return 0; // no match
+ return nullptr; // no match
// we can deliver
// prepare for the call
@@ -944,7 +944,7 @@ void QDBusConnectionPrivate::deliverCall(QObject *object, int /*flags*/, const Q
params.append(const_cast<void *>(arg.constData()));
else if (arg.userType() == qMetaTypeId<QDBusArgument>()) {
// convert to what the function expects
- void *null = 0;
+ void *null = nullptr;
auxParameters.append(QVariant(id, null));
const QDBusArgument &in =
@@ -972,7 +972,7 @@ void QDBusConnectionPrivate::deliverCall(QObject *object, int /*flags*/, const Q
// output arguments
const int numMetaTypes = metaTypes.count();
QVariantList outputArgs;
- void *null = 0;
+ void *null = nullptr;
if (metaTypes[0] != QMetaType::Void && metaTypes[0] != QMetaType::UnknownType) {
outputArgs.reserve(numMetaTypes - i + 1);
QVariant arg(metaTypes[0], null);
@@ -1026,8 +1026,8 @@ void QDBusConnectionPrivate::deliverCall(QObject *object, int /*flags*/, const Q
extern bool qDBusInitThreads();
QDBusConnectionPrivate::QDBusConnectionPrivate(QObject *p)
- : QObject(p), ref(1), capabilities(0), mode(InvalidMode), busService(0),
- connection(0),
+ : QObject(p), ref(1), mode(InvalidMode), busService(nullptr),
+ connection(nullptr),
rootNode(QString(QLatin1Char('/'))),
anonymousAuthenticationAllowed(false),
dispatchEnabled(true)
@@ -1087,11 +1087,11 @@ QDBusConnectionPrivate::~QDBusConnectionPrivate()
}
if (connection)
q_dbus_connection_unref(connection);
- connection = 0;
+ connection = nullptr;
} else if (lastMode == ServerMode) {
if (server)
q_dbus_server_unref(server);
- server = 0;
+ server = nullptr;
}
}
@@ -1531,7 +1531,7 @@ void QDBusConnectionPrivate::handleObjectCall(const QDBusMessage &msg)
// user code, if necessary.
ObjectTreeNode result;
int usedLength;
- QThread *objThread = 0;
+ QThread *objThread = nullptr;
QSemaphore sem;
bool semWait;
@@ -1718,7 +1718,7 @@ void QDBusConnectionPrivate::setServer(QDBusServer *object, DBusServer *s, const
qDBusAddWatch,
qDBusRemoveWatch,
qDBusToggleWatch,
- this, 0);
+ this, nullptr);
//qDebug() << "watch_functions_set" << watch_functions_set;
Q_UNUSED(watch_functions_set);
@@ -1726,13 +1726,13 @@ void QDBusConnectionPrivate::setServer(QDBusServer *object, DBusServer *s, const
qDBusAddTimeout,
qDBusRemoveTimeout,
qDBusToggleTimeout,
- this, 0);
+ this, nullptr);
//qDebug() << "time_functions_set" << time_functions_set;
Q_UNUSED(time_functions_set);
- q_dbus_server_set_new_connection_function(server, qDBusNewConnection, this, 0);
+ q_dbus_server_set_new_connection_function(server, qDBusNewConnection, this, nullptr);
- dbus_bool_t data_set = q_dbus_server_set_data(server, server_slot, this, 0);
+ dbus_bool_t data_set = q_dbus_server_set_data(server, server_slot, this, nullptr);
//qDebug() << "data_set" << data_set;
Q_UNUSED(data_set);
}
@@ -1752,16 +1752,16 @@ void QDBusConnectionPrivate::setPeer(DBusConnection *c, const QDBusErrorInternal
qDBusAddWatch,
qDBusRemoveWatch,
qDBusToggleWatch,
- this, 0);
+ this, nullptr);
q_dbus_connection_set_timeout_functions(connection,
qDBusAddTimeout,
qDBusRemoveTimeout,
qDBusToggleTimeout,
- this, 0);
- q_dbus_connection_set_dispatch_status_function(connection, qDBusUpdateDispatchStatus, this, 0);
+ this, nullptr);
+ q_dbus_connection_set_dispatch_status_function(connection, qDBusUpdateDispatchStatus, this, nullptr);
q_dbus_connection_add_filter(connection,
qDBusSignalFilter,
- this, 0);
+ this, nullptr);
watchForDBusDisconnection();
@@ -1770,9 +1770,9 @@ void QDBusConnectionPrivate::setPeer(DBusConnection *c, const QDBusErrorInternal
static QDBusConnection::ConnectionCapabilities connectionCapabilies(DBusConnection *connection)
{
- QDBusConnection::ConnectionCapabilities result = 0;
+ QDBusConnection::ConnectionCapabilities result;
typedef dbus_bool_t (*can_send_type_t)(DBusConnection *, int);
- static can_send_type_t can_send_type = 0;
+ static can_send_type_t can_send_type = nullptr;
#if defined(QT_LINKED_LIBDBUS)
# if DBUS_VERSION-0 >= 0x010400
@@ -1809,11 +1809,11 @@ void QDBusConnectionPrivate::setConnection(DBusConnection *dbc, const QDBusError
q_dbus_connection_set_exit_on_disconnect(connection, false);
q_dbus_connection_set_watch_functions(connection, qDBusAddWatch, qDBusRemoveWatch,
- qDBusToggleWatch, this, 0);
+ qDBusToggleWatch, this, nullptr);
q_dbus_connection_set_timeout_functions(connection, qDBusAddTimeout, qDBusRemoveTimeout,
- qDBusToggleTimeout, this, 0);
- q_dbus_connection_set_dispatch_status_function(connection, qDBusUpdateDispatchStatus, this, 0);
- q_dbus_connection_add_filter(connection, qDBusSignalFilter, this, 0);
+ qDBusToggleTimeout, this, nullptr);
+ q_dbus_connection_set_dispatch_status_function(connection, qDBusUpdateDispatchStatus, this, nullptr);
+ q_dbus_connection_add_filter(connection, qDBusSignalFilter, this, nullptr);
// Initialize the hooks for the NameAcquired and NameLost signals
// we don't use connectSignal here because we don't need the rules to be sent to the bus
@@ -1904,7 +1904,7 @@ void QDBusConnectionPrivate::processFinishedCall(QDBusPendingCallPrivate *call)
if (call->pending) {
q_dbus_pending_call_unref(call->pending);
- call->pending = 0;
+ call->pending = nullptr;
}
// Are there any watchers?
@@ -2046,7 +2046,7 @@ QDBusMessage QDBusConnectionPrivate::sendWithReply(const QDBusMessage &message,
{
QDBusBlockingCallWatcher watcher(message);
- QDBusPendingCallPrivate *pcall = sendWithReplyAsync(message, 0, 0, 0, timeout);
+ QDBusPendingCallPrivate *pcall = sendWithReplyAsync(message, nullptr, nullptr, nullptr, timeout);
Q_ASSERT(pcall);
if (pcall->replyMessage.type() == QDBusMessage::InvalidMessage) {
@@ -2161,7 +2161,7 @@ QDBusPendingCallPrivate *QDBusConnectionPrivate::sendWithReplyAsync(const QDBusM
void QDBusConnectionPrivate::sendInternal(QDBusPendingCallPrivate *pcall, void *message, int timeout)
{
QDBusError error;
- DBusPendingCall *pending = 0;
+ DBusPendingCall *pending = nullptr;
DBusMessage *msg = static_cast<DBusMessage *>(message);
bool isNoReply = !pcall;
Q_ASSERT(isNoReply == !!q_dbus_message_get_no_reply(msg));
@@ -2175,7 +2175,7 @@ void QDBusConnectionPrivate::sendInternal(QDBusPendingCallPrivate *pcall, void *
q_dbus_message_unref(msg);
pcall->pending = pending;
- q_dbus_pending_call_set_notify(pending, qDBusResultReceived, pcall, 0);
+ q_dbus_pending_call_set_notify(pending, qDBusResultReceived, pcall, nullptr);
// DBus won't notify us when a peer disconnects or server terminates so we need to track these ourselves
if (mode == QDBusConnectionPrivate::PeerMode || mode == QDBusConnectionPrivate::ClientMode)
@@ -2245,7 +2245,7 @@ bool QDBusConnectionPrivate::addSignalHook(const QString &key, const SignalHook
}
}
- signalHooks.insertMulti(key, hook);
+ signalHooks.insert(key, hook);
connect(hook.obj, &QObject::destroyed, this, &QDBusConnectionPrivate::objectDestroyed,
Qt::ConnectionType(Qt::BlockingQueuedConnection | Qt::UniqueConnection));
@@ -2261,7 +2261,7 @@ bool QDBusConnectionPrivate::addSignalHook(const QString &key, const SignalHook
if (connection) {
if (mode != QDBusConnectionPrivate::PeerMode) {
qDBusDebug() << this << "Adding rule:" << hook.matchRule;
- q_dbus_bus_add_match(connection, hook.matchRule, NULL);
+ q_dbus_bus_add_match(connection, hook.matchRule, nullptr);
// Successfully connected the signal
// Do we need to watch for this name?
@@ -2274,7 +2274,7 @@ bool QDBusConnectionPrivate::addSignalHook(const QString &key, const SignalHook
q_dbus_bus_add_match(connection,
buildMatchRule(QDBusUtil::dbusService(), QString(), QDBusUtil::dbusInterface(),
QDBusUtil::nameOwnerChanged(), rules, QString()),
- NULL);
+ nullptr);
data.owner = getNameOwnerNoCache(hook.service);
qDBusDebug() << this << "Watching service" << hook.service << "for owner changes (current owner:"
<< data.owner << ")";
@@ -2362,7 +2362,7 @@ QDBusConnectionPrivate::removeSignalHookNoLock(SignalHookHash::Iterator it)
if (connection && erase) {
if (mode != QDBusConnectionPrivate::PeerMode) {
qDBusDebug() << this << "Removing rule:" << hook.matchRule;
- q_dbus_bus_remove_match(connection, hook.matchRule, NULL);
+ q_dbus_bus_remove_match(connection, hook.matchRule, nullptr);
// Successfully disconnected the signal
// Were we watching for this name?
@@ -2375,7 +2375,7 @@ QDBusConnectionPrivate::removeSignalHookNoLock(SignalHookHash::Iterator it)
q_dbus_bus_remove_match(connection,
buildMatchRule(QDBusUtil::dbusService(), QString(), QDBusUtil::dbusInterface(),
QDBusUtil::nameOwnerChanged(), rules, QString()),
- NULL);
+ nullptr);
}
}
}
@@ -2575,7 +2575,7 @@ QDBusConnectionPrivate::findMetaObject(const QString &service, const QString &pa
// it doesn't exist yet, we have to create it
QDBusWriteLocker locker(FindMetaObject2Action, this);
- QDBusMetaObject *mo = 0;
+ QDBusMetaObject *mo = nullptr;
if (!interface.isEmpty())
mo = cachedMetaObjects.value(interface, 0);
if (mo)
@@ -2591,7 +2591,7 @@ QDBusConnectionPrivate::findMetaObject(const QString &service, const QString &pa
error = QDBusError(reply);
lastError = error;
if (reply.type() != QDBusMessage::ErrorMessage || error.type() != QDBusError::UnknownMethod)
- return 0; // error
+ return nullptr; // error
}
// release the lock and return
diff --git a/src/dbus/qdbusinterface.cpp b/src/dbus/qdbusinterface.cpp
index 4dd02e8c76..72b9d42247 100644
--- a/src/dbus/qdbusinterface.cpp
+++ b/src/dbus/qdbusinterface.cpp
@@ -149,7 +149,7 @@ static void copyArgument(void *to, int id, const QVariant &arg)
QDBusInterfacePrivate::QDBusInterfacePrivate(const QString &serv, const QString &p,
const QString &iface, const QDBusConnection &con)
- : QDBusAbstractInterfacePrivate(serv, p, iface, con, true), metaObject(0)
+ : QDBusAbstractInterfacePrivate(serv, p, iface, con, true), metaObject(nullptr)
{
// QDBusAbstractInterfacePrivate's constructor checked the parameters for us
if (connection.isConnected()) {
@@ -204,7 +204,9 @@ QDBusInterfacePrivate::~QDBusInterfacePrivate()
interface \a interface on object at path \a path on service \a
service, using the given \a connection. If \a interface is an
empty string, the object created will refer to the merging of all
- interfaces found in that object.
+ interfaces found by introspecting that object. Otherwise if
+ \a interface is not empty, the QDBusInterface object will be cached
+ to speedup further creations of the same interface.
\a parent is passed to the base class constructor.
@@ -243,7 +245,7 @@ const QMetaObject *QDBusInterface::metaObject() const
*/
void *QDBusInterface::qt_metacast(const char *_clname)
{
- if (!_clname) return 0;
+ if (!_clname) return nullptr;
if (!strcmp(_clname, "QDBusInterface"))
return static_cast<void*>(const_cast<QDBusInterface*>(this));
if (d_func()->interface.toLatin1() == _clname)
diff --git a/src/dbus/qdbusinternalfilters.cpp b/src/dbus/qdbusinternalfilters.cpp
index edee4fc1e5..74cc470596 100644
--- a/src/dbus/qdbusinternalfilters.cpp
+++ b/src/dbus/qdbusinternalfilters.cpp
@@ -358,7 +358,7 @@ static int writeProperty(QObject *obj, const QByteArray &property_name, QVariant
if (id != QMetaType::QVariant && value.userType() == QDBusMetaTypeId::argument()) {
// we have to demarshall before writing
- void *null = 0;
+ void *null = nullptr;
QVariant other(id, null);
if (!QDBusMetaType::demarshall(qvariant_cast<QDBusArgument>(value), id, other.data())) {
qWarning("QDBusConnection: type `%s' (%d) is not registered with QtDBus. "
diff --git a/src/dbus/qdbusmarshaller.cpp b/src/dbus/qdbusmarshaller.cpp
index 8e0b3e4598..46b41d1c07 100644
--- a/src/dbus/qdbusmarshaller.cpp
+++ b/src/dbus/qdbusmarshaller.cpp
@@ -197,7 +197,7 @@ inline bool QDBusMarshaller::append(const QDBusVariant &arg)
}
QByteArray tmpSignature;
- const char *signature = 0;
+ const char *signature = nullptr;
if (id == QDBusMetaTypeId::argument()) {
// take the signature from the QDBusArgument object we're marshalling
tmpSignature =
@@ -243,7 +243,7 @@ inline void QDBusMarshaller::append(const QStringList &arg)
inline QDBusMarshaller *QDBusMarshaller::beginStructure()
{
- return beginCommon(DBUS_TYPE_STRUCT, 0);
+ return beginCommon(DBUS_TYPE_STRUCT, nullptr);
}
inline QDBusMarshaller *QDBusMarshaller::beginArray(int id)
@@ -301,7 +301,7 @@ inline QDBusMarshaller *QDBusMarshaller::beginMap(int kid, int vid)
inline QDBusMarshaller *QDBusMarshaller::beginMapEntry()
{
- return beginCommon(DBUS_TYPE_DICT_ENTRY, 0);
+ return beginCommon(DBUS_TYPE_DICT_ENTRY, nullptr);
}
void QDBusMarshaller::open(QDBusMarshaller &sub, int code, const char *signature)
@@ -572,7 +572,7 @@ bool QDBusMarshaller::appendCrossMarshalling(QDBusDemarshaller *demarshaller)
QDBusMarshaller mrecursed(capabilities); // create on the stack makes it autoclose
QByteArray subSignature;
- const char *sig = 0;
+ const char *sig = nullptr;
if (code == DBUS_TYPE_VARIANT || code == DBUS_TYPE_ARRAY) {
subSignature = drecursed->currentSignature().toLatin1();
if (!subSignature.isEmpty())
diff --git a/src/dbus/qdbusmessage.cpp b/src/dbus/qdbusmessage.cpp
index 3e8f2eaf3f..71cdec93ca 100644
--- a/src/dbus/qdbusmessage.cpp
+++ b/src/dbus/qdbusmessage.cpp
@@ -64,11 +64,11 @@ Q_STATIC_ASSERT(QDBusMessage::SignalMessage == DBUS_MESSAGE_TYPE_SIGNAL);
static inline const char *data(const QByteArray &arr)
{
- return arr.isEmpty() ? 0 : arr.constData();
+ return arr.isEmpty() ? nullptr : arr.constData();
}
QDBusMessagePrivate::QDBusMessagePrivate()
- : msg(0), reply(0), localReply(0), ref(1), type(QDBusMessage::InvalidMessage),
+ : msg(nullptr), reply(nullptr), localReply(nullptr), ref(1), type(QDBusMessage::InvalidMessage),
delayedReply(false), localMessage(false),
parametersValidated(false), autoStartService(true),
interactiveAuthorizationAllowed(false)
@@ -113,10 +113,10 @@ DBusMessage *QDBusMessagePrivate::toDBusMessage(const QDBusMessage &message, QDB
{
if (!qdbus_loadLibDBus()) {
*error = QDBusError(QDBusError::Failed, QLatin1String("Could not open lidbus-1 library"));
- return 0;
+ return nullptr;
}
- DBusMessage *msg = 0;
+ DBusMessage *msg = nullptr;
const QDBusMessagePrivate *d_ptr = message.d_ptr;
switch (d_ptr->type) {
@@ -127,13 +127,13 @@ DBusMessage *QDBusMessagePrivate::toDBusMessage(const QDBusMessage &message, QDB
// only service and interface can be empty -> path and name must not be empty
if (!d_ptr->parametersValidated) {
if (!QDBusUtil::checkBusName(d_ptr->service, QDBusUtil::EmptyAllowed, error))
- return 0;
+ return nullptr;
if (!QDBusUtil::checkObjectPath(d_ptr->path, QDBusUtil::EmptyNotAllowed, error))
- return 0;
+ return nullptr;
if (!QDBusUtil::checkInterfaceName(d_ptr->interface, QDBusUtil::EmptyAllowed, error))
- return 0;
+ return nullptr;
if (!QDBusUtil::checkMemberName(d_ptr->name, QDBusUtil::EmptyNotAllowed, error, "method"))
- return 0;
+ return nullptr;
}
msg = q_dbus_message_new_method_call(data(d_ptr->service.toUtf8()), d_ptr->path.toUtf8(),
@@ -153,7 +153,7 @@ DBusMessage *QDBusMessagePrivate::toDBusMessage(const QDBusMessage &message, QDB
// error name can't be empty
if (!d_ptr->parametersValidated
&& !QDBusUtil::checkErrorName(d_ptr->name, QDBusUtil::EmptyNotAllowed, error))
- return 0;
+ return nullptr;
msg = q_dbus_message_new(DBUS_MESSAGE_TYPE_ERROR);
q_dbus_message_set_error_name(msg, d_ptr->name.toUtf8());
@@ -166,13 +166,13 @@ DBusMessage *QDBusMessagePrivate::toDBusMessage(const QDBusMessage &message, QDB
// only the service name can be empty here
if (!d_ptr->parametersValidated) {
if (!QDBusUtil::checkBusName(d_ptr->service, QDBusUtil::EmptyAllowed, error))
- return 0;
+ return nullptr;
if (!QDBusUtil::checkObjectPath(d_ptr->path, QDBusUtil::EmptyNotAllowed, error))
- return 0;
+ return nullptr;
if (!QDBusUtil::checkInterfaceName(d_ptr->interface, QDBusUtil::EmptyAllowed, error))
- return 0;
+ return nullptr;
if (!QDBusUtil::checkMemberName(d_ptr->name, QDBusUtil::EmptyNotAllowed, error, "method"))
- return 0;
+ return nullptr;
}
msg = q_dbus_message_new_signal(d_ptr->path.toUtf8(), d_ptr->interface.toUtf8(),
@@ -203,7 +203,7 @@ DBusMessage *QDBusMessagePrivate::toDBusMessage(const QDBusMessage &message, QDB
// not ok;
q_dbus_message_unref(msg);
*error = QDBusError(QDBusError::Failed, QLatin1String("Marshalling failed: ") + marshaller.errorString);
- return 0;
+ return nullptr;
}
/*
diff --git a/src/dbus/qdbusmetaobject.cpp b/src/dbus/qdbusmetaobject.cpp
index 806cf7b415..74e17ced77 100644
--- a/src/dbus/qdbusmetaobject.cpp
+++ b/src/dbus/qdbusmetaobject.cpp
@@ -138,7 +138,7 @@ static int registerComplexDBusType(const char *typeName)
static void *construct(void *, const void *)
{
qFatal("Cannot construct placeholder type QDBusRawType");
- return 0;
+ return nullptr;
}
};
@@ -147,7 +147,7 @@ static int registerComplexDBusType(const char *typeName)
QDBusRawTypeHandler::construct,
sizeof(void *),
QMetaType::MovableType,
- 0);
+ nullptr);
}
Q_DBUS_EXPORT bool qt_dbus_metaobject_skip_annotations = false;
@@ -544,9 +544,9 @@ void QDBusMetaObjectGenerator::write(QDBusMetaObject *obj)
// put the metaobject together
obj->d.data = uint_data;
- obj->d.relatedMetaObjects = 0;
- obj->d.static_metacall = 0;
- obj->d.extradata = 0;
+ obj->d.relatedMetaObjects = nullptr;
+ obj->d.static_metacall = nullptr;
+ obj->d.extradata = nullptr;
obj->d.stringdata = reinterpret_cast<const QByteArrayData *>(string_data);
obj->d.superdata = &QDBusAbstractInterface::staticMetaObject;
}
@@ -587,7 +587,7 @@ QDBusMetaObject *QDBusMetaObject::createMetaObject(const QString &interface, con
error = QDBusError();
QDBusIntrospection::Interfaces parsed = QDBusIntrospection::parseInterfaces(xml);
- QDBusMetaObject *we = 0;
+ QDBusMetaObject *we = nullptr;
QDBusIntrospection::Interfaces::ConstIterator it = parsed.constBegin();
QDBusIntrospection::Interfaces::ConstIterator end = parsed.constEnd();
for ( ; it != end; ++it) {
@@ -621,7 +621,7 @@ QDBusMetaObject *QDBusMetaObject::createMetaObject(const QString &interface, con
if (parsed.isEmpty()) {
// object didn't return introspection
we = new QDBusMetaObject;
- QDBusMetaObjectGenerator generator(interface, 0);
+ QDBusMetaObjectGenerator generator(interface, nullptr);
generator.write(we);
we->cached = false;
return we;
@@ -651,7 +651,7 @@ QDBusMetaObject *QDBusMetaObject::createMetaObject(const QString &interface, con
error = QDBusError(QDBusError::UnknownInterface,
QLatin1String("Interface '%1' was not found")
.arg(interface));
- return 0;
+ return nullptr;
}
QDBusMetaObject::QDBusMetaObject()
@@ -670,7 +670,7 @@ const int *QDBusMetaObject::inputTypesForMethod(int id) const
int handle = priv(d.data)->methodDBusData + id*intsPerMethod;
return reinterpret_cast<const int*>(d.data + d.data[handle]);
}
- return 0;
+ return nullptr;
}
const int *QDBusMetaObject::outputTypesForMethod(int id) const
@@ -680,7 +680,7 @@ const int *QDBusMetaObject::outputTypesForMethod(int id) const
int handle = priv(d.data)->methodDBusData + id*intsPerMethod;
return reinterpret_cast<const int*>(d.data + d.data[handle + 1]);
}
- return 0;
+ return nullptr;
}
int QDBusMetaObject::propertyMetaType(int id) const
diff --git a/src/dbus/qdbusmetatype.cpp b/src/dbus/qdbusmetatype.cpp
index 58ce4f8930..e3804f74f8 100644
--- a/src/dbus/qdbusmetatype.cpp
+++ b/src/dbus/qdbusmetatype.cpp
@@ -67,7 +67,7 @@ QT_BEGIN_NAMESPACE
class QDBusCustomTypeInfo
{
public:
- QDBusCustomTypeInfo() : signature(), marshall(0), demarshall(0)
+ QDBusCustomTypeInfo() : signature(), marshall(nullptr), demarshall(nullptr)
{ }
// Suggestion:
@@ -78,7 +78,7 @@ public:
};
template<typename T>
-inline static void registerHelper(T * = 0)
+inline static void registerHelper(T * = nullptr)
{
void (*mf)(QDBusArgument &, const T *) = qDBusMarshallHelper<T>;
void (*df)(const QDBusArgument &, T *) = qDBusDemarshallHelper<T>;
@@ -259,7 +259,7 @@ bool QDBusMetaType::marshall(QDBusArgument &arg, int id, const void *data)
const QDBusCustomTypeInfo &info = (*ct).at(id);
if (!info.marshall) {
- mf = 0; // make gcc happy
+ mf = nullptr; // make gcc happy
return false;
} else
mf = info.marshall;
@@ -288,7 +288,7 @@ bool QDBusMetaType::demarshall(const QDBusArgument &arg, int id, void *data)
const QDBusCustomTypeInfo &info = (*ct).at(id);
if (!info.demarshall) {
- df = 0; // make gcc happy
+ df = nullptr; // make gcc happy
return false;
} else
df = info.demarshall;
@@ -460,7 +460,7 @@ const char *QDBusMetaType::typeToSignature(int type)
{
QReadLocker locker(customTypesLock());
if (type >= ct->size())
- return 0; // type not registered with us
+ return nullptr; // type not registered with us
const QDBusCustomTypeInfo &info = (*ct).at(type);
@@ -468,7 +468,7 @@ const char *QDBusMetaType::typeToSignature(int type)
return info.signature;
if (!info.marshall)
- return 0; // type not registered with us
+ return nullptr; // type not registered with us
}
// call to user code to construct the signature type
diff --git a/src/dbus/qdbusmisc.cpp b/src/dbus/qdbusmisc.cpp
index eb8f61c783..c321b7524d 100644
--- a/src/dbus/qdbusmisc.cpp
+++ b/src/dbus/qdbusmisc.cpp
@@ -62,7 +62,7 @@ bool qDBusCheckAsyncTag(const char *tag)
return false;
const char *p = strstr(tag, noReplyTag);
- if (p != NULL &&
+ if (p != nullptr &&
(p == tag || *(p-1) == ' ') &&
(p[sizeof noReplyTag - 1] == '\0' || p[sizeof noReplyTag - 1] == ' '))
return true;
@@ -167,7 +167,7 @@ int qDBusParametersForMethod(const QList<QByteArray> &parameterTypes, QVector<in
if (id == 0) {
errorMsg = QLatin1String("Unregistered output type in parameter list: ") + QLatin1String(type);
return -1;
- } else if (QDBusMetaType::typeToSignature(id) == 0)
+ } else if (QDBusMetaType::typeToSignature(id) == nullptr)
return -1;
metaTypes.append( id );
@@ -195,7 +195,7 @@ int qDBusParametersForMethod(const QList<QByteArray> &parameterTypes, QVector<in
if (id == QDBusMetaTypeId::message())
seenMessage = true;
- else if (QDBusMetaType::typeToSignature(id) == 0) {
+ else if (QDBusMetaType::typeToSignature(id) == nullptr) {
errorMsg = QLatin1String("Type not registered with QtDBus in parameter list: ") + QLatin1String(type);
return -1;
}
diff --git a/src/dbus/qdbuspendingcall.cpp b/src/dbus/qdbuspendingcall.cpp
index 8e604d5a77..e55321f79c 100644
--- a/src/dbus/qdbuspendingcall.cpp
+++ b/src/dbus/qdbuspendingcall.cpp
@@ -182,7 +182,7 @@ bool QDBusPendingCallPrivate::setReplyCallback(QObject *target, const char *memb
if (metaTypes.at(count) == QDBusMetaTypeId::message())
--count;
- setMetaTypes(count, count ? metaTypes.constData() + 1 : 0);
+ setMetaTypes(count, count ? metaTypes.constData() + 1 : nullptr);
return true;
}
@@ -469,10 +469,10 @@ QDBusPendingCall QDBusPendingCall::fromError(const QDBusError &error)
*/
QDBusPendingCall QDBusPendingCall::fromCompletedCall(const QDBusMessage &msg)
{
- QDBusPendingCallPrivate *d = 0;
+ QDBusPendingCallPrivate *d = nullptr;
if (msg.type() == QDBusMessage::ErrorMessage ||
msg.type() == QDBusMessage::ReplyMessage) {
- d = new QDBusPendingCallPrivate(QDBusMessage(), 0);
+ d = new QDBusPendingCallPrivate(QDBusMessage(), nullptr);
d->replyMessage = msg;
d->ref.storeRelaxed(1);
}
diff --git a/src/dbus/qdbuspendingreply.cpp b/src/dbus/qdbuspendingreply.cpp
index ec49bafb60..cf13a134c5 100644
--- a/src/dbus/qdbuspendingreply.cpp
+++ b/src/dbus/qdbuspendingreply.cpp
@@ -247,7 +247,7 @@
*/
QDBusPendingReplyData::QDBusPendingReplyData()
- : QDBusPendingCall(0) // initialize base class empty
+ : QDBusPendingCall(nullptr) // initialize base class empty
{
}
@@ -262,7 +262,7 @@ void QDBusPendingReplyData::assign(const QDBusPendingCall &other)
void QDBusPendingReplyData::assign(const QDBusMessage &message)
{
- d = new QDBusPendingCallPrivate(QDBusMessage(), 0); // drops the reference to the old one
+ d = new QDBusPendingCallPrivate(QDBusMessage(), nullptr); // drops the reference to the old one
d->replyMessage = message;
}
diff --git a/src/dbus/qdbusreply.cpp b/src/dbus/qdbusreply.cpp
index cf1a70508c..cd7193e02f 100644
--- a/src/dbus/qdbusreply.cpp
+++ b/src/dbus/qdbusreply.cpp
@@ -202,7 +202,7 @@ void qDBusReplyFill(const QDBusMessage &reply, QDBusError &error, QVariant &data
}
const char *expectedSignature = QDBusMetaType::typeToSignature(data.userType());
- const char *receivedType = 0;
+ const char *receivedType = nullptr;
QByteArray receivedSignature;
if (reply.arguments().count() >= 1) {
diff --git a/src/dbus/qdbusunixfiledescriptor.cpp b/src/dbus/qdbusunixfiledescriptor.cpp
index 73d1db2680..87cabb93f6 100644
--- a/src/dbus/qdbusunixfiledescriptor.cpp
+++ b/src/dbus/qdbusunixfiledescriptor.cpp
@@ -135,7 +135,7 @@ QExplicitlySharedDataPointer<QDBusUnixFileDescriptorPrivate>::~QExplicitlyShared
\sa fileDescriptor(), isValid()
*/
QDBusUnixFileDescriptor::QDBusUnixFileDescriptor()
- : d(0)
+ : d(nullptr)
{
}
@@ -153,7 +153,7 @@ QDBusUnixFileDescriptor::QDBusUnixFileDescriptor()
\sa setFileDescriptor(), fileDescriptor()
*/
QDBusUnixFileDescriptor::QDBusUnixFileDescriptor(int fileDescriptor)
- : d(0)
+ : d(nullptr)
{
if (fileDescriptor != -1)
setFileDescriptor(fileDescriptor);
diff --git a/src/dbus/qdbusutil.cpp b/src/dbus/qdbusutil.cpp
index dc94897ac4..09311d1ad4 100644
--- a/src/dbus/qdbusutil.cpp
+++ b/src/dbus/qdbusutil.cpp
@@ -246,12 +246,12 @@ static const char fixedTypes[] = "ybnqiuxtdh";
static bool isBasicType(int c)
{
- return c != DBUS_TYPE_INVALID && strchr(basicTypes, c) != NULL;
+ return c != DBUS_TYPE_INVALID && strchr(basicTypes, c) != nullptr;
}
static bool isFixedType(int c)
{
- return c != DBUS_TYPE_INVALID && strchr(fixedTypes, c) != NULL;
+ return c != DBUS_TYPE_INVALID && strchr(fixedTypes, c) != nullptr;
}
// Returns a pointer to one-past-end of this type if it's valid;
@@ -260,10 +260,10 @@ static const char *validateSingleType(const char *signature)
{
char c = *signature;
if (c == DBUS_TYPE_INVALID)
- return 0;
+ return nullptr;
// is it one of the one-letter types?
- if (strchr(oneLetterTypes, c) != NULL)
+ if (strchr(oneLetterTypes, c) != nullptr)
return signature + 1;
// is it an array?
@@ -277,9 +277,9 @@ static const char *validateSingleType(const char *signature)
// and a free value
c = *++signature;
if (!isBasicType(c))
- return 0;
+ return nullptr;
signature = validateSingleType(signature + 1);
- return signature && *signature == DBUS_DICT_ENTRY_END_CHAR ? signature + 1 : 0;
+ return signature && *signature == DBUS_DICT_ENTRY_END_CHAR ? signature + 1 : nullptr;
}
return validateSingleType(signature);
@@ -291,14 +291,14 @@ static const char *validateSingleType(const char *signature)
while (true) {
signature = validateSingleType(signature);
if (!signature)
- return 0;
+ return nullptr;
if (*signature == DBUS_STRUCT_END_CHAR)
return signature + 1;
}
}
// invalid/unknown type
- return 0;
+ return nullptr;
}
/*!
diff --git a/src/gui/accessible/qaccessible.cpp b/src/gui/accessible/qaccessible.cpp
index db47a3abc1..7922d6fb06 100644
--- a/src/gui/accessible/qaccessible.cpp
+++ b/src/gui/accessible/qaccessible.cpp
@@ -478,15 +478,15 @@ Q_GLOBAL_STATIC(QAccessiblePluginsHash, qAccessiblePlugins)
Q_GLOBAL_STATIC(QList<QAccessible::InterfaceFactory>, qAccessibleFactories)
Q_GLOBAL_STATIC(QList<QAccessible::ActivationObserver *>, qAccessibleActivationObservers)
-QAccessible::UpdateHandler QAccessible::updateHandler = 0;
-QAccessible::RootObjectHandler QAccessible::rootObjectHandler = 0;
+QAccessible::UpdateHandler QAccessible::updateHandler = nullptr;
+QAccessible::RootObjectHandler QAccessible::rootObjectHandler = nullptr;
static bool cleanupAdded = false;
static QPlatformAccessibility *platformAccessibility()
{
QPlatformIntegration *pfIntegration = QGuiApplicationPrivate::platformIntegration();
- return pfIntegration ? pfIntegration->accessibility() : 0;
+ return pfIntegration ? pfIntegration->accessibility() : nullptr;
}
/*!
@@ -673,7 +673,7 @@ void QAccessible::removeActivationObserver(ActivationObserver *observer)
QAccessibleInterface *QAccessible::queryAccessibleInterface(QObject *object)
{
if (!object)
- return 0;
+ return nullptr;
if (Id id = QAccessibleCache::instance()->objectToId.value(object))
return QAccessibleCache::instance()->interfaceForId(id);
@@ -696,7 +696,7 @@ QAccessibleInterface *QAccessible::queryAccessibleInterface(QObject *object)
// Find a QAccessiblePlugin (factory) for the class name. If there's
// no entry in the cache try to create it using the plugin loader.
if (!qAccessiblePlugins()->contains(cn)) {
- QAccessiblePlugin *factory = 0; // 0 means "no plugin found". This is cached as well.
+ QAccessiblePlugin *factory = nullptr; // 0 means "no plugin found". This is cached as well.
const int index = loader()->indexOf(cn);
if (index != -1)
factory = qobject_cast<QAccessiblePlugin *>(loader()->instance(index));
@@ -724,7 +724,7 @@ QAccessibleInterface *QAccessible::queryAccessibleInterface(QObject *object)
return appInterface;
}
- return 0;
+ return nullptr;
}
/*!
@@ -1113,7 +1113,7 @@ QAccessibleInterface::relations(QAccessible::Relation /*match = QAccessible::All
*/
QAccessibleInterface *QAccessibleInterface::focusChild() const
{
- return 0;
+ return nullptr;
}
/*!
@@ -1758,12 +1758,12 @@ QAccessibleTextSelectionEvent::~QAccessibleTextSelectionEvent()
*/
QAccessibleInterface *QAccessibleEvent::accessibleInterface() const
{
- if (m_object == 0)
+ if (m_object == nullptr)
return QAccessible::accessibleInterface(m_uniqueId);
QAccessibleInterface *iface = QAccessible::queryAccessibleInterface(m_object);
if (!iface || !iface->isValid())
- return 0;
+ return nullptr;
if (m_child >= 0) {
QAccessibleInterface *child = iface->child(m_child);
@@ -1791,7 +1791,7 @@ QAccessibleInterface *QAccessibleEvent::accessibleInterface() const
*/
QWindow *QAccessibleInterface::window() const
{
- return 0;
+ return nullptr;
}
/*!
diff --git a/src/gui/accessible/qaccessibleobject.cpp b/src/gui/accessible/qaccessibleobject.cpp
index 2ef8502ad5..771cfda574 100644
--- a/src/gui/accessible/qaccessibleobject.cpp
+++ b/src/gui/accessible/qaccessibleobject.cpp
@@ -128,7 +128,7 @@ QAccessibleInterface *QAccessibleObject::childAt(int x, int y) const
if (childIface->isValid() && childIface->rect().contains(x,y))
return childIface;
}
- return 0;
+ return nullptr;
}
/*!
@@ -152,7 +152,7 @@ QWindow *QAccessibleApplication::window() const
{
// an application can have several windows, and AFAIK we don't need
// to notify about changes on the application.
- return 0;
+ return nullptr;
}
// all toplevel windows except popups and the desktop
@@ -190,7 +190,7 @@ int QAccessibleApplication::indexOfChild(const QAccessibleInterface *child) cons
QAccessibleInterface *QAccessibleApplication::parent() const
{
- return 0;
+ return nullptr;
}
QAccessibleInterface *QAccessibleApplication::child(int index) const
@@ -198,7 +198,7 @@ QAccessibleInterface *QAccessibleApplication::child(int index) const
const QObjectList tlo(topLevelObjects());
if (index >= 0 && index < tlo.count())
return QAccessible::queryAccessibleInterface(tlo.at(index));
- return 0;
+ return nullptr;
}
@@ -207,7 +207,7 @@ QAccessibleInterface *QAccessibleApplication::focusChild() const
{
if (QWindow *window = QGuiApplication::focusWindow())
return window->accessibleRoot();
- return 0;
+ return nullptr;
}
/*! \reimp */
diff --git a/src/gui/accessible/qplatformaccessibility.cpp b/src/gui/accessible/qplatformaccessibility.cpp
index 8c806d47b8..4813b83963 100644
--- a/src/gui/accessible/qplatformaccessibility.cpp
+++ b/src/gui/accessible/qplatformaccessibility.cpp
@@ -114,7 +114,7 @@ void QPlatformAccessibility::initialize()
typedef PluginKeyMap::const_iterator PluginKeyMapConstIterator;
const PluginKeyMap keyMap = bridgeloader()->keyMap();
- QAccessibleBridgePlugin *factory = 0;
+ QAccessibleBridgePlugin *factory = nullptr;
int i = -1;
const PluginKeyMapConstIterator cend = keyMap.constEnd();
for (PluginKeyMapConstIterator it = keyMap.constBegin(); it != cend; ++it) {
diff --git a/src/gui/animation/qguivariantanimation.cpp b/src/gui/animation/qguivariantanimation.cpp
index a5b6d8b95c..8afe77ed46 100644
--- a/src/gui/animation/qguivariantanimation.cpp
+++ b/src/gui/animation/qguivariantanimation.cpp
@@ -75,15 +75,15 @@ static void qUnregisterGuiGetInterpolator()
{
// casts required by Sun CC 5.5
qRegisterAnimationInterpolator<QColor>(
- (QVariant (*)(const QColor &, const QColor &, qreal))0);
+ (QVariant (*)(const QColor &, const QColor &, qreal))nullptr);
qRegisterAnimationInterpolator<QVector2D>(
- (QVariant (*)(const QVector2D &, const QVector2D &, qreal))0);
+ (QVariant (*)(const QVector2D &, const QVector2D &, qreal))nullptr);
qRegisterAnimationInterpolator<QVector3D>(
- (QVariant (*)(const QVector3D &, const QVector3D &, qreal))0);
+ (QVariant (*)(const QVector3D &, const QVector3D &, qreal))nullptr);
qRegisterAnimationInterpolator<QVector4D>(
- (QVariant (*)(const QVector4D &, const QVector4D &, qreal))0);
+ (QVariant (*)(const QVector4D &, const QVector4D &, qreal))nullptr);
qRegisterAnimationInterpolator<QQuaternion>(
- (QVariant (*)(const QQuaternion &, const QQuaternion &, qreal))0);
+ (QVariant (*)(const QQuaternion &, const QQuaternion &, qreal))nullptr);
}
Q_DESTRUCTOR_FUNCTION(qUnregisterGuiGetInterpolator)
diff --git a/src/gui/configure.json b/src/gui/configure.json
index 19312d245d..7f4d7cc6af 100644
--- a/src/gui/configure.json
+++ b/src/gui/configure.json
@@ -41,11 +41,10 @@
"sm": { "type": "boolean", "name": "sessionmanager" },
"tslib": "boolean",
"vulkan": "boolean",
- "xcb": { "type": "enum", "values": [ "no", "yes", "qt", "system" ] },
+ "xcb": "boolean",
+ "bundled-xcb-xinput": "boolean",
"xcb-native-painting": "boolean",
"xcb-xlib": "boolean",
- "xcb-xinput": "boolean",
- "xkb": "boolean",
"xkbcommon": "boolean"
}
},
@@ -573,18 +572,22 @@
]
},
"xcb": {
- "label": "XCB >= 1.9",
+ "label": "XCB >= 1.11",
"test": {
"main": [
"int primaryScreen = 0;",
"(void)xcb_connect(\"\", &primaryScreen);",
- "// This won't compile unless libxcb >= 1.9 which defines XCB_CONN_CLOSED_INVALID_SCREEN.",
- "int xcbScreenError = XCB_CONN_CLOSED_INVALID_SCREEN;"
+ "/* XCB_PACKED define was added in libxcb 1.11 */",
+ "#ifdef XCB_PACKED",
+ " return 0;",
+ "#else",
+ " return -1;",
+ "#endif"
]
},
"headers": "xcb/xcb.h",
"sources": [
- { "type": "pkgConfig", "args": "xcb >= 1.9" },
+ { "type": "pkgConfig", "args": "xcb >= 1.11" },
"-lxcb"
]
},
@@ -691,21 +694,10 @@
"use": "xcb xlib"
},
"xcb_xkb": {
- "label": "XCB XKB >= 1.10",
- "test": {
- "head": [
- "// xkb.h is using a variable called 'explicit', which is a reserved keyword in C++",
- "#define explicit dont_use_cxx_explicit"
- ],
- "tail": "#undef explicit",
- "main": [
- "// This takes more arguments in xcb-xkb < 1.10.",
- "xcb_xkb_get_kbd_by_name_unchecked(NULL, 0, 0, 0, 0);"
- ]
- },
+ "label": "XCB XKB",
"headers": "xcb/xkb.h",
"sources": [
- { "type": "pkgConfig", "args": "xcb-xkb >= 1.10" },
+ { "type": "pkgConfig", "args": "xcb-xkb" },
"-lxcb-xkb"
],
"use": "xcb"
@@ -769,7 +761,7 @@
"xkbcommon_x11": {
"label": "xkbcommon-x11",
"test": {
- "main": "xkb_x11_get_core_keyboard_device_id(nullptr);"
+ "main": "xkb_x11_setup_xkb_extension_flags flag = XKB_X11_SETUP_XKB_EXTENSION_NO_FLAGS;"
},
"headers": [ "xkbcommon/xkbcommon-x11.h" ],
"sources": [
@@ -1056,6 +1048,11 @@
"label": "XCB (extensions)",
"type": "compile",
"test": {
+ "head": [
+ "// xkb.h is using a variable called 'explicit', which is a reserved keyword in C++",
+ "#define explicit dont_use_cxx_explicit"
+ ],
+ "tail": "#undef explicit",
"include": [
"xcb/xcb.h",
"xcb/xcb_image.h",
@@ -1068,7 +1065,8 @@
"xcb/xfixes.h",
"xcb/xinerama.h",
"xcb/xcb_icccm.h",
- "xcb/xcb_renderutil.h"
+ "xcb/xcb_renderutil.h",
+ "xcb/xkb.h"
],
"main": [
"int primaryScreen = 0;",
@@ -1082,10 +1080,13 @@
" xcb_render_query_pict_formats_reply(c, formatsCookie, &error);",
"/* RENDERUTIL: xcb_renderutil.h include won't compile unless version >= 0.3.9 */",
- "xcb_render_util_find_standard_format(nullptr, XCB_PICT_STANDARD_ARGB_32);"
+ "xcb_render_util_find_standard_format(nullptr, XCB_PICT_STANDARD_ARGB_32);",
+
+ "/* XKB: This takes more arguments in xcb-xkb < 1.11 */",
+ "xcb_xkb_get_kbd_by_name_replies_key_names_value_list_sizeof(nullptr, 0, 0, 0, 0, 0, 0, 0, 0);"
]
},
- "use": "xcb_icccm xcb_image xcb_keysyms xcb_randr xcb_render xcb_renderutil xcb_shape xcb_shm xcb_sync xcb_xfixes xcb_xinerama xcb"
+ "use": "xcb_icccm xcb_image xcb_keysyms xcb_randr xcb_render xcb_renderutil xcb_shape xcb_shm xcb_sync xcb_xfixes xcb_xinerama xcb_xkb xcb"
},
"x11prefix": {
"label": "X11 prefix",
@@ -1314,7 +1315,7 @@
},
"opengles3": {
"label": "OpenGL ES 3.0",
- "condition": "features.opengles2 && !features.angle && tests.opengles3 && !config.wasm",
+ "condition": "features.opengles2 && !features.angle && tests.opengles3",
"output": [
"publicFeature",
{ "type": "define", "name": "QT_OPENGL_ES_3" }
@@ -1514,16 +1515,7 @@
"label": "XCB",
"section": "Platform plugins",
"autoDetect": "!config.darwin",
- "enable": "input.xcb == 'system' || input.xcb == 'qt' || input.xcb == 'yes'",
- "condition": "features.thread && features.xkbcommon && libs.xcb",
- "output": [ "privateFeature" ]
- },
- "system-xcb": {
- "label": "Using system-provided XCB libraries",
- "enable": "input.xcb == 'system'",
- "disable": "input.xcb == 'qt'",
- "autoDetect": "!config.darwin",
- "condition": "features.xcb && tests.xcb_syslibs",
+ "condition": "features.thread && libs.xcb && tests.xcb_syslibs && features.xkbcommon-x11",
"output": [ "privateFeature" ]
},
"x11-prefix": {
@@ -1562,12 +1554,6 @@
"condition": "features.xcb-native-painting",
"output": [ "privateFeature" ]
},
- "xkb": {
- "label": "XCB XKB",
- "emitIf": "features.xcb",
- "condition": "(!features.system-xcb || libs.xcb_xkb) && libs.xkbcommon_x11",
- "output": [ "privateFeature" ]
- },
"xcb-xlib": {
"label": "XCB Xlib",
"condition": "features.xlib && libs.xcb_xlib",
@@ -1579,10 +1565,12 @@
"condition": "features.sessionmanager && libs.x11sm",
"output": [ "privateFeature" ]
},
- "xcb-xinput": {
- "label": "XCB XInput",
+ "system-xcb-xinput": {
+ "label": "Using system-provided xcb-xinput",
"emitIf": "features.xcb",
- "condition": "!features.system-xcb || libs.xcb_xinput",
+ "disable": "input.bundled-xcb-xinput == 'yes'",
+ "enable": "input.bundled-xcb-xinput == 'no'",
+ "condition": "libs.xcb_xinput",
"output": [ "privateFeature" ]
},
"xkbcommon": {
@@ -1590,6 +1578,11 @@
"condition": "libs.xkbcommon",
"output": [ "privateFeature" ]
},
+ "xkbcommon-x11": {
+ "label": "xkbcommon-x11",
+ "condition": "features.xkbcommon && libs.xkbcommon_x11",
+ "output": [ "privateFeature" ]
+ },
"xlib": {
"label": "XLib",
"autoDetect": "!config.darwin || features.xcb",
@@ -1831,7 +1824,7 @@
{
"type": "error",
"condition": "input.xcb != '' && input.xcb != 'no' && input.xkbcommon == 'no'",
- "message": "XCB plugin requires xkbcommon, but -no-xkbcommon was provided."
+ "message": "XCB plugin requires xkbcommon and xkbcommon-x11, but -no-xkbcommon was provided."
}
],
@@ -1953,7 +1946,8 @@ QMAKE_LIBDIR_OPENGL[_ES2] and QMAKE_LIBS_OPENGL[_ES2] in the mkspec for your pla
"entries": [
"xlib",
"xcb-xlib",
- "egl_x11"
+ "egl_x11",
+ "xkbcommon-x11"
]
}
]
@@ -1986,7 +1980,7 @@ QMAKE_LIBDIR_OPENGL[_ES2] and QMAKE_LIBS_OPENGL[_ES2] in the mkspec for your pla
"section": "XCB",
"condition": "features.xcb",
"entries": [
- "system-xcb", "xkb", "xcb-xinput", "xcb-native-painting",
+ "system-xcb-xinput", "xcb-native-painting",
{
"section": "GL integrations",
"entries": [
diff --git a/src/gui/gui.pro b/src/gui/gui.pro
index 45c8c05162..350d4c5ee3 100644
--- a/src/gui/gui.pro
+++ b/src/gui/gui.pro
@@ -99,4 +99,4 @@ qtConfig(egl): CMAKE_EGL_INCDIRS = $$cmakePortablePaths($$QMAKE_INCDIR_EGL)
QMAKE_DYNAMIC_LIST_FILE = $$PWD/QtGui.dynlist
TRACEPOINT_PROVIDER = $$PWD/qtgui.tracepoints
-CONFIG += qt_tracepoints
+CONFIG += qt_tracepoints metatypes install_metatypes
diff --git a/src/gui/image/qbmphandler.cpp b/src/gui/image/qbmphandler.cpp
index 7f8e072322..32b6131309 100644
--- a/src/gui/image/qbmphandler.cpp
+++ b/src/gui/image/qbmphandler.cpp
@@ -414,7 +414,7 @@ static bool read_dib_body(QDataStream &s, const BMP_INFOHDR &bi, qint64 offset,
*p++ = tmp >> 4;
}
if ((((c & 3) + 1) & 2) == 2)
- d->getChar(0); // align on word boundary
+ d->getChar(nullptr); // align on word boundary
x += c;
}
} else { // encoded mode
@@ -494,7 +494,7 @@ static bool read_dib_body(QDataStream &s, const BMP_INFOHDR &bi, qint64 offset,
if (d->read((char *)p, b) != b)
return false;
if ((b & 1) == 1)
- d->getChar(0); // align on word boundary
+ d->getChar(nullptr); // align on word boundary
x += b;
p += b;
}
diff --git a/src/gui/image/qicon.cpp b/src/gui/image/qicon.cpp
index 84e387e317..19be066d23 100644
--- a/src/gui/image/qicon.cpp
+++ b/src/gui/image/qicon.cpp
@@ -132,7 +132,7 @@ static void qt_cleanup_icon_cache()
if Qt::AA_UseHighDpiPixmaps is not set this function
returns 1.0 to keep non-hihdpi aware code working.
*/
-static qreal qt_effective_device_pixel_ratio(QWindow *window = 0)
+static qreal qt_effective_device_pixel_ratio(QWindow *window = nullptr)
{
if (!qApp->testAttribute(Qt::AA_UseHighDpiPixmaps))
return qreal(1.0);
@@ -228,7 +228,7 @@ static QPixmapIconEngineEntry *bestSizeMatch( const QSize &size, QPixmapIconEngi
QPixmapIconEngineEntry *QPixmapIconEngine::tryMatch(const QSize &size, QIcon::Mode mode, QIcon::State state)
{
- QPixmapIconEngineEntry *pe = 0;
+ QPixmapIconEngineEntry *pe = nullptr;
for (int i = 0; i < pixmaps.count(); ++i)
if (pixmaps.at(i).mode == mode && pixmaps.at(i).state == state) {
if (pe)
@@ -674,7 +674,7 @@ QFactoryLoader *qt_iconEngineFactoryLoader()
Constructs a null icon.
*/
QIcon::QIcon() noexcept
- : d(0)
+ : d(nullptr)
{
}
@@ -682,7 +682,7 @@ QIcon::QIcon() noexcept
Constructs an icon from a \a pixmap.
*/
QIcon::QIcon(const QPixmap &pixmap)
- :d(0)
+ :d(nullptr)
{
addPixmap(pixmap);
}
@@ -723,7 +723,7 @@ QIcon::QIcon(const QIcon &other)
complete list of the supported file formats.
*/
QIcon::QIcon(const QString &fileName)
- : d(0)
+ : d(nullptr)
{
addFile(fileName);
}
@@ -838,7 +838,7 @@ QPixmap QIcon::pixmap(const QSize &size, Mode mode, State state) const
{
if (!d)
return QPixmap();
- return pixmap(0, size, mode, state);
+ return pixmap(nullptr, size, mode, state);
}
/*!
@@ -878,7 +878,7 @@ QSize QIcon::actualSize(const QSize &size, Mode mode, State state) const
{
if (!d)
return QSize();
- return actualSize(0, size, mode, state);
+ return actualSize(nullptr, size, mode, state);
}
/*!
@@ -1008,7 +1008,7 @@ void QIcon::detach()
if (d->engine->isNull()) {
if (!d->ref.deref())
delete d;
- d = 0;
+ d = nullptr;
return;
} else if (d->ref.loadRelaxed() != 1) {
QIconPrivate *x = new QIconPrivate(d->engine->clone());
diff --git a/src/gui/image/qiconloader.cpp b/src/gui/image/qiconloader.cpp
index 27c82bc09f..e67b387981 100644
--- a/src/gui/image/qiconloader.cpp
+++ b/src/gui/image/qiconloader.cpp
@@ -714,7 +714,7 @@ QIconLoaderEngineEntry *QIconLoaderEngine::entryForSize(const QThemeIconInfo &in
// Find the minimum distance icon
int minimalSize = INT_MAX;
- QIconLoaderEngineEntry *closestMatch = 0;
+ QIconLoaderEngineEntry *closestMatch = nullptr;
for (int i = 0; i < numEntries; ++i) {
QIconLoaderEngineEntry *entry = info.entries.at(i);
int distance = directorySizeDistance(entry->dir, iconsize, scale);
diff --git a/src/gui/image/qimage.cpp b/src/gui/image/qimage.cpp
index d8ed0829af..99d64737c5 100644
--- a/src/gui/image/qimage.cpp
+++ b/src/gui/image/qimage.cpp
@@ -73,7 +73,7 @@ QT_BEGIN_NAMESPACE
static inline bool isLocked(QImageData *data)
{
- return data != 0 && data->is_locked;
+ return data != nullptr && data->is_locked;
}
#if defined(Q_CC_DEC) && defined(__alpha) && (__DECCXX_VER-0 >= 50190001)
@@ -99,15 +99,15 @@ static int next_qimage_serial_number()
}
QImageData::QImageData()
- : ref(0), width(0), height(0), depth(0), nbytes(0), devicePixelRatio(1.0), data(0),
+ : ref(0), width(0), height(0), depth(0), nbytes(0), devicePixelRatio(1.0), data(nullptr),
format(QImage::Format_ARGB32), bytes_per_line(0),
ser_no(next_qimage_serial_number()),
detach_no(0),
dpmx(qt_defaultDpiX() * 100 / qreal(2.54)),
dpmy(qt_defaultDpiY() * 100 / qreal(2.54)),
offset(0, 0), own_data(true), ro_data(false), has_alpha_clut(false),
- is_cached(false), is_locked(false), cleanupFunction(0), cleanupInfo(0),
- paintEngine(0)
+ is_cached(false), is_locked(false), cleanupFunction(nullptr), cleanupInfo(nullptr),
+ paintEngine(nullptr)
{
}
@@ -170,7 +170,7 @@ QImageData::~QImageData()
delete paintEngine;
if (data && own_data)
free(data);
- data = 0;
+ data = nullptr;
}
#if defined(_M_ARM)
@@ -746,7 +746,7 @@ bool QImageData::checkForAlphaPixels() const
QImage::QImage() noexcept
: QPaintDevice()
{
- d = 0;
+ d = nullptr;
}
/*!
@@ -955,7 +955,7 @@ QImage::QImage(const uchar *data, int width, int height, int bytesPerLine, Forma
QImage::QImage(const QString &fileName, const char *format)
: QPaintDevice()
{
- d = 0;
+ d = nullptr;
load(fileName, format);
}
@@ -981,10 +981,10 @@ extern bool qt_read_xpm_image_or_array(QIODevice *device, const char * const *so
QImage::QImage(const char * const xpm[])
: QPaintDevice()
{
- d = 0;
+ d = nullptr;
if (!xpm)
return;
- if (!qt_read_xpm_image_or_array(0, xpm, *this))
+ if (!qt_read_xpm_image_or_array(nullptr, xpm, *this))
// Issue: Warning because the constructor may be ambigious
qWarning("QImage::QImage(), XPM is not supported");
}
@@ -1003,7 +1003,7 @@ QImage::QImage(const QImage &image)
: QPaintDevice()
{
if (image.paintingActive() || isLocked(image.d)) {
- d = 0;
+ d = nullptr;
image.copy().swap(*this);
} else {
d = image.d;
@@ -1593,13 +1593,13 @@ void QImage::setColor(int i, QRgb c)
uchar *QImage::scanLine(int i)
{
if (!d)
- return 0;
+ return nullptr;
detach();
// In case detach() ran out of memory
if (!d)
- return 0;
+ return nullptr;
return d->data + i * d->bytes_per_line;
}
@@ -1610,7 +1610,7 @@ uchar *QImage::scanLine(int i)
const uchar *QImage::scanLine(int i) const
{
if (!d)
- return 0;
+ return nullptr;
Q_ASSERT(i >= 0 && i < height());
return d->data + i * d->bytes_per_line;
@@ -1633,7 +1633,7 @@ const uchar *QImage::scanLine(int i) const
const uchar *QImage::constScanLine(int i) const
{
if (!d)
- return 0;
+ return nullptr;
Q_ASSERT(i >= 0 && i < height());
return d->data + i * d->bytes_per_line;
@@ -1653,12 +1653,12 @@ const uchar *QImage::constScanLine(int i) const
uchar *QImage::bits()
{
if (!d)
- return 0;
+ return nullptr;
detach();
// In case detach ran out of memory...
if (!d)
- return 0;
+ return nullptr;
return d->data;
}
@@ -1672,7 +1672,7 @@ uchar *QImage::bits()
*/
const uchar *QImage::bits() const
{
- return d ? d->data : 0;
+ return d ? d->data : nullptr;
}
@@ -1688,7 +1688,7 @@ const uchar *QImage::bits() const
*/
const uchar *QImage::constBits() const
{
- return d ? d->data : 0;
+ return d ? d->data : nullptr;
}
/*!
@@ -1912,10 +1912,10 @@ void QImage::invertPixels(InvertMode mode)
// Inverting premultiplied pixels would produce invalid image data.
if (hasAlphaChannel() && qPixelLayouts[d->format].premultiplied) {
if (depth() > 32) {
- if (!d->convertInPlace(QImage::Format_RGBA64, 0))
+ if (!d->convertInPlace(QImage::Format_RGBA64, { }))
*this = convertToFormat(QImage::Format_RGBA64);
} else {
- if (!d->convertInPlace(QImage::Format_ARGB32, 0))
+ if (!d->convertInPlace(QImage::Format_ARGB32, { }))
*this = convertToFormat(QImage::Format_ARGB32);
}
}
@@ -1982,7 +1982,7 @@ void QImage::invertPixels(InvertMode mode)
}
if (originalFormat != d->format) {
- if (!d->convertInPlace(originalFormat, 0))
+ if (!d->convertInPlace(originalFormat, { }))
*this = convertToFormat(originalFormat);
}
}
@@ -3027,11 +3027,11 @@ QImage QImage::createHeuristicMask(bool clipTight) const
while(!done) {
done = true;
ypn = m.scanLine(0);
- ypc = 0;
+ ypc = nullptr;
for (y = 0; y < h; y++) {
ypp = ypc;
ypc = ypn;
- ypn = (y == h-1) ? 0 : m.scanLine(y+1);
+ ypn = (y == h-1) ? nullptr : m.scanLine(y+1);
const QRgb *p = (const QRgb *)scanLine(y);
for (x = 0; x < w; x++) {
// slowness here - it's possible to do six of these tests
@@ -3053,11 +3053,11 @@ QImage QImage::createHeuristicMask(bool clipTight) const
if (!clipTight) {
ypn = m.scanLine(0);
- ypc = 0;
+ ypc = nullptr;
for (y = 0; y < h; y++) {
ypp = ypc;
ypc = ypn;
- ypn = (y == h-1) ? 0 : m.scanLine(y+1);
+ ypn = (y == h-1) ? nullptr : m.scanLine(y+1);
const QRgb *p = (const QRgb *)scanLine(y);
for (x = 0; x < w; x++) {
if ((*p & 0x00ffffff) != background) {
@@ -4122,7 +4122,7 @@ void QImage::setText(const QString &key, const QString &value)
QPaintEngine *QImage::paintEngine() const
{
if (!d)
- return 0;
+ return nullptr;
if (!d->paintEngine) {
QPaintDevice *paintDevice = const_cast<QImage *>(this);
diff --git a/src/gui/image/qimage_conversions.cpp b/src/gui/image/qimage_conversions.cpp
index 97a5f89e68..27088698ec 100644
--- a/src/gui/image/qimage_conversions.cpp
+++ b/src/gui/image/qimage_conversions.cpp
@@ -198,7 +198,7 @@ void convert_generic(QImageData *dest, const QImageData *src, Qt::ImageConversio
store = destLayout->storeFromRGB32;
}
QDitherInfo dither;
- QDitherInfo *ditherPtr = 0;
+ QDitherInfo *ditherPtr = nullptr;
if ((flags & Qt::PreferDither) && (flags & Qt::Dither_Mask) != Qt::ThresholdDither)
ditherPtr = &dither;
@@ -212,8 +212,8 @@ void convert_generic(QImageData *dest, const QImageData *src, Qt::ImageConversio
buffer = reinterpret_cast<uint *>(destData) + x;
else
l = qMin(l, BufferSize);
- const uint *ptr = fetch(buffer, srcData, x, l, 0, ditherPtr);
- store(destData, ptr, x, l, 0, ditherPtr);
+ const uint *ptr = fetch(buffer, srcData, x, l, nullptr, ditherPtr);
+ store(destData, ptr, x, l, nullptr, ditherPtr);
x += l;
}
srcData += src->bytes_per_line;
@@ -257,7 +257,8 @@ bool convert_generic_inplace(QImageData *data, QImage::Format dst_format, Qt::Im
// Cannot be used with indexed formats or between formats with different pixel depths.
Q_ASSERT(dst_format > QImage::Format_Indexed8);
Q_ASSERT(data->format > QImage::Format_Indexed8);
- if (data->depth != qt_depthForFormat(dst_format))
+ const int destDepth = qt_depthForFormat(dst_format);
+ if (data->depth < destDepth)
return false;
const QPixelLayout *srcLayout = &qPixelLayouts[data->format];
@@ -272,9 +273,16 @@ bool convert_generic_inplace(QImageData *data, QImage::Format dst_format, Qt::Im
uint buf[BufferSize];
uint *buffer = buf;
uchar *srcData = data->data;
+ uchar *destData = data->data;
+
+ QImageData::ImageSizeParameters params = { data->bytes_per_line, data->nbytes };
+ if (data->depth != destDepth) {
+ params = QImageData::calculateImageParameters(data->width, data->height, destDepth);
+ if (!params.isValid())
+ return false;
+ }
- Q_ASSERT(srcLayout->bpp == destLayout->bpp);
- Q_ASSERT(srcLayout->bpp != QPixelLayout::BPP64);
+ Q_ASSERT(destLayout->bpp != QPixelLayout::BPP64);
FetchAndConvertPixelsFunc fetch = srcLayout->fetchToARGB32PM;
ConvertAndStorePixelsFunc store = destLayout->storeFromARGB32PM;
if (!srcLayout->hasAlphaChannel && destLayout->storeFromRGB32) {
@@ -306,7 +314,7 @@ bool convert_generic_inplace(QImageData *data, QImage::Format dst_format, Qt::Im
store = destLayout->storeFromRGB32;
}
QDitherInfo dither;
- QDitherInfo *ditherPtr = 0;
+ QDitherInfo *ditherPtr = nullptr;
if ((flags & Qt::PreferDither) && (flags & Qt::Dither_Mask) != Qt::ThresholdDither)
ditherPtr = &dither;
@@ -316,15 +324,26 @@ bool convert_generic_inplace(QImageData *data, QImage::Format dst_format, Qt::Im
while (x < data->width) {
dither.x = x;
int l = data->width - x;
- if (destLayout->bpp == QPixelLayout::BPP32)
+ if (srcLayout->bpp == QPixelLayout::BPP32)
buffer = reinterpret_cast<uint *>(srcData) + x;
else
l = qMin(l, BufferSize);
const uint *ptr = fetch(buffer, srcData, x, l, nullptr, ditherPtr);
- store(srcData, ptr, x, l, nullptr, ditherPtr);
+ store(destData, ptr, x, l, nullptr, ditherPtr);
x += l;
}
srcData += data->bytes_per_line;
+ destData += params.bytesPerLine;
+ }
+ if (params.totalSize != data->nbytes) {
+ Q_ASSERT(params.totalSize < data->nbytes);
+ void *newData = realloc(data->data, params.totalSize);
+ if (newData) {
+ data->data = (uchar *)newData;
+ data->nbytes = params.totalSize;
+ }
+ data->bytes_per_line = params.bytesPerLine;
+ data->depth = destDepth;
}
data->format = dst_format;
return true;
@@ -832,240 +851,6 @@ static bool convert_A2RGB30_PM_to_ARGB_inplace(QImageData *data, Qt::ImageConver
return true;
}
-static bool convert_indexed8_to_ARGB_PM_inplace(QImageData *data, Qt::ImageConversionFlags)
-{
- Q_ASSERT(data->format == QImage::Format_Indexed8);
- Q_ASSERT(data->own_data);
-
- const int depth = 32;
- auto params = QImageData::calculateImageParameters(data->width, data->height, depth);
- if (params.bytesPerLine < 0)
- return false;
- uchar *const newData = (uchar *)realloc(data->data, params.totalSize);
- if (!newData)
- return false;
-
- data->data = newData;
-
- // start converting from the end because the end image is bigger than the source
- uchar *src_data = newData + data->nbytes; // end of src
- quint32 *dest_data = (quint32 *) (newData + params.totalSize); // end of dest > end of src
- const int width = data->width;
- const int src_pad = data->bytes_per_line - width;
- const int dest_pad = (params.bytesPerLine >> 2) - width;
- if (data->colortable.size() == 0) {
- data->colortable.resize(256);
- for (int i = 0; i < 256; ++i)
- data->colortable[i] = qRgb(i, i, i);
- } else {
- for (int i = 0; i < data->colortable.size(); ++i)
- data->colortable[i] = qPremultiply(data->colortable.at(i));
-
- // Fill the rest of the table in case src_data > colortable.size()
- const int oldSize = data->colortable.size();
- const QRgb lastColor = data->colortable.at(oldSize - 1);
- data->colortable.insert(oldSize, 256 - oldSize, lastColor);
- }
-
- for (int i = 0; i < data->height; ++i) {
- src_data -= src_pad;
- dest_data -= dest_pad;
- for (int pixI = 0; pixI < width; ++pixI) {
- --src_data;
- --dest_data;
- *dest_data = data->colortable.at(*src_data);
- }
- }
-
- data->colortable = QVector<QRgb>();
- data->format = QImage::Format_ARGB32_Premultiplied;
- data->bytes_per_line = params.bytesPerLine;
- data->depth = depth;
- data->nbytes = params.totalSize;
-
- return true;
-}
-
-static bool convert_indexed8_to_ARGB_inplace(QImageData *data, Qt::ImageConversionFlags)
-{
- Q_ASSERT(data->format == QImage::Format_Indexed8);
- Q_ASSERT(data->own_data);
-
- const int depth = 32;
- auto params = QImageData::calculateImageParameters(data->width, data->height, depth);
- if (params.bytesPerLine < 0)
- return false;
- uchar *const newData = (uchar *)realloc(data->data, params.totalSize);
- if (!newData)
- return false;
-
- data->data = newData;
-
- // start converting from the end because the end image is bigger than the source
- uchar *src_data = newData + data->nbytes;
- quint32 *dest_data = (quint32 *) (newData + params.totalSize);
- const int width = data->width;
- const int src_pad = data->bytes_per_line - width;
- const int dest_pad = (params.bytesPerLine >> 2) - width;
- if (data->colortable.size() == 0) {
- data->colortable.resize(256);
- for (int i = 0; i < 256; ++i)
- data->colortable[i] = qRgb(i, i, i);
- } else {
- // Fill the rest of the table in case src_data > colortable.size()
- const int oldSize = data->colortable.size();
- const QRgb lastColor = data->colortable.at(oldSize - 1);
- data->colortable.insert(oldSize, 256 - oldSize, lastColor);
- }
-
- for (int i = 0; i < data->height; ++i) {
- src_data -= src_pad;
- dest_data -= dest_pad;
- for (int pixI = 0; pixI < width; ++pixI) {
- --src_data;
- --dest_data;
- *dest_data = (quint32) data->colortable.at(*src_data);
- }
- }
-
- data->colortable = QVector<QRgb>();
- data->format = QImage::Format_ARGB32;
- data->bytes_per_line = params.bytesPerLine;
- data->depth = depth;
- data->nbytes = params.totalSize;
-
- return true;
-}
-
-static bool convert_indexed8_to_RGB_inplace(QImageData *data, Qt::ImageConversionFlags flags)
-{
- Q_ASSERT(data->format == QImage::Format_Indexed8);
- Q_ASSERT(data->own_data);
-
- if (data->has_alpha_clut) {
- for (int i = 0; i < data->colortable.size(); ++i)
- data->colortable[i] |= 0xff000000;
- }
-
- if (!convert_indexed8_to_ARGB_inplace(data, flags))
- return false;
-
- data->format = QImage::Format_RGB32;
- return true;
-}
-
-static bool convert_indexed8_to_RGB16_inplace(QImageData *data, Qt::ImageConversionFlags)
-{
- Q_ASSERT(data->format == QImage::Format_Indexed8);
- Q_ASSERT(data->own_data);
-
- const int depth = 16;
- auto params = QImageData::calculateImageParameters(data->width, data->height, depth);
- if (params.bytesPerLine < 0)
- return false;
- uchar *const newData = (uchar *)realloc(data->data, params.totalSize);
- if (!newData)
- return false;
-
- data->data = newData;
-
- // start converting from the end because the end image is bigger than the source
- uchar *src_data = newData + data->nbytes;
- quint16 *dest_data = (quint16 *) (newData + params.totalSize);
- const int width = data->width;
- const int src_pad = data->bytes_per_line - width;
- const int dest_pad = (params.bytesPerLine >> 1) - width;
-
- quint16 colorTableRGB16[256];
- const int tableSize = data->colortable.size();
- if (tableSize == 0) {
- for (int i = 0; i < 256; ++i)
- colorTableRGB16[i] = qConvertRgb32To16(qRgb(i, i, i));
- } else {
- // 1) convert the existing colors to RGB16
- for (int i = 0; i < tableSize; ++i)
- colorTableRGB16[i] = qConvertRgb32To16(data->colortable.at(i));
- data->colortable = QVector<QRgb>();
-
- // 2) fill the rest of the table in case src_data > colortable.size()
- const quint16 lastColor = colorTableRGB16[tableSize - 1];
- for (int i = tableSize; i < 256; ++i)
- colorTableRGB16[i] = lastColor;
- }
-
- for (int i = 0; i < data->height; ++i) {
- src_data -= src_pad;
- dest_data -= dest_pad;
- for (int pixI = 0; pixI < width; ++pixI) {
- --src_data;
- --dest_data;
- *dest_data = colorTableRGB16[*src_data];
- }
- }
-
- data->format = QImage::Format_RGB16;
- data->bytes_per_line = params.bytesPerLine;
- data->depth = depth;
- data->nbytes = params.totalSize;
-
- return true;
-}
-
-static bool convert_RGB_to_RGB16_inplace(QImageData *data, Qt::ImageConversionFlags)
-{
- Q_ASSERT(data->format == QImage::Format_RGB32);
- Q_ASSERT(data->own_data);
-
- const int depth = 16;
-
- // cannot overflow, since we're shrinking the buffer
- const qsizetype dst_bytes_per_line = ((data->width * depth + 31) >> 5) << 2;
- const qsizetype src_bytes_per_line = data->bytes_per_line;
- quint32 *src_data = (quint32 *) data->data;
- quint16 *dst_data = (quint16 *) data->data;
-
- for (int i = 0; i < data->height; ++i) {
- for (int j = 0; j < data->width; ++j)
- dst_data[j] = qConvertRgb32To16(src_data[j]);
- src_data = (quint32 *) (((char*)src_data) + src_bytes_per_line);
- dst_data = (quint16 *) (((char*)dst_data) + dst_bytes_per_line);
- }
- data->format = QImage::Format_RGB16;
- data->bytes_per_line = dst_bytes_per_line;
- data->depth = depth;
- data->nbytes = dst_bytes_per_line * data->height;
- uchar *const newData = (uchar *)realloc(data->data, data->nbytes);
- if (newData)
- data->data = newData;
-
- // can't fail, since we're shrinking
- return true;
-}
-
-static void convert_ARGB_PM_to_ARGB(QImageData *dest, const QImageData *src)
-{
- Q_ASSERT(src->format == QImage::Format_ARGB32_Premultiplied || src->format == QImage::Format_RGBA8888_Premultiplied);
- Q_ASSERT(dest->format == QImage::Format_ARGB32 || dest->format == QImage::Format_RGBA8888);
- Q_ASSERT(src->width == dest->width);
- Q_ASSERT(src->height == dest->height);
-
- const int src_pad = (src->bytes_per_line >> 2) - src->width;
- const int dest_pad = (dest->bytes_per_line >> 2) - dest->width;
- const QRgb *src_data = (QRgb *) src->data;
- QRgb *dest_data = (QRgb *) dest->data;
-
- for (int i = 0; i < src->height; ++i) {
- const QRgb *end = src_data + src->width;
- while (src_data < end) {
- *dest_data = qUnpremultiply(*src_data);
- ++src_data;
- ++dest_data;
- }
- src_data += src_pad;
- dest_data += dest_pad;
- }
-}
-
static void convert_RGBA_to_RGB(QImageData *dest, const QImageData *src, Qt::ImageConversionFlags)
{
Q_ASSERT(src->format == QImage::Format_RGBA8888 || src->format == QImage::Format_RGBX8888);
@@ -1732,7 +1517,7 @@ static void convert_X_to_Mono(QImageData *dst, const QImageData *src, Qt::ImageC
static void convert_ARGB_PM_to_Mono(QImageData *dst, const QImageData *src, Qt::ImageConversionFlags flags)
{
QScopedPointer<QImageData> tmp(QImageData::create(QSize(src->width, src->height), QImage::Format_ARGB32));
- convert_ARGB_PM_to_ARGB(tmp.data(), src);
+ convert_generic(tmp.data(), src, Qt::AutoColor);
dither_to_Mono(dst, tmp.data(), flags, false);
}
@@ -2012,7 +1797,7 @@ static void convert_RGB_to_Indexed8(QImageData *dst, const QImageData *src, Qt::
static void convert_ARGB_PM_to_Indexed8(QImageData *dst, const QImageData *src, Qt::ImageConversionFlags flags)
{
QScopedPointer<QImageData> tmp(QImageData::create(QSize(src->width, src->height), QImage::Format_ARGB32));
- convert_ARGB_PM_to_ARGB(tmp.data(), src);
+ convert_generic(tmp.data(), src, Qt::AutoColor);
convert_RGB_to_Indexed8(dst, tmp.data(), flags);
}
@@ -2991,10 +2776,10 @@ InPlace_Image_Converter qimage_inplace_converter_map[QImage::NImageFormats][QIma
0,
0,
0,
- convert_indexed8_to_RGB_inplace,
- convert_indexed8_to_ARGB_inplace,
- convert_indexed8_to_ARGB_PM_inplace,
- convert_indexed8_to_RGB16_inplace,
+ 0,
+ 0,
+ 0,
+ 0,
0,
0,
0,
@@ -3018,7 +2803,7 @@ InPlace_Image_Converter qimage_inplace_converter_map[QImage::NImageFormats][QIma
0,
mask_alpha_converter_inplace<QImage::Format_ARGB32>,
mask_alpha_converter_inplace<QImage::Format_ARGB32_Premultiplied>,
- convert_RGB_to_RGB16_inplace,
+ 0,
0,
0,
0,
diff --git a/src/gui/image/qimageiohandler.cpp b/src/gui/image/qimageiohandler.cpp
index a4f927a462..0c9083a16e 100644
--- a/src/gui/image/qimageiohandler.cpp
+++ b/src/gui/image/qimageiohandler.cpp
@@ -288,7 +288,7 @@ public:
QImageIOHandlerPrivate::QImageIOHandlerPrivate(QImageIOHandler *q)
{
- device = 0;
+ device = nullptr;
q_ptr = q;
}
diff --git a/src/gui/image/qimagereader.cpp b/src/gui/image/qimagereader.cpp
index dff24b449a..5e3b608d20 100644
--- a/src/gui/image/qimagereader.cpp
+++ b/src/gui/image/qimagereader.cpp
@@ -179,10 +179,10 @@ static QImageIOHandler *createReadHandlerHelper(QIODevice *device,
bool ignoresFormatAndExtension)
{
if (!autoDetectImageFormat && format.isEmpty())
- return 0;
+ return nullptr;
QByteArray form = format.toLower();
- QImageIOHandler *handler = 0;
+ QImageIOHandler *handler = nullptr;
QByteArray suffix;
#ifndef QT_NO_IMAGEFORMATPLUGIN
@@ -450,7 +450,7 @@ static QImageIOHandler *createReadHandlerHelper(QIODevice *device,
qDebug("QImageReader::createReadHandler: no handlers found. giving up.");
#endif
// no handler: give up.
- return 0;
+ return nullptr;
}
handler->setDevice(device);
@@ -500,9 +500,9 @@ public:
QImageReaderPrivate::QImageReaderPrivate(QImageReader *qq)
: autoDetectImageFormat(true), ignoresFormatAndExtension(false)
{
- device = 0;
+ device = nullptr;
deleteDevice = false;
- handler = 0;
+ handler = nullptr;
quality = -1;
imageReaderError = QImageReader::UnknownError;
autoTransform = UsePluginDefault;
@@ -571,7 +571,7 @@ bool QImageReaderPrivate::initHandler()
}
// assign a handler
- if (!handler && (handler = createReadHandlerHelper(device, format, autoDetectImageFormat, ignoresFormatAndExtension)) == 0) {
+ if (!handler && (handler = createReadHandlerHelper(device, format, autoDetectImageFormat, ignoresFormatAndExtension)) == nullptr) {
imageReaderError = QImageReader::UnsupportedFormatError;
errorString = QImageReader::tr("Unsupported image format");
return false;
diff --git a/src/gui/image/qimagereaderwriterhelpers.cpp b/src/gui/image/qimagereaderwriterhelpers.cpp
index a5b7fb6449..dd56d887a7 100644
--- a/src/gui/image/qimagereaderwriterhelpers.cpp
+++ b/src/gui/image/qimagereaderwriterhelpers.cpp
@@ -63,7 +63,7 @@ static void appendImagePluginFormats(QFactoryLoader *loader,
const PluginKeyMap keyMap = loader->keyMap();
const PluginKeyMapConstIterator cend = keyMap.constEnd();
int i = -1;
- QImageIOPlugin *plugin = 0;
+ QImageIOPlugin *plugin = nullptr;
result->reserve(result->size() + keyMap.size());
for (PluginKeyMapConstIterator it = keyMap.constBegin(); it != cend; ++it) {
if (it.key() != i) {
@@ -71,7 +71,7 @@ static void appendImagePluginFormats(QFactoryLoader *loader,
plugin = qobject_cast<QImageIOPlugin *>(loader->instance(i));
}
const QByteArray key = it.value().toLatin1();
- if (plugin && (plugin->capabilities(0, key) & cap) != 0)
+ if (plugin && (plugin->capabilities(nullptr, key) & cap) != 0)
result->append(key);
}
}
@@ -92,7 +92,7 @@ static void appendImagePluginMimeTypes(QFactoryLoader *loader,
const int keyCount = keys.size();
for (int k = 0; k < keyCount; ++k) {
const QByteArray key = keys.at(k).toString().toLatin1();
- if (plugin && (plugin->capabilities(0, key) & cap) != 0) {
+ if (plugin && (plugin->capabilities(nullptr, key) & cap) != 0) {
result->append(mimeTypes.at(k).toString().toLatin1());
if (resultKeys)
resultKeys->append(key);
diff --git a/src/gui/image/qimagewriter.cpp b/src/gui/image/qimagewriter.cpp
index ec66588ddf..9dcc955fe2 100644
--- a/src/gui/image/qimagewriter.cpp
+++ b/src/gui/image/qimagewriter.cpp
@@ -139,7 +139,7 @@ static QImageIOHandler *createWriteHandlerHelper(QIODevice *device,
{
QByteArray form = format.toLower();
QByteArray suffix;
- QImageIOHandler *handler = 0;
+ QImageIOHandler *handler = nullptr;
#ifndef QT_NO_IMAGEFORMATPLUGIN
typedef QMultiMap<int, QString> PluginKeyMap;
@@ -226,7 +226,7 @@ static QImageIOHandler *createWriteHandlerHelper(QIODevice *device,
#endif // QT_NO_IMAGEFORMATPLUGIN
if (!handler)
- return 0;
+ return nullptr;
handler->setDevice(device);
if (!testFormat.isEmpty())
@@ -270,9 +270,9 @@ public:
*/
QImageWriterPrivate::QImageWriterPrivate(QImageWriter *qq)
{
- device = 0;
+ device = nullptr;
deleteDevice = false;
- handler = 0;
+ handler = nullptr;
quality = -1;
compression = -1;
gamma = 0.0;
@@ -304,7 +304,7 @@ bool QImageWriterPrivate::canWriteHelper()
errorString = QImageWriter::tr("Device not writable");
return false;
}
- if (!handler && (handler = createWriteHandlerHelper(device, format)) == 0) {
+ if (!handler && (handler = createWriteHandlerHelper(device, format)) == nullptr) {
imageWriterError = QImageWriter::UnsupportedFormatError;
errorString = QImageWriter::tr("Unsupported image format");
return false;
@@ -403,7 +403,7 @@ void QImageWriter::setDevice(QIODevice *device)
d->device = device;
d->deleteDevice = false;
delete d->handler;
- d->handler = 0;
+ d->handler = nullptr;
}
/*!
@@ -823,7 +823,7 @@ QString QImageWriter::errorString() const
*/
bool QImageWriter::supportsOption(QImageIOHandler::ImageOption option) const
{
- if (!d->handler && (d->handler = createWriteHandlerHelper(d->device, d->format)) == 0) {
+ if (!d->handler && (d->handler = createWriteHandlerHelper(d->device, d->format)) == nullptr) {
d->imageWriterError = QImageWriter::UnsupportedFormatError;
d->errorString = QImageWriter::tr("Unsupported image format");
return false;
diff --git a/src/gui/image/qmovie.cpp b/src/gui/image/qmovie.cpp
index 25fce050a1..79019d0fdf 100644
--- a/src/gui/image/qmovie.cpp
+++ b/src/gui/image/qmovie.cpp
@@ -272,7 +272,7 @@ public:
/*! \internal
*/
QMoviePrivate::QMoviePrivate(QMovie *qq)
- : reader(0), speed(100), movieState(QMovie::NotRunning),
+ : reader(nullptr), speed(100), movieState(QMovie::NotRunning),
currentFrameNumber(-1), nextFrameNumber(0), greatestFrameNumber(-1),
nextDelay(0), playCounter(-1),
cacheMode(QMovie::CacheNone), haveReadAll(false), isFirstIteration(true)
diff --git a/src/gui/image/qpaintengine_pic.cpp b/src/gui/image/qpaintengine_pic.cpp
index 6a87a01a87..e89cac452a 100644
--- a/src/gui/image/qpaintengine_pic.cpp
+++ b/src/gui/image/qpaintengine_pic.cpp
@@ -73,14 +73,14 @@ QPicturePaintEngine::QPicturePaintEngine()
: QPaintEngine(*(new QPicturePaintEnginePrivate), AllFeatures)
{
Q_D(QPicturePaintEngine);
- d->pt = 0;
+ d->pt = nullptr;
}
QPicturePaintEngine::QPicturePaintEngine(QPaintEnginePrivate &dptr)
: QPaintEngine(dptr, AllFeatures)
{
Q_D(QPicturePaintEngine);
- d->pt = 0;
+ d->pt = nullptr;
}
QPicturePaintEngine::~QPicturePaintEngine()
@@ -484,7 +484,7 @@ void QPicturePaintEngine::drawTextItem(const QPointF &p , const QTextItem &ti)
#endif
const QTextItemInt &si = static_cast<const QTextItemInt &>(ti);
- if (si.chars == 0)
+ if (si.chars == nullptr)
QPaintEngine::drawTextItem(p, ti); // Draw as path
if (d->pic_d->formatMajor >= 9) {
diff --git a/src/gui/image/qpicture.cpp b/src/gui/image/qpicture.cpp
index 978a07b9f9..3a32cc7f15 100644
--- a/src/gui/image/qpicture.cpp
+++ b/src/gui/image/qpicture.cpp
@@ -458,7 +458,7 @@ public:
QFakeDevice() { dpi_x = qt_defaultDpiX(); dpi_y = qt_defaultDpiY(); }
void setDpiX(int dpi) { dpi_x = dpi; }
void setDpiY(int dpi) { dpi_y = dpi; }
- QPaintEngine *paintEngine() const override { return 0; }
+ QPaintEngine *paintEngine() const override { return nullptr; }
int metric(PaintDeviceMetric m) const override
{
switch(m) {
@@ -709,11 +709,11 @@ bool QPicture::exec(QPainter *painter, QDataStream &s, int nrecords)
QFontMetrics fm(fnt);
QPointF pt(p.x(), p.y() - fm.ascent());
- qt_format_text(fnt, QRectF(pt, size), flags, /*opt*/0,
- str, /*brect=*/0, /*tabstops=*/0, /*...*/0, /*tabarraylen=*/0, painter);
+ qt_format_text(fnt, QRectF(pt, size), flags, /*opt*/nullptr,
+ str, /*brect=*/nullptr, /*tabstops=*/0, /*...*/nullptr, /*tabarraylen=*/0, painter);
} else {
- qt_format_text(font, QRectF(p, QSizeF(1, 1)), Qt::TextSingleLine | Qt::TextDontClip, /*opt*/0,
- str, /*brect=*/0, /*tabstops=*/0, /*...*/0, /*tabarraylen=*/0, painter);
+ qt_format_text(font, QRectF(p, QSizeF(1, 1)), Qt::TextSingleLine | Qt::TextDontClip, /*opt*/nullptr,
+ str, /*brect=*/nullptr, /*tabstops=*/0, /*...*/nullptr, /*tabarraylen=*/0, painter);
}
break;
@@ -1369,11 +1369,11 @@ QPictureIO::QPictureIO(const QString &fileName, const char* format)
void QPictureIO::init()
{
d = new QPictureIOData();
- d->parameters = 0;
+ d->parameters = nullptr;
d->quality = -1; // default quality of the current format
d->gamma=0.0f;
d->iostat = 0;
- d->iodev = 0;
+ d->iodev = nullptr;
}
/*!
@@ -1467,7 +1467,7 @@ static QPictureHandler *get_picture_handler(const char *format)
return list->at(i);
}
}
- return 0; // no such handler
+ return nullptr; // no such handler
}
@@ -1887,7 +1887,7 @@ bool QPictureIO::read()
if (picture_format.isEmpty()) {
if (file.isOpen()) { // unknown format
file.close();
- d->iodev = 0;
+ d->iodev = nullptr;
}
return false;
}
@@ -1913,7 +1913,7 @@ bool QPictureIO::read()
if (file.isOpen()) { // picture was read using file
file.close();
- d->iodev = 0;
+ d->iodev = nullptr;
}
return d->iostat == 0; // picture successfully read?
}
@@ -1957,7 +1957,7 @@ bool QPictureIO::write()
(*h->write_picture)(this);
if (file.isOpen()) { // picture was written using file
file.close();
- d->iodev = 0;
+ d->iodev = nullptr;
}
return d->iostat == 0; // picture successfully written?
}
diff --git a/src/gui/image/qpixmap.cpp b/src/gui/image/qpixmap.cpp
index b6e41f16a5..3fce64cb20 100644
--- a/src/gui/image/qpixmap.cpp
+++ b/src/gui/image/qpixmap.cpp
@@ -94,7 +94,7 @@ void QPixmap::doInit(int w, int h, int type)
if ((w > 0 && h > 0) || type == QPlatformPixmap::BitmapType)
data = QPlatformPixmap::create(w, h, (QPlatformPixmap::PixelType) type);
else
- data = 0;
+ data = nullptr;
}
/*!
@@ -780,7 +780,7 @@ bool QPixmap::load(const QString &fileName, const char *format, Qt::ImageConvers
bool QPixmap::loadFromData(const uchar *buf, uint len, const char *format, Qt::ImageConversionFlags flags)
{
- if (len == 0 || buf == 0) {
+ if (len == 0 || buf == nullptr) {
data.reset();
return false;
}
@@ -1455,7 +1455,7 @@ int QPixmap::metric(PaintDeviceMetric metric) const
*/
QPaintEngine *QPixmap::paintEngine() const
{
- return data ? data->paintEngine() : 0;
+ return data ? data->paintEngine() : nullptr;
}
/*!
diff --git a/src/gui/image/qpixmap_blitter.cpp b/src/gui/image/qpixmap_blitter.cpp
index 649a25250c..aeed1e3b34 100644
--- a/src/gui/image/qpixmap_blitter.cpp
+++ b/src/gui/image/qpixmap_blitter.cpp
@@ -92,8 +92,8 @@ void QBlittablePlatformPixmap::setBlittable(QBlittable *blittable)
void QBlittablePlatformPixmap::resize(int width, int height)
{
- m_blittable.reset(0);
- m_engine.reset(0);
+ m_blittable.reset(nullptr);
+ m_engine.reset(nullptr);
d = QGuiApplication::primaryScreen()->depth();
w = width;
h = height;
@@ -145,8 +145,8 @@ void QBlittablePlatformPixmap::fill(const QColor &color)
// if we could just change the format, e.g. when going from
// RGB32 -> ARGB8888.
if (color.alpha() != 255 && !hasAlphaChannel()) {
- m_blittable.reset(0);
- m_engine.reset(0);
+ m_blittable.reset(nullptr);
+ m_engine.reset(nullptr);
m_alpha = true;
}
diff --git a/src/gui/image/qpixmapcache.cpp b/src/gui/image/qpixmapcache.cpp
index 483d6d79a2..9709df9e0c 100644
--- a/src/gui/image/qpixmapcache.cpp
+++ b/src/gui/image/qpixmapcache.cpp
@@ -126,7 +126,7 @@ static inline bool qt_pixmapcache_thread_test()
/*!
Constructs an empty Key object.
*/
-QPixmapCache::Key::Key() : d(0)
+QPixmapCache::Key::Key() : d(nullptr)
{
}
@@ -259,9 +259,9 @@ uint qHash(const QPixmapCache::Key &k)
}
QPMCache::QPMCache()
- : QObject(0),
+ : QObject(nullptr),
QCache<QPixmapCache::Key, QPixmapCacheEntry>(cache_limit_default),
- keyArray(0), theid(0), ps(0), keyArraySize(0), freeKey(0), t(false)
+ keyArray(nullptr), theid(0), ps(0), keyArraySize(0), freeKey(0), t(false)
{
}
QPMCache::~QPMCache()
@@ -325,7 +325,7 @@ QPixmap *QPMCache::object(const QString &key) const
QPixmapCache::Key cacheKey = cacheKeys.value(key);
if (!cacheKey.d || !cacheKey.d->isValid) {
const_cast<QPMCache *>(this)->cacheKeys.remove(key);
- return 0;
+ return nullptr;
}
QPixmap *ptr = QCache<QPixmapCache::Key, QPixmapCacheEntry>::object(cacheKey);
//We didn't find the pixmap in the cache, the key is not valid anymore
@@ -453,7 +453,7 @@ void QPMCache::releaseKey(const QPixmapCache::Key &key)
void QPMCache::clear()
{
free(keyArray);
- keyArray = 0;
+ keyArray = nullptr;
freeKey = 0;
keyArraySize = 0;
//Mark all keys as invalid
@@ -539,7 +539,7 @@ bool QPixmapCache::find(const QString &key, QPixmap *pixmap)
QPixmap *ptr = pm_cache()->object(key);
if (ptr && pixmap)
*pixmap = *ptr;
- return ptr != 0;
+ return ptr != nullptr;
}
/*!
@@ -561,7 +561,7 @@ bool QPixmapCache::find(const Key &key, QPixmap *pixmap)
QPixmap *ptr = pm_cache()->object(key);
if (ptr && pixmap)
*pixmap = *ptr;
- return ptr != 0;
+ return ptr != nullptr;
}
/*!
diff --git a/src/gui/image/qplatformpixmap.cpp b/src/gui/image/qplatformpixmap.cpp
index a2e01147c4..493f55514e 100644
--- a/src/gui/image/qplatformpixmap.cpp
+++ b/src/gui/image/qplatformpixmap.cpp
@@ -266,7 +266,7 @@ QImage QPlatformPixmap::toImage(const QRect &rect) const
QImage* QPlatformPixmap::buffer()
{
- return 0;
+ return nullptr;
}
diff --git a/src/gui/image/qpnghandler.cpp b/src/gui/image/qpnghandler.cpp
index 4ab45337b0..251f09fe52 100644
--- a/src/gui/image/qpnghandler.cpp
+++ b/src/gui/image/qpnghandler.cpp
@@ -109,7 +109,7 @@ public:
};
QPngHandlerPrivate(QPngHandler *qq)
- : gamma(0.0), fileGamma(0.0), quality(50), compression(50), colorSpaceState(Undefined), png_ptr(0), info_ptr(0), end_info(0), state(Ready), q(qq)
+ : gamma(0.0), fileGamma(0.0), quality(50), compression(50), colorSpaceState(Undefined), png_ptr(nullptr), info_ptr(nullptr), end_info(nullptr), state(Ready), q(qq)
{ }
float gamma;
@@ -134,18 +134,18 @@ public:
struct AllocatedMemoryPointers {
AllocatedMemoryPointers()
- : row_pointers(0), accRow(0), inRow(0), outRow(0)
+ : row_pointers(nullptr), accRow(nullptr), inRow(nullptr), outRow(nullptr)
{ }
void deallocate()
{
delete [] row_pointers;
- row_pointers = 0;
+ row_pointers = nullptr;
delete [] accRow;
- accRow = 0;
+ accRow = nullptr;
delete [] inRow;
- inRow = 0;
+ inRow = nullptr;
delete [] outRow;
- outRow = 0;
+ outRow = nullptr;
}
png_byte **row_pointers;
@@ -174,7 +174,7 @@ public:
void setGamma(float);
bool writeImage(const QImage& img, int x, int y);
- bool writeImage(const QImage& img, volatile int compression_in, const QString &description, int x, int y);
+ bool writeImage(const QImage& img, int compression_in, const QString &description, int x, int y);
bool writeImage(const QImage& img)
{ return writeImage(img, 0, 0); }
bool writeImage(const QImage& img, int compression, const QString &description)
@@ -245,13 +245,13 @@ void setup_qt(QImage& image, png_structp png_ptr, png_infop info_ptr, QSize scal
png_uint_32 height = 0;
int bit_depth = 0;
int color_type = 0;
- png_bytep trans_alpha = 0;
- png_color_16p trans_color_p = 0;
+ png_bytep trans_alpha = nullptr;
+ png_color_16p trans_color_p = nullptr;
int num_trans;
- png_colorp palette = 0;
+ png_colorp palette = nullptr;
int num_palette;
int interlace_method = PNG_INTERLACE_LAST;
- png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type, &interlace_method, 0, 0);
+ png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type, &interlace_method, nullptr, nullptr);
png_set_interlace_handling(png_ptr);
if (color_type == PNG_COLOR_TYPE_GRAY) {
@@ -343,7 +343,7 @@ void setup_qt(QImage& image, png_structp png_ptr, png_infop info_ptr, QSize scal
if (bit_depth != 1)
png_set_packing(png_ptr);
png_read_update_info(png_ptr, info_ptr);
- png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type, 0, 0, 0);
+ png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type, nullptr, nullptr, nullptr);
QImage::Format format = bit_depth == 1 ? QImage::Format_Mono : QImage::Format_Indexed8;
if (image.size() != QSize(width, height) || image.format() != format) {
image = QImage(width, height, format);
@@ -452,7 +452,7 @@ static void read_image_scaled(QImage *outImage, png_structp png_ptr, png_infop i
int bit_depth = 0;
int color_type = 0;
int unit_type = PNG_OFFSET_PIXEL;
- png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type, 0, 0, 0);
+ png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type, nullptr, nullptr, nullptr);
png_get_oFFs(png_ptr, info_ptr, &offset_x, &offset_y, &unit_type);
uchar *data = outImage->bits();
int bpl = outImage->bytesPerLine();
@@ -478,7 +478,7 @@ static void read_image_scaled(QImage *outImage, png_structp png_ptr, png_infop i
amp.accRow[i] = rval*amp.inRow[i];
// Accumulate the next input rows
for (rval = iysz-rval; rval > 0; rval-=oysz) {
- png_read_row(png_ptr, amp.inRow, NULL);
+ png_read_row(png_ptr, amp.inRow, nullptr);
quint32 fact = qMin(oysz, quint32(rval));
for (quint32 i=0; i < ibw; i++)
amp.accRow[i] += fact*amp.inRow[i];
@@ -558,11 +558,11 @@ void QPngHandlerPrivate::readPngTexts(png_info *info)
bool QPngHandlerPrivate::readPngHeader()
{
state = Error;
- png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING,0,0,0);
+ png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING,nullptr,nullptr,nullptr);
if (!png_ptr)
return false;
- png_set_error_fn(png_ptr, 0, 0, qt_png_warning);
+ png_set_error_fn(png_ptr, nullptr, nullptr, qt_png_warning);
#if defined(PNG_SET_OPTION_SUPPORTED) && defined(PNG_MAXIMUM_INFLATE_WINDOW)
// Trade off a little bit of memory for better compatibility with existing images
@@ -572,21 +572,21 @@ bool QPngHandlerPrivate::readPngHeader()
info_ptr = png_create_info_struct(png_ptr);
if (!info_ptr) {
- png_destroy_read_struct(&png_ptr, 0, 0);
- png_ptr = 0;
+ png_destroy_read_struct(&png_ptr, nullptr, nullptr);
+ png_ptr = nullptr;
return false;
}
end_info = png_create_info_struct(png_ptr);
if (!end_info) {
- png_destroy_read_struct(&png_ptr, &info_ptr, 0);
- png_ptr = 0;
+ png_destroy_read_struct(&png_ptr, &info_ptr, nullptr);
+ png_ptr = nullptr;
return false;
}
if (setjmp(png_jmpbuf(png_ptr))) {
png_destroy_read_struct(&png_ptr, &info_ptr, &end_info);
- png_ptr = 0;
+ png_ptr = nullptr;
return false;
}
@@ -670,7 +670,7 @@ bool QPngHandlerPrivate::readPngImage(QImage *outImage)
if (setjmp(png_jmpbuf(png_ptr))) {
png_destroy_read_struct(&png_ptr, &info_ptr, &end_info);
- png_ptr = 0;
+ png_ptr = nullptr;
amp.deallocate();
state = Error;
return false;
@@ -689,7 +689,7 @@ bool QPngHandlerPrivate::readPngImage(QImage *outImage)
if (outImage->isNull()) {
png_destroy_read_struct(&png_ptr, &info_ptr, &end_info);
- png_ptr = 0;
+ png_ptr = nullptr;
amp.deallocate();
state = Error;
return false;
@@ -706,7 +706,7 @@ bool QPngHandlerPrivate::readPngImage(QImage *outImage)
int bit_depth = 0;
int color_type = 0;
int unit_type = PNG_OFFSET_PIXEL;
- png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type, 0, 0, 0);
+ png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type, nullptr, nullptr, nullptr);
png_get_oFFs(png_ptr, info_ptr, &offset_x, &offset_y, &unit_type);
uchar *data = outImage->bits();
int bpl = outImage->bytesPerLine();
@@ -747,7 +747,7 @@ bool QPngHandlerPrivate::readPngImage(QImage *outImage)
outImage->setText(readTexts.at(i), readTexts.at(i+1));
png_destroy_read_struct(&png_ptr, &info_ptr, &end_info);
- png_ptr = 0;
+ png_ptr = nullptr;
amp.deallocate();
state = Ready;
@@ -767,7 +767,7 @@ QImage::Format QPngHandlerPrivate::readImageFormat()
int bit_depth = 0, color_type = 0;
png_colorp palette;
int num_palette;
- png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type, 0, 0, 0);
+ png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type, nullptr, nullptr, nullptr);
if (color_type == PNG_COLOR_TYPE_GRAY) {
// Black & White or grayscale
if (bit_depth == 1 && png_get_channels(png_ptr, info_ptr) == 1) {
@@ -900,7 +900,7 @@ bool QPNGImageWriter::writeImage(const QImage& image, int off_x, int off_y)
return writeImage(image, -1, QString(), off_x, off_y);
}
-bool QPNGImageWriter::writeImage(const QImage& image, volatile int compression_in, const QString &description,
+bool QPNGImageWriter::writeImage(const QImage& image, int compression_in, const QString &description,
int off_x_in, int off_y_in)
{
QPoint offset = image.offset();
@@ -910,16 +910,16 @@ bool QPNGImageWriter::writeImage(const QImage& image, volatile int compression_i
png_structp png_ptr;
png_infop info_ptr;
- png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING,0,0,0);
+ png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING,nullptr,nullptr,nullptr);
if (!png_ptr) {
return false;
}
- png_set_error_fn(png_ptr, 0, 0, qt_png_warning);
+ png_set_error_fn(png_ptr, nullptr, nullptr, qt_png_warning);
info_ptr = png_create_info_struct(png_ptr);
if (!info_ptr) {
- png_destroy_write_struct(&png_ptr, 0);
+ png_destroy_write_struct(&png_ptr, nullptr);
return false;
}
@@ -1022,7 +1022,7 @@ bool QPNGImageWriter::writeImage(const QImage& image, volatile int compression_i
png_set_PLTE(png_ptr, info_ptr, palette, num_palette);
if (num_trans) {
- png_set_tRNS(png_ptr, info_ptr, trans, num_trans, 0);
+ png_set_tRNS(png_ptr, info_ptr, trans, num_trans, nullptr);
}
}
diff --git a/src/gui/image/qxpmhandler.cpp b/src/gui/image/qxpmhandler.cpp
index cf105b250a..f9424b62bb 100644
--- a/src/gui/image/qxpmhandler.cpp
+++ b/src/gui/image/qxpmhandler.cpp
@@ -1175,7 +1175,7 @@ QXpmHandler::QXpmHandler()
bool QXpmHandler::readHeader()
{
state = Error;
- if (!read_xpm_header(device(), 0, index, buffer, &cpp, &ncols, &width, &height))
+ if (!read_xpm_header(device(), nullptr, index, buffer, &cpp, &ncols, &width, &height))
return false;
state = ReadHeader;
return true;
@@ -1191,7 +1191,7 @@ bool QXpmHandler::readImage(QImage *image)
return false;
}
- if (!read_xpm_body(device(), 0, index, buffer, cpp, ncols, width, height, *image)) {
+ if (!read_xpm_body(device(), nullptr, index, buffer, cpp, ncols, width, height, *image)) {
state = Error;
return false;
}
diff --git a/src/gui/itemmodels/qstandarditemmodel.cpp b/src/gui/itemmodels/qstandarditemmodel.cpp
index 2390c62b9f..2998808b54 100644
--- a/src/gui/itemmodels/qstandarditemmodel.cpp
+++ b/src/gui/itemmodels/qstandarditemmodel.cpp
@@ -130,7 +130,7 @@ void QStandardItemPrivate::setChild(int row, int column, QStandardItem *item,
}
if (item) {
- if (item->d_func()->parent == 0) {
+ if (item->d_func()->parent == nullptr) {
item->d_func()->setParentAndModel(q, model);
} else {
qWarning("QStandardItem::setChild: Ignoring duplicate insertion of item %p",
@@ -139,7 +139,7 @@ void QStandardItemPrivate::setChild(int row, int column, QStandardItem *item,
}
}
if (oldItem)
- oldItem->d_func()->setModel(0);
+ oldItem->d_func()->setModel(nullptr);
delete oldItem;
children.replace(index, item);
if (item)
@@ -412,7 +412,7 @@ void QStandardItemPrivate::setModel(QStandardItemModel *mod)
*/
QStandardItemModelPrivate::QStandardItemModelPrivate()
: root(new QStandardItem),
- itemPrototype(0),
+ itemPrototype(nullptr),
sortRole(Qt::DisplayRole)
{
root->setFlags(Qt::ItemIsDropEnabled);
@@ -510,12 +510,12 @@ bool QStandardItemPrivate::insertRows(int row, int count, const QList<QStandardI
for (int i = 0; i < limit; ++i) {
QStandardItem *item = items.at(i);
if (item) {
- if (item->d_func()->parent == 0) {
+ if (item->d_func()->parent == nullptr) {
item->d_func()->setParentAndModel(q, model);
} else {
qWarning("QStandardItem::insertRows: Ignoring duplicate insertion of item %p",
item);
- item = 0;
+ item = nullptr;
}
}
children.replace(index, item);
@@ -555,12 +555,12 @@ bool QStandardItemPrivate::insertColumns(int column, int count, const QList<QSta
for (int i = 0; i < limit; ++i) {
QStandardItem *item = items.at(i);
if (item) {
- if (item->d_func()->parent == 0) {
+ if (item->d_func()->parent == nullptr) {
item->d_func()->setParentAndModel(q, model);
} else {
qWarning("QStandardItem::insertColumns: Ignoring duplicate insertion of item %p",
item);
- item = 0;
+ item = nullptr;
}
}
int r = i / count;
@@ -583,7 +583,7 @@ void QStandardItemModelPrivate::itemChanged(QStandardItem *item, const QVector<i
{
Q_Q(QStandardItemModel);
Q_ASSERT(item);
- if (item->d_func()->parent == 0) {
+ if (item->d_func()->parent == nullptr) {
// Header item
int idx = columnHeaderItems.indexOf(item);
if (idx != -1) {
@@ -679,7 +679,7 @@ void QStandardItemModelPrivate::rowsRemoved(QStandardItem *parent,
for (int i = row; i < row + count; ++i) {
QStandardItem *oldItem = rowHeaderItems.at(i);
if (oldItem)
- oldItem->d_func()->setModel(0);
+ oldItem->d_func()->setModel(nullptr);
delete oldItem;
}
rowHeaderItems.remove(row, count);
@@ -698,7 +698,7 @@ void QStandardItemModelPrivate::columnsRemoved(QStandardItem *parent,
for (int i = column; i < column + count; ++i) {
QStandardItem *oldItem = columnHeaderItems.at(i);
if (oldItem)
- oldItem->d_func()->setModel(0);
+ oldItem->d_func()->setModel(nullptr);
delete oldItem;
}
columnHeaderItems.remove(column, count);
@@ -870,7 +870,7 @@ QStandardItem::~QStandardItem()
Q_D(QStandardItem);
for (QStandardItem *child : qAsConst(d->children)) {
if (child)
- child->d_func()->setModel(0);
+ child->d_func()->setModel(nullptr);
delete child;
}
d->children.clear();
@@ -890,7 +890,7 @@ QStandardItem *QStandardItem::parent() const
Q_D(const QStandardItem);
if (!d->model || (d->model->d_func()->root.data() != d->parent))
return d->parent;
- return 0;
+ return nullptr;
}
/*!
@@ -1794,7 +1794,7 @@ void QStandardItem::removeRows(int row, int count)
for (int j = i; j < n+i; ++j) {
QStandardItem *oldItem = d->children.at(j);
if (oldItem)
- oldItem->d_func()->setModel(0);
+ oldItem->d_func()->setModel(nullptr);
delete oldItem;
}
d->children.remove(qMax(i, 0), n);
@@ -1821,7 +1821,7 @@ void QStandardItem::removeColumns(int column, int count)
for (int j=i; j<i+count; ++j) {
QStandardItem *oldItem = d->children.at(j);
if (oldItem)
- oldItem->d_func()->setModel(0);
+ oldItem->d_func()->setModel(nullptr);
delete oldItem;
}
d->children.remove(i, count);
@@ -1874,7 +1874,7 @@ QStandardItem *QStandardItem::child(int row, int column) const
Q_D(const QStandardItem);
int index = d->childIndex(row, column);
if (index == -1)
- return 0;
+ return nullptr;
return d->children.at(index);
}
@@ -1891,12 +1891,12 @@ QStandardItem *QStandardItem::child(int row, int column) const
QStandardItem *QStandardItem::takeChild(int row, int column)
{
Q_D(QStandardItem);
- QStandardItem *item = 0;
+ QStandardItem *item = nullptr;
int index = d->childIndex(row, column);
if (index != -1) {
item = d->children.at(index);
if (item)
- item->d_func()->setParentAndModel(0, 0);
+ item->d_func()->setParentAndModel(nullptr, nullptr);
d->children.replace(index, 0);
}
return item;
@@ -1925,7 +1925,7 @@ QList<QStandardItem*> QStandardItem::takeRow(int row)
for (int column = 0; column < col_count; ++column) {
QStandardItem *ch = d->children.at(index + column);
if (ch)
- ch->d_func()->setParentAndModel(0, 0);
+ ch->d_func()->setParentAndModel(nullptr, nullptr);
items.append(ch);
}
d->children.remove(index, col_count);
@@ -1958,7 +1958,7 @@ QList<QStandardItem*> QStandardItem::takeColumn(int column)
int index = d->childIndex(row, column);
QStandardItem *ch = d->children.at(index);
if (ch)
- ch->d_func()->setParentAndModel(0, 0);
+ ch->d_func()->setParentAndModel(nullptr, nullptr);
d->children.remove(index);
items.prepend(ch);
}
@@ -2291,13 +2291,13 @@ QStandardItem *QStandardItemModel::itemFromIndex(const QModelIndex &index) const
{
Q_D(const QStandardItemModel);
if ((index.row() < 0) || (index.column() < 0) || (index.model() != this))
- return 0;
+ return nullptr;
QStandardItem *parent = static_cast<QStandardItem*>(index.internalPointer());
- if (parent == 0)
- return 0;
+ if (parent == nullptr)
+ return nullptr;
QStandardItem *item = parent->child(index.row(), index.column());
// lazy part
- if (item == 0) {
+ if (item == nullptr) {
item = d->createItem();
parent->d_func()->setChild(index.row(), index.column(), item);
}
@@ -2432,7 +2432,7 @@ void QStandardItemModel::setHorizontalHeaderItem(int column, QStandardItem *item
return;
if (item) {
- if (item->model() == 0) {
+ if (item->model() == nullptr) {
item->d_func()->setModel(this);
} else {
qWarning("QStandardItem::setHorizontalHeaderItem: Ignoring duplicate insertion of item %p",
@@ -2442,7 +2442,7 @@ void QStandardItemModel::setHorizontalHeaderItem(int column, QStandardItem *item
}
if (oldItem)
- oldItem->d_func()->setModel(0);
+ oldItem->d_func()->setModel(nullptr);
delete oldItem;
d->columnHeaderItems.replace(column, item);
@@ -2461,7 +2461,7 @@ QStandardItem *QStandardItemModel::horizontalHeaderItem(int column) const
{
Q_D(const QStandardItemModel);
if ((column < 0) || (column >= columnCount()))
- return 0;
+ return nullptr;
return d->columnHeaderItems.at(column);
}
@@ -2488,7 +2488,7 @@ void QStandardItemModel::setVerticalHeaderItem(int row, QStandardItem *item)
return;
if (item) {
- if (item->model() == 0) {
+ if (item->model() == nullptr) {
item->d_func()->setModel(this);
} else {
qWarning("QStandardItem::setVerticalHeaderItem: Ignoring duplicate insertion of item %p",
@@ -2498,7 +2498,7 @@ void QStandardItemModel::setVerticalHeaderItem(int row, QStandardItem *item)
}
if (oldItem)
- oldItem->d_func()->setModel(0);
+ oldItem->d_func()->setModel(nullptr);
delete oldItem;
d->rowHeaderItems.replace(row, item);
@@ -2517,7 +2517,7 @@ QStandardItem *QStandardItemModel::verticalHeaderItem(int row) const
{
Q_D(const QStandardItemModel);
if ((row < 0) || (row >= rowCount()))
- return 0;
+ return nullptr;
return d->rowHeaderItems.at(row);
}
@@ -2757,10 +2757,10 @@ QStandardItem *QStandardItemModel::takeHorizontalHeaderItem(int column)
{
Q_D(QStandardItemModel);
if ((column < 0) || (column >= columnCount()))
- return 0;
+ return nullptr;
QStandardItem *headerItem = d->columnHeaderItems.at(column);
if (headerItem) {
- headerItem->d_func()->setParentAndModel(0, 0);
+ headerItem->d_func()->setParentAndModel(nullptr, nullptr);
d->columnHeaderItems.replace(column, 0);
}
return headerItem;
@@ -2779,10 +2779,10 @@ QStandardItem *QStandardItemModel::takeVerticalHeaderItem(int row)
{
Q_D(QStandardItemModel);
if ((row < 0) || (row >= rowCount()))
- return 0;
+ return nullptr;
QStandardItem *headerItem = d->rowHeaderItems.at(row);
if (headerItem) {
- headerItem->d_func()->setParentAndModel(0, 0);
+ headerItem->d_func()->setParentAndModel(nullptr, nullptr);
d->rowHeaderItems.replace(row, 0);
}
return headerItem;
@@ -2876,7 +2876,7 @@ QVariant QStandardItemModel::headerData(int section, Qt::Orientation orientation
|| ((orientation == Qt::Vertical) && (section >= rowCount()))) {
return QVariant();
}
- QStandardItem *headerItem = 0;
+ QStandardItem *headerItem = nullptr;
if (orientation == Qt::Horizontal)
headerItem = d->columnHeaderItems.at(section);
else if (orientation == Qt::Vertical)
@@ -2902,7 +2902,7 @@ QModelIndex QStandardItemModel::index(int row, int column, const QModelIndex &pa
{
Q_D(const QStandardItemModel);
QStandardItem *parentItem = d->itemFromIndex(parent);
- if ((parentItem == 0)
+ if ((parentItem == nullptr)
|| (row < 0)
|| (column < 0)
|| (row >= parentItem->rowCount())
@@ -2919,7 +2919,7 @@ bool QStandardItemModel::insertColumns(int column, int count, const QModelIndex
{
Q_D(QStandardItemModel);
QStandardItem *item = parent.isValid() ? itemFromIndex(parent) : d->root.data();
- if (item == 0)
+ if (item == nullptr)
return false;
return item->d_func()->insertColumns(column, count, QList<QStandardItem*>());
}
@@ -2931,7 +2931,7 @@ bool QStandardItemModel::insertRows(int row, int count, const QModelIndex &paren
{
Q_D(QStandardItemModel);
QStandardItem *item = parent.isValid() ? itemFromIndex(parent) : d->root.data();
- if (item == 0)
+ if (item == nullptr)
return false;
return item->d_func()->insertRows(row, count, QList<QStandardItem*>());
}
@@ -2967,7 +2967,7 @@ bool QStandardItemModel::removeColumns(int column, int count, const QModelIndex
{
Q_D(QStandardItemModel);
QStandardItem *item = d->itemFromIndex(parent);
- if ((item == 0) || (count < 1) || (column < 0) || ((column + count) > item->columnCount()))
+ if ((item == nullptr) || (count < 1) || (column < 0) || ((column + count) > item->columnCount()))
return false;
item->removeColumns(column, count);
return true;
@@ -2980,7 +2980,7 @@ bool QStandardItemModel::removeRows(int row, int count, const QModelIndex &paren
{
Q_D(QStandardItemModel);
QStandardItem *item = d->itemFromIndex(parent);
- if ((item == 0) || (count < 1) || (row < 0) || ((row + count) > item->rowCount()))
+ if ((item == nullptr) || (count < 1) || (row < 0) || ((row + count) > item->rowCount()))
return false;
item->removeRows(row, count);
return true;
@@ -3004,7 +3004,7 @@ bool QStandardItemModel::setData(const QModelIndex &index, const QVariant &value
if (!index.isValid())
return false;
QStandardItem *item = itemFromIndex(index);
- if (item == 0)
+ if (item == nullptr)
return false;
item->setData(value, role);
return true;
@@ -3047,17 +3047,17 @@ bool QStandardItemModel::setHeaderData(int section, Qt::Orientation orientation,
|| ((orientation == Qt::Vertical) && (section >= rowCount()))) {
return false;
}
- QStandardItem *headerItem = 0;
+ QStandardItem *headerItem = nullptr;
if (orientation == Qt::Horizontal) {
headerItem = d->columnHeaderItems.at(section);
- if (headerItem == 0) {
+ if (headerItem == nullptr) {
headerItem = d->createItem();
headerItem->d_func()->setModel(this);
d->columnHeaderItems.replace(section, headerItem);
}
} else if (orientation == Qt::Vertical) {
headerItem = d->rowHeaderItems.at(section);
- if (headerItem == 0) {
+ if (headerItem == nullptr) {
headerItem = d->createItem();
headerItem->d_func()->setModel(this);
d->rowHeaderItems.replace(section, headerItem);
@@ -3076,7 +3076,7 @@ bool QStandardItemModel::setHeaderData(int section, Qt::Orientation orientation,
bool QStandardItemModel::setItemData(const QModelIndex &index, const QMap<int, QVariant> &roles)
{
QStandardItem *item = itemFromIndex(index);
- if (item == 0)
+ if (item == nullptr)
return false;
item->d_func()->setItemData(roles);
return true;
@@ -3106,7 +3106,7 @@ QMimeData *QStandardItemModel::mimeData(const QModelIndexList &indexes) const
{
QMimeData *data = QAbstractItemModel::mimeData(indexes);
if(!data)
- return 0;
+ return nullptr;
const QString format = qStandardItemModelDataListMimeType();
if (!mimeTypes().contains(format))
@@ -3124,7 +3124,7 @@ QMimeData *QStandardItemModel::mimeData(const QModelIndexList &indexes) const
stack.push(item);
} else {
qWarning("QStandardItemModel::mimeData: No item associated with invalid index");
- return 0;
+ return nullptr;
}
}
diff --git a/src/gui/kernel/qclipboard.cpp b/src/gui/kernel/qclipboard.cpp
index 267c079ad9..db22ef2486 100644
--- a/src/gui/kernel/qclipboard.cpp
+++ b/src/gui/kernel/qclipboard.cpp
@@ -461,7 +461,7 @@ void QClipboard::setPixmap(const QPixmap &pixmap, Mode mode)
const QMimeData* QClipboard::mimeData(Mode mode) const
{
QPlatformClipboard *clipboard = QGuiApplicationPrivate::platformIntegration()->clipboard();
- if (!clipboard->supportsMode(mode)) return 0;
+ if (!clipboard->supportsMode(mode)) return nullptr;
return clipboard->mimeData(mode);
}
@@ -488,7 +488,7 @@ void QClipboard::setMimeData(QMimeData* src, Mode mode)
{
QPlatformClipboard *clipboard = QGuiApplicationPrivate::platformIntegration()->clipboard();
if (!clipboard->supportsMode(mode)) {
- if (src != 0) {
+ if (src != nullptr) {
qDebug("Data set on unsupported clipboard mode. QMimeData object will be deleted.");
src->deleteLater();
}
@@ -512,7 +512,7 @@ void QClipboard::setMimeData(QMimeData* src, Mode mode)
*/
void QClipboard::clear(Mode mode)
{
- setMimeData(0, mode);
+ setMimeData(nullptr, mode);
}
/*!
diff --git a/src/gui/kernel/qcursor.cpp b/src/gui/kernel/qcursor.cpp
index 1ba8760a9d..4ae5412367 100644
--- a/src/gui/kernel/qcursor.cpp
+++ b/src/gui/kernel/qcursor.cpp
@@ -384,7 +384,7 @@ QDataStream &operator>>(QDataStream &s, QCursor &c)
*/
QCursor::QCursor(const QPixmap &pixmap, int hotX, int hotY)
- : d(0)
+ : d(nullptr)
{
QImage img = pixmap.toImage().convertToFormat(QImage::Format_Indexed8, Qt::ThresholdDither|Qt::AvoidDither);
QBitmap bm = QBitmap::fromImage(img, Qt::ThresholdDither|Qt::AvoidDither);
@@ -440,7 +440,7 @@ QCursor::QCursor(const QPixmap &pixmap, int hotX, int hotY)
*/
QCursor::QCursor(const QBitmap &bitmap, const QBitmap &mask, int hotX, int hotY)
- : d(0)
+ : d(nullptr)
{
d = QCursorData::setBitmap(bitmap, mask, hotX, hotY, 1.0);
}
@@ -452,7 +452,7 @@ QCursor::QCursor()
{
if (!QCursorData::initialized) {
if (QCoreApplication::startingUp()) {
- d = 0;
+ d = nullptr;
return;
}
QCursorData::initialize();
@@ -470,7 +470,7 @@ QCursor::QCursor()
\sa setShape()
*/
QCursor::QCursor(Qt::CursorShape shape)
- : d(0)
+ : d(nullptr)
{
if (!QCursorData::initialized)
QCursorData::initialize();
@@ -550,7 +550,7 @@ void QCursor::setShape(Qt::CursorShape shape)
{
if (!QCursorData::initialized)
QCursorData::initialize();
- QCursorData *c = uint(shape) <= Qt::LastCursor ? qt_cursorTable[shape] : 0;
+ QCursorData *c = uint(shape) <= Qt::LastCursor ? qt_cursorTable[shape] : nullptr;
if (!c)
c = qt_cursorTable[0];
c->ref.ref();
@@ -675,7 +675,7 @@ QCursorData *qt_cursorTable[Qt::LastCursor + 1];
bool QCursorData::initialized = false;
QCursorData::QCursorData(Qt::CursorShape s)
- : ref(1), cshape(s), bm(0), bmm(0), hx(0), hy(0)
+ : ref(1), cshape(s), bm(nullptr), bmm(nullptr), hx(0), hy(0)
{
}
@@ -695,7 +695,7 @@ void QCursorData::cleanup()
// In case someone has a static QCursor defined with this shape
if (!qt_cursorTable[shape]->ref.deref())
delete qt_cursorTable[shape];
- qt_cursorTable[shape] = 0;
+ qt_cursorTable[shape] = nullptr;
}
QCursorData::initialized = false;
}
diff --git a/src/gui/kernel/qdnd.cpp b/src/gui/kernel/qdnd.cpp
index dd541af3b8..fe766c900e 100644
--- a/src/gui/kernel/qdnd.cpp
+++ b/src/gui/kernel/qdnd.cpp
@@ -48,19 +48,19 @@
QT_BEGIN_NAMESPACE
// the universe's only drag manager
-QDragManager *QDragManager::m_instance = 0;
+QDragManager *QDragManager::m_instance = nullptr;
QDragManager::QDragManager()
- : QObject(qApp), m_currentDropTarget(0),
+ : QObject(qApp), m_currentDropTarget(nullptr),
m_platformDrag(QGuiApplicationPrivate::platformIntegration()->drag()),
- m_object(0)
+ m_object(nullptr)
{
Q_ASSERT(!m_instance);
}
QDragManager::~QDragManager()
{
- m_instance = 0;
+ m_instance = nullptr;
}
QDragManager *QDragManager::self()
@@ -74,7 +74,7 @@ QObject *QDragManager::source() const
{
if (m_object)
return m_object->source();
- return 0;
+ return nullptr;
}
void QDragManager::setCurrentTarget(QObject *target, bool dropped)
@@ -111,7 +111,7 @@ Qt::DropAction QDragManager::drag(QDrag *o)
m_object = o;
- m_object->d_func()->target = 0;
+ m_object->d_func()->target = nullptr;
QGuiApplicationPrivate::instance()->notifyDragStarted(m_object.data());
const Qt::DropAction result = m_platformDrag->drag(m_object);
diff --git a/src/gui/kernel/qdrag.cpp b/src/gui/kernel/qdrag.cpp
index 8e2f7be23e..3712eace15 100644
--- a/src/gui/kernel/qdrag.cpp
+++ b/src/gui/kernel/qdrag.cpp
@@ -112,8 +112,8 @@ QDrag::QDrag(QObject *dragSource)
{
Q_D(QDrag);
d->source = dragSource;
- d->target = 0;
- d->data = 0;
+ d->target = nullptr;
+ d->data = nullptr;
d->hotspot = QPoint(-10, -10);
d->executed_action = Qt::IgnoreAction;
d->supported_actions = Qt::IgnoreAction;
@@ -138,7 +138,7 @@ void QDrag::setMimeData(QMimeData *data)
Q_D(QDrag);
if (d->data == data)
return;
- if (d->data != 0)
+ if (d->data != nullptr)
delete d->data;
d->data = data;
}
diff --git a/src/gui/kernel/qevent.cpp b/src/gui/kernel/qevent.cpp
index f555f4dc05..c69cc8ce6f 100644
--- a/src/gui/kernel/qevent.cpp
+++ b/src/gui/kernel/qevent.cpp
@@ -2950,7 +2950,7 @@ QObject* QDropEvent::source() const
{
if (const QDragManager *manager = QDragManager::self())
return manager->source();
- return 0;
+ return nullptr;
}
@@ -4315,8 +4315,8 @@ QTouchEvent::QTouchEvent(QEvent::Type eventType,
Qt::TouchPointStates touchPointStates,
const QList<QTouchEvent::TouchPoint> &touchPoints)
: QInputEvent(eventType, modifiers),
- _window(0),
- _target(0),
+ _window(nullptr),
+ _target(nullptr),
_device(device),
_touchPointStates(touchPointStates),
_touchPoints(touchPoints)
@@ -5008,7 +5008,7 @@ void QTouchEvent::TouchPoint::setFlags(InfoFlags flags)
The \a startPos is the position of a touch or mouse event that started the scrolling.
*/
QScrollPrepareEvent::QScrollPrepareEvent(const QPointF &startPos)
- : QEvent(QEvent::ScrollPrepare), m_target(0), m_startPos(startPos)
+ : QEvent(QEvent::ScrollPrepare), m_target(nullptr), m_startPos(startPos)
{
Q_UNUSED(m_target);
}
diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp
index 54f3996b6e..6a0b01b6c3 100644
--- a/src/gui/kernel/qguiapplication.cpp
+++ b/src/gui/kernel/qguiapplication.cpp
@@ -141,7 +141,7 @@ Qt::KeyboardModifiers QGuiApplicationPrivate::modifier_buttons = Qt::NoModifier;
QPointF QGuiApplicationPrivate::lastCursorPosition(qInf(), qInf());
-QWindow *QGuiApplicationPrivate::currentMouseWindow = 0;
+QWindow *QGuiApplicationPrivate::currentMouseWindow = nullptr;
QString QGuiApplicationPrivate::styleOverride;
@@ -155,8 +155,8 @@ QPointer<QWindow> QGuiApplicationPrivate::currentDragWindow;
QVector<QGuiApplicationPrivate::TabletPointData> QGuiApplicationPrivate::tabletDevicePoints;
-QPlatformIntegration *QGuiApplicationPrivate::platform_integration = 0;
-QPlatformTheme *QGuiApplicationPrivate::platform_theme = 0;
+QPlatformIntegration *QGuiApplicationPrivate::platform_integration = nullptr;
+QPlatformTheme *QGuiApplicationPrivate::platform_theme = nullptr;
QList<QObject *> QGuiApplicationPrivate::generic_plugin_list;
@@ -172,13 +172,13 @@ enum ApplicationResourceFlags
static unsigned applicationResourceFlags = 0;
-QIcon *QGuiApplicationPrivate::app_icon = 0;
+QIcon *QGuiApplicationPrivate::app_icon = nullptr;
-QString *QGuiApplicationPrivate::platform_name = 0;
-QString *QGuiApplicationPrivate::displayName = 0;
-QString *QGuiApplicationPrivate::desktopFileName = 0;
+QString *QGuiApplicationPrivate::platform_name = nullptr;
+QString *QGuiApplicationPrivate::displayName = nullptr;
+QString *QGuiApplicationPrivate::desktopFileName = nullptr;
-QPalette *QGuiApplicationPrivate::app_pal = 0; // default application palette
+QPalette *QGuiApplicationPrivate::app_pal = nullptr; // default application palette
ulong QGuiApplicationPrivate::mousePressTime = 0;
Qt::MouseButton QGuiApplicationPrivate::mousePressButton = Qt::NoButton;
@@ -188,30 +188,30 @@ int QGuiApplicationPrivate::mousePressY = 0;
static int mouseDoubleClickDistance = -1;
static int touchDoubleTapDistance = -1;
-QWindow *QGuiApplicationPrivate::currentMousePressWindow = 0;
+QWindow *QGuiApplicationPrivate::currentMousePressWindow = nullptr;
static Qt::LayoutDirection layout_direction = Qt::LayoutDirectionAuto;
static bool force_reverse = false;
-QGuiApplicationPrivate *QGuiApplicationPrivate::self = 0;
-QTouchDevice *QGuiApplicationPrivate::m_fakeTouchDevice = 0;
+QGuiApplicationPrivate *QGuiApplicationPrivate::self = nullptr;
+QTouchDevice *QGuiApplicationPrivate::m_fakeTouchDevice = nullptr;
int QGuiApplicationPrivate::m_fakeMouseSourcePointId = 0;
#ifndef QT_NO_CLIPBOARD
-QClipboard *QGuiApplicationPrivate::qt_clipboard = 0;
+QClipboard *QGuiApplicationPrivate::qt_clipboard = nullptr;
#endif
QList<QScreen *> QGuiApplicationPrivate::screen_list;
QWindowList QGuiApplicationPrivate::window_list;
-QWindow *QGuiApplicationPrivate::focus_window = 0;
+QWindow *QGuiApplicationPrivate::focus_window = nullptr;
static QBasicMutex applicationFontMutex;
-QFont *QGuiApplicationPrivate::app_font = 0;
+QFont *QGuiApplicationPrivate::app_font = nullptr;
QStyleHints *QGuiApplicationPrivate::styleHints = nullptr;
bool QGuiApplicationPrivate::obey_desktop_settings = true;
-QInputDeviceManager *QGuiApplicationPrivate::m_inputDeviceManager = 0;
+QInputDeviceManager *QGuiApplicationPrivate::m_inputDeviceManager = nullptr;
qreal QGuiApplicationPrivate::m_maxDevicePixelRatio = 0.0;
@@ -243,7 +243,7 @@ static void initPalette()
static inline void clearPalette()
{
delete QGuiApplicationPrivate::app_pal;
- QGuiApplicationPrivate::app_pal = 0;
+ QGuiApplicationPrivate::app_pal = nullptr;
}
static void initFontUnlocked()
@@ -261,7 +261,7 @@ static void initFontUnlocked()
static inline void clearFontUnlocked()
{
delete QGuiApplicationPrivate::app_font;
- QGuiApplicationPrivate::app_font = 0;
+ QGuiApplicationPrivate::app_font = nullptr;
}
static void initThemeHints()
@@ -656,16 +656,16 @@ QGuiApplication::~QGuiApplication()
Q_D(QGuiApplication);
d->eventDispatcher->closingDown();
- d->eventDispatcher = 0;
+ d->eventDispatcher = nullptr;
#ifndef QT_NO_CLIPBOARD
delete QGuiApplicationPrivate::qt_clipboard;
- QGuiApplicationPrivate::qt_clipboard = 0;
+ QGuiApplicationPrivate::qt_clipboard = nullptr;
#endif
#ifndef QT_NO_SESSIONMANAGER
delete d->session_manager;
- d->session_manager = 0;
+ d->session_manager = nullptr;
#endif //QT_NO_SESSIONMANAGER
clearPalette();
@@ -676,15 +676,15 @@ QGuiApplication::~QGuiApplication()
#endif
delete QGuiApplicationPrivate::app_icon;
- QGuiApplicationPrivate::app_icon = 0;
+ QGuiApplicationPrivate::app_icon = nullptr;
delete QGuiApplicationPrivate::platform_name;
- QGuiApplicationPrivate::platform_name = 0;
+ QGuiApplicationPrivate::platform_name = nullptr;
delete QGuiApplicationPrivate::displayName;
- QGuiApplicationPrivate::displayName = 0;
+ QGuiApplicationPrivate::displayName = nullptr;
delete QGuiApplicationPrivate::m_inputDeviceManager;
- QGuiApplicationPrivate::m_inputDeviceManager = 0;
+ QGuiApplicationPrivate::m_inputDeviceManager = nullptr;
delete QGuiApplicationPrivate::desktopFileName;
- QGuiApplicationPrivate::desktopFileName = 0;
+ QGuiApplicationPrivate::desktopFileName = nullptr;
QGuiApplicationPrivate::mouse_buttons = Qt::NoButton;
QGuiApplicationPrivate::modifier_buttons = Qt::NoModifier;
QGuiApplicationPrivate::lastCursorPosition = {qInf(), qInf()};
@@ -704,7 +704,7 @@ QGuiApplication::~QGuiApplication()
QGuiApplicationPrivate::QGuiApplicationPrivate(int &argc, char **argv, int flags)
: QCoreApplicationPrivate(argc, argv, flags),
- inputMethod(0),
+ inputMethod(nullptr),
lastTouchType(QEvent::TouchEnd),
ownGlobalShareContext(false)
{
@@ -797,7 +797,7 @@ QWindow *QGuiApplication::modalWindow()
{
CHECK_QAPP_INSTANCE(nullptr)
if (QGuiApplicationPrivate::self->modalWindowList.isEmpty())
- return 0;
+ return nullptr;
return QGuiApplicationPrivate::self->modalWindowList.first();
}
@@ -844,7 +844,7 @@ void QGuiApplicationPrivate::showModalWindow(QWindow *modal)
self->modalWindowList.removeFirst();
QEvent e(QEvent::Leave);
QGuiApplication::sendEvent(currentMouseWindow, &e);
- currentMouseWindow = 0;
+ currentMouseWindow = nullptr;
self->modalWindowList.prepend(modal);
}
}
@@ -874,12 +874,12 @@ void QGuiApplicationPrivate::hideModalWindow(QWindow *window)
*/
bool QGuiApplicationPrivate::isWindowBlocked(QWindow *window, QWindow **blockingWindow) const
{
- QWindow *unused = 0;
+ QWindow *unused = nullptr;
if (!blockingWindow)
blockingWindow = &unused;
if (modalWindowList.isEmpty()) {
- *blockingWindow = 0;
+ *blockingWindow = nullptr;
return false;
}
@@ -889,7 +889,7 @@ bool QGuiApplicationPrivate::isWindowBlocked(QWindow *window, QWindow **blocking
// A window is not blocked by another modal window if the two are
// the same, or if the window is a child of the modal window.
if (window == modalWindow || modalWindow->isAncestorOf(window, QWindow::IncludeTransients)) {
- *blockingWindow = 0;
+ *blockingWindow = nullptr;
return false;
}
@@ -930,7 +930,7 @@ bool QGuiApplicationPrivate::isWindowBlocked(QWindow *window, QWindow **blocking
break;
}
}
- *blockingWindow = 0;
+ *blockingWindow = nullptr;
return false;
}
@@ -969,7 +969,7 @@ QObject *QGuiApplication::focusObject()
{
if (focusWindow())
return focusWindow()->focusObject();
- return 0;
+ return nullptr;
}
/*!
@@ -1022,7 +1022,7 @@ QWindowList QGuiApplication::topLevelWindows()
QScreen *QGuiApplication::primaryScreen()
{
if (QGuiApplicationPrivate::screen_list.isEmpty())
- return 0;
+ return nullptr;
return QGuiApplicationPrivate::screen_list.at(0);
}
@@ -1040,7 +1040,9 @@ QList<QScreen *> QGuiApplication::screens()
The \a point is in relation to the virtualGeometry() of each set of virtual
siblings. If the point maps to more than one set of virtual siblings the first
- match is returned.
+ match is returned. If you wish to search only the virtual desktop siblings
+ of a known screen (for example siblings of the screen of your application
+ window \c QWidget::windowHandle()->screen()), use QScreen::virtualSiblingAt().
\since 5.10
*/
@@ -1448,7 +1450,7 @@ void QGuiApplicationPrivate::createPlatformIntegration()
}
if (j < argc) {
- argv[j] = 0;
+ argv[j] = nullptr;
argc = j;
}
@@ -1468,7 +1470,7 @@ void QGuiApplicationPrivate::createEventDispatcher()
{
Q_ASSERT(!eventDispatcher);
- if (platform_integration == 0)
+ if (platform_integration == nullptr)
createPlatformIntegration();
// The platform integration should not mess with the event dispatcher
@@ -1479,7 +1481,7 @@ void QGuiApplicationPrivate::createEventDispatcher()
void QGuiApplicationPrivate::eventDispatcherReady()
{
- if (platform_integration == 0)
+ if (platform_integration == nullptr)
createPlatformIntegration();
platform_integration->initialize();
@@ -1576,7 +1578,7 @@ void QGuiApplicationPrivate::init()
}
if (j < argc) {
- argv[j] = 0;
+ argv[j] = nullptr;
argc = j;
}
@@ -1585,7 +1587,7 @@ void QGuiApplicationPrivate::init()
if (!envPlugins.isEmpty())
pluginList += envPlugins.split(',');
- if (platform_integration == 0)
+ if (platform_integration == nullptr)
createPlatformIntegration();
initPalette();
@@ -1691,22 +1693,16 @@ QGuiApplicationPrivate::~QGuiApplicationPrivate()
#ifndef QT_NO_OPENGL
if (ownGlobalShareContext) {
delete qt_gl_global_share_context();
- qt_gl_set_global_share_context(0);
+ qt_gl_set_global_share_context(nullptr);
}
#endif
-#ifdef Q_OS_WASM
- EM_ASM(
- // unmount persistent directory as IDBFS
- // see QTBUG-70002
- FS.unmount('/home/web_user');
- );
-#endif
+
platform_integration->destroy();
delete platform_theme;
- platform_theme = 0;
+ platform_theme = nullptr;
delete platform_integration;
- platform_integration = 0;
+ platform_integration = nullptr;
window_list.clear();
screen_list.clear();
@@ -1767,7 +1763,7 @@ Qt::KeyboardModifiers QGuiApplication::keyboardModifiers()
*/
Qt::KeyboardModifiers QGuiApplication::queryKeyboardModifiers()
{
- CHECK_QAPP_INSTANCE(Qt::KeyboardModifiers(0))
+ CHECK_QAPP_INSTANCE(Qt::KeyboardModifiers{})
QPlatformIntegration *pi = QGuiApplicationPrivate::platformIntegration();
return pi->queryKeyboardModifiers();
}
@@ -1797,7 +1793,7 @@ Qt::MouseButtons QGuiApplication::mouseButtons()
QPlatformNativeInterface *QGuiApplication::platformNativeInterface()
{
QPlatformIntegration *pi = QGuiApplicationPrivate::platformIntegration();
- return pi ? pi->nativeInterface() : 0;
+ return pi ? pi->nativeInterface() : nullptr;
}
/*!
@@ -2148,7 +2144,7 @@ void QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::Mo
window = currentMousePressWindow;
} else if (currentMousePressWindow) {
window = currentMousePressWindow;
- currentMousePressWindow = 0;
+ currentMousePressWindow = nullptr;
}
QPointF delta = globalPoint - globalPoint.toPoint();
localPoint = window->mapFromGlobal(globalPoint.toPoint()) + delta;
@@ -2361,7 +2357,7 @@ void QGuiApplicationPrivate::processLeaveEvent(QWindowSystemInterfacePrivate::Le
return;
}
- currentMouseWindow = 0;
+ currentMouseWindow = nullptr;
QEvent event(QEvent::Leave);
QCoreApplication::sendSpontaneousEvent(e->leave.data(), &event);
@@ -2380,7 +2376,7 @@ void QGuiApplicationPrivate::processActivatedEvent(QWindowSystemInterfacePrivate
if (platformWindow->isAlertState())
platformWindow->setAlertState(false);
- QObject *previousFocusObject = previous ? previous->focusObject() : 0;
+ QObject *previousFocusObject = previous ? previous->focusObject() : nullptr;
if (previous) {
QFocusEvent focusAboutToChange(QEvent::FocusAboutToChange);
@@ -2449,7 +2445,7 @@ void QGuiApplicationPrivate::processWindowScreenChangedEvent(QWindowSystemInterf
if (QScreen *screen = wse->screen.data())
topLevelWindow->d_func()->setTopLevelScreen(screen, false /* recreate */);
else // Fall back to default behavior, and try to find some appropriate screen
- topLevelWindow->setScreen(0);
+ topLevelWindow->setScreen(nullptr);
}
// we may have changed scaling, so trigger resize event if needed
if (window->handle()) {
@@ -2875,7 +2871,7 @@ void QGuiApplicationPrivate::processTouchEvent(QWindowSystemInterfacePrivate::To
break;
}
- Q_ASSERT(w.data() != 0);
+ Q_ASSERT(w.data() != nullptr);
// make the *scene* functions return the same as the *screen* functions
// Note: touchPoint is a reference to the one from activeTouchPoints,
@@ -3251,12 +3247,12 @@ QPlatformDropQtResponse QGuiApplicationPrivate::processDrop(QWindow *w, const QM
*/
QClipboard * QGuiApplication::clipboard()
{
- if (QGuiApplicationPrivate::qt_clipboard == 0) {
+ if (QGuiApplicationPrivate::qt_clipboard == nullptr) {
if (!qApp) {
qWarning("QGuiApplication: Must construct a QGuiApplication before accessing a QClipboard");
- return 0;
+ return nullptr;
}
- QGuiApplicationPrivate::qt_clipboard = new QClipboard(0);
+ QGuiApplicationPrivate::qt_clipboard = new QClipboard(nullptr);
}
return QGuiApplicationPrivate::qt_clipboard;
}
@@ -3877,7 +3873,7 @@ Qt::LayoutDirection QGuiApplication::layoutDirection()
QCursor *QGuiApplication::overrideCursor()
{
CHECK_QAPP_INSTANCE(nullptr)
- return qGuiApp->d_func()->cursor_list.isEmpty() ? 0 : &qGuiApp->d_func()->cursor_list.first();
+ return qGuiApp->d_func()->cursor_list.isEmpty() ? nullptr : &qGuiApp->d_func()->cursor_list.first();
}
/*!
@@ -3911,7 +3907,7 @@ static inline void unsetCursor(QWindow *w)
{
if (const QScreen *screen = w->screen())
if (QPlatformCursor *cursor = screen->handle()->cursor())
- cursor->changeCursor(0, w);
+ cursor->changeCursor(nullptr, w);
}
static inline void applyCursor(const QList<QWindow *> &l, const QCursor &c)
diff --git a/src/gui/kernel/qguiapplication_p.h b/src/gui/kernel/qguiapplication_p.h
index 26f65b2f16..ee493faa5d 100644
--- a/src/gui/kernel/qguiapplication_p.h
+++ b/src/gui/kernel/qguiapplication_p.h
@@ -116,7 +116,7 @@ public:
static QAbstractEventDispatcher *qt_qpa_core_dispatcher()
{
if (QCoreApplication::instance())
- return QCoreApplication::instance()->d_func()->threadData->eventDispatcher.loadRelaxed();
+ return QCoreApplication::instance()->d_func()->threadData.loadRelaxed()->eventDispatcher.loadRelaxed();
else
return nullptr;
}
diff --git a/src/gui/kernel/qguivariant.cpp b/src/gui/kernel/qguivariant.cpp
index edca8d9423..4ed9d032f6 100644
--- a/src/gui/kernel/qguivariant.cpp
+++ b/src/gui/kernel/qguivariant.cpp
@@ -103,13 +103,13 @@ static void construct(QVariant::Private *x, const void *copy)
{
const int type = x->type;
QVariantConstructor<GuiTypesFilter> constructor(x, copy);
- QMetaTypeSwitcher::switcher<void>(constructor, type, 0);
+ QMetaTypeSwitcher::switcher<void>(constructor, type, nullptr);
}
static void clear(QVariant::Private *d)
{
QVariantDestructor<GuiTypesFilter> destructor(d);
- QMetaTypeSwitcher::switcher<void>(destructor, d->type, 0);
+ QMetaTypeSwitcher::switcher<void>(destructor, d->type, nullptr);
}
// This class is a hack that customizes access to QPolygon and QPolygonF
@@ -129,7 +129,7 @@ public:
static bool isNull(const QVariant::Private *d)
{
QGuiVariantIsNull<GuiTypesFilter> isNull(d);
- return QMetaTypeSwitcher::switcher<bool>(isNull, d->type, 0);
+ return QMetaTypeSwitcher::switcher<bool>(isNull, d->type, nullptr);
}
// This class is a hack that customizes access to QPixmap, QBitmap, QCursor and QIcon
@@ -171,7 +171,7 @@ public:
static bool compare(const QVariant::Private *a, const QVariant::Private *b)
{
QGuiVariantComparator<GuiTypesFilter> comparator(a, b);
- return QMetaTypeSwitcher::switcher<bool>(comparator, a->type, 0);
+ return QMetaTypeSwitcher::switcher<bool>(comparator, a->type, nullptr);
}
static bool convert(const QVariant::Private *d, int t,
@@ -311,7 +311,7 @@ static void streamDebug(QDebug dbg, const QVariant &v)
{
QVariant::Private *d = const_cast<QVariant::Private *>(&v.data_ptr());
QVariantDebugStream<GuiTypesFilter> stream(dbg, d);
- QMetaTypeSwitcher::switcher<void>(stream, d->type, 0);
+ QMetaTypeSwitcher::switcher<void>(stream, d->type, nullptr);
}
#endif
@@ -320,12 +320,12 @@ const QVariant::Handler qt_gui_variant_handler = {
clear,
isNull,
#ifndef QT_NO_DATASTREAM
- 0,
- 0,
+ nullptr,
+ nullptr,
#endif
compare,
convert,
- 0,
+ nullptr,
#if !defined(QT_NO_DEBUG_STREAM)
streamDebug
#else
diff --git a/src/gui/kernel/qhighdpiscaling_p.h b/src/gui/kernel/qhighdpiscaling_p.h
index f58944a7d2..3c85481495 100644
--- a/src/gui/kernel/qhighdpiscaling_p.h
+++ b/src/gui/kernel/qhighdpiscaling_p.h
@@ -313,7 +313,7 @@ public:
static inline QPoint mapPositionToNative(const QPoint &pos, const QPlatformScreen *) { return pos; }
static inline QPoint mapPositionToGlobal(const QPoint &pos, const QPoint &windowGlobalPosition, const QWindow *window) { return pos; }
static inline QPoint mapPositionFromGlobal(const QPoint &pos, const QPoint &windowGlobalPosition, const QWindow *window) { return pos; }
- static inline QDpi logicalDpi() { return QDpi(-1,-1); }
+ static inline QDpi logicalDpi(const QScreen *screen) { return QDpi(-1,-1); }
};
namespace QHighDpi {
diff --git a/src/gui/kernel/qkeymapper.cpp b/src/gui/kernel/qkeymapper.cpp
index 4893b1d57b..274574f561 100644
--- a/src/gui/kernel/qkeymapper.cpp
+++ b/src/gui/kernel/qkeymapper.cpp
@@ -60,7 +60,7 @@ QT_BEGIN_NAMESPACE
Constructs a new key mapper.
*/
QKeyMapper::QKeyMapper()
- : QObject(*new QKeyMapperPrivate, 0)
+ : QObject(*new QKeyMapperPrivate, nullptr)
{
}
diff --git a/src/gui/kernel/qoffscreensurface.cpp b/src/gui/kernel/qoffscreensurface.cpp
index 0cc11ca3bb..c74fe0b3a1 100644
--- a/src/gui/kernel/qoffscreensurface.cpp
+++ b/src/gui/kernel/qoffscreensurface.cpp
@@ -99,10 +99,10 @@ public:
QOffscreenSurfacePrivate()
: QObjectPrivate()
, surfaceType(QSurface::OpenGLSurface)
- , platformOffscreenSurface(0)
- , offscreenWindow(0)
+ , platformOffscreenSurface(nullptr)
+ , offscreenWindow(nullptr)
, requestedFormat(QSurfaceFormat::defaultFormat())
- , screen(0)
+ , screen(nullptr)
, size(1, 1)
, nativeHandle(nullptr)
{
@@ -235,11 +235,11 @@ void QOffscreenSurface::destroy()
QGuiApplication::sendEvent(this, &e);
delete d->platformOffscreenSurface;
- d->platformOffscreenSurface = 0;
+ d->platformOffscreenSurface = nullptr;
if (d->offscreenWindow) {
d->offscreenWindow->destroy();
delete d->offscreenWindow;
- d->offscreenWindow = 0;
+ d->offscreenWindow = nullptr;
}
d->nativeHandle = nullptr;
@@ -341,7 +341,7 @@ void QOffscreenSurface::setScreen(QScreen *newScreen)
if (!newScreen)
newScreen = QCoreApplication::instance() ? QGuiApplication::primaryScreen() : nullptr;
if (newScreen != d->screen) {
- const bool wasCreated = d->platformOffscreenSurface != 0 || d->offscreenWindow != 0;
+ const bool wasCreated = d->platformOffscreenSurface != nullptr || d->offscreenWindow != nullptr;
if (wasCreated)
destroy();
if (d->screen)
@@ -385,7 +385,7 @@ void QOffscreenSurface::screenDestroyed(QObject *object)
{
Q_D(QOffscreenSurface);
if (object == static_cast<QObject *>(d->screen))
- setScreen(0);
+ setScreen(nullptr);
}
/*!
diff --git a/src/gui/kernel/qopenglcontext.cpp b/src/gui/kernel/qopenglcontext.cpp
index 638eb1d12f..124b39f2a9 100644
--- a/src/gui/kernel/qopenglcontext.cpp
+++ b/src/gui/kernel/qopenglcontext.cpp
@@ -223,7 +223,7 @@ class QGuiGLThreadContext
{
public:
QGuiGLThreadContext()
- : context(0)
+ : context(nullptr)
{
}
~QGuiGLThreadContext() {
@@ -234,7 +234,7 @@ public:
};
Q_GLOBAL_STATIC(QThreadStorage<QGuiGLThreadContext *>, qwindow_context_storage);
-static QOpenGLContext *global_share_context = 0;
+static QOpenGLContext *global_share_context = nullptr;
#ifndef QT_NO_DEBUG
QHash<QOpenGLContext *, bool> QOpenGLContextPrivate::makeCurrentTracker;
@@ -347,7 +347,7 @@ QOpenGLContext *QOpenGLContextPrivate::setCurrentContext(QOpenGLContext *context
if (!threadContext) {
if (!QThread::currentThread()) {
qWarning("No QTLS available. currentContext won't work");
- return 0;
+ return nullptr;
}
threadContext = new QGuiGLThreadContext;
qwindow_context_storage()->setLocalData(threadContext);
@@ -372,10 +372,10 @@ int QOpenGLContextPrivate::maxTextureSize()
GLint size;
GLint next = 64;
- funcs->glTexImage2D(proxy, 0, GL_RGBA, next, next, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
+ funcs->glTexImage2D(proxy, 0, GL_RGBA, next, next, 0, GL_RGBA, GL_UNSIGNED_BYTE, nullptr);
- QOpenGLFunctions_1_0 *gl1funcs = 0;
- QOpenGLFunctions_3_2_Core *gl3funcs = 0;
+ QOpenGLFunctions_1_0 *gl1funcs = nullptr;
+ QOpenGLFunctions_3_2_Core *gl3funcs = nullptr;
if (q->format().profile() == QSurfaceFormat::CoreProfile)
gl3funcs = q->versionFunctions<QOpenGLFunctions_3_2_Core>();
@@ -398,7 +398,7 @@ int QOpenGLContextPrivate::maxTextureSize()
if (next > max_texture_size)
break;
- funcs->glTexImage2D(proxy, 0, GL_RGBA, next, next, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
+ funcs->glTexImage2D(proxy, 0, GL_RGBA, next, next, 0, GL_RGBA, GL_UNSIGNED_BYTE, nullptr);
if (gl1funcs)
gl1funcs->glGetTexLevelParameteriv(proxy, 0, GL_TEXTURE_WIDTH, &next);
else
@@ -455,7 +455,7 @@ QPlatformOpenGLContext *QOpenGLContext::shareHandle() const
Q_D(const QOpenGLContext);
if (d->shareContext)
return d->shareContext->handle();
- return 0;
+ return nullptr;
}
/*!
@@ -517,8 +517,8 @@ void QOpenGLContextPrivate::_q_screenDestroyed(QObject *object)
{
Q_Q(QOpenGLContext);
if (object == static_cast<QObject *>(screen)) {
- screen = 0;
- q->setScreen(0);
+ screen = nullptr;
+ q->setScreen(nullptr);
}
}
@@ -615,7 +615,7 @@ bool QOpenGLContext::create()
d->platformGLContext->setContext(this);
d->platformGLContext->initialize();
if (!d->platformGLContext->isSharing())
- d->shareContext = 0;
+ d->shareContext = nullptr;
d->shareGroup = d->shareContext ? d->shareContext->shareGroup() : new QOpenGLContextGroup;
d->shareGroup->d_func()->addContext(this);
return isValid();
@@ -649,15 +649,15 @@ void QOpenGLContext::destroy()
doneCurrent();
if (d->shareGroup)
d->shareGroup->d_func()->removeContext(this);
- d->shareGroup = 0;
+ d->shareGroup = nullptr;
delete d->platformGLContext;
- d->platformGLContext = 0;
+ d->platformGLContext = nullptr;
delete d->functions;
- d->functions = 0;
+ d->functions = nullptr;
for (QAbstractOpenGLFunctions *func : qAsConst(d->externalVersionFunctions)) {
QAbstractOpenGLFunctionsPrivate *func_d = QAbstractOpenGLFunctionsPrivate::get(func);
- func_d->owningContext = 0;
+ func_d->owningContext = nullptr;
func_d->initialized = false;
}
d->externalVersionFunctions.clear();
@@ -665,7 +665,7 @@ void QOpenGLContext::destroy()
d->versionFunctions.clear();
delete d->textureFunctions;
- d->textureFunctions = 0;
+ d->textureFunctions = nullptr;
d->nativeHandle = QVariant();
}
@@ -823,7 +823,7 @@ QAbstractOpenGLFunctions *QOpenGLContext::versionFunctions(const QOpenGLVersionP
#ifndef QT_OPENGL_ES_2
if (isOpenGLES()) {
qWarning("versionFunctions: Not supported on OpenGL ES");
- return 0;
+ return nullptr;
}
#endif // QT_OPENGL_ES_2
@@ -838,16 +838,16 @@ QAbstractOpenGLFunctions *QOpenGLContext::versionFunctions(const QOpenGLVersionP
// Check that context is compatible with requested version
const QPair<int, int> v = qMakePair(f.majorVersion(), f.minorVersion());
if (v < vp.version())
- return 0;
+ return nullptr;
// If this context only offers core profile functions then we can't create
// function objects for legacy or compatibility profile requests
if (((vp.hasProfiles() && vp.profile() != QSurfaceFormat::CoreProfile) || vp.isLegacyVersion())
&& f.profile() == QSurfaceFormat::CoreProfile)
- return 0;
+ return nullptr;
// Create object if suitable one not cached
- QAbstractOpenGLFunctions* funcs = 0;
+ QAbstractOpenGLFunctions* funcs = nullptr;
auto it = d->versionFunctions.constFind(vp);
if (it == d->versionFunctions.constEnd()) {
funcs = QOpenGLVersionFunctionsFactory::create(vp);
@@ -1022,7 +1022,7 @@ bool QOpenGLContext::makeCurrent(QSurface *surface)
|| qstrncmp(rendererString, "Adreno 6xx", 8) == 0 // Same as above but without the '(TM)'
|| qstrcmp(rendererString, "GC800 core") == 0
|| qstrcmp(rendererString, "GC1000 core") == 0
- || strstr(rendererString, "GC2000") != 0
+ || strstr(rendererString, "GC2000") != nullptr
|| qstrcmp(rendererString, "Immersion.16") == 0;
}
needsWorkaroundSet = true;
@@ -1053,9 +1053,9 @@ void QOpenGLContext::doneCurrent()
d->shareGroup->d_func()->deletePendingResources(this);
d->platformGLContext->doneCurrent();
- QOpenGLContextPrivate::setCurrentContext(0);
+ QOpenGLContextPrivate::setCurrentContext(nullptr);
- d->surface = 0;
+ d->surface = nullptr;
}
/*!
@@ -1224,8 +1224,8 @@ void QOpenGLContext::deleteQGLContext()
Q_D(QOpenGLContext);
if (d->qGLContextDeleteFunction && d->qGLContextHandle) {
d->qGLContextDeleteFunction(d->qGLContextHandle);
- d->qGLContextDeleteFunction = 0;
- d->qGLContextHandle = 0;
+ d->qGLContextDeleteFunction = nullptr;
+ d->qGLContextHandle = nullptr;
}
}
@@ -1252,7 +1252,7 @@ void *QOpenGLContext::openGLModuleHandle()
Q_ASSERT(ni);
return ni->nativeResourceForIntegration(QByteArrayLiteral("glhandle"));
#else
- return 0;
+ return nullptr;
#endif
}
@@ -1438,7 +1438,7 @@ QList<QOpenGLContext *> QOpenGLContextGroup::shares() const
QOpenGLContextGroup *QOpenGLContextGroup::currentContextGroup()
{
QOpenGLContext *current = QOpenGLContext::currentContext();
- return current ? current->shareGroup() : 0;
+ return current ? current->shareGroup() : nullptr;
}
void QOpenGLContextGroupPrivate::addContext(QOpenGLContext *ctx)
@@ -1491,7 +1491,7 @@ void QOpenGLContextGroupPrivate::cleanup()
while (it != end) {
(*it)->invalidateResource();
- (*it)->m_group = 0;
+ (*it)->m_group = nullptr;
++it;
}
diff --git a/src/gui/kernel/qopenglwindow.cpp b/src/gui/kernel/qopenglwindow.cpp
index 022a47c919..2ea8f43711 100644
--- a/src/gui/kernel/qopenglwindow.cpp
+++ b/src/gui/kernel/qopenglwindow.cpp
@@ -208,8 +208,8 @@ QOpenGLWindowPrivate::~QOpenGLWindowPrivate()
Q_Q(QOpenGLWindow);
if (q->isValid()) {
q->makeCurrent(); // this works even when the platformwindow is destroyed
- paintDevice.reset(0);
- fbo.reset(0);
+ paintDevice.reset(nullptr);
+ fbo.reset(nullptr);
blitter.destroy();
q->doneCurrent();
}
@@ -692,7 +692,7 @@ QPaintDevice *QOpenGLWindow::redirected(QPoint *) const
Q_D(const QOpenGLWindow);
if (QOpenGLContext::currentContext() == d->context.data())
return d->paintDevice.data();
- return 0;
+ return nullptr;
}
QT_END_NAMESPACE
diff --git a/src/gui/kernel/qpaintdevicewindow.cpp b/src/gui/kernel/qpaintdevicewindow.cpp
index 4521c2f62c..4f45fc5fde 100644
--- a/src/gui/kernel/qpaintdevicewindow.cpp
+++ b/src/gui/kernel/qpaintdevicewindow.cpp
@@ -219,7 +219,7 @@ QPaintDeviceWindow::QPaintDeviceWindow(QPaintDeviceWindowPrivate &dd, QWindow *p
*/
QPaintEngine *QPaintDeviceWindow::paintEngine() const
{
- return 0;
+ return nullptr;
}
QT_END_NAMESPACE
diff --git a/src/gui/kernel/qpalette.cpp b/src/gui/kernel/qpalette.cpp
index 61dccd77ac..fc063bc72c 100644
--- a/src/gui/kernel/qpalette.cpp
+++ b/src/gui/kernel/qpalette.cpp
@@ -536,7 +536,7 @@ static void qt_palette_from_color(QPalette &pal, const QColor &button)
\sa QApplication::setPalette(), QApplication::palette()
*/
QPalette::QPalette()
- : d(0)
+ : d(nullptr)
{
data.current_group = Active;
data.resolve_mask = 0;
diff --git a/src/gui/kernel/qplatformclipboard.cpp b/src/gui/kernel/qplatformclipboard.cpp
index ab2998b901..34c94dca3b 100644
--- a/src/gui/kernel/qplatformclipboard.cpp
+++ b/src/gui/kernel/qplatformclipboard.cpp
@@ -67,7 +67,7 @@ private:
QClipboardData::QClipboardData()
{
- src = 0;
+ src = nullptr;
}
QClipboardData::~QClipboardData()
diff --git a/src/gui/kernel/qplatformcursor.cpp b/src/gui/kernel/qplatformcursor.cpp
index aabf28a727..5a438a54a2 100644
--- a/src/gui/kernel/qplatformcursor.cpp
+++ b/src/gui/kernel/qplatformcursor.cpp
@@ -103,7 +103,7 @@ QT_BEGIN_NAMESPACE
QPlatformCursor::clearOverrideCursor().
*/
-QPlatformCursor::Capabilities QPlatformCursor::m_capabilities = 0;
+QPlatformCursor::Capabilities QPlatformCursor::m_capabilities = { };
/*!
\fn QPlatformCursor::QPlatformCursor()
@@ -128,7 +128,7 @@ void QPlatformCursor::setPos(const QPoint &pos)
qWarning("This plugin does not support QCursor::setPos()"
"; emulating movement within the application.");
}
- QWindowSystemInterface::handleMouseEvent(0, pos, pos, Qt::NoButton, Qt::NoButton, QEvent::MouseMove);
+ QWindowSystemInterface::handleMouseEvent(nullptr, pos, pos, Qt::NoButton, Qt::NoButton, QEvent::MouseMove);
}
/*!
@@ -439,7 +439,7 @@ void QPlatformCursorImage::createSystemCursor(int id)
{
if (!systemCursorTableInit) {
for (int i = 0; i <= Qt::LastCursor; i++)
- systemCursorTable[i] = 0;
+ systemCursorTable[i] = nullptr;
systemCursorTableInit = true;
}
switch (id) {
@@ -486,7 +486,7 @@ void QPlatformCursorImage::createSystemCursor(int id)
case Qt::BlankCursor:
systemCursorTable[Qt::BlankCursor] =
- new QPlatformCursorImage(0, 0, 0, 0, 0, 0);
+ new QPlatformCursorImage(nullptr, nullptr, 0, 0, 0, 0);
break;
// 20x20 cursors
@@ -556,14 +556,14 @@ void QPlatformCursorImage::createSystemCursor(int id)
void QPlatformCursorImage::set(Qt::CursorShape id)
{
- QPlatformCursorImage *cursor = 0;
+ QPlatformCursorImage *cursor = nullptr;
if (unsigned(id) <= unsigned(Qt::LastCursor)) {
if (!systemCursorTable[id])
createSystemCursor(id);
cursor = systemCursorTable[id];
}
- if (cursor == 0) {
+ if (cursor == nullptr) {
if (!systemCursorTable[Qt::ArrowCursor])
createSystemCursor(Qt::ArrowCursor);
cursor = systemCursorTable[Qt::ArrowCursor];
diff --git a/src/gui/kernel/qplatformdialoghelper.cpp b/src/gui/kernel/qplatformdialoghelper.cpp
index 4bee153489..15ac4acf91 100644
--- a/src/gui/kernel/qplatformdialoghelper.cpp
+++ b/src/gui/kernel/qplatformdialoghelper.cpp
@@ -186,7 +186,7 @@ QVariant QPlatformDialogHelper::defaultStyleHint(QPlatformDialogHelper::StyleHi
class QFontDialogOptionsPrivate : public QSharedData
{
public:
- QFontDialogOptionsPrivate() : options(0) {}
+ QFontDialogOptionsPrivate() = default;
QFontDialogOptions::FontDialogOptions options;
QString windowTitle;
@@ -328,7 +328,7 @@ Q_GLOBAL_STATIC(QColorDialogStaticData, qColorDialogStaticData)
class QColorDialogOptionsPrivate : public QSharedData
{
public:
- QColorDialogOptionsPrivate() : options(0) {}
+ QColorDialogOptionsPrivate() = default;
// Write out settings around destruction of dialogs
~QColorDialogOptionsPrivate() { qColorDialogStaticData()->writeSettings(); }
@@ -465,24 +465,16 @@ void QPlatformColorDialogHelper::setOptions(const QSharedPointer<QColorDialogOpt
class QFileDialogOptionsPrivate : public QSharedData
{
public:
- QFileDialogOptionsPrivate() : options(0),
- viewMode(QFileDialogOptions::Detail),
- fileMode(QFileDialogOptions::AnyFile),
- acceptMode(QFileDialogOptions::AcceptOpen),
- filters(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::AllDirs),
- useDefaultNameFilters(true)
- {}
-
QFileDialogOptions::FileDialogOptions options;
QString windowTitle;
- QFileDialogOptions::ViewMode viewMode;
- QFileDialogOptions::FileMode fileMode;
- QFileDialogOptions::AcceptMode acceptMode;
+ QFileDialogOptions::ViewMode viewMode = QFileDialogOptions::Detail;
+ QFileDialogOptions::FileMode fileMode = QFileDialogOptions::AnyFile;
+ QFileDialogOptions::AcceptMode acceptMode = QFileDialogOptions::AcceptOpen;
QString labels[QFileDialogOptions::DialogLabelCount];
- QDir::Filters filters;
+ QDir::Filters filters = QDir::AllEntries | QDir::NoDotAndDotDot | QDir::AllDirs;
QList<QUrl> sidebarUrls;
- bool useDefaultNameFilters;
+ bool useDefaultNameFilters = true;
QStringList nameFilters;
QStringList mimeTypeFilters;
QString defaultSuffix;
diff --git a/src/gui/kernel/qplatforminputcontextfactory.cpp b/src/gui/kernel/qplatforminputcontextfactory.cpp
index df7b95d8df..749abaf27a 100644
--- a/src/gui/kernel/qplatforminputcontextfactory.cpp
+++ b/src/gui/kernel/qplatforminputcontextfactory.cpp
@@ -85,7 +85,7 @@ QPlatformInputContext *QPlatformInputContextFactory::create(const QString& key)
#else
Q_UNUSED(key);
#endif
- return 0;
+ return nullptr;
}
QPlatformInputContext *QPlatformInputContextFactory::create()
diff --git a/src/gui/kernel/qplatformintegration.cpp b/src/gui/kernel/qplatformintegration.cpp
index b3d3db0751..63f66e6bf7 100644
--- a/src/gui/kernel/qplatformintegration.cpp
+++ b/src/gui/kernel/qplatformintegration.cpp
@@ -66,7 +66,7 @@ QT_BEGIN_NAMESPACE
*/
QPlatformFontDatabase *QPlatformIntegration::fontDatabase() const
{
- static QPlatformFontDatabase *db = 0;
+ static QPlatformFontDatabase *db = nullptr;
if (!db) {
db = new QPlatformFontDatabase;
}
@@ -86,7 +86,7 @@ QPlatformFontDatabase *QPlatformIntegration::fontDatabase() const
QPlatformClipboard *QPlatformIntegration::clipboard() const
{
- static QPlatformClipboard *clipboard = 0;
+ static QPlatformClipboard *clipboard = nullptr;
if (!clipboard) {
clipboard = new QPlatformClipboard;
}
@@ -104,7 +104,7 @@ QPlatformClipboard *QPlatformIntegration::clipboard() const
*/
QPlatformDrag *QPlatformIntegration::drag() const
{
- static QSimpleDrag *drag = 0;
+ static QSimpleDrag *drag = nullptr;
if (!drag) {
drag = new QSimpleDrag;
}
@@ -114,12 +114,12 @@ QPlatformDrag *QPlatformIntegration::drag() const
QPlatformNativeInterface * QPlatformIntegration::nativeInterface() const
{
- return 0;
+ return nullptr;
}
QPlatformServices *QPlatformIntegration::services() const
{
- return 0;
+ return nullptr;
}
/*!
@@ -303,7 +303,7 @@ QPlatformOpenGLContext *QPlatformIntegration::createPlatformOpenGLContext(QOpenG
{
Q_UNUSED(context);
qWarning("This plugin does not support createPlatformOpenGLContext!");
- return 0;
+ return nullptr;
}
#endif // QT_NO_OPENGL
@@ -315,7 +315,7 @@ QPlatformSharedGraphicsCache *QPlatformIntegration::createPlatformSharedGraphics
{
qWarning("This plugin does not support createPlatformSharedGraphicsBuffer for cacheId: %s!",
cacheId);
- return 0;
+ return nullptr;
}
/*!
@@ -325,7 +325,7 @@ QPlatformSharedGraphicsCache *QPlatformIntegration::createPlatformSharedGraphics
QPaintEngine *QPlatformIntegration::createImagePaintEngine(QPaintDevice *paintDevice) const
{
Q_UNUSED(paintDevice)
- return 0;
+ return nullptr;
}
/*!
@@ -357,7 +357,7 @@ void QPlatformIntegration::destroy()
*/
QPlatformInputContext *QPlatformIntegration::inputContext() const
{
- return 0;
+ return nullptr;
}
#ifndef QT_NO_ACCESSIBILITY
@@ -370,7 +370,7 @@ QPlatformInputContext *QPlatformIntegration::inputContext() const
*/
QPlatformAccessibility *QPlatformIntegration::accessibility() const
{
- static QPlatformAccessibility *accessibility = 0;
+ static QPlatformAccessibility *accessibility = nullptr;
if (Q_UNLIKELY(!accessibility)) {
accessibility = new QPlatformAccessibility;
}
@@ -484,7 +484,7 @@ class QPlatformTheme *QPlatformIntegration::createPlatformTheme(const QString &n
QPlatformOffscreenSurface *QPlatformIntegration::createPlatformOffscreenSurface(QOffscreenSurface *surface) const
{
Q_UNUSED(surface)
- return 0;
+ return nullptr;
}
#ifndef QT_NO_SESSIONMANAGER
diff --git a/src/gui/kernel/qplatformintegration.h b/src/gui/kernel/qplatformintegration.h
index d9f349555a..01406958e2 100644
--- a/src/gui/kernel/qplatformintegration.h
+++ b/src/gui/kernel/qplatformintegration.h
@@ -106,7 +106,8 @@ public:
ApplicationIcon,
SwitchableWidgetComposition,
TopStackedNativeChildWindows,
- OpenGLOnRasterSurface
+ OpenGLOnRasterSurface,
+ MaximizeUsingFullscreenGeometry
};
virtual ~QPlatformIntegration() { }
diff --git a/src/gui/kernel/qplatformintegrationplugin.cpp b/src/gui/kernel/qplatformintegrationplugin.cpp
index 35e4d2797b..b100eacbb5 100644
--- a/src/gui/kernel/qplatformintegrationplugin.cpp
+++ b/src/gui/kernel/qplatformintegrationplugin.cpp
@@ -54,7 +54,7 @@ QPlatformIntegration *QPlatformIntegrationPlugin::create(const QString &key, con
{
Q_UNUSED(key)
Q_UNUSED(paramList);
- return 0;
+ return nullptr;
}
QPlatformIntegration *QPlatformIntegrationPlugin::create(const QString &key, const QStringList &paramList, int &argc, char **argv)
diff --git a/src/gui/kernel/qplatformnativeinterface.cpp b/src/gui/kernel/qplatformnativeinterface.cpp
index b24541d3ec..8c9e73fbc2 100644
--- a/src/gui/kernel/qplatformnativeinterface.cpp
+++ b/src/gui/kernel/qplatformnativeinterface.cpp
@@ -56,35 +56,35 @@ QT_BEGIN_NAMESPACE
void *QPlatformNativeInterface::nativeResourceForIntegration(const QByteArray &resource)
{
Q_UNUSED(resource);
- return 0;
+ return nullptr;
}
void *QPlatformNativeInterface::nativeResourceForScreen(const QByteArray &resource, QScreen *screen)
{
Q_UNUSED(resource);
Q_UNUSED(screen);
- return 0;
+ return nullptr;
}
void *QPlatformNativeInterface::nativeResourceForWindow(const QByteArray &resource, QWindow *window)
{
Q_UNUSED(resource);
Q_UNUSED(window);
- return 0;
+ return nullptr;
}
void *QPlatformNativeInterface::nativeResourceForContext(const QByteArray &resource, QOpenGLContext *context)
{
Q_UNUSED(resource);
Q_UNUSED(context);
- return 0;
+ return nullptr;
}
void * QPlatformNativeInterface::nativeResourceForBackingStore(const QByteArray &resource, QBackingStore *backingStore)
{
Q_UNUSED(resource);
Q_UNUSED(backingStore);
- return 0;
+ return nullptr;
}
#ifndef QT_NO_CURSOR
@@ -99,31 +99,31 @@ void *QPlatformNativeInterface::nativeResourceForCursor(const QByteArray &resour
QPlatformNativeInterface::NativeResourceForIntegrationFunction QPlatformNativeInterface::nativeResourceFunctionForIntegration(const QByteArray &resource)
{
Q_UNUSED(resource);
- return 0;
+ return nullptr;
}
QPlatformNativeInterface::NativeResourceForContextFunction QPlatformNativeInterface::nativeResourceFunctionForContext(const QByteArray &resource)
{
Q_UNUSED(resource);
- return 0;
+ return nullptr;
}
QPlatformNativeInterface::NativeResourceForScreenFunction QPlatformNativeInterface::nativeResourceFunctionForScreen(const QByteArray &resource)
{
Q_UNUSED(resource);
- return 0;
+ return nullptr;
}
QPlatformNativeInterface::NativeResourceForWindowFunction QPlatformNativeInterface::nativeResourceFunctionForWindow(const QByteArray &resource)
{
Q_UNUSED(resource);
- return 0;
+ return nullptr;
}
QPlatformNativeInterface::NativeResourceForBackingStoreFunction QPlatformNativeInterface::nativeResourceFunctionForBackingStore(const QByteArray &resource)
{
Q_UNUSED(resource);
- return 0;
+ return nullptr;
}
QFunctionPointer QPlatformNativeInterface::platformFunction(const QByteArray &function) const
diff --git a/src/gui/kernel/qplatformopenglcontext.cpp b/src/gui/kernel/qplatformopenglcontext.cpp
index 07b5a0dda6..839ec008aa 100644
--- a/src/gui/kernel/qplatformopenglcontext.cpp
+++ b/src/gui/kernel/qplatformopenglcontext.cpp
@@ -81,7 +81,7 @@ QT_BEGIN_NAMESPACE
class QPlatformOpenGLContextPrivate
{
public:
- QPlatformOpenGLContextPrivate() : context(0) {}
+ QPlatformOpenGLContextPrivate() : context(nullptr) {}
QOpenGLContext *context;
};
diff --git a/src/gui/kernel/qplatformscreen.cpp b/src/gui/kernel/qplatformscreen.cpp
index f3213bf5ea..7c1e2158b1 100644
--- a/src/gui/kernel/qplatformscreen.cpp
+++ b/src/gui/kernel/qplatformscreen.cpp
@@ -54,7 +54,7 @@ QPlatformScreen::QPlatformScreen()
: d_ptr(new QPlatformScreenPrivate)
{
Q_D(QPlatformScreen);
- d->screen = 0;
+ d->screen = nullptr;
}
QPlatformScreen::~QPlatformScreen()
@@ -99,7 +99,7 @@ QWindow *QPlatformScreen::topLevelAt(const QPoint & pos) const
return w;
}
- return 0;
+ return nullptr;
}
/*!
@@ -310,7 +310,7 @@ QPlatformScreen * QPlatformScreen::platformScreenForWindow(const QWindow *window
// QTBUG 32681: It can happen during the transition between screens
// when one screen is disconnected that the window doesn't have a screen.
if (!window->screen())
- return 0;
+ return nullptr;
return window->screen()->handle();
}
@@ -395,7 +395,7 @@ QString QPlatformScreen::serialNumber() const
*/
QPlatformCursor *QPlatformScreen::cursor() const
{
- return 0;
+ return nullptr;
}
/*!
@@ -410,15 +410,22 @@ void QPlatformScreen::resizeMaximizedWindows()
const QRect newGeometry = deviceIndependentGeometry();
const QRect newAvailableGeometry = QHighDpi::fromNative(availableGeometry(), QHighDpiScaling::factor(this), newGeometry.topLeft());
+ const bool supportsMaximizeUsingFullscreen = QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::MaximizeUsingFullscreenGeometry);
+
for (QWindow *w : windows()) {
// Skip non-platform windows, e.g., offscreen windows.
if (!w->handle())
continue;
- if (w->windowState() & Qt::WindowMaximized || w->geometry() == oldAvailableGeometry)
+ if (supportsMaximizeUsingFullscreen
+ && w->windowState() & Qt::WindowMaximized
+ && w->flags() & Qt::MaximizeUsingFullscreenGeometryHint) {
+ w->setGeometry(newGeometry);
+ } else if (w->windowState() & Qt::WindowMaximized || w->geometry() == oldAvailableGeometry) {
w->setGeometry(newAvailableGeometry);
- else if (w->windowState() & Qt::WindowFullScreen || w->geometry() == oldGeometry)
+ } else if (w->windowState() & Qt::WindowFullScreen || w->geometry() == oldGeometry) {
w->setGeometry(newGeometry);
+ }
}
}
@@ -609,4 +616,18 @@ int QPlatformScreen::preferredMode() const
return 0;
}
+QList<QPlatformScreen *> QPlatformPlaceholderScreen::virtualSiblings() const
+{
+ QList<QPlatformScreen *> siblings;
+
+ if (!m_virtualSibling)
+ return siblings;
+
+ for (QScreen *screen : QGuiApplication::screens()) {
+ if (screen->handle() && screen->handle() != this)
+ siblings << screen->handle();
+ }
+ return siblings;
+}
+
QT_END_NAMESPACE
diff --git a/src/gui/kernel/qplatformscreen.h b/src/gui/kernel/qplatformscreen.h
index d7378aed51..0be7646032 100644
--- a/src/gui/kernel/qplatformscreen.h
+++ b/src/gui/kernel/qplatformscreen.h
@@ -105,6 +105,8 @@ public:
QPlatformScreen();
virtual ~QPlatformScreen();
+ virtual bool isPlaceholder() const { return false; }
+
virtual QPixmap grabWindow(WId window, int x, int y, int width, int height) const;
virtual QRect geometry() const = 0;
@@ -172,6 +174,27 @@ private:
friend class QScreenPrivate;
};
+// Qt doesn't currently support running with no platform screen
+// QPA plugins can use this class to create a fake screen
+class Q_GUI_EXPORT QPlatformPlaceholderScreen : public QPlatformScreen {
+public:
+ // virtualSibling can be passed in to make the placeholder a sibling with other screens during
+ // the transitioning phase when the real screen is about to be removed, or the first real screen
+ // is about to be added. This is useful because Qt will currently recreate (but now show!)
+ // windows when they are moved from one virtual desktop to another, so if the last monitor is
+ // unplugged, then plugged in again, windows will be hidden unless the placeholder belongs to
+ // the same virtual desktop as the other screens.
+ QPlatformPlaceholderScreen(bool virtualSibling = true) : m_virtualSibling(virtualSibling) {}
+ bool isPlaceholder() const override { return true; }
+ QRect geometry() const override { return QRect(); }
+ QRect availableGeometry() const override { return QRect(); }
+ int depth() const override { return 32; }
+ QImage::Format format() const override { return QImage::Format::Format_RGB32; }
+ QList<QPlatformScreen *> virtualSiblings() const override;
+private:
+ bool m_virtualSibling = true;
+};
+
QT_END_NAMESPACE
#endif // QPLATFORMSCREEN_H
diff --git a/src/gui/kernel/qplatformtheme.cpp b/src/gui/kernel/qplatformtheme.cpp
index f906f808d8..71521c0339 100644
--- a/src/gui/kernel/qplatformtheme.cpp
+++ b/src/gui/kernel/qplatformtheme.cpp
@@ -354,7 +354,7 @@ const uint QPlatformThemePrivate::numberOfKeyBindings = sizeof(QPlatformThemePri
#endif
QPlatformThemePrivate::QPlatformThemePrivate()
- : systemPalette(0)
+ : systemPalette(nullptr)
{ }
QPlatformThemePrivate::~QPlatformThemePrivate()
@@ -394,7 +394,7 @@ bool QPlatformTheme::usePlatformNativeDialog(DialogType type) const
QPlatformDialogHelper *QPlatformTheme::createPlatformDialogHelper(DialogType type) const
{
Q_UNUSED(type);
- return 0;
+ return nullptr;
}
const QPalette *QPlatformTheme::palette(Palette type) const
@@ -405,13 +405,13 @@ const QPalette *QPlatformTheme::palette(Palette type) const
const_cast<QPlatformTheme *>(this)->d_ptr->initializeSystemPalette();
return d->systemPalette;
}
- return 0;
+ return nullptr;
}
const QFont *QPlatformTheme::font(Font type) const
{
Q_UNUSED(type)
- return 0;
+ return nullptr;
}
QPixmap QPlatformTheme::standardPixmap(StandardPixmap sp, const QSizeF &size) const
@@ -569,17 +569,17 @@ QVariant QPlatformTheme::defaultThemeHint(ThemeHint hint)
QPlatformMenuItem *QPlatformTheme::createPlatformMenuItem() const
{
- return 0;
+ return nullptr;
}
QPlatformMenu *QPlatformTheme::createPlatformMenu() const
{
- return 0;
+ return nullptr;
}
QPlatformMenuBar *QPlatformTheme::createPlatformMenuBar() const
{
- return 0;
+ return nullptr;
}
#ifndef QT_NO_SYSTEMTRAYICON
@@ -589,7 +589,7 @@ QPlatformMenuBar *QPlatformTheme::createPlatformMenuBar() const
*/
QPlatformSystemTrayIcon *QPlatformTheme::createPlatformSystemTrayIcon() const
{
- return 0;
+ return nullptr;
}
#endif
diff --git a/src/gui/kernel/qplatformtheme.h b/src/gui/kernel/qplatformtheme.h
index 356c4ea3ea..3185fc4541 100644
--- a/src/gui/kernel/qplatformtheme.h
+++ b/src/gui/kernel/qplatformtheme.h
@@ -309,7 +309,7 @@ public:
virtual QPixmap standardPixmap(StandardPixmap sp, const QSizeF &size) const;
virtual QIcon fileIcon(const QFileInfo &fileInfo,
- QPlatformTheme::IconOptions iconOptions = nullptr) const;
+ QPlatformTheme::IconOptions iconOptions = { }) const;
virtual QIconEngine *createIconEngine(const QString &iconName) const;
#ifndef QT_NO_SHORTCUT
diff --git a/src/gui/kernel/qscreen.cpp b/src/gui/kernel/qscreen.cpp
index 7adf3db1b8..9de59f8c7e 100644
--- a/src/gui/kernel/qscreen.cpp
+++ b/src/gui/kernel/qscreen.cpp
@@ -71,7 +71,7 @@ QT_BEGIN_NAMESPACE
*/
QScreen::QScreen(QPlatformScreen *screen)
- : QObject(*new QScreenPrivate(), 0)
+ : QObject(*new QScreenPrivate(), nullptr)
{
Q_D(QScreen);
d->setPlatformScreen(screen);
@@ -700,6 +700,25 @@ void QScreenPrivate::updatePrimaryOrientation()
}
/*!
+ Returns the screen at \a point within the set of \l QScreen::virtualSiblings(),
+ or \c nullptr if outside of any screen.
+
+ The \a point is in relation to the virtualGeometry() of each set of virtual
+ siblings.
+
+ \since 5.15
+*/
+QScreen *QScreen::virtualSiblingAt(const QPoint &point)
+{
+ const auto &siblings = virtualSiblings();
+ for (QScreen *sibling : siblings) {
+ if (sibling->geometry().contains(point))
+ return sibling;
+ }
+ return nullptr;
+}
+
+/*!
Creates and returns a pixmap constructed by grabbing the contents
of the given \a window restricted by QRect(\a x, \a y, \a width,
\a height).
diff --git a/src/gui/kernel/qscreen.h b/src/gui/kernel/qscreen.h
index 14392d3036..88925ab731 100644
--- a/src/gui/kernel/qscreen.h
+++ b/src/gui/kernel/qscreen.h
@@ -125,6 +125,7 @@ public:
QRect availableGeometry() const;
QList<QScreen *> virtualSiblings() const;
+ QScreen *virtualSiblingAt(const QPoint &point);
QSize virtualSize() const;
QRect virtualGeometry() const;
diff --git a/src/gui/kernel/qsessionmanager.cpp b/src/gui/kernel/qsessionmanager.cpp
index e5e9c624b2..8747e02719 100644
--- a/src/gui/kernel/qsessionmanager.cpp
+++ b/src/gui/kernel/qsessionmanager.cpp
@@ -135,7 +135,7 @@ QSessionManagerPrivate::QSessionManagerPrivate(const QString &id,
QSessionManagerPrivate::~QSessionManagerPrivate()
{
delete platformSessionManager;
- platformSessionManager = 0;
+ platformSessionManager = nullptr;
}
QSessionManager::QSessionManager(QGuiApplication *app, QString &id, QString &key)
diff --git a/src/gui/kernel/qshortcutmap.cpp b/src/gui/kernel/qshortcutmap.cpp
index 0395c1db38..a7ea20266b 100644
--- a/src/gui/kernel/qshortcutmap.cpp
+++ b/src/gui/kernel/qshortcutmap.cpp
@@ -45,6 +45,7 @@
#include "qvector.h"
#include "qcoreapplication.h"
#include <private/qkeymapper_p.h>
+#include <QtCore/qloggingcategory.h>
#include <algorithm>
@@ -52,8 +53,7 @@
QT_BEGIN_NAMESPACE
-// To enable verbose output uncomment below
-//#define DEBUG_QSHORTCUTMAP
+Q_LOGGING_CATEGORY(lcShortcutMap, "qt.gui.shortcutmap")
/* \internal
Entry data for QShortcutMap
@@ -65,11 +65,11 @@ QT_BEGIN_NAMESPACE
struct QShortcutEntry
{
QShortcutEntry()
- : keyseq(0), context(Qt::WindowShortcut), enabled(false), autorepeat(1), id(0), owner(0), contextMatcher(0)
+ : keyseq(0), context(Qt::WindowShortcut), enabled(false), autorepeat(1), id(0), owner(nullptr), contextMatcher(nullptr)
{}
QShortcutEntry(const QKeySequence &k)
- : keyseq(k), context(Qt::WindowShortcut), enabled(false), autorepeat(1), id(0), owner(0), contextMatcher(0)
+ : keyseq(k), context(Qt::WindowShortcut), enabled(false), autorepeat(1), id(0), owner(nullptr), contextMatcher(nullptr)
{}
QShortcutEntry(QObject *o, const QKeySequence &k, Qt::ShortcutContext c, int i, bool a, QShortcutMap::ContextMatcher m)
@@ -165,11 +165,9 @@ int QShortcutMap::addShortcut(QObject *owner, const QKeySequence &key, Qt::Short
QShortcutEntry newEntry(owner, key, context, --(d->currentId), true, matcher);
const auto it = std::upper_bound(d->sequences.begin(), d->sequences.end(), newEntry);
d->sequences.insert(it, newEntry); // Insert sorted
-#if defined(DEBUG_QSHORTCUTMAP)
- qDebug().nospace()
+ qCDebug(lcShortcutMap).nospace()
<< "QShortcutMap::addShortcut(" << owner << ", "
<< key << ", " << context << ") = " << d->currentId;
-#endif
return d->currentId;
}
@@ -186,7 +184,7 @@ int QShortcutMap::removeShortcut(int id, QObject *owner, const QKeySequence &key
{
Q_D(QShortcutMap);
int itemsRemoved = 0;
- bool allOwners = (owner == 0);
+ bool allOwners = (owner == nullptr);
bool allKeys = key.isEmpty();
bool allIds = id == 0;
@@ -212,11 +210,9 @@ int QShortcutMap::removeShortcut(int id, QObject *owner, const QKeySequence &key
return itemsRemoved;
--i;
}
-#if defined(DEBUG_QSHORTCUTMAP)
- qDebug().nospace()
+ qCDebug(lcShortcutMap).nospace()
<< "QShortcutMap::removeShortcut(" << id << ", " << owner << ", "
<< key << ") = " << itemsRemoved;
-#endif
return itemsRemoved;
}
@@ -232,7 +228,7 @@ int QShortcutMap::setShortcutEnabled(bool enable, int id, QObject *owner, const
{
Q_D(QShortcutMap);
int itemsChanged = 0;
- bool allOwners = (owner == 0);
+ bool allOwners = (owner == nullptr);
bool allKeys = key.isEmpty();
bool allIds = id == 0;
@@ -250,11 +246,9 @@ int QShortcutMap::setShortcutEnabled(bool enable, int id, QObject *owner, const
return itemsChanged;
--i;
}
-#if defined(DEBUG_QSHORTCUTMAP)
- qDebug().nospace()
+ qCDebug(lcShortcutMap).nospace()
<< "QShortcutMap::setShortcutEnabled(" << enable << ", " << id << ", "
<< owner << ", " << key << ") = " << itemsChanged;
-#endif
return itemsChanged;
}
@@ -270,7 +264,7 @@ int QShortcutMap::setShortcutAutoRepeat(bool on, int id, QObject *owner, const Q
{
Q_D(QShortcutMap);
int itemsChanged = 0;
- bool allOwners = (owner == 0);
+ bool allOwners = (owner == nullptr);
bool allKeys = key.isEmpty();
bool allIds = id == 0;
@@ -288,11 +282,9 @@ int QShortcutMap::setShortcutAutoRepeat(bool on, int id, QObject *owner, const Q
return itemsChanged;
--i;
}
-#if defined(DEBUG_QSHORTCUTMAP)
- qDebug().nospace()
+ qCDebug(lcShortcutMap).nospace()
<< "QShortcutMap::setShortcutAutoRepeat(" << on << ", " << id << ", "
<< owner << ", " << key << ") = " << itemsChanged;
-#endif
return itemsChanged;
}
@@ -395,9 +387,7 @@ QKeySequence::SequenceMatch QShortcutMap::nextState(QKeyEvent *e)
clearSequence(d->currentSequences);
d->currentState = result;
-#if defined(DEBUG_QSHORTCUTMAP)
- qDebug().nospace() << "QShortcutMap::nextState(" << e << ") = " << result;
-#endif
+ qCDebug(lcShortcutMap).nospace() << "QShortcutMap::nextState(" << e << ") = " << result;
return result;
}
@@ -436,9 +426,7 @@ QKeySequence::SequenceMatch QShortcutMap::find(QKeyEvent *e, int ignoredModifier
return QKeySequence::NoMatch;
createNewSequences(e, d->newEntries, ignoredModifiers);
-#if defined(DEBUG_QSHORTCUTMAP)
- qDebug() << "Possible shortcut key sequences:" << d->newEntries;
-#endif
+ qCDebug(lcShortcutMap) << "Possible shortcut key sequences:" << d->newEntries;
// Should never happen
if (d->newEntries == d->currentSequences) {
@@ -491,15 +479,11 @@ QKeySequence::SequenceMatch QShortcutMap::find(QKeyEvent *e, int ignoredModifier
// previous list. If this match is equal or better than the last match, append to the list
if (oneKSResult > result) {
okEntries.clear();
-#if defined(DEBUG_QSHORTCUTMAP)
- qDebug() << "Found better match (" << d->newEntries << "), clearing key sequence list";
-#endif
+ qCDebug(lcShortcutMap) << "Found better match (" << d->newEntries << "), clearing key sequence list";
}
if (oneKSResult && oneKSResult >= result) {
okEntries << d->newEntries.at(i);
-#if defined(DEBUG_QSHORTCUTMAP)
- qDebug() << "Added ok key sequence" << d->newEntries;
-#endif
+ qCDebug(lcShortcutMap) << "Added ok key sequence" << d->newEntries;
}
}
@@ -515,9 +499,7 @@ QKeySequence::SequenceMatch QShortcutMap::find(QKeyEvent *e, int ignoredModifier
}
if (result != QKeySequence::NoMatch)
d->currentSequences = okEntries;
-#if defined(DEBUG_QSHORTCUTMAP)
- qDebug() << "Returning shortcut match == " << result;
-#endif
+ qCDebug(lcShortcutMap) << "Returning shortcut match == " << result;
return QKeySequence::SequenceMatch(result);
}
@@ -540,19 +522,16 @@ void QShortcutMap::createNewSequences(QKeyEvent *e, QVector<QKeySequence> &ksl,
{
Q_D(QShortcutMap);
QList<int> possibleKeys = QKeyMapper::possibleKeys(e);
-#if defined(DEBUG_QSHORTCUTMAP)
- {
- QDebug debug = qDebug().nospace();
- debug << __FUNCTION__ << '(' << e << ", ignoredModifiers="
+ if (lcShortcutMap().isDebugEnabled()) {
+ qCDebug(lcShortcutMap).nospace() << __FUNCTION__ << '(' << e << ", ignoredModifiers="
<< Qt::KeyboardModifiers(ignoredModifiers) << "), possibleKeys=(";
for (int i = 0, size = possibleKeys.size(); i < size; ++i) {
if (i)
- debug << ", ";
- debug << QKeySequence(possibleKeys.at(i));
+ qCDebug(lcShortcutMap).nospace() << ", ";
+ qCDebug(lcShortcutMap).nospace() << QKeySequence(possibleKeys.at(i));
}
- debug << ')';
+ qCDebug(lcShortcutMap).nospace() << ')';
}
-#endif // DEBUG_QSHORTCUTMAP
int pkTotal = possibleKeys.count();
if (!pkTotal)
return;
@@ -659,18 +638,15 @@ void QShortcutMap::dispatchEvent(QKeyEvent *e)
d->prevSequence = curKey;
}
// Find next
- const QShortcutEntry *current = 0, *next = 0;
+ const QShortcutEntry *current = nullptr, *next = nullptr;
int i = 0, enabledShortcuts = 0;
-#if defined(DEBUG_QSHORTCUTMAP)
QVector<const QShortcutEntry*> ambiguousShortcuts;
-#endif
while(i < d->identicals.size()) {
current = d->identicals.at(i);
if (current->enabled || !next){
++enabledShortcuts;
-#if defined(DEBUG_QSHORTCUTMAP)
- ambiguousShortcuts.append(current);
-#endif
+ if (lcShortcutMap().isDebugEnabled())
+ ambiguousShortcuts.append(current);
if (enabledShortcuts > d->ambigCount + 1)
break;
next = current;
@@ -683,19 +659,18 @@ void QShortcutMap::dispatchEvent(QKeyEvent *e)
if (!next || (e->isAutoRepeat() && !next->autorepeat))
return;
// Dispatch next enabled
-#if defined(DEBUG_QSHORTCUTMAP)
- if (ambiguousShortcuts.size() > 1) {
- qDebug() << "The following shortcuts are about to be activated ambiguously:";
- for (const QShortcutEntry *entry : qAsConst(ambiguousShortcuts)) {
- qDebug().nospace() << "- " << entry->keyseq << " (belonging to " << entry->owner << ")";
+ if (lcShortcutMap().isDebugEnabled()) {
+ if (ambiguousShortcuts.size() > 1) {
+ qCDebug(lcShortcutMap) << "The following shortcuts are about to be activated ambiguously:";
+ for (const QShortcutEntry *entry : qAsConst(ambiguousShortcuts))
+ qCDebug(lcShortcutMap).nospace() << "- " << entry->keyseq << " (belonging to " << entry->owner << ")";
}
- }
- qDebug().nospace()
- << "QShortcutMap::dispatchEvent(): Sending QShortcutEvent(\""
- << next->keyseq.toString() << "\", " << next->id << ", "
- << (bool)(enabledShortcuts>1) << ") to object(" << next->owner << ')';
-#endif
+ qCDebug(lcShortcutMap).nospace()
+ << "QShortcutMap::dispatchEvent(): Sending QShortcutEvent(\""
+ << next->keyseq.toString() << "\", " << next->id << ", "
+ << static_cast<bool>(enabledShortcuts>1) << ") to object(" << next->owner << ')';
+ }
QShortcutEvent se(next->keyseq, next->id, enabledShortcuts>1);
QCoreApplication::sendEvent(const_cast<QObject *>(next->owner), &se);
}
diff --git a/src/gui/kernel/qsimpledrag.cpp b/src/gui/kernel/qsimpledrag.cpp
index d3070a3d1a..dec3cc399d 100644
--- a/src/gui/kernel/qsimpledrag.cpp
+++ b/src/gui/kernel/qsimpledrag.cpp
@@ -76,7 +76,7 @@ static QWindow* topLevelAt(const QPoint &pos)
if (w->isVisible() && w->handle() && w->geometry().contains(pos) && !qobject_cast<QShapedPixmapWindow*>(w))
return w;
}
- return 0;
+ return nullptr;
}
/*!
@@ -393,7 +393,7 @@ void QSimpleDrag::startDrag()
static void sendDragLeave(QWindow *window)
{
- QWindowSystemInterface::handleDrag(window, nullptr, QPoint(), Qt::IgnoreAction, 0, 0);
+ QWindowSystemInterface::handleDrag(window, nullptr, QPoint(), Qt::IgnoreAction, { }, { });
}
void QSimpleDrag::cancel()
diff --git a/src/gui/kernel/qstylehints.cpp b/src/gui/kernel/qstylehints.cpp
index 732ede90d0..7b3c70c51b 100644
--- a/src/gui/kernel/qstylehints.cpp
+++ b/src/gui/kernel/qstylehints.cpp
@@ -116,7 +116,7 @@ public:
\sa QGuiApplication::styleHints()
*/
QStyleHints::QStyleHints()
- : QObject(*new QStyleHintsPrivate(), 0)
+ : QObject(*new QStyleHintsPrivate(), nullptr)
{
}
diff --git a/src/gui/kernel/qsurface.cpp b/src/gui/kernel/qsurface.cpp
index 709f28d431..85c576b21c 100644
--- a/src/gui/kernel/qsurface.cpp
+++ b/src/gui/kernel/qsurface.cpp
@@ -134,7 +134,7 @@ bool QSurface::supportsOpenGL() const
Creates a surface with the given \a type.
*/
QSurface::QSurface(SurfaceClass type)
- : m_type(type), m_reserved(0)
+ : m_type(type), m_reserved(nullptr)
{
}
diff --git a/src/gui/kernel/qsurfaceformat.cpp b/src/gui/kernel/qsurfaceformat.cpp
index 238886220b..571b820409 100644
--- a/src/gui/kernel/qsurfaceformat.cpp
+++ b/src/gui/kernel/qsurfaceformat.cpp
@@ -57,7 +57,7 @@ QT_BEGIN_NAMESPACE
class QSurfaceFormatPrivate
{
public:
- explicit QSurfaceFormatPrivate(QSurfaceFormat::FormatOptions _opts = 0)
+ explicit QSurfaceFormatPrivate(QSurfaceFormat::FormatOptions _opts = { })
: ref(1)
, opts(_opts)
, redBufferSize(-1)
diff --git a/src/gui/kernel/qtestsupport_gui.cpp b/src/gui/kernel/qtestsupport_gui.cpp
index 7aad4d8c7d..79da26f2ca 100644
--- a/src/gui/kernel/qtestsupport_gui.cpp
+++ b/src/gui/kernel/qtestsupport_gui.cpp
@@ -37,10 +37,15 @@
**
****************************************************************************/
+#include <private/qguiapplication_p.h>
+
+#include <qpa/qplatformintegration.h>
+
#include "qtestsupport_gui.h"
#include "qwindow.h"
#include <QtCore/qtestsupport_core.h>
+#include <QtCore/QDebug>
QT_BEGIN_NAMESPACE
@@ -55,6 +60,14 @@ QT_BEGIN_NAMESPACE
*/
Q_GUI_EXPORT bool QTest::qWaitForWindowActive(QWindow *window, int timeout)
{
+ if (Q_UNLIKELY(!QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::WindowActivation))) {
+ qWarning() << "qWaitForWindowActive was called on a platform that doesn't support window"
+ << "activation. This means there is an error in the test and it should either"
+ << "check for the WindowActivation platform capability before calling"
+ << "qWaitForWindowActivate, use qWaitForWindowExposed instead, or skip the test."
+ << "Falling back to qWaitForWindowExposed.";
+ return qWaitForWindowExposed(window, timeout);
+ }
return QTest::qWaitFor([&]() { return window->isActive(); }, timeout);
}
diff --git a/src/gui/kernel/qwindow.cpp b/src/gui/kernel/qwindow.cpp
index b71a0c54aa..74e0e6401e 100644
--- a/src/gui/kernel/qwindow.cpp
+++ b/src/gui/kernel/qwindow.cpp
@@ -156,7 +156,7 @@ QT_BEGIN_NAMESPACE
\sa setScreen()
*/
QWindow::QWindow(QScreen *targetScreen)
- : QObject(*new QWindowPrivate(), 0)
+ : QObject(*new QWindowPrivate(), nullptr)
, QSurface(QSurface::Window)
{
Q_D(QWindow);
@@ -223,7 +223,7 @@ QWindow::~QWindow()
// some cases end up becoming the focus window again. Clear it again
// here as a workaround. See QTBUG-75326.
if (QGuiApplicationPrivate::focus_window == this)
- QGuiApplicationPrivate::focus_window = 0;
+ QGuiApplicationPrivate::focus_window = nullptr;
}
void QWindowPrivate::init(QScreen *targetScreen)
@@ -469,7 +469,7 @@ inline bool QWindowPrivate::windowRecreationRequired(QScreen *newScreen) const
inline void QWindowPrivate::disconnectFromScreen()
{
if (topLevelScreen)
- topLevelScreen = 0;
+ topLevelScreen = nullptr;
}
void QWindowPrivate::connectToScreen(QScreen *screen)
@@ -732,7 +732,7 @@ void QWindow::setParent(QWindow *parent)
if (parent)
parent->create();
- d->platformWindow->setParent(parent ? parent->d_func()->platformWindow : 0);
+ d->platformWindow->setParent(parent ? parent->d_func()->platformWindow : nullptr);
}
QGuiApplicationPrivate::updateBlockedStatus(this);
@@ -744,7 +744,7 @@ void QWindow::setParent(QWindow *parent)
bool QWindow::isTopLevel() const
{
Q_D(const QWindow);
- return d->parentWindow == 0;
+ return d->parentWindow == nullptr;
}
/*!
@@ -2018,7 +2018,7 @@ void QWindow::setScreen(QScreen *newScreen)
Q_D(QWindow);
if (!newScreen)
newScreen = QGuiApplication::primaryScreen();
- d->setTopLevelScreen(newScreen, newScreen != 0);
+ d->setTopLevelScreen(newScreen, newScreen != nullptr);
}
/*!
@@ -2036,7 +2036,7 @@ void QWindow::setScreen(QScreen *newScreen)
*/
QAccessibleInterface *QWindow::accessibleRoot() const
{
- return 0;
+ return nullptr;
}
/*!
@@ -2696,7 +2696,7 @@ QWindow *QWindow::fromWinId(WId id)
{
if (!QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::ForeignWindows)) {
qWarning("QWindow::fromWinId(): platform plugin does not support foreign windows.");
- return 0;
+ return nullptr;
}
QWindow *window = new QWindow;
@@ -2770,7 +2770,7 @@ void QWindow::setCursor(const QCursor &cursor)
void QWindow::unsetCursor()
{
Q_D(QWindow);
- d->setCursor(0);
+ d->setCursor(nullptr);
}
/*!
diff --git a/src/gui/kernel/qwindowsysteminterface.cpp b/src/gui/kernel/qwindowsysteminterface.cpp
index ba04f8701d..c9a70897d6 100644
--- a/src/gui/kernel/qwindowsysteminterface.cpp
+++ b/src/gui/kernel/qwindowsysteminterface.cpp
@@ -179,7 +179,7 @@ void QWindowSystemInterfacePrivate::installWindowSystemEventHandler(QWindowSyste
void QWindowSystemInterfacePrivate::removeWindowSystemEventhandler(QWindowSystemEventHandler *handler)
{
if (eventHandler == handler)
- eventHandler = 0;
+ eventHandler = nullptr;
}
QWindowSystemEventHandler::~QWindowSystemEventHandler()
diff --git a/src/gui/opengl/qopengl.cpp b/src/gui/opengl/qopengl.cpp
index 667d16317f..adca536797 100644
--- a/src/gui/opengl/qopengl.cpp
+++ b/src/gui/opengl/qopengl.cpp
@@ -72,7 +72,7 @@ QOpenGLExtensionMatcher::QOpenGLExtensionMatcher()
return;
}
QOpenGLFunctions *funcs = ctx->functions();
- const char *extensionStr = 0;
+ const char *extensionStr = nullptr;
if (ctx->isOpenGLES() || ctx->format().majorVersion() < 3)
extensionStr = reinterpret_cast<const char *>(funcs->glGetString(GL_EXTENSIONS));
diff --git a/src/gui/opengl/qopenglbuffer.cpp b/src/gui/opengl/qopenglbuffer.cpp
index 537097c09f..5387cc06e3 100644
--- a/src/gui/opengl/qopenglbuffer.cpp
+++ b/src/gui/opengl/qopenglbuffer.cpp
@@ -143,10 +143,10 @@ public:
QOpenGLBufferPrivate(QOpenGLBuffer::Type t)
: ref(1),
type(t),
- guard(0),
+ guard(nullptr),
usagePattern(QOpenGLBuffer::StaticDraw),
actualUsagePattern(QOpenGLBuffer::StaticDraw),
- funcs(0)
+ funcs(nullptr)
{
}
@@ -323,10 +323,10 @@ void QOpenGLBuffer::destroy()
Q_D(QOpenGLBuffer);
if (d->guard) {
d->guard->free();
- d->guard = 0;
+ d->guard = nullptr;
}
delete d->funcs;
- d->funcs = 0;
+ d->funcs = nullptr;
}
/*!
@@ -545,9 +545,9 @@ void *QOpenGLBuffer::map(QOpenGLBuffer::Access access)
qWarning("QOpenGLBuffer::map(): buffer not created");
#endif
if (!d->guard || !d->guard->id())
- return 0;
+ return nullptr;
if (d->funcs->hasOpenGLExtension(QOpenGLExtensions::MapBufferRange)) {
- QOpenGLBuffer::RangeAccessFlags rangeAccess = 0;
+ QOpenGLBuffer::RangeAccessFlags rangeAccess;
switch (access) {
case QOpenGLBuffer::ReadOnly:
rangeAccess = QOpenGLBuffer::RangeRead;
@@ -586,7 +586,7 @@ void *QOpenGLBuffer::mapRange(int offset, int count, QOpenGLBuffer::RangeAccessF
qWarning("QOpenGLBuffer::mapRange(): buffer not created");
#endif
if (!d->guard || !d->guard->id())
- return 0;
+ return nullptr;
return d->funcs->glMapBufferRange(d->type, offset, count, access);
}
diff --git a/src/gui/opengl/qopenglcustomshaderstage.cpp b/src/gui/opengl/qopenglcustomshaderstage.cpp
index baa44f86b0..a95a0a5767 100644
--- a/src/gui/opengl/qopenglcustomshaderstage.cpp
+++ b/src/gui/opengl/qopenglcustomshaderstage.cpp
@@ -48,7 +48,7 @@ class QOpenGLCustomShaderStagePrivate
{
public:
QOpenGLCustomShaderStagePrivate() :
- m_manager(0) {}
+ m_manager(nullptr) {}
QPointer<QOpenGLEngineShaderManager> m_manager;
QByteArray m_source;
@@ -110,8 +110,8 @@ void QOpenGLCustomShaderStage::removeFromPainter(QPainter* p)
// Just set the stage to null, don't call removeCustomStage().
// This should leave the program in a compiled/linked state
// if the next custom shader stage is this one again.
- d->m_manager->setCustomStage(0);
- d->m_manager = 0;
+ d->m_manager->setCustomStage(nullptr);
+ d->m_manager = nullptr;
}
QByteArray QOpenGLCustomShaderStage::source() const
@@ -125,7 +125,7 @@ QByteArray QOpenGLCustomShaderStage::source() const
void QOpenGLCustomShaderStage::setInactive()
{
Q_D(QOpenGLCustomShaderStage);
- d->m_manager = 0;
+ d->m_manager = nullptr;
}
void QOpenGLCustomShaderStage::setSource(const QByteArray& s)
diff --git a/src/gui/opengl/qopengldebug.cpp b/src/gui/opengl/qopengldebug.cpp
index 462a4fdb3b..310006feaf 100644
--- a/src/gui/opengl/qopengldebug.cpp
+++ b/src/gui/opengl/qopengldebug.cpp
@@ -1108,14 +1108,14 @@ public:
\internal
*/
QOpenGLDebugLoggerPrivate::QOpenGLDebugLoggerPrivate()
- : glDebugMessageControl(0),
- glDebugMessageInsert(0),
- glDebugMessageCallback(0),
- glGetDebugMessageLog(0),
- glPushDebugGroup(0),
- glPopDebugGroup(0),
- oldDebugCallbackFunction(0),
- context(0),
+ : glDebugMessageControl(nullptr),
+ glDebugMessageInsert(nullptr),
+ glDebugMessageCallback(nullptr),
+ glGetDebugMessageLog(nullptr),
+ glPushDebugGroup(nullptr),
+ glPopDebugGroup(nullptr),
+ oldDebugCallbackFunction(nullptr),
+ context(nullptr),
maxMessageLength(0),
loggingMode(QOpenGLDebugLogger::AsynchronousLogging),
initialized(false),
@@ -1228,7 +1228,7 @@ void QOpenGLDebugLoggerPrivate::controlDebugMessages(QOpenGLDebugMessage::Source
const GLsizei idCount = ids.count();
// The GL_KHR_debug extension says that if idCount is 0, idPtr must be ignored.
// Unfortunately, some bugged drivers do NOT ignore it, so pass NULL in case.
- const GLuint * const idPtr = idCount ? ids.constData() : 0;
+ const GLuint * const idPtr = idCount ? ids.constData() : nullptr;
for (GLenum source : glSources)
for (GLenum type : glTypes)
@@ -1247,7 +1247,7 @@ void QOpenGLDebugLoggerPrivate::_q_contextAboutToBeDestroyed()
// Save the current context and its surface in case we need to set them back
QOpenGLContext *currentContext = QOpenGLContext::currentContext();
- QSurface *currentSurface = 0;
+ QSurface *currentSurface = nullptr;
QScopedPointer<QOffscreenSurface> offscreenSurface;
@@ -1275,7 +1275,7 @@ void QOpenGLDebugLoggerPrivate::_q_contextAboutToBeDestroyed()
}
QObject::disconnect(context, SIGNAL(aboutToBeDestroyed()), q, SLOT(_q_contextAboutToBeDestroyed()));
- context = 0;
+ context = nullptr;
initialized = false;
}
@@ -1356,7 +1356,7 @@ bool QOpenGLDebugLogger::initialize()
disconnect(d->context, SIGNAL(aboutToBeDestroyed()), this, SLOT(_q_contextAboutToBeDestroyed()));
d->initialized = false;
- d->context = 0;
+ d->context = nullptr;
if (!context->hasExtension(QByteArrayLiteral("GL_KHR_debug")))
return false;
diff --git a/src/gui/opengl/qopenglengineshadermanager.cpp b/src/gui/opengl/qopenglengineshadermanager.cpp
index 1e5a10c99c..a569975486 100644
--- a/src/gui/opengl/qopenglengineshadermanager.cpp
+++ b/src/gui/opengl/qopenglengineshadermanager.cpp
@@ -72,7 +72,7 @@ public:
void invalidateResource() override
{
delete m_shaders;
- m_shaders = 0;
+ m_shaders = nullptr;
}
void freeResource(QOpenGLContext *) override
@@ -94,7 +94,7 @@ public:
shaders = new QOpenGLMultiGroupSharedResource;
QOpenGLEngineSharedShadersResource *resource =
shaders->value<QOpenGLEngineSharedShadersResource>(context);
- return resource ? resource->shaders() : 0;
+ return resource ? resource->shaders() : nullptr;
}
private:
@@ -116,8 +116,8 @@ const char* QOpenGLEngineSharedShaders::qShaderSnippets[] = {
};
QOpenGLEngineSharedShaders::QOpenGLEngineSharedShaders(QOpenGLContext* context)
- : blitShaderProg(0)
- , simpleShaderProg(0)
+ : blitShaderProg(nullptr)
+ , simpleShaderProg(nullptr)
{
/*
@@ -341,12 +341,12 @@ QOpenGLEngineSharedShaders::~QOpenGLEngineSharedShaders()
if (blitShaderProg) {
delete blitShaderProg;
- blitShaderProg = 0;
+ blitShaderProg = nullptr;
}
if (simpleShaderProg) {
delete simpleShaderProg;
- simpleShaderProg = 0;
+ simpleShaderProg = nullptr;
}
}
@@ -507,8 +507,8 @@ QOpenGLEngineShaderManager::QOpenGLEngineShaderManager(QOpenGLContext* context)
opacityMode(NoOpacity),
maskType(NoMask),
compositionMode(QPainter::CompositionMode_SourceOver),
- customSrcStage(0),
- currentShaderProg(0)
+ customSrcStage(nullptr),
+ currentShaderProg(nullptr)
{
sharedShaders = QOpenGLEngineSharedShaders::shadersForContext(context);
}
@@ -627,7 +627,7 @@ void QOpenGLEngineShaderManager::removeCustomStage()
{
if (customSrcStage)
customSrcStage->setInactive();
- customSrcStage = 0;
+ customSrcStage = nullptr;
shaderProgNeedsChanging = true;
}
@@ -684,7 +684,7 @@ bool QOpenGLEngineShaderManager::useCorrectShaderProg()
if (!shaderProgNeedsChanging)
return false;
- bool useCustomSrc = customSrcStage != 0;
+ bool useCustomSrc = customSrcStage != nullptr;
if (useCustomSrc && srcPixelType != QOpenGLEngineShaderManager::ImageSrc && srcPixelType != Qt::TexturePattern) {
useCustomSrc = false;
qWarning("QOpenGLEngineShaderManager - Ignoring custom shader stage for non image src");
diff --git a/src/gui/opengl/qopenglframebufferobject.cpp b/src/gui/opengl/qopenglframebufferobject.cpp
index bb0dbdc9bd..d7a6d32218 100644
--- a/src/gui/opengl/qopenglframebufferobject.cpp
+++ b/src/gui/opengl/qopenglframebufferobject.cpp
@@ -551,7 +551,7 @@ void QOpenGLFramebufferObjectPrivate::initTexture(int idx)
pixelType = GL_UNSIGNED_SHORT;
funcs.glTexImage2D(target, 0, color.internalFormat, color.size.width(), color.size.height(), 0,
- GL_RGBA, pixelType, NULL);
+ GL_RGBA, pixelType, nullptr);
if (format.mipmap()) {
int width = color.size.width();
int height = color.size.height();
@@ -561,7 +561,7 @@ void QOpenGLFramebufferObjectPrivate::initTexture(int idx)
height = qMax(1, height >> 1);
++level;
funcs.glTexImage2D(target, level, color.internalFormat, width, height, 0,
- GL_RGBA, pixelType, NULL);
+ GL_RGBA, pixelType, nullptr);
}
}
funcs.glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0 + idx,
@@ -640,8 +640,8 @@ void QOpenGLFramebufferObjectPrivate::initDepthStencilAttachments(QOpenGLContext
stencil_buffer_guard->free();
}
- depth_buffer_guard = 0;
- stencil_buffer_guard = 0;
+ depth_buffer_guard = nullptr;
+ stencil_buffer_guard = nullptr;
GLuint depth_buffer = 0;
GLuint stencil_buffer = 0;
@@ -1284,7 +1284,7 @@ GLuint QOpenGLFramebufferObject::takeTexture(int colorAttachmentIndex)
id = guard ? guard->id() : 0;
// Do not call free() on texture_guard, just null it out.
// This way the texture will not be deleted when the guard is destroyed.
- guard = 0;
+ guard = nullptr;
}
return id;
}
@@ -1564,7 +1564,7 @@ bool QOpenGLFramebufferObject::bindDefault()
qWarning("QOpenGLFramebufferObject::bindDefault() called without current context.");
#endif
- return ctx != 0;
+ return ctx != nullptr;
}
/*!
diff --git a/src/gui/opengl/qopenglfunctions.cpp b/src/gui/opengl/qopenglfunctions.cpp
index bc3a4f7c1d..11ca802ee6 100644
--- a/src/gui/opengl/qopenglfunctions.cpp
+++ b/src/gui/opengl/qopenglfunctions.cpp
@@ -182,7 +182,7 @@ struct QOpenGLFunctionsPrivateEx : public QOpenGLExtensionsPrivate, public QOpen
Q_GLOBAL_STATIC(QOpenGLMultiGroupSharedResource, qt_gl_functions_resource)
-static QOpenGLFunctionsPrivateEx *qt_gl_functions(QOpenGLContext *context = 0)
+static QOpenGLFunctionsPrivateEx *qt_gl_functions(QOpenGLContext *context = nullptr)
{
if (!context)
context = QOpenGLContext::currentContext();
@@ -200,7 +200,7 @@ static QOpenGLFunctionsPrivateEx *qt_gl_functions(QOpenGLContext *context = 0)
\sa initializeOpenGLFunctions()
*/
QOpenGLFunctions::QOpenGLFunctions()
- : d_ptr(0)
+ : d_ptr(nullptr)
{
}
@@ -218,7 +218,7 @@ QOpenGLFunctions::QOpenGLFunctions()
\sa initializeOpenGLFunctions()
*/
QOpenGLFunctions::QOpenGLFunctions(QOpenGLContext *context)
- : d_ptr(0)
+ : d_ptr(nullptr)
{
if (context && QOpenGLContextGroup::currentContextGroup() == context->shareGroup())
d_ptr = qt_gl_functions(context);
@@ -493,7 +493,7 @@ QOpenGLFunctions::OpenGLFeatures QOpenGLFunctions::openGLFeatures() const
{
QOpenGLFunctionsPrivateEx *d = static_cast<QOpenGLFunctionsPrivateEx *>(d_ptr);
if (!d)
- return 0;
+ return { };
if (d->m_features == -1)
d->m_features = qt_gl_resolve_features();
return QOpenGLFunctions::OpenGLFeatures(d->m_features);
@@ -531,7 +531,7 @@ QOpenGLExtensions::OpenGLExtensions QOpenGLExtensions::openGLExtensions()
{
QOpenGLFunctionsPrivateEx *d = static_cast<QOpenGLFunctionsPrivateEx *>(d_ptr);
if (!d)
- return 0;
+ return { };
if (d->m_extensions == -1)
d->m_extensions = qt_gl_resolve_extensions();
return QOpenGLExtensions::OpenGLExtensions(d->m_extensions);
diff --git a/src/gui/opengl/qopenglfunctions_1_0.cpp b/src/gui/opengl/qopenglfunctions_1_0.cpp
index f017c68fd9..f9d93ce210 100644
--- a/src/gui/opengl/qopenglfunctions_1_0.cpp
+++ b/src/gui/opengl/qopenglfunctions_1_0.cpp
@@ -67,8 +67,8 @@ QT_BEGIN_NAMESPACE
QOpenGLFunctions_1_0::QOpenGLFunctions_1_0()
: QAbstractOpenGLFunctions()
- , d_1_0_Core(0)
- , d_1_0_Deprecated(0)
+ , d_1_0_Core(nullptr)
+ , d_1_0_Deprecated(nullptr)
{
}
@@ -98,7 +98,7 @@ bool QOpenGLFunctions_1_0::initializeOpenGLFunctions()
{
// Associate with private implementation, creating if necessary
// Function pointers in the backends are resolved at creation time
- QOpenGLVersionFunctionsBackend* d = 0;
+ QOpenGLVersionFunctionsBackend* d = nullptr;
d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus());
d_1_0_Core = static_cast<QOpenGLFunctions_1_0_CoreBackend*>(d);
d->refs.ref();
diff --git a/src/gui/opengl/qopenglfunctions_1_1.cpp b/src/gui/opengl/qopenglfunctions_1_1.cpp
index a819d499f8..b0f7538d48 100644
--- a/src/gui/opengl/qopenglfunctions_1_1.cpp
+++ b/src/gui/opengl/qopenglfunctions_1_1.cpp
@@ -67,10 +67,10 @@ QT_BEGIN_NAMESPACE
QOpenGLFunctions_1_1::QOpenGLFunctions_1_1()
: QAbstractOpenGLFunctions()
- , d_1_0_Core(0)
- , d_1_1_Core(0)
- , d_1_0_Deprecated(0)
- , d_1_1_Deprecated(0)
+ , d_1_0_Core(nullptr)
+ , d_1_1_Core(nullptr)
+ , d_1_0_Deprecated(nullptr)
+ , d_1_1_Deprecated(nullptr)
{
}
@@ -108,7 +108,7 @@ bool QOpenGLFunctions_1_1::initializeOpenGLFunctions()
{
// Associate with private implementation, creating if necessary
// Function pointers in the backends are resolved at creation time
- QOpenGLVersionFunctionsBackend* d = 0;
+ QOpenGLVersionFunctionsBackend* d = nullptr;
d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus());
d_1_0_Core = static_cast<QOpenGLFunctions_1_0_CoreBackend*>(d);
d->refs.ref();
diff --git a/src/gui/opengl/qopenglfunctions_1_2.cpp b/src/gui/opengl/qopenglfunctions_1_2.cpp
index 61db2b4e0f..5f137b0237 100644
--- a/src/gui/opengl/qopenglfunctions_1_2.cpp
+++ b/src/gui/opengl/qopenglfunctions_1_2.cpp
@@ -67,12 +67,12 @@ QT_BEGIN_NAMESPACE
QOpenGLFunctions_1_2::QOpenGLFunctions_1_2()
: QAbstractOpenGLFunctions()
- , d_1_0_Core(0)
- , d_1_1_Core(0)
- , d_1_2_Core(0)
- , d_1_0_Deprecated(0)
- , d_1_1_Deprecated(0)
- , d_1_2_Deprecated(0)
+ , d_1_0_Core(nullptr)
+ , d_1_1_Core(nullptr)
+ , d_1_2_Core(nullptr)
+ , d_1_0_Deprecated(nullptr)
+ , d_1_1_Deprecated(nullptr)
+ , d_1_2_Deprecated(nullptr)
{
}
@@ -118,7 +118,7 @@ bool QOpenGLFunctions_1_2::initializeOpenGLFunctions()
{
// Associate with private implementation, creating if necessary
// Function pointers in the backends are resolved at creation time
- QOpenGLVersionFunctionsBackend* d = 0;
+ QOpenGLVersionFunctionsBackend* d = nullptr;
d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus());
d_1_0_Core = static_cast<QOpenGLFunctions_1_0_CoreBackend*>(d);
d->refs.ref();
diff --git a/src/gui/opengl/qopenglfunctions_1_3.cpp b/src/gui/opengl/qopenglfunctions_1_3.cpp
index acc223ea74..0b5ff2fee5 100644
--- a/src/gui/opengl/qopenglfunctions_1_3.cpp
+++ b/src/gui/opengl/qopenglfunctions_1_3.cpp
@@ -67,14 +67,14 @@ QT_BEGIN_NAMESPACE
QOpenGLFunctions_1_3::QOpenGLFunctions_1_3()
: QAbstractOpenGLFunctions()
- , d_1_0_Core(0)
- , d_1_1_Core(0)
- , d_1_2_Core(0)
- , d_1_3_Core(0)
- , d_1_0_Deprecated(0)
- , d_1_1_Deprecated(0)
- , d_1_2_Deprecated(0)
- , d_1_3_Deprecated(0)
+ , d_1_0_Core(nullptr)
+ , d_1_1_Core(nullptr)
+ , d_1_2_Core(nullptr)
+ , d_1_3_Core(nullptr)
+ , d_1_0_Deprecated(nullptr)
+ , d_1_1_Deprecated(nullptr)
+ , d_1_2_Deprecated(nullptr)
+ , d_1_3_Deprecated(nullptr)
{
}
@@ -128,7 +128,7 @@ bool QOpenGLFunctions_1_3::initializeOpenGLFunctions()
{
// Associate with private implementation, creating if necessary
// Function pointers in the backends are resolved at creation time
- QOpenGLVersionFunctionsBackend* d = 0;
+ QOpenGLVersionFunctionsBackend* d = nullptr;
d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus());
d_1_0_Core = static_cast<QOpenGLFunctions_1_0_CoreBackend*>(d);
d->refs.ref();
diff --git a/src/gui/opengl/qopenglfunctions_1_4.cpp b/src/gui/opengl/qopenglfunctions_1_4.cpp
index 8e2349dc08..9419c1aa85 100644
--- a/src/gui/opengl/qopenglfunctions_1_4.cpp
+++ b/src/gui/opengl/qopenglfunctions_1_4.cpp
@@ -67,16 +67,16 @@ QT_BEGIN_NAMESPACE
QOpenGLFunctions_1_4::QOpenGLFunctions_1_4()
: QAbstractOpenGLFunctions()
- , d_1_0_Core(0)
- , d_1_1_Core(0)
- , d_1_2_Core(0)
- , d_1_3_Core(0)
- , d_1_4_Core(0)
- , d_1_0_Deprecated(0)
- , d_1_1_Deprecated(0)
- , d_1_2_Deprecated(0)
- , d_1_3_Deprecated(0)
- , d_1_4_Deprecated(0)
+ , d_1_0_Core(nullptr)
+ , d_1_1_Core(nullptr)
+ , d_1_2_Core(nullptr)
+ , d_1_3_Core(nullptr)
+ , d_1_4_Core(nullptr)
+ , d_1_0_Deprecated(nullptr)
+ , d_1_1_Deprecated(nullptr)
+ , d_1_2_Deprecated(nullptr)
+ , d_1_3_Deprecated(nullptr)
+ , d_1_4_Deprecated(nullptr)
{
}
@@ -138,7 +138,7 @@ bool QOpenGLFunctions_1_4::initializeOpenGLFunctions()
{
// Associate with private implementation, creating if necessary
// Function pointers in the backends are resolved at creation time
- QOpenGLVersionFunctionsBackend* d = 0;
+ QOpenGLVersionFunctionsBackend* d = nullptr;
d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus());
d_1_0_Core = static_cast<QOpenGLFunctions_1_0_CoreBackend*>(d);
d->refs.ref();
diff --git a/src/gui/opengl/qopenglfunctions_1_5.cpp b/src/gui/opengl/qopenglfunctions_1_5.cpp
index cd81cf8b35..3fa7668a36 100644
--- a/src/gui/opengl/qopenglfunctions_1_5.cpp
+++ b/src/gui/opengl/qopenglfunctions_1_5.cpp
@@ -67,17 +67,17 @@ QT_BEGIN_NAMESPACE
QOpenGLFunctions_1_5::QOpenGLFunctions_1_5()
: QAbstractOpenGLFunctions()
- , d_1_0_Core(0)
- , d_1_1_Core(0)
- , d_1_2_Core(0)
- , d_1_3_Core(0)
- , d_1_4_Core(0)
- , d_1_5_Core(0)
- , d_1_0_Deprecated(0)
- , d_1_1_Deprecated(0)
- , d_1_2_Deprecated(0)
- , d_1_3_Deprecated(0)
- , d_1_4_Deprecated(0)
+ , d_1_0_Core(nullptr)
+ , d_1_1_Core(nullptr)
+ , d_1_2_Core(nullptr)
+ , d_1_3_Core(nullptr)
+ , d_1_4_Core(nullptr)
+ , d_1_5_Core(nullptr)
+ , d_1_0_Deprecated(nullptr)
+ , d_1_1_Deprecated(nullptr)
+ , d_1_2_Deprecated(nullptr)
+ , d_1_3_Deprecated(nullptr)
+ , d_1_4_Deprecated(nullptr)
{
}
@@ -143,7 +143,7 @@ bool QOpenGLFunctions_1_5::initializeOpenGLFunctions()
{
// Associate with private implementation, creating if necessary
// Function pointers in the backends are resolved at creation time
- QOpenGLVersionFunctionsBackend* d = 0;
+ QOpenGLVersionFunctionsBackend* d = nullptr;
d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus());
d_1_0_Core = static_cast<QOpenGLFunctions_1_0_CoreBackend*>(d);
d->refs.ref();
diff --git a/src/gui/opengl/qopenglfunctions_2_0.cpp b/src/gui/opengl/qopenglfunctions_2_0.cpp
index 97a8c72fa6..29eb055a1d 100644
--- a/src/gui/opengl/qopenglfunctions_2_0.cpp
+++ b/src/gui/opengl/qopenglfunctions_2_0.cpp
@@ -67,18 +67,18 @@ QT_BEGIN_NAMESPACE
QOpenGLFunctions_2_0::QOpenGLFunctions_2_0()
: QAbstractOpenGLFunctions()
- , d_1_0_Core(0)
- , d_1_1_Core(0)
- , d_1_2_Core(0)
- , d_1_3_Core(0)
- , d_1_4_Core(0)
- , d_1_5_Core(0)
- , d_2_0_Core(0)
- , d_1_0_Deprecated(0)
- , d_1_1_Deprecated(0)
- , d_1_2_Deprecated(0)
- , d_1_3_Deprecated(0)
- , d_1_4_Deprecated(0)
+ , d_1_0_Core(nullptr)
+ , d_1_1_Core(nullptr)
+ , d_1_2_Core(nullptr)
+ , d_1_3_Core(nullptr)
+ , d_1_4_Core(nullptr)
+ , d_1_5_Core(nullptr)
+ , d_2_0_Core(nullptr)
+ , d_1_0_Deprecated(nullptr)
+ , d_1_1_Deprecated(nullptr)
+ , d_1_2_Deprecated(nullptr)
+ , d_1_3_Deprecated(nullptr)
+ , d_1_4_Deprecated(nullptr)
, m_reserved_2_0_Deprecated(nullptr)
{
}
@@ -149,7 +149,7 @@ bool QOpenGLFunctions_2_0::initializeOpenGLFunctions()
{
// Associate with private implementation, creating if necessary
// Function pointers in the backends are resolved at creation time
- QOpenGLVersionFunctionsBackend* d = 0;
+ QOpenGLVersionFunctionsBackend* d = nullptr;
d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus());
d_1_0_Core = static_cast<QOpenGLFunctions_1_0_CoreBackend*>(d);
d->refs.ref();
diff --git a/src/gui/opengl/qopenglfunctions_2_1.cpp b/src/gui/opengl/qopenglfunctions_2_1.cpp
index 00bdc1bbba..8a7170dd7d 100644
--- a/src/gui/opengl/qopenglfunctions_2_1.cpp
+++ b/src/gui/opengl/qopenglfunctions_2_1.cpp
@@ -67,19 +67,19 @@ QT_BEGIN_NAMESPACE
QOpenGLFunctions_2_1::QOpenGLFunctions_2_1()
: QAbstractOpenGLFunctions()
- , d_1_0_Core(0)
- , d_1_1_Core(0)
- , d_1_2_Core(0)
- , d_1_3_Core(0)
- , d_1_4_Core(0)
- , d_1_5_Core(0)
- , d_2_0_Core(0)
- , d_2_1_Core(0)
- , d_1_0_Deprecated(0)
- , d_1_1_Deprecated(0)
- , d_1_2_Deprecated(0)
- , d_1_3_Deprecated(0)
- , d_1_4_Deprecated(0)
+ , d_1_0_Core(nullptr)
+ , d_1_1_Core(nullptr)
+ , d_1_2_Core(nullptr)
+ , d_1_3_Core(nullptr)
+ , d_1_4_Core(nullptr)
+ , d_1_5_Core(nullptr)
+ , d_2_0_Core(nullptr)
+ , d_2_1_Core(nullptr)
+ , d_1_0_Deprecated(nullptr)
+ , d_1_1_Deprecated(nullptr)
+ , d_1_2_Deprecated(nullptr)
+ , d_1_3_Deprecated(nullptr)
+ , d_1_4_Deprecated(nullptr)
, m_reserved_2_0_Deprecated(nullptr)
{
}
@@ -154,7 +154,7 @@ bool QOpenGLFunctions_2_1::initializeOpenGLFunctions()
{
// Associate with private implementation, creating if necessary
// Function pointers in the backends are resolved at creation time
- QOpenGLVersionFunctionsBackend* d = 0;
+ QOpenGLVersionFunctionsBackend* d = nullptr;
d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus());
d_1_0_Core = static_cast<QOpenGLFunctions_1_0_CoreBackend*>(d);
d->refs.ref();
diff --git a/src/gui/opengl/qopenglfunctions_3_0.cpp b/src/gui/opengl/qopenglfunctions_3_0.cpp
index 2c239dba1f..7d0e900659 100644
--- a/src/gui/opengl/qopenglfunctions_3_0.cpp
+++ b/src/gui/opengl/qopenglfunctions_3_0.cpp
@@ -67,20 +67,20 @@ QT_BEGIN_NAMESPACE
QOpenGLFunctions_3_0::QOpenGLFunctions_3_0()
: QAbstractOpenGLFunctions()
- , d_1_0_Core(0)
- , d_1_1_Core(0)
- , d_1_2_Core(0)
- , d_1_3_Core(0)
- , d_1_4_Core(0)
- , d_1_5_Core(0)
- , d_2_0_Core(0)
- , d_2_1_Core(0)
- , d_3_0_Core(0)
- , d_1_0_Deprecated(0)
- , d_1_1_Deprecated(0)
- , d_1_2_Deprecated(0)
- , d_1_3_Deprecated(0)
- , d_1_4_Deprecated(0)
+ , d_1_0_Core(nullptr)
+ , d_1_1_Core(nullptr)
+ , d_1_2_Core(nullptr)
+ , d_1_3_Core(nullptr)
+ , d_1_4_Core(nullptr)
+ , d_1_5_Core(nullptr)
+ , d_2_0_Core(nullptr)
+ , d_2_1_Core(nullptr)
+ , d_3_0_Core(nullptr)
+ , d_1_0_Deprecated(nullptr)
+ , d_1_1_Deprecated(nullptr)
+ , d_1_2_Deprecated(nullptr)
+ , d_1_3_Deprecated(nullptr)
+ , d_1_4_Deprecated(nullptr)
, m_reserved_2_0_Deprecated(nullptr)
, m_reserved_3_0_Deprecated(nullptr)
{
@@ -160,7 +160,7 @@ bool QOpenGLFunctions_3_0::initializeOpenGLFunctions()
{
// Associate with private implementation, creating if necessary
// Function pointers in the backends are resolved at creation time
- QOpenGLVersionFunctionsBackend* d = 0;
+ QOpenGLVersionFunctionsBackend* d = nullptr;
d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus());
d_1_0_Core = static_cast<QOpenGLFunctions_1_0_CoreBackend*>(d);
d->refs.ref();
diff --git a/src/gui/opengl/qopenglfunctions_3_1.cpp b/src/gui/opengl/qopenglfunctions_3_1.cpp
index f62f555c8e..c25b124af8 100644
--- a/src/gui/opengl/qopenglfunctions_3_1.cpp
+++ b/src/gui/opengl/qopenglfunctions_3_1.cpp
@@ -67,16 +67,16 @@ QT_BEGIN_NAMESPACE
QOpenGLFunctions_3_1::QOpenGLFunctions_3_1()
: QAbstractOpenGLFunctions()
- , d_1_0_Core(0)
- , d_1_1_Core(0)
- , d_1_2_Core(0)
- , d_1_3_Core(0)
- , d_1_4_Core(0)
- , d_1_5_Core(0)
- , d_2_0_Core(0)
- , d_2_1_Core(0)
- , d_3_0_Core(0)
- , d_3_1_Core(0)
+ , d_1_0_Core(nullptr)
+ , d_1_1_Core(nullptr)
+ , d_1_2_Core(nullptr)
+ , d_1_3_Core(nullptr)
+ , d_1_4_Core(nullptr)
+ , d_1_5_Core(nullptr)
+ , d_2_0_Core(nullptr)
+ , d_2_1_Core(nullptr)
+ , d_3_0_Core(nullptr)
+ , d_3_1_Core(nullptr)
{
}
@@ -138,7 +138,7 @@ bool QOpenGLFunctions_3_1::initializeOpenGLFunctions()
{
// Associate with private implementation, creating if necessary
// Function pointers in the backends are resolved at creation time
- QOpenGLVersionFunctionsBackend* d = 0;
+ QOpenGLVersionFunctionsBackend* d = nullptr;
d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus());
d_1_0_Core = static_cast<QOpenGLFunctions_1_0_CoreBackend*>(d);
d->refs.ref();
diff --git a/src/gui/opengl/qopenglfunctions_3_2_compatibility.cpp b/src/gui/opengl/qopenglfunctions_3_2_compatibility.cpp
index ba7be2d893..3e4fd96dc2 100644
--- a/src/gui/opengl/qopenglfunctions_3_2_compatibility.cpp
+++ b/src/gui/opengl/qopenglfunctions_3_2_compatibility.cpp
@@ -67,22 +67,22 @@ QT_BEGIN_NAMESPACE
QOpenGLFunctions_3_2_Compatibility::QOpenGLFunctions_3_2_Compatibility()
: QAbstractOpenGLFunctions()
- , d_1_0_Core(0)
- , d_1_1_Core(0)
- , d_1_2_Core(0)
- , d_1_3_Core(0)
- , d_1_4_Core(0)
- , d_1_5_Core(0)
- , d_2_0_Core(0)
- , d_2_1_Core(0)
- , d_3_0_Core(0)
- , d_3_1_Core(0)
- , d_3_2_Core(0)
- , d_1_0_Deprecated(0)
- , d_1_1_Deprecated(0)
- , d_1_2_Deprecated(0)
- , d_1_3_Deprecated(0)
- , d_1_4_Deprecated(0)
+ , d_1_0_Core(nullptr)
+ , d_1_1_Core(nullptr)
+ , d_1_2_Core(nullptr)
+ , d_1_3_Core(nullptr)
+ , d_1_4_Core(nullptr)
+ , d_1_5_Core(nullptr)
+ , d_2_0_Core(nullptr)
+ , d_2_1_Core(nullptr)
+ , d_3_0_Core(nullptr)
+ , d_3_1_Core(nullptr)
+ , d_3_2_Core(nullptr)
+ , d_1_0_Deprecated(nullptr)
+ , d_1_1_Deprecated(nullptr)
+ , d_1_2_Deprecated(nullptr)
+ , d_1_3_Deprecated(nullptr)
+ , d_1_4_Deprecated(nullptr)
, m_reserved_2_0_Deprecated(nullptr)
, m_reserved_3_0_Deprecated(nullptr)
{
@@ -170,7 +170,7 @@ bool QOpenGLFunctions_3_2_Compatibility::initializeOpenGLFunctions()
{
// Associate with private implementation, creating if necessary
// Function pointers in the backends are resolved at creation time
- QOpenGLVersionFunctionsBackend* d = 0;
+ QOpenGLVersionFunctionsBackend* d = nullptr;
d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus());
d_1_0_Core = static_cast<QOpenGLFunctions_1_0_CoreBackend*>(d);
d->refs.ref();
diff --git a/src/gui/opengl/qopenglfunctions_3_2_core.cpp b/src/gui/opengl/qopenglfunctions_3_2_core.cpp
index 4c1e3eb3da..ea89fc9e48 100644
--- a/src/gui/opengl/qopenglfunctions_3_2_core.cpp
+++ b/src/gui/opengl/qopenglfunctions_3_2_core.cpp
@@ -67,17 +67,17 @@ QT_BEGIN_NAMESPACE
QOpenGLFunctions_3_2_Core::QOpenGLFunctions_3_2_Core()
: QAbstractOpenGLFunctions()
- , d_1_0_Core(0)
- , d_1_1_Core(0)
- , d_1_2_Core(0)
- , d_1_3_Core(0)
- , d_1_4_Core(0)
- , d_1_5_Core(0)
- , d_2_0_Core(0)
- , d_2_1_Core(0)
- , d_3_0_Core(0)
- , d_3_1_Core(0)
- , d_3_2_Core(0)
+ , d_1_0_Core(nullptr)
+ , d_1_1_Core(nullptr)
+ , d_1_2_Core(nullptr)
+ , d_1_3_Core(nullptr)
+ , d_1_4_Core(nullptr)
+ , d_1_5_Core(nullptr)
+ , d_2_0_Core(nullptr)
+ , d_2_1_Core(nullptr)
+ , d_3_0_Core(nullptr)
+ , d_3_1_Core(nullptr)
+ , d_3_2_Core(nullptr)
{
}
@@ -143,7 +143,7 @@ bool QOpenGLFunctions_3_2_Core::initializeOpenGLFunctions()
{
// Associate with private implementation, creating if necessary
// Function pointers in the backends are resolved at creation time
- QOpenGLVersionFunctionsBackend* d = 0;
+ QOpenGLVersionFunctionsBackend* d = nullptr;
d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus());
d_1_0_Core = static_cast<QOpenGLFunctions_1_0_CoreBackend*>(d);
d->refs.ref();
diff --git a/src/gui/opengl/qopenglfunctions_3_3_compatibility.cpp b/src/gui/opengl/qopenglfunctions_3_3_compatibility.cpp
index c750c6e0cc..a26d7d99b1 100644
--- a/src/gui/opengl/qopenglfunctions_3_3_compatibility.cpp
+++ b/src/gui/opengl/qopenglfunctions_3_3_compatibility.cpp
@@ -67,25 +67,25 @@ QT_BEGIN_NAMESPACE
QOpenGLFunctions_3_3_Compatibility::QOpenGLFunctions_3_3_Compatibility()
: QAbstractOpenGLFunctions()
- , d_1_0_Core(0)
- , d_1_1_Core(0)
- , d_1_2_Core(0)
- , d_1_3_Core(0)
- , d_1_4_Core(0)
- , d_1_5_Core(0)
- , d_2_0_Core(0)
- , d_2_1_Core(0)
- , d_3_0_Core(0)
- , d_3_1_Core(0)
- , d_3_2_Core(0)
- , d_3_3_Core(0)
- , d_1_0_Deprecated(0)
- , d_1_1_Deprecated(0)
- , d_1_2_Deprecated(0)
- , d_1_3_Deprecated(0)
- , d_1_4_Deprecated(0)
+ , d_1_0_Core(nullptr)
+ , d_1_1_Core(nullptr)
+ , d_1_2_Core(nullptr)
+ , d_1_3_Core(nullptr)
+ , d_1_4_Core(nullptr)
+ , d_1_5_Core(nullptr)
+ , d_2_0_Core(nullptr)
+ , d_2_1_Core(nullptr)
+ , d_3_0_Core(nullptr)
+ , d_3_1_Core(nullptr)
+ , d_3_2_Core(nullptr)
+ , d_3_3_Core(nullptr)
+ , d_1_0_Deprecated(nullptr)
+ , d_1_1_Deprecated(nullptr)
+ , d_1_2_Deprecated(nullptr)
+ , d_1_3_Deprecated(nullptr)
+ , d_1_4_Deprecated(nullptr)
, m_reserved_2_0_Deprecated(nullptr)
- , d_3_3_Deprecated(0)
+ , d_3_3_Deprecated(nullptr)
{
}
@@ -179,7 +179,7 @@ bool QOpenGLFunctions_3_3_Compatibility::initializeOpenGLFunctions()
{
// Associate with private implementation, creating if necessary
// Function pointers in the backends are resolved at creation time
- QOpenGLVersionFunctionsBackend* d = 0;
+ QOpenGLVersionFunctionsBackend* d = nullptr;
d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus());
d_1_0_Core = static_cast<QOpenGLFunctions_1_0_CoreBackend*>(d);
d->refs.ref();
diff --git a/src/gui/opengl/qopenglfunctions_3_3_core.cpp b/src/gui/opengl/qopenglfunctions_3_3_core.cpp
index 5723509e32..277ad1eb14 100644
--- a/src/gui/opengl/qopenglfunctions_3_3_core.cpp
+++ b/src/gui/opengl/qopenglfunctions_3_3_core.cpp
@@ -67,18 +67,18 @@ QT_BEGIN_NAMESPACE
QOpenGLFunctions_3_3_Core::QOpenGLFunctions_3_3_Core()
: QAbstractOpenGLFunctions()
- , d_1_0_Core(0)
- , d_1_1_Core(0)
- , d_1_2_Core(0)
- , d_1_3_Core(0)
- , d_1_4_Core(0)
- , d_1_5_Core(0)
- , d_2_0_Core(0)
- , d_2_1_Core(0)
- , d_3_0_Core(0)
- , d_3_1_Core(0)
- , d_3_2_Core(0)
- , d_3_3_Core(0)
+ , d_1_0_Core(nullptr)
+ , d_1_1_Core(nullptr)
+ , d_1_2_Core(nullptr)
+ , d_1_3_Core(nullptr)
+ , d_1_4_Core(nullptr)
+ , d_1_5_Core(nullptr)
+ , d_2_0_Core(nullptr)
+ , d_2_1_Core(nullptr)
+ , d_3_0_Core(nullptr)
+ , d_3_1_Core(nullptr)
+ , d_3_2_Core(nullptr)
+ , d_3_3_Core(nullptr)
{
}
@@ -148,7 +148,7 @@ bool QOpenGLFunctions_3_3_Core::initializeOpenGLFunctions()
{
// Associate with private implementation, creating if necessary
// Function pointers in the backends are resolved at creation time
- QOpenGLVersionFunctionsBackend* d = 0;
+ QOpenGLVersionFunctionsBackend* d = nullptr;
d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus());
d_1_0_Core = static_cast<QOpenGLFunctions_1_0_CoreBackend*>(d);
d->refs.ref();
diff --git a/src/gui/opengl/qopenglfunctions_4_0_compatibility.cpp b/src/gui/opengl/qopenglfunctions_4_0_compatibility.cpp
index 6ae7643eb5..655f1e6fd4 100644
--- a/src/gui/opengl/qopenglfunctions_4_0_compatibility.cpp
+++ b/src/gui/opengl/qopenglfunctions_4_0_compatibility.cpp
@@ -67,26 +67,26 @@ QT_BEGIN_NAMESPACE
QOpenGLFunctions_4_0_Compatibility::QOpenGLFunctions_4_0_Compatibility()
: QAbstractOpenGLFunctions()
- , d_1_0_Core(0)
- , d_1_1_Core(0)
- , d_1_2_Core(0)
- , d_1_3_Core(0)
- , d_1_4_Core(0)
- , d_1_5_Core(0)
- , d_2_0_Core(0)
- , d_2_1_Core(0)
- , d_3_0_Core(0)
- , d_3_1_Core(0)
- , d_3_2_Core(0)
- , d_3_3_Core(0)
- , d_4_0_Core(0)
- , d_1_0_Deprecated(0)
- , d_1_1_Deprecated(0)
- , d_1_2_Deprecated(0)
- , d_1_3_Deprecated(0)
- , d_1_4_Deprecated(0)
+ , d_1_0_Core(nullptr)
+ , d_1_1_Core(nullptr)
+ , d_1_2_Core(nullptr)
+ , d_1_3_Core(nullptr)
+ , d_1_4_Core(nullptr)
+ , d_1_5_Core(nullptr)
+ , d_2_0_Core(nullptr)
+ , d_2_1_Core(nullptr)
+ , d_3_0_Core(nullptr)
+ , d_3_1_Core(nullptr)
+ , d_3_2_Core(nullptr)
+ , d_3_3_Core(nullptr)
+ , d_4_0_Core(nullptr)
+ , d_1_0_Deprecated(nullptr)
+ , d_1_1_Deprecated(nullptr)
+ , d_1_2_Deprecated(nullptr)
+ , d_1_3_Deprecated(nullptr)
+ , d_1_4_Deprecated(nullptr)
, m_reserved_2_0_Deprecated(nullptr)
- , d_3_3_Deprecated(0)
+ , d_3_3_Deprecated(nullptr)
{
}
@@ -184,7 +184,7 @@ bool QOpenGLFunctions_4_0_Compatibility::initializeOpenGLFunctions()
{
// Associate with private implementation, creating if necessary
// Function pointers in the backends are resolved at creation time
- QOpenGLVersionFunctionsBackend* d = 0;
+ QOpenGLVersionFunctionsBackend* d = nullptr;
d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus());
d_1_0_Core = static_cast<QOpenGLFunctions_1_0_CoreBackend*>(d);
d->refs.ref();
diff --git a/src/gui/opengl/qopenglfunctions_4_0_core.cpp b/src/gui/opengl/qopenglfunctions_4_0_core.cpp
index cd4fdb8b2b..60453d147c 100644
--- a/src/gui/opengl/qopenglfunctions_4_0_core.cpp
+++ b/src/gui/opengl/qopenglfunctions_4_0_core.cpp
@@ -67,19 +67,19 @@ QT_BEGIN_NAMESPACE
QOpenGLFunctions_4_0_Core::QOpenGLFunctions_4_0_Core()
: QAbstractOpenGLFunctions()
- , d_1_0_Core(0)
- , d_1_1_Core(0)
- , d_1_2_Core(0)
- , d_1_3_Core(0)
- , d_1_4_Core(0)
- , d_1_5_Core(0)
- , d_2_0_Core(0)
- , d_2_1_Core(0)
- , d_3_0_Core(0)
- , d_3_1_Core(0)
- , d_3_2_Core(0)
- , d_3_3_Core(0)
- , d_4_0_Core(0)
+ , d_1_0_Core(nullptr)
+ , d_1_1_Core(nullptr)
+ , d_1_2_Core(nullptr)
+ , d_1_3_Core(nullptr)
+ , d_1_4_Core(nullptr)
+ , d_1_5_Core(nullptr)
+ , d_2_0_Core(nullptr)
+ , d_2_1_Core(nullptr)
+ , d_3_0_Core(nullptr)
+ , d_3_1_Core(nullptr)
+ , d_3_2_Core(nullptr)
+ , d_3_3_Core(nullptr)
+ , d_4_0_Core(nullptr)
{
}
@@ -153,7 +153,7 @@ bool QOpenGLFunctions_4_0_Core::initializeOpenGLFunctions()
{
// Associate with private implementation, creating if necessary
// Function pointers in the backends are resolved at creation time
- QOpenGLVersionFunctionsBackend* d = 0;
+ QOpenGLVersionFunctionsBackend* d = nullptr;
d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus());
d_1_0_Core = static_cast<QOpenGLFunctions_1_0_CoreBackend*>(d);
d->refs.ref();
diff --git a/src/gui/opengl/qopenglfunctions_4_1_compatibility.cpp b/src/gui/opengl/qopenglfunctions_4_1_compatibility.cpp
index d104c74bc2..bdea8b5ba9 100644
--- a/src/gui/opengl/qopenglfunctions_4_1_compatibility.cpp
+++ b/src/gui/opengl/qopenglfunctions_4_1_compatibility.cpp
@@ -67,27 +67,27 @@ QT_BEGIN_NAMESPACE
QOpenGLFunctions_4_1_Compatibility::QOpenGLFunctions_4_1_Compatibility()
: QAbstractOpenGLFunctions()
- , d_1_0_Core(0)
- , d_1_1_Core(0)
- , d_1_2_Core(0)
- , d_1_3_Core(0)
- , d_1_4_Core(0)
- , d_1_5_Core(0)
- , d_2_0_Core(0)
- , d_2_1_Core(0)
- , d_3_0_Core(0)
- , d_3_1_Core(0)
- , d_3_2_Core(0)
- , d_3_3_Core(0)
- , d_4_0_Core(0)
- , d_4_1_Core(0)
- , d_1_0_Deprecated(0)
- , d_1_1_Deprecated(0)
- , d_1_2_Deprecated(0)
- , d_1_3_Deprecated(0)
- , d_1_4_Deprecated(0)
+ , d_1_0_Core(nullptr)
+ , d_1_1_Core(nullptr)
+ , d_1_2_Core(nullptr)
+ , d_1_3_Core(nullptr)
+ , d_1_4_Core(nullptr)
+ , d_1_5_Core(nullptr)
+ , d_2_0_Core(nullptr)
+ , d_2_1_Core(nullptr)
+ , d_3_0_Core(nullptr)
+ , d_3_1_Core(nullptr)
+ , d_3_2_Core(nullptr)
+ , d_3_3_Core(nullptr)
+ , d_4_0_Core(nullptr)
+ , d_4_1_Core(nullptr)
+ , d_1_0_Deprecated(nullptr)
+ , d_1_1_Deprecated(nullptr)
+ , d_1_2_Deprecated(nullptr)
+ , d_1_3_Deprecated(nullptr)
+ , d_1_4_Deprecated(nullptr)
, m_reserved_2_0_Deprecated(nullptr)
- , d_3_3_Deprecated(0)
+ , d_3_3_Deprecated(nullptr)
{
}
@@ -189,7 +189,7 @@ bool QOpenGLFunctions_4_1_Compatibility::initializeOpenGLFunctions()
{
// Associate with private implementation, creating if necessary
// Function pointers in the backends are resolved at creation time
- QOpenGLVersionFunctionsBackend* d = 0;
+ QOpenGLVersionFunctionsBackend* d = nullptr;
d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus());
d_1_0_Core = static_cast<QOpenGLFunctions_1_0_CoreBackend*>(d);
d->refs.ref();
diff --git a/src/gui/opengl/qopenglfunctions_4_1_core.cpp b/src/gui/opengl/qopenglfunctions_4_1_core.cpp
index 7527aba620..b21742d9c1 100644
--- a/src/gui/opengl/qopenglfunctions_4_1_core.cpp
+++ b/src/gui/opengl/qopenglfunctions_4_1_core.cpp
@@ -67,20 +67,20 @@ QT_BEGIN_NAMESPACE
QOpenGLFunctions_4_1_Core::QOpenGLFunctions_4_1_Core()
: QAbstractOpenGLFunctions()
- , d_1_0_Core(0)
- , d_1_1_Core(0)
- , d_1_2_Core(0)
- , d_1_3_Core(0)
- , d_1_4_Core(0)
- , d_1_5_Core(0)
- , d_2_0_Core(0)
- , d_2_1_Core(0)
- , d_3_0_Core(0)
- , d_3_1_Core(0)
- , d_3_2_Core(0)
- , d_3_3_Core(0)
- , d_4_0_Core(0)
- , d_4_1_Core(0)
+ , d_1_0_Core(nullptr)
+ , d_1_1_Core(nullptr)
+ , d_1_2_Core(nullptr)
+ , d_1_3_Core(nullptr)
+ , d_1_4_Core(nullptr)
+ , d_1_5_Core(nullptr)
+ , d_2_0_Core(nullptr)
+ , d_2_1_Core(nullptr)
+ , d_3_0_Core(nullptr)
+ , d_3_1_Core(nullptr)
+ , d_3_2_Core(nullptr)
+ , d_3_3_Core(nullptr)
+ , d_4_0_Core(nullptr)
+ , d_4_1_Core(nullptr)
{
}
@@ -158,7 +158,7 @@ bool QOpenGLFunctions_4_1_Core::initializeOpenGLFunctions()
{
// Associate with private implementation, creating if necessary
// Function pointers in the backends are resolved at creation time
- QOpenGLVersionFunctionsBackend* d = 0;
+ QOpenGLVersionFunctionsBackend* d = nullptr;
d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus());
d_1_0_Core = static_cast<QOpenGLFunctions_1_0_CoreBackend*>(d);
d->refs.ref();
diff --git a/src/gui/opengl/qopenglfunctions_4_2_compatibility.cpp b/src/gui/opengl/qopenglfunctions_4_2_compatibility.cpp
index a5b1b37495..41ab9ae762 100644
--- a/src/gui/opengl/qopenglfunctions_4_2_compatibility.cpp
+++ b/src/gui/opengl/qopenglfunctions_4_2_compatibility.cpp
@@ -67,28 +67,28 @@ QT_BEGIN_NAMESPACE
QOpenGLFunctions_4_2_Compatibility::QOpenGLFunctions_4_2_Compatibility()
: QAbstractOpenGLFunctions()
- , d_1_0_Core(0)
- , d_1_1_Core(0)
- , d_1_2_Core(0)
- , d_1_3_Core(0)
- , d_1_4_Core(0)
- , d_1_5_Core(0)
- , d_2_0_Core(0)
- , d_2_1_Core(0)
- , d_3_0_Core(0)
- , d_3_1_Core(0)
- , d_3_2_Core(0)
- , d_3_3_Core(0)
- , d_4_0_Core(0)
- , d_4_1_Core(0)
- , d_4_2_Core(0)
- , d_1_0_Deprecated(0)
- , d_1_1_Deprecated(0)
- , d_1_2_Deprecated(0)
- , d_1_3_Deprecated(0)
- , d_1_4_Deprecated(0)
+ , d_1_0_Core(nullptr)
+ , d_1_1_Core(nullptr)
+ , d_1_2_Core(nullptr)
+ , d_1_3_Core(nullptr)
+ , d_1_4_Core(nullptr)
+ , d_1_5_Core(nullptr)
+ , d_2_0_Core(nullptr)
+ , d_2_1_Core(nullptr)
+ , d_3_0_Core(nullptr)
+ , d_3_1_Core(nullptr)
+ , d_3_2_Core(nullptr)
+ , d_3_3_Core(nullptr)
+ , d_4_0_Core(nullptr)
+ , d_4_1_Core(nullptr)
+ , d_4_2_Core(nullptr)
+ , d_1_0_Deprecated(nullptr)
+ , d_1_1_Deprecated(nullptr)
+ , d_1_2_Deprecated(nullptr)
+ , d_1_3_Deprecated(nullptr)
+ , d_1_4_Deprecated(nullptr)
, m_reserved_2_0_Deprecated(nullptr)
- , d_3_3_Deprecated(0)
+ , d_3_3_Deprecated(nullptr)
{
}
@@ -194,7 +194,7 @@ bool QOpenGLFunctions_4_2_Compatibility::initializeOpenGLFunctions()
{
// Associate with private implementation, creating if necessary
// Function pointers in the backends are resolved at creation time
- QOpenGLVersionFunctionsBackend* d = 0;
+ QOpenGLVersionFunctionsBackend* d = nullptr;
d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus());
d_1_0_Core = static_cast<QOpenGLFunctions_1_0_CoreBackend*>(d);
d->refs.ref();
diff --git a/src/gui/opengl/qopenglfunctions_4_2_core.cpp b/src/gui/opengl/qopenglfunctions_4_2_core.cpp
index 1381236926..38dbe1b596 100644
--- a/src/gui/opengl/qopenglfunctions_4_2_core.cpp
+++ b/src/gui/opengl/qopenglfunctions_4_2_core.cpp
@@ -67,21 +67,21 @@ QT_BEGIN_NAMESPACE
QOpenGLFunctions_4_2_Core::QOpenGLFunctions_4_2_Core()
: QAbstractOpenGLFunctions()
- , d_1_0_Core(0)
- , d_1_1_Core(0)
- , d_1_2_Core(0)
- , d_1_3_Core(0)
- , d_1_4_Core(0)
- , d_1_5_Core(0)
- , d_2_0_Core(0)
- , d_2_1_Core(0)
- , d_3_0_Core(0)
- , d_3_1_Core(0)
- , d_3_2_Core(0)
- , d_3_3_Core(0)
- , d_4_0_Core(0)
- , d_4_1_Core(0)
- , d_4_2_Core(0)
+ , d_1_0_Core(nullptr)
+ , d_1_1_Core(nullptr)
+ , d_1_2_Core(nullptr)
+ , d_1_3_Core(nullptr)
+ , d_1_4_Core(nullptr)
+ , d_1_5_Core(nullptr)
+ , d_2_0_Core(nullptr)
+ , d_2_1_Core(nullptr)
+ , d_3_0_Core(nullptr)
+ , d_3_1_Core(nullptr)
+ , d_3_2_Core(nullptr)
+ , d_3_3_Core(nullptr)
+ , d_4_0_Core(nullptr)
+ , d_4_1_Core(nullptr)
+ , d_4_2_Core(nullptr)
{
}
@@ -163,7 +163,7 @@ bool QOpenGLFunctions_4_2_Core::initializeOpenGLFunctions()
{
// Associate with private implementation, creating if necessary
// Function pointers in the backends are resolved at creation time
- QOpenGLVersionFunctionsBackend* d = 0;
+ QOpenGLVersionFunctionsBackend* d = nullptr;
d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus());
d_1_0_Core = static_cast<QOpenGLFunctions_1_0_CoreBackend*>(d);
d->refs.ref();
diff --git a/src/gui/opengl/qopenglfunctions_4_3_compatibility.cpp b/src/gui/opengl/qopenglfunctions_4_3_compatibility.cpp
index 5c0c711d1c..1b23d08ee2 100644
--- a/src/gui/opengl/qopenglfunctions_4_3_compatibility.cpp
+++ b/src/gui/opengl/qopenglfunctions_4_3_compatibility.cpp
@@ -67,29 +67,29 @@ QT_BEGIN_NAMESPACE
QOpenGLFunctions_4_3_Compatibility::QOpenGLFunctions_4_3_Compatibility()
: QAbstractOpenGLFunctions()
- , d_1_0_Core(0)
- , d_1_1_Core(0)
- , d_1_2_Core(0)
- , d_1_3_Core(0)
- , d_1_4_Core(0)
- , d_1_5_Core(0)
- , d_2_0_Core(0)
- , d_2_1_Core(0)
- , d_3_0_Core(0)
- , d_3_1_Core(0)
- , d_3_2_Core(0)
- , d_3_3_Core(0)
- , d_4_0_Core(0)
- , d_4_1_Core(0)
- , d_4_2_Core(0)
- , d_4_3_Core(0)
- , d_1_0_Deprecated(0)
- , d_1_1_Deprecated(0)
- , d_1_2_Deprecated(0)
- , d_1_3_Deprecated(0)
- , d_1_4_Deprecated(0)
+ , d_1_0_Core(nullptr)
+ , d_1_1_Core(nullptr)
+ , d_1_2_Core(nullptr)
+ , d_1_3_Core(nullptr)
+ , d_1_4_Core(nullptr)
+ , d_1_5_Core(nullptr)
+ , d_2_0_Core(nullptr)
+ , d_2_1_Core(nullptr)
+ , d_3_0_Core(nullptr)
+ , d_3_1_Core(nullptr)
+ , d_3_2_Core(nullptr)
+ , d_3_3_Core(nullptr)
+ , d_4_0_Core(nullptr)
+ , d_4_1_Core(nullptr)
+ , d_4_2_Core(nullptr)
+ , d_4_3_Core(nullptr)
+ , d_1_0_Deprecated(nullptr)
+ , d_1_1_Deprecated(nullptr)
+ , d_1_2_Deprecated(nullptr)
+ , d_1_3_Deprecated(nullptr)
+ , d_1_4_Deprecated(nullptr)
, m_reserved_2_0_Deprecated(nullptr)
- , d_3_3_Deprecated(0)
+ , d_3_3_Deprecated(nullptr)
{
}
@@ -199,7 +199,7 @@ bool QOpenGLFunctions_4_3_Compatibility::initializeOpenGLFunctions()
{
// Associate with private implementation, creating if necessary
// Function pointers in the backends are resolved at creation time
- QOpenGLVersionFunctionsBackend* d = 0;
+ QOpenGLVersionFunctionsBackend* d = nullptr;
d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus());
d_1_0_Core = static_cast<QOpenGLFunctions_1_0_CoreBackend*>(d);
d->refs.ref();
diff --git a/src/gui/opengl/qopenglfunctions_4_3_core.cpp b/src/gui/opengl/qopenglfunctions_4_3_core.cpp
index 34460b841e..8a867471b8 100644
--- a/src/gui/opengl/qopenglfunctions_4_3_core.cpp
+++ b/src/gui/opengl/qopenglfunctions_4_3_core.cpp
@@ -67,22 +67,22 @@ QT_BEGIN_NAMESPACE
QOpenGLFunctions_4_3_Core::QOpenGLFunctions_4_3_Core()
: QAbstractOpenGLFunctions()
- , d_1_0_Core(0)
- , d_1_1_Core(0)
- , d_1_2_Core(0)
- , d_1_3_Core(0)
- , d_1_4_Core(0)
- , d_1_5_Core(0)
- , d_2_0_Core(0)
- , d_2_1_Core(0)
- , d_3_0_Core(0)
- , d_3_1_Core(0)
- , d_3_2_Core(0)
- , d_3_3_Core(0)
- , d_4_0_Core(0)
- , d_4_1_Core(0)
- , d_4_2_Core(0)
- , d_4_3_Core(0)
+ , d_1_0_Core(nullptr)
+ , d_1_1_Core(nullptr)
+ , d_1_2_Core(nullptr)
+ , d_1_3_Core(nullptr)
+ , d_1_4_Core(nullptr)
+ , d_1_5_Core(nullptr)
+ , d_2_0_Core(nullptr)
+ , d_2_1_Core(nullptr)
+ , d_3_0_Core(nullptr)
+ , d_3_1_Core(nullptr)
+ , d_3_2_Core(nullptr)
+ , d_3_3_Core(nullptr)
+ , d_4_0_Core(nullptr)
+ , d_4_1_Core(nullptr)
+ , d_4_2_Core(nullptr)
+ , d_4_3_Core(nullptr)
{
}
@@ -168,7 +168,7 @@ bool QOpenGLFunctions_4_3_Core::initializeOpenGLFunctions()
{
// Associate with private implementation, creating if necessary
// Function pointers in the backends are resolved at creation time
- QOpenGLVersionFunctionsBackend* d = 0;
+ QOpenGLVersionFunctionsBackend* d = nullptr;
d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus());
d_1_0_Core = static_cast<QOpenGLFunctions_1_0_CoreBackend*>(d);
d->refs.ref();
diff --git a/src/gui/opengl/qopenglfunctions_4_4_compatibility.cpp b/src/gui/opengl/qopenglfunctions_4_4_compatibility.cpp
index 907994a3c4..4fc4b50100 100644
--- a/src/gui/opengl/qopenglfunctions_4_4_compatibility.cpp
+++ b/src/gui/opengl/qopenglfunctions_4_4_compatibility.cpp
@@ -67,29 +67,29 @@ QT_BEGIN_NAMESPACE
QOpenGLFunctions_4_4_Compatibility::QOpenGLFunctions_4_4_Compatibility()
: QAbstractOpenGLFunctions()
- , d_1_0_Core(0)
- , d_1_1_Core(0)
- , d_1_2_Core(0)
- , d_1_3_Core(0)
- , d_1_4_Core(0)
- , d_1_5_Core(0)
- , d_2_0_Core(0)
- , d_2_1_Core(0)
- , d_3_0_Core(0)
- , d_3_1_Core(0)
- , d_3_2_Core(0)
- , d_3_3_Core(0)
- , d_4_0_Core(0)
- , d_4_1_Core(0)
- , d_4_2_Core(0)
- , d_4_3_Core(0)
- , d_4_4_Core(0)
- , d_1_0_Deprecated(0)
- , d_1_1_Deprecated(0)
- , d_1_2_Deprecated(0)
- , d_1_3_Deprecated(0)
- , d_1_4_Deprecated(0)
- , d_3_3_Deprecated(0)
+ , d_1_0_Core(nullptr)
+ , d_1_1_Core(nullptr)
+ , d_1_2_Core(nullptr)
+ , d_1_3_Core(nullptr)
+ , d_1_4_Core(nullptr)
+ , d_1_5_Core(nullptr)
+ , d_2_0_Core(nullptr)
+ , d_2_1_Core(nullptr)
+ , d_3_0_Core(nullptr)
+ , d_3_1_Core(nullptr)
+ , d_3_2_Core(nullptr)
+ , d_3_3_Core(nullptr)
+ , d_4_0_Core(nullptr)
+ , d_4_1_Core(nullptr)
+ , d_4_2_Core(nullptr)
+ , d_4_3_Core(nullptr)
+ , d_4_4_Core(nullptr)
+ , d_1_0_Deprecated(nullptr)
+ , d_1_1_Deprecated(nullptr)
+ , d_1_2_Deprecated(nullptr)
+ , d_1_3_Deprecated(nullptr)
+ , d_1_4_Deprecated(nullptr)
+ , d_3_3_Deprecated(nullptr)
{
}
@@ -203,7 +203,7 @@ bool QOpenGLFunctions_4_4_Compatibility::initializeOpenGLFunctions()
{
// Associate with private implementation, creating if necessary
// Function pointers in the backends are resolved at creation time
- QOpenGLVersionFunctionsBackend* d = 0;
+ QOpenGLVersionFunctionsBackend* d = nullptr;
d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus());
d_1_0_Core = static_cast<QOpenGLFunctions_1_0_CoreBackend*>(d);
d->refs.ref();
diff --git a/src/gui/opengl/qopenglfunctions_4_4_core.cpp b/src/gui/opengl/qopenglfunctions_4_4_core.cpp
index 76c0323f6d..6169c7f455 100644
--- a/src/gui/opengl/qopenglfunctions_4_4_core.cpp
+++ b/src/gui/opengl/qopenglfunctions_4_4_core.cpp
@@ -67,23 +67,23 @@ QT_BEGIN_NAMESPACE
QOpenGLFunctions_4_4_Core::QOpenGLFunctions_4_4_Core()
: QAbstractOpenGLFunctions()
- , d_1_0_Core(0)
- , d_1_1_Core(0)
- , d_1_2_Core(0)
- , d_1_3_Core(0)
- , d_1_4_Core(0)
- , d_1_5_Core(0)
- , d_2_0_Core(0)
- , d_2_1_Core(0)
- , d_3_0_Core(0)
- , d_3_1_Core(0)
- , d_3_2_Core(0)
- , d_3_3_Core(0)
- , d_4_0_Core(0)
- , d_4_1_Core(0)
- , d_4_2_Core(0)
- , d_4_3_Core(0)
- , d_4_4_Core(0)
+ , d_1_0_Core(nullptr)
+ , d_1_1_Core(nullptr)
+ , d_1_2_Core(nullptr)
+ , d_1_3_Core(nullptr)
+ , d_1_4_Core(nullptr)
+ , d_1_5_Core(nullptr)
+ , d_2_0_Core(nullptr)
+ , d_2_1_Core(nullptr)
+ , d_3_0_Core(nullptr)
+ , d_3_1_Core(nullptr)
+ , d_3_2_Core(nullptr)
+ , d_3_3_Core(nullptr)
+ , d_4_0_Core(nullptr)
+ , d_4_1_Core(nullptr)
+ , d_4_2_Core(nullptr)
+ , d_4_3_Core(nullptr)
+ , d_4_4_Core(nullptr)
{
}
@@ -173,7 +173,7 @@ bool QOpenGLFunctions_4_4_Core::initializeOpenGLFunctions()
{
// Associate with private implementation, creating if necessary
// Function pointers in the backends are resolved at creation time
- QOpenGLVersionFunctionsBackend* d = 0;
+ QOpenGLVersionFunctionsBackend* d = nullptr;
d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus());
d_1_0_Core = static_cast<QOpenGLFunctions_1_0_CoreBackend*>(d);
d->refs.ref();
diff --git a/src/gui/opengl/qopenglfunctions_4_5_compatibility.cpp b/src/gui/opengl/qopenglfunctions_4_5_compatibility.cpp
index c415bb06ff..02af443498 100644
--- a/src/gui/opengl/qopenglfunctions_4_5_compatibility.cpp
+++ b/src/gui/opengl/qopenglfunctions_4_5_compatibility.cpp
@@ -67,31 +67,31 @@ QT_BEGIN_NAMESPACE
QOpenGLFunctions_4_5_Compatibility::QOpenGLFunctions_4_5_Compatibility()
: QAbstractOpenGLFunctions()
- , d_1_0_Core(0)
- , d_1_1_Core(0)
- , d_1_2_Core(0)
- , d_1_3_Core(0)
- , d_1_4_Core(0)
- , d_1_5_Core(0)
- , d_2_0_Core(0)
- , d_2_1_Core(0)
- , d_3_0_Core(0)
- , d_3_1_Core(0)
- , d_3_2_Core(0)
- , d_3_3_Core(0)
- , d_4_0_Core(0)
- , d_4_1_Core(0)
- , d_4_2_Core(0)
- , d_4_3_Core(0)
- , d_4_4_Core(0)
- , d_4_5_Core(0)
- , d_1_0_Deprecated(0)
- , d_1_1_Deprecated(0)
- , d_1_2_Deprecated(0)
- , d_1_3_Deprecated(0)
- , d_1_4_Deprecated(0)
- , d_3_3_Deprecated(0)
- , d_4_5_Deprecated(0)
+ , d_1_0_Core(nullptr)
+ , d_1_1_Core(nullptr)
+ , d_1_2_Core(nullptr)
+ , d_1_3_Core(nullptr)
+ , d_1_4_Core(nullptr)
+ , d_1_5_Core(nullptr)
+ , d_2_0_Core(nullptr)
+ , d_2_1_Core(nullptr)
+ , d_3_0_Core(nullptr)
+ , d_3_1_Core(nullptr)
+ , d_3_2_Core(nullptr)
+ , d_3_3_Core(nullptr)
+ , d_4_0_Core(nullptr)
+ , d_4_1_Core(nullptr)
+ , d_4_2_Core(nullptr)
+ , d_4_3_Core(nullptr)
+ , d_4_4_Core(nullptr)
+ , d_4_5_Core(nullptr)
+ , d_1_0_Deprecated(nullptr)
+ , d_1_1_Deprecated(nullptr)
+ , d_1_2_Deprecated(nullptr)
+ , d_1_3_Deprecated(nullptr)
+ , d_1_4_Deprecated(nullptr)
+ , d_3_3_Deprecated(nullptr)
+ , d_4_5_Deprecated(nullptr)
{
}
@@ -213,7 +213,7 @@ bool QOpenGLFunctions_4_5_Compatibility::initializeOpenGLFunctions()
{
// Associate with private implementation, creating if necessary
// Function pointers in the backends are resolved at creation time
- QOpenGLVersionFunctionsBackend* d = 0;
+ QOpenGLVersionFunctionsBackend* d = nullptr;
d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus());
d_1_0_Core = static_cast<QOpenGLFunctions_1_0_CoreBackend*>(d);
d->refs.ref();
diff --git a/src/gui/opengl/qopenglfunctions_4_5_core.cpp b/src/gui/opengl/qopenglfunctions_4_5_core.cpp
index 4dfac3579c..9c0369e5f2 100644
--- a/src/gui/opengl/qopenglfunctions_4_5_core.cpp
+++ b/src/gui/opengl/qopenglfunctions_4_5_core.cpp
@@ -67,24 +67,24 @@ QT_BEGIN_NAMESPACE
QOpenGLFunctions_4_5_Core::QOpenGLFunctions_4_5_Core()
: QAbstractOpenGLFunctions()
- , d_1_0_Core(0)
- , d_1_1_Core(0)
- , d_1_2_Core(0)
- , d_1_3_Core(0)
- , d_1_4_Core(0)
- , d_1_5_Core(0)
- , d_2_0_Core(0)
- , d_2_1_Core(0)
- , d_3_0_Core(0)
- , d_3_1_Core(0)
- , d_3_2_Core(0)
- , d_3_3_Core(0)
- , d_4_0_Core(0)
- , d_4_1_Core(0)
- , d_4_2_Core(0)
- , d_4_3_Core(0)
- , d_4_4_Core(0)
- , d_4_5_Core(0)
+ , d_1_0_Core(nullptr)
+ , d_1_1_Core(nullptr)
+ , d_1_2_Core(nullptr)
+ , d_1_3_Core(nullptr)
+ , d_1_4_Core(nullptr)
+ , d_1_5_Core(nullptr)
+ , d_2_0_Core(nullptr)
+ , d_2_1_Core(nullptr)
+ , d_3_0_Core(nullptr)
+ , d_3_1_Core(nullptr)
+ , d_3_2_Core(nullptr)
+ , d_3_3_Core(nullptr)
+ , d_4_0_Core(nullptr)
+ , d_4_1_Core(nullptr)
+ , d_4_2_Core(nullptr)
+ , d_4_3_Core(nullptr)
+ , d_4_4_Core(nullptr)
+ , d_4_5_Core(nullptr)
{
}
@@ -178,7 +178,7 @@ bool QOpenGLFunctions_4_5_Core::initializeOpenGLFunctions()
{
// Associate with private implementation, creating if necessary
// Function pointers in the backends are resolved at creation time
- QOpenGLVersionFunctionsBackend* d = 0;
+ QOpenGLVersionFunctionsBackend* d = nullptr;
d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, QOpenGLFunctions_1_0_CoreBackend::versionStatus());
d_1_0_Core = static_cast<QOpenGLFunctions_1_0_CoreBackend*>(d);
d->refs.ref();
diff --git a/src/gui/opengl/qopenglpaintdevice.cpp b/src/gui/opengl/qopenglpaintdevice.cpp
index 3a0c02feb0..3920a10467 100644
--- a/src/gui/opengl/qopenglpaintdevice.cpp
+++ b/src/gui/opengl/qopenglpaintdevice.cpp
@@ -171,7 +171,7 @@ QOpenGLPaintDevicePrivate::QOpenGLPaintDevicePrivate(const QSize &sz)
, dpmy(qt_defaultDpiY() * 100. / 2.54)
, devicePixelRatio(1.0)
, flipped(false)
- , engine(0)
+ , engine(nullptr)
{
}
diff --git a/src/gui/opengl/qopenglpaintengine.cpp b/src/gui/opengl/qopenglpaintengine.cpp
index 47394999c6..a82edbb073 100644
--- a/src/gui/opengl/qopenglpaintengine.cpp
+++ b/src/gui/opengl/qopenglpaintengine.cpp
@@ -881,7 +881,7 @@ void QOpenGL2PaintEngineExPrivate::fill(const QVectorPath& path)
Q_ASSERT(cache->ibo == 0);
#else
free(cache->vertices);
- Q_ASSERT(cache->indices == 0);
+ Q_ASSERT(cache->indices == nullptr);
#endif
updateCache = true;
}
@@ -909,7 +909,7 @@ void QOpenGL2PaintEngineExPrivate::fill(const QVectorPath& path)
#else
cache->vertices = (float *) malloc(floatSizeInBytes);
memcpy(cache->vertices, vertexCoordinateArray.data(), floatSizeInBytes);
- cache->indices = 0;
+ cache->indices = nullptr;
#endif
}
@@ -1359,7 +1359,7 @@ void QOpenGL2PaintEngineEx::stroke(const QVectorPath &path, const QPen &pen)
return;
QOpenGL2PaintEngineState *s = state();
- if (qt_pen_is_cosmetic(pen, state()->renderHints) && !qt_scaleForTransform(s->transform(), 0)) {
+ if (qt_pen_is_cosmetic(pen, state()->renderHints) && !qt_scaleForTransform(s->transform(), nullptr)) {
// QTriangulatingStroker class is not meant to support cosmetically sheared strokes.
QPaintEngineEx::stroke(path, pen);
return;
@@ -1427,7 +1427,7 @@ void QOpenGL2PaintEngineExPrivate::stroke(const QVectorPath &path, const QPen &p
QRectF bounds = path.controlPointRect().adjusted(-extra, -extra, extra, extra);
fillStencilWithVertexArray(stroker.vertices(), stroker.vertexCount() / 2,
- 0, 0, bounds, QOpenGL2PaintEngineExPrivate::TriStripStrokeFillMode);
+ nullptr, 0, bounds, QOpenGL2PaintEngineExPrivate::TriStripStrokeFillMode);
funcs.glStencilOp(GL_KEEP, GL_REPLACE, GL_REPLACE);
@@ -1575,7 +1575,7 @@ void QOpenGL2PaintEngineEx::drawImage(const QRectF& dest, const QImage& image, c
case QImage::Format_ARGB32:
case QImage::Format_RGBA64:
d->shaderManager->setSrcPixelType(QOpenGLEngineShaderManager::NonPremultipliedImageSrc);
- bindOption = 0;
+ bindOption = { };
break;
case QImage::Format_Alpha8:
if (ctx->functions()->hasOpenGLFeature(QOpenGLFunctions::TextureRGFormats)) {
@@ -1772,7 +1772,7 @@ void QOpenGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngine::GlyphFormat gly
QOpenGLTextureGlyphCache *cache =
(QOpenGLTextureGlyphCache *) fe->glyphCache(cacheKey, glyphFormat, glyphCacheTransform);
- if (!cache || cache->glyphFormat() != glyphFormat || cache->contextGroup() == 0) {
+ if (!cache || cache->glyphFormat() != glyphFormat || cache->contextGroup() == nullptr) {
cache = new QOpenGLTextureGlyphCache(glyphFormat, glyphCacheTransform);
fe->setGlyphCache(cacheKey, cache);
recreateVertexArrays = true;
@@ -1780,7 +1780,7 @@ void QOpenGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngine::GlyphFormat gly
if (staticTextItem->userDataNeedsUpdate) {
recreateVertexArrays = true;
- } else if (staticTextItem->userData() == 0) {
+ } else if (staticTextItem->userData() == nullptr) {
recreateVertexArrays = true;
} else if (staticTextItem->userData()->type != QStaticTextUserData::OpenGLUserData) {
recreateVertexArrays = true;
@@ -1845,9 +1845,9 @@ void QOpenGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngine::GlyphFormat gly
QOpenGL2PEXVertexArray *textureCoordinates = &textureCoordinateArray;
if (staticTextItem->useBackendOptimizations) {
- QOpenGLStaticTextUserData *userData = 0;
+ QOpenGLStaticTextUserData *userData = nullptr;
- if (staticTextItem->userData() == 0
+ if (staticTextItem->userData() == nullptr
|| staticTextItem->userData()->type != QStaticTextUserData::OpenGLUserData) {
userData = new QOpenGLStaticTextUserData();
@@ -2273,12 +2273,12 @@ bool QOpenGL2PaintEngineEx::end()
d->funcs.glUseProgram(0);
d->transferMode(BrushDrawingMode);
- ctx->d_func()->active_engine = 0;
+ ctx->d_func()->active_engine = nullptr;
d->resetGLState();
delete d->shaderManager;
- d->shaderManager = 0;
+ d->shaderManager = nullptr;
d->currentBrush = QBrush();
#ifdef QT_OPENGL_CACHE_AS_VBOS
diff --git a/src/gui/opengl/qopenglshaderprogram.cpp b/src/gui/opengl/qopenglshaderprogram.cpp
index 4986ca573d..7e89d9c8d4 100644
--- a/src/gui/opengl/qopenglshaderprogram.cpp
+++ b/src/gui/opengl/qopenglshaderprogram.cpp
@@ -249,7 +249,7 @@ class QOpenGLShaderPrivate : public QObjectPrivate
Q_DECLARE_PUBLIC(QOpenGLShader)
public:
QOpenGLShaderPrivate(QOpenGLContext *ctx, QOpenGLShader::ShaderType type)
- : shaderGuard(0)
+ : shaderGuard(nullptr)
, shaderType(type)
, compiled(false)
, glfuncs(new QOpenGLExtraFunctions(ctx))
@@ -374,8 +374,8 @@ bool QOpenGLShaderPrivate::compile(QOpenGLShader *q)
// Get info and source code lengths
GLint infoLogLength = 0;
GLint sourceCodeLength = 0;
- char *logBuffer = 0;
- char *sourceCodeBuffer = 0;
+ char *logBuffer = nullptr;
+ char *sourceCodeBuffer = nullptr;
// Get the compilation info log
glfuncs->glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &infoLogLength);
@@ -425,7 +425,7 @@ void QOpenGLShaderPrivate::deleteShader()
{
if (shaderGuard) {
shaderGuard->free();
- shaderGuard = 0;
+ shaderGuard = nullptr;
}
}
@@ -783,13 +783,13 @@ class QOpenGLShaderProgramPrivate : public QObjectPrivate
Q_DECLARE_PUBLIC(QOpenGLShaderProgram)
public:
QOpenGLShaderProgramPrivate()
- : programGuard(0)
+ : programGuard(nullptr)
, linked(false)
, inited(false)
, removingShaders(false)
, glfuncs(new QOpenGLExtraFunctions)
#ifndef QT_OPENGL_ES_2
- , tessellationFuncs(0)
+ , tessellationFuncs(nullptr)
#endif
, linkBinaryRecursion(false)
{
diff --git a/src/gui/opengl/qopengltexture.cpp b/src/gui/opengl/qopengltexture.cpp
index 61a6202017..cf4a8dee8d 100644
--- a/src/gui/opengl/qopengltexture.cpp
+++ b/src/gui/opengl/qopengltexture.cpp
@@ -57,7 +57,7 @@ QT_BEGIN_NAMESPACE
QOpenGLTexturePrivate::QOpenGLTexturePrivate(QOpenGLTexture::Target textureTarget,
QOpenGLTexture *qq)
: q_ptr(qq),
- context(0),
+ context(nullptr),
target(textureTarget),
textureId(0),
format(QOpenGLTexture::NoFormat),
@@ -82,8 +82,8 @@ QOpenGLTexturePrivate::QOpenGLTexturePrivate(QOpenGLTexture::Target textureTarge
textureView(false),
autoGenerateMipMaps(true),
storageAllocated(false),
- texFuncs(0),
- functions(0)
+ texFuncs(nullptr),
+ functions(nullptr)
{
dimensions[0] = dimensions[1] = dimensions[2] = 1;
@@ -208,8 +208,8 @@ void QOpenGLTexturePrivate::destroy()
functions->glDeleteTextures(1, &textureId);
- context = 0;
- functions = 0;
+ context = nullptr;
+ functions = nullptr;
textureId = 0;
format = QOpenGLTexture::NoFormat;
formatClass = QOpenGLTexture::NoFormatClass;
@@ -231,7 +231,7 @@ void QOpenGLTexturePrivate::destroy()
textureView = false;
autoGenerateMipMaps = true;
storageAllocated = false;
- texFuncs = 0;
+ texFuncs = nullptr;
swizzleMask[0] = QOpenGLTexture::RedValue;
swizzleMask[1] = QOpenGLTexture::GreenValue;
@@ -1141,7 +1141,7 @@ void QOpenGLTexturePrivate::allocateMutableStorage(QOpenGLTexture::PixelFormat p
texFuncs->glTextureImage1D(textureId, target, bindingTarget, level, format,
mipLevelSize(level, dimensions[0]),
0,
- pixelFormat, pixelType, 0);
+ pixelFormat, pixelType, nullptr);
} else {
qWarning("1D textures are not supported");
return;
@@ -1156,7 +1156,7 @@ void QOpenGLTexturePrivate::allocateMutableStorage(QOpenGLTexture::PixelFormat p
mipLevelSize(level, dimensions[0]),
layers,
0,
- pixelFormat, pixelType, 0);
+ pixelFormat, pixelType, nullptr);
} else {
qWarning("1D array textures are not supported");
return;
@@ -1170,7 +1170,7 @@ void QOpenGLTexturePrivate::allocateMutableStorage(QOpenGLTexture::PixelFormat p
mipLevelSize(level, dimensions[0]),
mipLevelSize(level, dimensions[1]),
0,
- pixelFormat, pixelType, 0);
+ pixelFormat, pixelType, nullptr);
break;
case QOpenGLTexture::TargetCubeMap: {
@@ -1190,7 +1190,7 @@ void QOpenGLTexturePrivate::allocateMutableStorage(QOpenGLTexture::PixelFormat p
mipLevelSize(level, dimensions[0]),
mipLevelSize(level, dimensions[1]),
0,
- pixelFormat, pixelType, 0);
+ pixelFormat, pixelType, nullptr);
}
}
break;
@@ -1204,7 +1204,7 @@ void QOpenGLTexturePrivate::allocateMutableStorage(QOpenGLTexture::PixelFormat p
mipLevelSize(level, dimensions[1]),
layers,
0,
- pixelFormat, pixelType, 0);
+ pixelFormat, pixelType, nullptr);
} else {
qWarning("Array textures are not supported");
return;
@@ -1220,7 +1220,7 @@ void QOpenGLTexturePrivate::allocateMutableStorage(QOpenGLTexture::PixelFormat p
mipLevelSize(level, dimensions[1]),
6 * layers,
0,
- pixelFormat, pixelType, 0);
+ pixelFormat, pixelType, nullptr);
} else {
qWarning("Cubemap Array textures are not supported");
return;
@@ -1235,7 +1235,7 @@ void QOpenGLTexturePrivate::allocateMutableStorage(QOpenGLTexture::PixelFormat p
mipLevelSize(level, dimensions[1]),
mipLevelSize(level, dimensions[2]),
0,
- pixelFormat, pixelType, 0);
+ pixelFormat, pixelType, nullptr);
} else {
qWarning("3D textures are not supported");
return;
@@ -1924,7 +1924,7 @@ QOpenGLTexture *QOpenGLTexturePrivate::createTextureView(QOpenGLTexture::Target
if (!viewTargetCompatible) {
qWarning("QOpenGLTexture::createTextureView(): Incompatible source and view targets");
- return 0;
+ return nullptr;
}
// Check the formats are compatible
@@ -2057,7 +2057,7 @@ QOpenGLTexture *QOpenGLTexturePrivate::createTextureView(QOpenGLTexture::Target
if (!viewFormatCompatible) {
qWarning("QOpenGLTexture::createTextureView(): Incompatible source and view formats");
- return 0;
+ return nullptr;
}
@@ -3387,7 +3387,7 @@ QOpenGLTexture *QOpenGLTexture::createTextureView(Target target,
Q_D(const QOpenGLTexture);
if (!isStorageAllocated()) {
qWarning("Cannot set create a texture view of a texture that does not have storage allocated.");
- return 0;
+ return nullptr;
}
Q_ASSERT(maximumMipmapLevel >= minimumMipmapLevel);
Q_ASSERT(maximumLayer >= minimumLayer);
diff --git a/src/gui/opengl/qopengltextureglyphcache.cpp b/src/gui/opengl/qopengltextureglyphcache.cpp
index 490dc99749..41027d26e0 100644
--- a/src/gui/opengl/qopengltextureglyphcache.cpp
+++ b/src/gui/opengl/qopengltextureglyphcache.cpp
@@ -55,9 +55,9 @@ static int next_qopengltextureglyphcache_serial_number()
QOpenGLTextureGlyphCache::QOpenGLTextureGlyphCache(QFontEngine::GlyphFormat format, const QTransform &matrix, const QColor &color)
: QImageTextureGlyphCache(format, matrix, color)
- , m_textureResource(0)
- , pex(0)
- , m_blitProgram(0)
+ , m_textureResource(nullptr)
+ , pex(nullptr)
+ , m_blitProgram(nullptr)
, m_filterMode(Nearest)
, m_serialNumber(next_qopengltextureglyphcache_serial_number())
, m_buffer(QOpenGLBuffer::VertexBuffer)
@@ -102,7 +102,7 @@ static inline bool isCoreProfile()
void QOpenGLTextureGlyphCache::createTextureData(int width, int height)
{
QOpenGLContext *ctx = const_cast<QOpenGLContext *>(QOpenGLContext::currentContext());
- if (ctx == 0) {
+ if (ctx == nullptr) {
qWarning("QOpenGLTextureGlyphCache::createTextureData: Called with no context");
return;
}
@@ -121,7 +121,7 @@ void QOpenGLTextureGlyphCache::createTextureData(int width, int height)
if (m_textureResource && !m_textureResource->m_texture) {
delete m_textureResource;
- m_textureResource = 0;
+ m_textureResource = nullptr;
}
if (!m_textureResource)
@@ -276,7 +276,7 @@ static void load_glyph_image_region_to_texture(QOpenGLContext *ctx,
void QOpenGLTextureGlyphCache::resizeTextureData(int width, int height)
{
QOpenGLContext *ctx = QOpenGLContext::currentContext();
- if (ctx == 0) {
+ if (ctx == nullptr) {
qWarning("QOpenGLTextureGlyphCache::resizeTextureData: Called with no context");
return;
}
@@ -313,7 +313,7 @@ void QOpenGLTextureGlyphCache::resizeTextureData(int width, int height)
funcs->glGenTextures(1, &tmp_texture);
funcs->glBindTexture(GL_TEXTURE_2D, tmp_texture);
funcs->glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, oldWidth, oldHeight, 0,
- GL_RGBA, GL_UNSIGNED_BYTE, NULL);
+ GL_RGBA, GL_UNSIGNED_BYTE, nullptr);
funcs->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
funcs->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
funcs->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
@@ -326,7 +326,7 @@ void QOpenGLTextureGlyphCache::resizeTextureData(int width, int height)
funcs->glActiveTexture(GL_TEXTURE0 + QT_IMAGE_TEXTURE_UNIT);
funcs->glBindTexture(GL_TEXTURE_2D, oldTexture);
- if (pex != 0)
+ if (pex != nullptr)
pex->transferMode(BrushDrawingMode);
funcs->glDisable(GL_STENCIL_TEST);
@@ -336,9 +336,9 @@ void QOpenGLTextureGlyphCache::resizeTextureData(int width, int height)
funcs->glViewport(0, 0, oldWidth, oldHeight);
- QOpenGLShaderProgram *blitProgram = 0;
- if (pex == 0) {
- if (m_blitProgram == 0) {
+ QOpenGLShaderProgram *blitProgram = nullptr;
+ if (pex == nullptr) {
+ if (m_blitProgram == nullptr) {
m_blitProgram = new QOpenGLShaderProgram;
const bool isCoreProfile = ctx->format().profile() == QSurfaceFormat::CoreProfile;
@@ -408,7 +408,7 @@ void QOpenGLTextureGlyphCache::resizeTextureData(int width, int height)
funcs->glBindFramebuffer(GL_FRAMEBUFFER, (GLuint)oldFbo);
- if (pex != 0) {
+ if (pex != nullptr) {
funcs->glViewport(0, 0, pex->width, pex->height);
pex->updateClipScissorTest();
} else {
@@ -424,7 +424,7 @@ void QOpenGLTextureGlyphCache::resizeTextureData(int width, int height)
void QOpenGLTextureGlyphCache::fillTexture(const Coord &c, glyph_t glyph, QFixed subPixelPosition)
{
QOpenGLContext *ctx = QOpenGLContext::currentContext();
- if (ctx == 0) {
+ if (ctx == nullptr) {
qWarning("QOpenGLTextureGlyphCache::fillTexture: Called with no context");
return;
}
@@ -447,7 +447,7 @@ int QOpenGLTextureGlyphCache::glyphPadding() const
int QOpenGLTextureGlyphCache::maxTextureWidth() const
{
QOpenGLContext *ctx = const_cast<QOpenGLContext *>(QOpenGLContext::currentContext());
- if (ctx == 0)
+ if (ctx == nullptr)
return QImageTextureGlyphCache::maxTextureWidth();
else
return ctx->d_func()->maxTextureSize();
@@ -456,7 +456,7 @@ int QOpenGLTextureGlyphCache::maxTextureWidth() const
int QOpenGLTextureGlyphCache::maxTextureHeight() const
{
QOpenGLContext *ctx = const_cast<QOpenGLContext *>(QOpenGLContext::currentContext());
- if (ctx == 0)
+ if (ctx == nullptr)
return QImageTextureGlyphCache::maxTextureHeight();
if (ctx->d_func()->workaround_brokenTexSubImage)
@@ -469,10 +469,10 @@ void QOpenGLTextureGlyphCache::clear()
{
if (m_textureResource)
m_textureResource->free();
- m_textureResource = 0;
+ m_textureResource = nullptr;
delete m_blitProgram;
- m_blitProgram = 0;
+ m_blitProgram = nullptr;
m_w = 0;
m_h = 0;
diff --git a/src/gui/opengl/qopengltimerquery.cpp b/src/gui/opengl/qopengltimerquery.cpp
index afd2e7887a..a4e10b42f7 100644
--- a/src/gui/opengl/qopengltimerquery.cpp
+++ b/src/gui/opengl/qopengltimerquery.cpp
@@ -77,8 +77,8 @@ class QOpenGLTimerQueryPrivate : public QObjectPrivate
public:
QOpenGLTimerQueryPrivate()
: QObjectPrivate(),
- context(0),
- ext(0),
+ context(nullptr),
+ ext(nullptr),
timeInterval(0),
timer(0)
{
@@ -168,7 +168,7 @@ void QOpenGLTimerQueryPrivate::destroy()
core->glDeleteQueries(1, &timer);
timer = 0;
- context = 0;
+ context = nullptr;
}
// GL_TIME_ELAPSED_EXT is not defined on OS X 10.6
@@ -310,14 +310,14 @@ QOpenGLTimerQuery::~QOpenGLTimerQuery()
QOpenGLContext* ctx = QOpenGLContext::currentContext();
Q_D(QOpenGLTimerQuery);
- QOpenGLContext *oldContext = 0;
+ QOpenGLContext *oldContext = nullptr;
if (d->context != ctx) {
oldContext = ctx;
if (d->context->makeCurrent(oldContext->surface())) {
ctx = d->context;
} else {
qWarning("QOpenGLTimerQuery::~QOpenGLTimerQuery() failed to make query objects's context current");
- ctx = 0;
+ ctx = nullptr;
}
}
@@ -468,9 +468,9 @@ public:
: QObjectPrivate(),
timers(),
timeSamples(),
- context(0),
- core(0),
- ext(0),
+ context(nullptr),
+ core(nullptr),
+ ext(nullptr),
requestedSampleCount(2),
currentSample(-1),
timerQueryActive(false)
@@ -556,10 +556,10 @@ void QOpenGLTimeMonitorPrivate::destroy()
core->glDeleteQueries(timers.size(), timers.data());
timers.clear();
delete core;
- core = 0;
+ core = nullptr;
delete ext;
- ext = 0;
- context = 0;
+ ext = nullptr;
+ context = nullptr;
}
void QOpenGLTimeMonitorPrivate::recordSample()
@@ -701,14 +701,14 @@ QOpenGLTimeMonitor::~QOpenGLTimeMonitor()
QOpenGLContext* ctx = QOpenGLContext::currentContext();
Q_D(QOpenGLTimeMonitor);
- QOpenGLContext *oldContext = 0;
+ QOpenGLContext *oldContext = nullptr;
if (d->context != ctx) {
oldContext = ctx;
if (d->context->makeCurrent(oldContext->surface())) {
ctx = d->context;
} else {
qWarning("QOpenGLTimeMonitor::~QOpenGLTimeMonitor() failed to make time monitor's context current");
- ctx = 0;
+ ctx = nullptr;
}
}
diff --git a/src/gui/opengl/qopenglversionfunctions.cpp b/src/gui/opengl/qopenglversionfunctions.cpp
index a3d3bb6bd1..5a108335a9 100644
--- a/src/gui/opengl/qopenglversionfunctions.cpp
+++ b/src/gui/opengl/qopenglversionfunctions.cpp
@@ -68,7 +68,7 @@ void CLASS::init() \
}
QOpenGLVersionFunctionsStorage::QOpenGLVersionFunctionsStorage()
- : backends(0)
+ : backends(nullptr)
{
}
diff --git a/src/gui/opengl/qopenglversionfunctionsfactory.cpp b/src/gui/opengl/qopenglversionfunctionsfactory.cpp
index fff5eea29c..ca7daedf34 100644
--- a/src/gui/opengl/qopenglversionfunctionsfactory.cpp
+++ b/src/gui/opengl/qopenglversionfunctionsfactory.cpp
@@ -153,7 +153,7 @@ QAbstractOpenGLFunctions *QOpenGLVersionFunctionsFactory::create(const QOpenGLVe
else if (major == 1 && minor == 0)
return new QOpenGLFunctions_1_0;
}
- return 0;
+ return nullptr;
#else
Q_UNUSED(versionProfile);
return new QOpenGLFunctions_ES2;
diff --git a/src/gui/opengl/qopenglvertexarrayobject.cpp b/src/gui/opengl/qopenglvertexarrayobject.cpp
index f0837aff96..f15fe06ee8 100644
--- a/src/gui/opengl/qopenglvertexarrayobject.cpp
+++ b/src/gui/opengl/qopenglvertexarrayobject.cpp
@@ -101,7 +101,7 @@ public:
QOpenGLVertexArrayObjectPrivate()
: vao(0)
, vaoFuncsType(NotSupported)
- , context(0)
+ , context(nullptr)
{
}
@@ -167,7 +167,7 @@ bool QOpenGLVertexArrayObjectPrivate::create()
vaoFuncs.helper->glGenVertexArrays(1, &vao);
}
} else {
- vaoFuncs.core_3_0 = 0;
+ vaoFuncs.core_3_0 = nullptr;
vaoFuncsType = NotSupported;
QSurfaceFormat format = ctx->format();
#ifndef QT_OPENGL_ES_2
@@ -200,17 +200,17 @@ void QOpenGLVertexArrayObjectPrivate::destroy()
Q_Q(QOpenGLVertexArrayObject);
QOpenGLContext *ctx = QOpenGLContext::currentContext();
- QOpenGLContext *oldContext = 0;
- QSurface *oldContextSurface = 0;
+ QOpenGLContext *oldContext = nullptr;
+ QSurface *oldContextSurface = nullptr;
QScopedPointer<QOffscreenSurface> offscreenSurface;
if (context && context != ctx) {
oldContext = ctx;
- oldContextSurface = ctx ? ctx->surface() : 0;
+ oldContextSurface = ctx ? ctx->surface() : nullptr;
// Before going through the effort of creating an offscreen surface
// check that we are on the GUI thread because otherwise many platforms
// will not able to create that offscreen surface.
if (QThread::currentThread() != qGuiApp->thread()) {
- ctx = 0;
+ ctx = nullptr;
} else {
// Cannot just make the current surface current again with another context.
// The format may be incompatible and some platforms (iOS) may impose
@@ -223,14 +223,14 @@ void QOpenGLVertexArrayObjectPrivate::destroy()
ctx = context;
} else {
qWarning("QOpenGLVertexArrayObject::destroy() failed to make VAO's context current");
- ctx = 0;
+ ctx = nullptr;
}
}
}
if (context) {
QObject::disconnect(context, SIGNAL(aboutToBeDestroyed()), q, SLOT(_q_contextAboutToBeDestroyed()));
- context = 0;
+ context = nullptr;
}
if (vao && ctx) {
diff --git a/src/gui/painting/qblittable.cpp b/src/gui/painting/qblittable.cpp
index 8e2013c24f..494104251f 100644
--- a/src/gui/painting/qblittable.cpp
+++ b/src/gui/painting/qblittable.cpp
@@ -46,7 +46,7 @@ class QBlittablePrivate
{
public:
QBlittablePrivate(const QSize &size, QBlittable::Capabilities caps)
- : caps(caps), m_size(size), locked(false), cachedImg(0)
+ : caps(caps), m_size(size), locked(false), cachedImg(nullptr)
{}
QBlittable::Capabilities caps;
QSize m_size;
diff --git a/src/gui/painting/qbrush.cpp b/src/gui/painting/qbrush.cpp
index abb3268dfa..b23fb45952 100644
--- a/src/gui/painting/qbrush.cpp
+++ b/src/gui/painting/qbrush.cpp
@@ -179,7 +179,7 @@ struct QTexturedBrushData : public QBrushData
{
QTexturedBrushData() {
m_has_pixmap_texture = false;
- m_pixmap = 0;
+ m_pixmap = nullptr;
}
~QTexturedBrushData() {
delete m_pixmap;
@@ -189,7 +189,7 @@ struct QTexturedBrushData : public QBrushData
delete m_pixmap;
if (pm.isNull()) {
- m_pixmap = 0;
+ m_pixmap = nullptr;
m_has_pixmap_texture = false;
} else {
m_pixmap = new QPixmap(pm);
@@ -202,7 +202,7 @@ struct QTexturedBrushData : public QBrushData
void setImage(const QImage &image) {
m_image = image;
delete m_pixmap;
- m_pixmap = 0;
+ m_pixmap = nullptr;
m_has_pixmap_texture = false;
}
@@ -360,7 +360,7 @@ public:
{
if (!brush->ref.deref())
delete brush;
- brush = 0;
+ brush = nullptr;
}
};
@@ -831,7 +831,7 @@ const QGradient *QBrush::gradient() const
|| d->style == Qt::ConicalGradientPattern) {
return &static_cast<const QGradientBrushData *>(d.data())->gradient;
}
- return 0;
+ return nullptr;
}
Q_GUI_EXPORT bool qt_isExtendedRadialGradient(const QBrush &brush)
@@ -968,7 +968,7 @@ bool QBrush::operator==(const QBrush &b) const
// but does not share the same data in memory. Since equality is likely to
// be used to avoid iterating over the data for a texture update, this should
// still be better than doing an accurate comparison.
- const QPixmap *us = 0, *them = 0;
+ const QPixmap *us = nullptr, *them = nullptr;
qint64 cacheKey1, cacheKey2;
if (qHasPixmapTexture(*this)) {
us = (static_cast<QTexturedBrushData *>(d.data()))->m_pixmap;
@@ -1335,7 +1335,7 @@ QDataStream &operator>>(QDataStream &s, QBrush &b)
\internal
*/
QGradient::QGradient()
- : m_type(NoGradient), dummy(0)
+ : m_type(NoGradient), dummy(nullptr)
{
}
diff --git a/src/gui/painting/qcosmeticstroker.cpp b/src/gui/painting/qcosmeticstroker.cpp
index 0fb89a75b5..bece814a6f 100644
--- a/src/gui/painting/qcosmeticstroker.cpp
+++ b/src/gui/painting/qcosmeticstroker.cpp
@@ -225,7 +225,7 @@ static StrokeLine strokeLine(int strokeSelection)
break;
default:
Q_ASSERT(false);
- stroke = 0;
+ stroke = nullptr;
}
return stroke;
}
@@ -252,8 +252,8 @@ void QCosmeticStroker::setup()
const QVector<qreal> &penPattern = state->lastPen.dashPattern();
if (penPattern.isEmpty()) {
Q_ASSERT(!pattern && !reversePattern);
- pattern = 0;
- reversePattern = 0;
+ pattern = nullptr;
+ reversePattern = nullptr;
patternLength = 0;
patternSize = 0;
} else {
diff --git a/src/gui/painting/qdrawhelper.cpp b/src/gui/painting/qdrawhelper.cpp
index e8d129d047..6819545bda 100644
--- a/src/gui/painting/qdrawhelper.cpp
+++ b/src/gui/painting/qdrawhelper.cpp
@@ -310,7 +310,7 @@ inline void QT_FASTCALL storePixel<QPixelLayout::BPP24>(uchar *dest, int index,
typedef uint (QT_FASTCALL *FetchPixelFunc)(const uchar *src, int index);
static const FetchPixelFunc qFetchPixel[QPixelLayout::BPPCount] = {
- 0, // BPPNone
+ nullptr, // BPPNone
fetchPixel<QPixelLayout::BPP1MSB>, // BPP1MSB
fetchPixel<QPixelLayout::BPP1LSB>, // BPP1LSB
fetchPixel<QPixelLayout::BPP8>, // BPP8
@@ -1713,10 +1713,10 @@ static uint *QT_FASTCALL destFetchUndefined(uint *buffer, QRasterBuffer *, int,
static DestFetchProc destFetchProc[QImage::NImageFormats] =
{
- 0, // Format_Invalid
+ nullptr, // Format_Invalid
destFetchMono, // Format_Mono,
destFetchMonoLsb, // Format_MonoLSB
- 0, // Format_Indexed8
+ nullptr, // Format_Indexed8
destFetchARGB32P, // Format_RGB32
destFetch, // Format_ARGB32,
destFetchARGB32P, // Format_ARGB32_Premultiplied
@@ -1764,10 +1764,10 @@ static QRgba64 * QT_FASTCALL destFetch64Undefined(QRgba64 *buffer, QRasterBuffer
static DestFetchProc64 destFetchProc64[QImage::NImageFormats] =
{
- 0, // Format_Invalid
- 0, // Format_Mono,
- 0, // Format_MonoLSB
- 0, // Format_Indexed8
+ nullptr, // Format_Invalid
+ nullptr, // Format_Mono,
+ nullptr, // Format_MonoLSB
+ nullptr, // Format_Indexed8
destFetch64, // Format_RGB32
destFetch64, // Format_ARGB32,
destFetch64, // Format_ARGB32_Premultiplied
@@ -1905,13 +1905,13 @@ static void QT_FASTCALL destStore(QRasterBuffer *rasterBuffer, int x, int y, con
static DestStoreProc destStoreProc[QImage::NImageFormats] =
{
- 0, // Format_Invalid
+ nullptr, // Format_Invalid
destStoreMono, // Format_Mono,
destStoreMonoLsb, // Format_MonoLSB
- 0, // Format_Indexed8
- 0, // Format_RGB32
+ nullptr, // Format_Indexed8
+ nullptr, // Format_RGB32
destStore, // Format_ARGB32,
- 0, // Format_ARGB32_Premultiplied
+ nullptr, // Format_ARGB32_Premultiplied
destStoreRGB16, // Format_RGB16
destStore, // Format_ARGB8565_Premultiplied
destStore, // Format_RGB666
@@ -1955,10 +1955,10 @@ static void QT_FASTCALL destStore64RGBA64(QRasterBuffer *rasterBuffer, int x, in
static DestStoreProc64 destStoreProc64[QImage::NImageFormats] =
{
- 0, // Format_Invalid
- 0, // Format_Mono,
- 0, // Format_MonoLSB
- 0, // Format_Indexed8
+ nullptr, // Format_Invalid
+ nullptr, // Format_Mono,
+ nullptr, // Format_MonoLSB
+ nullptr, // Format_Indexed8
destStore64, // Format_RGB32
destStore64, // Format_ARGB32,
destStore64, // Format_ARGB32_Premultiplied
@@ -1980,9 +1980,9 @@ static DestStoreProc64 destStoreProc64[QImage::NImageFormats] =
destStore64, // Format_A2RGB30_Premultiplied
destStore64, // Format_Alpha8
destStore64, // Format_Grayscale8
- 0, // Format_RGBX64
+ nullptr, // Format_RGBX64
destStore64RGBA64, // Format_RGBA64
- 0, // Format_RGBA64_Premultiplied
+ nullptr, // Format_RGBA64_Premultiplied
destStore64, // Format_Grayscale16
destStore64, // Format_BGR888
};
@@ -3627,9 +3627,9 @@ static const QRgba64 *QT_FASTCALL fetchTransformedBilinear64_uint32(QRgba64 *buf
#endif
fetcher(sbuf1, sbuf2, len, data->texture, fx, fy, fdx, fdy);
- layout->convertToRGBA64PM(buf1, sbuf1, len * 2, clut, 0);
+ layout->convertToRGBA64PM(buf1, sbuf1, len * 2, clut, nullptr);
if (disty)
- layout->convertToRGBA64PM(buf2, sbuf2, len * 2, clut, 0);
+ layout->convertToRGBA64PM(buf2, sbuf2, len * 2, clut, nullptr);
for (int i = 0; i < len; ++i) {
int distx = (fx & 0x0000ffff);
@@ -3662,8 +3662,8 @@ static const QRgba64 *QT_FASTCALL fetchTransformedBilinear64_uint32(QRgba64 *buf
fetcher(sbuf1, sbuf2, len, data->texture, fx, fy, fdx, fdy);
- layout->convertToRGBA64PM(buf1, sbuf1, len * 2, clut, 0);
- layout->convertToRGBA64PM(buf2, sbuf2, len * 2, clut, 0);
+ layout->convertToRGBA64PM(buf1, sbuf1, len * 2, clut, nullptr);
+ layout->convertToRGBA64PM(buf2, sbuf2, len * 2, clut, nullptr);
for (int i = 0; i < len; ++i) {
int distx = (fx & 0x0000ffff);
@@ -3727,8 +3727,8 @@ static const QRgba64 *QT_FASTCALL fetchTransformedBilinear64_uint32(QRgba64 *buf
fw += fdw;
}
- layout->convertToRGBA64PM(buf1, sbuf1, len * 2, clut, 0);
- layout->convertToRGBA64PM(buf2, sbuf2, len * 2, clut, 0);
+ layout->convertToRGBA64PM(buf1, sbuf1, len * 2, clut, nullptr);
+ layout->convertToRGBA64PM(buf2, sbuf2, len * 2, clut, nullptr);
for (int i = 0; i < len; ++i) {
int distx = distxs[i];
@@ -3907,7 +3907,7 @@ static const QRgba64 *QT_FASTCALL fetchTransformedBilinear64(QRgba64 *buffer, co
// FetchUntransformed can have more specialized methods added depending on SIMD features.
static SourceFetchProc sourceFetchUntransformed[QImage::NImageFormats] = {
- 0, // Invalid
+ nullptr, // Invalid
fetchUntransformed, // Mono
fetchUntransformed, // MonoLsb
fetchUntransformed, // Indexed8
@@ -4348,9 +4348,9 @@ static inline Operator getOperator(const QSpanData *data, const QSpan *spans, in
switch(data->type) {
case QSpanData::Solid:
solidSource = data->solidColor.isOpaque();
- op.srcFetch = 0;
+ op.srcFetch = nullptr;
#if QT_CONFIG(raster_64bit)
- op.srcFetch64 = 0;
+ op.srcFetch64 = nullptr;
#endif
break;
case QSpanData::LinearGradient:
@@ -4721,7 +4721,7 @@ struct QBlendBase
QBlendBase(QSpanData *d, const Operator &o)
: data(d)
, op(o)
- , dest(0)
+ , dest(nullptr)
{
}
@@ -6397,21 +6397,21 @@ static void qt_rectfill_quint64(QRasterBuffer *rasterBuffer,
DrawHelper qDrawHelper[QImage::NImageFormats] =
{
// Format_Invalid,
- { 0, 0, 0, 0, 0 },
+ { nullptr, nullptr, nullptr, nullptr, nullptr },
// Format_Mono,
{
blend_color_generic,
- 0, 0, 0, 0
+ nullptr, nullptr, nullptr, nullptr
},
// Format_MonoLSB,
{
blend_color_generic,
- 0, 0, 0, 0
+ nullptr, nullptr, nullptr, nullptr
},
// Format_Indexed8,
{
blend_color_generic,
- 0, 0, 0, 0
+ nullptr, nullptr, nullptr, nullptr
},
// Format_RGB32,
{
@@ -6448,7 +6448,7 @@ DrawHelper qDrawHelper[QImage::NImageFormats] =
// Format_ARGB8565_Premultiplied
{
blend_color_generic,
- 0,
+ nullptr,
qt_alphamapblit_generic,
qt_alphargbblit_generic,
qt_rectfill_quint24
@@ -6456,7 +6456,7 @@ DrawHelper qDrawHelper[QImage::NImageFormats] =
// Format_RGB666
{
blend_color_generic,
- 0,
+ nullptr,
qt_alphamapblit_generic,
qt_alphargbblit_generic,
qt_rectfill_quint24
@@ -6464,7 +6464,7 @@ DrawHelper qDrawHelper[QImage::NImageFormats] =
// Format_ARGB6666_Premultiplied
{
blend_color_generic,
- 0,
+ nullptr,
qt_alphamapblit_generic,
qt_alphargbblit_generic,
qt_rectfill_quint24
@@ -6472,7 +6472,7 @@ DrawHelper qDrawHelper[QImage::NImageFormats] =
// Format_RGB555
{
blend_color_generic,
- 0,
+ nullptr,
qt_alphamapblit_generic,
qt_alphargbblit_generic,
qt_rectfill_quint16
@@ -6480,7 +6480,7 @@ DrawHelper qDrawHelper[QImage::NImageFormats] =
// Format_ARGB8555_Premultiplied
{
blend_color_generic,
- 0,
+ nullptr,
qt_alphamapblit_generic,
qt_alphargbblit_generic,
qt_rectfill_quint24
@@ -6488,7 +6488,7 @@ DrawHelper qDrawHelper[QImage::NImageFormats] =
// Format_RGB888
{
blend_color_generic,
- 0,
+ nullptr,
qt_alphamapblit_generic,
qt_alphargbblit_generic,
qt_rectfill_quint24
@@ -6496,7 +6496,7 @@ DrawHelper qDrawHelper[QImage::NImageFormats] =
// Format_RGB444
{
blend_color_generic,
- 0,
+ nullptr,
qt_alphamapblit_generic,
qt_alphargbblit_generic,
qt_rectfill_quint16
@@ -6504,7 +6504,7 @@ DrawHelper qDrawHelper[QImage::NImageFormats] =
// Format_ARGB4444_Premultiplied
{
blend_color_generic,
- 0,
+ nullptr,
qt_alphamapblit_generic,
qt_alphargbblit_generic,
qt_rectfill_quint16
@@ -6568,7 +6568,7 @@ DrawHelper qDrawHelper[QImage::NImageFormats] =
// Format_Alpha8
{
blend_color_generic,
- 0,
+ nullptr,
qt_alphamapblit_generic,
qt_alphargbblit_generic,
qt_rectfill_alpha
@@ -6576,7 +6576,7 @@ DrawHelper qDrawHelper[QImage::NImageFormats] =
// Format_Grayscale8
{
blend_color_generic,
- 0,
+ nullptr,
qt_alphamapblit_generic,
qt_alphargbblit_generic,
qt_rectfill_gray
@@ -6584,7 +6584,7 @@ DrawHelper qDrawHelper[QImage::NImageFormats] =
// Format_RGBX64
{
blend_color_generic_rgb64,
- 0,
+ nullptr,
qt_alphamapblit_generic,
qt_alphargbblit_generic,
qt_rectfill_quint64
@@ -6592,7 +6592,7 @@ DrawHelper qDrawHelper[QImage::NImageFormats] =
// Format_RGBA64
{
blend_color_generic_rgb64,
- 0,
+ nullptr,
qt_alphamapblit_generic,
qt_alphargbblit_generic,
qt_rectfill_quint64
@@ -6600,7 +6600,7 @@ DrawHelper qDrawHelper[QImage::NImageFormats] =
// Format_RGBA64_Premultiplied
{
blend_color_generic_rgb64,
- 0,
+ nullptr,
qt_alphamapblit_generic,
qt_alphargbblit_generic,
qt_rectfill_quint64
@@ -6608,7 +6608,7 @@ DrawHelper qDrawHelper[QImage::NImageFormats] =
// Format_Grayscale16
{
blend_color_generic_rgb64,
- 0,
+ nullptr,
qt_alphamapblit_generic,
qt_alphargbblit_generic,
qt_rectfill_quint16
@@ -6616,7 +6616,7 @@ DrawHelper qDrawHelper[QImage::NImageFormats] =
// Format_BGR888
{
blend_color_generic,
- 0,
+ nullptr,
qt_alphamapblit_generic,
qt_alphargbblit_generic,
qt_rectfill_quint24
diff --git a/src/gui/painting/qemulationpaintengine.cpp b/src/gui/painting/qemulationpaintengine.cpp
index 0c0df0fb13..7cd700a84a 100644
--- a/src/gui/painting/qemulationpaintengine.cpp
+++ b/src/gui/painting/qemulationpaintengine.cpp
@@ -271,7 +271,7 @@ void QEmulationPaintEngine::fillBGRect(const QRectF &r)
{
qreal pts[] = { r.x(), r.y(), r.x() + r.width(), r.y(),
r.x() + r.width(), r.y() + r.height(), r.x(), r.y() + r.height() };
- QVectorPath vp(pts, 4, 0, QVectorPath::RectangleHint);
+ QVectorPath vp(pts, 4, nullptr, QVectorPath::RectangleHint);
real_engine->fill(vp, state()->bgBrush);
}
diff --git a/src/gui/painting/qimagescale.cpp b/src/gui/painting/qimagescale.cpp
index 0d7205b483..2e2f65b483 100644
--- a/src/gui/painting/qimagescale.cpp
+++ b/src/gui/painting/qimagescale.cpp
@@ -223,7 +223,7 @@ static QImageScaleInfo* QImageScale::qimageFreeScaleInfo(QImageScaleInfo *isi)
delete[] isi->yapoints;
delete isi;
}
- return 0;
+ return nullptr;
}
static QImageScaleInfo* QImageScale::qimageCalcScaleInfo(const QImage &img,
@@ -238,7 +238,7 @@ static QImageScaleInfo* QImageScale::qimageCalcScaleInfo(const QImage &img,
isi = new QImageScaleInfo;
if (!isi)
- return 0;
+ return nullptr;
isi->xup_yup = (qAbs(dw) >= sw) + ((qAbs(dh) >= sh) << 1);
diff --git a/src/gui/painting/qmemrotate.cpp b/src/gui/painting/qmemrotate.cpp
index 9cb787fb2c..685fbbb37a 100644
--- a/src/gui/painting/qmemrotate.cpp
+++ b/src/gui/painting/qmemrotate.cpp
@@ -406,9 +406,9 @@ void qt_memrotate270_64(const uchar *srcPixels, int w, int h, int sbpl, uchar *d
MemRotateFunc qMemRotateFunctions[QPixelLayout::BPPCount][3] =
// 90, 180, 270
{
- { 0, 0, 0 }, // BPPNone,
- { 0, 0, 0 }, // BPP1MSB,
- { 0, 0, 0 }, // BPP1LSB,
+ { nullptr, nullptr, nullptr }, // BPPNone,
+ { nullptr, nullptr, nullptr }, // BPP1MSB,
+ { nullptr, nullptr, nullptr }, // BPP1LSB,
{ qt_memrotate90_8, qt_memrotate180_8, qt_memrotate270_8 }, // BPP8,
{ qt_memrotate90_16, qt_memrotate180_16, qt_memrotate270_16 }, // BPP16,
{ qt_memrotate90_24, qt_memrotate180_24, qt_memrotate270_24 }, // BPP24
diff --git a/src/gui/painting/qoutlinemapper.cpp b/src/gui/painting/qoutlinemapper.cpp
index 2074f98069..67e450986d 100644
--- a/src/gui/painting/qoutlinemapper.cpp
+++ b/src/gui/painting/qoutlinemapper.cpp
@@ -209,7 +209,7 @@ void QOutlineMapper::endOutline()
elements[i] = m_transform.map(elements[i]);
} else {
const QVectorPath vp((qreal *)elements, m_elements.size(),
- m_element_types.size() ? m_element_types.data() : 0);
+ m_element_types.size() ? m_element_types.data() : nullptr);
QPainterPath path = vp.convertToPainterPath();
path = m_transform.map(path);
if (!(m_outline.flags & QT_FT_OUTLINE_EVEN_ODD_FILL))
diff --git a/src/gui/painting/qpagesize.cpp b/src/gui/painting/qpagesize.cpp
index c98ca8a1fb..d73a66b790 100644
--- a/src/gui/painting/qpagesize.cpp
+++ b/src/gui/painting/qpagesize.cpp
@@ -394,7 +394,7 @@ static QString qt_keyForPageSizeId(QPageSize::PageSizeId id)
}
// Return id name for PPD Key
-static QPageSize::PageSizeId qt_idForPpdKey(const QString &ppdKey, QSize *match = 0)
+static QPageSize::PageSizeId qt_idForPpdKey(const QString &ppdKey, QSize *match = nullptr)
{
if (ppdKey.isEmpty())
return QPageSize::Custom;
@@ -415,7 +415,7 @@ static QPageSize::PageSizeId qt_idForPpdKey(const QString &ppdKey, QSize *match
}
// Return id name for Windows ID
-static QPageSize::PageSizeId qt_idForWindowsID(int windowsId, QSize *match = 0)
+static QPageSize::PageSizeId qt_idForWindowsID(int windowsId, QSize *match = nullptr)
{
// If outside known values then is Custom
if (windowsId <= DMPAPER_NONE || windowsId > DMPAPER_LAST)
@@ -770,7 +770,7 @@ QPageSizePrivate::QPageSizePrivate(const QSize &pointSize, const QString &name,
m_units(QPageSize::Point)
{
if (pointSize.isValid()) {
- QPageSize::PageSizeId id = qt_idForPointSize(pointSize, matchPolicy, 0);
+ QPageSize::PageSizeId id = qt_idForPointSize(pointSize, matchPolicy, nullptr);
id == QPageSize::Custom ? init(pointSize, name) : init(id, name);
}
}
@@ -782,7 +782,7 @@ QPageSizePrivate::QPageSizePrivate(const QSizeF &size, QPageSize::Unit units,
m_units(QPageSize::Point)
{
if (size.isValid()) {
- QPageSize::PageSizeId id = qt_idForSize(size, units, matchPolicy, 0);
+ QPageSize::PageSizeId id = qt_idForSize(size, units, matchPolicy, nullptr);
id == QPageSize::Custom ? init(size, units, name) : init(id, name);
}
}
@@ -793,10 +793,10 @@ QPageSizePrivate::QPageSizePrivate(const QString &key, const QSize &pointSize, c
m_units(QPageSize::Point)
{
if (!key.isEmpty() && pointSize.isValid()) {
- QPageSize::PageSizeId id = qt_idForPpdKey(key, 0);
+ QPageSize::PageSizeId id = qt_idForPpdKey(key, nullptr);
// If not a known PPD key, check if size is a standard PPD size
if (id == QPageSize::Custom)
- id = qt_idForPointSize(pointSize, QPageSize::FuzzyMatch, 0);
+ id = qt_idForPointSize(pointSize, QPageSize::FuzzyMatch, nullptr);
id == QPageSize::Custom ? init(pointSize, name) : init(id, name);
m_key = key;
}
@@ -808,10 +808,10 @@ QPageSizePrivate::QPageSizePrivate(int windowsId, const QSize &pointSize, const
m_units(QPageSize::Point)
{
if (windowsId > 0 && pointSize.isValid()) {
- QPageSize::PageSizeId id = qt_idForWindowsID(windowsId, 0);
+ QPageSize::PageSizeId id = qt_idForWindowsID(windowsId, nullptr);
// If not a known Windows ID, check if size is a standard PPD size
if (id == QPageSize::Custom)
- id = qt_idForPointSize(pointSize, QPageSize::FuzzyMatch, 0);
+ id = qt_idForPointSize(pointSize, QPageSize::FuzzyMatch, nullptr);
id == QPageSize::Custom ? init(pointSize, name) : init(id, name);
m_windowsId = windowsId;
}
@@ -1753,7 +1753,7 @@ QString QPageSize::name(PageSizeId pageSizeId)
QPageSize::PageSizeId QPageSize::id(const QSize &pointSize, SizeMatchPolicy matchPolicy)
{
- return qt_idForPointSize(pointSize, matchPolicy, 0);
+ return qt_idForPointSize(pointSize, matchPolicy, nullptr);
}
/*!
@@ -1769,7 +1769,7 @@ QPageSize::PageSizeId QPageSize::id(const QSize &pointSize, SizeMatchPolicy matc
QPageSize::PageSizeId QPageSize::id(const QSizeF &size, Unit units,
SizeMatchPolicy matchPolicy)
{
- return qt_idForSize(size, units, matchPolicy, 0);
+ return qt_idForSize(size, units, matchPolicy, nullptr);
}
/*!
diff --git a/src/gui/painting/qpaintdevice.cpp b/src/gui/painting/qpaintdevice.cpp
index 0ddfba6ee9..4afb89b52e 100644
--- a/src/gui/painting/qpaintdevice.cpp
+++ b/src/gui/painting/qpaintdevice.cpp
@@ -43,7 +43,7 @@ QT_BEGIN_NAMESPACE
QPaintDevice::QPaintDevice() noexcept
{
- reserved = 0;
+ reserved = nullptr;
painters = 0;
}
@@ -67,7 +67,7 @@ void QPaintDevice::initPainter(QPainter *) const
*/
QPaintDevice *QPaintDevice::redirected(QPoint *) const
{
- return 0;
+ return nullptr;
}
/*!
@@ -75,7 +75,7 @@ QPaintDevice *QPaintDevice::redirected(QPoint *) const
*/
QPainter *QPaintDevice::sharedPainter() const
{
- return 0;
+ return nullptr;
}
Q_GUI_EXPORT int qt_paint_device_metric(const QPaintDevice *device, QPaintDevice::PaintDeviceMetric metric)
diff --git a/src/gui/painting/qpaintengine.cpp b/src/gui/painting/qpaintengine.cpp
index bfe1c9cadf..1785fcd12d 100644
--- a/src/gui/painting/qpaintengine.cpp
+++ b/src/gui/painting/qpaintengine.cpp
@@ -305,7 +305,7 @@ void QPaintEngine::syncState()
static_cast<QPaintEngineEx *>(this)->sync();
}
-static QPaintEngine *qt_polygon_recursion = 0;
+static QPaintEngine *qt_polygon_recursion = nullptr;
struct QT_Point {
int x;
int y;
@@ -334,7 +334,7 @@ void QPaintEngine::drawPolygon(const QPointF *points, int pointCount, PolygonDra
p[i].y = qRound(points[i].y());
}
drawPolygon((QPoint *)p.data(), pointCount, mode);
- qt_polygon_recursion = 0;
+ qt_polygon_recursion = nullptr;
}
struct QT_PointF {
@@ -363,7 +363,7 @@ void QPaintEngine::drawPolygon(const QPoint *points, int pointCount, PolygonDraw
p[i].y = points[i].y();
}
drawPolygon((QPointF *)p.data(), pointCount, mode);
- qt_polygon_recursion = 0;
+ qt_polygon_recursion = nullptr;
}
/*!
@@ -691,7 +691,7 @@ void QPaintEngine::drawImage(const QRectF &r, const QImage &image, const QRectF
*/
QPaintEngine::QPaintEngine(PaintEngineFeatures caps)
- : state(0),
+ : state(nullptr),
gccaps(caps),
active(0),
selfDestruct(false),
@@ -706,7 +706,7 @@ QPaintEngine::QPaintEngine(PaintEngineFeatures caps)
*/
QPaintEngine::QPaintEngine(QPaintEnginePrivate &dptr, PaintEngineFeatures caps)
- : state(0),
+ : state(nullptr),
gccaps(caps),
active(0),
selfDestruct(false),
@@ -728,7 +728,7 @@ QPaintEngine::~QPaintEngine()
*/
QPainter *QPaintEngine::painter() const
{
- return state ? state->painter() : 0;
+ return state ? state->painter() : nullptr;
}
/*!
diff --git a/src/gui/painting/qpaintengine_raster.cpp b/src/gui/painting/qpaintengine_raster.cpp
index 40c822076b..bc65ed56e3 100644
--- a/src/gui/painting/qpaintengine_raster.cpp
+++ b/src/gui/painting/qpaintengine_raster.cpp
@@ -115,17 +115,17 @@ public:
pts[7] = bottom;
}
inline QRectVectorPath(const QRect &r)
- : QVectorPath(pts, 4, 0, QVectorPath::RectangleHint | QVectorPath::ImplicitClose)
+ : QVectorPath(pts, 4, nullptr, QVectorPath::RectangleHint | QVectorPath::ImplicitClose)
{
set(r);
}
inline QRectVectorPath(const QRectF &r)
- : QVectorPath(pts, 4, 0, QVectorPath::RectangleHint | QVectorPath::ImplicitClose)
+ : QVectorPath(pts, 4, nullptr, QVectorPath::RectangleHint | QVectorPath::ImplicitClose)
{
set(r);
}
inline QRectVectorPath()
- : QVectorPath(pts, 4, 0, QVectorPath::RectangleHint | QVectorPath::ImplicitClose)
+ : QVectorPath(pts, 4, nullptr, QVectorPath::RectangleHint | QVectorPath::ImplicitClose)
{ }
qreal pts[8];
@@ -433,7 +433,7 @@ void QRasterPaintEngine::init()
break;
default:
qWarning("QRasterPaintEngine: unsupported target device %d\n", d->device->devType());
- d->device = 0;
+ d->device = nullptr;
return;
}
@@ -601,7 +601,7 @@ QRasterPaintEngineState::~QRasterPaintEngineState()
QRasterPaintEngineState::QRasterPaintEngineState()
{
- stroker = 0;
+ stroker = nullptr;
fillFlags = 0;
strokeFlags = 0;
@@ -621,7 +621,7 @@ QRasterPaintEngineState::QRasterPaintEngineState()
flags.tx_noshear = true;
flags.fast_images = true;
- clip = 0;
+ clip = nullptr;
flags.has_clip_ownership = false;
dirty = 0;
@@ -643,8 +643,8 @@ QRasterPaintEngineState::QRasterPaintEngineState(QRasterPaintEngineState &s)
, dirty(s.dirty)
, flag_bits(s.flag_bits)
{
- brushData.tempImage = 0;
- penData.tempImage = 0;
+ brushData.tempImage = nullptr;
+ penData.tempImage = nullptr;
flags.has_clip_ownership = false;
}
@@ -759,7 +759,7 @@ void QRasterPaintEngine::updatePen(const QPen &pen)
d->dashStroker->setDashOffset(pen.dashOffset());
s->stroker = d->dashStroker.data();
} else {
- s->stroker = 0;
+ s->stroker = nullptr;
}
ensureRasterState(); // needed because of tx_noshear...
@@ -1207,7 +1207,7 @@ static void qrasterpaintengine_state_setNoClip(QRasterPaintEngineState *s)
{
if (s->flags.has_clip_ownership)
delete s->clip;
- s->clip = 0;
+ s->clip = nullptr;
s->flags.has_clip_ownership = false;
}
@@ -1279,14 +1279,14 @@ void QRasterPaintEngine::clip(const QVectorPath &path, Qt::ClipOperation op)
// intersect with, in which case we simplify the operation to
// a replace...
Qt::ClipOperation isectOp = Qt::IntersectClip;
- if (base == 0)
+ if (base == nullptr)
isectOp = Qt::ReplaceClip;
QClipData *newClip = new QClipData(d->rasterBuffer->height());
newClip->initialize();
ClipData clipData = { base, newClip, isectOp };
ensureOutlineMapper();
- d->rasterize(d->outlineMapper->convertPath(path), qt_span_clip, &clipData, 0);
+ d->rasterize(d->outlineMapper->convertPath(path), qt_span_clip, &clipData, nullptr);
newClip->fixup();
@@ -1334,7 +1334,7 @@ bool QRasterPaintEngine::setClipRectInDeviceCoords(const QRect &r, Qt::ClipOpera
QRect clipRect = qrect_normalized(r) & d->deviceRect;
QRasterPaintEngineState *s = state();
- if (op == Qt::ReplaceClip || s->clip == 0) {
+ if (op == Qt::ReplaceClip || s->clip == nullptr) {
// No current clip, hence we intersect with sysclip and be
// done with it...
@@ -1970,7 +1970,7 @@ void QRasterPaintEngine::fillPolygon(const QPointF *points, int pointCount, Poly
}
// Compose polygon fill..,
- QVectorPath vp((const qreal *) points, pointCount, 0, QVectorPath::polygonFlags(mode));
+ QVectorPath vp((const qreal *) points, pointCount, nullptr, QVectorPath::polygonFlags(mode));
ensureOutlineMapper();
QT_FT_Outline *outline = d->outlineMapper->convertPath(vp);
@@ -2011,7 +2011,7 @@ void QRasterPaintEngine::drawPolygon(const QPointF *points, int pointCount, Poly
// Do the outline...
if (s->penData.blend) {
- QVectorPath vp((const qreal *) points, pointCount, 0, QVectorPath::polygonFlags(mode));
+ QVectorPath vp((const qreal *) points, pointCount, nullptr, QVectorPath::polygonFlags(mode));
if (s->flags.fast_pen) {
QCosmeticStroker stroker(s, d->deviceRect, d->deviceRectUnclipped);
stroker.setLegacyRoundingEnabled(s->flags.legacy_rounding);
@@ -2075,7 +2075,7 @@ void QRasterPaintEngine::drawPolygon(const QPoint *points, int pointCount, Polyg
QVarLengthArray<qreal> fpoints(count);
for (int i=0; i<count; ++i)
fpoints[i] = ((const int *) points)[i];
- QVectorPath vp((qreal *) fpoints.data(), pointCount, 0, QVectorPath::polygonFlags(mode));
+ QVectorPath vp((qreal *) fpoints.data(), pointCount, nullptr, QVectorPath::polygonFlags(mode));
if (s->flags.fast_pen) {
QCosmeticStroker stroker(s, d->deviceRect, d->deviceRectUnclipped);
@@ -2695,14 +2695,14 @@ void QRasterPaintEngine::alphaPenBlt(const void* src, int bpl, int depth, int rx
} else if (depth == 8) {
if (s->penData.alphamapBlit) {
s->penData.alphamapBlit(rb, rx, ry, s->penData.solidColor,
- scanline, w, h, bpl, 0, useGammaCorrection);
+ scanline, w, h, bpl, nullptr, useGammaCorrection);
return;
}
} else if (depth == 32) {
// (A)RGB Alpha mask where the alpha component is not used.
if (s->penData.alphaRGBBlit) {
s->penData.alphaRGBBlit(rb, rx, ry, s->penData.solidColor,
- (const uint *) scanline, w, h, bpl / 4, 0, useGammaCorrection);
+ (const uint *) scanline, w, h, bpl / 4, nullptr, useGammaCorrection);
return;
}
}
@@ -2917,10 +2917,10 @@ bool QRasterPaintEngine::drawCachedGlyphs(int numGlyphs, const glyph_t *glyphs,
QFontEngine::GlyphFormat glyphFormat = fontEngine->glyphFormat != QFontEngine::Format_None ? fontEngine->glyphFormat : d->glyphCacheFormat;
QImageTextureGlyphCache *cache =
- static_cast<QImageTextureGlyphCache *>(fontEngine->glyphCache(0, glyphFormat, s->matrix, QColor(s->penData.solidColor)));
+ static_cast<QImageTextureGlyphCache *>(fontEngine->glyphCache(nullptr, glyphFormat, s->matrix, QColor(s->penData.solidColor)));
if (!cache) {
cache = new QImageTextureGlyphCache(glyphFormat, s->matrix, QColor(s->penData.solidColor));
- fontEngine->setGlyphCache(0, cache);
+ fontEngine->setGlyphCache(nullptr, cache);
}
cache->populate(fontEngine, numGlyphs, glyphs, positions);
@@ -3672,7 +3672,7 @@ void QRasterPaintEnginePrivate::rasterize(QT_FT_Outline *outline,
int rasterPoolSize = MINIMUM_POOL_SIZE;
uchar rasterPoolOnStack[MINIMUM_POOL_SIZE + 0xf];
uchar *rasterPoolBase = alignAddress(rasterPoolOnStack, 0xf);
- uchar *rasterPoolOnHeap = 0;
+ uchar *rasterPoolOnHeap = nullptr;
qt_ft_grays_raster.raster_reset(*grayRaster.data(), rasterPoolBase, rasterPoolSize);
@@ -3684,13 +3684,13 @@ void QRasterPaintEnginePrivate::rasterize(QT_FT_Outline *outline,
deviceRect.y() + deviceRect.height() };
QT_FT_Raster_Params rasterParams;
- rasterParams.target = 0;
+ rasterParams.target = nullptr;
rasterParams.source = outline;
rasterParams.flags = QT_FT_RASTER_FLAG_CLIP;
- rasterParams.gray_spans = 0;
- rasterParams.black_spans = 0;
- rasterParams.bit_test = 0;
- rasterParams.bit_set = 0;
+ rasterParams.gray_spans = nullptr;
+ rasterParams.black_spans = nullptr;
+ rasterParams.bit_test = nullptr;
+ rasterParams.bit_set = nullptr;
rasterParams.user = data;
rasterParams.clip_box = clip_box;
@@ -3843,10 +3843,10 @@ QImage::Format QRasterBuffer::prepare(QImage *image)
QClipData::QClipData(int height)
{
clipSpanHeight = height;
- m_clipLines = 0;
+ m_clipLines = nullptr;
allocated = 0;
- m_spans = 0;
+ m_spans = nullptr;
xmin = xmax = ymin = ymax = 0;
count = 0;
@@ -3890,7 +3890,7 @@ void QClipData::initialize()
const int currMaxY = currMinY + rects[firstInBand].height();
while (y < currMinY) {
- m_clipLines[y].spans = 0;
+ m_clipLines[y].spans = nullptr;
m_clipLines[y].count = 0;
++y;
}
@@ -3922,7 +3922,7 @@ void QClipData::initialize()
Q_ASSERT(count <= allocated);
while (y < clipSpanHeight) {
- m_clipLines[y].spans = 0;
+ m_clipLines[y].spans = nullptr;
m_clipLines[y].count = 0;
++y;
}
@@ -3936,7 +3936,7 @@ void QClipData::initialize()
if (hasRectClip) {
int y = 0;
while (y < ymin) {
- m_clipLines[y].spans = 0;
+ m_clipLines[y].spans = nullptr;
m_clipLines[y].count = 0;
++y;
}
@@ -3957,19 +3957,19 @@ void QClipData::initialize()
}
while (y < clipSpanHeight) {
- m_clipLines[y].spans = 0;
+ m_clipLines[y].spans = nullptr;
m_clipLines[y].count = 0;
++y;
}
}
} QT_CATCH(...) {
free(m_spans); // have to free m_spans again or someone might think that we were successfully initialized.
- m_spans = 0;
+ m_spans = nullptr;
QT_RETHROW;
}
} QT_CATCH(...) {
free(m_clipLines); // same for clipLines
- m_clipLines = 0;
+ m_clipLines = nullptr;
QT_RETHROW;
}
}
@@ -4044,7 +4044,7 @@ void QClipData::setClipRect(const QRect &rect)
if (m_spans) {
free(m_spans);
- m_spans = 0;
+ m_spans = nullptr;
}
// qDebug() << xmin << xmax << ymin << ymax;
@@ -4074,7 +4074,7 @@ void QClipData::setClipRegion(const QRegion &region)
if (m_spans) {
free(m_spans);
- m_spans = 0;
+ m_spans = nullptr;
}
}
@@ -4532,7 +4532,7 @@ void QSpanData::init(QRasterBuffer *rb, const QRasterPaintEngine *pe)
bilinear = false;
m11 = m22 = m33 = 1.;
m12 = m13 = m21 = m23 = dx = dy = 0.0;
- clip = pe ? pe->d_func()->clip() : 0;
+ clip = pe ? pe->d_func()->clip() : nullptr;
}
Q_GUI_EXPORT extern QImage qt_imageForBrush(int brushStyle, bool invert);
@@ -4668,15 +4668,15 @@ void QSpanData::setup(const QBrush &brush, int alpha, QPainter::CompositionMode
void QSpanData::adjustSpanMethods()
{
- bitmapBlit = 0;
- alphamapBlit = 0;
- alphaRGBBlit = 0;
+ bitmapBlit = nullptr;
+ alphamapBlit = nullptr;
+ alphaRGBBlit = nullptr;
- fillRect = 0;
+ fillRect = nullptr;
switch(type) {
case None:
- unclipped_blend = 0;
+ unclipped_blend = nullptr;
break;
case Solid: {
const DrawHelper &drawHelper = qDrawHelper[rasterBuffer->format];
@@ -4695,17 +4695,17 @@ void QSpanData::adjustSpanMethods()
case Texture:
unclipped_blend = qBlendTexture;
if (!texture.imageData)
- unclipped_blend = 0;
+ unclipped_blend = nullptr;
break;
}
// setup clipping
if (!unclipped_blend) {
- blend = 0;
+ blend = nullptr;
} else if (!clip) {
blend = unclipped_blend;
} else if (clip->hasRectClip) {
- blend = clip->clipRect.isEmpty() ? 0 : qt_span_fill_clipRect;
+ blend = clip->clipRect.isEmpty() ? nullptr : qt_span_fill_clipRect;
} else {
blend = qt_span_fill_clipped;
}
@@ -4748,7 +4748,7 @@ void QSpanData::initTexture(const QImage *image, int alpha, QTextureData::Type _
{
const QImageData *d = const_cast<QImage *>(image)->data_ptr();
if (!d || d->height == 0) {
- texture.imageData = 0;
+ texture.imageData = nullptr;
texture.width = 0;
texture.height = 0;
texture.x1 = 0;
@@ -4757,7 +4757,7 @@ void QSpanData::initTexture(const QImage *image, int alpha, QTextureData::Type _
texture.y2 = 0;
texture.bytesPerLine = 0;
texture.format = QImage::Format_Invalid;
- texture.colorTable = 0;
+ texture.colorTable = nullptr;
texture.hasAlpha = alpha != 256;
} else {
texture.imageData = d->data;
@@ -4779,7 +4779,7 @@ void QSpanData::initTexture(const QImage *image, int alpha, QTextureData::Type _
texture.bytesPerLine = d->bytes_per_line;
texture.format = d->format;
- texture.colorTable = (d->format <= QImage::Format_Indexed8 && !d->colortable.isEmpty()) ? &d->colortable : 0;
+ texture.colorTable = (d->format <= QImage::Format_Indexed8 && !d->colortable.isEmpty()) ? &d->colortable : nullptr;
texture.hasAlpha = image->hasAlphaChannel() || alpha != 256;
}
texture.const_alpha = alpha;
diff --git a/src/gui/painting/qpaintengineex.cpp b/src/gui/painting/qpaintengineex.cpp
index 8314e8bc8a..5d8f89eadd 100644
--- a/src/gui/painting/qpaintengineex.cpp
+++ b/src/gui/painting/qpaintengineex.cpp
@@ -115,7 +115,7 @@ QVectorPath::CacheEntry *QVectorPath::addCacheData(QPaintEngineEx *engine, void
qvectorpath_cache_cleanup cleanup) const{
Q_ASSERT(!lookupCacheData(engine));
if ((m_hints & IsCachedHint) == 0) {
- m_cache = 0;
+ m_cache = nullptr;
m_hints |= IsCachedHint;
}
CacheEntry *e = new CacheEntry;
@@ -162,8 +162,8 @@ struct StrokeHandler {
QPaintEngineExPrivate::QPaintEngineExPrivate()
: dasher(&stroker),
- strokeHandler(0),
- activeStroker(0),
+ strokeHandler(nullptr),
+ activeStroker(nullptr),
strokerPen(Qt::NoPen)
{
}
@@ -211,7 +211,7 @@ void QPaintEngineExPrivate::replayClipOperations()
right, info.rectf.y(),
right, bottom,
info.rectf.x(), bottom };
- QVectorPath vp(pts, 4, 0, QVectorPath::RectangleHint);
+ QVectorPath vp(pts, 4, nullptr, QVectorPath::RectangleHint);
q->clip(vp, info.operation);
break;
}
@@ -418,7 +418,7 @@ void QPaintEngineEx::stroke(const QVectorPath &path, const QPen &pen)
if (style == Qt::SolidLine) {
d->activeStroker = &d->stroker;
} else if (style == Qt::NoPen) {
- d->activeStroker = 0;
+ d->activeStroker = nullptr;
} else {
d->dasher.setDashPattern(pen.dashPattern());
d->dasher.setDashOffset(pen.dashOffset());
@@ -616,7 +616,7 @@ void QPaintEngineEx::clip(const QRect &r, Qt::ClipOperation op)
right, bottom,
qreal(r.x()), bottom,
qreal(r.x()), qreal(r.y()) };
- QVectorPath vp(pts, 5, 0, QVectorPath::RectangleHint);
+ QVectorPath vp(pts, 5, nullptr, QVectorPath::RectangleHint);
clip(vp, op);
}
@@ -687,7 +687,7 @@ void QPaintEngineEx::clip(const QRegion &region, Qt::ClipOperation op)
void QPaintEngineEx::clip(const QPainterPath &path, Qt::ClipOperation op)
{
if (path.isEmpty()) {
- QVectorPath vp(0, 0);
+ QVectorPath vp(nullptr, 0);
clip(vp, op);
} else {
clip(qtVectorPathForPath(path), op);
@@ -698,7 +698,7 @@ void QPaintEngineEx::fillRect(const QRectF &r, const QBrush &brush)
{
qreal pts[] = { r.x(), r.y(), r.x() + r.width(), r.y(),
r.x() + r.width(), r.y() + r.height(), r.x(), r.y() + r.height() };
- QVectorPath vp(pts, 4, 0, QVectorPath::RectangleHint);
+ QVectorPath vp(pts, 4, nullptr, QVectorPath::RectangleHint);
fill(vp, brush);
}
@@ -719,7 +719,7 @@ void QPaintEngineEx::drawRects(const QRect *rects, int rectCount)
right, bottom,
qreal(r.x()), bottom,
qreal(r.x()), qreal(r.y()) };
- QVectorPath vp(pts, 5, 0, QVectorPath::RectangleHint);
+ QVectorPath vp(pts, 5, nullptr, QVectorPath::RectangleHint);
draw(vp);
}
}
@@ -735,7 +735,7 @@ void QPaintEngineEx::drawRects(const QRectF *rects, int rectCount)
right, bottom,
r.x(), bottom,
r.x(), r.y() };
- QVectorPath vp(pts, 5, 0, QVectorPath::RectangleHint);
+ QVectorPath vp(pts, 5, nullptr, QVectorPath::RectangleHint);
draw(vp);
}
}
@@ -871,7 +871,7 @@ void QPaintEngineEx::drawPoints(const QPointF *points, int pointCount)
} else {
for (int i=0; i<pointCount; ++i) {
qreal pts[] = { points[i].x(), points[i].y(), points[i].x() + qreal(1/63.), points[i].y() };
- QVectorPath path(pts, 2, 0);
+ QVectorPath path(pts, 2, nullptr);
stroke(path, pen);
}
}
@@ -903,7 +903,7 @@ void QPaintEngineEx::drawPoints(const QPoint *points, int pointCount)
for (int i=0; i<pointCount; ++i) {
qreal pts[] = { qreal(points[i].x()), qreal(points[i].y()),
qreal(points[i].x() +1/63.), qreal(points[i].y()) };
- QVectorPath path(pts, 2, 0);
+ QVectorPath path(pts, 2, nullptr);
stroke(path, pen);
}
}
@@ -912,7 +912,7 @@ void QPaintEngineEx::drawPoints(const QPoint *points, int pointCount)
void QPaintEngineEx::drawPolygon(const QPointF *points, int pointCount, PolygonDrawMode mode)
{
- QVectorPath path((const qreal *) points, pointCount, 0, QVectorPath::polygonFlags(mode));
+ QVectorPath path((const qreal *) points, pointCount, nullptr, QVectorPath::polygonFlags(mode));
if (mode == PolylineMode)
stroke(path, state()->pen);
@@ -928,7 +928,7 @@ void QPaintEngineEx::drawPolygon(const QPoint *points, int pointCount, PolygonDr
for (int i=0; i<count; ++i)
pts[i] = ((const int *) points)[i];
- QVectorPath path(pts.data(), pointCount, 0, QVectorPath::polygonFlags(mode));
+ QVectorPath path(pts.data(), pointCount, nullptr, QVectorPath::polygonFlags(mode));
if (mode == PolylineMode)
stroke(path, state()->pen);
@@ -960,7 +960,7 @@ void QPaintEngineEx::drawTiledPixmap(const QRectF &r, const QPixmap &pixmap, con
r.x() + r.width(), r.y() + r.height(),
r.x(), r.y() + r.height() };
- QVectorPath path(pts, 4, 0, QVectorPath::RectangleHint);
+ QVectorPath path(pts, 4, nullptr, QVectorPath::RectangleHint);
fill(path, brush);
}
@@ -1061,7 +1061,7 @@ void QPaintEngineEx::drawStaticTextItem(QStaticTextItem *staticTextItem)
QFontEngine *fontEngine = staticTextItem->fontEngine();
fontEngine->addGlyphsToPath(staticTextItem->glyphs, staticTextItem->glyphPositions,
- staticTextItem->numGlyphs, &path, 0);
+ staticTextItem->numGlyphs, &path, { });
if (!path.isEmpty()) {
QPainterState *s = state();
QPainter::RenderHints oldHints = s->renderHints;
diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp
index 3ce54c20be..f70bbbd7d2 100644
--- a/src/gui/painting/qpainter.cpp
+++ b/src/gui/painting/qpainter.cpp
@@ -330,7 +330,7 @@ void QPainterPrivate::detachPainterPrivate(QPainter *q)
original = new QPainterPrivate(q);
}
- d_ptrs[refcount - 1] = 0;
+ d_ptrs[refcount - 1] = nullptr;
q->restore();
q->d_ptr.take();
q->d_ptr.reset(original);
@@ -338,7 +338,7 @@ void QPainterPrivate::detachPainterPrivate(QPainter *q)
if (emulationEngine) {
extended = emulationEngine->real_engine;
delete emulationEngine;
- emulationEngine = 0;
+ emulationEngine = nullptr;
}
}
@@ -1485,9 +1485,9 @@ QPainter::QPainter()
*/
QPainter::QPainter(QPaintDevice *pd)
- : d_ptr(0)
+ : d_ptr(nullptr)
{
- Q_ASSERT(pd != 0);
+ Q_ASSERT(pd != nullptr);
if (!QPainterPrivate::attachPainterPrivate(this, pd)) {
d_ptr.reset(new QPainterPrivate(this));
begin(pd);
@@ -1718,9 +1718,9 @@ static inline void qt_cleanup_painter_state(QPainterPrivate *d)
{
qDeleteAll(d->states);
d->states.clear();
- d->state = 0;
- d->engine = 0;
- d->device = 0;
+ d->state = nullptr;
+ d->engine = nullptr;
+ d->device = nullptr;
}
bool QPainter::begin(QPaintDevice *pd)
@@ -1769,13 +1769,13 @@ bool QPainter::begin(QPaintDevice *pd)
d->device = pd;
- d->extended = d->engine->isExtended() ? static_cast<QPaintEngineEx *>(d->engine) : 0;
+ d->extended = d->engine->isExtended() ? static_cast<QPaintEngineEx *>(d->engine) : nullptr;
if (d->emulationEngine)
d->emulationEngine->real_engine = d->extended;
// Setup new state...
Q_ASSERT(!d->state);
- d->state = d->extended ? d->extended->createState(0) : new QPainterState;
+ d->state = d->extended ? d->extended->createState(nullptr) : new QPainterState;
d->state->painter = this;
d->states.push_back(d->state);
@@ -1915,11 +1915,11 @@ bool QPainter::end()
if (d->engine->isActive()) {
ended = d->engine->end();
- d->updateState(0);
+ d->updateState(nullptr);
--d->device->painters;
if (d->device->painters == 0) {
- d->engine->setPaintDevice(0);
+ d->engine->setPaintDevice(nullptr);
d->engine->setActive(false);
}
}
@@ -1935,11 +1935,11 @@ bool QPainter::end()
if (d->emulationEngine) {
delete d->emulationEngine;
- d->emulationEngine = 0;
+ d->emulationEngine = nullptr;
}
if (d->extended) {
- d->extended = 0;
+ d->extended = nullptr;
}
qt_cleanup_painter_state(d);
@@ -2761,7 +2761,7 @@ void QPainter::setClipRect(const QRectF &rect, Qt::ClipOperation op)
right, rect.y(),
right, bottom,
rect.x(), bottom };
- QVectorPath vp(pts, 4, 0, QVectorPath::RectangleHint);
+ QVectorPath vp(pts, 4, nullptr, QVectorPath::RectangleHint);
d->state->clipEnabled = true;
d->extended->clip(vp, op);
if (op == Qt::ReplaceClip || op == Qt::NoClip)
@@ -5642,7 +5642,7 @@ void QPainterPrivate::drawGlyphs(const quint32 *glyphArray, QFixedPoint *positio
QFixed width = rightMost - leftMost;
- if (extended != 0 && state->matrix.isAffine()) {
+ if (extended != nullptr && state->matrix.isAffine()) {
QStaticTextItem staticTextItem;
staticTextItem.color = state->pen.color();
staticTextItem.font = state->font;
@@ -5685,7 +5685,7 @@ void QPainterPrivate::drawGlyphs(const quint32 *glyphArray, QFixedPoint *positio
drawTextItemDecoration(q, QPointF(leftMost.toReal(), baseLine.toReal()),
fontEngine,
- 0, // textEngine
+ nullptr, // textEngine
(underline
? QTextCharFormat::SingleUnderline
: QTextCharFormat::NoUnderline),
@@ -5781,7 +5781,7 @@ void QPainter::drawStaticText(const QPointF &topLeftPosition, const QStaticText
// If we don't have an extended paint engine, if the painter is projected,
// or if the font engine does not support the matrix, we go through standard
// code path
- if (d->extended == 0
+ if (d->extended == nullptr
|| !d->state->matrix.isAffine()
|| !fe->supportsTransformation(d->state->matrix)) {
staticText_d->paintText(topLeftPosition, this, pen().color());
@@ -5902,7 +5902,7 @@ void QPainter::drawText(const QPointF &p, const QString &str, int tf, int justif
int numGlyphs = len;
QVarLengthGlyphLayoutArray glyphs(len);
QFontEngine *fontEngine = d->state->font.d->engineForScript(QChar::Script_Common);
- if (!fontEngine->stringToCMap(str.data(), len, &glyphs, &numGlyphs, 0))
+ if (!fontEngine->stringToCMap(str.data(), len, &glyphs, &numGlyphs, { }))
Q_UNREACHABLE();
QTextItemInt gf(glyphs, &d->state->font, str.data(), len, fontEngine);
@@ -5981,7 +5981,7 @@ void QPainter::drawText(const QRect &r, int flags, const QString &str, QRect *br
d->updateState(d->state);
QRectF bounds;
- qt_format_text(d->state->font, r, flags, 0, str, br ? &bounds : 0, 0, 0, 0, this);
+ qt_format_text(d->state->font, r, flags, nullptr, str, br ? &bounds : nullptr, 0, nullptr, 0, this);
if (br)
*br = bounds.toAlignedRect();
}
@@ -6067,7 +6067,7 @@ void QPainter::drawText(const QRectF &r, int flags, const QString &str, QRectF *
if (!d->extended)
d->updateState(d->state);
- qt_format_text(d->state->font, r, flags, 0, str, br, 0, 0, 0, this);
+ qt_format_text(d->state->font, r, flags, nullptr, str, br, 0, nullptr, 0, this);
}
/*!
@@ -6185,7 +6185,7 @@ void QPainter::drawText(const QRectF &r, const QString &text, const QTextOption
if (!d->extended)
d->updateState(d->state);
- qt_format_text(d->state->font, r, 0, &o, text, 0, 0, 0, 0, this);
+ qt_format_text(d->state->font, r, 0, &o, text, nullptr, 0, nullptr, 0, this);
}
/*!
@@ -6404,7 +6404,7 @@ Q_GUI_EXPORT void qt_draw_decoration_for_glyphs(QPainter *painter, const glyph_t
}
QFixed width = rightMost - leftMost;
- QTextItem::RenderFlags flags = 0;
+ QTextItem::RenderFlags flags;
if (font.underline())
flags |= QTextItem::Underline;
@@ -6415,7 +6415,7 @@ Q_GUI_EXPORT void qt_draw_decoration_for_glyphs(QPainter *painter, const glyph_t
drawTextItemDecoration(painter, QPointF(leftMost.toReal(), baseLine.toReal()),
fontEngine,
- 0, // textEngine
+ nullptr, // textEngine
font.underline() ? QTextCharFormat::SingleUnderline
: QTextCharFormat::NoUnderline, flags,
width.toReal(), charFormat);
@@ -6425,7 +6425,7 @@ void QPainter::drawTextItem(const QPointF &p, const QTextItem &ti)
{
Q_D(QPainter);
- d->drawTextItem(p, ti, static_cast<QTextEngine *>(0));
+ d->drawTextItem(p, ti, static_cast<QTextEngine *>(nullptr));
}
void QPainterPrivate::drawTextItem(const QPointF &p, const QTextItem &_ti, QTextEngine *textEngine)
@@ -6682,7 +6682,7 @@ QRectF QPainter::boundingRect(const QRectF &r, const QString &text, const QTextO
return QRectF(r.x(),r.y(), 0,0);
QRectF br;
- qt_format_text(d->state->font, r, Qt::TextDontPrint, &o, text, &br, 0, 0, 0, this);
+ qt_format_text(d->state->font, r, Qt::TextDontPrint, &o, text, &br, 0, nullptr, 0, this);
return br;
}
@@ -7213,7 +7213,7 @@ QPainter::RenderHints QPainter::renderHints() const
Q_D(const QPainter);
if (!d->engine)
- return 0;
+ return { };
return d->state->renderHints;
}
@@ -7429,7 +7429,7 @@ void QPainter::setRedirected(const QPaintDevice *device,
QPaintDevice *replacement,
const QPoint &offset)
{
- Q_ASSERT(device != 0);
+ Q_ASSERT(device != nullptr);
Q_UNUSED(device)
Q_UNUSED(replacement)
Q_UNUSED(offset)
@@ -7480,7 +7480,7 @@ QPaintDevice *QPainter::redirected(const QPaintDevice *device, QPoint *offset)
{
Q_UNUSED(device)
Q_UNUSED(offset)
- return 0;
+ return nullptr;
}
#endif
@@ -7490,7 +7490,7 @@ void qt_format_text(const QFont &fnt, const QRectF &_r,
QPainter *painter)
{
qt_format_text(fnt, _r,
- tf, 0, str, brect,
+ tf, nullptr, str, brect,
tabstops, ta, tabarraylen,
painter);
}
@@ -7500,7 +7500,7 @@ void qt_format_text(const QFont &fnt, const QRectF &_r,
QPainter *painter)
{
- Q_ASSERT( !((tf & ~Qt::TextDontPrint)!=0 && option!=0) ); // we either have an option or flags
+ Q_ASSERT( !((tf & ~Qt::TextDontPrint)!=0 && option!=nullptr) ); // we either have an option or flags
if (option) {
tf |= option->alignment();
@@ -7786,16 +7786,9 @@ QPainterState::QPainterState(const QPainterState *s)
}
QPainterState::QPainterState()
- : brushOrigin(0, 0), bgBrush(Qt::white), clipOperation(Qt::NoClip),
- renderHints(0),
- wx(0), wy(0), ww(0), wh(0), vx(0), vy(0), vw(0), vh(0),
- opacity(1), WxF(false), VxF(false), clipEnabled(true),
- bgMode(Qt::TransparentMode), painter(0),
- layoutDirection(QGuiApplication::layoutDirection()),
- composition_mode(QPainter::CompositionMode_SourceOver),
- emulationSpecifier(0), changeFlags(0)
+ : brushOrigin(0, 0), WxF(false), VxF(false), clipEnabled(true),
+ layoutDirection(QGuiApplication::layoutDirection())
{
- dirtyFlags = 0;
}
QPainterState::~QPainterState()
@@ -7824,9 +7817,9 @@ void QPainterState::init(QPainter *p) {
layoutDirection = QGuiApplication::layoutDirection();
composition_mode = QPainter::CompositionMode_SourceOver;
emulationSpecifier = 0;
- dirtyFlags = 0;
+ dirtyFlags = { };
changeFlags = 0;
- renderHints = 0;
+ renderHints = { };
opacity = 1;
}
@@ -7883,7 +7876,7 @@ void QPainterState::init(QPainter *p) {
/*!
\fn void QPainter::drawImage(const QPointF &point, const QImage &image, const QRectF &source,
- Qt::ImageConversionFlags flags = 0)
+ Qt::ImageConversionFlags flags = Qt::AutoColor)
\overload
@@ -7893,7 +7886,7 @@ void QPainterState::init(QPainter *p) {
/*!
\fn void QPainter::drawImage(const QPoint &point, const QImage &image, const QRect &source,
- Qt::ImageConversionFlags flags = 0)
+ Qt::ImageConversionFlags flags = Qt::AutoColor)
\overload
Draws the rectangular portion \a source of the given \a image with
diff --git a/src/gui/painting/qpainter_p.h b/src/gui/painting/qpainter_p.h
index 29d4880eb9..285bd90502 100644
--- a/src/gui/painting/qpainter_p.h
+++ b/src/gui/painting/qpainter_p.h
@@ -154,29 +154,29 @@ public:
QFont deviceFont;
QPen pen;
QBrush brush;
- QBrush bgBrush; // background brush
+ QBrush bgBrush = Qt::white; // background brush
QRegion clipRegion;
QPainterPath clipPath;
- Qt::ClipOperation clipOperation;
+ Qt::ClipOperation clipOperation = Qt::NoClip;
QPainter::RenderHints renderHints;
QVector<QPainterClipInfo> clipInfo; // ### Make me smaller and faster to copy around...
QTransform worldMatrix; // World transformation matrix, not window and viewport
QTransform matrix; // Complete transformation matrix,
QTransform redirectionMatrix;
- int wx, wy, ww, wh; // window rectangle
- int vx, vy, vw, vh; // viewport rectangle
- qreal opacity;
+ int wx = 0, wy = 0, ww = 0, wh = 0; // window rectangle
+ int vx = 0, vy = 0, vw = 0, vh = 0; // viewport rectangle
+ qreal opacity = 1;
uint WxF:1; // World transformation
uint VxF:1; // View transformation
uint clipEnabled:1;
- Qt::BGMode bgMode;
- QPainter *painter;
+ Qt::BGMode bgMode = Qt::TransparentMode;
+ QPainter *painter = nullptr;
Qt::LayoutDirection layoutDirection;
- QPainter::CompositionMode composition_mode;
- uint emulationSpecifier;
- uint changeFlags;
+ QPainter::CompositionMode composition_mode = QPainter::CompositionMode_SourceOver;
+ uint emulationSpecifier = 0;
+ uint changeFlags = 0;
};
struct QPainterDummyState
diff --git a/src/gui/painting/qpainterpath.cpp b/src/gui/painting/qpainterpath.cpp
index 1fb37ece56..17d8b863ab 100644
--- a/src/gui/painting/qpainterpath.cpp
+++ b/src/gui/painting/qpainterpath.cpp
@@ -546,7 +546,7 @@ void QPainterPath::setElementPositionAt(int i, qreal x, qreal y)
Constructs an empty QPainterPath object.
*/
QPainterPath::QPainterPath() noexcept
- : d_ptr(0)
+ : d_ptr(nullptr)
{
}
@@ -602,7 +602,7 @@ void QPainterPath::ensureData_helper()
QPainterPath::Element e = { 0, 0, QPainterPath::MoveToElement };
data->elements << e;
d_ptr.reset(data);
- Q_ASSERT(d_ptr != 0);
+ Q_ASSERT(d_ptr != nullptr);
}
/*!
@@ -1036,7 +1036,7 @@ void QPainterPath::arcMoveTo(const QRectF &rect, qreal angle)
return;
QPointF pt;
- qt_find_ellipse_coords(rect, angle, 0, &pt, 0);
+ qt_find_ellipse_coords(rect, angle, 0, &pt, nullptr);
moveTo(pt);
}
@@ -1253,7 +1253,7 @@ void QPainterPath::addText(const QPointF &point, const QFont &f, const QString &
fe->addOutlineToPath(x, y, glyphs, this,
si.analysis.bidiLevel % 2
? QTextItem::RenderFlags(QTextItem::RightToLeft)
- : QTextItem::RenderFlags(0));
+ : QTextItem::RenderFlags{});
const qreal lw = fe->lineThickness().toReal();
if (f.d->underline) {
diff --git a/src/gui/painting/qpathclipper.cpp b/src/gui/painting/qpathclipper.cpp
index 924d332452..1a1b2d76e2 100644
--- a/src/gui/painting/qpathclipper.cpp
+++ b/src/gui/painting/qpathclipper.cpp
@@ -690,12 +690,12 @@ int QKdPointTree::build(int begin, int end, int depth)
if (last > begin)
m_nodes.at(last).left = &m_nodes.at(build(begin, last, depth + 1));
else
- m_nodes.at(last).left = 0;
+ m_nodes.at(last).left = nullptr;
if (last + 1 < end)
m_nodes.at(last).right = &m_nodes.at(build(last + 1, end, depth + 1));
else
- m_nodes.at(last).right = 0;
+ m_nodes.at(last).right = nullptr;
return last;
}
@@ -811,7 +811,7 @@ void QWingedEdge::intersectAndAdd()
if (isect->next) {
isect += isect->next;
} else {
- isect = 0;
+ isect = nullptr;
}
}
@@ -1535,8 +1535,8 @@ QPainterPath QPathClipper::clip(Operation operation)
if (subjectPath == clipPath)
return op == BoolSub ? QPainterPath() : subjectPath;
- bool subjectIsRect = pathToRect(subjectPath, 0);
- bool clipIsRect = pathToRect(clipPath, 0);
+ bool subjectIsRect = pathToRect(subjectPath, nullptr);
+ bool clipIsRect = pathToRect(clipPath, nullptr);
const QRectF clipBounds = clipPath.boundingRect();
const QRectF subjectBounds = subjectPath.boundingRect();
diff --git a/src/gui/painting/qpathsimplifier.cpp b/src/gui/painting/qpathsimplifier.cpp
index 4251840bbc..256a2fefe7 100644
--- a/src/gui/painting/qpathsimplifier.cpp
+++ b/src/gui/painting/qpathsimplifier.cpp
@@ -378,8 +378,8 @@ private:
};
inline PathSimplifier::BoundingVolumeHierarchy::BoundingVolumeHierarchy()
- : root(0)
- , nodeBlock(0)
+ : root(nullptr)
+ , nodeBlock(nullptr)
, blockSize(0)
, firstFree(0)
{
@@ -392,7 +392,7 @@ inline PathSimplifier::BoundingVolumeHierarchy::~BoundingVolumeHierarchy()
inline void PathSimplifier::BoundingVolumeHierarchy::allocate(int nodeCount)
{
- Q_ASSERT(nodeBlock == 0);
+ Q_ASSERT(nodeBlock == nullptr);
Q_ASSERT(firstFree == 0);
nodeBlock = new Node[blockSize = nodeCount];
}
@@ -401,9 +401,9 @@ inline void PathSimplifier::BoundingVolumeHierarchy::free()
{
freeNode(root);
delete[] nodeBlock;
- nodeBlock = 0;
+ nodeBlock = nullptr;
firstFree = blockSize = 0;
- root = 0;
+ root = nullptr;
}
inline PathSimplifier::BVHNode *PathSimplifier::BoundingVolumeHierarchy::newNode()
@@ -427,7 +427,7 @@ inline void PathSimplifier::BoundingVolumeHierarchy::freeNode(Node *n)
}
inline PathSimplifier::ElementAllocator::ElementAllocator()
- : blocks(0)
+ : blocks(nullptr)
{
}
@@ -442,11 +442,11 @@ inline PathSimplifier::ElementAllocator::~ElementAllocator()
inline void PathSimplifier::ElementAllocator::allocate(int count)
{
- Q_ASSERT(blocks == 0);
+ Q_ASSERT(blocks == nullptr);
Q_ASSERT(count > 0);
blocks = (ElementBlock *)malloc(sizeof(ElementBlock) + (count - 1) * sizeof(Element));
blocks->blockSize = count;
- blocks->next = 0;
+ blocks->next = nullptr;
blocks->firstFree = 0;
}
@@ -479,7 +479,7 @@ inline void PathSimplifier::Element::flip()
qSwap(indices[i], indices[degree - i]);
}
pointingUp = !pointingUp;
- Q_ASSERT(next == 0 && previous == 0);
+ Q_ASSERT(next == nullptr && previous == nullptr);
}
PathSimplifier::PathSimplifier(const QVectorPath &path, QDataBuffer<QPoint> &vertices,
@@ -685,9 +685,9 @@ void PathSimplifier::connectElements()
QDataBuffer<Event> events(m_elements.size() * 2);
for (int i = 0; i < m_elements.size(); ++i) {
Element *element = m_elements.at(i);
- element->next = element->previous = 0;
+ element->next = element->previous = nullptr;
element->winding = 0;
- element->edgeNode = 0;
+ element->edgeNode = nullptr;
const QPoint &u = m_points->at(element->indices[0]);
const QPoint &v = m_points->at(element->indices[element->degree]);
if (u != v) {
@@ -730,7 +730,7 @@ void PathSimplifier::connectElements()
Element *element2 = event2->element;
element->edgeNode->data = event2->element;
element2->edgeNode = element->edgeNode;
- element->edgeNode = 0;
+ element->edgeNode = nullptr;
events.pop_back();
events.pop_back();
@@ -783,8 +783,8 @@ void PathSimplifier::connectElements()
Element *upperElement = m_elementAllocator.newElement();
*upperElement = *element;
upperElement->lowerIndex() = element->upperIndex() = pointIndex;
- upperElement->edgeNode = 0;
- element->next = element->previous = 0;
+ upperElement->edgeNode = nullptr;
+ element->next = element->previous = nullptr;
if (upperElement->next)
upperElement->next->previous = upperElement;
else if (upperElement->previous)
@@ -805,7 +805,7 @@ void PathSimplifier::connectElements()
RBNode *left = findElementLeftOf(event->element, bounds);
RBNode *node = m_elementList.newNode();
node->data = event->element;
- Q_ASSERT(event->element->edgeNode == 0);
+ Q_ASSERT(event->element->edgeNode == nullptr);
event->element->edgeNode = node;
m_elementList.attachAfter(left, node);
} else {
@@ -814,7 +814,7 @@ void PathSimplifier::connectElements()
Element *element = event->element;
Q_ASSERT(element->edgeNode);
m_elementList.deleteNode(element->edgeNode);
- Q_ASSERT(element->edgeNode == 0);
+ Q_ASSERT(element->edgeNode == nullptr);
}
events.pop_back();
}
@@ -870,8 +870,8 @@ void PathSimplifier::connectElements()
Q_ASSERT(i + 1 < orderedElements.size());
Element *next = orderedElements.at(i);
Element *previous = orderedElements.at(i + 1);
- Q_ASSERT(next->previous == 0);
- Q_ASSERT(previous->next == 0);
+ Q_ASSERT(next->previous == nullptr);
+ Q_ASSERT(previous->next == nullptr);
next->previous = previous;
previous->next = next;
}
@@ -893,7 +893,7 @@ void PathSimplifier::fillIndices()
m_elements.at(i)->processed = false;
for (int i = 0; i < m_elements.size(); ++i) {
Element *element = m_elements.at(i);
- if (element->processed || element->next == 0)
+ if (element->processed || element->next == nullptr)
continue;
do {
m_indices->add(element->indices[0]);
@@ -1395,13 +1395,13 @@ PathSimplifier::RBNode *PathSimplifier::findElementLeftOf(const Element *element
const QPair<RBNode *, RBNode *> &bounds)
{
if (!m_elementList.root)
- return 0;
+ return nullptr;
RBNode *current = bounds.first;
Q_ASSERT(!current || !elementIsLeftOf(element, current->data));
if (!current)
current = m_elementList.front(m_elementList.root);
Q_ASSERT(current);
- RBNode *result = 0;
+ RBNode *result = nullptr;
while (current != bounds.second && !elementIsLeftOf(element, current->data)) {
result = current;
current = m_elementList.next(current);
diff --git a/src/gui/painting/qpdf.cpp b/src/gui/painting/qpdf.cpp
index f560e1f0f0..932c3e6f5a 100644
--- a/src/gui/painting/qpdf.cpp
+++ b/src/gui/painting/qpdf.cpp
@@ -439,8 +439,8 @@ QByteArray QPdf::generateDashes(const QPen &pen)
static const char* const pattern_for_brush[] = {
- 0, // NoBrush
- 0, // SolidPattern
+ nullptr, // NoBrush
+ nullptr, // SolidPattern
"0 J\n"
"6 w\n"
"[] 0 d\n"
@@ -637,7 +637,7 @@ static void cubicToHook(qfixed c1x, qfixed c1y,
}
QPdf::Stroker::Stroker()
- : stream(0),
+ : stream(nullptr),
first(true),
dashStroker(&basicStroker)
{
@@ -652,7 +652,7 @@ QPdf::Stroker::Stroker()
void QPdf::Stroker::setPen(const QPen &pen, QPainter::RenderHints hints)
{
if (pen.style() == Qt::NoPen) {
- stroker = 0;
+ stroker = nullptr;
return;
}
qreal w = pen.widthF();
@@ -1469,7 +1469,7 @@ int QPdfEngine::metric(QPaintDevice::PaintDeviceMetric metricType) const
QPdfEnginePrivate::QPdfEnginePrivate()
: clipEnabled(false), allClipped(false), hasPen(true), hasBrush(false), simplePen(false),
pdfVersion(QPdfEngine::Version_1_4),
- outDevice(0), ownsDevice(false),
+ outDevice(nullptr), ownsDevice(false),
embedFonts(true),
grayscale(false),
m_pageLayout(QPageSize(QPageSize::A4), QPageLayout::Portrait, QMarginsF(10, 10, 10, 10))
@@ -1477,8 +1477,8 @@ QPdfEnginePrivate::QPdfEnginePrivate()
initResources();
resolution = 1200;
currentObject = 1;
- currentPage = 0;
- stroker.stream = 0;
+ currentPage = nullptr;
+ stroker.stream = nullptr;
streampos = 0;
@@ -1547,12 +1547,12 @@ bool QPdfEngine::end()
qDeleteAll(d->fonts);
d->fonts.clear();
delete d->currentPage;
- d->currentPage = 0;
+ d->currentPage = nullptr;
if (d->outDevice && d->ownsDevice) {
d->outDevice->close();
delete d->outDevice;
- d->outDevice = 0;
+ d->outDevice = nullptr;
}
setActive(false);
diff --git a/src/gui/painting/qpdfwriter.cpp b/src/gui/painting/qpdfwriter.cpp
index bf7e2d3dca..35814d146c 100644
--- a/src/gui/painting/qpdfwriter.cpp
+++ b/src/gui/painting/qpdfwriter.cpp
@@ -55,7 +55,7 @@ public:
: QObjectPrivate()
{
engine = new QPdfEngine();
- output = 0;
+ output = nullptr;
pdfVersion = QPdfWriter::PdfVersion_1_4;
}
~QPdfWriterPrivate()
diff --git a/src/gui/painting/qpen.cpp b/src/gui/painting/qpen.cpp
index dc6e3e04d0..1a940443d1 100644
--- a/src/gui/painting/qpen.cpp
+++ b/src/gui/painting/qpen.cpp
@@ -254,7 +254,7 @@ public:
{
if (!pen->ref.deref())
delete pen;
- pen = 0;
+ pen = nullptr;
}
};
diff --git a/src/gui/painting/qplatformbackingstore.cpp b/src/gui/painting/qplatformbackingstore.cpp
index 45e90bd99b..c092a7153f 100644
--- a/src/gui/painting/qplatformbackingstore.cpp
+++ b/src/gui/painting/qplatformbackingstore.cpp
@@ -87,10 +87,10 @@ class QPlatformBackingStorePrivate
public:
QPlatformBackingStorePrivate(QWindow *w)
: window(w)
- , backingStore(0)
+ , backingStore(nullptr)
#ifndef QT_NO_OPENGL
, textureId(0)
- , blitter(0)
+ , blitter(nullptr)
#endif
{
}
@@ -427,7 +427,7 @@ void QPlatformBackingStore::composeAndFlush(QWindow *window, const QRegion &regi
origin = QOpenGLTextureBlitter::OriginBottomLeft;
textureId = d_ptr->textureId;
} else {
- TextureFlags flags = 0;
+ TextureFlags flags;
textureId = toTexture(deviceRegion(region, window, offset), &d_ptr->textureSize, &flags);
d_ptr->needsSwizzle = (flags & TextureSwizzle) != 0;
d_ptr->premultiplied = (flags & TexturePremultiplied) != 0;
@@ -534,7 +534,7 @@ GLuint QPlatformBackingStore::toTexture(const QRegion &dirtyRegion, QSize *textu
GLuint pixelType = GL_UNSIGNED_BYTE;
bool needsConversion = false;
- *flags = 0;
+ *flags = { };
switch (image.format()) {
case QImage::Format_ARGB32_Premultiplied:
*flags |= TexturePremultiplied;
diff --git a/src/gui/painting/qplatformbackingstore.h b/src/gui/painting/qplatformbackingstore.h
index 4f08b0092f..7aa054f1e2 100644
--- a/src/gui/painting/qplatformbackingstore.h
+++ b/src/gui/painting/qplatformbackingstore.h
@@ -100,7 +100,7 @@ public:
bool isLocked() const;
void appendTexture(void *source, GLuint textureId, const QRect &geometry,
- const QRect &clipRect = QRect(), Flags flags = nullptr);
+ const QRect &clipRect = QRect(), Flags flags = { });
void clear();
Q_SIGNALS:
diff --git a/src/gui/painting/qrasterizer.cpp b/src/gui/painting/qrasterizer.cpp
index b4014272f4..cd31d75f83 100644
--- a/src/gui/painting/qrasterizer.cpp
+++ b/src/gui/painting/qrasterizer.cpp
@@ -209,7 +209,7 @@ QScanConverter::QScanConverter()
: m_lines(0)
, m_alloc(0)
, m_size(0)
- , m_intersections(0)
+ , m_intersections(nullptr)
, m_active(0)
{
}
@@ -442,7 +442,7 @@ void QScanConverter::end()
free(m_intersections);
m_alloc = 0;
m_size = 0;
- m_intersections = 0;
+ m_intersections = nullptr;
}
if (m_lines.size() > 1024)
diff --git a/src/gui/painting/qregion.cpp b/src/gui/painting/qregion.cpp
index 82f5be2b65..783b02fb93 100644
--- a/src/gui/painting/qregion.cpp
+++ b/src/gui/painting/qregion.cpp
@@ -1128,7 +1128,7 @@ Q_GUI_EXPORT QPainterPath qt_regionToPath(const QRegion &region)
segments.resize(4 * (end - rect));
int lastRowSegmentCount = 0;
- Segment *lastRowSegments = 0;
+ Segment *lastRowSegments = nullptr;
int lastSegment = 0;
int lastY = 0;
@@ -1380,10 +1380,10 @@ void QRegionPrivate::intersect(const QRect &rect)
extents.setRight(qMax(extents.right(), dest->right()));
extents.setBottom(qMax(extents.bottom(), dest->bottom()));
- const QRect *nextToLast = (numRects > 1 ? dest - 2 : 0);
+ const QRect *nextToLast = (numRects > 1 ? dest - 2 : nullptr);
// mergeFromBelow inlined and optimized
- if (canMergeFromBelow(dest - 1, dest, nextToLast, 0)) {
+ if (canMergeFromBelow(dest - 1, dest, nextToLast, nullptr)) {
if (!n || src->y() != dest->y() || src->left() > r.right()) {
QRect *prev = dest - 1;
prev->setBottom(dest->bottom());
@@ -1408,11 +1408,11 @@ void QRegionPrivate::append(const QRect *r)
QRect *myLast = (numRects == 1 ? &extents : rects.data() + (numRects - 1));
if (mergeFromRight(myLast, r)) {
if (numRects > 1) {
- const QRect *nextToTop = (numRects > 2 ? myLast - 2 : 0);
- if (mergeFromBelow(myLast - 1, myLast, nextToTop, 0))
+ const QRect *nextToTop = (numRects > 2 ? myLast - 2 : nullptr);
+ if (mergeFromBelow(myLast - 1, myLast, nextToTop, nullptr))
--numRects;
}
- } else if (mergeFromBelow(myLast, r, (numRects > 1 ? myLast - 1 : 0), 0)) {
+ } else if (mergeFromBelow(myLast, r, (numRects > 1 ? myLast - 1 : nullptr), nullptr)) {
// nothing
} else {
vectorize();
@@ -1451,18 +1451,18 @@ void QRegionPrivate::append(const QRegionPrivate *r)
{
const QRect *rFirst = srcRect;
QRect *myLast = destRect - 1;
- const QRect *nextToLast = (numRects > 1 ? myLast - 1 : 0);
+ const QRect *nextToLast = (numRects > 1 ? myLast - 1 : nullptr);
if (mergeFromRight(myLast, rFirst)) {
++srcRect;
--numAppend;
- const QRect *rNextToFirst = (numAppend > 1 ? rFirst + 2 : 0);
+ const QRect *rNextToFirst = (numAppend > 1 ? rFirst + 2 : nullptr);
if (mergeFromBelow(myLast, rFirst + 1, nextToLast, rNextToFirst)) {
++srcRect;
--numAppend;
}
if (numRects > 1) {
- nextToLast = (numRects > 2 ? myLast - 2 : 0);
- rNextToFirst = (numAppend > 0 ? srcRect : 0);
+ nextToLast = (numRects > 2 ? myLast - 2 : nullptr);
+ rNextToFirst = (numAppend > 0 ? srcRect : nullptr);
if (mergeFromBelow(myLast - 1, myLast, nextToLast, rNextToFirst)) {
--destRect;
--numRects;
@@ -1522,20 +1522,20 @@ void QRegionPrivate::prepend(const QRegionPrivate *r)
// try merging
{
QRect *myFirst = rects.data();
- const QRect *nextToFirst = (numRects > 1 ? myFirst + 1 : 0);
+ const QRect *nextToFirst = (numRects > 1 ? myFirst + 1 : nullptr);
const QRect *rLast = r->rects.constData() + r->numRects - 1;
- const QRect *rNextToLast = (r->numRects > 1 ? rLast - 1 : 0);
+ const QRect *rNextToLast = (r->numRects > 1 ? rLast - 1 : nullptr);
if (mergeFromLeft(myFirst, rLast)) {
--numPrepend;
--rLast;
- rNextToLast = (numPrepend > 1 ? rLast - 1 : 0);
+ rNextToLast = (numPrepend > 1 ? rLast - 1 : nullptr);
if (mergeFromAbove(myFirst, rLast, nextToFirst, rNextToLast)) {
--numPrepend;
--rLast;
}
if (numRects > 1) {
- nextToFirst = (numRects > 2? myFirst + 2 : 0);
- rNextToLast = (numPrepend > 0 ? rLast : 0);
+ nextToFirst = (numRects > 2? myFirst + 2 : nullptr);
+ rNextToLast = (numPrepend > 0 ? rLast : nullptr);
if (mergeFromAbove(myFirst + 1, myFirst, nextToFirst, rNextToLast)) {
--numRects;
++numSkip;
@@ -1585,14 +1585,14 @@ void QRegionPrivate::prepend(const QRect *r)
QRect *myFirst = (numRects == 1 ? &extents : rects.data());
if (mergeFromLeft(myFirst, r)) {
if (numRects > 1) {
- const QRect *nextToFirst = (numRects > 2 ? myFirst + 2 : 0);
- if (mergeFromAbove(myFirst + 1, myFirst, nextToFirst, 0)) {
+ const QRect *nextToFirst = (numRects > 2 ? myFirst + 2 : nullptr);
+ if (mergeFromAbove(myFirst + 1, myFirst, nextToFirst, nullptr)) {
--numRects;
memmove(rects.data(), rects.constData() + 1,
numRects * sizeof(QRect));
}
}
- } else if (mergeFromAbove(myFirst, r, (numRects > 1 ? myFirst + 1 : 0), 0)) {
+ } else if (mergeFromAbove(myFirst, r, (numRects > 1 ? myFirst + 1 : nullptr), nullptr)) {
// nothing
} else {
vectorize();
@@ -2324,14 +2324,14 @@ static void miRegionOp(QRegionPrivate &dest,
top = qMax(r1->top(), ybot + 1);
bot = qMin(r1->bottom(), r2->top() - 1);
- if (nonOverlap1Func != 0 && bot >= top)
+ if (nonOverlap1Func != nullptr && bot >= top)
(*nonOverlap1Func)(dest, r1, r1BandEnd, top, bot);
ytop = r2->top();
} else if (r2->top() < r1->top()) {
top = qMax(r2->top(), ybot + 1);
bot = qMin(r2->bottom(), r1->top() - 1);
- if (nonOverlap2Func != 0 && bot >= top)
+ if (nonOverlap2Func != nullptr && bot >= top)
(*nonOverlap2Func)(dest, r2, r2BandEnd, top, bot);
ytop = r1->top();
} else {
@@ -2374,7 +2374,7 @@ static void miRegionOp(QRegionPrivate &dest,
*/
curBand = dest.numRects;
if (r1 != r1End) {
- if (nonOverlap1Func != 0) {
+ if (nonOverlap1Func != nullptr) {
do {
r1BandEnd = r1;
while (r1BandEnd < r1End && r1BandEnd->top() == r1->top())
@@ -2383,7 +2383,7 @@ static void miRegionOp(QRegionPrivate &dest,
r1 = r1BandEnd;
} while (r1 != r1End);
}
- } else if ((r2 != r2End) && (nonOverlap2Func != 0)) {
+ } else if ((r2 != r2End) && (nonOverlap2Func != nullptr)) {
do {
r2BandEnd = r2;
while (r2BandEnd < r2End && r2BandEnd->top() == r2->top())
@@ -2698,7 +2698,7 @@ static void SubtractRegion(QRegionPrivate *regM, QRegionPrivate *regS,
Q_ASSERT(!regS->contains(*regM));
Q_ASSERT(!EqualRegion(regM, regS));
- miRegionOp(dest, regM, regS, miSubtractO, miSubtractNonO1, 0);
+ miRegionOp(dest, regM, regS, miSubtractO, miSubtractNonO1, nullptr);
/*
* Can't alter dest's extents before we call miRegionOp because
@@ -3235,14 +3235,14 @@ static void InsertEdgeInET(EdgeTable *ET, EdgeTableEntry *ETE, int scanline,
(ScanLineListBlock *)malloc(sizeof(ScanLineListBlock));
Q_CHECK_PTR(tmpSLLBlock);
(*SLLBlock)->next = tmpSLLBlock;
- tmpSLLBlock->next = (ScanLineListBlock *)NULL;
+ tmpSLLBlock->next = (ScanLineListBlock *)nullptr;
*SLLBlock = tmpSLLBlock;
*iSLLBlock = 0;
}
pSLL = &((*SLLBlock)->SLLs[(*iSLLBlock)++]);
pSLL->next = pPrevSLL->next;
- pSLL->edgelist = (EdgeTableEntry *)NULL;
+ pSLL->edgelist = (EdgeTableEntry *)nullptr;
pPrevSLL->next = pSLL;
}
pSLL->scanline = scanline;
@@ -3250,7 +3250,7 @@ static void InsertEdgeInET(EdgeTable *ET, EdgeTableEntry *ETE, int scanline,
/*
* now insert the edge in the right bucket
*/
- prev = 0;
+ prev = nullptr;
start = pSLL->edgelist;
while (start && (start->bres.minor_axis < ETE->bres.minor_axis)) {
prev = start;
@@ -3306,18 +3306,18 @@ static void CreateETandAET(int count, const QPoint *pts,
/*
* initialize the Active Edge Table
*/
- AET->next = 0;
- AET->back = 0;
- AET->nextWETE = 0;
+ AET->next = nullptr;
+ AET->back = nullptr;
+ AET->nextWETE = nullptr;
AET->bres.minor_axis = SMALL_COORDINATE;
/*
* initialize the Edge Table.
*/
- ET->scanlines.next = 0;
+ ET->scanlines.next = nullptr;
ET->ymax = SMALL_COORDINATE;
ET->ymin = LARGE_COORDINATE;
- pSLLBlock->next = 0;
+ pSLLBlock->next = nullptr;
PrevPt = &pts[count - 1];
@@ -3426,7 +3426,7 @@ static void computeWAET(EdgeTableEntry *AET)
int inside = 1;
int isInside = 0;
- AET->nextWETE = 0;
+ AET->nextWETE = nullptr;
pWETE = AET;
AET = AET->next;
while (AET) {
@@ -3442,7 +3442,7 @@ static void computeWAET(EdgeTableEntry *AET)
}
AET = AET->next;
}
- pWETE->nextWETE = 0;
+ pWETE->nextWETE = nullptr;
}
/*
@@ -3672,7 +3672,7 @@ static QRegionPrivate *PolygonRegion(const QPoint *Pts, int Count, int rule)
if (!(pETEs = static_cast<EdgeTableEntry *>(malloc(sizeof(EdgeTableEntry) * Count)))) {
delete region;
- return 0;
+ return nullptr;
}
region->vectorize();
@@ -3692,7 +3692,7 @@ static QRegionPrivate *PolygonRegion(const QPoint *Pts, int Count, int rule)
#endif
delete AET;
delete region;
- return 0;
+ return nullptr;
}
@@ -3808,7 +3808,7 @@ static QRegionPrivate *PolygonRegion(const QPoint *Pts, int Count, int rule)
curPtBlock = tmpPtBlock;
}
free(pETEs);
- return 0; // this function returns 0 in case of an error
+ return nullptr; // this function returns 0 in case of an error
}
FreeStorage(SLLBlock.next);
@@ -4185,7 +4185,7 @@ QRegion QRegion::intersected(const QRegion &r) const
QRegion result;
result.detach();
- miRegionOp(*result.d->qt_rgn, d->qt_rgn, r.d->qt_rgn, miIntersectO, 0, 0);
+ miRegionOp(*result.d->qt_rgn, d->qt_rgn, r.d->qt_rgn, miIntersectO, nullptr, nullptr);
/*
* Can't alter dest's extents before we call miRegionOp because
diff --git a/src/gui/painting/qstroker.cpp b/src/gui/painting/qstroker.cpp
index 271d3ba6bf..22302f9790 100644
--- a/src/gui/painting/qstroker.cpp
+++ b/src/gui/painting/qstroker.cpp
@@ -185,10 +185,10 @@ QStrokerOps::QStrokerOps()
: m_elements(0)
, m_curveThreshold(qt_real_to_fixed(0.25))
, m_dashThreshold(qt_real_to_fixed(0.25))
- , m_customData(0)
- , m_moveTo(0)
- , m_lineTo(0)
- , m_cubicTo(0)
+ , m_customData(nullptr)
+ , m_moveTo(nullptr)
+ , m_lineTo(nullptr)
+ , m_cubicTo(nullptr)
{
}
@@ -219,7 +219,7 @@ void QStrokerOps::end()
{
if (m_elements.size() > 1)
processCurrentSubpath();
- m_customData = 0;
+ m_customData = nullptr;
}
/*!
diff --git a/src/gui/painting/qtextureglyphcache.cpp b/src/gui/painting/qtextureglyphcache.cpp
index 7a3dd04965..f40ca9d8b4 100644
--- a/src/gui/painting/qtextureglyphcache.cpp
+++ b/src/gui/painting/qtextureglyphcache.cpp
@@ -127,7 +127,7 @@ bool QTextureGlyphCache::populate(QFontEngine *fontEngine, int numGlyphs, const
QFixed subPixelPosition;
if (supportsSubPixelPositions) {
- QFixed x = positions != 0 ? positions[i].x : QFixed();
+ QFixed x = positions != nullptr ? positions[i].x : QFixed();
subPixelPosition = fontEngine->subPixelPositionForX(x);
}
diff --git a/src/gui/painting/qtriangulatingstroker.cpp b/src/gui/painting/qtriangulatingstroker.cpp
index b1b07f9699..8e0308f268 100644
--- a/src/gui/painting/qtriangulatingstroker.cpp
+++ b/src/gui/painting/qtriangulatingstroker.cpp
@@ -150,7 +150,7 @@ void QTriangulatingStroker::process(const QVectorPath &path, const QPen &pen, co
m_cos_theta = qFastCos(Q_PI / m_roundness);
const qreal *endPts = pts + (count<<1);
- const qreal *startPts = 0;
+ const qreal *startPts = nullptr;
Qt::PenCapStyle cap = m_cap_style;
@@ -510,7 +510,7 @@ static void qdashprocessor_cubicTo(qreal, qreal, qreal, qreal, qreal, qreal, voi
QDashedStrokeProcessor::QDashedStrokeProcessor()
: m_points(0), m_types(0),
- m_dash_stroker(0), m_inv_scale(1)
+ m_dash_stroker(nullptr), m_inv_scale(1)
{
m_dash_stroker.setMoveToHook(qdashprocessor_moveTo);
m_dash_stroker.setLineToHook(qdashprocessor_lineTo);
diff --git a/src/gui/painting/qtriangulator.cpp b/src/gui/painting/qtriangulator.cpp
index 9be3eeaffd..ec3ab8ff8f 100644
--- a/src/gui/painting/qtriangulator.cpp
+++ b/src/gui/painting/qtriangulator.cpp
@@ -958,7 +958,7 @@ void QTriangulator<T>::ComplexToSimple::initEdges()
} else {
Q_ASSERT(i + 1 < m_parent->m_indices.size());
// {node, from, to, next, previous, winding, mayIntersect, pointingUp, originallyPointingUp}
- Edge edge = {0, int(m_parent->m_indices.at(i)), int(m_parent->m_indices.at(i + 1)), -1, -1, 0, true, false, false};
+ Edge edge = {nullptr, int(m_parent->m_indices.at(i)), int(m_parent->m_indices.at(i + 1)), -1, -1, 0, true, false, false};
m_edges.add(edge);
}
}
@@ -1029,7 +1029,7 @@ template <typename T>
QRBTree<int>::Node *QTriangulator<T>::ComplexToSimple::searchEdgeLeftOf(int edgeIndex) const
{
QRBTree<int>::Node *current = m_edgeList.root;
- QRBTree<int>::Node *result = 0;
+ QRBTree<int>::Node *result = nullptr;
while (current) {
if (edgeIsLeftOfEdge(edgeIndex, current->data)) {
current = current->left;
@@ -1072,7 +1072,7 @@ QPair<QRBTree<int>::Node *, QRBTree<int>::Node *> QTriangulator<T>::ComplexToSim
}
current = (d < 0 ? current->left : current->right);
}
- if (current == 0)
+ if (current == nullptr)
return result;
current = result.first->left;
@@ -1273,7 +1273,7 @@ void QTriangulator<T>::ComplexToSimple::fillPriorityQueue()
m_events.reserve(m_edges.size() * 2);
for (int i = 0; i < m_edges.size(); ++i) {
Q_ASSERT(m_edges.at(i).previous == -1 && m_edges.at(i).next == -1);
- Q_ASSERT(m_edges.at(i).node == 0);
+ Q_ASSERT(m_edges.at(i).node == nullptr);
Q_ASSERT(m_edges.at(i).pointingUp == m_edges.at(i).originallyPointingUp);
Q_ASSERT(m_edges.at(i).pointingUp == (m_parent->m_vertices.at(m_edges.at(i).to) < m_parent->m_vertices.at(m_edges.at(i).from)));
// Ignore zero-length edges.
@@ -1296,7 +1296,7 @@ void QTriangulator<T>::ComplexToSimple::calculateIntersections()
fillPriorityQueue();
Q_ASSERT(m_topIntersection.empty());
- Q_ASSERT(m_edgeList.root == 0);
+ Q_ASSERT(m_edgeList.root == nullptr);
// Find all intersection points.
while (!m_events.isEmpty()) {
@@ -1305,7 +1305,7 @@ void QTriangulator<T>::ComplexToSimple::calculateIntersections()
// Find all edges in the edge list that contain the current vertex and mark them to be split later.
QPair<QRBTree<int>::Node *, QRBTree<int>::Node *> range = bounds(event.point);
- QRBTree<int>::Node *leftNode = range.first ? m_edgeList.previous(range.first) : 0;
+ QRBTree<int>::Node *leftNode = range.first ? m_edgeList.previous(range.first) : nullptr;
int vertex = (event.type == Event::Upper ? m_edges.at(event.edge).upper() : m_edges.at(event.edge).lower());
QIntersectionPoint eventPoint = QT_PREPEND_NAMESPACE(qIntersectionPoint)(event.point);
@@ -1361,7 +1361,7 @@ int QTriangulator<T>::ComplexToSimple::splitEdge(int splitIndex)
{
const Split &split = m_splits.at(splitIndex);
Edge &lowerEdge = m_edges.at(split.edge);
- Q_ASSERT(lowerEdge.node == 0);
+ Q_ASSERT(lowerEdge.node == nullptr);
Q_ASSERT(lowerEdge.previous == -1 && lowerEdge.next == -1);
if (lowerEdge.from == split.vertex)
@@ -1439,7 +1439,7 @@ void QTriangulator<T>::ComplexToSimple::insertEdgeIntoVectorIfWanted(ShortArray
template <typename T>
void QTriangulator<T>::ComplexToSimple::removeUnwantedEdgesAndConnect()
{
- Q_ASSERT(m_edgeList.root == 0);
+ Q_ASSERT(m_edgeList.root == nullptr);
// Initialize priority queue.
fillPriorityQueue();
@@ -1772,7 +1772,7 @@ void QTriangulator<T>::SimpleToMonotone::setupDataStructures()
{
int i = 0;
Edge e;
- e.node = 0;
+ e.node = nullptr;
e.twin = -1;
while (i + 3 <= m_parent->m_indices.size()) {
@@ -1862,7 +1862,7 @@ template <typename T>
QRBTree<int>::Node *QTriangulator<T>::SimpleToMonotone::searchEdgeLeftOfEdge(int edgeIndex) const
{
QRBTree<int>::Node *current = m_edgeList.root;
- QRBTree<int>::Node *result = 0;
+ QRBTree<int>::Node *result = nullptr;
while (current) {
if (edgeIsLeftOfEdge(edgeIndex, current->data)) {
current = current->left;
@@ -1879,7 +1879,7 @@ template <typename T>
QRBTree<int>::Node *QTriangulator<T>::SimpleToMonotone::searchEdgeLeftOfPoint(int pointIndex) const
{
QRBTree<int>::Node *current = m_edgeList.root;
- QRBTree<int>::Node *result = 0;
+ QRBTree<int>::Node *result = nullptr;
while (current) {
const QPodPoint &p1 = m_parent->m_vertices.at(m_edges.at(current->data).lower());
const QPodPoint &p2 = m_parent->m_vertices.at(m_edges.at(current->data).upper());
@@ -2038,7 +2038,7 @@ void QTriangulator<T>::SimpleToMonotone::monotoneDecomposition()
j = m_edges.at(i).previous;
Q_ASSERT(j < m_edges.size());
- QRBTree<int>::Node *leftEdgeNode = 0;
+ QRBTree<int>::Node *leftEdgeNode = nullptr;
switch (m_edges.at(i).type) {
case RegularVertex:
@@ -2049,7 +2049,7 @@ void QTriangulator<T>::SimpleToMonotone::monotoneDecomposition()
if (m_edges.at(m_edges.at(i).helper).type == MergeVertex)
diagonals.add(QPair<int, int>(i, m_edges.at(i).helper));
m_edges.at(j).node = m_edges.at(i).node;
- m_edges.at(i).node = 0;
+ m_edges.at(i).node = nullptr;
m_edges.at(j).node->data = j;
m_edges.at(j).helper = i;
} else if (m_edges.at(j).node) {
@@ -2057,7 +2057,7 @@ void QTriangulator<T>::SimpleToMonotone::monotoneDecomposition()
if (m_edges.at(m_edges.at(j).helper).type == MergeVertex)
diagonals.add(QPair<int, int>(i, m_edges.at(j).helper));
m_edges.at(i).node = m_edges.at(j).node;
- m_edges.at(j).node = 0;
+ m_edges.at(j).node = nullptr;
m_edges.at(i).node->data = i;
m_edges.at(i).helper = i;
} else {
diff --git a/src/gui/rhi/qrhi.cpp b/src/gui/rhi/qrhi.cpp
index 8ef98d2e42..58f30deb41 100644
--- a/src/gui/rhi/qrhi.cpp
+++ b/src/gui/rhi/qrhi.cpp
@@ -48,8 +48,7 @@
#ifdef Q_OS_WIN
#include "qrhid3d11_p_p.h"
#endif
-//#ifdef Q_OS_DARWIN
-#ifdef Q_OS_MACOS
+#if defined(Q_OS_MACOS) || defined(Q_OS_IOS)
#include "qrhimetal_p_p.h"
#endif
@@ -2161,6 +2160,32 @@ QRhiResource::Type QRhiRenderBuffer::resourceType() const
*/
/*!
+ \class QRhiTexture::NativeTexture
+ \brief Contains information about the underlying native resources of a texture.
+ */
+
+/*!
+ \variable QRhiTexture::NativeTexture::object
+ \brief a pointer to the native object handle.
+
+ With OpenGL, the native handle is a GLuint value, so \c object is then a
+ pointer to a GLuint. With Vulkan, the native handle is a VkImage, so \c
+ object is a pointer to a VkImage. With Direct3D 11 and Metal \c
+ object is a pointer to a ID3D11Texture2D or MTLTexture pointer, respectively.
+
+ \note Pay attention to the fact that \a object is always a pointer
+ to the native texture handle type, even if the native type itself is a
+ pointer.
+ */
+
+/*!
+ \variable QRhiTexture::NativeTexture::layout
+ \brief Specifies the current image layout for APIs like Vulkan.
+
+ For Vulkan, \c layout contains a \c VkImageLayout value.
+ */
+
+/*!
\internal
*/
QRhiTexture::QRhiTexture(QRhiImplementation *rhi, Format format_, const QSize &pixelSize_,
@@ -2197,12 +2222,25 @@ QRhiResource::Type QRhiTexture::resourceType() const
\sa QRhiVulkanTextureNativeHandles, QRhiD3D11TextureNativeHandles,
QRhiMetalTextureNativeHandles, QRhiGles2TextureNativeHandles
*/
+// TODO: remove this version once QtQuick has stopped using it
const QRhiNativeHandles *QRhiTexture::nativeHandles()
{
return nullptr;
}
/*!
+ \return the underlying native resources for this texture. The returned value
+ will be empty if exposing the underlying native resources is not supported by
+ the backend.
+
+ \sa buildFrom()
+ */
+QRhiTexture::NativeTexture QRhiTexture::nativeTexture()
+{
+ return {};
+}
+
+/*!
Similar to build() except that no new native textures are created. Instead,
the texture from \a src is used.
@@ -2225,6 +2263,7 @@ const QRhiNativeHandles *QRhiTexture::nativeHandles()
\sa QRhiVulkanTextureNativeHandles, QRhiD3D11TextureNativeHandles,
QRhiMetalTextureNativeHandles, QRhiGles2TextureNativeHandles
*/
+// TODO: remove this version once QtQuick has stopped using it
bool QRhiTexture::buildFrom(const QRhiNativeHandles *src)
{
Q_UNUSED(src);
@@ -2232,6 +2271,33 @@ bool QRhiTexture::buildFrom(const QRhiNativeHandles *src)
}
/*!
+ Similar to build() except that no new native textures are created. Instead,
+ the native texture resources specified by \a src is used.
+
+ This allows importing an existing native texture object (which must belong
+ to the same device or sharing context, depending on the graphics API) from
+ an external graphics engine.
+
+ \note format(), pixelSize(), sampleCount(), and flags() must still be set
+ correctly. Passing incorrect sizes and other values to QRhi::newTexture()
+ and then following it with a buildFrom() expecting that the native texture
+ object alone is sufficient to deduce such values is \b wrong and will lead
+ to problems.
+
+ \note QRhiTexture does not take ownership of the texture object. release()
+ does not free the object or any associated memory.
+
+ The opposite of this operation, exposing a QRhiTexture-created native
+ texture object to a foreign engine, is possible via nativeTexture().
+
+*/
+bool QRhiTexture::buildFrom(QRhiTexture::NativeTexture src)
+{
+ Q_UNUSED(src);
+ return false;
+}
+
+/*!
\class QRhiSampler
\internal
\inmodule QtGui
@@ -2253,9 +2319,7 @@ bool QRhiTexture::buildFrom(const QRhiNativeHandles *src)
\value Repeat
\value ClampToEdge
- \value Border
\value Mirror
- \value MirrorOnce
*/
/*!
@@ -2322,6 +2386,24 @@ QRhiResource::Type QRhiRenderPassDescriptor::resourceType() const
}
/*!
+ \fn bool QRhiRenderPassDescriptor::isCompatible(const QRhiRenderPassDescriptor *other) const;
+
+ \return true if the \a other QRhiRenderPassDescriptor is compatible with
+ this one, meaning \c this and \a other can be used interchangebly in
+ QRhiGraphicsPipeline::setRenderPassDescriptor().
+
+ The concept of the compatibility of renderpass descriptors is similar to
+ the \l{QRhiShaderResourceBindings::isLayoutCompatible}{layout
+ compatibility} of QRhiShaderResourceBindings instances. They allow better
+ reuse of QRhiGraphicsPipeline instances: for example, a
+ QRhiGraphicsPipeline instance cache is expected to use these functions to
+ look for a matching pipeline, instead of just comparing pointers, thus
+ allowing a different QRhiRenderPassDescriptor and
+ QRhiShaderResourceBindings to be used in combination with the pipeline, as
+ long as they are compatible.
+ */
+
+/*!
\return a pointer to a backend-specific QRhiNativeHandles subclass, such as
QRhiVulkanRenderPassNativeHandles. The returned value is null when exposing
the underlying native resources is not supported by the backend.
@@ -4049,8 +4131,7 @@ QRhi *QRhi::create(Implementation impl, QRhiInitParams *params, Flags flags, QRh
break;
#endif
case Metal:
-//#ifdef Q_OS_DARWIN
-#ifdef Q_OS_MACOS
+#if defined(Q_OS_MACOS) || defined(Q_OS_IOS)
r->d = new QRhiMetal(static_cast<QRhiMetalInitParams *>(params),
static_cast<QRhiMetalNativeHandles *>(importDevice));
break;
diff --git a/src/gui/rhi/qrhi_p.h b/src/gui/rhi/qrhi_p.h
index 588347d111..44118b2f10 100644
--- a/src/gui/rhi/qrhi_p.h
+++ b/src/gui/rhi/qrhi_p.h
@@ -760,6 +760,11 @@ public:
ASTC_12x12
};
+ struct NativeTexture {
+ const void *object;
+ int layout;
+ };
+
QRhiResource::Type resourceType() const override;
Format format() const { return m_format; }
@@ -776,7 +781,9 @@ public:
virtual bool build() = 0;
virtual const QRhiNativeHandles *nativeHandles();
+ virtual NativeTexture nativeTexture();
virtual bool buildFrom(const QRhiNativeHandles *src);
+ virtual bool buildFrom(NativeTexture src);
protected:
QRhiTexture(QRhiImplementation *rhi, Format format_, const QSize &pixelSize_,
@@ -801,9 +808,7 @@ public:
enum AddressMode {
Repeat,
ClampToEdge,
- Border,
Mirror,
- MirrorOnce
};
enum CompareOp {
@@ -902,6 +907,7 @@ class Q_GUI_EXPORT QRhiRenderPassDescriptor : public QRhiResource
public:
QRhiResource::Type resourceType() const override;
+ virtual bool isCompatible(const QRhiRenderPassDescriptor *other) const = 0;
virtual const QRhiNativeHandles *nativeHandles();
protected:
diff --git a/src/gui/rhi/qrhid3d11.cpp b/src/gui/rhi/qrhid3d11.cpp
index 5e576e9c6a..ba2488bffb 100644
--- a/src/gui/rhi/qrhid3d11.cpp
+++ b/src/gui/rhi/qrhid3d11.cpp
@@ -2764,11 +2764,39 @@ bool QD3D11Texture::buildFrom(const QRhiNativeHandles *src)
return true;
}
+bool QD3D11Texture::buildFrom(QRhiTexture::NativeTexture src)
+{
+ auto *srcTex = static_cast<ID3D11Texture2D * const *>(src.object);
+ if (!srcTex || !*srcTex)
+ return false;
+
+ if (!prepareBuild())
+ return false;
+
+ tex = *srcTex;
+
+ if (!finishBuild())
+ return false;
+
+ QRHI_PROF;
+ QRHI_PROF_F(newTexture(this, false, int(mipLevelCount), m_flags.testFlag(CubeMap) ? 6 : 1, int(sampleDesc.Count)));
+
+ owns = false;
+ QRHI_RES_RHI(QRhiD3D11);
+ rhiD->registerResource(this);
+ return true;
+}
+
const QRhiNativeHandles *QD3D11Texture::nativeHandles()
{
return &nativeHandlesStruct;
}
+QRhiTexture::NativeTexture QD3D11Texture::nativeTexture()
+{
+ return {&nativeHandlesStruct.texture, 0};
+}
+
ID3D11UnorderedAccessView *QD3D11Texture::unorderedAccessViewForLevel(int level)
{
if (perLevelViews[level])
@@ -2862,12 +2890,8 @@ static inline D3D11_TEXTURE_ADDRESS_MODE toD3DAddressMode(QRhiSampler::AddressMo
return D3D11_TEXTURE_ADDRESS_WRAP;
case QRhiSampler::ClampToEdge:
return D3D11_TEXTURE_ADDRESS_CLAMP;
- case QRhiSampler::Border:
- return D3D11_TEXTURE_ADDRESS_BORDER;
case QRhiSampler::Mirror:
return D3D11_TEXTURE_ADDRESS_MIRROR;
- case QRhiSampler::MirrorOnce:
- return D3D11_TEXTURE_ADDRESS_MIRROR_ONCE;
default:
Q_UNREACHABLE();
return D3D11_TEXTURE_ADDRESS_CLAMP;
@@ -2944,6 +2968,12 @@ void QD3D11RenderPassDescriptor::release()
// nothing to do here
}
+bool QD3D11RenderPassDescriptor::isCompatible(const QRhiRenderPassDescriptor *other) const
+{
+ Q_UNUSED(other);
+ return true;
+}
+
QD3D11ReferenceRenderTarget::QD3D11ReferenceRenderTarget(QRhiImplementation *rhi)
: QRhiRenderTarget(rhi),
d(rhi)
diff --git a/src/gui/rhi/qrhid3d11_p_p.h b/src/gui/rhi/qrhid3d11_p_p.h
index 26de34ae0a..8f02c4300b 100644
--- a/src/gui/rhi/qrhid3d11_p_p.h
+++ b/src/gui/rhi/qrhid3d11_p_p.h
@@ -100,7 +100,9 @@ struct QD3D11Texture : public QRhiTexture
void release() override;
bool build() override;
bool buildFrom(const QRhiNativeHandles *src) override;
+ bool buildFrom(NativeTexture src) override;
const QRhiNativeHandles *nativeHandles() override;
+ NativeTexture nativeTexture() override;
bool prepareBuild(QSize *adjustedSize = nullptr);
bool finishBuild();
@@ -136,6 +138,7 @@ struct QD3D11RenderPassDescriptor : public QRhiRenderPassDescriptor
QD3D11RenderPassDescriptor(QRhiImplementation *rhi);
~QD3D11RenderPassDescriptor();
void release() override;
+ bool isCompatible(const QRhiRenderPassDescriptor *other) const override;
};
struct QD3D11RenderTargetData
diff --git a/src/gui/rhi/qrhigles2.cpp b/src/gui/rhi/qrhigles2.cpp
index b394354787..3fb2ec38a7 100644
--- a/src/gui/rhi/qrhigles2.cpp
+++ b/src/gui/rhi/qrhigles2.cpp
@@ -1785,11 +1785,6 @@ static inline GLenum toGlWrapMode(QRhiSampler::AddressMode m)
return GL_CLAMP_TO_EDGE;
case QRhiSampler::Mirror:
return GL_MIRRORED_REPEAT;
- case QRhiSampler::MirrorOnce:
- Q_FALLTHROUGH();
- case QRhiSampler::Border:
- qWarning("Unsupported wrap mode %d", m);
- return GL_CLAMP_TO_EDGE;
default:
Q_UNREACHABLE();
return GL_CLAMP_TO_EDGE;
@@ -2433,7 +2428,15 @@ void QRhiGles2::bindShaderResources(QRhiGraphicsPipeline *maybeGraphicsPs, QRhiC
f->glUniformMatrix2fv(uniform.glslLocation, 1, GL_FALSE, reinterpret_cast<const float *>(src));
break;
case QShaderDescription::Mat3:
- f->glUniformMatrix3fv(uniform.glslLocation, 1, GL_FALSE, reinterpret_cast<const float *>(src));
+ {
+ // 4 floats per column (or row, if row-major)
+ float mat[9];
+ const float *srcMat = reinterpret_cast<const float *>(src);
+ memcpy(mat, srcMat, 3 * sizeof(float));
+ memcpy(mat + 3, srcMat + 4, 3 * sizeof(float));
+ memcpy(mat + 6, srcMat + 8, 3 * sizeof(float));
+ f->glUniformMatrix3fv(uniform.glslLocation, 1, GL_FALSE, mat);
+ }
break;
case QShaderDescription::Mat4:
f->glUniformMatrix4fv(uniform.glslLocation, 1, GL_FALSE, reinterpret_cast<const float *>(src));
@@ -2924,21 +2927,64 @@ bool QRhiGles2::linkProgram(GLuint program)
return true;
}
-void QRhiGles2::gatherUniforms(GLuint program, const QShaderDescription::UniformBlock &ub,
+void QRhiGles2::registerUniformIfActive(const QShaderDescription::BlockVariable &var,
+ const QByteArray &namePrefix,
+ int binding,
+ int baseOffset,
+ GLuint program,
+ QVector<QGles2UniformDescription> *dst)
+{
+ if (var.type == QShaderDescription::Struct) {
+ qWarning("Nested structs are not supported at the moment. '%s' ignored.",
+ qPrintable(var.name));
+ return;
+ }
+ QGles2UniformDescription uniform;
+ uniform.type = var.type;
+ const QByteArray name = namePrefix + var.name.toUtf8();
+ uniform.glslLocation = f->glGetUniformLocation(program, name.constData());
+ if (uniform.glslLocation >= 0) {
+ uniform.binding = binding;
+ uniform.offset = uint(baseOffset + var.offset);
+ uniform.size = var.size;
+ dst->append(uniform);
+ }
+}
+
+void QRhiGles2::gatherUniforms(GLuint program,
+ const QShaderDescription::UniformBlock &ub,
QVector<QGles2UniformDescription> *dst)
{
- const QByteArray prefix = ub.structName.toUtf8() + '.';
+ QByteArray prefix = ub.structName.toUtf8() + '.';
for (const QShaderDescription::BlockVariable &blockMember : ub.members) {
- // ### no array support for now
- QGles2UniformDescription uniform;
- uniform.type = blockMember.type;
- const QByteArray name = prefix + blockMember.name.toUtf8();
- uniform.glslLocation = f->glGetUniformLocation(program, name.constData());
- if (uniform.glslLocation >= 0) {
- uniform.binding = ub.binding;
- uniform.offset = uint(blockMember.offset);
- uniform.size = blockMember.size;
- dst->append(uniform);
+ if (blockMember.type == QShaderDescription::Struct) {
+ prefix += blockMember.name.toUtf8();
+ const int baseOffset = blockMember.offset;
+ if (blockMember.arrayDims.isEmpty()) {
+ for (const QShaderDescription::BlockVariable &structMember : blockMember.structMembers)
+ registerUniformIfActive(structMember, prefix, ub.binding, baseOffset, program, dst);
+ } else {
+ if (blockMember.arrayDims.count() > 1) {
+ qWarning("Array of struct '%s' has more than one dimension. Only the first dimension is used.",
+ qPrintable(blockMember.name));
+ }
+ const int dim = blockMember.arrayDims.first();
+ const int elemSize = blockMember.size / dim;
+ int elemOffset = baseOffset;
+ for (int di = 0; di < dim; ++di) {
+ const QByteArray arrayPrefix = prefix + '[' + QByteArray::number(di) + ']' + '.';
+ for (const QShaderDescription::BlockVariable &structMember : blockMember.structMembers)
+ registerUniformIfActive(structMember, arrayPrefix, ub.binding, elemOffset, program, dst);
+ elemOffset += elemSize;
+ }
+ }
+ } else {
+ if (!blockMember.arrayDims.isEmpty()) {
+ qWarning("Arrays are only supported for structs at the moment. '%s' ignored.",
+ qPrintable(blockMember.name));
+ continue;
+ }
+ registerUniformIfActive(blockMember, prefix, ub.binding, 0, program, dst);
}
}
}
@@ -3409,11 +3455,40 @@ bool QGles2Texture::buildFrom(const QRhiNativeHandles *src)
return true;
}
+bool QGles2Texture::buildFrom(QRhiTexture::NativeTexture src)
+{
+ const uint *textureId = static_cast<const uint *>(src.object);
+ if (!textureId || !*textureId)
+ return false;
+
+ if (!prepareBuild())
+ return false;
+
+ texture = *textureId;
+ specified = true;
+
+ QRHI_RES_RHI(QRhiGles2);
+ QRHI_PROF;
+ QRHI_PROF_F(newTexture(this, false, mipLevelCount, m_flags.testFlag(CubeMap) ? 6 : 1, 1));
+
+ owns = false;
+ nativeHandlesStruct.texture = texture;
+
+ generation += 1;
+ rhiD->registerResource(this);
+ return true;
+}
+
const QRhiNativeHandles *QGles2Texture::nativeHandles()
{
return &nativeHandlesStruct;
}
+QRhiTexture::NativeTexture QGles2Texture::nativeTexture()
+{
+ return {&nativeHandlesStruct.texture, 0};
+}
+
QGles2Sampler::QGles2Sampler(QRhiImplementation *rhi, Filter magFilter, Filter minFilter, Filter mipmapMode,
AddressMode u, AddressMode v)
: QRhiSampler(rhi, magFilter, minFilter, mipmapMode, u, v)
@@ -3459,6 +3534,12 @@ void QGles2RenderPassDescriptor::release()
// nothing to do here
}
+bool QGles2RenderPassDescriptor::isCompatible(const QRhiRenderPassDescriptor *other) const
+{
+ Q_UNUSED(other);
+ return true;
+}
+
QGles2ReferenceRenderTarget::QGles2ReferenceRenderTarget(QRhiImplementation *rhi)
: QRhiRenderTarget(rhi),
d(rhi)
diff --git a/src/gui/rhi/qrhigles2_p_p.h b/src/gui/rhi/qrhigles2_p_p.h
index cc945876e6..4a98011d3d 100644
--- a/src/gui/rhi/qrhigles2_p_p.h
+++ b/src/gui/rhi/qrhigles2_p_p.h
@@ -133,7 +133,9 @@ struct QGles2Texture : public QRhiTexture
void release() override;
bool build() override;
bool buildFrom(const QRhiNativeHandles *src) override;
+ bool buildFrom(NativeTexture src) override;
const QRhiNativeHandles *nativeHandles() override;
+ NativeTexture nativeTexture() override;
bool prepareBuild(QSize *adjustedSize = nullptr);
@@ -185,6 +187,7 @@ struct QGles2RenderPassDescriptor : public QRhiRenderPassDescriptor
QGles2RenderPassDescriptor(QRhiImplementation *rhi);
~QGles2RenderPassDescriptor();
void release() override;
+ bool isCompatible(const QRhiRenderPassDescriptor *other) const override;
};
struct QGles2RenderTargetData
@@ -703,7 +706,14 @@ public:
QByteArray shaderSource(const QRhiShaderStage &shaderStage, int *glslVersion);
bool compileShader(GLuint program, const QRhiShaderStage &shaderStage, int *glslVersion);
bool linkProgram(GLuint program);
- void gatherUniforms(GLuint program, const QShaderDescription::UniformBlock &ub,
+ void registerUniformIfActive(const QShaderDescription::BlockVariable &var,
+ const QByteArray &namePrefix,
+ int binding,
+ int baseOffset,
+ GLuint program,
+ QVector<QGles2UniformDescription> *dst);
+ void gatherUniforms(GLuint program,
+ const QShaderDescription::UniformBlock &ub,
QVector<QGles2UniformDescription> *dst);
void gatherSamplers(GLuint program, const QShaderDescription::InOutVariable &v,
QVector<QGles2SamplerDescription> *dst);
diff --git a/src/gui/rhi/qrhimetal.mm b/src/gui/rhi/qrhimetal.mm
index 3ecc56d147..3aa68db585 100644
--- a/src/gui/rhi/qrhimetal.mm
+++ b/src/gui/rhi/qrhimetal.mm
@@ -41,6 +41,8 @@
#ifdef Q_OS_MACOS
#include <AppKit/AppKit.h>
+#else
+#include <UIKit/UIKit.h>
#endif
#include <Metal/Metal.h>
@@ -318,7 +320,13 @@ struct QMetalComputePipelineData
struct QMetalSwapChainData
{
+ // The iOS simulator's headers mark CAMetalLayer as iOS 13.0+ only.
+ // (for real device SDKs it is 8.0+)
+#ifdef TARGET_IPHONE_SIMULATOR
+ API_AVAILABLE(ios(13.0)) CAMetalLayer *layer = nullptr;
+#else
CAMetalLayer *layer = nullptr;
+#endif
id<CAMetalDrawable> curDrawable;
dispatch_semaphore_t sem[QMTL_FRAMES_IN_FLIGHT];
MTLRenderPassDescriptor *rp = nullptr;
@@ -1763,8 +1771,10 @@ void QRhiMetal::executeBufferHostWritesForCurrentFrame(QMetalBuffer *bufD)
if (changeEnd == -1 || u.offset + u.data.size() > changeEnd)
changeEnd = u.offset + u.data.size();
}
+#ifdef Q_OS_MACOS
if (changeBegin >= 0 && bufD->d->managed)
[bufD->d->buf[idx] didModifyRange: NSMakeRange(NSUInteger(changeBegin), NSUInteger(changeEnd - changeBegin))];
+#endif
bufD->d->pendingUpdates[idx].clear();
}
@@ -1798,8 +1808,12 @@ void QRhiMetal::beginPass(QRhiCommandBuffer *cb,
if (color0.needsDrawableForTex || color0.needsDrawableForResolveTex) {
Q_ASSERT(currentSwapChain);
QMetalSwapChain *swapChainD = QRHI_RES(QMetalSwapChain, currentSwapChain);
- if (!swapChainD->d->curDrawable)
- swapChainD->d->curDrawable = [swapChainD->d->layer nextDrawable];
+ if (!swapChainD->d->curDrawable) {
+#ifdef TARGET_IPHONE_SIMULATOR
+ if (@available(ios 13.0, *))
+#endif
+ swapChainD->d->curDrawable = [swapChainD->d->layer nextDrawable];
+ }
if (!swapChainD->d->curDrawable) {
qWarning("No drawable");
return;
@@ -2170,12 +2184,13 @@ bool QMetalRenderBuffer::build()
case DepthStencil:
#ifdef Q_OS_MACOS
desc.storageMode = MTLStorageModePrivate;
+ d->format = rhiD->d->dev.depth24Stencil8PixelFormatSupported
+ ? MTLPixelFormatDepth24Unorm_Stencil8 : MTLPixelFormatDepth32Float_Stencil8;
#else
- desc.storageMode = MTLResourceStorageModeMemoryless;
+ desc.storageMode = MTLStorageModeMemoryless;
transientBacking = true;
+ d->format = MTLPixelFormatDepth32Float_Stencil8;
#endif
- d->format = rhiD->d->dev.depth24Stencil8PixelFormatSupported
- ? MTLPixelFormatDepth24Unorm_Stencil8 : MTLPixelFormatDepth32Float_Stencil8;
desc.pixelFormat = d->format;
break;
case Color:
@@ -2484,11 +2499,40 @@ bool QMetalTexture::buildFrom(const QRhiNativeHandles *src)
return true;
}
+bool QMetalTexture::buildFrom(QRhiTexture::NativeTexture src)
+{
+ void * const * tex = (void * const *) src.object;
+ if (!tex || !*tex)
+ return false;
+
+ if (!prepareBuild())
+ return false;
+
+ d->tex = (id<MTLTexture>) *tex;
+
+ d->owns = false;
+ nativeHandlesStruct.texture = d->tex;
+
+ QRHI_PROF;
+ QRHI_PROF_F(newTexture(this, false, mipLevelCount, m_flags.testFlag(CubeMap) ? 6 : 1, samples));
+
+ lastActiveFrameSlot = -1;
+ generation += 1;
+ QRHI_RES_RHI(QRhiMetal);
+ rhiD->registerResource(this);
+ return true;
+}
+
const QRhiNativeHandles *QMetalTexture::nativeHandles()
{
return &nativeHandlesStruct;
}
+QRhiTexture::NativeTexture QMetalTexture::nativeTexture()
+{
+ return {&nativeHandlesStruct.texture, 0};
+}
+
id<MTLTexture> QMetalTextureData::viewForLevel(int level)
{
Q_ASSERT(level >= 0 && level < int(q->mipLevelCount));
@@ -2569,12 +2613,8 @@ static inline MTLSamplerAddressMode toMetalAddressMode(QRhiSampler::AddressMode
return MTLSamplerAddressModeRepeat;
case QRhiSampler::ClampToEdge:
return MTLSamplerAddressModeClampToEdge;
- case QRhiSampler::Border:
- return MTLSamplerAddressModeClampToBorderColor;
case QRhiSampler::Mirror:
return MTLSamplerAddressModeMirrorRepeat;
- case QRhiSampler::MirrorOnce:
- return MTLSamplerAddressModeMirrorClampToEdge;
default:
Q_UNREACHABLE();
return MTLSamplerAddressModeClampToEdge;
@@ -2647,6 +2687,32 @@ void QMetalRenderPassDescriptor::release()
// nothing to do here
}
+bool QMetalRenderPassDescriptor::isCompatible(const QRhiRenderPassDescriptor *other) const
+{
+ if (!other)
+ return false;
+
+ const QMetalRenderPassDescriptor *o = QRHI_RES(const QMetalRenderPassDescriptor, other);
+
+ if (colorAttachmentCount != o->colorAttachmentCount)
+ return false;
+
+ if (hasDepthStencil != o->hasDepthStencil)
+ return false;
+
+ for (int i = 0; i < colorAttachmentCount; ++i) {
+ if (colorFormat[i] != o->colorFormat[i])
+ return false;
+ }
+
+ if (hasDepthStencil) {
+ if (dsFormat != o->dsFormat)
+ return false;
+ }
+
+ return true;
+}
+
QMetalReferenceRenderTarget::QMetalReferenceRenderTarget(QRhiImplementation *rhi)
: QRhiRenderTarget(rhi),
d(new QMetalRenderTargetData)
@@ -3314,7 +3380,11 @@ bool QMetalGraphicsPipeline::build()
// validation blows up otherwise.
MTLPixelFormat fmt = MTLPixelFormat(rpD->dsFormat);
rpDesc.depthAttachmentPixelFormat = fmt;
+#ifdef Q_OS_MACOS
if (fmt != MTLPixelFormatDepth16Unorm && fmt != MTLPixelFormatDepth32Float)
+#else
+ if (fmt != MTLPixelFormatDepth32Float)
+#endif
rpDesc.stencilAttachmentPixelFormat = fmt;
}
@@ -3531,6 +3601,10 @@ QMetalSwapChain::~QMetalSwapChain()
void QMetalSwapChain::release()
{
+#ifdef TARGET_IPHONE_SIMULATOR
+ if (@available(ios 13.0, *)) {
+#endif
+
if (!d->layer)
return;
@@ -3559,6 +3633,10 @@ void QMetalSwapChain::release()
QRHI_PROF_F(releaseSwapChain(this));
rhiD->unregisterResource(this);
+
+#ifdef TARGET_IPHONE_SIMULATOR
+ }
+#endif
}
QRhiCommandBuffer *QMetalSwapChain::currentFrameCommandBuffer()
@@ -3581,16 +3659,20 @@ QRhiRenderPassDescriptor *QMetalSwapChain::newCompatibleRenderPassDescriptor()
{
chooseFormats(); // ensure colorFormat and similar are filled out
- QRHI_RES_RHI(QRhiMetal);
QMetalRenderPassDescriptor *rpD = new QMetalRenderPassDescriptor(m_rhi);
rpD->colorAttachmentCount = 1;
rpD->hasDepthStencil = m_depthStencil != nullptr;
rpD->colorFormat[0] = int(d->colorFormat);
+#ifdef Q_OS_MACOS
// m_depthStencil may not be built yet so cannot rely on computed fields in it
+ QRHI_RES_RHI(QRhiMetal);
rpD->dsFormat = rhiD->d->dev.depth24Stencil8PixelFormatSupported
? MTLPixelFormatDepth24Unorm_Stencil8 : MTLPixelFormatDepth32Float_Stencil8;
+#else
+ rpD->dsFormat = MTLPixelFormatDepth32Float_Stencil8;
+#endif
return rpD;
}
@@ -3606,6 +3688,10 @@ void QMetalSwapChain::chooseFormats()
bool QMetalSwapChain::buildOrResize()
{
+#ifdef TARGET_IPHONE_SIMULATOR
+ if (@available(ios 13.0, *)) {
+#endif
+
Q_ASSERT(m_window);
const bool needsRegistration = !window || window != m_window;
@@ -3625,7 +3711,11 @@ bool QMetalSwapChain::buildOrResize()
return false;
}
+#ifdef Q_OS_MACOS
NSView *view = reinterpret_cast<NSView *>(window->winId());
+#else
+ UIView *view = reinterpret_cast<UIView *>(window->winId());
+#endif
Q_ASSERT(view);
d->layer = static_cast<CAMetalLayer *>(view.layer);
Q_ASSERT(d->layer);
@@ -3729,6 +3819,15 @@ bool QMetalSwapChain::buildOrResize()
rhiD->registerResource(this);
return true;
+
+#ifdef TARGET_IPHONE_SIMULATOR
+ } else {
+ // Won't ever get here in a normal app because MTLDevice creation would
+ // fail too. Print a warning, just in case.
+ qWarning("No CAMetalLayer support in this version of the iOS Simulator");
+ return false;
+ }
+#endif
}
QT_END_NAMESPACE
diff --git a/src/gui/rhi/qrhimetal_p_p.h b/src/gui/rhi/qrhimetal_p_p.h
index 2be86db5c8..8e655fd98b 100644
--- a/src/gui/rhi/qrhimetal_p_p.h
+++ b/src/gui/rhi/qrhimetal_p_p.h
@@ -101,7 +101,9 @@ struct QMetalTexture : public QRhiTexture
void release() override;
bool build() override;
bool buildFrom(const QRhiNativeHandles *src) override;
+ bool buildFrom(NativeTexture src) override;
const QRhiNativeHandles *nativeHandles() override;
+ NativeTexture nativeTexture() override;
bool prepareBuild(QSize *adjustedSize = nullptr);
@@ -138,6 +140,7 @@ struct QMetalRenderPassDescriptor : public QRhiRenderPassDescriptor
QMetalRenderPassDescriptor(QRhiImplementation *rhi);
~QMetalRenderPassDescriptor();
void release() override;
+ bool isCompatible(const QRhiRenderPassDescriptor *other) const override;
// there is no MTLRenderPassDescriptor here as one will be created for each pass in beginPass()
diff --git a/src/gui/rhi/qrhinull.cpp b/src/gui/rhi/qrhinull.cpp
index fe606f971f..80f004e049 100644
--- a/src/gui/rhi/qrhinull.cpp
+++ b/src/gui/rhi/qrhinull.cpp
@@ -651,6 +651,12 @@ bool QNullTexture::buildFrom(const QRhiNativeHandles *src)
return true;
}
+bool QNullTexture::buildFrom(QRhiTexture::NativeTexture src)
+{
+ Q_UNUSED(src)
+ return buildFrom(nullptr);
+}
+
const QRhiNativeHandles *QNullTexture::nativeHandles()
{
return &nativeHandlesStruct;
@@ -690,6 +696,12 @@ void QNullRenderPassDescriptor::release()
{
}
+bool QNullRenderPassDescriptor::isCompatible(const QRhiRenderPassDescriptor *other) const
+{
+ Q_UNUSED(other);
+ return true;
+}
+
QNullReferenceRenderTarget::QNullReferenceRenderTarget(QRhiImplementation *rhi)
: QRhiRenderTarget(rhi),
d(rhi)
diff --git a/src/gui/rhi/qrhinull_p_p.h b/src/gui/rhi/qrhinull_p_p.h
index ce517bfa63..57c3de0418 100644
--- a/src/gui/rhi/qrhinull_p_p.h
+++ b/src/gui/rhi/qrhinull_p_p.h
@@ -81,6 +81,7 @@ struct QNullTexture : public QRhiTexture
void release() override;
bool build() override;
bool buildFrom(const QRhiNativeHandles *src) override;
+ bool buildFrom(NativeTexture src) override;
const QRhiNativeHandles *nativeHandles() override;
QRhiNullTextureNativeHandles nativeHandlesStruct;
@@ -101,6 +102,7 @@ struct QNullRenderPassDescriptor : public QRhiRenderPassDescriptor
QNullRenderPassDescriptor(QRhiImplementation *rhi);
~QNullRenderPassDescriptor();
void release() override;
+ bool isCompatible(const QRhiRenderPassDescriptor *other) const override;
};
struct QNullRenderTargetData
diff --git a/src/gui/rhi/qrhivulkan.cpp b/src/gui/rhi/qrhivulkan.cpp
index a200a6e271..21ae142b1d 100644
--- a/src/gui/rhi/qrhivulkan.cpp
+++ b/src/gui/rhi/qrhivulkan.cpp
@@ -1032,54 +1032,62 @@ VkFormat QRhiVulkan::optimalDepthStencilFormat()
return optimalDsFormat;
}
-bool QRhiVulkan::createDefaultRenderPass(VkRenderPass *rp, bool hasDepthStencil, VkSampleCountFlagBits samples, VkFormat colorFormat)
+bool QRhiVulkan::createDefaultRenderPass(QVkRenderPassDescriptor *rpD, bool hasDepthStencil, VkSampleCountFlagBits samples, VkFormat colorFormat)
{
- VkAttachmentDescription attDesc[3];
- memset(attDesc, 0, sizeof(attDesc));
-
// attachment list layout is color (1), ds (0-1), resolve (0-1)
- attDesc[0].format = colorFormat;
- attDesc[0].samples = samples;
- attDesc[0].loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR;
- attDesc[0].storeOp = samples > VK_SAMPLE_COUNT_1_BIT ? VK_ATTACHMENT_STORE_OP_DONT_CARE : VK_ATTACHMENT_STORE_OP_STORE;
- attDesc[0].stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE;
- attDesc[0].stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE;
- attDesc[0].initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
- attDesc[0].finalLayout = samples > VK_SAMPLE_COUNT_1_BIT ? VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL : VK_IMAGE_LAYOUT_PRESENT_SRC_KHR;
-
- // clear on load + no store + lazy alloc + transient image should play
- // nicely with tiled GPUs (no physical backing necessary for ds buffer)
- attDesc[1].format = optimalDepthStencilFormat();
- attDesc[1].samples = samples;
- attDesc[1].loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR;
- attDesc[1].storeOp = VK_ATTACHMENT_STORE_OP_DONT_CARE;
- attDesc[1].stencilLoadOp = VK_ATTACHMENT_LOAD_OP_CLEAR;
- attDesc[1].stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE;
- attDesc[1].initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
- attDesc[1].finalLayout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL;
+ VkAttachmentDescription attDesc;
+ memset(&attDesc, 0, sizeof(attDesc));
+ attDesc.format = colorFormat;
+ attDesc.samples = samples;
+ attDesc.loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR;
+ attDesc.storeOp = samples > VK_SAMPLE_COUNT_1_BIT ? VK_ATTACHMENT_STORE_OP_DONT_CARE : VK_ATTACHMENT_STORE_OP_STORE;
+ attDesc.stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE;
+ attDesc.stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE;
+ attDesc.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
+ attDesc.finalLayout = samples > VK_SAMPLE_COUNT_1_BIT ? VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL : VK_IMAGE_LAYOUT_PRESENT_SRC_KHR;
+ rpD->attDescs.append(attDesc);
- if (samples > VK_SAMPLE_COUNT_1_BIT) {
- attDesc[2].format = colorFormat;
- attDesc[2].samples = VK_SAMPLE_COUNT_1_BIT;
- attDesc[2].loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR;
- attDesc[2].storeOp = VK_ATTACHMENT_STORE_OP_STORE;
- attDesc[2].stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE;
- attDesc[2].stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE;
- attDesc[2].initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
- attDesc[2].finalLayout = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR;
+ rpD->colorRefs.append({ 0, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL });
+
+ if (hasDepthStencil) {
+ // clear on load + no store + lazy alloc + transient image should play
+ // nicely with tiled GPUs (no physical backing necessary for ds buffer)
+ memset(&attDesc, 0, sizeof(attDesc));
+ attDesc.format = optimalDepthStencilFormat();
+ attDesc.samples = samples;
+ attDesc.loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR;
+ attDesc.storeOp = VK_ATTACHMENT_STORE_OP_DONT_CARE;
+ attDesc.stencilLoadOp = VK_ATTACHMENT_LOAD_OP_CLEAR;
+ attDesc.stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE;
+ attDesc.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
+ attDesc.finalLayout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL;
+ rpD->attDescs.append(attDesc);
+
+ rpD->dsRef = { 1, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL };
}
- VkAttachmentReference colorRef = { 0, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL };
- VkAttachmentReference dsRef = { 1, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL };
- VkAttachmentReference resolveRef = { 2, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL };
+ if (samples > VK_SAMPLE_COUNT_1_BIT) {
+ memset(&attDesc, 0, sizeof(attDesc));
+ attDesc.format = colorFormat;
+ attDesc.samples = VK_SAMPLE_COUNT_1_BIT;
+ attDesc.loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR;
+ attDesc.storeOp = VK_ATTACHMENT_STORE_OP_STORE;
+ attDesc.stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE;
+ attDesc.stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE;
+ attDesc.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
+ attDesc.finalLayout = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR;
+ rpD->attDescs.append(attDesc);
+
+ rpD->resolveRefs.append({ 2, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL });
+ }
VkSubpassDescription subpassDesc;
memset(&subpassDesc, 0, sizeof(subpassDesc));
subpassDesc.pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS;
subpassDesc.colorAttachmentCount = 1;
- subpassDesc.pColorAttachments = &colorRef;
- subpassDesc.pDepthStencilAttachment = hasDepthStencil ? &dsRef : nullptr;
+ subpassDesc.pColorAttachments = rpD->colorRefs.constData();
+ subpassDesc.pDepthStencilAttachment = hasDepthStencil ? &rpD->dsRef : nullptr;
// Replace the first implicit dep (TOP_OF_PIPE / ALL_COMMANDS) with our own.
VkSubpassDependency subpassDep;
@@ -1095,7 +1103,7 @@ bool QRhiVulkan::createDefaultRenderPass(VkRenderPass *rp, bool hasDepthStencil,
memset(&rpInfo, 0, sizeof(rpInfo));
rpInfo.sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO;
rpInfo.attachmentCount = 1;
- rpInfo.pAttachments = attDesc;
+ rpInfo.pAttachments = rpD->attDescs.constData();
rpInfo.subpassCount = 1;
rpInfo.pSubpasses = &subpassDesc;
rpInfo.dependencyCount = 1;
@@ -1106,19 +1114,21 @@ bool QRhiVulkan::createDefaultRenderPass(VkRenderPass *rp, bool hasDepthStencil,
if (samples > VK_SAMPLE_COUNT_1_BIT) {
rpInfo.attachmentCount += 1;
- subpassDesc.pResolveAttachments = &resolveRef;
+ subpassDesc.pResolveAttachments = rpD->resolveRefs.constData();
}
- VkResult err = df->vkCreateRenderPass(dev, &rpInfo, nullptr, rp);
+ VkResult err = df->vkCreateRenderPass(dev, &rpInfo, nullptr, &rpD->rp);
if (err != VK_SUCCESS) {
qWarning("Failed to create renderpass: %d", err);
return false;
}
+ rpD->hasDepthStencil = hasDepthStencil;
+
return true;
}
-bool QRhiVulkan::createOffscreenRenderPass(VkRenderPass *rp,
+bool QRhiVulkan::createOffscreenRenderPass(QVkRenderPassDescriptor *rpD,
const QRhiColorAttachment *firstColorAttachment,
const QRhiColorAttachment *lastColorAttachment,
bool preserveColor,
@@ -1126,10 +1136,6 @@ bool QRhiVulkan::createOffscreenRenderPass(VkRenderPass *rp,
QRhiRenderBuffer *depthStencilBuffer,
QRhiTexture *depthTexture)
{
- QVarLengthArray<VkAttachmentDescription, 8> attDescs;
- QVarLengthArray<VkAttachmentReference, 8> colorRefs;
- QVarLengthArray<VkAttachmentReference, 8> resolveRefs;
-
// attachment list layout is color (0-8), ds (0-1), resolve (0-8)
for (auto it = firstColorAttachment; it != lastColorAttachment; ++it) {
@@ -1150,14 +1156,14 @@ bool QRhiVulkan::createOffscreenRenderPass(VkRenderPass *rp,
// this has to interact correctly with activateTextureRenderTarget(), hence leaving in COLOR_ATT
attDesc.initialLayout = preserveColor ? VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL : VK_IMAGE_LAYOUT_UNDEFINED;
attDesc.finalLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
- attDescs.append(attDesc);
+ rpD->attDescs.append(attDesc);
- const VkAttachmentReference ref = { uint32_t(attDescs.count() - 1), VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL };
- colorRefs.append(ref);
+ const VkAttachmentReference ref = { uint32_t(rpD->attDescs.count() - 1), VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL };
+ rpD->colorRefs.append(ref);
}
- const bool hasDepthStencil = depthStencilBuffer || depthTexture;
- if (hasDepthStencil) {
+ rpD->hasDepthStencil = depthStencilBuffer || depthTexture;
+ if (rpD->hasDepthStencil) {
const VkFormat dsFormat = depthTexture ? QRHI_RES(QVkTexture, depthTexture)->vkformat
: QRHI_RES(QVkRenderBuffer, depthStencilBuffer)->vkformat;
const VkSampleCountFlagBits samples = depthTexture ? QRHI_RES(QVkTexture, depthTexture)->samples
@@ -1174,9 +1180,9 @@ bool QRhiVulkan::createOffscreenRenderPass(VkRenderPass *rp,
attDesc.stencilStoreOp = storeOp;
attDesc.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
attDesc.finalLayout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL;
- attDescs.append(attDesc);
+ rpD->attDescs.append(attDesc);
}
- VkAttachmentReference dsRef = { uint32_t(attDescs.count() - 1), VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL };
+ rpD->dsRef = { uint32_t(rpD->attDescs.count() - 1), VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL };
for (auto it = firstColorAttachment; it != lastColorAttachment; ++it) {
if (it->resolveTexture()) {
@@ -1194,37 +1200,37 @@ bool QRhiVulkan::createOffscreenRenderPass(VkRenderPass *rp,
attDesc.stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE;
attDesc.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
attDesc.finalLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
- attDescs.append(attDesc);
+ rpD->attDescs.append(attDesc);
- const VkAttachmentReference ref = { uint32_t(attDescs.count() - 1), VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL };
- resolveRefs.append(ref);
+ const VkAttachmentReference ref = { uint32_t(rpD->attDescs.count() - 1), VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL };
+ rpD->resolveRefs.append(ref);
} else {
const VkAttachmentReference ref = { VK_ATTACHMENT_UNUSED, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL };
- resolveRefs.append(ref);
+ rpD->resolveRefs.append(ref);
}
}
VkSubpassDescription subpassDesc;
memset(&subpassDesc, 0, sizeof(subpassDesc));
subpassDesc.pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS;
- subpassDesc.colorAttachmentCount = uint32_t(colorRefs.count());
- Q_ASSERT(colorRefs.count() == resolveRefs.count());
- subpassDesc.pColorAttachments = !colorRefs.isEmpty() ? colorRefs.constData() : nullptr;
- subpassDesc.pDepthStencilAttachment = hasDepthStencil ? &dsRef : nullptr;
- subpassDesc.pResolveAttachments = !resolveRefs.isEmpty() ? resolveRefs.constData() : nullptr;
+ subpassDesc.colorAttachmentCount = uint32_t(rpD->colorRefs.count());
+ Q_ASSERT(rpD->colorRefs.count() == rpD->resolveRefs.count());
+ subpassDesc.pColorAttachments = !rpD->colorRefs.isEmpty() ? rpD->colorRefs.constData() : nullptr;
+ subpassDesc.pDepthStencilAttachment = rpD->hasDepthStencil ? &rpD->dsRef : nullptr;
+ subpassDesc.pResolveAttachments = !rpD->resolveRefs.isEmpty() ? rpD->resolveRefs.constData() : nullptr;
VkRenderPassCreateInfo rpInfo;
memset(&rpInfo, 0, sizeof(rpInfo));
rpInfo.sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO;
- rpInfo.attachmentCount = uint32_t(attDescs.count());
- rpInfo.pAttachments = attDescs.constData();
+ rpInfo.attachmentCount = uint32_t(rpD->attDescs.count());
+ rpInfo.pAttachments = rpD->attDescs.constData();
rpInfo.subpassCount = 1;
rpInfo.pSubpasses = &subpassDesc;
// don't yet know the correct initial/final access and stage stuff for the
// implicit deps at this point, so leave it to the resource tracking to
// generate barriers
- VkResult err = df->vkCreateRenderPass(dev, &rpInfo, nullptr, rp);
+ VkResult err = df->vkCreateRenderPass(dev, &rpInfo, nullptr, &rpD->rp);
if (err != VK_SUCCESS) {
qWarning("Failed to create renderpass: %d", err);
return false;
@@ -1710,6 +1716,10 @@ QRhi::FrameOpResult QRhiVulkan::endFrame(QRhiSwapChain *swapChain, QRhi::EndFram
presInfo.waitSemaphoreCount = 1;
presInfo.pWaitSemaphores = &frame.drawSem; // gfxQueueFamilyIdx == presQueueFamilyIdx ? &frame.drawSem : &frame.presTransSem;
+ // Do platform-specific WM notification. F.ex. essential on Wayland in
+ // order to circumvent driver frame callbacks
+ inst->presentAboutToBeQueued(swapChainD->window);
+
VkResult err = vkQueuePresentKHR(gfxQueue, &presInfo);
if (err != VK_SUCCESS) {
if (err == VK_ERROR_OUT_OF_DATE_KHR) {
@@ -4613,12 +4623,8 @@ static inline VkSamplerAddressMode toVkAddressMode(QRhiSampler::AddressMode m)
return VK_SAMPLER_ADDRESS_MODE_REPEAT;
case QRhiSampler::ClampToEdge:
return VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE;
- case QRhiSampler::Border:
- return VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER;
case QRhiSampler::Mirror:
return VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT;
- case QRhiSampler::MirrorOnce:
- return VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE;
default:
Q_UNREACHABLE();
return VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE;
@@ -5364,12 +5370,42 @@ bool QVkTexture::buildFrom(const QRhiNativeHandles *src)
return true;
}
+bool QVkTexture::buildFrom(QRhiTexture::NativeTexture src)
+{
+ auto *img = static_cast<const VkImage*>(src.object);
+ if (!img || !*img)
+ return false;
+
+ if (!prepareBuild())
+ return false;
+
+ image = *img;
+
+ if (!finishBuild())
+ return false;
+
+ QRHI_PROF;
+ QRHI_PROF_F(newTexture(this, false, int(mipLevelCount), m_flags.testFlag(CubeMap) ? 6 : 1, samples));
+
+ usageState.layout = VkImageLayout(src.layout);
+
+ owns = false;
+ QRHI_RES_RHI(QRhiVulkan);
+ rhiD->registerResource(this);
+ return true;
+}
+
const QRhiNativeHandles *QVkTexture::nativeHandles()
{
nativeHandlesStruct.layout = usageState.layout;
return &nativeHandlesStruct;
}
+QRhiTexture::NativeTexture QVkTexture::nativeTexture()
+{
+ return {&nativeHandlesStruct.image, usageState.layout};
+}
+
VkImageView QVkTexture::imageViewForLevel(int level)
{
Q_ASSERT(level >= 0 && level < int(mipLevelCount));
@@ -5501,6 +5537,61 @@ void QVkRenderPassDescriptor::release()
rhiD->unregisterResource(this);
}
+static inline bool attachmentDescriptionEquals(const VkAttachmentDescription &a, const VkAttachmentDescription &b)
+{
+ return a.format == b.format
+ && a.samples == b.samples
+ && a.loadOp == b.loadOp
+ && a.storeOp == b.storeOp
+ && a.stencilLoadOp == b.stencilLoadOp
+ && a.stencilStoreOp == b.stencilStoreOp
+ && a.initialLayout == b.initialLayout
+ && a.finalLayout == b.finalLayout;
+}
+
+bool QVkRenderPassDescriptor::isCompatible(const QRhiRenderPassDescriptor *other) const
+{
+ if (!other)
+ return false;
+
+ const QVkRenderPassDescriptor *o = QRHI_RES(const QVkRenderPassDescriptor, other);
+
+ if (attDescs.count() != o->attDescs.count())
+ return false;
+ if (colorRefs.count() != o->colorRefs.count())
+ return false;
+ if (resolveRefs.count() != o->resolveRefs.count())
+ return false;
+ if (hasDepthStencil != o->hasDepthStencil)
+ return false;
+
+ for (int i = 0, ie = colorRefs.count(); i != ie; ++i) {
+ const uint32_t attIdx = colorRefs[i].attachment;
+ if (attIdx != o->colorRefs[i].attachment)
+ return false;
+ if (attIdx != VK_ATTACHMENT_UNUSED && !attachmentDescriptionEquals(attDescs[attIdx], o->attDescs[attIdx]))
+ return false;
+ }
+
+ if (hasDepthStencil) {
+ const uint32_t attIdx = dsRef.attachment;
+ if (attIdx != o->dsRef.attachment)
+ return false;
+ if (attIdx != VK_ATTACHMENT_UNUSED && !attachmentDescriptionEquals(attDescs[attIdx], o->attDescs[attIdx]))
+ return false;
+ }
+
+ for (int i = 0, ie = resolveRefs.count(); i != ie; ++i) {
+ const uint32_t attIdx = resolveRefs[i].attachment;
+ if (attIdx != o->resolveRefs[i].attachment)
+ return false;
+ if (attIdx != VK_ATTACHMENT_UNUSED && !attachmentDescriptionEquals(attDescs[attIdx], o->attDescs[attIdx]))
+ return false;
+ }
+
+ return true;
+}
+
const QRhiNativeHandles *QVkRenderPassDescriptor::nativeHandles()
{
nativeHandlesStruct.renderPass = rp;
@@ -5584,7 +5675,7 @@ QRhiRenderPassDescriptor *QVkTextureRenderTarget::newCompatibleRenderPassDescrip
QRHI_RES_RHI(QRhiVulkan);
QVkRenderPassDescriptor *rp = new QVkRenderPassDescriptor(m_rhi);
- if (!rhiD->createOffscreenRenderPass(&rp->rp,
+ if (!rhiD->createOffscreenRenderPass(rp,
m_desc.cbeginColorAttachments(),
m_desc.cendColorAttachments(),
m_flags.testFlag(QRhiTextureRenderTarget::PreserveColorContents),
@@ -6285,7 +6376,7 @@ QRhiRenderPassDescriptor *QVkSwapChain::newCompatibleRenderPassDescriptor()
QRHI_RES_RHI(QRhiVulkan);
QVkRenderPassDescriptor *rp = new QVkRenderPassDescriptor(m_rhi);
- if (!rhiD->createDefaultRenderPass(&rp->rp,
+ if (!rhiD->createDefaultRenderPass(rp,
m_depthStencil != nullptr,
samples,
colorFormat))
diff --git a/src/gui/rhi/qrhivulkan_p_p.h b/src/gui/rhi/qrhivulkan_p_p.h
index d0e1e6758b..d1b77870a1 100644
--- a/src/gui/rhi/qrhivulkan_p_p.h
+++ b/src/gui/rhi/qrhivulkan_p_p.h
@@ -121,7 +121,9 @@ struct QVkTexture : public QRhiTexture
void release() override;
bool build() override;
bool buildFrom(const QRhiNativeHandles *src) override;
+ bool buildFrom(NativeTexture src) override;
const QRhiNativeHandles *nativeHandles() override;
+ NativeTexture nativeTexture() override;
bool prepareBuild(QSize *adjustedSize = nullptr);
bool finishBuild();
@@ -171,10 +173,16 @@ struct QVkRenderPassDescriptor : public QRhiRenderPassDescriptor
QVkRenderPassDescriptor(QRhiImplementation *rhi);
~QVkRenderPassDescriptor();
void release() override;
+ bool isCompatible(const QRhiRenderPassDescriptor *other) const override;
const QRhiNativeHandles *nativeHandles() override;
VkRenderPass rp = VK_NULL_HANDLE;
bool ownsRp = false;
+ QVarLengthArray<VkAttachmentDescription, 8> attDescs;
+ QVarLengthArray<VkAttachmentReference, 8> colorRefs;
+ QVarLengthArray<VkAttachmentReference, 8> resolveRefs;
+ bool hasDepthStencil = false;
+ VkAttachmentReference dsRef;
QRhiVulkanRenderPassNativeHandles nativeHandlesStruct;
int lastActiveFrameSlot = -1;
};
@@ -727,11 +735,11 @@ public:
VkFormat optimalDepthStencilFormat();
VkSampleCountFlagBits effectiveSampleCount(int sampleCount);
- bool createDefaultRenderPass(VkRenderPass *rp,
+ bool createDefaultRenderPass(QVkRenderPassDescriptor *rpD,
bool hasDepthStencil,
VkSampleCountFlagBits samples,
VkFormat colorFormat);
- bool createOffscreenRenderPass(VkRenderPass *rp,
+ bool createOffscreenRenderPass(QVkRenderPassDescriptor *rpD,
const QRhiColorAttachment *firstColorAttachment,
const QRhiColorAttachment *lastColorAttachment,
bool preserveColor,
diff --git a/src/gui/rhi/qshader.cpp b/src/gui/rhi/qshader.cpp
index 9d35d83336..dc6060f882 100644
--- a/src/gui/rhi/qshader.cpp
+++ b/src/gui/rhi/qshader.cpp
@@ -214,9 +214,6 @@ QT_BEGIN_NAMESPACE
QShader, it indicates no shader code was found for the requested key.
*/
-static const int QSB_VERSION = 2;
-static const int QSB_VERSION_WITHOUT_BINDINGS = 1;
-
/*!
Constructs a new, empty (and thus invalid) QShader instance.
*/
@@ -368,9 +365,9 @@ QByteArray QShader::serialized() const
if (!buf.open(QIODevice::WriteOnly))
return QByteArray();
- ds << QSB_VERSION;
+ ds << QShaderPrivate::QSB_VERSION;
ds << int(d->stage);
- ds << d->desc.toBinaryJson();
+ ds << d->desc.toCbor();
ds << d->shaders.count();
for (auto it = d->shaders.cbegin(), itEnd = d->shaders.cend(); it != itEnd; ++it) {
const QShaderKey &k(it.key());
@@ -429,9 +426,12 @@ QShader QShader::fromSerialized(const QByteArray &data)
Q_ASSERT(d->ref.loadRelaxed() == 1); // must be detached
int intVal;
ds >> intVal;
- const int qsbVersion = intVal;
- if (qsbVersion != QSB_VERSION && qsbVersion != QSB_VERSION_WITHOUT_BINDINGS) {
- qWarning("Attempted to deserialize QShader with unknown version %d.", qsbVersion);
+ d->qsbVersion = intVal;
+ if (d->qsbVersion != QShaderPrivate::QSB_VERSION
+ && d->qsbVersion != QShaderPrivate::QSB_VERSION_WITH_BINARY_JSON
+ && d->qsbVersion != QShaderPrivate::QSB_VERSION_WITHOUT_BINDINGS)
+ {
+ qWarning("Attempted to deserialize QShader with unknown version %d.", d->qsbVersion);
return QShader();
}
@@ -439,7 +439,10 @@ QShader QShader::fromSerialized(const QByteArray &data)
d->stage = Stage(intVal);
QByteArray descBin;
ds >> descBin;
- d->desc = QShaderDescription::fromBinaryJson(descBin);
+ if (d->qsbVersion > QShaderPrivate::QSB_VERSION_WITH_BINARY_JSON)
+ d->desc = QShaderDescription::fromCbor(descBin);
+ else
+ d->desc = QShaderDescription::fromBinaryJson(descBin);
int count;
ds >> count;
for (int i = 0; i < count; ++i) {
@@ -454,7 +457,7 @@ QShader QShader::fromSerialized(const QByteArray &data)
d->shaders[k] = shader;
}
- if (qsbVersion != QSB_VERSION_WITHOUT_BINDINGS) {
+ if (d->qsbVersion > QShaderPrivate::QSB_VERSION_WITHOUT_BINDINGS) {
ds >> count;
for (int i = 0; i < count; ++i) {
QShaderKey k;
diff --git a/src/gui/rhi/qshader_p_p.h b/src/gui/rhi/qshader_p_p.h
index 4535e01491..8c89f2b45f 100644
--- a/src/gui/rhi/qshader_p_p.h
+++ b/src/gui/rhi/qshader_p_p.h
@@ -57,6 +57,10 @@ QT_BEGIN_NAMESPACE
struct Q_GUI_EXPORT QShaderPrivate
{
+ static const int QSB_VERSION = 3;
+ static const int QSB_VERSION_WITH_BINARY_JSON = 2;
+ static const int QSB_VERSION_WITHOUT_BINDINGS = 1;
+
QShaderPrivate()
: ref(1)
{
@@ -64,6 +68,7 @@ struct Q_GUI_EXPORT QShaderPrivate
QShaderPrivate(const QShaderPrivate *other)
: ref(1),
+ qsbVersion(other->qsbVersion),
stage(other->stage),
desc(other->desc),
shaders(other->shaders),
@@ -75,6 +80,7 @@ struct Q_GUI_EXPORT QShaderPrivate
static const QShaderPrivate *get(const QShader *s) { return s->d; }
QAtomicInt ref;
+ int qsbVersion = QSB_VERSION;
QShader::Stage stage = QShader::VertexStage;
QShaderDescription desc;
QHash<QShaderKey, QShaderCode> shaders;
diff --git a/src/gui/rhi/qshaderdescription.cpp b/src/gui/rhi/qshaderdescription.cpp
index 179d5f3a07..d0f73f6aa7 100644
--- a/src/gui/rhi/qshaderdescription.cpp
+++ b/src/gui/rhi/qshaderdescription.cpp
@@ -38,6 +38,9 @@
#include <QDebug>
#include <QJsonObject>
#include <QJsonArray>
+#include <QCborValue>
+#include <QCborMap>
+#include <QCborArray>
QT_BEGIN_NAMESPACE
@@ -335,11 +338,27 @@ bool QShaderDescription::isValid() const
/*!
\return a serialized binary version of the data.
- \sa toJson()
+ \sa toJson(), toCbor()
*/
QByteArray QShaderDescription::toBinaryJson() const
{
+#if QT_CONFIG(binaryjson)
return d->makeDoc().toBinaryData();
+#else
+ qWarning("Cannot generate binary JSON from QShaderDescription due to disabled binaryjson feature");
+ return QByteArray();
+#endif
+}
+
+/*!
+ \return a serialized binary version of the data in CBOR (Concise Binary
+ Object Representation) format.
+
+ \sa QCborValue, toBinaryJson(), toJson()
+ */
+QByteArray QShaderDescription::toCbor() const
+{
+ return QCborValue::fromJsonValue(d->makeDoc().object()).toCbor();
}
/*!
@@ -347,7 +366,7 @@ QByteArray QShaderDescription::toBinaryJson() const
\note There is no deserialization method provided for JSON text.
- \sa toBinaryJson()
+ \sa toBinaryJson(), toCbor()
*/
QByteArray QShaderDescription::toJson() const
{
@@ -357,11 +376,38 @@ QByteArray QShaderDescription::toJson() const
/*!
Deserializes the given binary JSON \a data and returns a new
QShaderDescription.
+
+ \sa fromCbor()
*/
QShaderDescription QShaderDescription::fromBinaryJson(const QByteArray &data)
{
QShaderDescription desc;
+#if QT_CONFIG(binaryjson)
QShaderDescriptionPrivate::get(&desc)->loadDoc(QJsonDocument::fromBinaryData(data));
+#else
+ Q_UNUSED(data);
+ qWarning("Cannot load QShaderDescription from binary JSON due to disabled binaryjson feature");
+#endif
+ return desc;
+}
+
+/*!
+ Deserializes the given CBOR \a data and returns a new QShaderDescription.
+
+ \sa fromBinaryJson()
+ */
+QShaderDescription QShaderDescription::fromCbor(const QByteArray &data)
+{
+ QShaderDescription desc;
+ const QCborValue cbor = QCborValue::fromCbor(data);
+ if (cbor.isMap()) {
+ const QJsonDocument doc(cbor.toMap().toJsonObject());
+ QShaderDescriptionPrivate::get(&desc)->loadDoc(doc);
+ }
+ if (cbor.isArray()) {
+ const QJsonDocument doc(cbor.toArray().toJsonArray());
+ QShaderDescriptionPrivate::get(&desc)->loadDoc(doc);
+ }
return desc;
}
@@ -1119,4 +1165,106 @@ void QShaderDescriptionPrivate::loadDoc(const QJsonDocument &doc)
}
}
+/*!
+ Returns \c true if the two QShaderDescription objects \a lhs and \a rhs are
+ equal.
+
+ \relates QShaderDescription
+ */
+bool operator==(const QShaderDescription &lhs, const QShaderDescription &rhs) Q_DECL_NOTHROW
+{
+ if (lhs.d == rhs.d)
+ return true;
+
+ return lhs.d->inVars == rhs.d->inVars
+ && lhs.d->outVars == rhs.d->outVars
+ && lhs.d->uniformBlocks == rhs.d->uniformBlocks
+ && lhs.d->pushConstantBlocks == rhs.d->pushConstantBlocks
+ && lhs.d->storageBlocks == rhs.d->storageBlocks
+ && lhs.d->combinedImageSamplers == rhs.d->combinedImageSamplers
+ && lhs.d->storageImages == rhs.d->storageImages
+ && lhs.d->localSize == rhs.d->localSize;
+}
+
+/*!
+ Returns \c true if the two InOutVariable objects \a lhs and \a rhs are
+ equal.
+
+ \relates QShaderDescription::InOutVariable
+ */
+bool operator==(const QShaderDescription::InOutVariable &lhs, const QShaderDescription::InOutVariable &rhs) Q_DECL_NOTHROW
+{
+ return lhs.name == rhs.name
+ && lhs.type == rhs.type
+ && lhs.location == rhs.location
+ && lhs.binding == rhs.binding
+ && lhs.descriptorSet == rhs.descriptorSet
+ && lhs.imageFormat == rhs.imageFormat
+ && lhs.imageFlags == rhs.imageFlags;
+}
+
+/*!
+ Returns \c true if the two BlockVariable objects \a lhs and \a rhs are
+ equal.
+
+ \relates QShaderDescription::BlockVariable
+ */
+bool operator==(const QShaderDescription::BlockVariable &lhs, const QShaderDescription::BlockVariable &rhs) Q_DECL_NOTHROW
+{
+ return lhs.name == rhs.name
+ && lhs.type == rhs.type
+ && lhs.offset == rhs.offset
+ && lhs.size == rhs.size
+ && lhs.arrayDims == rhs.arrayDims
+ && lhs.arrayStride == rhs.arrayStride
+ && lhs.matrixStride == rhs.matrixStride
+ && lhs.matrixIsRowMajor == rhs.matrixIsRowMajor
+ && lhs.structMembers == rhs.structMembers;
+}
+
+/*!
+ Returns \c true if the two UniformBlock objects \a lhs and \a rhs are
+ equal.
+
+ \relates QShaderDescription::UniformBlock
+ */
+bool operator==(const QShaderDescription::UniformBlock &lhs, const QShaderDescription::UniformBlock &rhs) Q_DECL_NOTHROW
+{
+ return lhs.blockName == rhs.blockName
+ && lhs.structName == rhs.structName
+ && lhs.size == rhs.size
+ && lhs.binding == rhs.binding
+ && lhs.descriptorSet == rhs.descriptorSet
+ && lhs.members == rhs.members;
+}
+
+/*!
+ Returns \c true if the two PushConstantBlock objects \a lhs and \a rhs are
+ equal.
+
+ \relates QShaderDescription::PushConstantBlock
+ */
+bool operator==(const QShaderDescription::PushConstantBlock &lhs, const QShaderDescription::PushConstantBlock &rhs) Q_DECL_NOTHROW
+{
+ return lhs.name == rhs.name
+ && lhs.size == rhs.size
+ && lhs.members == rhs.members;
+}
+
+/*!
+ Returns \c true if the two StorageBlock objects \a lhs and \a rhs are
+ equal.
+
+ \relates QShaderDescription::StorageBlock
+ */
+bool operator==(const QShaderDescription::StorageBlock &lhs, const QShaderDescription::StorageBlock &rhs) Q_DECL_NOTHROW
+{
+ return lhs.blockName == rhs.blockName
+ && lhs.instanceName == rhs.instanceName
+ && lhs.knownSize == rhs.knownSize
+ && lhs.binding == rhs.binding
+ && lhs.descriptorSet == rhs.descriptorSet
+ && lhs.members == rhs.members;
+}
+
QT_END_NAMESPACE
diff --git a/src/gui/rhi/qshaderdescription_p.h b/src/gui/rhi/qshaderdescription_p.h
index 5a63b998cd..e02a53dcb5 100644
--- a/src/gui/rhi/qshaderdescription_p.h
+++ b/src/gui/rhi/qshaderdescription_p.h
@@ -69,9 +69,11 @@ public:
bool isValid() const;
QByteArray toBinaryJson() const;
+ QByteArray toCbor() const;
QByteArray toJson() const;
static QShaderDescription fromBinaryJson(const QByteArray &data);
+ static QShaderDescription fromCbor(const QByteArray &data);
enum VariableType {
Unknown = 0,
@@ -263,6 +265,7 @@ private:
#ifndef QT_NO_DEBUG_STREAM
friend Q_GUI_EXPORT QDebug operator<<(QDebug, const QShaderDescription &);
#endif
+ friend Q_GUI_EXPORT bool operator==(const QShaderDescription &lhs, const QShaderDescription &rhs) Q_DECL_NOTHROW;
};
Q_DECLARE_OPERATORS_FOR_FLAGS(QShaderDescription::ImageFlags)
@@ -276,6 +279,43 @@ Q_GUI_EXPORT QDebug operator<<(QDebug, const QShaderDescription::PushConstantBlo
Q_GUI_EXPORT QDebug operator<<(QDebug, const QShaderDescription::StorageBlock &);
#endif
+Q_GUI_EXPORT bool operator==(const QShaderDescription &lhs, const QShaderDescription &rhs) Q_DECL_NOTHROW;
+Q_GUI_EXPORT bool operator==(const QShaderDescription::InOutVariable &lhs, const QShaderDescription::InOutVariable &rhs) Q_DECL_NOTHROW;
+Q_GUI_EXPORT bool operator==(const QShaderDescription::BlockVariable &lhs, const QShaderDescription::BlockVariable &rhs) Q_DECL_NOTHROW;
+Q_GUI_EXPORT bool operator==(const QShaderDescription::UniformBlock &lhs, const QShaderDescription::UniformBlock &rhs) Q_DECL_NOTHROW;
+Q_GUI_EXPORT bool operator==(const QShaderDescription::PushConstantBlock &lhs, const QShaderDescription::PushConstantBlock &rhs) Q_DECL_NOTHROW;
+Q_GUI_EXPORT bool operator==(const QShaderDescription::StorageBlock &lhs, const QShaderDescription::StorageBlock &rhs) Q_DECL_NOTHROW;
+
+inline bool operator!=(const QShaderDescription &lhs, const QShaderDescription &rhs) Q_DECL_NOTHROW
+{
+ return !(lhs == rhs);
+}
+
+inline bool operator!=(const QShaderDescription::InOutVariable &lhs, const QShaderDescription::InOutVariable &rhs) Q_DECL_NOTHROW
+{
+ return !(lhs == rhs);
+}
+
+inline bool operator!=(const QShaderDescription::BlockVariable &lhs, const QShaderDescription::BlockVariable &rhs) Q_DECL_NOTHROW
+{
+ return !(lhs == rhs);
+}
+
+inline bool operator!=(const QShaderDescription::UniformBlock &lhs, const QShaderDescription::UniformBlock &rhs) Q_DECL_NOTHROW
+{
+ return !(lhs == rhs);
+}
+
+inline bool operator!=(const QShaderDescription::PushConstantBlock &lhs, const QShaderDescription::PushConstantBlock &rhs) Q_DECL_NOTHROW
+{
+ return !(lhs == rhs);
+}
+
+inline bool operator!=(const QShaderDescription::StorageBlock &lhs, const QShaderDescription::StorageBlock &rhs) Q_DECL_NOTHROW
+{
+ return !(lhs == rhs);
+}
+
QT_END_NAMESPACE
#endif
diff --git a/src/gui/rhi/rhi.pri b/src/gui/rhi/rhi.pri
index 4297a5602b..ccd9592634 100644
--- a/src/gui/rhi/rhi.pri
+++ b/src/gui/rhi/rhi.pri
@@ -43,15 +43,15 @@ win32 {
LIBS += -ld3d11 -ldxgi -ldxguid
}
-# darwin {
-macos {
+macos|ios {
HEADERS += \
rhi/qrhimetal_p.h \
rhi/qrhimetal_p_p.h
SOURCES += \
rhi/qrhimetal.mm
- LIBS += -framework AppKit -framework Metal
+ macos: LIBS += -framework AppKit
+ LIBS += -framework Metal
}
include($$PWD/../../3rdparty/VulkanMemoryAllocator.pri)
diff --git a/src/gui/text/qabstracttextdocumentlayout.cpp b/src/gui/text/qabstracttextdocumentlayout.cpp
index 8b8f3e28ac..8528f59844 100644
--- a/src/gui/text/qabstracttextdocumentlayout.cpp
+++ b/src/gui/text/qabstracttextdocumentlayout.cpp
@@ -471,7 +471,7 @@ QTextObjectInterface *QAbstractTextDocumentLayout::handlerForObject(int objectTy
QTextObjectHandler handler = d->handlers.value(objectType);
if (!handler.component)
- return 0;
+ return nullptr;
return handler.iface;
}
diff --git a/src/gui/text/qcssparser.cpp b/src/gui/text/qcssparser.cpp
index 627b3ec8c0..c0b0071e4d 100644
--- a/src/gui/text/qcssparser.cpp
+++ b/src/gui/text/qcssparser.cpp
@@ -123,6 +123,7 @@ static const QCssKnownValue properties[NumProperties - 1] = {
{ "font-variant", FontVariant },
{ "font-weight", FontWeight },
{ "height", Height },
+ { "icon", QtIcon },
{ "image", QtImage },
{ "image-position", QtImageAlignment },
{ "left", Left },
@@ -682,7 +683,7 @@ bool ValueExtractor::extractOutline(int *borders, QBrush *colors, BorderStyle *s
static Qt::Alignment parseAlignment(const QCss::Value *values, int count)
{
- Qt::Alignment a[2] = { 0, 0 };
+ Qt::Alignment a[2] = { { }, { } };
for (int i = 0; i < qMin(2, count); i++) {
if (values[i].type != Value::KnownIdentifier)
break;
@@ -1380,6 +1381,37 @@ bool ValueExtractor::extractImage(QIcon *icon, Qt::Alignment *a, QSize *size)
return hit;
}
+bool ValueExtractor::extractIcon(QIcon *icon, QSize *size)
+{
+ // Find last declaration that specifies an icon
+ const auto declaration = std::find_if(
+ declarations.rbegin(), declarations.rend(),
+ [](const Declaration &decl) { return decl.d->propertyId == QtIcon; });
+ if (declaration == declarations.rend())
+ return false;
+
+ *icon = declaration->iconValue();
+
+ // If the value contains a URI, try to get the size of the icon
+ if (declaration->d->values.isEmpty())
+ return true;
+
+ const auto &propertyValue = declaration->d->values.constFirst();
+ if (propertyValue.type != Value::Uri)
+ return true;
+
+ // First try to read just the size from the image without loading it
+ const QString url(propertyValue.variant.toString());
+ QImageReader imageReader(url);
+ *size = imageReader.size();
+ if (!size->isNull())
+ return true;
+
+ // Get the size by loading the image instead
+ *size = imageReader.read().size();
+ return true;
+}
+
///////////////////////////////////////////////////////////////////////////////
// Declaration
QColor Declaration::colorValue(const QPalette &pal) const
diff --git a/src/gui/text/qcssparser_p.h b/src/gui/text/qcssparser_p.h
index d91b095a76..ef5ae8c80b 100644
--- a/src/gui/text/qcssparser_p.h
+++ b/src/gui/text/qcssparser_p.h
@@ -198,6 +198,7 @@ enum Property {
QtLineHeightType,
FontKerning,
QtForegroundTextureCacheKey,
+ QtIcon,
NumProperties
};
@@ -855,6 +856,7 @@ struct Q_GUI_EXPORT ValueExtractor
bool extractPalette(QBrush *fg, QBrush *sfg, QBrush *sbg, QBrush *abg);
int extractStyleFeatures();
bool extractImage(QIcon *icon, Qt::Alignment *a, QSize *size);
+ bool extractIcon(QIcon *icon, QSize *size);
void lengthValues(const Declaration &decl, int *m);
diff --git a/src/gui/text/qdistancefield.cpp b/src/gui/text/qdistancefield.cpp
index d8a971c7b7..c843e3b706 100644
--- a/src/gui/text/qdistancefield.cpp
+++ b/src/gui/text/qdistancefield.cpp
@@ -850,7 +850,7 @@ QDistanceFieldData::QDistanceFieldData(const QDistanceFieldData &other)
if (nbytes && other.data)
data = (uchar *)memcpy(malloc(nbytes), other.data, nbytes);
else
- data = 0;
+ data = nullptr;
}
QDistanceFieldData::~QDistanceFieldData()
@@ -952,7 +952,7 @@ void QDistanceField::setGlyph(QFontEngine *fontEngine, glyph_t glyph, bool doubl
{
QFixedPoint position;
QPainterPath path;
- fontEngine->addGlyphsToPath(&glyph, &position, 1, &path, 0);
+ fontEngine->addGlyphsToPath(&glyph, &position, 1, &path, { });
path.translate(-path.boundingRect().topLeft());
path.setFillRule(Qt::WindingFill);
@@ -1046,7 +1046,7 @@ const uchar *QDistanceField::constBits() const
uchar *QDistanceField::scanLine(int i)
{
if (isNull())
- return 0;
+ return nullptr;
Q_ASSERT(i >= 0 && i < d->height);
return d->data + i * d->width;
@@ -1055,7 +1055,7 @@ uchar *QDistanceField::scanLine(int i)
const uchar *QDistanceField::scanLine(int i) const
{
if (isNull())
- return 0;
+ return nullptr;
Q_ASSERT(i >= 0 && i < d->height);
return d->data + i * d->width;
@@ -1064,7 +1064,7 @@ const uchar *QDistanceField::scanLine(int i) const
const uchar *QDistanceField::constScanLine(int i) const
{
if (isNull())
- return 0;
+ return nullptr;
Q_ASSERT(i >= 0 && i < d->height);
return d->data + i * d->width;
diff --git a/src/gui/text/qfont.cpp b/src/gui/text/qfont.cpp
index bf130fa0b7..9ede90d8de 100644
--- a/src/gui/text/qfont.cpp
+++ b/src/gui/text/qfont.cpp
@@ -180,14 +180,14 @@ Q_GUI_EXPORT int qt_defaultDpi()
}
QFontPrivate::QFontPrivate()
- : engineData(0), dpi(qt_defaultDpi()),
+ : engineData(nullptr), dpi(qt_defaultDpi()),
underline(false), overline(false), strikeOut(false), kerning(true),
- capital(0), letterSpacingIsAbsolute(false), scFont(0)
+ capital(0), letterSpacingIsAbsolute(false), scFont(nullptr)
{
}
QFontPrivate::QFontPrivate(const QFontPrivate &other)
- : request(other.request), engineData(0), dpi(other.dpi),
+ : request(other.request), engineData(nullptr), dpi(other.dpi),
underline(other.underline), overline(other.overline),
strikeOut(other.strikeOut), kerning(other.kerning),
capital(other.capital), letterSpacingIsAbsolute(other.letterSpacingIsAbsolute),
@@ -202,10 +202,10 @@ QFontPrivate::~QFontPrivate()
{
if (engineData && !engineData->ref.deref())
delete engineData;
- engineData = 0;
+ engineData = nullptr;
if (scFont && scFont != this)
scFont->ref.deref();
- scFont = 0;
+ scFont = nullptr;
}
extern QRecursiveMutex *qt_fontdatabase_mutex();
@@ -221,7 +221,7 @@ QFontEngine *QFontPrivate::engineForScript(int script) const
// throw out engineData that came from a different thread
if (!engineData->ref.deref())
delete engineData;
- engineData = 0;
+ engineData = nullptr;
}
if (!engineData || !QT_FONT_ENGINE_FROM_DATA(engineData, script))
QFontDatabase::load(this, script);
@@ -261,7 +261,7 @@ QFontPrivate *QFontPrivate::smallCapsFontPrivate() const
void QFontPrivate::resolve(uint mask, const QFontPrivate *other)
{
- Q_ASSERT(other != 0);
+ Q_ASSERT(other != nullptr);
dpi = other->dpi;
@@ -346,7 +346,7 @@ QFontEngineData::~QFontEngineData()
if (engines[i]) {
if (!engines[i]->ref.deref())
delete engines[i];
- engines[i] = 0;
+ engines[i] = nullptr;
}
}
}
@@ -610,10 +610,10 @@ void QFont::detach()
if (d->ref.loadRelaxed() == 1) {
if (d->engineData && !d->engineData->ref.deref())
delete d->engineData;
- d->engineData = 0;
+ d->engineData = nullptr;
if (d->scFont && d->scFont != d.data())
d->scFont->ref.deref();
- d->scFont = 0;
+ d->scFont = nullptr;
return;
}
@@ -1666,7 +1666,7 @@ void QFont::setRawMode(bool)
bool QFont::exactMatch() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return d->request.exactMatch(engine->fontDef);
}
@@ -1834,7 +1834,7 @@ Q_GLOBAL_STATIC(QFontSubst, globalFontSubst)
QString QFont::substitute(const QString &familyName)
{
QFontSubst *fontSubst = globalFontSubst();
- Q_ASSERT(fontSubst != 0);
+ Q_ASSERT(fontSubst != nullptr);
QFontSubst::ConstIterator it = fontSubst->constFind(familyName.toLower());
if (it != fontSubst->constEnd() && !(*it).isEmpty())
return (*it).first();
@@ -1855,7 +1855,7 @@ QString QFont::substitute(const QString &familyName)
QStringList QFont::substitutes(const QString &familyName)
{
QFontSubst *fontSubst = globalFontSubst();
- Q_ASSERT(fontSubst != 0);
+ Q_ASSERT(fontSubst != nullptr);
return fontSubst->value(familyName.toLower(), QStringList());
}
@@ -1870,7 +1870,7 @@ void QFont::insertSubstitution(const QString &familyName,
const QString &substituteName)
{
QFontSubst *fontSubst = globalFontSubst();
- Q_ASSERT(fontSubst != 0);
+ Q_ASSERT(fontSubst != nullptr);
QStringList &list = (*fontSubst)[familyName.toLower()];
QString s = substituteName.toLower();
if (!list.contains(s))
@@ -1888,7 +1888,7 @@ void QFont::insertSubstitutions(const QString &familyName,
const QStringList &substituteNames)
{
QFontSubst *fontSubst = globalFontSubst();
- Q_ASSERT(fontSubst != 0);
+ Q_ASSERT(fontSubst != nullptr);
QStringList &list = (*fontSubst)[familyName.toLower()];
for (const QString &substituteName : substituteNames) {
const QString lowerSubstituteName = substituteName.toLower();
@@ -1906,7 +1906,7 @@ void QFont::insertSubstitutions(const QString &familyName,
void QFont::removeSubstitutions(const QString &familyName)
{
QFontSubst *fontSubst = globalFontSubst();
- Q_ASSERT(fontSubst != 0);
+ Q_ASSERT(fontSubst != nullptr);
fontSubst->remove(familyName.toLower());
}
@@ -1926,7 +1926,7 @@ void QFont::removeSubstitutions(const QString &familyName)
QStringList QFont::substitutions()
{
QFontSubst *fontSubst = globalFontSubst();
- Q_ASSERT(fontSubst != 0);
+ Q_ASSERT(fontSubst != nullptr);
QStringList ret = fontSubst->keys();
ret.sort();
@@ -1940,7 +1940,7 @@ QStringList QFont::substitutions()
*/
static quint8 get_font_bits(int version, const QFontPrivate *f)
{
- Q_ASSERT(f != 0);
+ Q_ASSERT(f != nullptr);
quint8 bits = 0;
if (f->request.style)
bits |= 0x01;
@@ -1965,7 +1965,7 @@ static quint8 get_font_bits(int version, const QFontPrivate *f)
static quint8 get_extended_font_bits(const QFontPrivate *f)
{
- Q_ASSERT(f != 0);
+ Q_ASSERT(f != nullptr);
quint8 bits = 0;
if (f->request.ignorePitch)
bits |= 0x01;
@@ -1980,7 +1980,7 @@ static quint8 get_extended_font_bits(const QFontPrivate *f)
*/
static void set_font_bits(int version, quint8 bits, QFontPrivate *f)
{
- Q_ASSERT(f != 0);
+ Q_ASSERT(f != nullptr);
f->request.style = (bits & 0x01) != 0 ? QFont::StyleItalic : QFont::StyleNormal;
f->underline = (bits & 0x02) != 0;
f->overline = (bits & 0x40) != 0;
@@ -1995,7 +1995,7 @@ static void set_font_bits(int version, quint8 bits, QFontPrivate *f)
static void set_extended_font_bits(quint8 bits, QFontPrivate *f)
{
- Q_ASSERT(f != 0);
+ Q_ASSERT(f != nullptr);
f->request.ignorePitch = (bits & 0x01) != 0;
f->letterSpacingIsAbsolute = (bits & 0x02) != 0;
}
@@ -2549,7 +2549,7 @@ QFontInfo &QFontInfo::operator=(const QFontInfo &fi)
QString QFontInfo::family() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return engine->fontDef.family;
}
@@ -2564,7 +2564,7 @@ QString QFontInfo::family() const
QString QFontInfo::styleName() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return engine->fontDef.styleName;
}
@@ -2576,7 +2576,7 @@ QString QFontInfo::styleName() const
int QFontInfo::pointSize() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return qRound(engine->fontDef.pointSize);
}
@@ -2588,7 +2588,7 @@ int QFontInfo::pointSize() const
qreal QFontInfo::pointSizeF() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return engine->fontDef.pointSize;
}
@@ -2600,7 +2600,7 @@ qreal QFontInfo::pointSizeF() const
int QFontInfo::pixelSize() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return engine->fontDef.pixelSize;
}
@@ -2612,7 +2612,7 @@ int QFontInfo::pixelSize() const
bool QFontInfo::italic() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return engine->fontDef.style != QFont::StyleNormal;
}
@@ -2624,7 +2624,7 @@ bool QFontInfo::italic() const
QFont::Style QFontInfo::style() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return (QFont::Style)engine->fontDef.style;
}
@@ -2636,7 +2636,7 @@ QFont::Style QFontInfo::style() const
int QFontInfo::weight() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return engine->fontDef.weight;
}
@@ -2701,13 +2701,13 @@ bool QFontInfo::strikeOut() const
bool QFontInfo::fixedPitch() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
#ifdef Q_OS_MAC
if (!engine->fontDef.fixedPitchComputed) {
QChar ch[2] = { QLatin1Char('i'), QLatin1Char('m') };
QGlyphLayoutArray<2> g;
int l = 2;
- if (!engine->stringToCMap(ch, 2, &g, &l, 0))
+ if (!engine->stringToCMap(ch, 2, &g, &l, {}))
Q_UNREACHABLE();
Q_ASSERT(l == 2);
engine->fontDef.fixedPitch = g.advances[0] == g.advances[1];
@@ -2727,7 +2727,7 @@ bool QFontInfo::fixedPitch() const
QFont::StyleHint QFontInfo::styleHint() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return (QFont::StyleHint) engine->fontDef.styleHint;
}
@@ -2759,7 +2759,7 @@ bool QFontInfo::rawMode() const
bool QFontInfo::exactMatch() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return d->request.exactMatch(engine->fontDef);
}
@@ -2793,7 +2793,7 @@ QFontCache *QFontCache::instance()
void QFontCache::cleanup()
{
- QThreadStorage<QFontCache *> *cache = 0;
+ QThreadStorage<QFontCache *> *cache = nullptr;
QT_TRY {
cache = theFontCache();
} QT_CATCH (const std::bad_alloc &) {
@@ -2830,7 +2830,7 @@ void QFontCache::clear()
Q_ASSERT(engineCacheCount.value(data->engines[i]) == 0);
delete data->engines[i];
}
- data->engines[i] = 0;
+ data->engines[i] = nullptr;
}
}
if (!data->ref.deref()) {
@@ -2863,7 +2863,7 @@ void QFontCache::clear()
FC_DEBUG("QFontCache::clear: engine %p still has refcount %d",
engine, engine->ref.loadRelaxed());
}
- it.value().data = 0;
+ it.value().data = nullptr;
}
}
} while (mightHaveEnginesLeftForCleanup);
@@ -2881,7 +2881,7 @@ QFontEngineData *QFontCache::findEngineData(const QFontDef &def) const
{
EngineDataCache::ConstIterator it = engineDataCache.constFind(def);
if (it == engineDataCache.constEnd())
- return 0;
+ return nullptr;
// found
return it.value();
@@ -2912,7 +2912,7 @@ QFontEngine *QFontCache::findEngine(const Key &key)
{
EngineCache::Iterator it = engineCache.find(key),
end = engineCache.end();
- if (it == end) return 0;
+ if (it == end) return nullptr;
Q_ASSERT(it.value().data != nullptr);
Q_ASSERT(key.multi == (it.value().data->type() == QFontEngine::Multi));
diff --git a/src/gui/text/qfontdatabase.cpp b/src/gui/text/qfontdatabase.cpp
index 67702ab5b5..f2fd585835 100644
--- a/src/gui/text/qfontdatabase.cpp
+++ b/src/gui/text/qfontdatabase.cpp
@@ -210,7 +210,7 @@ struct QtFontStyle
QtFontStyle(const Key &k)
: key(k), bitmapScalable(false), smoothScalable(false),
- count(0), pixelSizes(0)
+ count(0), pixelSizes(nullptr)
{
}
@@ -265,7 +265,7 @@ QtFontSize *QtFontStyle::pixelSize(unsigned short size, bool add)
return pixelSizes + i;
}
if (!add)
- return 0;
+ return nullptr;
if (!pixelSizes) {
// Most style have only one font size, we avoid waisting memory
@@ -280,13 +280,13 @@ QtFontSize *QtFontStyle::pixelSize(unsigned short size, bool add)
pixelSizes = newPixelSizes;
}
pixelSizes[count].pixelSize = size;
- pixelSizes[count].handle = 0;
+ pixelSizes[count].handle = nullptr;
return pixelSizes + (count++);
}
struct QtFontFoundry
{
- QtFontFoundry(const QString &n) : name(n), count(0), styles(0) {}
+ QtFontFoundry(const QString &n) : name(n), count(0), styles(nullptr) {}
~QtFontFoundry() {
while (count--)
delete styles[count];
@@ -314,7 +314,7 @@ QtFontStyle *QtFontFoundry::style(const QtFontStyle::Key &key, const QString &st
}
}
if (!create)
- return 0;
+ return nullptr;
// qDebug("adding key (weight=%d, style=%d, oblique=%d stretch=%d) at %d", key.weight, key.style, key.oblique, key.stretch, pos);
if (!(count % 8)) {
@@ -345,7 +345,7 @@ struct QtFontFamily
:
populated(false),
fixedPitch(false),
- name(n), count(0), foundries(0)
+ name(n), count(0), foundries(nullptr)
{
memset(writingSystems, 0, sizeof(writingSystems));
}
@@ -381,7 +381,7 @@ QtFontFoundry *QtFontFamily::foundry(const QString &f, bool create)
return foundries[i];
}
if (!create)
- return 0;
+ return nullptr;
if (!(count % 8)) {
QtFontFoundry **newFoundries = (QtFontFoundry **)
@@ -450,7 +450,7 @@ class QFontDatabasePrivate
{
public:
QFontDatabasePrivate()
- : count(0), families(0),
+ : count(0), families(nullptr),
fallbacksCache(64)
{ }
@@ -469,7 +469,7 @@ public:
while (count--)
delete families[count];
::free(families);
- families = 0;
+ families = nullptr;
count = 0;
// don't clear the memory fonts!
}
@@ -505,7 +505,7 @@ void QFontDatabasePrivate::invalidate()
QtFontFamily *QFontDatabasePrivate::family(const QString &f, FamilyRequestFlags flags)
{
- QtFontFamily *fam = 0;
+ QtFontFamily *fam = nullptr;
int low = 0;
int high = count;
@@ -645,7 +645,7 @@ static void parseFontName(const QString &name, QString &foundry, QString &family
struct QtFontDesc
{
- inline QtFontDesc() : family(0), foundry(0), style(0), size(0) {}
+ inline QtFontDesc() : family(nullptr), foundry(nullptr), style(nullptr), size(nullptr) {}
QtFontFamily *family;
QtFontFoundry *foundry;
QtFontStyle *style;
@@ -949,7 +949,7 @@ QFontEngine *loadSingleEngine(int script,
if (Q_UNLIKELY(!engine->supportsScript(QChar::Script(script)))) {
qWarning(" OpenType support missing for \"%s\", script %d",
qPrintable(def.family), script);
- return 0;
+ return nullptr;
}
engine->isSmoothlyScalable = style->smoothScalable;
@@ -976,7 +976,7 @@ QFontEngine *loadSingleEngine(int script,
+ qPrintable(def.family), script);
if (engine->ref.loadRelaxed() == 0)
delete engine;
- return 0;
+ return nullptr;
}
engine->isSmoothlyScalable = style->smoothScalable;
@@ -1081,9 +1081,9 @@ unsigned int bestFoundry(int script, unsigned int score, int styleStrategy,
Q_UNUSED(script);
Q_UNUSED(pitch);
- desc->foundry = 0;
- desc->style = 0;
- desc->size = 0;
+ desc->foundry = nullptr;
+ desc->style = nullptr;
+ desc->size = nullptr;
qCDebug(lcFontMatch, " REMARK: looking for best foundry for family '%s' [%d]", family->name.toLatin1().constData(), family->count);
@@ -1104,7 +1104,7 @@ unsigned int bestFoundry(int script, unsigned int score, int styleStrategy,
}
int px = -1;
- QtFontSize *size = 0;
+ QtFontSize *size = nullptr;
// 1. see if we have an exact matching size
if (!(styleStrategy & QFont::ForceOutline)) {
@@ -1244,10 +1244,10 @@ static int match(int script, const QFontDef &request,
foundry_name.isEmpty() ? "-- any --" : foundry_name.toLatin1().constData(),
script, request.weight, request.style, request.stretch, request.pixelSize, pitch);
- desc->family = 0;
- desc->foundry = 0;
- desc->style = 0;
- desc->size = 0;
+ desc->family = nullptr;
+ desc->foundry = nullptr;
+ desc->style = nullptr;
+ desc->size = nullptr;
unsigned int score = ~0u;
@@ -1280,7 +1280,7 @@ static int match(int script, const QFontDef &request,
bestFoundry(script, score, request.styleStrategy,
test.family, foundry_name, styleKey, request.pixelSize, pitch,
&test, request.styleName);
- if (test.foundry == 0 && !foundry_name.isEmpty()) {
+ if (test.foundry == nullptr && !foundry_name.isEmpty()) {
// the specific foundry was not found, so look for
// any foundry matching our requirements
newscore = bestFoundry(script, score, request.styleStrategy, test.family,
@@ -2068,7 +2068,7 @@ bool QFontDatabase::isPrivateFamily(const QString &family) const
*/
QString QFontDatabase::writingSystemName(WritingSystem writingSystem)
{
- const char *name = 0;
+ const char *name = nullptr;
switch (writingSystem) {
case Any:
name = QT_TRANSLATE_NOOP("QFontDatabase", "Any");
@@ -2548,7 +2548,7 @@ QStringList QFontDatabase::applicationFontFamilies(int id)
QFont QFontDatabase::systemFont(QFontDatabase::SystemFont type)
{
- const QFont *font = 0;
+ const QFont *font = nullptr;
if (const QPlatformTheme *theme = QGuiApplicationPrivate::platformTheme()) {
switch (type) {
case GeneralFont:
@@ -2825,7 +2825,7 @@ void QFontDatabase::load(const QFontPrivate *d, int script)
if (fe->type() == QFontEngine::Box && !req.families.at(0).isEmpty()) {
if (fe->ref.loadRelaxed() == 0)
delete fe;
- fe = 0;
+ fe = nullptr;
} else {
if (d->dpi > 0)
fe->fontDef.pointSize = qreal(double((fe->fontDef.pixelSize * 72) / d->dpi));
diff --git a/src/gui/text/qfontengine.cpp b/src/gui/text/qfontengine.cpp
index 403a0510fa..3ca9e9bbde 100644
--- a/src/gui/text/qfontengine.cpp
+++ b/src/gui/text/qfontengine.cpp
@@ -141,7 +141,7 @@ static void hb_getAdvances(HB_Font font, const HB_Glyph *glyphs, hb_uint32 numGl
qglyphs.glyphs = const_cast<glyph_t *>(glyphs);
qglyphs.advances = reinterpret_cast<QFixed *>(advances);
- fe->recalcAdvances(&qglyphs, (flags & HB_ShaperFlag_UseDesignMetrics) ? QFontEngine::DesignMetrics : QFontEngine::ShaperFlags(0));
+ fe->recalcAdvances(&qglyphs, (flags & HB_ShaperFlag_UseDesignMetrics) ? QFontEngine::DesignMetrics : QFontEngine::ShaperFlags{});
}
static HB_Bool hb_canRender(HB_Font font, const HB_UChar16 *string, hb_uint32 length)
@@ -221,7 +221,7 @@ static bool qt_get_font_table_default(void *user_data, uint tag, uchar *buffer,
#ifdef QT_BUILD_INTERNAL
// for testing purpose only, not thread-safe!
-static QList<QFontEngine *> *enginesCollector = 0;
+static QList<QFontEngine *> *enginesCollector = nullptr;
Q_AUTOTEST_EXPORT void QFontEngine_startCollectingEngines()
{
@@ -234,7 +234,7 @@ Q_AUTOTEST_EXPORT QList<QFontEngine *> QFontEngine_stopCollectingEngines()
Q_ASSERT(enginesCollector);
QList<QFontEngine *> ret = *enginesCollector;
delete enginesCollector;
- enginesCollector = 0;
+ enginesCollector = nullptr;
return ret;
}
#endif // QT_BUILD_INTERNAL
@@ -506,7 +506,7 @@ void QFontEngine::getGlyphPositions(const QGlyphLayout &glyphs, const QTransform
g.numGlyphs = 1;
g.glyphs = &kashidaGlyph;
g.advances = &kashidaWidth;
- recalcAdvances(&g, 0);
+ recalcAdvances(&g, { });
for (uint k = 0; k < glyphs.justifications[i].nKashidas; ++k) {
xpos -= kashidaWidth;
@@ -569,9 +569,9 @@ void QFontEngine::getGlyphPositions(const QGlyphLayout &glyphs, const QTransform
void QFontEngine::getGlyphBearings(glyph_t glyph, qreal *leftBearing, qreal *rightBearing)
{
glyph_metrics_t gi = boundingBox(glyph);
- if (leftBearing != 0)
+ if (leftBearing != nullptr)
*leftBearing = gi.leftBearing().toReal();
- if (rightBearing != 0)
+ if (rightBearing != nullptr)
*rightBearing = gi.rightBearing().toReal();
}
@@ -948,7 +948,7 @@ QImage QFontEngine::alphaMapForGlyph(glyph_t glyph)
im.fill(Qt::transparent);
QPainter p(&im);
p.setRenderHint(QPainter::Antialiasing);
- addGlyphsToPath(&glyph, &pt, 1, &path, 0);
+ addGlyphsToPath(&glyph, &pt, 1, &path, { });
p.setPen(Qt::NoPen);
p.setBrush(Qt::black);
p.drawPath(path);
@@ -1022,7 +1022,7 @@ QByteArray QFontEngine::getSfntTable(uint tag) const
{
QByteArray table;
uint len = 0;
- if (!getSfntTableData(tag, 0, &len))
+ if (!getSfntTableData(tag, nullptr, &len))
return table;
table.resize(len);
if (!getSfntTableData(tag, reinterpret_cast<uchar *>(table.data()), &len))
@@ -1231,11 +1231,11 @@ const uchar *QFontEngine::getCMap(const uchar *table, uint tableSize, bool *isSy
// version check
quint16 version;
if (!qSafeFromBigEndian(header, endPtr, &version) || version != 0)
- return 0;
+ return nullptr;
quint16 numTables;
if (!qSafeFromBigEndian(header + 2, endPtr, &numTables))
- return 0;
+ return nullptr;
const uchar *maps = table + 4;
@@ -1255,11 +1255,11 @@ const uchar *QFontEngine::getCMap(const uchar *table, uint tableSize, bool *isSy
for (int n = 0; n < numTables; ++n) {
quint16 platformId;
if (!qSafeFromBigEndian(maps + 8 * n, endPtr, &platformId))
- return 0;
+ return nullptr;
quint16 platformSpecificId = 0;
if (!qSafeFromBigEndian(maps + 8 * n + 2, endPtr, &platformSpecificId))
- return 0;
+ return nullptr;
switch (platformId) {
case 0: // Unicode
@@ -1309,38 +1309,38 @@ const uchar *QFontEngine::getCMap(const uchar *table, uint tableSize, bool *isSy
}
}
if(tableToUse < 0)
- return 0;
+ return nullptr;
resolveTable:
*isSymbolFont = (symbolTable > -1);
quint32 unicode_table = 0;
if (!qSafeFromBigEndian(maps + 8 * tableToUse + 4, endPtr, &unicode_table))
- return 0;
+ return nullptr;
if (!unicode_table)
- return 0;
+ return nullptr;
// get the header of the unicode table
header = table + unicode_table;
quint16 format;
if (!qSafeFromBigEndian(header, endPtr, &format))
- return 0;
+ return nullptr;
quint32 length;
if (format < 8) {
quint16 tmp;
if (!qSafeFromBigEndian(header + 2, endPtr, &tmp))
- return 0;
+ return nullptr;
length = tmp;
} else {
if (!qSafeFromBigEndian(header + 4, endPtr, &length))
- return 0;
+ return nullptr;
}
if (table + unicode_table + length > endPtr)
- return 0;
+ return nullptr;
*cmapSize = length;
// To support symbol fonts that contain a unicode table for the symbol area
@@ -1844,7 +1844,7 @@ QFontEngine *QFontEngineMulti::loadEngine(int at)
return engine;
}
- return 0;
+ return nullptr;
}
glyph_t QFontEngineMulti::glyphIndex(uint ucs4) const
@@ -1865,7 +1865,7 @@ glyph_t QFontEngineMulti::glyphIndex(uint ucs4) const
const_cast<QFontEngineMulti *>(this)->ensureEngineAt(x);
engine = m_engines.at(x);
}
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
if (engine->type() == Box)
continue;
@@ -1934,7 +1934,7 @@ bool QFontEngineMulti::stringToCMap(const QChar *str, int len,
if (!engine)
continue;
}
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
if (engine->type() == Box)
continue;
@@ -2308,7 +2308,7 @@ QImage QFontEngineMulti::alphaRGBMapForGlyph(glyph_t glyph, QFixed subPixelPosit
*/
QFontEngine *QFontEngineMulti::createMultiFontEngine(QFontEngine *fe, int script)
{
- QFontEngine *engine = 0;
+ QFontEngine *engine = nullptr;
QFontCache::Key key(fe->fontDef, script, /*multi = */true);
QFontCache *fc = QFontCache::instance();
// We can't rely on the fontDef (and hence the cache Key)
diff --git a/src/gui/text/qfontengine_qpf2.cpp b/src/gui/text/qfontengine_qpf2.cpp
index 409176d41b..d22239c040 100644
--- a/src/gui/text/qfontengine_qpf2.cpp
+++ b/src/gui/text/qfontengine_qpf2.cpp
@@ -151,17 +151,17 @@ static inline const uchar *verifyTag(const uchar *tagPtr, const uchar *endPtr)
const QFontEngineQPF2::Glyph *QFontEngineQPF2::findGlyph(glyph_t g) const
{
if (!g || g >= glyphMapEntries)
- return 0;
+ return nullptr;
const quint32 *gmapPtr = reinterpret_cast<const quint32 *>(fontData + glyphMapOffset);
quint32 glyphPos = qFromBigEndian<quint32>(gmapPtr[g]);
if (glyphPos > glyphDataSize) {
if (glyphPos == 0xffffffff)
- return 0;
+ return nullptr;
#if defined(DEBUG_FONTENGINE)
qDebug() << "glyph" << g << "outside of glyphData, remapping font file";
#endif
if (glyphPos > glyphDataSize)
- return 0;
+ return nullptr;
}
return reinterpret_cast<const Glyph *>(fontData + glyphDataOffset + glyphPos);
}
@@ -230,7 +230,7 @@ QFontEngineQPF2::QFontEngineQPF2(const QFontDef &def, const QByteArray &data)
{
fontDef = def;
cache_cost = 100;
- cmap = 0;
+ cmap = nullptr;
cmapOffset = 0;
cmapSize = 0;
glyphMapOffset = 0;
diff --git a/src/gui/text/qfontmetrics.cpp b/src/gui/text/qfontmetrics.cpp
index d3e4f11e8c..a79957797d 100644
--- a/src/gui/text/qfontmetrics.cpp
+++ b/src/gui/text/qfontmetrics.cpp
@@ -282,7 +282,7 @@ bool QFontMetrics::operator ==(const QFontMetrics &other) const
int QFontMetrics::ascent() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return qRound(engine->ascent());
}
@@ -301,7 +301,7 @@ int QFontMetrics::ascent() const
int QFontMetrics::capHeight() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return qRound(engine->capHeight());
}
@@ -318,7 +318,7 @@ int QFontMetrics::capHeight() const
int QFontMetrics::descent() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return qRound(engine->descent());
}
@@ -332,7 +332,7 @@ int QFontMetrics::descent() const
int QFontMetrics::height() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return qRound(engine->ascent()) + qRound(engine->descent());
}
@@ -346,7 +346,7 @@ int QFontMetrics::height() const
int QFontMetrics::leading() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return qRound(engine->leading());
}
@@ -360,7 +360,7 @@ int QFontMetrics::leading() const
int QFontMetrics::lineSpacing() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return qRound(engine->leading()) + qRound(engine->ascent()) + qRound(engine->descent());
}
@@ -377,7 +377,7 @@ int QFontMetrics::lineSpacing() const
int QFontMetrics::minLeftBearing() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return qRound(engine->minLeftBearing());
}
@@ -394,7 +394,7 @@ int QFontMetrics::minLeftBearing() const
int QFontMetrics::minRightBearing() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return qRound(engine->minRightBearing());
}
@@ -404,7 +404,7 @@ int QFontMetrics::minRightBearing() const
int QFontMetrics::maxWidth() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return qRound(engine->maxCharWidth());
}
@@ -415,7 +415,7 @@ int QFontMetrics::maxWidth() const
int QFontMetrics::xHeight() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
if (d->capital == QFont::SmallCaps)
return qRound(d->smallCapsFontPrivate()->engineForScript(QChar::Script_Common)->ascent());
return qRound(engine->xHeight());
@@ -429,7 +429,7 @@ int QFontMetrics::xHeight() const
int QFontMetrics::averageCharWidth() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return qRound(engine->averageCharWidth());
}
@@ -450,7 +450,7 @@ bool QFontMetrics::inFontUcs4(uint ucs4) const
{
const int script = QChar::script(ucs4);
QFontEngine *engine = d->engineForScript(script);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
if (engine->type() == QFontEngine::Box)
return false;
return engine->canRender(ucs4);
@@ -476,7 +476,7 @@ int QFontMetrics::leftBearing(QChar ch) const
engine = d->smallCapsFontPrivate()->engineForScript(script);
else
engine = d->engineForScript(script);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
if (engine->type() == QFontEngine::Box)
return 0;
@@ -509,7 +509,7 @@ int QFontMetrics::rightBearing(QChar ch) const
engine = d->smallCapsFontPrivate()->engineForScript(script);
else
engine = d->engineForScript(script);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
if (engine->type() == QFontEngine::Box)
return 0;
@@ -518,7 +518,7 @@ int QFontMetrics::rightBearing(QChar ch) const
glyph_t glyph = engine->glyphIndex(ch.unicode());
qreal rb;
- engine->getGlyphBearings(glyph, 0, &rb);
+ engine->getGlyphBearings(glyph, nullptr, &rb);
return qRound(rb);
}
@@ -562,7 +562,7 @@ int QFontMetrics::width(const QString &text, int len, int flags) const
int numGlyphs = len;
QVarLengthGlyphLayoutArray glyphs(numGlyphs);
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- if (!engine->stringToCMap(text.data(), len, &glyphs, &numGlyphs, 0))
+ if (!engine->stringToCMap(text.data(), len, &glyphs, &numGlyphs, { }))
Q_UNREACHABLE();
QFixed width;
@@ -673,7 +673,7 @@ int QFontMetrics::horizontalAdvance(QChar ch) const
engine = d->smallCapsFontPrivate()->engineForScript(script);
else
engine = d->engineForScript(script);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
d->alterCharForCapitalization(ch);
@@ -684,7 +684,7 @@ int QFontMetrics::horizontalAdvance(QChar ch) const
glyphs.numGlyphs = 1;
glyphs.glyphs = &glyph;
glyphs.advances = &advance;
- engine->recalcAdvances(&glyphs, 0);
+ engine->recalcAdvances(&glyphs, { });
return qRound(advance);
}
@@ -725,7 +725,7 @@ int QFontMetrics::charWidth(const QString &text, int pos) const
engine = d->smallCapsFontPrivate()->engineForScript(script);
else
engine = d->engineForScript(script);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
d->alterCharForCapitalization(ch);
@@ -736,7 +736,7 @@ int QFontMetrics::charWidth(const QString &text, int pos) const
glyphs.numGlyphs = 1;
glyphs.glyphs = &glyph;
glyphs.advances = &advance;
- engine->recalcAdvances(&glyphs, 0);
+ engine->recalcAdvances(&glyphs, { });
width = qRound(advance);
}
@@ -800,7 +800,7 @@ QRect QFontMetrics::boundingRect(QChar ch) const
engine = d->smallCapsFontPrivate()->engineForScript(script);
else
engine = d->engineForScript(script);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
d->alterCharForCapitalization(ch);
@@ -877,7 +877,7 @@ QRect QFontMetrics::boundingRect(const QRect &rect, int flags, const QString &te
QRectF rb;
QRectF rr(rect);
qt_format_text(QFont(d.data()), rr, flags | Qt::TextDontPrint, text, &rb, tabStops, tabArray,
- tabArrayLen, 0);
+ tabArrayLen, nullptr);
return rb.toAlignedRect();
}
@@ -994,7 +994,7 @@ QString QFontMetrics::elidedText(const QString &text, Qt::TextElideMode mode, in
int QFontMetrics::underlinePos() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return qRound(engine->underlinePosition());
}
@@ -1030,7 +1030,7 @@ int QFontMetrics::strikeOutPos() const
int QFontMetrics::lineWidth() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return qRound(engine->lineThickness());
}
@@ -1248,7 +1248,7 @@ bool QFontMetricsF::operator ==(const QFontMetricsF &other) const
qreal QFontMetricsF::ascent() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return engine->ascent().toReal();
}
@@ -1267,7 +1267,7 @@ qreal QFontMetricsF::ascent() const
qreal QFontMetricsF::capHeight() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return engine->capHeight().toReal();
}
@@ -1285,7 +1285,7 @@ qreal QFontMetricsF::capHeight() const
qreal QFontMetricsF::descent() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return engine->descent().toReal();
}
@@ -1299,7 +1299,7 @@ qreal QFontMetricsF::descent() const
qreal QFontMetricsF::height() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return (engine->ascent() + engine->descent()).toReal();
}
@@ -1314,7 +1314,7 @@ qreal QFontMetricsF::height() const
qreal QFontMetricsF::leading() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return engine->leading().toReal();
}
@@ -1328,7 +1328,7 @@ qreal QFontMetricsF::leading() const
qreal QFontMetricsF::lineSpacing() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return (engine->leading() + engine->ascent() + engine->descent()).toReal();
}
@@ -1345,7 +1345,7 @@ qreal QFontMetricsF::lineSpacing() const
qreal QFontMetricsF::minLeftBearing() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return engine->minLeftBearing();
}
@@ -1362,7 +1362,7 @@ qreal QFontMetricsF::minLeftBearing() const
qreal QFontMetricsF::minRightBearing() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return engine->minRightBearing();
}
@@ -1372,7 +1372,7 @@ qreal QFontMetricsF::minRightBearing() const
qreal QFontMetricsF::maxWidth() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return engine->maxCharWidth();
}
@@ -1383,7 +1383,7 @@ qreal QFontMetricsF::maxWidth() const
qreal QFontMetricsF::xHeight() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
if (d->capital == QFont::SmallCaps)
return d->smallCapsFontPrivate()->engineForScript(QChar::Script_Common)->ascent().toReal();
return engine->xHeight().toReal();
@@ -1397,7 +1397,7 @@ qreal QFontMetricsF::xHeight() const
qreal QFontMetricsF::averageCharWidth() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return engine->averageCharWidth().toReal();
}
@@ -1420,7 +1420,7 @@ bool QFontMetricsF::inFontUcs4(uint ucs4) const
{
const int script = QChar::script(ucs4);
QFontEngine *engine = d->engineForScript(script);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
if (engine->type() == QFontEngine::Box)
return false;
return engine->canRender(ucs4);
@@ -1446,7 +1446,7 @@ qreal QFontMetricsF::leftBearing(QChar ch) const
engine = d->smallCapsFontPrivate()->engineForScript(script);
else
engine = d->engineForScript(script);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
if (engine->type() == QFontEngine::Box)
return 0;
@@ -1479,7 +1479,7 @@ qreal QFontMetricsF::rightBearing(QChar ch) const
engine = d->smallCapsFontPrivate()->engineForScript(script);
else
engine = d->engineForScript(script);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
if (engine->type() == QFontEngine::Box)
return 0;
@@ -1488,7 +1488,7 @@ qreal QFontMetricsF::rightBearing(QChar ch) const
glyph_t glyph = engine->glyphIndex(ch.unicode());
qreal rb;
- engine->getGlyphBearings(glyph, 0, &rb);
+ engine->getGlyphBearings(glyph, nullptr, &rb);
return rb;
}
@@ -1608,7 +1608,7 @@ qreal QFontMetricsF::horizontalAdvance(QChar ch) const
engine = d->smallCapsFontPrivate()->engineForScript(script);
else
engine = d->engineForScript(script);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
d->alterCharForCapitalization(ch);
@@ -1619,7 +1619,7 @@ qreal QFontMetricsF::horizontalAdvance(QChar ch) const
glyphs.numGlyphs = 1;
glyphs.glyphs = &glyph;
glyphs.advances = &advance;
- engine->recalcAdvances(&glyphs, 0);
+ engine->recalcAdvances(&glyphs, { });
return advance.toReal();
}
@@ -1679,7 +1679,7 @@ QRectF QFontMetricsF::boundingRect(QChar ch) const
engine = d->smallCapsFontPrivate()->engineForScript(script);
else
engine = d->engineForScript(script);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
d->alterCharForCapitalization(ch);
@@ -1758,7 +1758,7 @@ QRectF QFontMetricsF::boundingRect(const QRectF &rect, int flags, const QString&
QRectF rb;
qt_format_text(QFont(d.data()), rect, flags | Qt::TextDontPrint, text, &rb, tabStops, tabArray,
- tabArrayLen, 0);
+ tabArrayLen, nullptr);
return rb;
}
@@ -1877,7 +1877,7 @@ QString QFontMetricsF::elidedText(const QString &text, Qt::TextElideMode mode, q
qreal QFontMetricsF::underlinePos() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return engine->underlinePosition().toReal();
}
@@ -1912,7 +1912,7 @@ qreal QFontMetricsF::strikeOutPos() const
qreal QFontMetricsF::lineWidth() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return engine->lineThickness().toReal();
}
diff --git a/src/gui/text/qglyphrun.cpp b/src/gui/text/qglyphrun.cpp
index 3c16c3bf62..f4cd839f15 100644
--- a/src/gui/text/qglyphrun.cpp
+++ b/src/gui/text/qglyphrun.cpp
@@ -279,7 +279,7 @@ void QGlyphRun::clear()
{
detach();
d->rawFont = QRawFont();
- d->flags = 0;
+ d->flags = { };
setPositions(QVector<QPointF>());
setGlyphIndexes(QVector<quint32>());
diff --git a/src/gui/text/qglyphrun_p.h b/src/gui/text/qglyphrun_p.h
index 465c3c7000..46e2a8bbfb 100644
--- a/src/gui/text/qglyphrun_p.h
+++ b/src/gui/text/qglyphrun_p.h
@@ -65,8 +65,7 @@ class QGlyphRunPrivate: public QSharedData
{
public:
QGlyphRunPrivate()
- : flags(nullptr)
- , glyphIndexData(glyphIndexes.constData())
+ : glyphIndexData(glyphIndexes.constData())
, glyphIndexDataSize(0)
, glyphPositionData(glyphPositions.constData())
, glyphPositionDataSize(0)
diff --git a/src/gui/text/qharfbuzzng.cpp b/src/gui/text/qharfbuzzng.cpp
index 2f25aea92b..397e6cc49f 100644
--- a/src/gui/text/qharfbuzzng.cpp
+++ b/src/gui/text/qharfbuzzng.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2019 The Qt Company Ltd.
** Copyright (C) 2013 Konstantin Ritt
** Contact: https://www.qt.io/licensing/
**
@@ -216,7 +216,20 @@ static const hb_script_t _qtscript_to_hbscript[] = {
HB_SCRIPT_MASARAM_GONDI,
HB_SCRIPT_NUSHU,
HB_SCRIPT_SOYOMBO,
- HB_SCRIPT_ZANABAZAR_SQUARE
+ HB_SCRIPT_ZANABAZAR_SQUARE,
+
+ // Unicode 12.1 additions (not present in harfbuzz-ng 1.7.4)
+ hb_script_t(HB_TAG('D', 'o', 'g', 'r')), // Script_Dogra
+ hb_script_t(HB_TAG('G', 'o', 'n', 'g')), // Script_GunjalaGondi
+ hb_script_t(HB_TAG('R', 'o', 'h', 'g')), // Script_HanifiRohingya
+ hb_script_t(HB_TAG('M', 'a', 'k', 'a')), // Script_Makasar
+ hb_script_t(HB_TAG('M', 'e', 'd', 'f')), // Script_Medefaidrin
+ hb_script_t(HB_TAG('S', 'o', 'g', 'o')), // Script_OldSogdian
+ hb_script_t(HB_TAG('S', 'o', 'g', 'd')), // Script_Sogdian
+ hb_script_t(HB_TAG('E', 'l', 'y', 'm')), // Script_Elymaic
+ hb_script_t(HB_TAG('N', 'a', 'n', 'd')), // Script_Nandinagari
+ hb_script_t(HB_TAG('H', 'm', 'n', 'p')), // Script_NyiakengPuachueHmong
+ hb_script_t(HB_TAG('W', 'c', 'h', 'o')), // Script_Wancho
};
Q_STATIC_ASSERT(QChar::ScriptCount == sizeof(_qtscript_to_hbscript) / sizeof(_qtscript_to_hbscript[0]));
@@ -682,12 +695,12 @@ _hb_qt_font_create(QFontEngine *fe)
return NULL;
}
- const int y_ppem = fe->fontDef.pixelSize;
- const int x_ppem = (fe->fontDef.pixelSize * fe->fontDef.stretch) / 100;
+ const qreal y_ppem = fe->fontDef.pixelSize;
+ const qreal x_ppem = (fe->fontDef.pixelSize * fe->fontDef.stretch) / 100.0;
hb_font_set_funcs(font, hb_qt_get_font_funcs(), (void *)fe, NULL);
- hb_font_set_scale(font, QFixed(x_ppem).value(), -QFixed(y_ppem).value());
- hb_font_set_ppem(font, x_ppem, y_ppem);
+ hb_font_set_scale(font, QFixed::fromReal(x_ppem).value(), -QFixed::fromReal(y_ppem).value());
+ hb_font_set_ppem(font, int(x_ppem), int(y_ppem));
hb_font_set_ptem(font, fe->fontDef.pointSize);
diff --git a/src/gui/text/qplatformfontdatabase.cpp b/src/gui/text/qplatformfontdatabase.cpp
index 90322b24da..02e25bb6af 100644
--- a/src/gui/text/qplatformfontdatabase.cpp
+++ b/src/gui/text/qplatformfontdatabase.cpp
@@ -368,7 +368,7 @@ QFontEngine *QPlatformFontDatabase::fontEngine(const QByteArray &fontData, qreal
Q_UNUSED(pixelSize);
Q_UNUSED(hintingPreference);
qWarning("This plugin does not support font engines created directly from font data");
- return 0;
+ return nullptr;
}
/*!
diff --git a/src/gui/text/qrawfont.cpp b/src/gui/text/qrawfont.cpp
index a060448924..884525bd76 100644
--- a/src/gui/text/qrawfont.cpp
+++ b/src/gui/text/qrawfont.cpp
@@ -303,7 +303,7 @@ QPainterPath QRawFont::pathForGlyph(quint32 glyphIndex) const
QFixedPoint position;
QPainterPath path;
- d->fontEngine->addGlyphsToPath(&glyphIndex, &position, 1, &path, 0);
+ d->fontEngine->addGlyphsToPath(&glyphIndex, &position, 1, &path, { });
return path;
}
@@ -750,7 +750,7 @@ QRawFont QRawFont::fromFont(const QFont &font, QFontDatabase::WritingSystem writ
int script = qt_script_for_writing_system(writingSystem);
QFontEngine *fe = font_d->engineForScript(script);
- if (fe != 0 && fe->type() == QFontEngine::Multi) {
+ if (fe != nullptr && fe->type() == QFontEngine::Multi) {
QFontEngineMulti *multiEngine = static_cast<QFontEngineMulti *>(fe);
fe = multiEngine->engine(0);
@@ -770,7 +770,7 @@ QRawFont QRawFont::fromFont(const QFont &font, QFontDatabase::WritingSystem writ
Q_ASSERT(fe);
}
- if (fe != 0) {
+ if (fe != nullptr) {
rawFont.d.data()->setFontEngine(fe);
rawFont.d.data()->hintingPreference = font.hintingPreference();
}
@@ -795,7 +795,7 @@ void QRawFont::setPixelSize(qreal pixelSize)
void QRawFontPrivate::loadFromData(const QByteArray &fontData, qreal pixelSize,
QFont::HintingPreference hintingPreference)
{
- Q_ASSERT(fontEngine == 0);
+ Q_ASSERT(fontEngine == nullptr);
QPlatformFontDatabase *pfdb = QGuiApplicationPrivate::platformIntegration()->fontDatabase();
setFontEngine(pfdb->fontEngine(fontData, pixelSize, hintingPreference));
diff --git a/src/gui/text/qstatictext.cpp b/src/gui/text/qstatictext.cpp
index 490e0b6b8f..e588b44efd 100644
--- a/src/gui/text/qstatictext.cpp
+++ b/src/gui/text/qstatictext.cpp
@@ -403,7 +403,7 @@ QSizeF QStaticText::size() const
}
QStaticTextPrivate::QStaticTextPrivate()
- : textWidth(-1.0), items(0), itemCount(0), glyphPool(0), positionPool(0),
+ : textWidth(-1.0), items(nullptr), itemCount(0), glyphPool(nullptr), positionPool(nullptr),
needsRelayout(true), useBackendOptimizations(false), textFormat(Qt::AutoText),
untransformedCoordinates(false)
{
@@ -411,7 +411,7 @@ QStaticTextPrivate::QStaticTextPrivate()
QStaticTextPrivate::QStaticTextPrivate(const QStaticTextPrivate &other)
: text(other.text), font(other.font), textWidth(other.textWidth), matrix(other.matrix),
- items(0), itemCount(0), glyphPool(0), positionPool(0), textOption(other.textOption),
+ items(nullptr), itemCount(0), glyphPool(nullptr), positionPool(nullptr), textOption(other.textOption),
needsRelayout(true), useBackendOptimizations(other.useBackendOptimizations),
textFormat(other.textFormat), untransformedCoordinates(other.untransformedCoordinates)
{
diff --git a/src/gui/text/qsyntaxhighlighter.cpp b/src/gui/text/qsyntaxhighlighter.cpp
index cf584f6980..c345e89a21 100644
--- a/src/gui/text/qsyntaxhighlighter.cpp
+++ b/src/gui/text/qsyntaxhighlighter.cpp
@@ -321,7 +321,7 @@ QSyntaxHighlighter::QSyntaxHighlighter(QTextDocument *parent)
*/
QSyntaxHighlighter::~QSyntaxHighlighter()
{
- setDocument(0);
+ setDocument(nullptr);
}
/*!
@@ -601,7 +601,7 @@ QTextBlockUserData *QSyntaxHighlighter::currentBlockUserData() const
{
Q_D(const QSyntaxHighlighter);
if (!d->currentBlock.isValid())
- return 0;
+ return nullptr;
return d->currentBlock.userData();
}
diff --git a/src/gui/text/qtextcursor.cpp b/src/gui/text/qtextcursor.cpp
index 056a854789..fa323ef4bd 100644
--- a/src/gui/text/qtextcursor.cpp
+++ b/src/gui/text/qtextcursor.cpp
@@ -371,7 +371,7 @@ bool QTextCursorPrivate::movePosition(QTextCursor::MoveOperation op, QTextCursor
int newPosition = position;
- if (mode == QTextCursor::KeepAnchor && complexSelectionTable() != 0) {
+ if (mode == QTextCursor::KeepAnchor && complexSelectionTable() != nullptr) {
if ((op >= QTextCursor::EndOfLine && op <= QTextCursor::NextWord)
|| (op >= QTextCursor::Right && op <= QTextCursor::WordRight)) {
QTextTable *t = qobject_cast<QTextTable *>(priv->frameAt(position));
@@ -671,7 +671,7 @@ bool QTextCursorPrivate::movePosition(QTextCursor::MoveOperation op, QTextCursor
QTextTable *QTextCursorPrivate::complexSelectionTable() const
{
if (position == anchor)
- return 0;
+ return nullptr;
QTextTable *t = qobject_cast<QTextTable *>(priv->frameAt(position));
if (t) {
@@ -681,7 +681,7 @@ QTextTable *QTextCursorPrivate::complexSelectionTable() const
Q_ASSERT(cell_anchor.isValid());
if (cell_pos == cell_anchor)
- t = 0;
+ t = nullptr;
}
return t;
}
@@ -1044,7 +1044,7 @@ QTextLayout *QTextCursorPrivate::blockLayout(QTextBlock &block) const{
Constructs a null cursor.
*/
QTextCursor::QTextCursor()
- : d(0)
+ : d(nullptr)
{
}
@@ -1623,7 +1623,7 @@ bool QTextCursor::hasComplexSelection() const
if (!d)
return false;
- return d->complexSelectionTable() != 0;
+ return d->complexSelectionTable() != nullptr;
}
/*!
@@ -2111,7 +2111,7 @@ QTextList *QTextCursor::insertList(QTextListFormat::Style style)
QTextList *QTextCursor::createList(const QTextListFormat &format)
{
if (!d || !d->priv)
- return 0;
+ return nullptr;
QTextList *list = static_cast<QTextList *>(d->priv->createObject(format));
QTextBlockFormat modifier;
@@ -2146,7 +2146,7 @@ QTextList *QTextCursor::createList(QTextListFormat::Style style)
QTextList *QTextCursor::currentList() const
{
if (!d || !d->priv)
- return 0;
+ return nullptr;
QTextBlockFormat b = blockFormat();
QTextObject *o = d->priv->objectForFormat(b);
@@ -2186,7 +2186,7 @@ QTextTable *QTextCursor::insertTable(int rows, int cols)
QTextTable *QTextCursor::insertTable(int rows, int cols, const QTextTableFormat &format)
{
if(!d || !d->priv || rows == 0 || cols == 0)
- return 0;
+ return nullptr;
int pos = d->position;
QTextTable *t = QTextTablePrivate::createTable(d->priv, d->position, rows, cols, format);
@@ -2206,7 +2206,7 @@ QTextTable *QTextCursor::insertTable(int rows, int cols, const QTextTableFormat
QTextTable *QTextCursor::currentTable() const
{
if(!d || !d->priv)
- return 0;
+ return nullptr;
QTextFrame *frame = d->priv->frameAt(d->position);
while (frame) {
@@ -2215,7 +2215,7 @@ QTextTable *QTextCursor::currentTable() const
return table;
frame = frame->parentFrame();
}
- return 0;
+ return nullptr;
}
/*!
@@ -2230,7 +2230,7 @@ QTextTable *QTextCursor::currentTable() const
QTextFrame *QTextCursor::insertFrame(const QTextFrameFormat &format)
{
if (!d || !d->priv)
- return 0;
+ return nullptr;
return d->priv->insertFrame(selectionStart(), selectionEnd(), format);
}
@@ -2243,7 +2243,7 @@ QTextFrame *QTextCursor::insertFrame(const QTextFrameFormat &format)
QTextFrame *QTextCursor::currentFrame() const
{
if(!d || !d->priv)
- return 0;
+ return nullptr;
return d->priv->frameAt(d->position);
}
@@ -2604,7 +2604,7 @@ QTextDocument *QTextCursor::document() const
{
if (d->priv)
return d->priv->document();
- return 0; // document went away
+ return nullptr; // document went away
}
QT_END_NAMESPACE
diff --git a/src/gui/text/qtextdocument.cpp b/src/gui/text/qtextdocument.cpp
index 4b35509ace..1d27cc30eb 100644
--- a/src/gui/text/qtextdocument.cpp
+++ b/src/gui/text/qtextdocument.cpp
@@ -1678,7 +1678,7 @@ QTextCursor QTextDocument::find(const QRegularExpression &expr, const QTextCurso
*/
QTextObject *QTextDocument::createObject(const QTextFormat &f)
{
- QTextObject *obj = 0;
+ QTextObject *obj = nullptr;
if (f.isListFormat())
obj = new QTextList(this);
else if (f.isTableFormat())
@@ -2420,7 +2420,7 @@ bool QTextHtmlExporter::emitCharFormatStyle(const QTextCharFormat &format)
sizeof("small") + sizeof("medium") + 1, // "x-large" )> compressed into "xx-large"
sizeof("small") + sizeof("medium"), // "xx-large" )
};
- const char *name = 0;
+ const char *name = nullptr;
const int idx = format.intProperty(QTextFormat::FontSizeAdjustment) + 1;
if (idx >= 0 && idx <= 4) {
name = sizeNameData + sizeNameOffsets[idx];
@@ -3268,7 +3268,7 @@ void QTextHtmlExporter::emitFrame(const QTextFrame::Iterator &frameIt)
QTextFrame::Iterator next = frameIt;
++next;
if (next.atEnd()
- && frameIt.currentFrame() == 0
+ && frameIt.currentFrame() == nullptr
&& frameIt.parentFrame() != doc->rootFrame()
&& frameIt.currentBlock().begin().atEnd())
return;
diff --git a/src/gui/text/qtextdocument_p.cpp b/src/gui/text/qtextdocument_p.cpp
index a1b1c2e92b..524931ebde 100644
--- a/src/gui/text/qtextdocument_p.cpp
+++ b/src/gui/text/qtextdocument_p.cpp
@@ -185,7 +185,7 @@ QTextDocumentPrivate::QTextDocumentPrivate()
docChangeOldLength(0),
docChangeLength(0),
framesDirty(true),
- rtFrame(0),
+ rtFrame(nullptr),
initialBlockCharFormatIndex(-1) // set correctly later in init()
{
editBlock = 0;
@@ -195,7 +195,7 @@ QTextDocumentPrivate::QTextDocumentPrivate()
undoState = 0;
revision = -1; // init() inserts a block, bringing it to 0
- lout = 0;
+ lout = nullptr;
modified = false;
modifiedState = 0;
@@ -243,7 +243,7 @@ void QTextDocumentPrivate::clear()
curs->adjusted_anchor = 0;
}
- QList<QTextCursorPrivate *>oldCursors = cursors;
+ QSet<QTextCursorPrivate *> oldCursors = cursors;
QT_TRY{
cursors.clear();
@@ -272,7 +272,7 @@ void QTextDocumentPrivate::clear()
blocks.clear();
cachedResources.clear();
delete rtFrame;
- rtFrame = 0;
+ rtFrame = nullptr;
init();
cursors = oldCursors;
{
@@ -290,7 +290,7 @@ void QTextDocumentPrivate::clear()
QTextDocumentPrivate::~QTextDocumentPrivate()
{
for (QTextCursorPrivate *curs : qAsConst(cursors))
- curs->priv = 0;
+ curs->priv = nullptr;
cursors.clear();
undoState = 0;
undoEnabled = true;
@@ -643,7 +643,7 @@ void QTextDocumentPrivate::move(int pos, int to, int length, QTextUndoCommand::O
// qDebug("remove_block at %d", key);
Q_ASSERT(X->size_array[0] == 1 && isValidBlockSeparator(text.at(X->stringPosition)));
b = blocks.previous(b);
- B = 0;
+ B = nullptr;
c.command = blocks.size(b) == 1 ? QTextUndoCommand::BlockDeleted : QTextUndoCommand::BlockRemoved;
w = remove_block(key, &c.blockFormat, QTextUndoCommand::BlockAdded, op);
@@ -1437,7 +1437,7 @@ static QTextFrame *findChildFrame(QTextFrame *f, int pos)
else
return c;
}
- return 0;
+ return nullptr;
}
QTextFrame *QTextDocumentPrivate::rootFrame() const
@@ -1467,7 +1467,7 @@ void QTextDocumentPrivate::clearFrame(QTextFrame *f)
for (int i = 0; i < f->d_func()->childFrames.count(); ++i)
clearFrame(f->d_func()->childFrames.at(i));
f->d_func()->childFrames.clear();
- f->d_func()->parentFrame = 0;
+ f->d_func()->parentFrame = nullptr;
}
void QTextDocumentPrivate::scan_frames(int pos, int charsRemoved, int charsAdded)
@@ -1551,7 +1551,7 @@ QTextFrame *QTextDocumentPrivate::insertFrame(int start, int end, const QTextFra
Q_ASSERT(start <= end || end == -1);
if (start != end && frameAt(start) != frameAt(end))
- return 0;
+ return nullptr;
beginEditBlock();
@@ -1599,7 +1599,7 @@ void QTextDocumentPrivate::removeFrame(QTextFrame *frame)
QTextObject *QTextDocumentPrivate::objectForIndex(int objectIndex) const
{
if (objectIndex < 0)
- return 0;
+ return nullptr;
QTextObject *object = objects.value(objectIndex, 0);
if (!object) {
diff --git a/src/gui/text/qtextdocument_p.h b/src/gui/text/qtextdocument_p.h
index f4e7a25f22..94c67b3264 100644
--- a/src/gui/text/qtextdocument_p.h
+++ b/src/gui/text/qtextdocument_p.h
@@ -277,8 +277,8 @@ private:
public:
void documentChange(int from, int length);
- inline void addCursor(QTextCursorPrivate *c) { cursors.append(c); }
- inline void removeCursor(QTextCursorPrivate *c) { cursors.removeAll(c); }
+ inline void addCursor(QTextCursorPrivate *c) { cursors.insert(c); }
+ inline void removeCursor(QTextCursorPrivate *c) { cursors.remove(c); }
QTextFrame *frameAt(int pos) const;
QTextFrame *rootFrame() const;
@@ -330,7 +330,7 @@ private:
BlockMap blocks;
int initialBlockCharFormatIndex;
- QList<QTextCursorPrivate *> cursors;
+ QSet<QTextCursorPrivate *> cursors;
QMap<int, QTextObject *> objects;
QMap<QUrl, QVariant> resources;
QMap<QUrl, QVariant> cachedResources;
diff --git a/src/gui/text/qtextdocumentfragment.cpp b/src/gui/text/qtextdocumentfragment.cpp
index 742c56382d..d7bc707491 100644
--- a/src/gui/text/qtextdocumentfragment.cpp
+++ b/src/gui/text/qtextdocumentfragment.cpp
@@ -277,7 +277,7 @@ void QTextDocumentFragmentPrivate::insert(QTextCursor &_cursor) const
\sa isEmpty()
*/
QTextDocumentFragment::QTextDocumentFragment()
- : d(0)
+ : d(nullptr)
{
}
@@ -287,7 +287,7 @@ QTextDocumentFragment::QTextDocumentFragment()
like the document's title.
*/
QTextDocumentFragment::QTextDocumentFragment(const QTextDocument *document)
- : d(0)
+ : d(nullptr)
{
if (!document)
return;
@@ -304,7 +304,7 @@ QTextDocumentFragment::QTextDocumentFragment(const QTextDocument *document)
\sa isEmpty(), QTextCursor::selection()
*/
QTextDocumentFragment::QTextDocumentFragment(const QTextCursor &cursor)
- : d(0)
+ : d(nullptr)
{
if (!cursor.hasSelection())
return;
@@ -678,7 +678,7 @@ QTextHtmlImporter::ProcessNodeResult QTextHtmlImporter::processSpecialNodes()
if (n->parent)
n = &at(n->parent);
else
- n = 0;
+ n = nullptr;
}
}
@@ -793,7 +793,7 @@ bool QTextHtmlImporter::closeTag()
bool blockTagClosed = false;
while (depth > endDepth) {
- Table *t = 0;
+ Table *t = nullptr;
if (!tables.isEmpty())
t = &tables.last();
@@ -816,7 +816,7 @@ bool QTextHtmlImporter::closeTag()
indent = t->lastIndent;
tables.resize(tables.size() - 1);
- t = 0;
+ t = nullptr;
if (tables.isEmpty()) {
cursor = doc->rootFrame()->lastCursorPosition();
@@ -1123,7 +1123,7 @@ QTextHtmlImporter::ProcessNodeResult QTextHtmlImporter::processBlockNode()
// for list items we may want to collapse with the bottom margin of the
// list.
- const QTextHtmlParserNode *parentNode = currentNode->parent ? &at(currentNode->parent) : 0;
+ const QTextHtmlParserNode *parentNode = currentNode->parent ? &at(currentNode->parent) : nullptr;
if ((currentNode->id == Html_li || currentNode->id == Html_dt || currentNode->id == Html_dd)
&& parentNode
&& (parentNode->isListStart() || parentNode->id == Html_dl)
@@ -1270,7 +1270,7 @@ void QTextHtmlImporter::appendBlock(const QTextBlockFormat &format, QTextCharFor
QTextDocumentFragment QTextDocumentFragment::fromHtml(const QString &html)
{
- return fromHtml(html, 0);
+ return fromHtml(html, nullptr);
}
/*!
diff --git a/src/gui/text/qtextdocumentlayout.cpp b/src/gui/text/qtextdocumentlayout.cpp
index ed23a4d8d9..e21a8d8d52 100644
--- a/src/gui/text/qtextdocumentlayout.cpp
+++ b/src/gui/text/qtextdocumentlayout.cpp
@@ -111,7 +111,7 @@ public:
QTextFrameData::QTextFrameData()
: maximumWidth(QFIXED_MAX),
- currentLayoutStruct(0), sizeDirty(true), layoutDirty(true)
+ currentLayoutStruct(nullptr), sizeDirty(true), layoutDirty(true)
{
}
@@ -571,7 +571,7 @@ public:
void setCellPosition(QTextTable *t, const QTextTableCell &cell, const QPointF &pos);
QRectF layoutTable(QTextTable *t, int layoutFrom, int layoutTo, QFixed parentY);
- void positionFloat(QTextFrame *frame, QTextLine *currentLine = 0);
+ void positionFloat(QTextFrame *frame, QTextLine *currentLine = nullptr);
// calls the next one
QRectF layoutFrame(QTextFrame *f, int layoutFrom, int layoutTo, QFixed parentY = 0);
@@ -1554,7 +1554,7 @@ static inline double prioritizedEdgeAnchorOffset(const QTextDocumentLayoutPrivat
competingCell = adjacentCell(table, cell, orthogonalEdge);
if (competingCell.isValid()) {
checkJoinedEdge(table, td, competingCell, edgeData.edge, edgeData, couldHaveContinuation,
- &maxCompetingEdgeData, 0);
+ &maxCompetingEdgeData, nullptr);
}
}
@@ -1946,7 +1946,7 @@ void QTextDocumentLayoutPrivate::drawFlow(const QPointF &offset, QPainter *paint
QTextFrame::Iterator it, const QList<QTextFrame *> &floats, QTextBlock *cursorBlockNeedingRepaint) const
{
Q_Q(const QTextDocumentLayout);
- const bool inRootFrame = (!it.atEnd() && it.parentFrame() && it.parentFrame()->parentFrame() == 0);
+ const bool inRootFrame = (!it.atEnd() && it.parentFrame() && it.parentFrame()->parentFrame() == nullptr);
QVector<QCheckPoint>::ConstIterator lastVisibleCheckPoint = checkPoints.end();
if (inRootFrame && context.clip.isValid()) {
@@ -1954,7 +1954,7 @@ void QTextDocumentLayoutPrivate::drawFlow(const QPointF &offset, QPainter *paint
}
QTextBlock previousBlock;
- QTextFrame *previousFrame = 0;
+ QTextFrame *previousFrame = nullptr;
for (; !it.atEnd(); ++it) {
QTextFrame *c = it.currentFrame();
@@ -2050,7 +2050,7 @@ void QTextDocumentLayoutPrivate::drawBlock(const QPointF &offset, QPainter *pain
QVector<QTextLayout::FormatRange> selections;
int blpos = bl.position();
int bllen = bl.length();
- const QTextCharFormat *selFormat = 0;
+ const QTextCharFormat *selFormat = nullptr;
for (int i = 0; i < context.selections.size(); ++i) {
const QAbstractTextDocumentLayout::Selection &range = context.selections.at(i);
const int selStart = range.cursor.selectionStart() - blpos;
@@ -2920,7 +2920,7 @@ QRectF QTextDocumentLayoutPrivate::layoutFrame(QTextFrame *f, int layoutFrom, in
QTextFrameFormat fformat = f->frameFormat();
QTextFrame *parent = f->parentFrame();
- const QTextFrameData *pd = parent ? data(parent) : 0;
+ const QTextFrameData *pd = parent ? data(parent) : nullptr;
const qreal maximumWidth = qMax(qreal(0), pd ? pd->contentsWidth.toReal() : document->pageSize().width());
QFixed width = QFixed::fromReal(fformat.width().value(maximumWidth));
@@ -2971,7 +2971,7 @@ QRectF QTextDocumentLayoutPrivate::layoutFrame(QTextFrame *f, int layoutFrom, in
}
QTextFrame *parent = f->parentFrame();
- const QTextFrameData *pd = parent ? data(parent) : 0;
+ const QTextFrameData *pd = parent ? data(parent) : nullptr;
// accumulate top and bottom margins
if (parent) {
@@ -3296,7 +3296,7 @@ void QTextDocumentLayoutPrivate::layoutFlow(QTextFrame::Iterator it, QTextLayout
const QFixed origMaximumWidth = layoutStruct->maximumWidth;
layoutStruct->maximumWidth = 0;
- const QTextBlockFormat *previousBlockFormatPtr = 0;
+ const QTextBlockFormat *previousBlockFormatPtr = nullptr;
if (lastIt.currentBlock().isValid())
previousBlockFormatPtr = &previousBlockFormat;
@@ -3405,7 +3405,7 @@ void QTextDocumentLayoutPrivate::layoutFlow(QTextFrame::Iterator it, QTextLayout
}
- fd->currentLayoutStruct = 0;
+ fd->currentLayoutStruct = nullptr;
}
static inline void getLineHeightParams(const QTextBlockFormat &blockFormat, const QTextLine &line, qreal scaling,
@@ -3865,7 +3865,7 @@ int QTextDocumentLayout::hitTest(const QPointF &point, Qt::HitTestAccuracy accur
d->ensureLayouted(QFixed::fromReal(point.y()));
QTextFrame *f = d->docPrivate->rootFrame();
int position = 0;
- QTextLayout *l = 0;
+ QTextLayout *l = nullptr;
QFixedPoint pointf;
pointf.x = QFixed::fromReal(point.x());
pointf.y = QFixed::fromReal(point.y());
@@ -3944,7 +3944,7 @@ void QTextDocumentLayout::positionInlineObject(QTextInlineObject item, int posIn
line = b.layout()->lineAt(b.layout()->lineCount()-1);
// qDebug() << "layoutObject: line.isValid" << line.isValid() << b.position() << b.length() <<
// frame->firstPosition() << frame->lastPosition();
- d->positionFloat(frame, line.isValid() ? &line : 0);
+ d->positionFloat(frame, line.isValid() ? &line : nullptr);
}
void QTextDocumentLayout::drawInlineObject(QPainter *p, const QRectF &rect, QTextInlineObject item,
diff --git a/src/gui/text/qtextdocumentwriter.cpp b/src/gui/text/qtextdocumentwriter.cpp
index 193d2c0dd3..0bafa5d9ff 100644
--- a/src/gui/text/qtextdocumentwriter.cpp
+++ b/src/gui/text/qtextdocumentwriter.cpp
@@ -107,7 +107,7 @@ public:
\internal
*/
QTextDocumentWriterPrivate::QTextDocumentWriterPrivate(QTextDocumentWriter *qq)
- : device(0),
+ : device(nullptr),
deleteDevice(false),
#if QT_CONFIG(textcodec)
codec(QTextCodec::codecForName("utf-8")),
@@ -320,7 +320,7 @@ bool QTextDocumentWriter::write(const QTextDocument *document)
*/
bool QTextDocumentWriter::write(const QTextDocumentFragment &fragment)
{
- if (fragment.d == 0)
+ if (fragment.d == nullptr)
return false; // invalid fragment.
QTextDocument *doc = fragment.d->doc;
if (doc)
@@ -337,7 +337,7 @@ bool QTextDocumentWriter::write(const QTextDocumentFragment &fragment)
#if QT_CONFIG(textcodec)
void QTextDocumentWriter::setCodec(QTextCodec *codec)
{
- if (codec == 0)
+ if (codec == nullptr)
codec = QTextCodec::codecForName("UTF-8");
Q_ASSERT(codec);
d->codec = codec;
diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp
index 209433dac5..0024f070ea 100644
--- a/src/gui/text/qtextengine.cpp
+++ b/src/gui/text/qtextengine.cpp
@@ -72,7 +72,7 @@ public:
: m_string(string),
m_analysis(analysis),
m_items(items),
- m_splitter(0)
+ m_splitter(nullptr)
{
}
~Itemizer()
@@ -138,7 +138,7 @@ private:
if (!m_splitter)
m_splitter = new QTextBoundaryFinder(QTextBoundaryFinder::Word,
m_string.constData(), m_string.length(),
- /*buffer*/0, /*buffer size*/0);
+ /*buffer*/nullptr, /*buffer size*/0);
m_splitter->setPosition(start);
QScriptAnalysis itemAnalysis = m_analysis[start];
@@ -1680,8 +1680,8 @@ int QTextEngine::shapeTextWithHarfbuzzNG(const QScriptItem &si,
QGlyphLayout g = availableGlyphs(&si).mid(glyphs_shaped, num_glyphs);
ushort *log_clusters = logClusters(&si) + item_pos;
- hb_glyph_info_t *infos = hb_buffer_get_glyph_infos(buffer, 0);
- hb_glyph_position_t *positions = hb_buffer_get_glyph_positions(buffer, 0);
+ hb_glyph_info_t *infos = hb_buffer_get_glyph_infos(buffer, nullptr);
+ hb_glyph_position_t *positions = hb_buffer_get_glyph_positions(buffer, nullptr);
uint str_pos = 0;
uint last_cluster = ~0u;
uint last_glyph_pos = glyphs_shaped;
@@ -1720,7 +1720,7 @@ int QTextEngine::shapeTextWithHarfbuzzNG(const QScriptItem &si,
g.glyphs[i] = actualFontEngine->glyphIndex('-');
if (Q_LIKELY(g.glyphs[i] != 0)) {
QGlyphLayout tmp = g.mid(i, 1);
- actualFontEngine->recalcAdvances(&tmp, 0);
+ actualFontEngine->recalcAdvances(&tmp, { });
}
g.attributes[i].dontPrint = true;
}
@@ -1896,7 +1896,7 @@ int QTextEngine::shapeTextWithHarfbuzz(const QScriptItem &si, const ushort *stri
}
if (kerningEnabled && !shaper_item.kerning_applied)
- actualFontEngine->doKerning(&g, option.useDesignMetrics() ? QFontEngine::DesignMetrics : QFontEngine::ShaperFlags(0));
+ actualFontEngine->doKerning(&g, option.useDesignMetrics() ? QFontEngine::DesignMetrics : QFontEngine::ShaperFlags{});
if (engineIdx != 0) {
for (quint32 i = 0; i < shaper_item.num_glyphs; ++i)
@@ -1917,12 +1917,12 @@ void QTextEngine::init(QTextEngine *e)
e->visualMovement = false;
e->delayDecorations = false;
- e->layoutData = 0;
+ e->layoutData = nullptr;
e->minWidth = 0;
e->maxWidth = 0;
- e->specialData = 0;
+ e->specialData = nullptr;
e->stackEngine = false;
#ifndef QT_NO_RAWFONT
e->useRawFont = false;
@@ -1956,7 +1956,7 @@ const QCharAttributes *QTextEngine::attributes() const
itemize();
if (! ensureSpace(layoutData->string.length()))
- return NULL;
+ return nullptr;
QVarLengthArray<QUnicodeTools::ScriptItem> scriptItems(layoutData->items.size());
for (int i = 0; i < layoutData->items.size(); ++i) {
@@ -2148,7 +2148,7 @@ void QTextEngine::itemize() const
if (it == end || format != frag->format) {
if (s && position >= s->preeditPosition) {
position += s->preeditText.length();
- s = 0;
+ s = nullptr;
}
Q_ASSERT(position <= length);
QFont::Capitalization capitalization =
@@ -2443,8 +2443,8 @@ QTextEngine::FontEngineCache::FontEngineCache()
//input is common (and hard to cache at a higher level)
QFontEngine *QTextEngine::fontEngine(const QScriptItem &si, QFixed *ascent, QFixed *descent, QFixed *leading) const
{
- QFontEngine *engine = 0;
- QFontEngine *scaledEngine = 0;
+ QFontEngine *engine = nullptr;
+ QFontEngine *scaledEngine = nullptr;
int script = si.analysis.script;
QFont font = fnt;
@@ -2459,7 +2459,7 @@ QFontEngine *QTextEngine::fontEngine(const QScriptItem &si, QFixed *ascent, QFix
engine->ref.ref();
if (feCache.prevScaledFontEngine) {
releaseCachedFontEngine(feCache.prevScaledFontEngine);
- feCache.prevScaledFontEngine = 0;
+ feCache.prevScaledFontEngine = nullptr;
}
}
if (si.analysis.flags == QScriptAnalysis::SmallCaps) {
@@ -2538,7 +2538,7 @@ QFontEngine *QTextEngine::fontEngine(const QScriptItem &si, QFixed *ascent, QFix
feCache.prevScript = script;
feCache.prevPosition = -1;
feCache.prevLength = -1;
- feCache.prevScaledFontEngine = 0;
+ feCache.prevScaledFontEngine = nullptr;
}
}
@@ -2581,7 +2581,7 @@ static void set(QJustificationPoint *point, int type, const QGlyphLayout &glyph,
g.numGlyphs = 1;
g.glyphs = &kashidaGlyph;
g.advances = &point->kashidaWidth;
- fe->recalcAdvances(&g, 0);
+ fe->recalcAdvances(&g, { });
if (point->kashidaWidth == 0)
point->type = Justification_Prohibited;
@@ -2808,14 +2808,14 @@ void QScriptLine::setDefaultHeight(QTextEngine *eng)
QTextEngine::LayoutData::LayoutData()
{
- memory = 0;
+ memory = nullptr;
allocated = 0;
memory_on_stack = false;
used = 0;
hasBidi = false;
layoutState = LayoutEmpty;
haveCharAttributes = false;
- logClustersPtr = 0;
+ logClustersPtr = nullptr;
available_glyphs = 0;
}
@@ -2833,8 +2833,8 @@ QTextEngine::LayoutData::LayoutData(const QString &str, void **stack_memory, int
allocated = 0;
memory_on_stack = false;
- memory = 0;
- logClustersPtr = 0;
+ memory = nullptr;
+ logClustersPtr = nullptr;
} else {
memory_on_stack = true;
memory = stack_memory;
@@ -2855,7 +2855,7 @@ QTextEngine::LayoutData::~LayoutData()
{
if (!memory_on_stack)
free(memory);
- memory = 0;
+ memory = nullptr;
}
bool QTextEngine::LayoutData::reallocate(int totalGlyphs)
@@ -2879,7 +2879,7 @@ bool QTextEngine::LayoutData::reallocate(int totalGlyphs)
return false;
}
- void **newMem = (void **)::realloc(memory_on_stack ? 0 : memory, newAllocated*sizeof(void *));
+ void **newMem = (void **)::realloc(memory_on_stack ? nullptr : memory, newAllocated*sizeof(void *));
if (!newMem) {
layoutState = LayoutFailed;
return false;
@@ -2928,7 +2928,7 @@ void QTextEngine::freeMemory()
{
if (!stackEngine) {
delete layoutData;
- layoutData = 0;
+ layoutData = nullptr;
} else {
layoutData->used = 0;
layoutData->hasBidi = false;
@@ -3035,7 +3035,7 @@ void QTextEngine::setPreeditArea(int position, const QString &preeditText)
return;
if (specialData->formats.isEmpty()) {
delete specialData;
- specialData = 0;
+ specialData = nullptr;
} else {
specialData->preeditText = QString();
specialData->preeditPosition = -1;
@@ -3057,7 +3057,7 @@ void QTextEngine::setFormats(const QVector<QTextLayout::FormatRange> &formats)
return;
if (specialData->preeditText.isEmpty()) {
delete specialData;
- specialData = 0;
+ specialData = nullptr;
} else {
specialData->formats.clear();
}
@@ -3214,13 +3214,13 @@ QString QTextEngine::elidedText(Qt::TextElideMode mode, const QFixed &width, int
glyphs.advances = &ellipsisWidth;
if (glyph != 0) {
- engine->recalcAdvances(&glyphs, 0);
+ engine->recalcAdvances(&glyphs, { });
ellipsisText = ellipsisChar;
} else {
glyph = engine->glyphIndex('.');
if (glyph != 0) {
- engine->recalcAdvances(&glyphs, 0);
+ engine->recalcAdvances(&glyphs, { });
ellipsisWidth *= 3;
ellipsisText = QStringLiteral("...");
@@ -3895,12 +3895,7 @@ QStackTextEngine::QStackTextEngine(const QString &string, const QFont &f)
}
QTextItemInt::QTextItemInt(const QScriptItem &si, QFont *font, const QTextCharFormat &format)
- : justified(false),
- underlineStyle(QTextCharFormat::NoUnderline),
- charFormat(format),
- num_chars(0),
- chars(nullptr),
- logClusters(nullptr),
+ : charFormat(format),
f(font),
fontEngine(font->d->engineForScript(si.analysis.script))
{
@@ -3910,13 +3905,9 @@ QTextItemInt::QTextItemInt(const QScriptItem &si, QFont *font, const QTextCharFo
}
QTextItemInt::QTextItemInt(const QGlyphLayout &g, QFont *font, const QChar *chars_, int numChars, QFontEngine *fe, const QTextCharFormat &format)
- : flags(0),
- justified(false),
- underlineStyle(QTextCharFormat::NoUnderline),
- charFormat(format),
+ : charFormat(format),
num_chars(numChars),
chars(chars_),
- logClusters(nullptr),
f(font),
glyphs(g),
fontEngine(fe)
@@ -3928,7 +3919,7 @@ void QTextItemInt::initWithScriptItem(const QScriptItem &si)
{
// explicitly initialize flags so that initFontAttributes can be called
// multiple times on the same TextItem
- flags = 0;
+ flags = { };
if (si.analysis.bidiLevel %2)
flags |= QTextItem::RightToLeft;
ascent = si.ascent;
@@ -4013,7 +4004,7 @@ QTextLineItemIterator::QTextLineItemIterator(QTextEngine *_eng, int _lineNum, co
const QTextLayout::FormatRange *_selection)
: eng(_eng),
line(eng->lines[_lineNum]),
- si(0),
+ si(nullptr),
lineNum(_lineNum),
lineEnd(line.from + line.length),
firstItem(eng->findItem(line.from)),
diff --git a/src/gui/text/qtextengine_p.h b/src/gui/text/qtextengine_p.h
index 76b9757eba..f069951ce5 100644
--- a/src/gui/text/qtextengine_p.h
+++ b/src/gui/text/qtextengine_p.h
@@ -303,10 +303,7 @@ struct QScriptItem;
class QTextItemInt : public QTextItem
{
public:
- inline QTextItemInt()
- : justified(false), underlineStyle(QTextCharFormat::NoUnderline), num_chars(0), chars(nullptr),
- logClusters(nullptr), f(nullptr), fontEngine(nullptr)
- {}
+ inline QTextItemInt() = default;
QTextItemInt(const QScriptItem &si, QFont *font, const QTextCharFormat &format = QTextCharFormat());
QTextItemInt(const QGlyphLayout &g, QFont *font, const QChar *chars, int numChars, QFontEngine *fe,
const QTextCharFormat &format = QTextCharFormat());
@@ -321,16 +318,16 @@ public:
QFixed width;
RenderFlags flags;
- bool justified;
- QTextCharFormat::UnderlineStyle underlineStyle;
+ bool justified = false;
+ QTextCharFormat::UnderlineStyle underlineStyle = QTextCharFormat::NoUnderline;
const QTextCharFormat charFormat;
- int num_chars;
- const QChar *chars;
- const unsigned short *logClusters;
- const QFont *f;
+ int num_chars = 0;
+ const QChar *chars = nullptr;
+ const unsigned short *logClusters = nullptr;
+ const QFont *f = nullptr;
QGlyphLayout glyphs;
- QFontEngine *fontEngine;
+ QFontEngine *fontEngine = nullptr;
};
struct QScriptItem
diff --git a/src/gui/text/qtexthtmlparser.cpp b/src/gui/text/qtexthtmlparser.cpp
index b867f42480..3b9f2d253e 100644
--- a/src/gui/text/qtexthtmlparser.cpp
+++ b/src/gui/text/qtexthtmlparser.cpp
@@ -463,7 +463,7 @@ static const QTextHtmlElement *lookupElementHelper(const QString &element)
const QTextHtmlElement *end = &elements[Html_NumElements];
const QTextHtmlElement *e = std::lower_bound(start, end, element);
if ((e == end) || (element < *e))
- return 0;
+ return nullptr;
return e;
}
@@ -519,7 +519,7 @@ void QTextHtmlParser::dumpHtml()
QTextHtmlParserNode *QTextHtmlParser::newNode(int parent)
{
QTextHtmlParserNode *lastNode = &nodes.last();
- QTextHtmlParserNode *newNode = 0;
+ QTextHtmlParserNode *newNode = nullptr;
bool reuseLastNode = true;
@@ -2123,7 +2123,7 @@ QVector<QCss::Declaration> QTextHtmlParser::declarationsForNode(int node) const
QCss::StyleSelector::NodePtr n;
n.id = node;
- const char *extraPseudo = 0;
+ const char *extraPseudo = nullptr;
if (nodes.at(node).id == Html_a && nodes.at(node).hasHref)
extraPseudo = "link";
// Ensure that our own style is taken into consideration
diff --git a/src/gui/text/qtextimagehandler.cpp b/src/gui/text/qtextimagehandler.cpp
index f7117bfe0a..14018f34da 100644
--- a/src/gui/text/qtextimagehandler.cpp
+++ b/src/gui/text/qtextimagehandler.cpp
@@ -246,7 +246,7 @@ QSizeF QTextImageHandler::intrinsicSize(QTextDocument *doc, int posInDocument, c
QImage QTextImageHandler::image(QTextDocument *doc, const QTextImageFormat &imageFormat)
{
- Q_ASSERT(doc != 0);
+ Q_ASSERT(doc != nullptr);
return getImage(doc, imageFormat);
}
diff --git a/src/gui/text/qtextlayout.cpp b/src/gui/text/qtextlayout.cpp
index a3e194f835..fc256d72f3 100644
--- a/src/gui/text/qtextlayout.cpp
+++ b/src/gui/text/qtextlayout.cpp
@@ -1649,7 +1649,7 @@ namespace {
struct LineBreakHelper
{
LineBreakHelper()
- : glyphCount(0), maxGlyphs(0), currentPosition(0), fontEngine(0), logClusters(0),
+ : glyphCount(0), maxGlyphs(0), currentPosition(0), fontEngine(nullptr), logClusters(nullptr),
manualWrap(false), whiteSpaceOrObject(true)
{
}
@@ -1705,7 +1705,7 @@ namespace {
inline void calculateRightBearing(QFontEngine *engine, glyph_t glyph)
{
qreal rb;
- engine->getGlyphBearings(glyph, 0, &rb);
+ engine->getGlyphBearings(glyph, nullptr, &rb);
// We only care about negative right bearings, so we limit the range
// of the bearing here so that we can assume it's negative in the rest
@@ -2212,7 +2212,7 @@ static QGlyphRun glyphRunWithInfo(QFontEngine *fontEngine,
int textPosition,
int textLength)
{
- Q_ASSERT(logClusters != 0);
+ Q_ASSERT(logClusters != nullptr);
QGlyphRun glyphRun;
@@ -2593,7 +2593,7 @@ void QTextLine::draw(QPainter *p, const QPointF &pos, const QTextLayout::FormatR
} else { // si.isTab
QFont f = eng->font(si);
QTextItemInt gf(si, &f, format);
- gf.chars = 0;
+ gf.chars = nullptr;
gf.num_chars = 0;
gf.width = iterator.itemWidth;
QPainterPrivate::get(p)->drawTextItem(QPointF(iterator.x.toReal(), y.toReal()), gf, eng);
diff --git a/src/gui/text/qtextobject.cpp b/src/gui/text/qtextobject.cpp
index b845889c3d..77dcae0dc8 100644
--- a/src/gui/text/qtextobject.cpp
+++ b/src/gui/text/qtextobject.cpp
@@ -596,7 +596,7 @@ void QTextFramePrivate::remove_me()
parentFrame->d_func()->childFrames.removeAt(index);
childFrames.clear();
- parentFrame = 0;
+ parentFrame = nullptr;
}
/*!
@@ -654,10 +654,10 @@ QTextFrame::iterator QTextFrame::end() const
*/
QTextFrame::iterator::iterator()
{
- f = 0;
+ f = nullptr;
b = 0;
e = 0;
- cf = 0;
+ cf = nullptr;
cb = 0;
}
@@ -669,7 +669,7 @@ QTextFrame::iterator::iterator(QTextFrame *frame, int block, int begin, int end)
f = frame;
b = begin;
e = end;
- cf = 0;
+ cf = nullptr;
cb = block;
}
@@ -739,7 +739,7 @@ QTextFrame::iterator &QTextFrame::iterator::operator++()
if (cf) {
int end = cf->lastPosition() + 1;
cb = map.findNode(end);
- cf = 0;
+ cf = nullptr;
} else if (cb) {
cb = map.next(cb);
if (cb == e)
@@ -777,7 +777,7 @@ QTextFrame::iterator &QTextFrame::iterator::operator--()
if (cf) {
int start = cf->firstPosition() - 1;
cb = map.findNode(start);
- cf = 0;
+ cf = nullptr;
} else {
if (cb == b)
goto end;
@@ -907,7 +907,7 @@ QTextBlockUserData::~QTextBlockUserData()
bool QTextBlock::isValid() const
{
- return p != 0 && p->blockMap().isValid(n);
+ return p != nullptr && p->blockMap().isValid(n);
}
/*!
@@ -1079,7 +1079,7 @@ bool QTextBlock::contains(int position) const
QTextLayout *QTextBlock::layout() const
{
if (!p || !n)
- return 0;
+ return nullptr;
const QTextBlockData *b = p->blockMap().fragment(n);
if (!b->layout)
diff --git a/src/gui/text/qtextodfwriter.cpp b/src/gui/text/qtextodfwriter.cpp
index 0e8666565f..408e3ec167 100644
--- a/src/gui/text/qtextodfwriter.cpp
+++ b/src/gui/text/qtextodfwriter.cpp
@@ -70,7 +70,7 @@ static QString pixelToPoint(qreal pixels)
// strategies
class QOutputStrategy {
public:
- QOutputStrategy() : contentStream(0), counter(1) { }
+ QOutputStrategy() : contentStream(nullptr), counter(1) { }
virtual ~QOutputStrategy() {}
virtual void addFile(const QString &fileName, const QString &mimeType, const QByteArray &bytes) = 0;
@@ -240,7 +240,7 @@ void QTextOdfWriter::writeFrame(QXmlStreamWriter &writer, const QTextFrame *fram
}
QTextFrame::iterator iterator = frame->begin();
- QTextFrame *child = 0;
+ QTextFrame *child = nullptr;
int tableRow = -1;
while (! iterator.atEnd()) {
@@ -437,7 +437,7 @@ static bool probeImageData(QIODevice *device, QImage *image, QString *mimeType,
void QTextOdfWriter::writeInlineCharacter(QXmlStreamWriter &writer, const QTextFragment &fragment) const
{
writer.writeStartElement(drawNS, QString::fromLatin1("frame"));
- if (m_strategy == 0) {
+ if (m_strategy == nullptr) {
// don't do anything.
}
else if (fragment.charFormat().isImageFormat()) {
@@ -997,8 +997,8 @@ QTextOdfWriter::QTextOdfWriter(const QTextDocument &document, QIODevice *device)
svgNS (QLatin1String("urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0")),
m_document(&document),
m_device(device),
- m_strategy(0),
- m_codec(0),
+ m_strategy(nullptr),
+ m_codec(nullptr),
m_createArchive(true)
{
}
@@ -1093,7 +1093,7 @@ bool QTextOdfWriter::writeAll()
writer.writeEndElement(); // document-content
writer.writeEndDocument();
delete m_strategy;
- m_strategy = 0;
+ m_strategy = nullptr;
return true;
}
diff --git a/src/gui/text/qtextoption.cpp b/src/gui/text/qtextoption.cpp
index 2c2c05567f..2f195599f0 100644
--- a/src/gui/text/qtextoption.cpp
+++ b/src/gui/text/qtextoption.cpp
@@ -62,7 +62,7 @@ QTextOption::QTextOption()
unused2(0),
f(0),
tab(-1),
- d(0)
+ d(nullptr)
{
direction = Qt::LayoutDirectionAuto;
}
@@ -80,7 +80,7 @@ QTextOption::QTextOption(Qt::Alignment alignment)
unused2(0),
f(0),
tab(-1),
- d(0)
+ d(nullptr)
{
direction = QGuiApplication::layoutDirection();
}
@@ -107,7 +107,7 @@ QTextOption::QTextOption(const QTextOption &o)
unused2(o.unused2),
f(o.f),
tab(o.tab),
- d(0)
+ d(nullptr)
{
if (o.d)
d = new QTextOptionPrivate(*o.d);
@@ -124,7 +124,7 @@ QTextOption &QTextOption::operator=(const QTextOption &o)
if (this == &o)
return *this;
- QTextOptionPrivate* dNew = 0;
+ QTextOptionPrivate* dNew = nullptr;
if (o.d)
dNew = new QTextOptionPrivate(*o.d);
delete d;
diff --git a/src/gui/text/qzip.cpp b/src/gui/text/qzip.cpp
index fc7fbcac12..80c0f122e8 100644
--- a/src/gui/text/qzip.cpp
+++ b/src/gui/text/qzip.cpp
@@ -141,8 +141,8 @@ static int inflate(Bytef *dest, ulong *destLen, const Bytef *source, ulong sourc
if ((uLong)stream.avail_out != *destLen)
return Z_BUF_ERROR;
- stream.zalloc = (alloc_func)0;
- stream.zfree = (free_func)0;
+ stream.zalloc = (alloc_func)nullptr;
+ stream.zfree = (free_func)nullptr;
err = inflateInit2(&stream, -MAX_WBITS);
if (err != Z_OK)
@@ -172,9 +172,9 @@ static int deflate (Bytef *dest, ulong *destLen, const Bytef *source, ulong sour
stream.avail_out = (uInt)*destLen;
if ((uLong)stream.avail_out != *destLen) return Z_BUF_ERROR;
- stream.zalloc = (alloc_func)0;
- stream.zfree = (free_func)0;
- stream.opaque = (voidpf)0;
+ stream.zalloc = (alloc_func)nullptr;
+ stream.zfree = (free_func)nullptr;
+ stream.opaque = (voidpf)nullptr;
err = deflateInit2(&stream, Z_DEFAULT_COMPRESSION, Z_DEFLATED, -MAX_WBITS, 8, Z_DEFAULT_STRATEGY);
if (err != Z_OK) return err;
@@ -705,7 +705,7 @@ void QZipWriterPrivate::addEntry(EntryType type, const QString &fileName, const
}
// TODO add a check if data.length() > contents.length(). Then try to store the original and revert the compression method to be uncompressed
writeUInt(header.h.compressed_size, data.length());
- uint crc_32 = ::crc32(0, 0, 0);
+ uint crc_32 = ::crc32(0, nullptr, 0);
crc_32 = ::crc32(crc_32, (const uchar *)contents.constData(), contents.length());
writeUInt(header.h.crc_32, crc_32);
@@ -886,7 +886,7 @@ bool QZipReader::isReadable() const
bool QZipReader::exists() const
{
QFile *f = qobject_cast<QFile*> (d->device);
- if (f == 0)
+ if (f == nullptr)
return true;
return f->exists();
}
@@ -1178,7 +1178,7 @@ bool QZipWriter::isWritable() const
bool QZipWriter::exists() const
{
QFile *f = qobject_cast<QFile*> (d->device);
- if (f == 0)
+ if (f == nullptr)
return true;
return f->exists();
}
diff --git a/src/gui/util/qdesktopservices.cpp b/src/gui/util/qdesktopservices.cpp
index 99214c4960..763f309fc7 100644
--- a/src/gui/util/qdesktopservices.cpp
+++ b/src/gui/util/qdesktopservices.cpp
@@ -287,7 +287,7 @@ void QDesktopServices::setUrlHandler(const QString &scheme, QObject *receiver, c
*/
void QDesktopServices::unsetUrlHandler(const QString &scheme)
{
- setUrlHandler(scheme, 0, 0);
+ setUrlHandler(scheme, nullptr, nullptr);
}
#if QT_DEPRECATED_SINCE(5, 0)
diff --git a/src/gui/util/qgridlayoutengine.cpp b/src/gui/util/qgridlayoutengine.cpp
index 33adac40b2..4af5e47f8f 100644
--- a/src/gui/util/qgridlayoutengine.cpp
+++ b/src/gui/util/qgridlayoutengine.cpp
@@ -177,7 +177,7 @@ void QGridLayoutRowData::distributeMultiCells(const QGridLayoutRowInfo &rowInfo,
qreal extra = compare(box, totalBox, j);
if (extra > 0.0) {
calculateGeometries(start, end, box.q_sizes(j), dummy.data(), newSizes.data(),
- 0, totalBox, rowInfo, snapToPixelGrid);
+ nullptr, totalBox, rowInfo, snapToPixelGrid);
for (int k = 0; k < span; ++k)
extras[k].q_sizes(j) = newSizes[k];
@@ -988,7 +988,7 @@ void QGridLayoutEngine::removeItem(QGridLayoutItem *item)
for (int i = item->firstRow(); i <= item->lastRow(); ++i) {
for (int j = item->firstColumn(); j <= item->lastColumn(); ++j) {
if (itemAt(i, j) == item)
- setItemAt(i, j, 0);
+ setItemAt(i, j, nullptr);
}
}
@@ -1001,7 +1001,7 @@ QGridLayoutItem *QGridLayoutEngine::itemAt(int row, int column, Qt::Orientation
if (orientation == Qt::Horizontal)
qSwap(row, column);
if (uint(row) >= uint(rowCount()) || uint(column) >= uint(columnCount()))
- return 0;
+ return nullptr;
return q_grid.at((row * internalGridColumnCount()) + column);
}
@@ -1100,7 +1100,7 @@ QSizeF QGridLayoutEngine::sizeHint(Qt::SizeHint which, const QSizeF &constraint,
if (constraintOrientation() == Qt::Vertical) {
//We have items whose height depends on their width
if (constraint.width() >= 0) {
- ensureColumnAndRowData(&q_columnData, &sizehint_totalBoxes[Hor], NULL, NULL, Qt::Horizontal, styleInfo);
+ ensureColumnAndRowData(&q_columnData, &sizehint_totalBoxes[Hor], nullptr, nullptr, Qt::Horizontal, styleInfo);
QVector<qreal> sizehint_xx;
QVector<qreal> sizehint_widths;
@@ -1110,14 +1110,14 @@ QSizeF QGridLayoutEngine::sizeHint(Qt::SizeHint which, const QSizeF &constraint,
//Calculate column widths and positions, and put results in q_xx.data() and q_widths.data() so that we can use this information as
//constraints to find the row heights
q_columnData.calculateGeometries(0, columnCount(), width, sizehint_xx.data(), sizehint_widths.data(),
- 0, sizehint_totalBoxes[Hor], q_infos[Hor], m_snapToPixelGrid);
+ nullptr, sizehint_totalBoxes[Hor], q_infos[Hor], m_snapToPixelGrid);
ensureColumnAndRowData(&q_rowData, &sizehint_totalBoxes[Ver], sizehint_xx.data(), sizehint_widths.data(), Qt::Vertical, styleInfo);
sizeHintCalculated = true;
}
} else {
if (constraint.height() >= 0) {
//We have items whose width depends on their height
- ensureColumnAndRowData(&q_rowData, &sizehint_totalBoxes[Ver], NULL, NULL, Qt::Vertical, styleInfo);
+ ensureColumnAndRowData(&q_rowData, &sizehint_totalBoxes[Ver], nullptr, nullptr, Qt::Vertical, styleInfo);
QVector<qreal> sizehint_yy;
QVector<qreal> sizehint_heights;
@@ -1127,7 +1127,7 @@ QSizeF QGridLayoutEngine::sizeHint(Qt::SizeHint which, const QSizeF &constraint,
//Calculate row heights and positions, and put results in q_yy.data() and q_heights.data() so that we can use this information as
//constraints to find the column widths
q_rowData.calculateGeometries(0, rowCount(), height, sizehint_yy.data(), sizehint_heights.data(),
- 0, sizehint_totalBoxes[Ver], q_infos[Ver], m_snapToPixelGrid);
+ nullptr, sizehint_totalBoxes[Ver], q_infos[Ver], m_snapToPixelGrid);
ensureColumnAndRowData(&q_columnData, &sizehint_totalBoxes[Hor], sizehint_yy.data(), sizehint_heights.data(), Qt::Horizontal, styleInfo);
sizeHintCalculated = true;
}
@@ -1137,8 +1137,8 @@ QSizeF QGridLayoutEngine::sizeHint(Qt::SizeHint which, const QSizeF &constraint,
}
//No items with height for width, so it doesn't matter which order we do these in
- ensureColumnAndRowData(&q_columnData, &q_totalBoxes[Hor], NULL, NULL, Qt::Horizontal, styleInfo);
- ensureColumnAndRowData(&q_rowData, &q_totalBoxes[Ver], NULL, NULL, Qt::Vertical, styleInfo);
+ ensureColumnAndRowData(&q_columnData, &q_totalBoxes[Hor], nullptr, nullptr, Qt::Horizontal, styleInfo);
+ ensureColumnAndRowData(&q_rowData, &q_totalBoxes[Ver], nullptr, nullptr, Qt::Vertical, styleInfo);
return QSizeF(q_totalBoxes[Hor].q_sizes(which), q_totalBoxes[Ver].q_sizes(which));
}
@@ -1147,7 +1147,7 @@ QLayoutPolicy::ControlTypes QGridLayoutEngine::controlTypes(LayoutSide side) con
Qt::Orientation orientation = (side == Top || side == Bottom) ? Qt::Vertical : Qt::Horizontal;
int row = (side == Top || side == Left) ? effectiveFirstRow(orientation)
: effectiveLastRow(orientation);
- QLayoutPolicy::ControlTypes result = 0;
+ QLayoutPolicy::ControlTypes result;
for (int column = columnCount(orientation) - 1; column >= 0; --column) {
if (QGridLayoutItem *item = itemAt(row, column, orientation))
@@ -1650,18 +1650,18 @@ void QGridLayoutEngine::ensureGeometries(const QSizeF &size,
if (constraintOrientation() != Qt::Horizontal) {
//We might have items whose height depends on their width (HFW)
- ensureColumnAndRowData(&q_columnData, &q_totalBoxes[Hor], NULL, NULL, Qt::Horizontal, styleInfo);
+ ensureColumnAndRowData(&q_columnData, &q_totalBoxes[Hor], nullptr, nullptr, Qt::Horizontal, styleInfo);
//Calculate column widths and positions, and put results in q_xx.data() and q_widths.data() so that we can use this information as
//constraints to find the row heights
q_columnData.calculateGeometries(0, columnCount(), size.width(), q_xx.data(), q_widths.data(),
- 0, q_totalBoxes[Hor], q_infos[Hor], m_snapToPixelGrid);
+ nullptr, q_totalBoxes[Hor], q_infos[Hor], m_snapToPixelGrid);
ensureColumnAndRowData(&q_rowData, &q_totalBoxes[Ver], q_xx.data(), q_widths.data(), Qt::Vertical, styleInfo);
//Calculate row heights and positions, and put results in q_yy.data() and q_heights.data()
q_rowData.calculateGeometries(0, rowCount(), size.height(), q_yy.data(), q_heights.data(),
q_descents.data(), q_totalBoxes[Ver], q_infos[Ver], m_snapToPixelGrid);
} else {
//We have items whose width depends on their height (WFH)
- ensureColumnAndRowData(&q_rowData, &q_totalBoxes[Ver], NULL, NULL, Qt::Vertical, styleInfo);
+ ensureColumnAndRowData(&q_rowData, &q_totalBoxes[Ver], nullptr, nullptr, Qt::Vertical, styleInfo);
//Calculate row heights and positions, and put results in q_yy.data() and q_heights.data() so that we can use this information as
//constraints to find the column widths
q_rowData.calculateGeometries(0, rowCount(), size.height(), q_yy.data(), q_heights.data(),
@@ -1669,7 +1669,7 @@ void QGridLayoutEngine::ensureGeometries(const QSizeF &size,
ensureColumnAndRowData(&q_columnData, &q_totalBoxes[Hor], q_yy.data(), q_heights.data(), Qt::Horizontal, styleInfo);
//Calculate row heights and positions, and put results in q_yy.data() and q_heights.data()
q_columnData.calculateGeometries(0, columnCount(), size.width(), q_xx.data(), q_widths.data(),
- 0, q_totalBoxes[Hor], q_infos[Hor], m_snapToPixelGrid);
+ nullptr, q_totalBoxes[Hor], q_infos[Hor], m_snapToPixelGrid);
}
}
diff --git a/src/gui/util/qgridlayoutengine_p.h b/src/gui/util/qgridlayoutengine_p.h
index 5f0e84edb1..181326103b 100644
--- a/src/gui/util/qgridlayoutengine_p.h
+++ b/src/gui/util/qgridlayoutengine_p.h
@@ -276,7 +276,7 @@ class Q_GUI_EXPORT QGridLayoutItem
{
public:
QGridLayoutItem(int row, int column, int rowSpan = 1, int columnSpan = 1,
- Qt::Alignment alignment = nullptr);
+ Qt::Alignment alignment = { });
virtual ~QGridLayoutItem() {}
inline int firstRow() const { return q_firstRows[Ver]; }
@@ -339,7 +339,7 @@ private:
class Q_GUI_EXPORT QGridLayoutEngine
{
public:
- QGridLayoutEngine(Qt::Alignment defaultAlignment = Qt::Alignment(nullptr), bool snapToPixelGrid = false);
+ QGridLayoutEngine(Qt::Alignment defaultAlignment = { }, bool snapToPixelGrid = false);
inline ~QGridLayoutEngine() { qDeleteAll(q_items); }
int rowCount(Qt::Orientation orientation) const;
diff --git a/src/gui/util/qshadergraphloader.cpp b/src/gui/util/qshadergraphloader.cpp
index a393e876e0..26848020f2 100644
--- a/src/gui/util/qshadergraphloader.cpp
+++ b/src/gui/util/qshadergraphloader.cpp
@@ -136,7 +136,7 @@ void QShaderGraphLoader::load()
if (prototypesValue.isObject()) {
QShaderNodesLoader loader;
loader.load(prototypesValue.toObject());
- m_prototypes.unite(loader.nodes());
+ m_prototypes.insert(loader.nodes());
} else {
qWarning() << "Invalid prototypes property, should be an object";
m_status = Error;
diff --git a/src/gui/util/qtexturefiledata.cpp b/src/gui/util/qtexturefiledata.cpp
index ebf46f8e4e..41cbd1b15a 100644
--- a/src/gui/util/qtexturefiledata.cpp
+++ b/src/gui/util/qtexturefiledata.cpp
@@ -247,7 +247,7 @@ void QTextureFileData::setLogName(const QByteArray &name)
static QByteArray glFormatName(quint32 fmt)
{
- const char *id = 0;
+ const char *id = nullptr;
#if QT_CONFIG(opengl)
id = QMetaEnum::fromType<QOpenGLTexture::TextureFormat>().valueToKey(fmt);
#endif
diff --git a/src/gui/util/qvalidator.cpp b/src/gui/util/qvalidator.cpp
index 2237b016e9..54cbb28ffa 100644
--- a/src/gui/util/qvalidator.cpp
+++ b/src/gui/util/qvalidator.cpp
@@ -688,7 +688,7 @@ QValidator::State QDoubleValidatorPrivate::validateWithLocale(QString &input, QL
return QValidator::Invalid;
bool ok = false;
- double i = buff.toDouble(&ok); // returns 0.0 if !ok
+ double i = locale.toDouble(input, &ok); // returns 0.0 if !ok
if (i == qt_qnan())
return QValidator::Invalid;
if (!ok)
diff --git a/src/gui/vulkan/qplatformvulkaninstance.cpp b/src/gui/vulkan/qplatformvulkaninstance.cpp
index 9d044bfd58..1b5d3370f0 100644
--- a/src/gui/vulkan/qplatformvulkaninstance.cpp
+++ b/src/gui/vulkan/qplatformvulkaninstance.cpp
@@ -80,6 +80,11 @@ QPlatformVulkanInstance::~QPlatformVulkanInstance()
{
}
+void QPlatformVulkanInstance::presentAboutToBeQueued(QWindow *window)
+{
+ Q_UNUSED(window);
+}
+
void QPlatformVulkanInstance::presentQueued(QWindow *window)
{
Q_UNUSED(window);
diff --git a/src/gui/vulkan/qplatformvulkaninstance.h b/src/gui/vulkan/qplatformvulkaninstance.h
index d47c59b5db..f96f1720fb 100644
--- a/src/gui/vulkan/qplatformvulkaninstance.h
+++ b/src/gui/vulkan/qplatformvulkaninstance.h
@@ -77,6 +77,7 @@ public:
virtual QByteArrayList enabledExtensions() const = 0;
virtual PFN_vkVoidFunction getInstanceProcAddr(const char *name) = 0;
virtual bool supportsPresent(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, QWindow *window) = 0;
+ virtual void presentAboutToBeQueued(QWindow *window);
virtual void presentQueued(QWindow *window);
virtual void setDebugFilters(const QVector<QVulkanInstance::DebugFilter> &filters);
diff --git a/src/gui/vulkan/qvulkaninstance.cpp b/src/gui/vulkan/qvulkaninstance.cpp
index 0605d88cca..4b961a6f20 100644
--- a/src/gui/vulkan/qvulkaninstance.cpp
+++ b/src/gui/vulkan/qvulkaninstance.cpp
@@ -251,7 +251,6 @@ public:
QVulkanInstancePrivate(QVulkanInstance *q)
: q_ptr(q),
vkInst(VK_NULL_HANDLE),
- flags(0),
errorCode(VK_SUCCESS)
{ }
~QVulkanInstancePrivate() { reset(); }
@@ -759,7 +758,7 @@ VkSurfaceKHR QVulkanInstance::surfaceForWindow(QWindow *window)
// VkSurfaceKHR is non-dispatchable and maps to a pointer on x64 and a uint64 on x86.
// Therefore a pointer is returned from the platform plugin, not the value itself.
void *p = nativeInterface->nativeResourceForWindow(QByteArrayLiteral("vkSurface"), window);
- return p ? *static_cast<VkSurfaceKHR *>(p) : 0;
+ return p ? *static_cast<VkSurfaceKHR *>(p) : VK_NULL_HANDLE;
}
/*!
@@ -775,6 +774,20 @@ bool QVulkanInstance::supportsPresent(VkPhysicalDevice physicalDevice, uint32_t
}
/*!
+ This function should be called by the application's renderer before queuing
+ a present operation for \a window.
+
+ While on some platforms this will be a no-op, some may perform windowing
+ system dependent synchronization. For example, on Wayland this will
+ add send a wl_surface.frame request in order to prevent the driver from
+ blocking for minimized windows.
+ */
+void QVulkanInstance::presentAboutToBeQueued(QWindow *window)
+{
+ d_ptr->platformInst->presentAboutToBeQueued(window);
+}
+
+/*!
This function should be called by the application's renderer after queuing
a present operation for \a window.
diff --git a/src/gui/vulkan/qvulkaninstance.h b/src/gui/vulkan/qvulkaninstance.h
index 70f2fd5102..5b3db9a4c8 100644
--- a/src/gui/vulkan/qvulkaninstance.h
+++ b/src/gui/vulkan/qvulkaninstance.h
@@ -186,6 +186,7 @@ public:
bool supportsPresent(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, QWindow *window);
+ void presentAboutToBeQueued(QWindow *window);
void presentQueued(QWindow *window);
typedef bool (*DebugFilter)(VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, uint64_t object,
diff --git a/src/gui/vulkan/qvulkanwindow.cpp b/src/gui/vulkan/qvulkanwindow.cpp
index 4b5c2b56ee..ed73a77683 100644
--- a/src/gui/vulkan/qvulkanwindow.cpp
+++ b/src/gui/vulkan/qvulkanwindow.cpp
@@ -647,18 +647,40 @@ void QVulkanWindowPrivate::init()
#endif
qCDebug(lcGuiVk, "Using queue families: graphics = %u present = %u", gfxQueueFamilyIdx, presQueueFamilyIdx);
- VkDeviceQueueCreateInfo queueInfo[2];
+ QVector<VkDeviceQueueCreateInfo> queueInfo;
+ queueInfo.reserve(2);
const float prio[] = { 0 };
- memset(queueInfo, 0, sizeof(queueInfo));
- queueInfo[0].sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO;
- queueInfo[0].queueFamilyIndex = gfxQueueFamilyIdx;
- queueInfo[0].queueCount = 1;
- queueInfo[0].pQueuePriorities = prio;
+ VkDeviceQueueCreateInfo addQueueInfo;
+ memset(&addQueueInfo, 0, sizeof(addQueueInfo));
+ addQueueInfo.sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO;
+ addQueueInfo.queueFamilyIndex = gfxQueueFamilyIdx;
+ addQueueInfo.queueCount = 1;
+ addQueueInfo.pQueuePriorities = prio;
+ queueInfo.append(addQueueInfo);
if (gfxQueueFamilyIdx != presQueueFamilyIdx) {
- queueInfo[1].sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO;
- queueInfo[1].queueFamilyIndex = presQueueFamilyIdx;
- queueInfo[1].queueCount = 1;
- queueInfo[1].pQueuePriorities = prio;
+ addQueueInfo.queueFamilyIndex = presQueueFamilyIdx;
+ addQueueInfo.queueCount = 1;
+ addQueueInfo.pQueuePriorities = prio;
+ queueInfo.append(addQueueInfo);
+ }
+ if (queueCreateInfoModifier) {
+ queueCreateInfoModifier(queueFamilyProps.constData(), queueCount, queueInfo);
+ bool foundGfxQueue = false;
+ bool foundPresQueue = false;
+ for (const VkDeviceQueueCreateInfo& createInfo : qAsConst(queueInfo)) {
+ foundGfxQueue |= createInfo.queueFamilyIndex == gfxQueueFamilyIdx;
+ foundPresQueue |= createInfo.queueFamilyIndex == presQueueFamilyIdx;
+ }
+ if (!foundGfxQueue) {
+ qWarning("QVulkanWindow: Graphics queue missing after call to queueCreateInfoModifier");
+ status = StatusFail;
+ return;
+ }
+ if (!foundPresQueue) {
+ qWarning("QVulkanWindow: Present queue missing after call to queueCreateInfoModifier");
+ status = StatusFail;
+ return;
+ }
}
// Filter out unsupported extensions in order to keep symmetry
@@ -676,8 +698,8 @@ void QVulkanWindowPrivate::init()
VkDeviceCreateInfo devInfo;
memset(&devInfo, 0, sizeof(devInfo));
devInfo.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO;
- devInfo.queueCreateInfoCount = gfxQueueFamilyIdx == presQueueFamilyIdx ? 1 : 2;
- devInfo.pQueueCreateInfos = queueInfo;
+ devInfo.queueCreateInfoCount = queueInfo.size();
+ devInfo.pQueueCreateInfos = queueInfo.constData();
devInfo.enabledExtensionCount = devExts.count();
devInfo.ppEnabledExtensionNames = devExts.constData();
@@ -1546,6 +1568,52 @@ bool QVulkanWindow::event(QEvent *e)
}
/*!
+ \typedef QVulkanWindow::QueueCreateInfoModifier
+
+ A function function that is called during graphics initialization to add
+ additAional queues that should be created.
+
+ Set if the renderer needs additional queues besides the default graphics
+ queue (e.g. a transfer queue).
+ The provided queue family properties can be used to select the indices for
+ the additional queues.
+ The renderer can subsequently request the actual queue in initResources().
+
+ Note when requesting additional graphics queues: Qt itself always requests
+ a graphics queue, you'll need to search queueCreateInfo for the appropriate
+ entry and manipulate it to obtain the additional queue.
+
+ \sa setQueueCreateInfoModifier()
+ */
+
+/*!
+ Return a previously set queue create info modification function.
+
+ \sa setQueueCreateInfoModifier()
+
+ \since 5.15
+ */
+QVulkanWindow::QueueCreateInfoModifier QVulkanWindow::queueCreateInfoModifier() const
+{
+ Q_D(const QVulkanWindow);
+ return d->queueCreateInfoModifier;
+}
+
+/*!
+ Set a queue create info modification function.
+
+ \sa queueCreateInfoModifier()
+
+ \since 5.15
+ */
+void QVulkanWindow::setQueueCreateInfoModifier(QueueCreateInfoModifier modifier)
+{
+ Q_D(QVulkanWindow);
+ d->queueCreateInfoModifier = modifier;
+}
+
+
+/*!
Returns true if this window has successfully initialized all Vulkan
resources, including the swapchain.
@@ -1798,7 +1866,7 @@ void QVulkanWindowPrivate::beginFrame()
// build new draw command buffer
if (image.cmdBuf) {
devFuncs->vkFreeCommandBuffers(dev, cmdPool, 1, &image.cmdBuf);
- image.cmdBuf = 0;
+ image.cmdBuf = nullptr;
}
VkCommandBufferAllocateInfo cmdBufInfo = {
@@ -1950,6 +2018,10 @@ void QVulkanWindowPrivate::endFrame()
presInfo.waitSemaphoreCount = 1;
presInfo.pWaitSemaphores = gfxQueueFamilyIdx == presQueueFamilyIdx ? &frame.drawSem : &frame.presTransSem;
+ // Do platform-specific WM notification. F.ex. essential on Wayland in
+ // order to circumvent driver frame callbacks
+ inst->presentAboutToBeQueued(q);
+
err = vkQueuePresentKHR(gfxQueue, &presInfo);
if (err != VK_SUCCESS) {
if (err == VK_ERROR_OUT_OF_DATE_KHR) {
@@ -2211,6 +2283,23 @@ VkQueue QVulkanWindow::graphicsQueue() const
}
/*!
+ Returns the family index of the active graphics queue.
+
+ \note Calling this function is only valid from the invocation of
+ QVulkanWindowRenderer::initResources() up until
+ QVulkanWindowRenderer::releaseResources(). Implementations of
+ QVulkanWindowRenderer::updateQueueCreateInfo() can also call this
+ function.
+
+ \since 5.15
+ */
+uint32_t QVulkanWindow::graphicsQueueFamilyIndex() const
+{
+ Q_D(const QVulkanWindow);
+ return d->gfxQueueFamilyIdx;
+}
+
+/*!
Returns the active graphics command pool.
\note Calling this function is only valid from the invocation of
diff --git a/src/gui/vulkan/qvulkanwindow.h b/src/gui/vulkan/qvulkanwindow.h
index 927c81042f..530b6c0744 100644
--- a/src/gui/vulkan/qvulkanwindow.h
+++ b/src/gui/vulkan/qvulkanwindow.h
@@ -103,6 +103,12 @@ public:
QVector<int> supportedSampleCounts();
void setSampleCount(int sampleCount);
+ typedef std::function<void(const VkQueueFamilyProperties *,
+ uint32_t,
+ QVector<VkDeviceQueueCreateInfo> &)> QueueCreateInfoModifier;
+ QueueCreateInfoModifier queueCreateInfoModifier() const;
+ void setQueueCreateInfoModifier(QueueCreateInfoModifier modifier);
+
bool isValid() const;
virtual QVulkanWindowRenderer *createRenderer();
@@ -112,6 +118,7 @@ public:
const VkPhysicalDeviceProperties *physicalDeviceProperties() const;
VkDevice device() const;
VkQueue graphicsQueue() const;
+ uint32_t graphicsQueueFamilyIndex() const;
VkCommandPool graphicsCommandPool() const;
uint32_t hostVisibleMemoryIndex() const;
uint32_t deviceLocalMemoryIndex() const;
diff --git a/src/gui/vulkan/qvulkanwindow_p.h b/src/gui/vulkan/qvulkanwindow_p.h
index fb374a5564..915e359673 100644
--- a/src/gui/vulkan/qvulkanwindow_p.h
+++ b/src/gui/vulkan/qvulkanwindow_p.h
@@ -97,11 +97,12 @@ public:
int physDevIndex = 0;
QVector<VkPhysicalDevice> physDevs;
QVector<VkPhysicalDeviceProperties> physDevProps;
- QVulkanWindow::Flags flags = nullptr;
+ QVulkanWindow::Flags flags;
QByteArrayList requestedDevExtensions;
QHash<VkPhysicalDevice, QVulkanInfoVector<QVulkanExtension> > supportedDevExtensions;
QVector<VkFormat> requestedColorFormats;
VkSampleCountFlagBits sampleCount = VK_SAMPLE_COUNT_1_BIT;
+ QVulkanWindow::QueueCreateInfoModifier queueCreateInfoModifier;
VkDevice dev = VK_NULL_HANDLE;
QVulkanDeviceFunctions *devFuncs;
diff --git a/src/network/access/qabstractprotocolhandler.cpp b/src/network/access/qabstractprotocolhandler.cpp
index f15dfe6899..6847816ba7 100644
--- a/src/network/access/qabstractprotocolhandler.cpp
+++ b/src/network/access/qabstractprotocolhandler.cpp
@@ -43,7 +43,7 @@
QT_BEGIN_NAMESPACE
QAbstractProtocolHandler::QAbstractProtocolHandler(QHttpNetworkConnectionChannel *channel)
- : m_channel(channel), m_reply(0), m_socket(m_channel->socket), m_connection(m_channel->connection)
+ : m_channel(channel), m_reply(nullptr), m_socket(m_channel->socket), m_connection(m_channel->connection)
{
Q_ASSERT(m_channel);
Q_ASSERT(m_socket);
diff --git a/src/network/access/qftp.cpp b/src/network/access/qftp.cpp
index cc230a5411..62ae1adbd9 100644
--- a/src/network/access/qftp.cpp
+++ b/src/network/access/qftp.cpp
@@ -74,7 +74,7 @@ public:
CsConnectionRefused
};
- QFtpDTP(QFtpPI *p, QObject *parent = 0);
+ QFtpDTP(QFtpPI *p, QObject *parent = nullptr);
void setData(QByteArray *);
void setDevice(QIODevice *);
@@ -149,7 +149,7 @@ class QFtpPI : public QObject
Q_OBJECT
public:
- QFtpPI(QObject *parent = 0);
+ QFtpPI(QObject *parent = nullptr);
void connectToHost(const QString &host, quint16 port);
@@ -229,7 +229,7 @@ class QFtpCommand
{
public:
QFtpCommand(QFtp::Command cmd, const QStringList &raw, const QByteArray &ba);
- QFtpCommand(QFtp::Command cmd, const QStringList &raw, QIODevice *dev = 0);
+ QFtpCommand(QFtp::Command cmd, const QStringList &raw, QIODevice *dev = nullptr);
~QFtpCommand();
int id;
@@ -279,7 +279,7 @@ QFtpCommand::~QFtpCommand()
*********************************************************************/
QFtpDTP::QFtpDTP(QFtpPI *p, QObject *parent) :
QObject(parent),
- socket(0),
+ socket(nullptr),
listener(this),
pi(p),
callWriteData(false)
@@ -314,7 +314,7 @@ void QFtpDTP::connectToHost(const QString & host, quint16 port)
if (socket) {
delete socket;
- socket = 0;
+ socket = nullptr;
}
socket = new QTcpSocket(this);
#ifndef QT_NO_BEARERMANAGEMENT
@@ -427,7 +427,7 @@ void QFtpDTP::writeData()
}
// do we continue uploading?
- callWriteData = data.dev != 0;
+ callWriteData = data.dev != nullptr;
}
}
@@ -779,7 +779,7 @@ void QFtpDTP::setupSocket()
void QFtpDTP::clearData()
{
is_ba = false;
- data.dev = 0;
+ data.dev = nullptr;
}
/**********************************************************************
@@ -792,7 +792,7 @@ QFtpPI::QFtpPI(QObject *parent) :
rawCommand(false),
transferConnectionExtended(true),
dtp(this),
- commandSocket(0),
+ commandSocket(nullptr),
state(Begin), abortState(None),
currentCmd(QString()),
waitForDtpToConnect(false),
@@ -2173,10 +2173,10 @@ QFtp::Command QFtp::currentCommand() const
QIODevice* QFtp::currentDevice() const
{
if (d_func()->pending.isEmpty())
- return 0;
+ return nullptr;
QFtpCommand *c = d_func()->pending.first();
if (c->is_ba)
- return 0;
+ return nullptr;
return c->data.dev;
}
diff --git a/src/network/access/qhttpmultipart.cpp b/src/network/access/qhttpmultipart.cpp
index c59df9d8b8..d6fefc4314 100644
--- a/src/network/access/qhttpmultipart.cpp
+++ b/src/network/access/qhttpmultipart.cpp
@@ -111,7 +111,7 @@ QHttpPart::QHttpPart(const QHttpPart &other) : d(other.d)
*/
QHttpPart::~QHttpPart()
{
- d = 0;
+ d = nullptr;
}
/*!
diff --git a/src/network/access/qhttpnetworkconnection.cpp b/src/network/access/qhttpnetworkconnection.cpp
index 21c6359807..b9a4c874c0 100644
--- a/src/network/access/qhttpnetworkconnection.cpp
+++ b/src/network/access/qhttpnetworkconnection.cpp
@@ -382,9 +382,9 @@ void QHttpNetworkConnectionPrivate::emitReplyError(QAbstractSocket *socket,
// Clean the channel
channels[i].close();
- channels[i].reply = 0;
+ channels[i].reply = nullptr;
if (channels[i].protocolHandler)
- channels[i].protocolHandler->setReply(0);
+ channels[i].protocolHandler->setReply(nullptr);
channels[i].request = QHttpNetworkRequest();
if (socket)
channels[i].requeueCurrentlyPipelinedRequests();
@@ -408,7 +408,7 @@ void QHttpNetworkConnectionPrivate::copyCredentials(int fromChannel, QAuthentica
}
// select another channel
- QAuthenticator* otherAuth = 0;
+ QAuthenticator* otherAuth = nullptr;
for (int i = 0; i < activeChannelCount; ++i) {
if (i == fromChannel)
continue;
@@ -441,7 +441,7 @@ bool QHttpNetworkConnectionPrivate::handleAuthenticateChallenge(QAbstractSocket
if (authMethod != QAuthenticatorPrivate::None) {
int i = indexOf(socket);
//Use a single authenticator for all domains. ### change later to use domain/realm
- QAuthenticator* auth = 0;
+ QAuthenticator* auth = nullptr;
if (isProxy) {
auth = &channels[i].proxyAuthenticator;
channels[i].proxyAuthMethod = authMethod;
@@ -496,7 +496,7 @@ bool QHttpNetworkConnectionPrivate::handleAuthenticateChallenge(QAbstractSocket
// we need to bail out if authentication is required.
if (priv->phase == QAuthenticatorPrivate::Done || !reply->request().withCredentials()) {
// Reset authenticator so the next request on that channel does not get messed up
- auth = 0;
+ auth = nullptr;
if (isProxy)
channels[i].proxyAuthenticator = QAuthenticator();
else
@@ -766,7 +766,7 @@ void QHttpNetworkConnectionPrivate::fillPipeline(QAbstractSocket *socket)
int i = indexOf(socket);
// return fast if there was no reply right now processed
- if (channels[i].reply == 0)
+ if (channels[i].reply == nullptr)
return;
if (! (defaultPipelineLength - channels[i].alreadyPipelinedRequests.length() >= defaultRePipelineLength)) {
@@ -937,9 +937,9 @@ void QHttpNetworkConnectionPrivate::removeReply(QHttpNetworkReply *reply)
for (int i = 0; i < activeChannelCount; ++i) {
// is the reply associated the currently processing of this channel?
if (channels[i].reply == reply) {
- channels[i].reply = 0;
+ channels[i].reply = nullptr;
if (channels[i].protocolHandler)
- channels[i].protocolHandler->setReply(0);
+ channels[i].protocolHandler->setReply(nullptr);
channels[i].request = QHttpNetworkRequest();
channels[i].resendCurrent = false;
diff --git a/src/network/access/qhttpnetworkconnectionchannel.cpp b/src/network/access/qhttpnetworkconnectionchannel.cpp
index 39f392a79b..47081b29d2 100644
--- a/src/network/access/qhttpnetworkconnectionchannel.cpp
+++ b/src/network/access/qhttpnetworkconnectionchannel.cpp
@@ -87,11 +87,11 @@ private:
static const int reconnectAttemptsDefault = 3;
QHttpNetworkConnectionChannel::QHttpNetworkConnectionChannel()
- : socket(0)
+ : socket(nullptr)
, ssl(false)
, isInitialized(false)
, state(IdleState)
- , reply(0)
+ , reply(nullptr)
, written(0)
, bytesTotal(0)
, resendCurrent(false)
@@ -102,13 +102,13 @@ QHttpNetworkConnectionChannel::QHttpNetworkConnectionChannel()
, proxyAuthMethod(QAuthenticatorPrivate::None)
, authenticationCredentialsSent(false)
, proxyCredentialsSent(false)
- , protocolHandler(0)
+ , protocolHandler(nullptr)
#ifndef QT_NO_SSL
, ignoreAllSslErrors(false)
#endif
, pipeliningSupported(PipeliningSupportUnknown)
, networkLayerPreference(QAbstractSocket::AnyIPProtocol)
- , connection(0)
+ , connection(nullptr)
{
// Inlining this function in the header leads to compiler error on
// release-armv5, on at least timebox 9.2 and 10.1.
@@ -295,9 +295,9 @@ void QHttpNetworkConnectionChannel::handleUnexpectedEOF()
close();
reply->d_func()->errorString = connection->d_func()->errorDetail(QNetworkReply::RemoteHostClosedError, socket);
emit reply->finishedWithError(QNetworkReply::RemoteHostClosedError, reply->d_func()->errorString);
- reply = 0;
+ reply = nullptr;
if (protocolHandler)
- protocolHandler->setReply(0);
+ protocolHandler->setReply(nullptr);
request = QHttpNetworkRequest();
QMetaObject::invokeMethod(connection, "_q_startNextRequest", Qt::QueuedConnection);
} else {
@@ -526,8 +526,8 @@ void QHttpNetworkConnectionChannel::allDone()
// problem.
if (!resendCurrent) {
request = QHttpNetworkRequest();
- reply = 0;
- protocolHandler->setReply(0);
+ reply = nullptr;
+ protocolHandler->setReply(nullptr);
}
// move next from pipeline to current request
@@ -1100,9 +1100,9 @@ void QHttpNetworkConnectionChannel::_q_error(QAbstractSocket::SocketError socket
if (reply) {
reply->d_func()->errorString = errorString;
emit reply->finishedWithError(errorCode, errorString);
- reply = 0;
+ reply = nullptr;
if (protocolHandler)
- protocolHandler->setReply(0);
+ protocolHandler->setReply(nullptr);
}
} while (!connection->d_func()->highPriorityQueue.isEmpty()
|| !connection->d_func()->lowPriorityQueue.isEmpty());
diff --git a/src/network/access/qhttpnetworkreply.cpp b/src/network/access/qhttpnetworkreply.cpp
index a8b635c45a..af456c3607 100644
--- a/src/network/access/qhttpnetworkreply.cpp
+++ b/src/network/access/qhttpnetworkreply.cpp
@@ -330,12 +330,12 @@ QHttpNetworkReplyPrivate::QHttpNetworkReplyPrivate(const QUrl &newUrl)
currentlyUploadedDataInWindow(0),
totallyUploadedData(0),
removedContentLength(-1),
- connection(0),
+ connection(nullptr),
autoDecompress(false), responseData(), requestIsPrepared(false)
,pipeliningUsed(false), spdyUsed(false), downstreamLimited(false)
- ,userProvidedDownloadBuffer(0)
+ ,userProvidedDownloadBuffer(nullptr)
#ifndef QT_NO_COMPRESS
- ,inflateStrm(0)
+ ,inflateStrm(nullptr)
#endif
{
@@ -375,8 +375,8 @@ void QHttpNetworkReplyPrivate::clearHttpLayerInformation()
// TODO: Isn't everything HTTP layer related? We don't need to set connection and connectionChannel to 0 at all
void QHttpNetworkReplyPrivate::clear()
{
- connection = 0;
- connectionChannel = 0;
+ connection = nullptr;
+ connectionChannel = nullptr;
autoDecompress = false;
clearHttpLayerInformation();
}
diff --git a/src/network/access/qhttpnetworkrequest.cpp b/src/network/access/qhttpnetworkrequest.cpp
index a3f71b8d2f..5fb8885bdf 100644
--- a/src/network/access/qhttpnetworkrequest.cpp
+++ b/src/network/access/qhttpnetworkrequest.cpp
@@ -44,7 +44,7 @@ QT_BEGIN_NAMESPACE
QHttpNetworkRequestPrivate::QHttpNetworkRequestPrivate(QHttpNetworkRequest::Operation op,
QHttpNetworkRequest::Priority pri, const QUrl &newUrl)
- : QHttpNetworkHeaderPrivate(newUrl), operation(op), priority(pri), uploadByteDevice(0),
+ : QHttpNetworkHeaderPrivate(newUrl), operation(op), priority(pri), uploadByteDevice(nullptr),
autoDecompress(false), pipeliningAllowed(false), spdyAllowed(false), http2Allowed(false),
http2Direct(false), withCredentials(true), preConnect(false), redirectCount(0),
redirectPolicy(QNetworkRequest::ManualRedirectPolicy)
diff --git a/src/network/access/qhttpprotocolhandler.cpp b/src/network/access/qhttpprotocolhandler.cpp
index edcbdcbe0e..d39589fb96 100644
--- a/src/network/access/qhttpprotocolhandler.cpp
+++ b/src/network/access/qhttpprotocolhandler.cpp
@@ -278,7 +278,7 @@ bool QHttpProtocolHandler::sendRequest()
m_reply->d_func()->state = QHttpNetworkReplyPrivate::AllDoneState;
m_channel->allDone();
m_connection->preConnectFinished(); // will only decrease the counter
- m_reply = 0; // so we can reuse this channel
+ m_reply = nullptr; // so we can reuse this channel
return true; // we have a working connection and are done
}
@@ -373,7 +373,7 @@ bool QHttpProtocolHandler::sendRequest()
// premature eof happened
m_connection->d_func()->emitReplyError(m_socket, m_reply, QNetworkReply::UnknownNetworkError);
return false;
- } else if (readPointer == 0 || currentReadSize == 0) {
+ } else if (readPointer == nullptr || currentReadSize == 0) {
// nothing to read currently, break the loop
break;
} else {
diff --git a/src/network/access/qhttpthreaddelegate.cpp b/src/network/access/qhttpthreaddelegate.cpp
index 63a3c4f204..f3125a3a95 100644
--- a/src/network/access/qhttpthreaddelegate.cpp
+++ b/src/network/access/qhttpthreaddelegate.cpp
@@ -189,7 +189,7 @@ public:
QNetworkAccessCachedHttpConnection(const QString &hostName, quint16 port, bool encrypt,
QHttpNetworkConnection::ConnectionType connectionType,
QSharedPointer<QNetworkSession> networkSession)
- : QHttpNetworkConnection(hostName, port, encrypt, connectionType, /*parent=*/0,
+ : QHttpNetworkConnection(hostName, port, encrypt, connectionType, /*parent=*/nullptr,
std::move(networkSession))
#endif
{
@@ -241,9 +241,9 @@ QHttpThreadDelegate::QHttpThreadDelegate(QObject *parent) :
, removedContentLength(-1)
, incomingErrorCode(QNetworkReply::NoError)
, downloadBuffer()
- , httpConnection(0)
- , httpReply(0)
- , synchronousRequestLoop(0)
+ , httpConnection(nullptr)
+ , httpReply(nullptr)
+ , synchronousRequestLoop(nullptr)
{
}
@@ -439,7 +439,7 @@ void QHttpThreadDelegate::abortRequest()
if (httpReply) {
httpReply->abort();
delete httpReply;
- httpReply = 0;
+ httpReply = nullptr;
}
// Got aborted by the timeout timer
@@ -545,7 +545,7 @@ void QHttpThreadDelegate::finishedSlot()
QMetaObject::invokeMethod(httpReply, "deleteLater", Qt::QueuedConnection);
QMetaObject::invokeMethod(this, "deleteLater", Qt::QueuedConnection);
- httpReply = 0;
+ httpReply = nullptr;
}
void QHttpThreadDelegate::synchronousFinishedSlot()
@@ -568,7 +568,7 @@ void QHttpThreadDelegate::synchronousFinishedSlot()
QMetaObject::invokeMethod(httpReply, "deleteLater", Qt::QueuedConnection);
QMetaObject::invokeMethod(synchronousRequestLoop, "quit", Qt::QueuedConnection);
- httpReply = 0;
+ httpReply = nullptr;
}
void QHttpThreadDelegate::finishedWithErrorSlot(QNetworkReply::NetworkError errorCode, const QString &detail)
@@ -590,7 +590,7 @@ void QHttpThreadDelegate::finishedWithErrorSlot(QNetworkReply::NetworkError erro
QMetaObject::invokeMethod(httpReply, "deleteLater", Qt::QueuedConnection);
QMetaObject::invokeMethod(this, "deleteLater", Qt::QueuedConnection);
- httpReply = 0;
+ httpReply = nullptr;
}
@@ -609,7 +609,7 @@ void QHttpThreadDelegate::synchronousFinishedWithErrorSlot(QNetworkReply::Networ
QMetaObject::invokeMethod(httpReply, "deleteLater", Qt::QueuedConnection);
QMetaObject::invokeMethod(synchronousRequestLoop, "quit", Qt::QueuedConnection);
- httpReply = 0;
+ httpReply = nullptr;
}
static void downloadBufferDeleter(char *ptr)
diff --git a/src/network/access/qnetworkaccessauthenticationmanager.cpp b/src/network/access/qnetworkaccessauthenticationmanager.cpp
index b661cc45b3..0df11684b1 100644
--- a/src/network/access/qnetworkaccessauthenticationmanager.cpp
+++ b/src/network/access/qnetworkaccessauthenticationmanager.cpp
@@ -71,7 +71,7 @@ public:
if (it == end() && !isEmpty())
--it;
if (it == end() || !domain.startsWith(it->domain))
- return 0;
+ return nullptr;
return &*it;
}
diff --git a/src/network/access/qnetworkaccessbackend.cpp b/src/network/access/qnetworkaccessbackend.cpp
index 566e410051..8f42f3690b 100644
--- a/src/network/access/qnetworkaccessbackend.cpp
+++ b/src/network/access/qnetworkaccessbackend.cpp
@@ -105,7 +105,7 @@ QNetworkAccessBackend *QNetworkAccessManagerPrivate::findBackend(QNetworkAccessM
++it;
}
}
- return 0;
+ return nullptr;
}
QStringList QNetworkAccessManagerPrivate::backendSupportedSchemes() const
@@ -131,7 +131,7 @@ QNonContiguousByteDevice* QNetworkAccessBackend::createUploadByteDevice()
else if (reply->outgoingData) {
uploadByteDevice = QNonContiguousByteDeviceFactory::createShared(reply->outgoingData);
} else {
- return 0;
+ return nullptr;
}
// We want signal emissions only for normal asynchronous uploads
@@ -151,8 +151,8 @@ void QNetworkAccessBackend::emitReplyUploadProgress(qint64 bytesSent, qint64 byt
}
QNetworkAccessBackend::QNetworkAccessBackend()
- : manager(0)
- , reply(0)
+ : manager(nullptr)
+ , reply(nullptr)
, synchronous(false)
{
}
@@ -223,7 +223,7 @@ QList<QNetworkProxy> QNetworkAccessBackend::proxyList() const
QAbstractNetworkCache *QNetworkAccessBackend::networkCache() const
{
if (!manager)
- return 0;
+ return nullptr;
return manager->networkCache;
}
diff --git a/src/network/access/qnetworkaccesscache.cpp b/src/network/access/qnetworkaccesscache.cpp
index b694a2c999..ba092f2618 100644
--- a/src/network/access/qnetworkaccesscache.cpp
+++ b/src/network/access/qnetworkaccesscache.cpp
@@ -73,7 +73,7 @@ struct QNetworkAccessCache::Node
int useCount;
Node()
- : older(0), newer(0), object(0), useCount(0)
+ : older(nullptr), newer(nullptr), object(nullptr), useCount(0)
{ }
};
@@ -103,7 +103,7 @@ void QNetworkAccessCache::CacheableObject::setShareable(bool enable)
}
QNetworkAccessCache::QNetworkAccessCache()
- : oldest(0), newest(0)
+ : oldest(nullptr), newest(nullptr)
{
}
@@ -130,7 +130,7 @@ void QNetworkAccessCache::clear()
timer.stop();
- oldest = newest = 0;
+ oldest = newest = nullptr;
}
/*!
@@ -145,11 +145,11 @@ void QNetworkAccessCache::linkEntry(const QByteArray &key)
Node *const node = &it.value();
Q_ASSERT(node != oldest && node != newest);
- Q_ASSERT(node->older == 0 && node->newer == 0);
+ Q_ASSERT(node->older == nullptr && node->newer == nullptr);
Q_ASSERT(node->useCount == 0);
if (newest) {
- Q_ASSERT(newest->newer == 0);
+ Q_ASSERT(newest->newer == nullptr);
newest->newer = node;
node->older = newest;
}
@@ -186,7 +186,7 @@ bool QNetworkAccessCache::unlinkEntry(const QByteArray &key)
if (node->newer)
node->newer->older = node->older;
- node->newer = node->older = 0;
+ node->newer = node->older = nullptr;
return wasOldest;
}
@@ -235,9 +235,9 @@ void QNetworkAccessCache::timerEvent(QTimerEvent *)
// fixup the list
if (oldest)
- oldest->older = 0;
+ oldest->older = nullptr;
else
- newest = 0;
+ newest = nullptr;
updateTimer();
}
@@ -277,7 +277,7 @@ bool QNetworkAccessCache::requestEntry(const QByteArray &key, QObject *target, c
if (node->useCount > 0 && !node->object->shareable) {
// object is not shareable and is in use
// queue for later use
- Q_ASSERT(node->older == 0 && node->newer == 0);
+ Q_ASSERT(node->older == nullptr && node->newer == nullptr);
node->receiverQueue.push_back({target, member});
// request queued
@@ -296,7 +296,7 @@ QNetworkAccessCache::CacheableObject *QNetworkAccessCache::requestEntryNow(const
{
NodeHash::Iterator it = hash.find(key);
if (it == hash.end())
- return 0;
+ return nullptr;
if (it->useCount > 0) {
if (it->object->shareable) {
++it->useCount;
@@ -304,7 +304,7 @@ QNetworkAccessCache::CacheableObject *QNetworkAccessCache::requestEntryNow(const
}
// object in use and not shareable
- return 0;
+ return nullptr;
}
// entry not in use, let the caller have it
diff --git a/src/network/access/qnetworkaccessdebugpipebackend.cpp b/src/network/access/qnetworkaccessdebugpipebackend.cpp
index 67a856506c..03ffc69628 100644
--- a/src/network/access/qnetworkaccessdebugpipebackend.cpp
+++ b/src/network/access/qnetworkaccessdebugpipebackend.cpp
@@ -70,13 +70,13 @@ QNetworkAccessDebugPipeBackendFactory::create(QNetworkAccessManager::Operation o
default:
// no, we can't handle this operation
- return 0;
+ return nullptr;
}
QUrl url = request.url();
if (url.scheme() == QLatin1String("debugpipe"))
return new QNetworkAccessDebugPipeBackend;
- return 0;
+ return nullptr;
}
QNetworkAccessDebugPipeBackend::QNetworkAccessDebugPipeBackend()
@@ -188,7 +188,7 @@ void QNetworkAccessDebugPipeBackend::pushFromUpstreamToSocket()
emitReplyUploadProgress(bytesUploaded, bytesUploaded);
possiblyFinish();
break;
- } else if (haveRead == 0 || readPointer == 0) {
+ } else if (haveRead == 0 || readPointer == nullptr) {
// nothing to read right now, we will be called again later
break;
} else {
diff --git a/src/network/access/qnetworkaccessfilebackend.cpp b/src/network/access/qnetworkaccessfilebackend.cpp
index 60353cb03e..507417f86c 100644
--- a/src/network/access/qnetworkaccessfilebackend.cpp
+++ b/src/network/access/qnetworkaccessfilebackend.cpp
@@ -73,7 +73,7 @@ QNetworkAccessFileBackendFactory::create(QNetworkAccessManager::Operation op,
default:
// no, we can't handle this operation
- return 0;
+ return nullptr;
}
QUrl url = request.url();
@@ -95,7 +95,7 @@ QNetworkAccessFileBackendFactory::create(QNetworkAccessManager::Operation op,
return new QNetworkAccessFileBackend;
}
- return 0;
+ return nullptr;
}
QNetworkAccessFileBackend::QNetworkAccessFileBackend()
@@ -198,7 +198,7 @@ void QNetworkAccessFileBackend::uploadReadyReadSlot()
file.close();
finished();
break;
- } else if (haveRead == 0 || readPointer == 0) {
+ } else if (haveRead == 0 || readPointer == nullptr) {
// nothing to read right now, we will be called again later
break;
} else {
diff --git a/src/network/access/qnetworkaccessftpbackend.cpp b/src/network/access/qnetworkaccessftpbackend.cpp
index 51ed2f5a55..fb8cd79c12 100644
--- a/src/network/access/qnetworkaccessftpbackend.cpp
+++ b/src/network/access/qnetworkaccessftpbackend.cpp
@@ -75,13 +75,13 @@ QNetworkAccessFtpBackendFactory::create(QNetworkAccessManager::Operation op,
default:
// no, we can't handle this operation
- return 0;
+ return nullptr;
}
QUrl url = request.url();
if (url.scheme().compare(QLatin1String("ftp"), Qt::CaseInsensitive) == 0)
return new QNetworkAccessFtpBackend;
- return 0;
+ return nullptr;
}
class QNetworkAccessCachedFtpConnection: public QFtp, public QNetworkAccessCache::CacheableObject
@@ -104,7 +104,7 @@ public:
};
QNetworkAccessFtpBackend::QNetworkAccessFtpBackend()
- : ftp(0), uploadDevice(0), totalBytes(0), helpId(-1), sizeId(-1), mdtmId(-1), pwdId(-1),
+ : ftp(nullptr), uploadDevice(nullptr), totalBytes(0), helpId(-1), sizeId(-1), mdtmId(-1), pwdId(-1),
supportsSize(false), supportsMdtm(false), supportsPwd(false), state(Idle)
{
}
@@ -215,7 +215,7 @@ void QNetworkAccessFtpBackend::disconnectFromFtp(CacheCleanupMode mode)
state = Disconnecting;
if (ftp) {
- disconnect(ftp, 0, this, 0);
+ disconnect(ftp, nullptr, this, nullptr);
QByteArray key = makeCacheKey(url());
if (mode == RemoveCachedConnection) {
@@ -225,7 +225,7 @@ void QNetworkAccessFtpBackend::disconnectFromFtp(CacheCleanupMode mode)
QNetworkAccessManagerPrivate::getObjectCache(this)->releaseEntry(key);
}
- ftp = 0;
+ ftp = nullptr;
}
}
@@ -362,7 +362,7 @@ void QNetworkAccessFtpBackend::ftpDone()
QFtp::TransferType type = QFtp::Binary;
if (operation() == QNetworkAccessManager::GetOperation) {
setCachingEnabled(true);
- ftp->get(url().path(), 0, type);
+ ftp->get(url().path(), nullptr, type);
} else {
ftp->put(uploadDevice, url().path(), type);
}
diff --git a/src/network/access/qnetworkaccessmanager.cpp b/src/network/access/qnetworkaccessmanager.cpp
index 76b95b5823..ff916ff283 100644
--- a/src/network/access/qnetworkaccessmanager.cpp
+++ b/src/network/access/qnetworkaccessmanager.cpp
@@ -1240,7 +1240,7 @@ void QNetworkAccessManager::connectToHostEncrypted(const QString &hostName, quin
// There is no way to enable SPDY/HTTP2 via a request, so we need to check
// the ssl configuration whether SPDY/HTTP2 is allowed here.
if (sslConfiguration.allowedNextProtocols().contains(QSslConfiguration::ALPNProtocolHTTP2))
- request.setAttribute(QNetworkRequest::HTTP2AllowedAttribute, true);
+ request.setAttribute(QNetworkRequest::Http2AllowedAttribute, true);
else if (sslConfiguration.allowedNextProtocols().contains(QSslConfiguration::NextProtocolSpdy3_0))
request.setAttribute(QNetworkRequest::SpdyAllowedAttribute, true);
@@ -1404,6 +1404,11 @@ QNetworkReply *QNetworkAccessManager::createRequest(QNetworkAccessManager::Opera
req.setAttribute(QNetworkRequest::RedirectPolicyAttribute, redirectPolicy());
}
+#if QT_CONFIG(http)
+ if (!req.transferTimeout())
+ req.setTransferTimeout(transferTimeout());
+#endif
+
if (autoDeleteReplies()
&& req.attribute(QNetworkRequest::AutoDeleteReplyOnFinishAttribute).isNull()) {
req.setAttribute(QNetworkRequest::AutoDeleteReplyOnFinishAttribute, true);
@@ -1713,6 +1718,41 @@ void QNetworkAccessManager::setAutoDeleteReplies(bool shouldAutoDelete)
d_func()->autoDeleteReplies = shouldAutoDelete;
}
+/*!
+ \since 5.15
+
+ Returns the timeout used for transfers, in milliseconds.
+
+ This timeout is zero if setTransferTimeout() hasn't been
+ called, which means that the timeout is not used.
+*/
+int QNetworkAccessManager::transferTimeout() const
+{
+ return d_func()->transferTimeout;
+}
+
+/*!
+ \since 5.15
+
+ Sets \a timeout as the transfer timeout in milliseconds.
+
+ Transfers are aborted if no bytes are transferred before
+ the timeout expires. Zero means no timer is set. If no
+ argument is provided, the timeout is
+ QNetworkRequest::TransferTimeoutPreset. If this function
+ is not called, the timeout is disabled and has the
+ value zero. The request-specific non-zero timeouts set for
+ the requests that are executed override this value. This means
+ that if QNetworkAccessManager has an enabled timeout, it needs
+ to be disabled to execute a request without a timeout.
+
+ \sa transferTimeout()
+*/
+void QNetworkAccessManager::setTransferTimeout(int timeout)
+{
+ d_func()->transferTimeout = timeout;
+}
+
void QNetworkAccessManagerPrivate::_q_replyFinished()
{
Q_Q(QNetworkAccessManager);
@@ -1941,7 +1981,7 @@ void QNetworkAccessManagerPrivate::destroyThread()
{
if (thread) {
thread->quit();
- thread->wait(5000);
+ thread->wait(QDeadlineTimer(5000));
if (thread->isFinished())
delete thread;
else
diff --git a/src/network/access/qnetworkaccessmanager.h b/src/network/access/qnetworkaccessmanager.h
index 98498d07d2..aa4765a043 100644
--- a/src/network/access/qnetworkaccessmanager.h
+++ b/src/network/access/qnetworkaccessmanager.h
@@ -170,6 +170,9 @@ public:
bool autoDeleteReplies() const;
void setAutoDeleteReplies(bool autoDelete);
+ int transferTimeout() const;
+ void setTransferTimeout(int timeout = QNetworkRequest::TransferTimeoutPreset);
+
Q_SIGNALS:
#ifndef QT_NO_NETWORKPROXY
void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator);
diff --git a/src/network/access/qnetworkaccessmanager_p.h b/src/network/access/qnetworkaccessmanager_p.h
index 67ea2094b3..d558f61eed 100644
--- a/src/network/access/qnetworkaccessmanager_p.h
+++ b/src/network/access/qnetworkaccessmanager_p.h
@@ -229,6 +229,8 @@ public:
bool autoDeleteReplies = false;
+ int transferTimeout = 0;
+
#ifndef QT_NO_BEARERMANAGEMENT
Q_AUTOTEST_EXPORT static const QWeakPointer<const QNetworkSession> getNetworkSession(const QNetworkAccessManager *manager);
#endif
diff --git a/src/network/access/qnetworkcookie.cpp b/src/network/access/qnetworkcookie.cpp
index 903de322ff..47f6112b22 100644
--- a/src/network/access/qnetworkcookie.cpp
+++ b/src/network/access/qnetworkcookie.cpp
@@ -131,7 +131,7 @@ QNetworkCookie::QNetworkCookie(const QNetworkCookie &other)
QNetworkCookie::~QNetworkCookie()
{
// QSharedDataPointer auto deletes
- d = 0;
+ d = nullptr;
}
/*!
diff --git a/src/network/access/qnetworkdiskcache.cpp b/src/network/access/qnetworkdiskcache.cpp
index df2e4902a4..b30d1c9664 100644
--- a/src/network/access/qnetworkdiskcache.cpp
+++ b/src/network/access/qnetworkdiskcache.cpp
@@ -180,11 +180,11 @@ QIODevice *QNetworkDiskCache::prepare(const QNetworkCacheMetaData &metaData)
#endif
Q_D(QNetworkDiskCache);
if (!metaData.isValid() || !metaData.url().isValid() || !metaData.saveToDisk())
- return 0;
+ return nullptr;
if (d->cacheDirectory.isEmpty()) {
qWarning("QNetworkDiskCache::prepare() The cache directory is not set");
- return 0;
+ return nullptr;
}
const auto headers = metaData.rawHeaders();
@@ -192,14 +192,14 @@ QIODevice *QNetworkDiskCache::prepare(const QNetworkCacheMetaData &metaData)
if (header.first.compare("content-length", Qt::CaseInsensitive) == 0) {
const qint64 size = header.second.toLongLong();
if (size > (maximumCacheSize() * 3)/4)
- return 0;
+ return nullptr;
break;
}
}
QScopedPointer<QCacheItem> cacheItem(new QCacheItem);
cacheItem->metaData = metaData;
- QIODevice *device = 0;
+ QIODevice *device = nullptr;
if (cacheItem->canCompress()) {
cacheItem->data.open(QBuffer::ReadWrite);
device = &(cacheItem->data);
@@ -208,12 +208,12 @@ QIODevice *QNetworkDiskCache::prepare(const QNetworkCacheMetaData &metaData)
QT_TRY {
cacheItem->file = new QTemporaryFile(templateName, &cacheItem->data);
} QT_CATCH(...) {
- cacheItem->file = 0;
+ cacheItem->file = nullptr;
}
if (!cacheItem->file || !cacheItem->file->open()) {
qWarning("QNetworkDiskCache::prepare() unable to open temporary file");
cacheItem.reset();
- return 0;
+ return nullptr;
}
cacheItem->writeHeader(cacheItem->file);
device = cacheItem->file;
@@ -397,19 +397,19 @@ QIODevice *QNetworkDiskCache::data(const QUrl &url)
Q_D(QNetworkDiskCache);
QScopedPointer<QBuffer> buffer;
if (!url.isValid())
- return 0;
+ return nullptr;
if (d->lastItem.metaData.url() == url && d->lastItem.data.isOpen()) {
buffer.reset(new QBuffer);
buffer->setData(d->lastItem.data.data());
} else {
QScopedPointer<QFile> file(new QFile(d->cacheFileName(url)));
if (!file->open(QFile::ReadOnly | QIODevice::Unbuffered))
- return 0;
+ return nullptr;
if (!d->lastItem.read(file.data(), true)) {
file->close();
remove(url);
- return 0;
+ return nullptr;
}
if (d->lastItem.data.isOpen()) {
// compressed
@@ -419,7 +419,7 @@ QIODevice *QNetworkDiskCache::data(const QUrl &url)
buffer.reset(new QBuffer);
// ### verify that QFile uses the fd size and not the file name
qint64 size = file->size() - file->pos();
- const uchar *p = 0;
+ const uchar *p = nullptr;
#if !defined(Q_OS_INTEGRITY)
p = file->map(file->pos(), size);
#endif
@@ -557,7 +557,7 @@ qint64 QNetworkDiskCache::expire()
for (QCacheItem *item : qAsConst(d->inserting)) {
if (item && item->file && item->file->fileName() == name) {
delete item->file;
- item->file = 0;
+ item->file = nullptr;
break;
}
}
diff --git a/src/network/access/qnetworkreplyfileimpl.cpp b/src/network/access/qnetworkreplyfileimpl.cpp
index ef319ebf0d..afab8ffd94 100644
--- a/src/network/access/qnetworkreplyfileimpl.cpp
+++ b/src/network/access/qnetworkreplyfileimpl.cpp
@@ -50,7 +50,7 @@
QT_BEGIN_NAMESPACE
QNetworkReplyFileImplPrivate::QNetworkReplyFileImplPrivate()
- : QNetworkReplyPrivate(), managerPrivate(0), realFile(0)
+ : QNetworkReplyPrivate(), managerPrivate(nullptr), realFile(nullptr)
{
qRegisterMetaType<QNetworkRequest::KnownHeaders>();
qRegisterMetaType<QNetworkReply::NetworkError>();
diff --git a/src/network/access/qnetworkreplyhttpimpl.cpp b/src/network/access/qnetworkreplyhttpimpl.cpp
index 8ac81d1780..ba9d0a76d5 100644
--- a/src/network/access/qnetworkreplyhttpimpl.cpp
+++ b/src/network/access/qnetworkreplyhttpimpl.cpp
@@ -461,6 +461,7 @@ QNetworkReplyHttpImplPrivate::QNetworkReplyHttpImplPrivate()
, preMigrationDownloaded(-1)
, bytesDownloaded(0)
, bytesBuffered(0)
+ , transferTimeout(nullptr)
, downloadBufferReadPosition(0)
, downloadBufferCurrentSize(0)
, downloadZerocopyBuffer(nullptr)
@@ -777,7 +778,7 @@ void QNetworkReplyHttpImplPrivate::postRequest(const QNetworkRequest &newHttpReq
if (request.attribute(QNetworkRequest::SpdyAllowedAttribute).toBool())
httpRequest.setSPDYAllowed(true);
- if (request.attribute(QNetworkRequest::HTTP2AllowedAttribute).toBool())
+ if (request.attribute(QNetworkRequest::Http2AllowedAttribute).toBool())
httpRequest.setHTTP2Allowed(true);
if (request.attribute(QNetworkRequest::Http2DirectAttribute).toBool()) {
@@ -985,7 +986,7 @@ void QNetworkReplyHttpImplPrivate::postRequest(const QNetworkRequest &newHttpReq
}
thread->quit();
- thread->wait(5000);
+ thread->wait(QDeadlineTimer(5000));
if (thread->isFinished())
delete thread;
else
@@ -1067,6 +1068,7 @@ void QNetworkReplyHttpImplPrivate::replyDownloadData(QByteArray d)
if (!isHttpRedirectResponse()) {
buffer.append(d);
bytesDownloaded += d.size();
+ setupTransferTimeout();
}
bytesBuffered += d.size();
@@ -1280,15 +1282,15 @@ void QNetworkReplyHttpImplPrivate::replyDownloadMetaData(const QList<QPair<QByte
}
q->setAttribute(QNetworkRequest::HttpPipeliningWasUsedAttribute, pu);
- const QVariant http2Allowed = request.attribute(QNetworkRequest::HTTP2AllowedAttribute);
+ const QVariant http2Allowed = request.attribute(QNetworkRequest::Http2AllowedAttribute);
const QVariant http2Direct = request.attribute(QNetworkRequest::Http2DirectAttribute);
if ((http2Allowed.isValid() && http2Allowed.toBool())
|| (http2Direct.isValid() && http2Direct.toBool())) {
- q->setAttribute(QNetworkRequest::HTTP2WasUsedAttribute, spdyWasUsed);
+ q->setAttribute(QNetworkRequest::Http2WasUsedAttribute, spdyWasUsed);
q->setAttribute(QNetworkRequest::SpdyWasUsedAttribute, false);
} else {
q->setAttribute(QNetworkRequest::SpdyWasUsedAttribute, spdyWasUsed);
- q->setAttribute(QNetworkRequest::HTTP2WasUsedAttribute, false);
+ q->setAttribute(QNetworkRequest::Http2WasUsedAttribute, false);
}
// reconstruct the HTTP header
@@ -1401,6 +1403,7 @@ void QNetworkReplyHttpImplPrivate::replyDownloadProgressSlot(qint64 bytesReceive
return;
bytesDownloaded = bytesReceived;
+ setupTransferTimeout();
downloadBufferCurrentSize = bytesReceived;
@@ -1857,7 +1860,6 @@ bool QNetworkReplyHttpImplPrivate::startWaitForSession(QSharedPointer<QNetworkSe
void QNetworkReplyHttpImplPrivate::_q_startOperation()
{
Q_Q(QNetworkReplyHttpImpl);
-
if (state == Working) // ensure this function is only being called once
return;
@@ -1897,6 +1899,7 @@ void QNetworkReplyHttpImplPrivate::_q_startOperation()
}
#endif // QT_NO_BEARERMANAGEMENT
+ setupTransferTimeout();
if (synchronous) {
state = Finished;
q_func()->setFinished(true);
@@ -2033,6 +2036,31 @@ void QNetworkReplyHttpImplPrivate::_q_bufferOutgoingData()
}
}
+void QNetworkReplyHttpImplPrivate::_q_transferTimedOut()
+{
+ Q_Q(QNetworkReplyHttpImpl);
+ q->abort();
+}
+
+void QNetworkReplyHttpImplPrivate::setupTransferTimeout()
+{
+ Q_Q(QNetworkReplyHttpImpl);
+ if (!transferTimeout) {
+ transferTimeout = new QTimer(q);
+ QObject::connect(transferTimeout, SIGNAL(timeout()),
+ q, SLOT(_q_transferTimedOut()),
+ Qt::QueuedConnection);
+ }
+ transferTimeout->stop();
+ if (request.transferTimeout()) {
+ transferTimeout->setSingleShot(true);
+ transferTimeout->setInterval(request.transferTimeout());
+ QMetaObject::invokeMethod(transferTimeout, "start",
+ Qt::QueuedConnection);
+
+ }
+}
+
#ifndef QT_NO_BEARERMANAGEMENT
void QNetworkReplyHttpImplPrivate::_q_networkSessionConnected()
{
@@ -2115,6 +2143,8 @@ void QNetworkReplyHttpImplPrivate::emitReplyUploadProgress(qint64 bytesSent, qin
if (isFinished)
return;
+ setupTransferTimeout();
+
if (!emitAllUploadProgressSignals) {
//choke signal emissions, except the first and last signals which are unconditional
if (uploadProgressSignalChoke.isValid()) {
@@ -2126,7 +2156,6 @@ void QNetworkReplyHttpImplPrivate::emitReplyUploadProgress(qint64 bytesSent, qin
uploadProgressSignalChoke.start();
}
}
-
emit q->uploadProgress(bytesSent, bytesTotal);
}
@@ -2159,7 +2188,8 @@ void QNetworkReplyHttpImplPrivate::_q_finished()
void QNetworkReplyHttpImplPrivate::finished()
{
Q_Q(QNetworkReplyHttpImpl);
-
+ if (transferTimeout)
+ transferTimeout->stop();
if (state == Finished || state == Aborted || state == WaitingForSession)
return;
diff --git a/src/network/access/qnetworkreplyhttpimpl_p.h b/src/network/access/qnetworkreplyhttpimpl_p.h
index ef69ce0653..dec0c4c589 100644
--- a/src/network/access/qnetworkreplyhttpimpl_p.h
+++ b/src/network/access/qnetworkreplyhttpimpl_p.h
@@ -59,6 +59,7 @@
#include "QtCore/qdatetime.h"
#include "QtCore/qsharedpointer.h"
#include "QtCore/qscopedpointer.h"
+#include "QtCore/qtimer.h"
#include "qatomic.h"
#include <QtNetwork/QNetworkCacheMetaData>
@@ -100,6 +101,7 @@ public:
Q_PRIVATE_SLOT(d_func(), void _q_cacheLoadReadyRead())
Q_PRIVATE_SLOT(d_func(), void _q_bufferOutgoingData())
Q_PRIVATE_SLOT(d_func(), void _q_bufferOutgoingDataFinished())
+ Q_PRIVATE_SLOT(d_func(), void _q_transferTimedOut())
#ifndef QT_NO_BEARERMANAGEMENT
Q_PRIVATE_SLOT(d_func(), void _q_networkSessionConnected())
Q_PRIVATE_SLOT(d_func(), void _q_networkSessionFailed())
@@ -181,6 +183,9 @@ public:
void _q_cacheSaveDeviceAboutToClose();
+ void _q_transferTimedOut();
+ void setupTransferTimeout();
+
#ifndef QT_NO_BEARERMANAGEMENT
void _q_networkSessionConnected();
void _q_networkSessionFailed();
@@ -250,6 +255,8 @@ public:
qint64 bytesDownloaded;
qint64 bytesBuffered;
+ QTimer *transferTimeout;
+
// Only used when the "zero copy" style is used.
// Please note that the whole "zero copy" download buffer API is private right now. Do not use it.
qint64 downloadBufferReadPosition;
diff --git a/src/network/access/qnetworkreplyimpl.cpp b/src/network/access/qnetworkreplyimpl.cpp
index 6eab500e8c..a43a29a239 100644
--- a/src/network/access/qnetworkreplyimpl.cpp
+++ b/src/network/access/qnetworkreplyimpl.cpp
@@ -53,9 +53,9 @@
QT_BEGIN_NAMESPACE
inline QNetworkReplyImplPrivate::QNetworkReplyImplPrivate()
- : backend(0), outgoingData(0),
- copyDevice(0),
- cacheEnabled(false), cacheSaveDevice(0),
+ : backend(nullptr), outgoingData(nullptr),
+ copyDevice(nullptr),
+ cacheEnabled(false), cacheSaveDevice(nullptr),
notificationHandlingPaused(false),
bytesDownloaded(0), lastBytesDownloaded(-1), bytesUploaded(-1), preMigrationDownloaded(-1),
httpStatusCode(0),
@@ -63,7 +63,7 @@ inline QNetworkReplyImplPrivate::QNetworkReplyImplPrivate()
, downloadBufferReadPosition(0)
, downloadBufferCurrentSize(0)
, downloadBufferMaximumSize(0)
- , downloadBuffer(0)
+ , downloadBuffer(nullptr)
{
if (request.attribute(QNetworkRequest::EmitAllUploadProgressSignalsAttribute).toBool() == true)
emitAllUploadProgressSignals = true;
@@ -489,7 +489,7 @@ void QNetworkReplyImplPrivate::resumeNotificationHandling()
QAbstractNetworkCache *QNetworkReplyImplPrivate::networkCache() const
{
if (!backend)
- return 0;
+ return nullptr;
return backend->networkCache();
}
@@ -504,7 +504,7 @@ void QNetworkReplyImplPrivate::createCache()
bool QNetworkReplyImplPrivate::isCachingEnabled() const
{
- return (cacheEnabled && networkCache() != 0);
+ return (cacheEnabled && networkCache() != nullptr);
}
void QNetworkReplyImplPrivate::setCachingEnabled(bool enable)
@@ -529,7 +529,7 @@ void QNetworkReplyImplPrivate::setCachingEnabled(bool enable)
"backend %s probably needs to be fixed",
backend->metaObject()->className());
networkCache()->remove(url);
- cacheSaveDevice = 0;
+ cacheSaveDevice = nullptr;
cacheEnabled = false;
}
}
@@ -541,7 +541,7 @@ void QNetworkReplyImplPrivate::completeCacheSave()
} else if (cacheEnabled && cacheSaveDevice) {
networkCache()->insert(cacheSaveDevice);
}
- cacheSaveDevice = 0;
+ cacheSaveDevice = nullptr;
cacheEnabled = false;
}
@@ -610,7 +610,7 @@ void QNetworkReplyImplPrivate::initCacheSaveDevice()
networkCache()->metaObject()->className());
networkCache()->remove(url);
- cacheSaveDevice = 0;
+ cacheSaveDevice = nullptr;
cacheEnabled = false;
}
}
@@ -927,9 +927,9 @@ void QNetworkReplyImpl::abort()
// stop both upload and download
if (d->outgoingData)
- disconnect(d->outgoingData, 0, this, 0);
+ disconnect(d->outgoingData, nullptr, this, nullptr);
if (d->copyDevice)
- disconnect(d->copyDevice, 0, this, 0);
+ disconnect(d->copyDevice, nullptr, this, nullptr);
QNetworkReply::close();
@@ -943,7 +943,7 @@ void QNetworkReplyImpl::abort()
// finished may access the backend
if (d->backend) {
d->backend->deleteLater();
- d->backend = 0;
+ d->backend = nullptr;
}
}
@@ -958,7 +958,7 @@ void QNetworkReplyImpl::close()
if (d->backend)
d->backend->closeDownstreamChannel();
if (d->copyDevice)
- disconnect(d->copyDevice, 0, this, 0);
+ disconnect(d->copyDevice, nullptr, this, nullptr);
QNetworkReply::close();
diff --git a/src/network/access/qnetworkrequest.cpp b/src/network/access/qnetworkrequest.cpp
index 118fb6b1fb..70b09dba22 100644
--- a/src/network/access/qnetworkrequest.cpp
+++ b/src/network/access/qnetworkrequest.cpp
@@ -277,23 +277,30 @@ QT_BEGIN_NAMESPACE
Indicates whether the QNetworkAccessManager code is
allowed to use SPDY with this request. This applies only
to SSL requests, and depends on the server supporting SPDY.
+ Obsolete, use Http2 instead of Spdy.
\value SpdyWasUsedAttribute
Replies only, type: QMetaType::Bool
Indicates whether SPDY was used for receiving
- this reply.
+ this reply. Obsolete, use Http2 instead of Spdy.
- \value HTTP2AllowedAttribute
+ \value Http2AllowedAttribute
Requests only, type: QMetaType::Bool (default: false)
Indicates whether the QNetworkAccessManager code is
allowed to use HTTP/2 with this request. This applies
to SSL requests or 'cleartext' HTTP/2.
- \value HTTP2WasUsedAttribute
+ \value Http2WasUsedAttribute
Replies only, type: QMetaType::Bool (default: false)
Indicates whether HTTP/2 was used for receiving this reply.
(This value was introduced in 5.9.)
+ \value HTTP2AllowedAttribute
+ Obsolete alias for Http2AllowedAttribute.
+
+ \value HTTP2WasUsedAttribute
+ Obsolete alias for Http2WasUsedAttribute.
+
\value EmitAllUploadProgressSignalsAttribute
Requests only, type: QMetaType::Bool (default: false)
Indicates whether all upload signals should be emitted.
@@ -329,7 +336,7 @@ QT_BEGIN_NAMESPACE
server supports HTTP/2. The attribute works with SSL or 'cleartext'
HTTP/2. If a server turns out to not support HTTP/2, when HTTP/2 direct
was specified, QNetworkAccessManager gives up, without attempting to
- fall back to HTTP/1.1. If both HTTP2AllowedAttribute and
+ fall back to HTTP/1.1. If both Http2AllowedAttribute and
Http2DirectAttribute are set, Http2DirectAttribute takes priority.
(This value was introduced in 5.11.)
@@ -418,6 +425,18 @@ QT_BEGIN_NAMESPACE
based on some app-specific configuration.
*/
+/*!
+ \enum QNetworkRequest::TransferTimeoutConstant
+ \since 5.15
+
+ A constant that can be used for enabling transfer
+ timeouts with a preset value.
+
+ \value TransferTimeoutPreset The transfer timeout in milliseconds.
+ Used if setTimeout() is called
+ without an argument.
+ */
+
class QNetworkRequestPrivate: public QSharedData, public QNetworkHeadersPrivate
{
public:
@@ -425,9 +444,10 @@ public:
inline QNetworkRequestPrivate()
: priority(QNetworkRequest::NormalPriority)
#ifndef QT_NO_SSL
- , sslConfiguration(0)
+ , sslConfiguration(nullptr)
#endif
, maxRedirectsAllowed(maxRedirectCount)
+ , transferTimeout(0)
{ qRegisterMetaType<QNetworkRequest>(); }
~QNetworkRequestPrivate()
{
@@ -444,7 +464,7 @@ public:
priority = other.priority;
maxRedirectsAllowed = other.maxRedirectsAllowed;
#ifndef QT_NO_SSL
- sslConfiguration = 0;
+ sslConfiguration = nullptr;
if (other.sslConfiguration)
sslConfiguration = new QSslConfiguration(*other.sslConfiguration);
#endif
@@ -452,6 +472,7 @@ public:
#if QT_CONFIG(http)
h2Configuration = other.h2Configuration;
#endif
+ transferTimeout = other.transferTimeout;
}
inline bool operator==(const QNetworkRequestPrivate &other) const
@@ -465,6 +486,7 @@ public:
#if QT_CONFIG(http)
&& h2Configuration == other.h2Configuration
#endif
+ && transferTimeout == other.transferTimeout
;
// don't compare cookedHeaders
}
@@ -479,6 +501,7 @@ public:
#if QT_CONFIG(http)
QHttp2Configuration h2Configuration;
#endif
+ int transferTimeout;
};
/*!
@@ -527,7 +550,7 @@ QNetworkRequest::QNetworkRequest(const QNetworkRequest &other)
QNetworkRequest::~QNetworkRequest()
{
// QSharedDataPointer auto deletes
- d = 0;
+ d = nullptr;
}
/*!
@@ -902,6 +925,40 @@ void QNetworkRequest::setHttp2Configuration(const QHttp2Configuration &configura
{
d->h2Configuration = configuration;
}
+
+/*!
+ \since 5.15
+
+ Returns the timeout used for transfers, in milliseconds.
+
+ This timeout is zero if setTransferTimeout hasn't been
+ called, which means that the timeout is not used.
+
+ \sa setTransferTimeout
+*/
+int QNetworkRequest::transferTimeout() const
+{
+ return d->transferTimeout;
+}
+
+/*!
+ \since 5.15
+
+ Sets \a timeout as the transfer timeout in milliseconds.
+
+ Transfers are aborted if no bytes are transferred before
+ the timeout expires. Zero means no timer is set. If no
+ argument is provided, the timeout is
+ QNetworkRequest::TransferTimeoutPreset. If this function
+ is not called, the timeout is disabled and has the
+ value zero.
+
+ \sa transferTimeout
+*/
+void QNetworkRequest::setTransferTimeout(int timeout)
+{
+ d->transferTimeout = timeout;
+}
#endif // QT_CONFIG(http) || defined(Q_CLANG_QDOC)
static QByteArray headerName(QNetworkRequest::KnownHeaders header)
diff --git a/src/network/access/qnetworkrequest.h b/src/network/access/qnetworkrequest.h
index e09ff8aaae..dcd2c6b61f 100644
--- a/src/network/access/qnetworkrequest.h
+++ b/src/network/access/qnetworkrequest.h
@@ -89,12 +89,18 @@ public:
DownloadBufferAttribute, // internal
SynchronousRequestAttribute, // internal
BackgroundRequestAttribute,
+#if QT_DEPRECATED_SINCE(5, 15)
SpdyAllowedAttribute,
SpdyWasUsedAttribute,
- EmitAllUploadProgressSignalsAttribute,
+#endif // QT_DEPRECATED_SINCE(5, 15)
+ EmitAllUploadProgressSignalsAttribute = BackgroundRequestAttribute + 3,
FollowRedirectsAttribute,
- HTTP2AllowedAttribute,
- HTTP2WasUsedAttribute,
+ Http2AllowedAttribute,
+ Http2WasUsedAttribute,
+#if QT_DEPRECATED_SINCE(5, 15)
+ HTTP2AllowedAttribute Q_DECL_ENUMERATOR_DEPRECATED_X("Use Http2AllowedAttribute") = Http2AllowedAttribute,
+ HTTP2WasUsedAttribute Q_DECL_ENUMERATOR_DEPRECATED_X("Use Http2WasUsedAttribute"),
+#endif // QT_DEPRECATED_SINCE(5, 15)
OriginalContentLengthAttribute,
RedirectPolicyAttribute,
Http2DirectAttribute,
@@ -128,6 +134,9 @@ public:
UserVerifiedRedirectPolicy
};
+ enum TransferTimeoutConstant {
+ TransferTimeoutPreset = 30000
+ };
QNetworkRequest();
explicit QNetworkRequest(const QUrl &url);
@@ -179,6 +188,9 @@ public:
#if QT_CONFIG(http) || defined(Q_CLANG_QDOC)
QHttp2Configuration http2Configuration() const;
void setHttp2Configuration(const QHttp2Configuration &configuration);
+
+ int transferTimeout() const;
+ void setTransferTimeout(int timeout = TransferTimeoutPreset);
#endif // QT_CONFIG(http) || defined(Q_CLANG_QDOC)
private:
QSharedDataPointer<QNetworkRequestPrivate> d;
diff --git a/src/network/access/qspdyprotocolhandler.cpp b/src/network/access/qspdyprotocolhandler.cpp
index f845235bf7..eef8df288d 100644
--- a/src/network/access/qspdyprotocolhandler.cpp
+++ b/src/network/access/qspdyprotocolhandler.cpp
@@ -254,7 +254,7 @@ static const char spdyDictionary[] = {
//}
QSpdyProtocolHandler::QSpdyProtocolHandler(QHttpNetworkConnectionChannel *channel)
- : QObject(0), QAbstractProtocolHandler(channel),
+ : QObject(nullptr), QAbstractProtocolHandler(channel),
m_nextStreamID(-1),
m_maxConcurrentStreams(100), // 100 is recommended in the SPDY RFC
m_initialWindowSize(0),
@@ -613,7 +613,7 @@ void QSpdyProtocolHandler::sendSYN_STREAM(const HttpMessagePair &messagePair,
QHttpNetworkRequest request = messagePair.first;
QHttpNetworkReply *reply = messagePair.second;
- ControlFrameFlags flags = 0;
+ ControlFrameFlags flags;
if (!request.uploadByteDevice()) {
// no upload -> this is the last frame, send the FIN flag
@@ -675,14 +675,14 @@ void QSpdyProtocolHandler::sendRST_STREAM(qint32 streamID, RST_STREAM_STATUS_COD
char wireData[8];
appendIntToFourBytes(wireData, streamID);
appendIntToFourBytes(wireData + 4, statusCode);
- sendControlFrame(FrameType_RST_STREAM, /* flags = */ 0, wireData, /* length = */ 8);
+ sendControlFrame(FrameType_RST_STREAM, /* flags = */ { }, wireData, /* length = */ 8);
}
void QSpdyProtocolHandler::sendPING(quint32 pingID)
{
char rawData[4];
appendIntToFourBytes(rawData, pingID);
- sendControlFrame(FrameType_PING, /* flags = */ 0, rawData, /* length = */ 4);
+ sendControlFrame(FrameType_PING, /* flags = */ { }, rawData, /* length = */ 4);
}
bool QSpdyProtocolHandler::uploadData(qint32 streamID)
@@ -720,11 +720,11 @@ bool QSpdyProtocolHandler::uploadData(qint32 streamID)
m_connection->d_func()->emitReplyError(m_socket, reply,
QNetworkReply::UnknownNetworkError);
return false;
- } else if (readPointer == 0 || currentReadSize == 0) {
+ } else if (readPointer == nullptr || currentReadSize == 0) {
// nothing to read currently, break the loop
break;
} else {
- DataFrameFlags flags = 0;
+ DataFrameFlags flags;
// we will send the FIN flag later if appropriate
qint64 currentWriteSize = sendDataFrame(streamID, flags, currentReadSize, readPointer);
if (currentWriteSize == -1 || currentWriteSize != currentReadSize) {
@@ -746,7 +746,7 @@ bool QSpdyProtocolHandler::uploadData(qint32 streamID)
}
if (replyPrivate->totallyUploadedData == request.contentLength()) {
DataFrameFlags finFlag = DataFrame_FLAG_FIN;
- qint64 writeSize = sendDataFrame(streamID, finFlag, 0, 0);
+ qint64 writeSize = sendDataFrame(streamID, finFlag, 0, nullptr);
Q_ASSERT(writeSize == 0);
Q_UNUSED(writeSize); // silence -Wunused-variable
replyPrivate->state = QHttpNetworkReplyPrivate::SPDYHalfClosed;
@@ -774,7 +774,7 @@ void QSpdyProtocolHandler::sendWINDOW_UPDATE(qint32 streamID, quint32 deltaWindo
appendIntToFourBytes(windowUpdateData, streamID);
appendIntToFourBytes(windowUpdateData + 4, deltaWindowSize);
- sendControlFrame(FrameType_WINDOW_UPDATE, /* flags = */ 0, windowUpdateData, /* length = */ 8);
+ sendControlFrame(FrameType_WINDOW_UPDATE, /* flags = */ { }, windowUpdateData, /* length = */ 8);
}
qint64 QSpdyProtocolHandler::sendDataFrame(qint32 streamID, DataFrameFlags flags,
@@ -892,7 +892,7 @@ void QSpdyProtocolHandler::parseHttpHeaders(char flags, const QByteArray &frameD
HttpMessagePair pair = it.value();
QHttpNetworkReply *httpReply = pair.second;
- Q_ASSERT(httpReply != 0);
+ Q_ASSERT(httpReply != nullptr);
if (httpReply->d_func()->state == QHttpNetworkReplyPrivate::SPDYClosed) {
sendRST_STREAM(streamID, RST_STREAM_STREAM_ALREADY_CLOSED);
@@ -950,7 +950,7 @@ void QSpdyProtocolHandler::parseHttpHeaders(char flags, const QByteArray &frameD
if (flag_fin) {
if (httpReply->d_func()->state != QHttpNetworkReplyPrivate::SPDYHalfClosed)
- sendDataFrame(streamID, DataFrame_FLAG_FIN, 0, 0);
+ sendDataFrame(streamID, DataFrame_FLAG_FIN, 0, nullptr);
replyFinished(httpReply, streamID);
}
}
@@ -1199,7 +1199,7 @@ void QSpdyProtocolHandler::handleDataFrame(const QByteArray &frameHeaders)
HttpMessagePair pair = it.value();
QHttpNetworkRequest httpRequest = pair.first;
QHttpNetworkReply *httpReply = pair.second;
- Q_ASSERT(httpReply != 0);
+ Q_ASSERT(httpReply != nullptr);
QHttpNetworkReplyPrivate *replyPrivate = httpReply->d_func();
@@ -1261,7 +1261,7 @@ void QSpdyProtocolHandler::handleDataFrame(const QByteArray &frameHeaders)
if (flag_fin) {
if (httpReply->d_func()->state != QHttpNetworkReplyPrivate::SPDYHalfClosed)
- sendDataFrame(streamID, DataFrame_FLAG_FIN, 0, 0);
+ sendDataFrame(streamID, DataFrame_FLAG_FIN, 0, nullptr);
replyFinished(httpReply, streamID);
}
}
diff --git a/src/network/bearer/qnetworkconfigmanager.cpp b/src/network/bearer/qnetworkconfigmanager.cpp
index cd87c3669c..751735c8bd 100644
--- a/src/network/bearer/qnetworkconfigmanager.cpp
+++ b/src/network/bearer/qnetworkconfigmanager.cpp
@@ -68,7 +68,7 @@ static void connManager_cleanup()
int shutdown = appShutdown.fetchAndStoreAcquire(1);
Q_ASSERT(shutdown == 0);
Q_UNUSED(shutdown);
- QNetworkConfigurationManagerPrivate *cmp = connManager_ptr.fetchAndStoreAcquire(0);
+ QNetworkConfigurationManagerPrivate *cmp = connManager_ptr.fetchAndStoreAcquire(nullptr);
if (cmp)
cmp->cleanup();
}
@@ -355,7 +355,7 @@ QNetworkConfigurationManager::Capabilities QNetworkConfigurationManager::capabil
if (priv)
return priv->capabilities();
- return QNetworkConfigurationManager::Capabilities(0);
+ return {};
}
/*!
diff --git a/src/network/bearer/qnetworkconfigmanager_p.cpp b/src/network/bearer/qnetworkconfigmanager_p.cpp
index b432444669..f0aa452dd3 100644
--- a/src/network/bearer/qnetworkconfigmanager_p.cpp
+++ b/src/network/bearer/qnetworkconfigmanager_p.cpp
@@ -59,7 +59,7 @@
QT_BEGIN_NAMESPACE
QNetworkConfigurationManagerPrivate::QNetworkConfigurationManagerPrivate()
- : QObject(), pollTimer(0),
+ : QObject(), pollTimer(nullptr),
loader(QBearerEngineFactoryInterface_iid, QLatin1String("/bearer")),
forcedPolling(0), firstUpdate(true)
{
@@ -93,7 +93,7 @@ void QNetworkConfigurationManagerPrivate::cleanup()
{
QThread* thread = bearerThread;
deleteLater();
- if (thread->wait(5000))
+ if (thread->wait(QDeadlineTimer(5000)))
delete thread;
}
@@ -367,7 +367,7 @@ void QNetworkConfigurationManagerPrivate::updateConfigurations()
bool envOK = false;
const int skipGeneric = qEnvironmentVariableIntValue("QT_EXCLUDE_GENERIC_BEARER", &envOK);
- QBearerEngine *generic = 0;
+ QBearerEngine *generic = nullptr;
QFactoryLoader *l = &loader;
const PluginKeyMap keyMap = l->keyMap();
const PluginKeyMapConstIterator cend = keyMap.constEnd();
diff --git a/src/network/bearer/qnetworkconfiguration.cpp b/src/network/bearer/qnetworkconfiguration.cpp
index 19bc44e02a..25c4ab711e 100644
--- a/src/network/bearer/qnetworkconfiguration.cpp
+++ b/src/network/bearer/qnetworkconfiguration.cpp
@@ -209,7 +209,7 @@ QT_BEGIN_NAMESPACE
\sa isValid()
*/
QNetworkConfiguration::QNetworkConfiguration()
- : d(0)
+ : d(nullptr)
{
}
diff --git a/src/network/bearer/qnetworksession.cpp b/src/network/bearer/qnetworksession.cpp
index 1636bcee97..324016d72a 100644
--- a/src/network/bearer/qnetworksession.cpp
+++ b/src/network/bearer/qnetworksession.cpp
@@ -250,7 +250,7 @@ QT_BEGIN_NAMESPACE
\sa QNetworkConfiguration
*/
QNetworkSession::QNetworkSession(const QNetworkConfiguration &connectionConfig, QObject *parent)
- : QObject(parent), d(0)
+ : QObject(parent), d(nullptr)
{
qRegisterMetaType<QNetworkSession::State>();
qRegisterMetaType<QNetworkSession::SessionError>();
diff --git a/src/network/configure.json b/src/network/configure.json
index f501465c91..6bc71469dc 100644
--- a/src/network/configure.json
+++ b/src/network/configure.json
@@ -61,11 +61,11 @@
"export": "openssl",
"test": {
"tail": [
- "#if !defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER-0 < 0x10000000L",
- "# error OpenSSL >= 1.0.0 is required",
+ "#if !defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER-0 < 0x10100000L",
+ "# error OpenSSL >= 1.1.0 is required",
"#endif",
- "#if OPENSSL_VERSION_NUMBER-0 >= 0x10002000L && !defined(OPENSSL_NO_EC) && !defined(SSL_CTRL_SET_CURVES)",
- "# error OpenSSL was reported as >= 1.0.2 but is missing required features, possibly it's libressl which is unsupported",
+ "#if !defined(OPENSSL_NO_EC) && !defined(SSL_CTRL_SET_CURVES)",
+ "# error OpenSSL was reported as >= 1.1.0 but is missing required features, possibly it's libressl which is unsupported",
"#endif"
]
},
@@ -185,19 +185,6 @@
},
"use": "network"
},
- "openssl11": {
- "label": "OpenSSL 1.1 support",
- "type": "compile",
- "test": {
- "include": "openssl/opensslv.h",
- "tail": [
- "#if !defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER-0 < 0x10100000L",
- "# error OpenSSL >= 1.1 is required",
- "#endif"
- ]
- },
- "use": "openssl"
- },
"dtls": {
"label": "DTLS support in OpenSSL",
"type": "compile",
@@ -335,7 +322,7 @@
},
"opensslv11": {
"label": "OpenSSL 1.1",
- "condition": "features.openssl && tests.openssl11",
+ "condition": "features.openssl",
"output": [ "publicFeature" ]
},
"sctp": {
diff --git a/src/network/kernel/qauthenticator.cpp b/src/network/kernel/qauthenticator.cpp
index 33a30eb1cd..e9a8e2a9e5 100644
--- a/src/network/kernel/qauthenticator.cpp
+++ b/src/network/kernel/qauthenticator.cpp
@@ -158,7 +158,7 @@ static QByteArray qGssapiContinue(QAuthenticatorPrivate *ctx,
Constructs an empty authentication object.
*/
QAuthenticator::QAuthenticator()
- : d(0)
+ : d(nullptr)
{
}
@@ -175,7 +175,7 @@ QAuthenticator::~QAuthenticator()
Constructs a copy of \a other.
*/
QAuthenticator::QAuthenticator(const QAuthenticator &other)
- : d(0)
+ : d(nullptr)
{
if (other.d)
*this = other;
@@ -1227,7 +1227,7 @@ QByteArray qEncodeHmacMd5(QByteArray &key, const QByteArray &message)
static QByteArray qCreatev2Hash(const QAuthenticatorPrivate *ctx,
QNtlmPhase3Block *phase3)
{
- Q_ASSERT(phase3 != 0);
+ Q_ASSERT(phase3 != nullptr);
// since v2 Hash is need for both NTLMv2 and LMv2 it is calculated
// only once and stored and reused
if(phase3->v2Hash.size() == 0) {
@@ -1284,7 +1284,7 @@ static QByteArray qEncodeNtlmv2Response(const QAuthenticatorPrivate *ctx,
const QNtlmPhase2Block& ch,
QNtlmPhase3Block *phase3)
{
- Q_ASSERT(phase3 != 0);
+ Q_ASSERT(phase3 != nullptr);
// return value stored in phase3
qCreatev2Hash(ctx, phase3);
@@ -1351,7 +1351,7 @@ static QByteArray qEncodeLmv2Response(const QAuthenticatorPrivate *ctx,
const QNtlmPhase2Block& ch,
QNtlmPhase3Block *phase3)
{
- Q_ASSERT(phase3 != 0);
+ Q_ASSERT(phase3 != nullptr);
// return value stored in phase3
qCreatev2Hash(ctx, phase3);
diff --git a/src/network/kernel/qdnslookup.cpp b/src/network/kernel/qdnslookup.cpp
index 1b66829070..ab1be02b6b 100644
--- a/src/network/kernel/qdnslookup.cpp
+++ b/src/network/kernel/qdnslookup.cpp
@@ -481,7 +481,7 @@ void QDnsLookup::abort()
{
Q_D(QDnsLookup);
if (d->runnable) {
- d->runnable = 0;
+ d->runnable = nullptr;
d->reply = QDnsLookupReply();
d->reply.error = QDnsLookup::OperationCancelledError;
d->reply.errorString = tr("Operation cancelled");
@@ -992,7 +992,7 @@ void QDnsLookupPrivate::_q_lookupFinished(const QDnsLookupReply &_reply)
qDebug("DNS reply for %s: %i (%s)", qPrintable(name), _reply.error, qPrintable(_reply.errorString));
#endif
reply = _reply;
- runnable = 0;
+ runnable = nullptr;
isFinished = true;
emit q->finished();
}
diff --git a/src/network/kernel/qdnslookup_unix.cpp b/src/network/kernel/qdnslookup_unix.cpp
index ee7484ab35..12b40fc35d 100644
--- a/src/network/kernel/qdnslookup_unix.cpp
+++ b/src/network/kernel/qdnslookup_unix.cpp
@@ -73,13 +73,13 @@ QT_BEGIN_NAMESPACE
typedef struct __res_state* res_state;
#endif
typedef int (*dn_expand_proto)(const unsigned char *, const unsigned char *, const unsigned char *, char *, int);
-static dn_expand_proto local_dn_expand = 0;
+static dn_expand_proto local_dn_expand = nullptr;
typedef void (*res_nclose_proto)(res_state);
-static res_nclose_proto local_res_nclose = 0;
+static res_nclose_proto local_res_nclose = nullptr;
typedef int (*res_ninit_proto)(res_state);
-static res_ninit_proto local_res_ninit = 0;
+static res_ninit_proto local_res_ninit = nullptr;
typedef int (*res_nquery_proto)(res_state, const char *, int, int, unsigned char *, int);
-static res_nquery_proto local_res_nquery = 0;
+static res_nquery_proto local_res_nquery = nullptr;
// Custom deleter to close resolver state.
diff --git a/src/network/kernel/qhostaddress.cpp b/src/network/kernel/qhostaddress.cpp
index b54fb349fb..ed1c23ed6e 100644
--- a/src/network/kernel/qhostaddress.cpp
+++ b/src/network/kernel/qhostaddress.cpp
@@ -144,7 +144,7 @@ static bool parseIp6(const QString &address, QIPAddressUtils::IPv6Address &addr,
} else {
scopeId->clear();
}
- return QIPAddressUtils::parseIp6(addr, tmp.constBegin(), tmp.constEnd()) == 0;
+ return QIPAddressUtils::parseIp6(addr, tmp.constBegin(), tmp.constEnd()) == nullptr;
}
bool QHostAddressPrivate::parse(const QString &ipString)
diff --git a/src/network/kernel/qhostinfo.cpp b/src/network/kernel/qhostinfo.cpp
index f9335c3bb9..31671feece 100644
--- a/src/network/kernel/qhostinfo.cpp
+++ b/src/network/kernel/qhostinfo.cpp
@@ -410,7 +410,7 @@ QHostInfo QHostInfoAgent::reverseLookup(const QHostAddress &address)
// Reverse lookup
sockaddr_in sa4;
sockaddr_in6 sa6;
- sockaddr *sa = 0;
+ sockaddr *sa = nullptr;
QT_SOCKLEN_T saSize;
if (address.protocol() == QAbstractSocket::IPv4Protocol) {
sa = reinterpret_cast<sockaddr *>(&sa4);
@@ -455,7 +455,7 @@ QHostInfo QHostInfoAgent::lookup(const QString &hostName)
return results;
}
- addrinfo *res = 0;
+ addrinfo *res = nullptr;
struct addrinfo hints;
memset(&hints, 0, sizeof(hints));
hints.ai_family = PF_UNSPEC;
diff --git a/src/network/kernel/qhostinfo_unix.cpp b/src/network/kernel/qhostinfo_unix.cpp
index 78a05f8407..625fbabf31 100644
--- a/src/network/kernel/qhostinfo_unix.cpp
+++ b/src/network/kernel/qhostinfo_unix.cpp
@@ -80,12 +80,12 @@ enum LibResolvFeature {
typedef struct __res_state *res_state_ptr;
typedef int (*res_init_proto)(void);
-static res_init_proto local_res_init = 0;
+static res_init_proto local_res_init = nullptr;
typedef int (*res_ninit_proto)(res_state_ptr);
-static res_ninit_proto local_res_ninit = 0;
+static res_ninit_proto local_res_ninit = nullptr;
typedef void (*res_nclose_proto)(res_state_ptr);
-static res_nclose_proto local_res_nclose = 0;
-static res_state_ptr local_res = 0;
+static res_nclose_proto local_res_nclose = nullptr;
+static res_state_ptr local_res = nullptr;
#if QT_CONFIG(library) && !defined(Q_OS_QNX)
namespace {
diff --git a/src/network/kernel/qnetworkinterface.cpp b/src/network/kernel/qnetworkinterface.cpp
index d43dba3e0c..eed57f8a32 100644
--- a/src/network/kernel/qnetworkinterface.cpp
+++ b/src/network/kernel/qnetworkinterface.cpp
@@ -627,7 +627,7 @@ bool QNetworkAddressEntry::isPermanent() const
Constructs an empty network interface object.
*/
QNetworkInterface::QNetworkInterface()
- : d(0)
+ : d(nullptr)
{
}
@@ -746,7 +746,7 @@ QString QNetworkInterface::humanReadableName() const
*/
QNetworkInterface::InterfaceFlags QNetworkInterface::flags() const
{
- return d ? d->flags : InterfaceFlags(0);
+ return d ? d->flags : InterfaceFlags{};
}
/*!
diff --git a/src/network/kernel/qnetworkinterface_p.h b/src/network/kernel/qnetworkinterface_p.h
index 44e27a7e34..b879a397f2 100644
--- a/src/network/kernel/qnetworkinterface_p.h
+++ b/src/network/kernel/qnetworkinterface_p.h
@@ -82,7 +82,7 @@ public:
class QNetworkInterfacePrivate: public QSharedData
{
public:
- QNetworkInterfacePrivate() : index(0), flags(nullptr)
+ QNetworkInterfacePrivate() : index(0)
{ }
~QNetworkInterfacePrivate()
{ }
diff --git a/src/network/kernel/qnetworkinterface_unix_p.h b/src/network/kernel/qnetworkinterface_unix_p.h
index 553af5a303..e5c8909eca 100644
--- a/src/network/kernel/qnetworkinterface_unix_p.h
+++ b/src/network/kernel/qnetworkinterface_unix_p.h
@@ -80,7 +80,7 @@ QT_BEGIN_NAMESPACE
static QNetworkInterface::InterfaceFlags convertFlags(uint rawFlags)
{
- QNetworkInterface::InterfaceFlags flags = nullptr;
+ QNetworkInterface::InterfaceFlags flags;
flags |= (rawFlags & IFF_UP) ? QNetworkInterface::IsUp : QNetworkInterface::InterfaceFlag(0);
flags |= (rawFlags & IFF_RUNNING) ? QNetworkInterface::IsRunning : QNetworkInterface::InterfaceFlag(0);
flags |= (rawFlags & IFF_BROADCAST) ? QNetworkInterface::CanBroadcast : QNetworkInterface::InterfaceFlag(0);
diff --git a/src/network/kernel/qnetworkproxy.cpp b/src/network/kernel/qnetworkproxy.cpp
index a2a89ed94b..90c8b75a86 100644
--- a/src/network/kernel/qnetworkproxy.cpp
+++ b/src/network/kernel/qnetworkproxy.cpp
@@ -254,13 +254,13 @@ class QGlobalNetworkProxy
{
public:
QGlobalNetworkProxy()
- : applicationLevelProxy(0)
- , applicationLevelProxyFactory(0)
+ : applicationLevelProxy(nullptr)
+ , applicationLevelProxyFactory(nullptr)
#if QT_CONFIG(socks5)
- , socks5SocketEngineHandler(0)
+ , socks5SocketEngineHandler(nullptr)
#endif
#if QT_CONFIG(http)
- , httpSocketEngineHandler(0)
+ , httpSocketEngineHandler(nullptr)
#endif
#ifdef QT_USE_SYSTEM_PROXIES
, useSystemProxies(true)
@@ -313,7 +313,7 @@ public:
applicationLevelProxy = new QNetworkProxy;
*applicationLevelProxy = proxy;
delete applicationLevelProxyFactory;
- applicationLevelProxyFactory = 0;
+ applicationLevelProxyFactory = nullptr;
useSystemProxies = false;
}
@@ -501,7 +501,7 @@ template<> void QSharedDataPointer<QNetworkProxyPrivate>::detach()
\sa setType(), setApplicationProxy()
*/
QNetworkProxy::QNetworkProxy()
- : d(0)
+ : d(nullptr)
{
// make sure we have QGlobalNetworkProxy singleton created, otherwise
// you don't have any socket engine handler created when directly setting
diff --git a/src/network/kernel/qnetworkproxy_mac.cpp b/src/network/kernel/qnetworkproxy_mac.cpp
index 92f91956b9..67fda24ea6 100644
--- a/src/network/kernel/qnetworkproxy_mac.cpp
+++ b/src/network/kernel/qnetworkproxy_mac.cpp
@@ -210,16 +210,14 @@ QList<QNetworkProxy> macQueryInternal(const QNetworkProxyQuery &query)
QList<QNetworkProxy> result;
// obtain a dictionary to the proxy settings:
- CFDictionaryRef dict = SCDynamicStoreCopyProxies(NULL);
+ const QCFType<CFDictionaryRef> dict = SCDynamicStoreCopyProxies(NULL);
if (!dict) {
qWarning("QNetworkProxyFactory::systemProxyForQuery: SCDynamicStoreCopyProxies returned NULL");
return result; // failed
}
- if (isHostExcluded(dict, query.peerHostName())) {
- CFRelease(dict);
+ if (isHostExcluded(dict, query.peerHostName()))
return result; // no proxy for this host
- }
// is there a PAC enabled? If so, use it first.
CFNumberRef pacEnabled;
@@ -329,7 +327,6 @@ QList<QNetworkProxy> macQueryInternal(const QNetworkProxyQuery &query)
result << https;
}
- CFRelease(dict);
return result;
}
diff --git a/src/network/kernel/qurlinfo.cpp b/src/network/kernel/qurlinfo.cpp
index 7ae6822fb4..e6f2e70ff4 100644
--- a/src/network/kernel/qurlinfo.cpp
+++ b/src/network/kernel/qurlinfo.cpp
@@ -126,7 +126,7 @@ public:
QUrlInfo::QUrlInfo()
{
- d = 0;
+ d = nullptr;
}
/*!
@@ -139,7 +139,7 @@ QUrlInfo::QUrlInfo(const QUrlInfo &ui)
d = new QUrlInfoPrivate;
*d = *ui.d;
} else {
- d = 0;
+ d = nullptr;
}
}
@@ -443,7 +443,7 @@ QUrlInfo &QUrlInfo::operator=(const QUrlInfo &ui)
*d = *ui.d;
} else {
delete d;
- d = 0;
+ d = nullptr;
}
return *this;
}
@@ -683,7 +683,7 @@ bool QUrlInfo::equal(const QUrlInfo &i1, const QUrlInfo &i2,
bool QUrlInfo::operator==(const QUrlInfo &other) const
{
if (!d)
- return other.d == 0;
+ return other.d == nullptr;
if (!other.d)
return false;
@@ -721,7 +721,7 @@ bool QUrlInfo::operator==(const QUrlInfo &other) const
*/
bool QUrlInfo::isValid() const
{
- return d != 0;
+ return d != nullptr;
}
QT_END_NAMESPACE
diff --git a/src/network/socket/qabstractsocket.cpp b/src/network/socket/qabstractsocket.cpp
index b1ea9a4133..cbc4114904 100644
--- a/src/network/socket/qabstractsocket.cpp
+++ b/src/network/socket/qabstractsocket.cpp
@@ -564,12 +564,12 @@ QAbstractSocketPrivate::QAbstractSocketPrivate()
port(0),
localPort(0),
peerPort(0),
- socketEngine(0),
+ socketEngine(nullptr),
cachedSocketDescriptor(-1),
readBufferMaxSize(0),
isBuffered(false),
hasPendingData(false),
- connectTimer(0),
+ connectTimer(nullptr),
hostLookupId(-1),
socketType(QAbstractSocket::UnknownSocketType),
state(QAbstractSocket::UnconnectedState),
@@ -603,7 +603,7 @@ void QAbstractSocketPrivate::resetSocketLayer()
socketEngine->close();
socketEngine->disconnect();
delete socketEngine;
- socketEngine = 0;
+ socketEngine = nullptr;
cachedSocketDescriptor = -1;
}
if (connectTimer)
@@ -659,7 +659,7 @@ bool QAbstractSocketPrivate::initSocketLayer(QAbstractSocket::NetworkLayerProtoc
configureCreatedSocket();
- if (threadData->hasEventDispatcher())
+ if (threadData.loadRelaxed()->hasEventDispatcher())
socketEngine->setReceiver(this);
#if defined (QABSTRACTSOCKET_DEBUG)
@@ -1138,7 +1138,7 @@ void QAbstractSocketPrivate::_q_connectToNextAddress()
}
// Start the connect timer.
- if (threadData->hasEventDispatcher()) {
+ if (threadData.loadRelaxed()->hasEventDispatcher()) {
if (!connectTimer) {
connectTimer = new QTimer(q);
QObject::connect(connectTimer, SIGNAL(timeout()),
@@ -1740,7 +1740,7 @@ void QAbstractSocket::connectToHost(const QString &hostName, quint16 port,
return;
#endif
} else {
- if (d->threadData->hasEventDispatcher()) {
+ if (d->threadData.loadRelaxed()->hasEventDispatcher()) {
// this internal API for QHostInfo either immediately gives us the desired
// QHostInfo from cache or later calls the _q_startConnecting slot.
bool immediateResultValid = false;
@@ -1953,7 +1953,7 @@ bool QAbstractSocket::setSocketDescriptor(qintptr socketDescriptor, SocketState
// Sync up with error string, which open() shall clear.
d->socketError = UnknownSocketError;
- if (d->threadData->hasEventDispatcher())
+ if (d->threadData.loadRelaxed()->hasEventDispatcher())
d->socketEngine->setReceiver(d);
QIODevice::open(openMode);
diff --git a/src/network/socket/qabstractsocketengine.cpp b/src/network/socket/qabstractsocketengine.cpp
index 3fffff6d5a..54c7452c66 100644
--- a/src/network/socket/qabstractsocketengine.cpp
+++ b/src/network/socket/qabstractsocketengine.cpp
@@ -85,7 +85,7 @@ QAbstractSocketEnginePrivate::QAbstractSocketEnginePrivate()
, peerPort(0)
, inboundStreamCount(0)
, outboundStreamCount(0)
- , receiver(0)
+ , receiver(nullptr)
{
}
@@ -104,7 +104,7 @@ QAbstractSocketEngine *QAbstractSocketEngine::createSocketEngine(QAbstractSocket
#ifndef QT_NO_NETWORKPROXY
// proxy type must have been resolved by now
if (proxy.type() == QNetworkProxy::DefaultProxy)
- return 0;
+ return nullptr;
#endif
QMutexLocker locker(&socketHandlers()->mutex);
@@ -116,7 +116,7 @@ QAbstractSocketEngine *QAbstractSocketEngine::createSocketEngine(QAbstractSocket
#ifndef QT_NO_NETWORKPROXY
// only NoProxy can have reached here
if (proxy.type() != QNetworkProxy::NoProxy)
- return 0;
+ return nullptr;
#endif
return new QNativeSocketEngine(parent);
diff --git a/src/network/socket/qhttpsocketengine.cpp b/src/network/socket/qhttpsocketengine.cpp
index c67b273937..76b3053224 100644
--- a/src/network/socket/qhttpsocketengine.cpp
+++ b/src/network/socket/qhttpsocketengine.cpp
@@ -216,7 +216,7 @@ void QHttpSocketEngine::close()
if (d->socket) {
d->socket->close();
delete d->socket;
- d->socket = 0;
+ d->socket = nullptr;
}
}
@@ -586,7 +586,7 @@ void QHttpSocketEngine::slotSocketReadNotification()
}
int statusCode = d->reply->statusCode();
- QAuthenticatorPrivate *priv = 0;
+ QAuthenticatorPrivate *priv = nullptr;
if (statusCode == 200) {
d->state = Connected;
setLocalAddress(d->socket->localAddress());
@@ -829,8 +829,8 @@ QHttpSocketEnginePrivate::QHttpSocketEnginePrivate()
, credentialsSent(false)
, pendingResponseData(0)
{
- socket = 0;
- reply = 0;
+ socket = nullptr;
+ reply = nullptr;
state = QHttpSocketEngine::None;
}
@@ -843,15 +843,15 @@ QAbstractSocketEngine *QHttpSocketEngineHandler::createSocketEngine(QAbstractSoc
QObject *parent)
{
if (socketType != QAbstractSocket::TcpSocket)
- return 0;
+ return nullptr;
// proxy type must have been resolved by now
if (proxy.type() != QNetworkProxy::HttpProxy)
- return 0;
+ return nullptr;
// we only accept active sockets
if (!qobject_cast<QAbstractSocket *>(parent))
- return 0;
+ return nullptr;
QHttpSocketEngine *engine = new QHttpSocketEngine(parent);
engine->setProxy(proxy);
@@ -860,7 +860,7 @@ QAbstractSocketEngine *QHttpSocketEngineHandler::createSocketEngine(QAbstractSoc
QAbstractSocketEngine *QHttpSocketEngineHandler::createSocketEngine(qintptr, QObject *)
{
- return 0;
+ return nullptr;
}
QT_END_NAMESPACE
diff --git a/src/network/socket/qlocalserver.cpp b/src/network/socket/qlocalserver.cpp
index 3e36a7b229..5ca2db70b9 100644
--- a/src/network/socket/qlocalserver.cpp
+++ b/src/network/socket/qlocalserver.cpp
@@ -417,7 +417,7 @@ QLocalSocket *QLocalServer::nextPendingConnection()
{
Q_D(QLocalServer);
if (d->pendingConnections.isEmpty())
- return 0;
+ return nullptr;
QLocalSocket *nextSocket = d->pendingConnections.dequeue();
#ifndef QT_LOCALSOCKET_TCP
if (d->pendingConnections.size() <= d->maxPendingConnections)
diff --git a/src/network/socket/qlocalserver_unix.cpp b/src/network/socket/qlocalserver_unix.cpp
index 9547ec5b88..88367d680d 100644
--- a/src/network/socket/qlocalserver_unix.cpp
+++ b/src/network/socket/qlocalserver_unix.cpp
@@ -243,7 +243,7 @@ void QLocalServerPrivate::closeServer()
if (socketNotifier) {
socketNotifier->setEnabled(false); // Otherwise, closed socket is checked before deleter runs
socketNotifier->deleteLater();
- socketNotifier = 0;
+ socketNotifier = nullptr;
}
if (-1 != listenSocket)
diff --git a/src/network/socket/qlocalsocket.cpp b/src/network/socket/qlocalsocket.cpp
index af7cdb76d2..d35f838af5 100644
--- a/src/network/socket/qlocalsocket.cpp
+++ b/src/network/socket/qlocalsocket.cpp
@@ -372,7 +372,7 @@ QLocalSocket::~QLocalSocket()
QLocalSocket::close();
#if !defined(Q_OS_WIN) && !defined(QT_LOCALSOCKET_TCP)
Q_D(QLocalSocket);
- d->unixSocket.setParent(0);
+ d->unixSocket.setParent(nullptr);
#endif
}
diff --git a/src/network/socket/qlocalsocket_unix.cpp b/src/network/socket/qlocalsocket_unix.cpp
index d1df26d9f1..7de9a7d4c7 100644
--- a/src/network/socket/qlocalsocket_unix.cpp
+++ b/src/network/socket/qlocalsocket_unix.cpp
@@ -61,10 +61,9 @@
QT_BEGIN_NAMESPACE
QLocalSocketPrivate::QLocalSocketPrivate() : QIODevicePrivate(),
- delayConnect(0),
- connectTimer(0),
+ delayConnect(nullptr),
+ connectTimer(nullptr),
connectingSocket(-1),
- connectingOpenMode(0),
state(QLocalSocket::UnconnectedState)
{
}
@@ -341,7 +340,7 @@ void QLocalSocketPrivate::_q_connectToSocket()
}
connectingSocket = -1;
connectingName.clear();
- connectingOpenMode = 0;
+ connectingOpenMode = { };
}
bool QLocalSocket::setSocketDescriptor(qintptr socketDescriptor,
@@ -380,10 +379,10 @@ void QLocalSocketPrivate::cancelDelayedConnect()
if (delayConnect) {
delayConnect->setEnabled(false);
delete delayConnect;
- delayConnect = 0;
+ delayConnect = nullptr;
connectTimer->stop();
delete connectTimer;
- connectTimer = 0;
+ connectTimer = nullptr;
}
}
@@ -438,7 +437,7 @@ void QLocalSocket::close()
::close(d->connectingSocket);
d->connectingSocket = -1;
d->connectingName.clear();
- d->connectingOpenMode = 0;
+ d->connectingOpenMode = { };
d->serverName.clear();
d->fullServerName.clear();
QIODevice::close();
diff --git a/src/network/socket/qnativesocketengine.cpp b/src/network/socket/qnativesocketengine.cpp
index 5126a5330f..31628846dc 100644
--- a/src/network/socket/qnativesocketengine.cpp
+++ b/src/network/socket/qnativesocketengine.cpp
@@ -191,9 +191,9 @@ QT_BEGIN_NAMESPACE
*/
QNativeSocketEnginePrivate::QNativeSocketEnginePrivate() :
socketDescriptor(-1),
- readNotifier(0),
- writeNotifier(0),
- exceptNotifier(0)
+ readNotifier(nullptr),
+ writeNotifier(nullptr),
+ exceptNotifier(nullptr)
{
#if defined(Q_OS_WIN) && !defined(Q_OS_WINRT)
QSysInfo::machineHostName(); // this initializes ws2_32.dll
@@ -985,15 +985,15 @@ void QNativeSocketEngine::close()
d->inboundStreamCount = d->outboundStreamCount = 0;
if (d->readNotifier) {
qDeleteInEventHandler(d->readNotifier);
- d->readNotifier = 0;
+ d->readNotifier = nullptr;
}
if (d->writeNotifier) {
qDeleteInEventHandler(d->writeNotifier);
- d->writeNotifier = 0;
+ d->writeNotifier = nullptr;
}
if (d->exceptNotifier) {
qDeleteInEventHandler(d->exceptNotifier);
- d->exceptNotifier = 0;
+ d->exceptNotifier = nullptr;
}
}
@@ -1341,7 +1341,7 @@ void QNativeSocketEngine::setReadNotificationEnabled(bool enable)
Q_D(QNativeSocketEngine);
if (d->readNotifier) {
d->readNotifier->setEnabled(enable);
- } else if (enable && d->threadData->hasEventDispatcher()) {
+ } else if (enable && d->threadData.loadRelaxed()->hasEventDispatcher()) {
d->readNotifier = new QReadNotifier(d->socketDescriptor, this);
d->readNotifier->setEnabled(true);
}
@@ -1358,7 +1358,7 @@ void QNativeSocketEngine::setWriteNotificationEnabled(bool enable)
Q_D(QNativeSocketEngine);
if (d->writeNotifier) {
d->writeNotifier->setEnabled(enable);
- } else if (enable && d->threadData->hasEventDispatcher()) {
+ } else if (enable && d->threadData.loadRelaxed()->hasEventDispatcher()) {
d->writeNotifier = new QWriteNotifier(d->socketDescriptor, this);
d->writeNotifier->setEnabled(true);
}
@@ -1375,7 +1375,7 @@ void QNativeSocketEngine::setExceptionNotificationEnabled(bool enable)
Q_D(QNativeSocketEngine);
if (d->exceptNotifier) {
d->exceptNotifier->setEnabled(enable);
- } else if (enable && d->threadData->hasEventDispatcher()) {
+ } else if (enable && d->threadData.loadRelaxed()->hasEventDispatcher()) {
d->exceptNotifier = new QExceptionNotifier(d->socketDescriptor, this);
d->exceptNotifier->setEnabled(true);
}
diff --git a/src/network/socket/qnativesocketengine_unix.cpp b/src/network/socket/qnativesocketengine_unix.cpp
index 3ca586e247..e5b9fbbdb2 100644
--- a/src/network/socket/qnativesocketengine_unix.cpp
+++ b/src/network/socket/qnativesocketengine_unix.cpp
@@ -628,7 +628,7 @@ bool QNativeSocketEnginePrivate::nativeListen(int backlog)
int QNativeSocketEnginePrivate::nativeAccept()
{
- int acceptedDescriptor = qt_safe_accept(socketDescriptor, 0, 0);
+ int acceptedDescriptor = qt_safe_accept(socketDescriptor, nullptr, nullptr);
if (acceptedDescriptor == -1) {
switch (errno) {
case EBADF:
@@ -1002,7 +1002,7 @@ qint64 QNativeSocketEnginePrivate::nativeReceiveDatagram(char *data, qint64 maxS
struct cmsghdr *cmsgptr;
QT_WARNING_PUSH
QT_WARNING_DISABLE_CLANG("-Wsign-compare")
- for (cmsgptr = CMSG_FIRSTHDR(&msg); cmsgptr != NULL;
+ for (cmsgptr = CMSG_FIRSTHDR(&msg); cmsgptr != nullptr;
cmsgptr = CMSG_NXTHDR(&msg, cmsgptr)) {
QT_WARNING_POP
if (cmsgptr->cmsg_level == IPPROTO_IPV6 && cmsgptr->cmsg_type == IPV6_PKTINFO
@@ -1166,7 +1166,7 @@ qint64 QNativeSocketEnginePrivate::nativeSendDatagram(const char *data, qint64 l
#endif
if (msg.msg_controllen == 0)
- msg.msg_control = 0;
+ msg.msg_control = nullptr;
ssize_t sentBytes = qt_safe_sendmsg(socketDescriptor, &msg, 0);
if (sentBytes < 0) {
diff --git a/src/network/socket/qnativesocketengine_win.cpp b/src/network/socket/qnativesocketengine_win.cpp
index 9edabd7822..dd115c33dc 100644
--- a/src/network/socket/qnativesocketengine_win.cpp
+++ b/src/network/socket/qnativesocketengine_win.cpp
@@ -53,6 +53,8 @@
#include <qnetworkinterface.h>
#include <qoperatingsystemversion.h>
+#include <algorithm>
+
//#define QNATIVESOCKETENGINE_DEBUG
#if defined(QNATIVESOCKETENGINE_DEBUG)
# include <qstring.h>
@@ -1141,13 +1143,14 @@ qint64 QNativeSocketEnginePrivate::nativePendingDatagramSize() const
qint64 ret = -1;
int recvResult = 0;
DWORD flags;
- // We start at 1500 bytes (the MTU for Ethernet V2), which should catch
- // almost all uses (effective MTU for UDP under IPv4 is 1468), except
- // for localhost datagrams and those reassembled by the IP layer.
- char udpMessagePeekBuffer[1500];
- std::vector<WSABUF> buf;
+ // We increase the amount we peek by 2048 * 5 on each iteration
+ // Grabs most cases fast and early.
+ char udpMessagePeekBuffer[2048];
+ const int increments = 5;
+ QVarLengthArray<WSABUF, 10> buf;
for (;;) {
- buf.resize(buf.size() + 5, {sizeof(udpMessagePeekBuffer), udpMessagePeekBuffer});
+ buf.reserve(buf.size() + increments);
+ std::fill_n(std::back_inserter(buf), increments, WSABUF{sizeof(udpMessagePeekBuffer), udpMessagePeekBuffer});
flags = MSG_PEEK;
DWORD bytesRead = 0;
diff --git a/src/network/socket/qsocks5socketengine.cpp b/src/network/socket/qsocks5socketengine.cpp
index 8a030601dc..622d5df131 100644
--- a/src/network/socket/qsocks5socketengine.cpp
+++ b/src/network/socket/qsocks5socketengine.cpp
@@ -365,13 +365,13 @@ QSocks5BindData *QSocks5BindStore::retrieve(qintptr socketDescriptor)
QMutexLocker lock(&mutex);
const auto it = store.constFind(socketDescriptor);
if (it == store.cend())
- return 0;
+ return nullptr;
QSocks5BindData *bindData = it.value();
store.erase(it);
if (bindData) {
if (bindData->controlSocket->thread() != QThread::currentThread()) {
qWarning("Cannot access socks5 bind data from different thread");
- return 0;
+ return nullptr;
}
} else {
QSOCKS5_DEBUG << "__ERROR__ binddata == 0";
@@ -503,12 +503,12 @@ QSocks5SocketEnginePrivate::QSocks5SocketEnginePrivate()
, writeNotificationEnabled(false)
, exceptNotificationEnabled(false)
, socketDescriptor(-1)
- , data(0)
- , connectData(0)
+ , data(nullptr)
+ , connectData(nullptr)
#ifndef QT_NO_UDPSOCKET
- , udpData(0)
+ , udpData(nullptr)
#endif
- , bindData(0)
+ , bindData(nullptr)
, readNotificationActivated(false)
, writeNotificationActivated(false)
, readNotificationPending(false)
@@ -1038,11 +1038,11 @@ bool QSocks5SocketEngine::initialize(qintptr socketDescriptor, QAbstractSocket::
d->data = d->connectData;
d->mode = QSocks5SocketEnginePrivate::ConnectMode;
d->data->controlSocket = bindData->controlSocket;
- bindData->controlSocket = 0;
+ bindData->controlSocket = nullptr;
d->data->controlSocket->setParent(this);
d->socketProtocol = d->data->controlSocket->localAddress().protocol();
d->data->authenticator = bindData->authenticator;
- bindData->authenticator = 0;
+ bindData->authenticator = nullptr;
d->localPort = bindData->localPort;
d->localAddress = bindData->localAddress;
d->peerPort = bindData->peerPort;
@@ -1367,7 +1367,7 @@ bool QSocks5SocketEngine::bind(const QHostAddress &addr, quint16 port)
QElapsedTimer stopWatch;
stopWatch.start();
d->data->controlSocket->connectToHost(d->proxyInfo.hostName(), d->proxyInfo.port());
- if (!d->waitForConnected(msecs, 0) ||
+ if (!d->waitForConnected(msecs, nullptr) ||
d->data->controlSocket->state() == QAbstractSocket::UnconnectedState) {
// waitForConnected sets the error state and closes the socket
QSOCKS5_Q_DEBUG << "waitForConnected to proxy server" << d->data->controlSocket->errorString();
@@ -1428,13 +1428,13 @@ int QSocks5SocketEngine::accept()
case QSocks5SocketEnginePrivate::BindSuccess:
QSOCKS5_Q_DEBUG << "BindSuccess adding" << d->socketDescriptor << "to the bind store";
d->data->controlSocket->disconnect();
- d->data->controlSocket->setParent(0);
+ d->data->controlSocket->setParent(nullptr);
d->bindData->localAddress = d->localAddress;
d->bindData->localPort = d->localPort;
sd = d->socketDescriptor;
socks5BindStore()->add(sd, d->bindData);
- d->data = 0;
- d->bindData = 0;
+ d->data = nullptr;
+ d->bindData = nullptr;
d->socketDescriptor = 0;
//### do something about this socket layer ... set it closed and an error about why ...
// reset state and local port/address
@@ -1909,7 +1909,7 @@ QSocks5SocketEngineHandler::createSocketEngine(QAbstractSocket::SocketType socke
// proxy type must have been resolved by now
if (proxy.type() != QNetworkProxy::Socks5Proxy) {
QSOCKS5_DEBUG << "not proxying";
- return 0;
+ return nullptr;
}
QScopedPointer<QSocks5SocketEngine> engine(new QSocks5SocketEngine(parent));
engine->setProxy(proxy);
@@ -1923,7 +1923,7 @@ QAbstractSocketEngine *QSocks5SocketEngineHandler::createSocketEngine(qintptr so
QSOCKS5_DEBUG << "bind store contains" << socketDescriptor;
return new QSocks5SocketEngine(parent);
}
- return 0;
+ return nullptr;
}
QT_END_NAMESPACE
diff --git a/src/network/socket/qtcpserver.cpp b/src/network/socket/qtcpserver.cpp
index 98e58192a2..9916c75e65 100644
--- a/src/network/socket/qtcpserver.cpp
+++ b/src/network/socket/qtcpserver.cpp
@@ -121,7 +121,7 @@ QTcpServerPrivate::QTcpServerPrivate()
: port(0)
, socketType(QAbstractSocket::UnknownSocketType)
, state(QAbstractSocket::UnconnectedState)
- , socketEngine(0)
+ , socketEngine(nullptr)
, serverSocketError(QAbstractSocket::UnknownSocketError)
, maxConnections(30)
{
@@ -389,7 +389,7 @@ void QTcpServer::close()
// in out of memory situations, the socketEngine
// will be deleted in ~QTcpServer (it's a child-object of this)
}
- d->socketEngine = 0;
+ d->socketEngine = nullptr;
}
d->state = QAbstractSocket::UnconnectedState;
@@ -561,7 +561,7 @@ QTcpSocket *QTcpServer::nextPendingConnection()
{
Q_D(QTcpServer);
if (d->pendingConnections.isEmpty())
- return 0;
+ return nullptr;
if (!d->socketEngine) {
qWarning("QTcpServer::nextPendingConnection() called while not listening");
diff --git a/src/network/ssl/qdtls_openssl.cpp b/src/network/ssl/qdtls_openssl.cpp
index d9ddcceb40..25a6c5f49c 100644
--- a/src/network/ssl/qdtls_openssl.cpp
+++ b/src/network/ssl/qdtls_openssl.cpp
@@ -156,8 +156,6 @@ void delete_connection(SSL *ssl)
q_SSL_free(ssl);
}
-#if QT_CONFIG(opensslv11)
-
void delete_BIO_ADDR(BIO_ADDR *bio)
{
// A deleter for QSharedPointer<BIO_ADDR>
@@ -172,8 +170,6 @@ void delete_bio_method(BIO_METHOD *method)
q_BIO_meth_free(method);
}
-#endif // openssl 1.1
-
// The 'deleter' for QScopedPointer<BIO>.
struct bio_deleter
{
@@ -411,10 +407,6 @@ extern "C" long q_dgram_ctrl(BIO *bio, int cmd, long num, void *ptr)
auto dtls = static_cast<dtlsopenssl::DtlsState *>(q_BIO_get_app_data(bio));
Q_ASSERT(dtls);
-#if !QT_CONFIG(opensslv11)
- Q_UNUSED(num)
-#endif
-
switch (cmd) {
// Let's start from the most generic ones, in the order in which they are
// documented (as BIO_ctrl):
@@ -578,11 +570,9 @@ extern "C" long q_dgram_ctrl(BIO *bio, int cmd, long num, void *ptr)
// so that OpenSSL does not start suddenly fragmenting the first
// client hello (which will result in DTLSv1_listen rejecting it).
return 0;
-#if QT_CONFIG(opensslv11)
case BIO_CTRL_DGRAM_SET_PEEK_MODE:
dtls->peeking = num;
return 1;
-#endif
default:;
#if QT_DTLS_VERBOSE
qWarning() << "Unexpected cmd (" << cmd << ")";
@@ -594,15 +584,11 @@ extern "C" long q_dgram_ctrl(BIO *bio, int cmd, long num, void *ptr)
extern "C" int q_dgram_create(BIO *bio)
{
-#if QT_CONFIG(opensslv11)
+
q_BIO_set_init(bio, 1);
-#else
- bio->init = 1;
-#endif
// With a custom BIO you'd normally allocate some implementation-specific
- // data and append it to this new BIO: bio->ptr = ... (pre 1.0.2) or
- // BIO_set_data (1.1). We don't need it and thus q_dgram_destroy below
- // is a noop.
+ // data and append it to this new BIO using BIO_set_data. We don't need
+ // it and thus q_dgram_destroy below is a noop.
return 1;
}
@@ -614,39 +600,6 @@ extern "C" int q_dgram_destroy(BIO *bio)
const char * const qdtlsMethodName = "qdtlsbio";
-#if !QT_CONFIG(opensslv11)
-
-/*
-typedef struct bio_method_st {
- int type;
- const char *name;
- int (*bwrite) (BIO *, const char *, int);
- int (*bread) (BIO *, char *, int);
- int (*bputs) (BIO *, const char *);
- int (*bgets) (BIO *, char *, int);
- long (*ctrl) (BIO *, int, long, void *);
- int (*create) (BIO *);
- int (*destroy) (BIO *);
- long (*callback_ctrl) (BIO *, int, bio_info_cb *);
-} BIO_METHOD;
-*/
-
-bio_method_st qdtlsCustomBioMethod =
-{
- BIO_TYPE_DGRAM,
- qdtlsMethodName,
- q_dgram_write,
- q_dgram_read,
- q_dgram_puts,
- nullptr,
- q_dgram_ctrl,
- q_dgram_create,
- q_dgram_destroy,
- nullptr
-};
-
-#endif // openssl < 1.1
-
} // namespace dtlsbio
namespace dtlsopenssl
@@ -777,7 +730,6 @@ bool DtlsState::initBIO(QDtlsBasePrivate *dtlsBase)
Q_ASSERT(dtlsBase);
Q_ASSERT(tlsContext.data() && tlsConnection.data());
-#if QT_CONFIG(opensslv11)
BioMethod customMethod(q_BIO_meth_new(BIO_TYPE_DGRAM, dtlsbio::qdtlsMethodName),
dtlsutil::delete_bio_method);
if (!customMethod.data()) {
@@ -793,9 +745,6 @@ bool DtlsState::initBIO(QDtlsBasePrivate *dtlsBase)
q_BIO_meth_set_write(biom, dtlsbio::q_dgram_write);
q_BIO_meth_set_puts(biom, dtlsbio::q_dgram_puts);
q_BIO_meth_set_ctrl(biom, dtlsbio::q_dgram_ctrl);
-#else
- BIO_METHOD *biom = &dtlsbio::qdtlsCustomBioMethod;
-#endif // openssl 1.1
QScopedPointer<BIO, dtlsutil::bio_deleter> newBio(q_BIO_new(biom));
BIO *bio = newBio.data();
@@ -808,9 +757,7 @@ bool DtlsState::initBIO(QDtlsBasePrivate *dtlsBase)
q_SSL_set_bio(tlsConnection.data(), bio, bio);
newBio.take();
-#if QT_CONFIG(opensslv11)
bioMethod.swap(customMethod);
-#endif // openssl 1.1
return true;
}
@@ -869,7 +816,6 @@ bool QDtlsClientVerifierOpenSSL::verifyClient(QUdpSocket *socket, const QByteArr
dtls.hashAlgorithm = hashAlgorithm;
Q_ASSERT(dtls.tlsConnection.data());
-#if QT_CONFIG(opensslv11)
QSharedPointer<BIO_ADDR> peer(q_BIO_ADDR_new(), dtlsutil::delete_BIO_ADDR);
if (!peer.data()) {
setDtlsError(QDtlsError::TlsInitializationError,
@@ -883,10 +829,7 @@ bool QDtlsClientVerifierOpenSSL::verifyClient(QUdpSocket *socket, const QByteArr
setDtlsError(QDtlsError::TlsFatalError, QSslSocketBackendPrivate::getErrorsFromOpenSsl());
return false;
}
-#else
- qt_sockaddr peer;
- const int ret = q_DTLSv1_listen(dtls.tlsConnection.data(), &peer);
-#endif
+
if (ret > 0) {
verifiedClientHello = dgram;
return true;
@@ -953,7 +896,6 @@ bool QDtlsPrivateOpenSSL::startHandshake(QUdpSocket *socket, const QByteArray &d
// surprise DTLS/OpenSSL (such a message would be disregarded as
// 'stale or future' in SSL_accept otherwise):
int result = 0;
-#if QT_CONFIG(opensslv11)
QSharedPointer<BIO_ADDR> peer(q_BIO_ADDR_new(), dtlsutil::delete_BIO_ADDR);
if (!peer.data()) {
setDtlsError(QDtlsError::TlsInitializationError,
@@ -967,10 +909,7 @@ bool QDtlsPrivateOpenSSL::startHandshake(QUdpSocket *socket, const QByteArray &d
dtls.writeSuppressed = true;
result = q_DTLSv1_listen(dtls.tlsConnection.data(), peer.data());
dtls.writeSuppressed = false;
-#else
- qt_sockaddr peer;
- result = q_DTLSv1_listen(dtls.tlsConnection.data(), &peer);
-#endif
+
if (result <= 0) {
setDtlsError(QDtlsError::TlsFatalError,
QDtls::tr("Cannot start the handshake, verified client hello expected"));
diff --git a/src/network/ssl/qdtls_openssl_p.h b/src/network/ssl/qdtls_openssl_p.h
index 9306fa2433..35e9f29a5d 100644
--- a/src/network/ssl/qdtls_openssl_p.h
+++ b/src/network/ssl/qdtls_openssl_p.h
@@ -84,9 +84,8 @@ namespace dtlsopenssl
class DtlsState
{
public:
- // Note, bioMethod, if allocated (i.e. OpenSSL version >= 1.1) _must_
- // outlive BIOs it was used to create. Thus the order of declarations
- // here matters.
+ // Note, bioMethod _must_ outlive BIOs it was used to create. Thus
+ // the order of declarations here matters.
using BioMethod = QSharedPointer<BIO_METHOD>;
BioMethod bioMethod;
diff --git a/src/network/ssl/qssl.h b/src/network/ssl/qssl.h
index 42c7b5c56d..b28c2a87b9 100644
--- a/src/network/ssl/qssl.h
+++ b/src/network/ssl/qssl.h
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2019 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
@@ -77,17 +77,21 @@ namespace QSsl {
#endif
enum SslProtocol {
+#if QT_DEPRECATED_SINCE(5, 15)
SslV3,
SslV2,
- TlsV1_0,
+#endif
+ TlsV1_0 = 2,
#if QT_DEPRECATED_SINCE(5,0)
TlsV1 = TlsV1_0,
#endif
TlsV1_1,
TlsV1_2,
AnyProtocol,
+#if QT_DEPRECATED_SINCE(5, 15)
TlsV1SslV3,
- SecureProtocols,
+#endif
+ SecureProtocols = AnyProtocol + 2,
TlsV1_0OrLater,
TlsV1_1OrLater,
diff --git a/src/network/ssl/qsslconfiguration.cpp b/src/network/ssl/qsslconfiguration.cpp
index 7e92d3a526..a2e694ec92 100644
--- a/src/network/ssl/qsslconfiguration.cpp
+++ b/src/network/ssl/qsslconfiguration.cpp
@@ -631,11 +631,10 @@ QList<QSslCipher> QSslConfiguration::supportedCiphers()
Returns this connection's CA certificate database. The CA certificate
database is used by the socket during the handshake phase to
validate the peer's certificate. It can be modified prior to the
- handshake with setCaCertificates(), or with \l{QSslSocket}'s
- \l{QSslSocket::}{addCaCertificate()} and
- \l{QSslSocket::}{addCaCertificates()}.
+ handshake with setCaCertificates(), or with addCaCertificate() and
+ addCaCertificates().
- \sa setCaCertificates()
+ \sa setCaCertificates(), addCaCertificate(), addCaCertificates()
*/
QList<QSslCertificate> QSslConfiguration::caCertificates() const
{
@@ -652,7 +651,7 @@ QList<QSslCertificate> QSslConfiguration::caCertificates() const
that is not available (as is commonly the case on iOS), the default database
is empty.
- \sa caCertificates()
+ \sa caCertificates(), addCaCertificates(), addCaCertificate()
*/
void QSslConfiguration::setCaCertificates(const QList<QSslCertificate> &certificates)
{
@@ -661,6 +660,72 @@ void QSslConfiguration::setCaCertificates(const QList<QSslCertificate> &certific
}
/*!
+ Searches all files in the \a path for certificates encoded in the
+ specified \a format and adds them to this socket's CA certificate
+ database. \a path must be a file or a pattern matching one or more
+ files, as specified by \a syntax. Returns \c true if one or more
+ certificates are added to the socket's CA certificate database;
+ otherwise returns \c false.
+
+ The CA certificate database is used by the socket during the
+ handshake phase to validate the peer's certificate.
+
+ For more precise control, use addCaCertificate().
+
+ \sa addCaCertificate(), QSslCertificate::fromPath()
+*/
+bool QSslConfiguration::addCaCertificates(const QString &path, QSsl::EncodingFormat format,
+ QRegExp::PatternSyntax syntax)
+{
+ QList<QSslCertificate> certs = QSslCertificate::fromPath(path, format, syntax);
+ if (certs.isEmpty())
+ return false;
+
+ d->caCertificates += certs;
+ return true;
+}
+
+/*!
+ \since 5.15
+
+ Adds \a certificate to this configuration's CA certificate database.
+ The certificate database must be set prior to the SSL handshake.
+ The CA certificate database is used by the socket during the
+ handshake phase to validate the peer's certificate.
+
+ \note The default configuration uses the system CA certificate database. If
+ that is not available (as is commonly the case on iOS), the default database
+ is empty.
+
+ \sa caCertificates(), setCaCertificates(), addCaCertificates()
+*/
+void QSslConfiguration::addCaCertificate(const QSslCertificate &certificate)
+{
+ d->caCertificates += certificate;
+ d->allowRootCertOnDemandLoading = false;
+}
+
+/*!
+ \since 5.15
+
+ Adds \a certificates to this configuration's CA certificate database.
+ The certificate database must be set prior to the SSL handshake.
+ The CA certificate database is used by the socket during the
+ handshake phase to validate the peer's certificate.
+
+ \note The default configuration uses the system CA certificate database. If
+ that is not available (as is commonly the case on iOS), the default database
+ is empty.
+
+ \sa caCertificates(), setCaCertificates(), addCaCertificate()
+*/
+void QSslConfiguration::addCaCertificates(const QList<QSslCertificate> &certificates)
+{
+ d->caCertificates += certificates;
+ d->allowRootCertOnDemandLoading = false;
+}
+
+/*!
\since 5.5
This function provides the CA certificate database
@@ -668,7 +733,8 @@ void QSslConfiguration::setCaCertificates(const QList<QSslCertificate> &certific
returned by this function is used to initialize the database
returned by caCertificates() on the default QSslConfiguration.
- \sa caCertificates(), setCaCertificates(), defaultConfiguration()
+ \sa caCertificates(), setCaCertificates(), defaultConfiguration(),
+ addCaCertificate(), addCaCertificates()
*/
QList<QSslCertificate> QSslConfiguration::systemCaCertificates()
{
diff --git a/src/network/ssl/qsslconfiguration.h b/src/network/ssl/qsslconfiguration.h
index c25c2686de..247f3aecc9 100644
--- a/src/network/ssl/qsslconfiguration.h
+++ b/src/network/ssl/qsslconfiguration.h
@@ -131,6 +131,11 @@ public:
// Certificate Authority (CA) settings
QList<QSslCertificate> caCertificates() const;
void setCaCertificates(const QList<QSslCertificate> &certificates);
+ bool addCaCertificates(const QString &path, QSsl::EncodingFormat format = QSsl::Pem,
+ QRegExp::PatternSyntax syntax = QRegExp::FixedString);
+ void addCaCertificate(const QSslCertificate &certificate);
+ void addCaCertificates(const QList<QSslCertificate> &certificates);
+
static QList<QSslCertificate> systemCaCertificates();
void setSslOption(QSsl::SslOption option, bool on);
diff --git a/src/network/ssl/qsslcontext_openssl.cpp b/src/network/ssl/qsslcontext_openssl.cpp
index 8566d78aef..562aa4f518 100644
--- a/src/network/ssl/qsslcontext_openssl.cpp
+++ b/src/network/ssl/qsslcontext_openssl.cpp
@@ -3,6 +3,7 @@
** Copyright (C) 2017 The Qt Company Ltd.
** Copyright (C) 2014 BlackBerry Limited. All rights reserved.
** Copyright (C) 2014 Governikus GmbH & Co. KG.
+** Copyright (C) 2016 Richard J. Moore <rich@kde.org>
** Contact: https://www.qt.io/licensing/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
@@ -39,21 +40,49 @@
**
****************************************************************************/
-
#include <QtNetwork/qsslsocket.h>
+#include <QtNetwork/qssldiffiehellmanparameters.h>
#include "private/qssl_p.h"
+#include "private/qsslsocket_p.h"
#include "private/qsslcontext_openssl_p.h"
#include "private/qsslsocket_openssl_p.h"
#include "private/qsslsocket_openssl_symbols_p.h"
+#include "private/qssldiffiehellmanparameters_p.h"
+
+#include <vector>
QT_BEGIN_NAMESPACE
+// defined in qsslsocket_openssl.cpp:
+extern int q_X509Callback(int ok, X509_STORE_CTX *ctx);
+extern QString getErrorsFromOpenSsl();
+
+#if QT_CONFIG(dtls)
+// defined in qdtls_openssl.cpp:
+namespace dtlscallbacks
+{
+extern "C" int q_X509DtlsCallback(int ok, X509_STORE_CTX *ctx);
+extern "C" int q_generate_cookie_callback(SSL *ssl, unsigned char *dst,
+ unsigned *cookieLength);
+extern "C" int q_verify_cookie_callback(SSL *ssl, const unsigned char *cookie,
+ unsigned cookieLength);
+}
+#endif // dtls
+
+// Defined in qsslsocket.cpp
+QList<QSslCipher> q_getDefaultDtlsCiphers();
+
static inline QString msgErrorSettingBackendConfig(const QString &why)
{
return QSslSocket::tr("Error when setting the OpenSSL configuration (%1)").arg(why);
}
+static inline QString msgErrorSettingEllipticCurves(const QString &why)
+{
+ return QSslSocket::tr("Error when setting the elliptic curves (%1)").arg(why);
+}
+
QSslContext::QSslContext()
: ctx(nullptr),
pkey(nullptr),
@@ -89,7 +118,7 @@ QSharedPointer<QSslContext> QSslContext::sharedFromConfiguration(QSslSocket::Ssl
return sslContext;
}
-#if OPENSSL_VERSION_NUMBER >= 0x1000100fL && !defined(OPENSSL_NO_NEXTPROTONEG)
+#ifndef OPENSSL_NO_NEXTPROTONEG
static int next_proto_cb(SSL *, unsigned char **out, unsigned char *outlen,
const unsigned char *in, unsigned int inlen, void *arg)
@@ -126,7 +155,9 @@ QSslContext::NPNContext QSslContext::npnContext() const
{
return m_npnContext;
}
-#endif // OPENSSL_VERSION_NUMBER >= 0x1000100fL ...
+#endif // !OPENSSL_NO_NEXTPROTONEG
+
+
// Needs to be deleted by caller
SSL* QSslContext::createSsl()
@@ -150,7 +181,7 @@ SSL* QSslContext::createSsl()
}
}
-#if OPENSSL_VERSION_NUMBER >= 0x1000100fL && !defined(OPENSSL_NO_NEXTPROTONEG)
+#ifndef OPENSSL_NO_NEXTPROTONEG
QList<QByteArray> protocols = sslConfiguration.d->nextAllowedProtocols;
if (!protocols.isEmpty()) {
m_supportedNPNVersions.clear();
@@ -168,27 +199,22 @@ SSL* QSslContext::createSsl()
m_npnContext.data = reinterpret_cast<unsigned char *>(m_supportedNPNVersions.data());
m_npnContext.len = m_supportedNPNVersions.count();
m_npnContext.status = QSslConfiguration::NextProtocolNegotiationNone;
-#if OPENSSL_VERSION_NUMBER >= 0x10002000L
- if (QSslSocket::sslLibraryVersionNumber() >= 0x10002000L) {
- // Callback's type has a parameter 'const unsigned char ** out'
- // since it was introduced in 1.0.2. Internally, OpenSSL's own code
- // (tests/examples) cast it to unsigned char * (since it's 'out').
- // We just re-use our NPN callback and cast here:
- typedef int (*alpn_callback_t) (SSL *, const unsigned char **, unsigned char *,
- const unsigned char *, unsigned int, void *);
- // With ALPN callback is for a server side only, for a client m_npnContext.status
- // will stay in NextProtocolNegotiationNone.
- q_SSL_CTX_set_alpn_select_cb(ctx, alpn_callback_t(next_proto_cb), &m_npnContext);
- // Client:
- q_SSL_set_alpn_protos(ssl, m_npnContext.data, m_npnContext.len);
- }
-#endif // OPENSSL_VERSION_NUMBER >= 0x10002000L ...
-
+ // Callback's type has a parameter 'const unsigned char ** out'
+ // since it was introduced in 1.0.2. Internally, OpenSSL's own code
+ // (tests/examples) cast it to unsigned char * (since it's 'out').
+ // We just re-use our NPN callback and cast here:
+ typedef int (*alpn_callback_t) (SSL *, const unsigned char **, unsigned char *,
+ const unsigned char *, unsigned int, void *);
+ // With ALPN callback is for a server side only, for a client m_npnContext.status
+ // will stay in NextProtocolNegotiationNone.
+ q_SSL_CTX_set_alpn_select_cb(ctx, alpn_callback_t(next_proto_cb), &m_npnContext);
+ // Client:
+ q_SSL_set_alpn_protos(ssl, m_npnContext.data, m_npnContext.len);
// And in case our peer does not support ALPN, but supports NPN:
q_SSL_CTX_set_next_proto_select_cb(ctx, next_proto_cb, &m_npnContext);
}
}
-#endif // OPENSSL_VERSION_NUMBER >= 0x1000100fL ...
+#endif // !OPENSSL_NO_NEXTPROTONEG
return ssl;
}
@@ -247,6 +273,392 @@ QString QSslContext::errorString() const
return errorStr;
}
+void QSslContext::initSslContext(QSslContext *sslContext, QSslSocket::SslMode mode,
+ const QSslConfiguration &configuration,
+ bool allowRootCertOnDemandLoading)
+{
+ sslContext->sslConfiguration = configuration;
+ sslContext->errorCode = QSslError::NoError;
+
+ bool client = (mode == QSslSocket::SslClientMode);
+
+ bool reinitialized = false;
+ bool unsupportedProtocol = false;
+ bool isDtls = false;
+init_context:
+ if (sslContext->sslConfiguration.protocol() == QSsl::SslV2) {
+ // SSL 2 is no longer supported, but chosen deliberately -> error
+ sslContext->ctx = nullptr;
+ unsupportedProtocol = true;
+ } else if (sslContext->sslConfiguration.protocol() == QSsl::SslV3) {
+ // SSL 3 is no longer supported, but chosen deliberately -> error
+ sslContext->ctx = nullptr;
+ unsupportedProtocol = true;
+ } else {
+ switch (sslContext->sslConfiguration.protocol()) {
+ case QSsl::DtlsV1_0:
+ case QSsl::DtlsV1_0OrLater:
+ case QSsl::DtlsV1_2:
+ case QSsl::DtlsV1_2OrLater:
+#if QT_CONFIG(dtls)
+ isDtls = true;
+ sslContext->ctx = q_SSL_CTX_new(client ? q_DTLS_client_method() : q_DTLS_server_method());
+#else // dtls
+ sslContext->ctx = nullptr;
+ unsupportedProtocol = true;
+ qCWarning(lcSsl, "DTLS protocol requested, but feature 'dtls' is disabled");
+
+#endif // dtls
+ break;
+ case QSsl::TlsV1_3:
+ case QSsl::TlsV1_3OrLater:
+#if !defined(TLS1_3_VERSION)
+ qCWarning(lcSsl, "TLS 1.3 is not supported");
+ sslContext->ctx = nullptr;
+ unsupportedProtocol = true;
+ break;
+#endif // TLS1_3_VERSION
+ default:
+ // The ssl options will actually control the supported methods
+ sslContext->ctx = q_SSL_CTX_new(client ? q_TLS_client_method() : q_TLS_server_method());
+ }
+ }
+
+ if (!sslContext->ctx) {
+ // After stopping Flash 10 the SSL library loses its ciphers. Try re-adding them
+ // by re-initializing the library.
+ if (!reinitialized) {
+ reinitialized = true;
+ if (q_OPENSSL_init_ssl(0, nullptr) == 1)
+ goto init_context;
+ }
+
+ sslContext->errorStr = QSslSocket::tr("Error creating SSL context (%1)").arg(
+ unsupportedProtocol ? QSslSocket::tr("unsupported protocol") : QSslSocketBackendPrivate::getErrorsFromOpenSsl()
+ );
+ sslContext->errorCode = QSslError::UnspecifiedError;
+ return;
+ }
+
+ const long anyVersion =
+#if QT_CONFIG(dtls)
+ isDtls ? DTLS_ANY_VERSION : TLS_ANY_VERSION;
+#else
+ TLS_ANY_VERSION;
+#endif // dtls
+ long minVersion = anyVersion;
+ long maxVersion = anyVersion;
+
+ switch (sslContext->sslConfiguration.protocol()) {
+ case QSsl::TlsV1_0:
+ minVersion = TLS1_VERSION;
+ maxVersion = TLS1_VERSION;
+ break;
+ case QSsl::TlsV1_1:
+ minVersion = TLS1_1_VERSION;
+ maxVersion = TLS1_1_VERSION;
+ break;
+ case QSsl::TlsV1_2:
+ minVersion = TLS1_2_VERSION;
+ maxVersion = TLS1_2_VERSION;
+ break;
+ case QSsl::TlsV1_3:
+#ifdef TLS1_3_VERSION
+ minVersion = TLS1_3_VERSION;
+ maxVersion = TLS1_3_VERSION;
+#else
+ // This protocol is not supported by OpenSSL 1.1 and we handle
+ // it as an error (see the code above).
+ Q_UNREACHABLE();
+#endif // TLS1_3_VERSION
+ break;
+ // Ranges:
+ case QSsl::TlsV1SslV3:
+ case QSsl::AnyProtocol:
+ case QSsl::SecureProtocols:
+ case QSsl::TlsV1_0OrLater:
+ minVersion = TLS1_VERSION;
+ maxVersion = 0;
+ break;
+ case QSsl::TlsV1_1OrLater:
+ minVersion = TLS1_1_VERSION;
+ maxVersion = 0;
+ break;
+ case QSsl::TlsV1_2OrLater:
+ minVersion = TLS1_2_VERSION;
+ maxVersion = 0;
+ break;
+ case QSsl::DtlsV1_0:
+ minVersion = DTLS1_VERSION;
+ maxVersion = DTLS1_VERSION;
+ break;
+ case QSsl::DtlsV1_0OrLater:
+ minVersion = DTLS1_VERSION;
+ maxVersion = DTLS_MAX_VERSION;
+ break;
+ case QSsl::DtlsV1_2:
+ minVersion = DTLS1_2_VERSION;
+ maxVersion = DTLS1_2_VERSION;
+ break;
+ case QSsl::DtlsV1_2OrLater:
+ minVersion = DTLS1_2_VERSION;
+ maxVersion = DTLS_MAX_VERSION;
+ break;
+ case QSsl::TlsV1_3OrLater:
+#ifdef TLS1_3_VERSION
+ minVersion = TLS1_3_VERSION;
+ maxVersion = 0;
+ break;
+#else
+ // This protocol is not supported by OpenSSL 1.1 and we handle
+ // it as an error (see the code above).
+ Q_UNREACHABLE();
+ break;
+#endif // TLS1_3_VERSION
+ case QSsl::SslV2:
+ case QSsl::SslV3:
+ // These protocols are not supported, and we handle
+ // them as an error (see the code above).
+ Q_UNREACHABLE();
+ break;
+ case QSsl::UnknownProtocol:
+ break;
+ }
+
+ if (minVersion != anyVersion
+ && !q_SSL_CTX_set_min_proto_version(sslContext->ctx, minVersion)) {
+ sslContext->errorStr = QSslSocket::tr("Error while setting the minimal protocol version");
+ sslContext->errorCode = QSslError::UnspecifiedError;
+ return;
+ }
+
+ if (maxVersion != anyVersion
+ && !q_SSL_CTX_set_max_proto_version(sslContext->ctx, maxVersion)) {
+ sslContext->errorStr = QSslSocket::tr("Error while setting the maximum protocol version");
+ sslContext->errorCode = QSslError::UnspecifiedError;
+ return;
+ }
+
+ // Enable bug workarounds.
+ long options = QSslSocketBackendPrivate::setupOpenSslOptions(configuration.protocol(), configuration.d->sslOptions);
+ q_SSL_CTX_set_options(sslContext->ctx, options);
+
+ // Tell OpenSSL to release memory early
+ // http://www.openssl.org/docs/ssl/SSL_CTX_set_mode.html
+ q_SSL_CTX_set_mode(sslContext->ctx, SSL_MODE_RELEASE_BUFFERS);
+
+ auto filterCiphers = [](const QList<QSslCipher> &ciphers, bool selectTls13)
+ {
+ QByteArray cipherString;
+ bool first = true;
+
+ for (const QSslCipher &cipher : qAsConst(ciphers)) {
+ const bool isTls13Cipher = cipher.protocol() == QSsl::TlsV1_3 || cipher.protocol() == QSsl::TlsV1_3OrLater;
+ if (selectTls13 != isTls13Cipher)
+ continue;
+
+ if (first)
+ first = false;
+ else
+ cipherString.append(':');
+ cipherString.append(cipher.name().toLatin1());
+ }
+ return cipherString;
+ };
+
+ // Initialize ciphers
+ QList<QSslCipher> ciphers = sslContext->sslConfiguration.ciphers();
+ if (ciphers.isEmpty())
+ ciphers = isDtls ? q_getDefaultDtlsCiphers() : QSslSocketPrivate::defaultCiphers();
+
+ const QByteArray preTls13Ciphers = filterCiphers(ciphers, false);
+
+ if (preTls13Ciphers.size()) {
+ if (!q_SSL_CTX_set_cipher_list(sslContext->ctx, preTls13Ciphers.data())) {
+ sslContext->errorStr = QSslSocket::tr("Invalid or empty cipher list (%1)").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl());
+ sslContext->errorCode = QSslError::UnspecifiedError;
+ return;
+ }
+ }
+
+ const QByteArray tls13Ciphers = filterCiphers(ciphers, true);
+#ifdef TLS1_3_VERSION
+ if (tls13Ciphers.size()) {
+ if (!q_SSL_CTX_set_ciphersuites(sslContext->ctx, tls13Ciphers.data())) {
+ sslContext->errorStr = QSslSocket::tr("Invalid or empty cipher list (%1)").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl());
+ sslContext->errorCode = QSslError::UnspecifiedError;
+ return;
+ }
+ }
+#endif // TLS1_3_VERSION
+ if (!preTls13Ciphers.size() && !tls13Ciphers.size()) {
+ sslContext->errorStr = QSslSocket::tr("Invalid or empty cipher list (%1)").arg(QStringLiteral(""));
+ sslContext->errorCode = QSslError::UnspecifiedError;
+ return;
+ }
+
+ const QDateTime now = QDateTime::currentDateTimeUtc();
+
+ // Add all our CAs to this store.
+ const auto caCertificates = sslContext->sslConfiguration.caCertificates();
+ for (const QSslCertificate &caCertificate : caCertificates) {
+ // From https://www.openssl.org/docs/ssl/SSL_CTX_load_verify_locations.html:
+ //
+ // If several CA certificates matching the name, key identifier, and
+ // serial number condition are available, only the first one will be
+ // examined. This may lead to unexpected results if the same CA
+ // certificate is available with different expiration dates. If a
+ // ``certificate expired'' verification error occurs, no other
+ // certificate will be searched. Make sure to not have expired
+ // certificates mixed with valid ones.
+ //
+ // See also: QSslSocketBackendPrivate::verify()
+ if (caCertificate.expiryDate() >= now) {
+ q_X509_STORE_add_cert(q_SSL_CTX_get_cert_store(sslContext->ctx), (X509 *)caCertificate.handle());
+ }
+ }
+
+ if (QSslSocketPrivate::s_loadRootCertsOnDemand && allowRootCertOnDemandLoading) {
+ // tell OpenSSL the directories where to look up the root certs on demand
+ const QList<QByteArray> unixDirs = QSslSocketPrivate::unixRootCertDirectories();
+ for (const QByteArray &unixDir : unixDirs)
+ q_SSL_CTX_load_verify_locations(sslContext->ctx, nullptr, unixDir.constData());
+ }
+
+ if (!sslContext->sslConfiguration.localCertificate().isNull()) {
+ // Require a private key as well.
+ if (sslContext->sslConfiguration.privateKey().isNull()) {
+ sslContext->errorStr = QSslSocket::tr("Cannot provide a certificate with no key, %1").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl());
+ sslContext->errorCode = QSslError::UnspecifiedError;
+ return;
+ }
+
+ // Load certificate
+ if (!q_SSL_CTX_use_certificate(sslContext->ctx, (X509 *)sslContext->sslConfiguration.localCertificate().handle())) {
+ sslContext->errorStr = QSslSocket::tr("Error loading local certificate, %1").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl());
+ sslContext->errorCode = QSslError::UnspecifiedError;
+ return;
+ }
+
+ if (configuration.d->privateKey.algorithm() == QSsl::Opaque) {
+ sslContext->pkey = reinterpret_cast<EVP_PKEY *>(configuration.d->privateKey.handle());
+ } else {
+ // Load private key
+ sslContext->pkey = q_EVP_PKEY_new();
+ // before we were using EVP_PKEY_assign_R* functions and did not use EVP_PKEY_free.
+ // this lead to a memory leak. Now we use the *_set1_* functions which do not
+ // take ownership of the RSA/DSA key instance because the QSslKey already has ownership.
+ if (configuration.d->privateKey.algorithm() == QSsl::Rsa)
+ q_EVP_PKEY_set1_RSA(sslContext->pkey, reinterpret_cast<RSA *>(configuration.d->privateKey.handle()));
+ else if (configuration.d->privateKey.algorithm() == QSsl::Dsa)
+ q_EVP_PKEY_set1_DSA(sslContext->pkey, reinterpret_cast<DSA *>(configuration.d->privateKey.handle()));
+#ifndef OPENSSL_NO_EC
+ else if (configuration.d->privateKey.algorithm() == QSsl::Ec)
+ q_EVP_PKEY_set1_EC_KEY(sslContext->pkey, reinterpret_cast<EC_KEY *>(configuration.d->privateKey.handle()));
+#endif
+ }
+
+ if (!q_SSL_CTX_use_PrivateKey(sslContext->ctx, sslContext->pkey)) {
+ sslContext->errorStr = QSslSocket::tr("Error loading private key, %1").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl());
+ sslContext->errorCode = QSslError::UnspecifiedError;
+ return;
+ }
+ if (configuration.d->privateKey.algorithm() == QSsl::Opaque)
+ sslContext->pkey = nullptr; // Don't free the private key, it belongs to QSslKey
+
+ // Check if the certificate matches the private key.
+ if (!q_SSL_CTX_check_private_key(sslContext->ctx)) {
+ sslContext->errorStr = QSslSocket::tr("Private key does not certify public key, %1").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl());
+ sslContext->errorCode = QSslError::UnspecifiedError;
+ return;
+ }
+
+ // If we have any intermediate certificates then we need to add them to our chain
+ bool first = true;
+ for (const QSslCertificate &cert : qAsConst(configuration.d->localCertificateChain)) {
+ if (first) {
+ first = false;
+ continue;
+ }
+ q_SSL_CTX_ctrl(sslContext->ctx, SSL_CTRL_EXTRA_CHAIN_CERT, 0,
+ q_X509_dup(reinterpret_cast<X509 *>(cert.handle())));
+ }
+ }
+
+ // Initialize peer verification.
+ if (sslContext->sslConfiguration.peerVerifyMode() == QSslSocket::VerifyNone) {
+ q_SSL_CTX_set_verify(sslContext->ctx, SSL_VERIFY_NONE, nullptr);
+ } else {
+ q_SSL_CTX_set_verify(sslContext->ctx, SSL_VERIFY_PEER,
+#if QT_CONFIG(dtls)
+ isDtls ? dtlscallbacks::q_X509DtlsCallback :
+#endif // dtls
+ q_X509Callback);
+ }
+
+#if QT_CONFIG(dtls)
+ if (mode == QSslSocket::SslServerMode && isDtls && configuration.dtlsCookieVerificationEnabled()) {
+ q_SSL_CTX_set_cookie_generate_cb(sslContext->ctx, dtlscallbacks::q_generate_cookie_callback);
+ q_SSL_CTX_set_cookie_verify_cb(sslContext->ctx, dtlscallbacks::q_verify_cookie_callback);
+ }
+#endif // dtls
+
+ // Set verification depth.
+ if (sslContext->sslConfiguration.peerVerifyDepth() != 0)
+ q_SSL_CTX_set_verify_depth(sslContext->ctx, sslContext->sslConfiguration.peerVerifyDepth());
+
+ // set persisted session if the user set it
+ if (!configuration.sessionTicket().isEmpty())
+ sslContext->setSessionASN1(configuration.sessionTicket());
+
+ // Set temp DH params
+ QSslDiffieHellmanParameters dhparams = configuration.diffieHellmanParameters();
+
+ if (!dhparams.isValid()) {
+ sslContext->errorStr = QSslSocket::tr("Diffie-Hellman parameters are not valid");
+ sslContext->errorCode = QSslError::UnspecifiedError;
+ return;
+ }
+
+ if (!dhparams.isEmpty()) {
+ const QByteArray &params = dhparams.d->derData;
+ const char *ptr = params.constData();
+ DH *dh = q_d2i_DHparams(nullptr, reinterpret_cast<const unsigned char **>(&ptr),
+ params.length());
+ if (dh == nullptr)
+ qFatal("q_d2i_DHparams failed to convert QSslDiffieHellmanParameters to DER form");
+ q_SSL_CTX_set_tmp_dh(sslContext->ctx, dh);
+ q_DH_free(dh);
+ }
+
+#ifndef OPENSSL_NO_PSK
+ if (!client)
+ q_SSL_CTX_use_psk_identity_hint(sslContext->ctx, sslContext->sslConfiguration.preSharedKeyIdentityHint().constData());
+#endif // !OPENSSL_NO_PSK
+
+ const QVector<QSslEllipticCurve> qcurves = sslContext->sslConfiguration.ellipticCurves();
+ if (!qcurves.isEmpty()) {
+#ifdef OPENSSL_NO_EC
+ sslContext->errorStr = msgErrorSettingEllipticCurves(QSslSocket::tr("OpenSSL version with disabled elliptic curves"));
+ sslContext->errorCode = QSslError::UnspecifiedError;
+ return;
+#else
+ // Set the curves to be used.
+ std::vector<int> curves;
+ curves.reserve(qcurves.size());
+ for (const auto &sslCurve : qcurves)
+ curves.push_back(sslCurve.id);
+ if (!q_SSL_CTX_ctrl(sslContext->ctx, SSL_CTRL_SET_CURVES, long(curves.size()), &curves[0])) {
+ sslContext->errorStr = msgErrorSettingEllipticCurves(QSslSocketBackendPrivate::getErrorsFromOpenSsl());
+ sslContext->errorCode = QSslError::UnspecifiedError;
+ return;
+ }
+#endif
+ }
+
+ applyBackendConfig(sslContext);
+}
+
#if QT_CONFIG(ocsp)
extern "C" int qt_OCSP_status_server_callback(SSL *ssl, void *); // Defined in qsslsocket_openssl.cpp.
#endif // ocsp
@@ -269,65 +681,55 @@ void QSslContext::applyBackendConfig(QSslContext *sslContext)
}
#endif // ocsp
-#if OPENSSL_VERSION_NUMBER >= 0x10002000L
- if (QSslSocket::sslLibraryVersionNumber() >= 0x10002000L) {
- QSharedPointer<SSL_CONF_CTX> cctx(q_SSL_CONF_CTX_new(), &q_SSL_CONF_CTX_free);
- if (cctx) {
- q_SSL_CONF_CTX_set_ssl_ctx(cctx.data(), sslContext->ctx);
- q_SSL_CONF_CTX_set_flags(cctx.data(), SSL_CONF_FLAG_FILE);
-
- for (auto i = conf.constBegin(); i != conf.constEnd(); ++i) {
- if (i.key() == "Qt-OCSP-response") // This never goes to SSL_CONF_cmd().
- continue;
-
- if (!i.value().canConvert(QMetaType::QByteArray)) {
- sslContext->errorCode = QSslError::UnspecifiedError;
- sslContext->errorStr = msgErrorSettingBackendConfig(
- QSslSocket::tr("Expecting QByteArray for %1").arg(
- QString::fromUtf8(i.key())));
- return;
- }
-
- const QByteArray &value = i.value().toByteArray();
- const int result = q_SSL_CONF_cmd(cctx.data(), i.key().constData(), value.constData());
- if (result == 2)
- continue;
+ QSharedPointer<SSL_CONF_CTX> cctx(q_SSL_CONF_CTX_new(), &q_SSL_CONF_CTX_free);
+ if (cctx) {
+ q_SSL_CONF_CTX_set_ssl_ctx(cctx.data(), sslContext->ctx);
+ q_SSL_CONF_CTX_set_flags(cctx.data(), SSL_CONF_FLAG_FILE);
+
+ for (auto i = conf.constBegin(); i != conf.constEnd(); ++i) {
+ if (i.key() == "Qt-OCSP-response") // This never goes to SSL_CONF_cmd().
+ continue;
+ if (!i.value().canConvert(QMetaType::QByteArray)) {
sslContext->errorCode = QSslError::UnspecifiedError;
- switch (result) {
- case 0:
- sslContext->errorStr = msgErrorSettingBackendConfig(
- QSslSocket::tr("An error occurred attempting to set %1 to %2").arg(
- QString::fromUtf8(i.key()), QString::fromUtf8(value)));
- return;
- case 1:
- sslContext->errorStr = msgErrorSettingBackendConfig(
- QSslSocket::tr("Wrong value for %1 (%2)").arg(
- QString::fromUtf8(i.key()), QString::fromUtf8(value)));
- return;
- default:
- sslContext->errorStr = msgErrorSettingBackendConfig(
- QSslSocket::tr("Unrecognized command %1 = %2").arg(
- QString::fromUtf8(i.key()), QString::fromUtf8(value)));
- return;
- }
+ sslContext->errorStr = msgErrorSettingBackendConfig(
+ QSslSocket::tr("Expecting QByteArray for %1").arg(
+ QString::fromUtf8(i.key())));
+ return;
}
- if (q_SSL_CONF_CTX_finish(cctx.data()) == 0) {
- sslContext->errorStr = msgErrorSettingBackendConfig(QSslSocket::tr("SSL_CONF_finish() failed"));
- sslContext->errorCode = QSslError::UnspecifiedError;
+ const QByteArray &value = i.value().toByteArray();
+ const int result = q_SSL_CONF_cmd(cctx.data(), i.key().constData(), value.constData());
+ if (result == 2)
+ continue;
+
+ sslContext->errorCode = QSslError::UnspecifiedError;
+ switch (result) {
+ case 0:
+ sslContext->errorStr = msgErrorSettingBackendConfig(
+ QSslSocket::tr("An error occurred attempting to set %1 to %2").arg(
+ QString::fromUtf8(i.key()), QString::fromUtf8(value)));
+ return;
+ case 1:
+ sslContext->errorStr = msgErrorSettingBackendConfig(
+ QSslSocket::tr("Wrong value for %1 (%2)").arg(
+ QString::fromUtf8(i.key()), QString::fromUtf8(value)));
+ return;
+ default:
+ sslContext->errorStr = msgErrorSettingBackendConfig(
+ QSslSocket::tr("Unrecognized command %1 = %2").arg(
+ QString::fromUtf8(i.key()), QString::fromUtf8(value)));
+ return;
}
- } else {
- sslContext->errorStr = msgErrorSettingBackendConfig(QSslSocket::tr("SSL_CONF_CTX_new() failed"));
- sslContext->errorCode = QSslError::UnspecifiedError;
- }
- } else
-#endif // OPENSSL_VERSION_NUMBER >= 0x10002000L
- {
- // specific algorithms requested, but not possible to set
+ }
+
+ if (q_SSL_CONF_CTX_finish(cctx.data()) == 0) {
+ sslContext->errorStr = msgErrorSettingBackendConfig(QSslSocket::tr("SSL_CONF_finish() failed"));
+ sslContext->errorCode = QSslError::UnspecifiedError;
+ }
+ } else {
+ sslContext->errorStr = msgErrorSettingBackendConfig(QSslSocket::tr("SSL_CONF_CTX_new() failed"));
sslContext->errorCode = QSslError::UnspecifiedError;
- sslContext->errorStr = msgErrorSettingBackendConfig(
- QSslSocket::tr("OpenSSL version too old, need at least v1.0.2"));
}
}
diff --git a/src/network/ssl/qsslcontext_openssl11.cpp b/src/network/ssl/qsslcontext_openssl11.cpp
deleted file mode 100644
index db023b7331..0000000000
--- a/src/network/ssl/qsslcontext_openssl11.cpp
+++ /dev/null
@@ -1,467 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Copyright (C) 2014 BlackBerry Limited. All rights reserved.
-** Copyright (C) 2014 Governikus GmbH & Co. KG.
-** Copyright (C) 2016 Richard J. Moore <rich@kde.org>
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtNetwork module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtNetwork/qsslsocket.h>
-#include <QtNetwork/qssldiffiehellmanparameters.h>
-
-#include "private/qssl_p.h"
-#include "private/qsslcontext_openssl_p.h"
-#include "private/qsslsocket_p.h"
-#include "private/qsslsocket_openssl_p.h"
-#include "private/qsslsocket_openssl_symbols_p.h"
-#include "private/qssldiffiehellmanparameters_p.h"
-
-#include <vector>
-
-QT_BEGIN_NAMESPACE
-
-// defined in qsslsocket_openssl.cpp:
-extern int q_X509Callback(int ok, X509_STORE_CTX *ctx);
-extern QString getErrorsFromOpenSsl();
-
-#if QT_CONFIG(dtls)
-// defined in qdtls_openssl.cpp:
-namespace dtlscallbacks
-{
-extern "C" int q_X509DtlsCallback(int ok, X509_STORE_CTX *ctx);
-extern "C" int q_generate_cookie_callback(SSL *ssl, unsigned char *dst,
- unsigned *cookieLength);
-extern "C" int q_verify_cookie_callback(SSL *ssl, const unsigned char *cookie,
- unsigned cookieLength);
-}
-#endif // dtls
-
-static inline QString msgErrorSettingEllipticCurves(const QString &why)
-{
- return QSslSocket::tr("Error when setting the elliptic curves (%1)").arg(why);
-}
-
-// Defined in qsslsocket.cpp
-QList<QSslCipher> q_getDefaultDtlsCiphers();
-
-// static
-void QSslContext::initSslContext(QSslContext *sslContext, QSslSocket::SslMode mode, const QSslConfiguration &configuration, bool allowRootCertOnDemandLoading)
-{
- sslContext->sslConfiguration = configuration;
- sslContext->errorCode = QSslError::NoError;
-
- bool client = (mode == QSslSocket::SslClientMode);
-
- bool reinitialized = false;
- bool unsupportedProtocol = false;
- bool isDtls = false;
-init_context:
- if (sslContext->sslConfiguration.protocol() == QSsl::SslV2) {
- // SSL 2 is no longer supported, but chosen deliberately -> error
- sslContext->ctx = nullptr;
- unsupportedProtocol = true;
- } else if (sslContext->sslConfiguration.protocol() == QSsl::SslV3) {
- // SSL 3 is no longer supported, but chosen deliberately -> error
- sslContext->ctx = nullptr;
- unsupportedProtocol = true;
- } else {
- switch (sslContext->sslConfiguration.protocol()) {
- case QSsl::DtlsV1_0:
- case QSsl::DtlsV1_0OrLater:
- case QSsl::DtlsV1_2:
- case QSsl::DtlsV1_2OrLater:
-#if QT_CONFIG(dtls)
- isDtls = true;
- sslContext->ctx = q_SSL_CTX_new(client ? q_DTLS_client_method() : q_DTLS_server_method());
-#else // dtls
- sslContext->ctx = nullptr;
- unsupportedProtocol = true;
- qCWarning(lcSsl, "DTLS protocol requested, but feature 'dtls' is disabled");
-
-#endif // dtls
- break;
- case QSsl::TlsV1_3:
- case QSsl::TlsV1_3OrLater:
-#if !defined(TLS1_3_VERSION)
- qCWarning(lcSsl, "TLS 1.3 is not supported");
- sslContext->ctx = nullptr;
- unsupportedProtocol = true;
- break;
-#endif // TLS1_3_VERSION
- default:
- // The ssl options will actually control the supported methods
- sslContext->ctx = q_SSL_CTX_new(client ? q_TLS_client_method() : q_TLS_server_method());
- }
- }
-
- if (!sslContext->ctx) {
- // After stopping Flash 10 the SSL library loses its ciphers. Try re-adding them
- // by re-initializing the library.
- if (!reinitialized) {
- reinitialized = true;
- if (q_OPENSSL_init_ssl(0, nullptr) == 1)
- goto init_context;
- }
-
- sslContext->errorStr = QSslSocket::tr("Error creating SSL context (%1)").arg(
- unsupportedProtocol ? QSslSocket::tr("unsupported protocol") : QSslSocketBackendPrivate::getErrorsFromOpenSsl()
- );
- sslContext->errorCode = QSslError::UnspecifiedError;
- return;
- }
-
- const long anyVersion =
-#if QT_CONFIG(dtls)
- isDtls ? DTLS_ANY_VERSION : TLS_ANY_VERSION;
-#else
- TLS_ANY_VERSION;
-#endif // dtls
- long minVersion = anyVersion;
- long maxVersion = anyVersion;
-
- switch (sslContext->sslConfiguration.protocol()) {
- case QSsl::TlsV1_0:
- minVersion = TLS1_VERSION;
- maxVersion = TLS1_VERSION;
- break;
- case QSsl::TlsV1_1:
- minVersion = TLS1_1_VERSION;
- maxVersion = TLS1_1_VERSION;
- break;
- case QSsl::TlsV1_2:
- minVersion = TLS1_2_VERSION;
- maxVersion = TLS1_2_VERSION;
- break;
- case QSsl::TlsV1_3:
-#ifdef TLS1_3_VERSION
- minVersion = TLS1_3_VERSION;
- maxVersion = TLS1_3_VERSION;
-#else
- // This protocol is not supported by OpenSSL 1.1 and we handle
- // it as an error (see the code above).
- Q_UNREACHABLE();
-#endif // TLS1_3_VERSION
- break;
- // Ranges:
- case QSsl::TlsV1SslV3:
- case QSsl::AnyProtocol:
- case QSsl::SecureProtocols:
- case QSsl::TlsV1_0OrLater:
- minVersion = TLS1_VERSION;
- maxVersion = 0;
- break;
- case QSsl::TlsV1_1OrLater:
- minVersion = TLS1_1_VERSION;
- maxVersion = 0;
- break;
- case QSsl::TlsV1_2OrLater:
- minVersion = TLS1_2_VERSION;
- maxVersion = 0;
- break;
- case QSsl::DtlsV1_0:
- minVersion = DTLS1_VERSION;
- maxVersion = DTLS1_VERSION;
- break;
- case QSsl::DtlsV1_0OrLater:
- minVersion = DTLS1_VERSION;
- maxVersion = DTLS_MAX_VERSION;
- break;
- case QSsl::DtlsV1_2:
- minVersion = DTLS1_2_VERSION;
- maxVersion = DTLS1_2_VERSION;
- break;
- case QSsl::DtlsV1_2OrLater:
- minVersion = DTLS1_2_VERSION;
- maxVersion = DTLS_MAX_VERSION;
- break;
- case QSsl::TlsV1_3OrLater:
-#ifdef TLS1_3_VERSION
- minVersion = TLS1_3_VERSION;
- maxVersion = 0;
- break;
-#else
- // This protocol is not supported by OpenSSL 1.1 and we handle
- // it as an error (see the code above).
- Q_UNREACHABLE();
- break;
-#endif // TLS1_3_VERSION
- case QSsl::SslV2:
- case QSsl::SslV3:
- // These protocols are not supported, and we handle
- // them as an error (see the code above).
- Q_UNREACHABLE();
- break;
- case QSsl::UnknownProtocol:
- break;
- }
-
- if (minVersion != anyVersion
- && !q_SSL_CTX_set_min_proto_version(sslContext->ctx, minVersion)) {
- sslContext->errorStr = QSslSocket::tr("Error while setting the minimal protocol version");
- sslContext->errorCode = QSslError::UnspecifiedError;
- return;
- }
-
- if (maxVersion != anyVersion
- && !q_SSL_CTX_set_max_proto_version(sslContext->ctx, maxVersion)) {
- sslContext->errorStr = QSslSocket::tr("Error while setting the maximum protocol version");
- sslContext->errorCode = QSslError::UnspecifiedError;
- return;
- }
-
- // Enable bug workarounds.
- long options = QSslSocketBackendPrivate::setupOpenSslOptions(configuration.protocol(), configuration.d->sslOptions);
- q_SSL_CTX_set_options(sslContext->ctx, options);
-
- // Tell OpenSSL to release memory early
- // http://www.openssl.org/docs/ssl/SSL_CTX_set_mode.html
- q_SSL_CTX_set_mode(sslContext->ctx, SSL_MODE_RELEASE_BUFFERS);
-
- auto filterCiphers = [](const QList<QSslCipher> &ciphers, bool selectTls13)
- {
- QByteArray cipherString;
- bool first = true;
-
- for (const QSslCipher &cipher : qAsConst(ciphers)) {
- const bool isTls13Cipher = cipher.protocol() == QSsl::TlsV1_3 || cipher.protocol() == QSsl::TlsV1_3OrLater;
- if (selectTls13 != isTls13Cipher)
- continue;
-
- if (first)
- first = false;
- else
- cipherString.append(':');
- cipherString.append(cipher.name().toLatin1());
- }
- return cipherString;
- };
-
- // Initialize ciphers
- QList<QSslCipher> ciphers = sslContext->sslConfiguration.ciphers();
- if (ciphers.isEmpty())
- ciphers = isDtls ? q_getDefaultDtlsCiphers() : QSslSocketPrivate::defaultCiphers();
-
- const QByteArray preTls13Ciphers = filterCiphers(ciphers, false);
-
- if (preTls13Ciphers.size()) {
- if (!q_SSL_CTX_set_cipher_list(sslContext->ctx, preTls13Ciphers.data())) {
- sslContext->errorStr = QSslSocket::tr("Invalid or empty cipher list (%1)").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl());
- sslContext->errorCode = QSslError::UnspecifiedError;
- return;
- }
- }
-
- const QByteArray tls13Ciphers = filterCiphers(ciphers, true);
-#ifdef TLS1_3_VERSION
- if (tls13Ciphers.size()) {
- if (!q_SSL_CTX_set_ciphersuites(sslContext->ctx, tls13Ciphers.data())) {
- sslContext->errorStr = QSslSocket::tr("Invalid or empty cipher list (%1)").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl());
- sslContext->errorCode = QSslError::UnspecifiedError;
- return;
- }
- }
-#endif // TLS1_3_VERSION
- if (!preTls13Ciphers.size() && !tls13Ciphers.size()) {
- sslContext->errorStr = QSslSocket::tr("Invalid or empty cipher list (%1)").arg(QStringLiteral(""));
- sslContext->errorCode = QSslError::UnspecifiedError;
- return;
- }
-
- const QDateTime now = QDateTime::currentDateTimeUtc();
-
- // Add all our CAs to this store.
- const auto caCertificates = sslContext->sslConfiguration.caCertificates();
- for (const QSslCertificate &caCertificate : caCertificates) {
- // From https://www.openssl.org/docs/ssl/SSL_CTX_load_verify_locations.html:
- //
- // If several CA certificates matching the name, key identifier, and
- // serial number condition are available, only the first one will be
- // examined. This may lead to unexpected results if the same CA
- // certificate is available with different expiration dates. If a
- // ``certificate expired'' verification error occurs, no other
- // certificate will be searched. Make sure to not have expired
- // certificates mixed with valid ones.
- //
- // See also: QSslSocketBackendPrivate::verify()
- if (caCertificate.expiryDate() >= now) {
- q_X509_STORE_add_cert(q_SSL_CTX_get_cert_store(sslContext->ctx), (X509 *)caCertificate.handle());
- }
- }
-
- if (QSslSocketPrivate::s_loadRootCertsOnDemand && allowRootCertOnDemandLoading) {
- // tell OpenSSL the directories where to look up the root certs on demand
- const QList<QByteArray> unixDirs = QSslSocketPrivate::unixRootCertDirectories();
- for (const QByteArray &unixDir : unixDirs)
- q_SSL_CTX_load_verify_locations(sslContext->ctx, nullptr, unixDir.constData());
- }
-
- if (!sslContext->sslConfiguration.localCertificate().isNull()) {
- // Require a private key as well.
- if (sslContext->sslConfiguration.privateKey().isNull()) {
- sslContext->errorStr = QSslSocket::tr("Cannot provide a certificate with no key, %1").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl());
- sslContext->errorCode = QSslError::UnspecifiedError;
- return;
- }
-
- // Load certificate
- if (!q_SSL_CTX_use_certificate(sslContext->ctx, (X509 *)sslContext->sslConfiguration.localCertificate().handle())) {
- sslContext->errorStr = QSslSocket::tr("Error loading local certificate, %1").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl());
- sslContext->errorCode = QSslError::UnspecifiedError;
- return;
- }
-
- if (configuration.d->privateKey.algorithm() == QSsl::Opaque) {
- sslContext->pkey = reinterpret_cast<EVP_PKEY *>(configuration.d->privateKey.handle());
- } else {
- // Load private key
- sslContext->pkey = q_EVP_PKEY_new();
- // before we were using EVP_PKEY_assign_R* functions and did not use EVP_PKEY_free.
- // this lead to a memory leak. Now we use the *_set1_* functions which do not
- // take ownership of the RSA/DSA key instance because the QSslKey already has ownership.
- if (configuration.d->privateKey.algorithm() == QSsl::Rsa)
- q_EVP_PKEY_set1_RSA(sslContext->pkey, reinterpret_cast<RSA *>(configuration.d->privateKey.handle()));
- else if (configuration.d->privateKey.algorithm() == QSsl::Dsa)
- q_EVP_PKEY_set1_DSA(sslContext->pkey, reinterpret_cast<DSA *>(configuration.d->privateKey.handle()));
-#ifndef OPENSSL_NO_EC
- else if (configuration.d->privateKey.algorithm() == QSsl::Ec)
- q_EVP_PKEY_set1_EC_KEY(sslContext->pkey, reinterpret_cast<EC_KEY *>(configuration.d->privateKey.handle()));
-#endif
- }
-
- if (!q_SSL_CTX_use_PrivateKey(sslContext->ctx, sslContext->pkey)) {
- sslContext->errorStr = QSslSocket::tr("Error loading private key, %1").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl());
- sslContext->errorCode = QSslError::UnspecifiedError;
- return;
- }
- if (configuration.d->privateKey.algorithm() == QSsl::Opaque)
- sslContext->pkey = nullptr; // Don't free the private key, it belongs to QSslKey
-
- // Check if the certificate matches the private key.
- if (!q_SSL_CTX_check_private_key(sslContext->ctx)) {
- sslContext->errorStr = QSslSocket::tr("Private key does not certify public key, %1").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl());
- sslContext->errorCode = QSslError::UnspecifiedError;
- return;
- }
-
- // If we have any intermediate certificates then we need to add them to our chain
- bool first = true;
- for (const QSslCertificate &cert : qAsConst(configuration.d->localCertificateChain)) {
- if (first) {
- first = false;
- continue;
- }
- q_SSL_CTX_ctrl(sslContext->ctx, SSL_CTRL_EXTRA_CHAIN_CERT, 0,
- q_X509_dup(reinterpret_cast<X509 *>(cert.handle())));
- }
- }
-
- // Initialize peer verification.
- if (sslContext->sslConfiguration.peerVerifyMode() == QSslSocket::VerifyNone) {
- q_SSL_CTX_set_verify(sslContext->ctx, SSL_VERIFY_NONE, nullptr);
- } else {
- q_SSL_CTX_set_verify(sslContext->ctx, SSL_VERIFY_PEER,
-#if QT_CONFIG(dtls)
- isDtls ? dtlscallbacks::q_X509DtlsCallback :
-#endif // dtls
- q_X509Callback);
- }
-
-#if QT_CONFIG(dtls)
- if (mode == QSslSocket::SslServerMode && isDtls && configuration.dtlsCookieVerificationEnabled()) {
- q_SSL_CTX_set_cookie_generate_cb(sslContext->ctx, dtlscallbacks::q_generate_cookie_callback);
- q_SSL_CTX_set_cookie_verify_cb(sslContext->ctx, dtlscallbacks::q_verify_cookie_callback);
- }
-#endif // dtls
-
- // Set verification depth.
- if (sslContext->sslConfiguration.peerVerifyDepth() != 0)
- q_SSL_CTX_set_verify_depth(sslContext->ctx, sslContext->sslConfiguration.peerVerifyDepth());
-
- // set persisted session if the user set it
- if (!configuration.sessionTicket().isEmpty())
- sslContext->setSessionASN1(configuration.sessionTicket());
-
- // Set temp DH params
- QSslDiffieHellmanParameters dhparams = configuration.diffieHellmanParameters();
-
- if (!dhparams.isValid()) {
- sslContext->errorStr = QSslSocket::tr("Diffie-Hellman parameters are not valid");
- sslContext->errorCode = QSslError::UnspecifiedError;
- return;
- }
-
- if (!dhparams.isEmpty()) {
- const QByteArray &params = dhparams.d->derData;
- const char *ptr = params.constData();
- DH *dh = q_d2i_DHparams(nullptr, reinterpret_cast<const unsigned char **>(&ptr),
- params.length());
- if (dh == nullptr)
- qFatal("q_d2i_DHparams failed to convert QSslDiffieHellmanParameters to DER form");
- q_SSL_CTX_set_tmp_dh(sslContext->ctx, dh);
- q_DH_free(dh);
- }
-
-#ifndef OPENSSL_NO_PSK
- if (!client)
- q_SSL_CTX_use_psk_identity_hint(sslContext->ctx, sslContext->sslConfiguration.preSharedKeyIdentityHint().constData());
-#endif // !OPENSSL_NO_PSK
-
- const QVector<QSslEllipticCurve> qcurves = sslContext->sslConfiguration.ellipticCurves();
- if (!qcurves.isEmpty()) {
-#ifdef OPENSSL_NO_EC
- sslContext->errorStr = msgErrorSettingEllipticCurves(QSslSocket::tr("OpenSSL version with disabled elliptic curves"));
- sslContext->errorCode = QSslError::UnspecifiedError;
- return;
-#else
- // Set the curves to be used.
- std::vector<int> curves;
- curves.reserve(qcurves.size());
- for (const auto &sslCurve : qcurves)
- curves.push_back(sslCurve.id);
- if (!q_SSL_CTX_ctrl(sslContext->ctx, SSL_CTRL_SET_CURVES, long(curves.size()), &curves[0])) {
- sslContext->errorStr = msgErrorSettingEllipticCurves(QSslSocketBackendPrivate::getErrorsFromOpenSsl());
- sslContext->errorCode = QSslError::UnspecifiedError;
- return;
- }
-#endif
- }
-
- applyBackendConfig(sslContext);
-}
-
-QT_END_NAMESPACE
diff --git a/src/network/ssl/qsslcontext_openssl_p.h b/src/network/ssl/qsslcontext_openssl_p.h
index 1fa27279c7..70cb97aad8 100644
--- a/src/network/ssl/qsslcontext_openssl_p.h
+++ b/src/network/ssl/qsslcontext_openssl_p.h
@@ -86,7 +86,7 @@ public:
void setSessionASN1(const QByteArray &sessionASN1);
int sessionTicketLifeTimeHint() const;
-#if OPENSSL_VERSION_NUMBER >= 0x1000100fL && !defined(OPENSSL_NO_NEXTPROTONEG)
+#ifndef OPENSSL_NO_NEXTPROTONEG
// must be public because we want to use it from an OpenSSL callback
struct NPNContext {
NPNContext() : data(nullptr),
@@ -98,7 +98,7 @@ public:
QSslConfiguration::NextProtocolNegotiationStatus status;
};
NPNContext npnContext() const;
-#endif // OPENSSL_VERSION_NUMBER >= 0x1000100fL ...
+#endif // !OPENSSL_NO_NEXTPROTONEG
protected:
QSslContext();
@@ -118,10 +118,10 @@ private:
QSslError::SslError errorCode;
QString errorStr;
QSslConfiguration sslConfiguration;
-#if OPENSSL_VERSION_NUMBER >= 0x1000100fL && !defined(OPENSSL_NO_NEXTPROTONEG)
+#ifndef OPENSSL_NO_NEXTPROTONEG
QByteArray m_supportedNPNVersions;
NPNContext m_npnContext;
-#endif // OPENSSL_VERSION_NUMBER >= 0x1000100fL ...
+#endif // !OPENSSL_NO_NEXTPROTONEG
};
#endif // QT_NO_SSL
diff --git a/src/network/ssl/qsslcontext_opensslpre11.cpp b/src/network/ssl/qsslcontext_opensslpre11.cpp
deleted file mode 100644
index 956c5c32ec..0000000000
--- a/src/network/ssl/qsslcontext_opensslpre11.cpp
+++ /dev/null
@@ -1,407 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Copyright (C) 2014 BlackBerry Limited. All rights reserved.
-** Copyright (C) 2014 Governikus GmbH & Co. KG.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtNetwork module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtNetwork/qsslsocket.h>
-#include <QtNetwork/qssldiffiehellmanparameters.h>
-
-#include "private/qssl_p.h"
-#include "private/qsslcontext_openssl_p.h"
-#include "private/qsslsocket_p.h"
-#include "private/qsslsocket_openssl_p.h"
-#include "private/qsslsocket_openssl_symbols_p.h"
-#include "private/qssldiffiehellmanparameters_p.h"
-
-QT_BEGIN_NAMESPACE
-
-// defined in qsslsocket_openssl.cpp:
-extern int q_X509Callback(int ok, X509_STORE_CTX *ctx);
-extern QString getErrorsFromOpenSsl();
-
-#if QT_CONFIG(dtls)
-// defined in qdtls_openssl.cpp:
-namespace dtlscallbacks
-{
-extern "C" int q_X509DtlsCallback(int ok, X509_STORE_CTX *ctx);
-extern "C" int q_generate_cookie_callback(SSL *ssl, unsigned char *dst,
- unsigned *cookieLength);
-extern "C" int q_verify_cookie_callback(SSL *ssl, const unsigned char *cookie,
- unsigned cookieLength);
-}
-#endif // dtls
-
-static inline QString msgErrorSettingEllipticCurves(const QString &why)
-{
- return QSslSocket::tr("Error when setting the elliptic curves (%1)").arg(why);
-}
-
-// Defined in qsslsocket.cpp
-QList<QSslCipher> q_getDefaultDtlsCiphers();
-
-// static
-void QSslContext::initSslContext(QSslContext *sslContext, QSslSocket::SslMode mode, const QSslConfiguration &configuration, bool allowRootCertOnDemandLoading)
-{
- sslContext->sslConfiguration = configuration;
- sslContext->errorCode = QSslError::NoError;
-
- bool client = (mode == QSslSocket::SslClientMode);
- bool reinitialized = false;
- bool unsupportedProtocol = false;
- bool isDtls = false;
-init_context:
- switch (sslContext->sslConfiguration.protocol()) {
-#if QT_CONFIG(dtls)
- case QSsl::DtlsV1_0:
- isDtls = true;
- sslContext->ctx = q_SSL_CTX_new(client ? q_DTLSv1_client_method() : q_DTLSv1_server_method());
- break;
- case QSsl::DtlsV1_2:
- case QSsl::DtlsV1_2OrLater:
- // OpenSSL 1.0.2 and below will probably never receive TLS 1.3, so
- // technically 1.2 or later is 1.2 and will stay so.
- isDtls = true;
- sslContext->ctx = q_SSL_CTX_new(client ? q_DTLSv1_2_client_method() : q_DTLSv1_2_server_method());
- break;
- case QSsl::DtlsV1_0OrLater:
- isDtls = true;
- sslContext->ctx = q_SSL_CTX_new(client ? q_DTLS_client_method() : q_DTLS_server_method());
- break;
-#else // dtls
- case QSsl::DtlsV1_0:
- case QSsl::DtlsV1_0OrLater:
- case QSsl::DtlsV1_2:
- case QSsl::DtlsV1_2OrLater:
- sslContext->ctx = nullptr;
- unsupportedProtocol = true;
- qCWarning(lcSsl, "DTLS protocol requested, but feature 'dtls' is disabled");
- break;
-#endif // dtls
- case QSsl::SslV2:
- case QSsl::SslV3:
- // We don't support SSLv2 / SSLv3.
- sslContext->ctx = 0;
- unsupportedProtocol = true;
- break;
- case QSsl::SecureProtocols:
- // SSLv2 and SSLv3 will be disabled by SSL options
- // But we need q_SSLv23_server_method() otherwise AnyProtocol will be unable to connect on Win32.
- case QSsl::AnyProtocol:
- default:
- sslContext->ctx = q_SSL_CTX_new(client ? q_SSLv23_client_method() : q_SSLv23_server_method());
- break;
- case QSsl::TlsV1SslV3:
- case QSsl::TlsV1_0:
- sslContext->ctx = q_SSL_CTX_new(client ? q_TLSv1_client_method() : q_TLSv1_server_method());
- break;
- case QSsl::TlsV1_1:
-#if OPENSSL_VERSION_NUMBER >= 0x10001000L
- sslContext->ctx = q_SSL_CTX_new(client ? q_TLSv1_1_client_method() : q_TLSv1_1_server_method());
-#else
- // TLS 1.1 not supported by the system, but chosen deliberately -> error
- sslContext->ctx = 0;
- unsupportedProtocol = true;
-#endif
- break;
- case QSsl::TlsV1_2:
-#if OPENSSL_VERSION_NUMBER >= 0x10001000L
- sslContext->ctx = q_SSL_CTX_new(client ? q_TLSv1_2_client_method() : q_TLSv1_2_server_method());
-#else
- // TLS 1.2 not supported by the system, but chosen deliberately -> error
- sslContext->ctx = 0;
- unsupportedProtocol = true;
-#endif
- break;
- case QSsl::TlsV1_0OrLater:
- // Specific protocols will be specified via SSL options.
- sslContext->ctx = q_SSL_CTX_new(client ? q_SSLv23_client_method() : q_SSLv23_server_method());
- break;
- case QSsl::TlsV1_1OrLater:
- case QSsl::TlsV1_2OrLater:
-#if OPENSSL_VERSION_NUMBER >= 0x10001000L
- // Specific protocols will be specified via SSL options.
- sslContext->ctx = q_SSL_CTX_new(client ? q_SSLv23_client_method() : q_SSLv23_server_method());
-#else
- // TLS 1.1/1.2 not supported by the system, but chosen deliberately -> error
- sslContext->ctx = 0;
- unsupportedProtocol = true;
-#endif
- break;
- case QSsl::TlsV1_3:
- case QSsl::TlsV1_3OrLater:
- // TLS 1.3 is not supported by the system, but chosen deliberately -> error
- sslContext->ctx = nullptr;
- unsupportedProtocol = true;
- break;
- }
-
- if (!client && isDtls && configuration.peerVerifyMode() != QSslSocket::VerifyNone) {
- sslContext->errorStr = QSslSocket::tr("DTLS server requires a 'VerifyNone' mode with your version of OpenSSL");
- sslContext->errorCode = QSslError::UnspecifiedError;
- return;
- }
-
- if (!sslContext->ctx) {
- // After stopping Flash 10 the SSL library loses its ciphers. Try re-adding them
- // by re-initializing the library.
- if (!reinitialized) {
- reinitialized = true;
- if (q_SSL_library_init() == 1)
- goto init_context;
- }
-
- sslContext->errorStr = QSslSocket::tr("Error creating SSL context (%1)").arg(
- unsupportedProtocol ? QSslSocket::tr("unsupported protocol") : QSslSocketBackendPrivate::getErrorsFromOpenSsl()
- );
- sslContext->errorCode = QSslError::UnspecifiedError;
- return;
- }
-
- // Enable bug workarounds.
- // DTLSTODO: check this setupOpenSslOptions ...
- long options = QSslSocketBackendPrivate::setupOpenSslOptions(configuration.protocol(), configuration.d->sslOptions);
- q_SSL_CTX_set_options(sslContext->ctx, options);
-
- // Tell OpenSSL to release memory early
- // http://www.openssl.org/docs/ssl/SSL_CTX_set_mode.html
- q_SSL_CTX_set_mode(sslContext->ctx, SSL_MODE_RELEASE_BUFFERS);
-
- // Initialize ciphers
- QByteArray cipherString;
- bool first = true;
- QList<QSslCipher> ciphers = sslContext->sslConfiguration.ciphers();
- if (ciphers.isEmpty())
- ciphers = isDtls ? q_getDefaultDtlsCiphers() : QSslSocketPrivate::defaultCiphers();
- for (const QSslCipher &cipher : qAsConst(ciphers)) {
- if (first)
- first = false;
- else
- cipherString.append(':');
- cipherString.append(cipher.name().toLatin1());
- }
-
- if (!q_SSL_CTX_set_cipher_list(sslContext->ctx, cipherString.data())) {
- sslContext->errorStr = QSslSocket::tr("Invalid or empty cipher list (%1)").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl());
- sslContext->errorCode = QSslError::UnspecifiedError;
- return;
- }
-
- const QDateTime now = QDateTime::currentDateTimeUtc();
-
- // Add all our CAs to this store.
- const auto caCertificates = sslContext->sslConfiguration.caCertificates();
- for (const QSslCertificate &caCertificate : caCertificates) {
- // From https://www.openssl.org/docs/ssl/SSL_CTX_load_verify_locations.html:
- //
- // If several CA certificates matching the name, key identifier, and
- // serial number condition are available, only the first one will be
- // examined. This may lead to unexpected results if the same CA
- // certificate is available with different expiration dates. If a
- // ``certificate expired'' verification error occurs, no other
- // certificate will be searched. Make sure to not have expired
- // certificates mixed with valid ones.
- //
- // See also: QSslSocketBackendPrivate::verify()
- if (caCertificate.expiryDate() >= now) {
- q_X509_STORE_add_cert(q_SSL_CTX_get_cert_store(sslContext->ctx), (X509 *)caCertificate.handle());
- }
- }
-
- if (QSslSocketPrivate::s_loadRootCertsOnDemand && allowRootCertOnDemandLoading) {
- // tell OpenSSL the directories where to look up the root certs on demand
- const QList<QByteArray> unixDirs = QSslSocketPrivate::unixRootCertDirectories();
- for (const QByteArray &unixDir : unixDirs)
- q_SSL_CTX_load_verify_locations(sslContext->ctx, 0, unixDir.constData());
- }
-
- if (!sslContext->sslConfiguration.localCertificate().isNull()) {
- // Require a private key as well.
- if (sslContext->sslConfiguration.privateKey().isNull()) {
- sslContext->errorStr = QSslSocket::tr("Cannot provide a certificate with no key, %1").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl());
- sslContext->errorCode = QSslError::UnspecifiedError;
- return;
- }
-
- // Load certificate
- if (!q_SSL_CTX_use_certificate(sslContext->ctx, (X509 *)sslContext->sslConfiguration.localCertificate().handle())) {
- sslContext->errorStr = QSslSocket::tr("Error loading local certificate, %1").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl());
- sslContext->errorCode = QSslError::UnspecifiedError;
- return;
- }
-
- if (configuration.d->privateKey.algorithm() == QSsl::Opaque) {
- sslContext->pkey = reinterpret_cast<EVP_PKEY *>(configuration.d->privateKey.handle());
- } else {
- // Load private key
- sslContext->pkey = q_EVP_PKEY_new();
- // before we were using EVP_PKEY_assign_R* functions and did not use EVP_PKEY_free.
- // this lead to a memory leak. Now we use the *_set1_* functions which do not
- // take ownership of the RSA/DSA key instance because the QSslKey already has ownership.
- if (configuration.d->privateKey.algorithm() == QSsl::Rsa)
- q_EVP_PKEY_set1_RSA(sslContext->pkey, reinterpret_cast<RSA *>(configuration.d->privateKey.handle()));
- else if (configuration.d->privateKey.algorithm() == QSsl::Dsa)
- q_EVP_PKEY_set1_DSA(sslContext->pkey, reinterpret_cast<DSA *>(configuration.d->privateKey.handle()));
-#ifndef OPENSSL_NO_EC
- else if (configuration.d->privateKey.algorithm() == QSsl::Ec)
- q_EVP_PKEY_set1_EC_KEY(sslContext->pkey, reinterpret_cast<EC_KEY *>(configuration.d->privateKey.handle()));
-#endif
- }
-
- if (!q_SSL_CTX_use_PrivateKey(sslContext->ctx, sslContext->pkey)) {
- sslContext->errorStr = QSslSocket::tr("Error loading private key, %1").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl());
- sslContext->errorCode = QSslError::UnspecifiedError;
- return;
- }
- if (configuration.d->privateKey.algorithm() == QSsl::Opaque)
- sslContext->pkey = 0; // Don't free the private key, it belongs to QSslKey
-
- // Check if the certificate matches the private key.
- if (!q_SSL_CTX_check_private_key(sslContext->ctx)) {
- sslContext->errorStr = QSslSocket::tr("Private key does not certify public key, %1").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl());
- sslContext->errorCode = QSslError::UnspecifiedError;
- return;
- }
-
- // If we have any intermediate certificates then we need to add them to our chain
- bool first = true;
- for (const QSslCertificate &cert : qAsConst(configuration.d->localCertificateChain)) {
- if (first) {
- first = false;
- continue;
- }
- q_SSL_CTX_ctrl(sslContext->ctx, SSL_CTRL_EXTRA_CHAIN_CERT, 0,
- q_X509_dup(reinterpret_cast<X509 *>(cert.handle())));
- }
- }
-
- // Initialize peer verification.
- if (sslContext->sslConfiguration.peerVerifyMode() == QSslSocket::VerifyNone) {
- q_SSL_CTX_set_verify(sslContext->ctx, SSL_VERIFY_NONE, 0);
- } else {
- q_SSL_CTX_set_verify(sslContext->ctx, SSL_VERIFY_PEER,
-#if QT_CONFIG(dtls)
- isDtls ? dtlscallbacks::q_X509DtlsCallback :
-#endif // dtls
- q_X509Callback);
- }
-
-#if QT_CONFIG(dtls)
- if (mode == QSslSocket::SslServerMode && isDtls && configuration.dtlsCookieVerificationEnabled()) {
- q_SSL_CTX_set_cookie_generate_cb(sslContext->ctx, dtlscallbacks::q_generate_cookie_callback);
- q_SSL_CTX_set_cookie_verify_cb(sslContext->ctx, CookieVerifyCallback(dtlscallbacks::q_verify_cookie_callback));
- }
-#endif // dtls
-
- // Set verification depth.
- if (sslContext->sslConfiguration.peerVerifyDepth() != 0)
- q_SSL_CTX_set_verify_depth(sslContext->ctx, sslContext->sslConfiguration.peerVerifyDepth());
-
- // set persisted session if the user set it
- if (!configuration.sessionTicket().isEmpty())
- sslContext->setSessionASN1(configuration.sessionTicket());
-
- // Set temp DH params
- QSslDiffieHellmanParameters dhparams = configuration.diffieHellmanParameters();
-
- if (!dhparams.isValid()) {
- sslContext->errorStr = QSslSocket::tr("Diffie-Hellman parameters are not valid");
- sslContext->errorCode = QSslError::UnspecifiedError;
- return;
- }
-
- if (!dhparams.isEmpty()) {
- const QByteArray &params = dhparams.d->derData;
- const char *ptr = params.constData();
- DH *dh = q_d2i_DHparams(NULL, reinterpret_cast<const unsigned char **>(&ptr), params.length());
- if (dh == NULL)
- qFatal("q_d2i_DHparams failed to convert QSslDiffieHellmanParameters to DER form");
- q_SSL_CTX_set_tmp_dh(sslContext->ctx, dh);
- q_DH_free(dh);
- }
-
-#ifndef OPENSSL_NO_EC
-#if OPENSSL_VERSION_NUMBER >= 0x10002000L
- if (q_SSLeay() >= 0x10002000L) {
- q_SSL_CTX_ctrl(sslContext->ctx, SSL_CTRL_SET_ECDH_AUTO, 1, NULL);
- } else
-#endif
- {
- // Set temp ECDH params
- EC_KEY *ecdh = 0;
- ecdh = q_EC_KEY_new_by_curve_name(NID_X9_62_prime256v1);
- q_SSL_CTX_set_tmp_ecdh(sslContext->ctx, ecdh);
- q_EC_KEY_free(ecdh);
- }
-#endif // OPENSSL_NO_EC
-
-#if OPENSSL_VERSION_NUMBER >= 0x10001000L && !defined(OPENSSL_NO_PSK)
- if (!client)
- q_SSL_CTX_use_psk_identity_hint(sslContext->ctx, sslContext->sslConfiguration.preSharedKeyIdentityHint().constData());
-#endif // OPENSSL_VERSION_NUMBER >= 0x10001000L && !defined(OPENSSL_NO_PSK)
-
- const QVector<QSslEllipticCurve> qcurves = sslContext->sslConfiguration.ellipticCurves();
- if (!qcurves.isEmpty()) {
-#if OPENSSL_VERSION_NUMBER >= 0x10002000L && !defined(OPENSSL_NO_EC)
- // Set the curves to be used
- if (q_SSLeay() >= 0x10002000L) {
- // SSL_CTX_ctrl wants a non-const pointer as last argument,
- // but let's avoid a copy into a temporary array
- if (!q_SSL_CTX_ctrl(sslContext->ctx,
- SSL_CTRL_SET_CURVES,
- qcurves.size(),
- const_cast<int *>(reinterpret_cast<const int *>(qcurves.data())))) {
- sslContext->errorStr = msgErrorSettingEllipticCurves(QSslSocketBackendPrivate::getErrorsFromOpenSsl());
- sslContext->errorCode = QSslError::UnspecifiedError;
- return;
- }
- } else
-#endif // OPENSSL_VERSION_NUMBER >= 0x10002000L && !defined(OPENSSL_NO_EC)
- {
- // specific curves requested, but not possible to set -> error
- sslContext->errorStr = msgErrorSettingEllipticCurves(QSslSocket::tr("OpenSSL version too old, need at least v1.0.2"));
- sslContext->errorCode = QSslError::UnspecifiedError;
- return;
- }
- }
-
- applyBackendConfig(sslContext);
-}
-
-QT_END_NAMESPACE
diff --git a/src/network/ssl/qsslellipticcurve_openssl.cpp b/src/network/ssl/qsslellipticcurve_openssl.cpp
index b5e38ada53..bb7ad66bd2 100644
--- a/src/network/ssl/qsslellipticcurve_openssl.cpp
+++ b/src/network/ssl/qsslellipticcurve_openssl.cpp
@@ -83,10 +83,8 @@ QSslEllipticCurve QSslEllipticCurve::fromShortName(const QString &name)
const QByteArray curveNameLatin1 = name.toLatin1();
int nid = q_OBJ_sn2nid(curveNameLatin1.data());
-#if OPENSSL_VERSION_NUMBER >= 0x10002000L
- if (nid == 0 && QSslSocket::sslLibraryVersionNumber() >= 0x10002000L)
+ if (nid == 0)
nid = q_EC_curve_nist2nid(curveNameLatin1.data());
-#endif // OPENSSL_VERSION_NUMBER >= 0x10002000L
result.id = nid;
diff --git a/src/network/ssl/qsslkey_openssl.cpp b/src/network/ssl/qsslkey_openssl.cpp
index 888058df22..43cb8c6de8 100644
--- a/src/network/ssl/qsslkey_openssl.cpp
+++ b/src/network/ssl/qsslkey_openssl.cpp
@@ -93,11 +93,7 @@ bool QSslKeyPrivate::fromEVP_PKEY(EVP_PKEY *pkey)
if (pkey == nullptr)
return false;
-#if QT_CONFIG(opensslv11)
const int keyType = q_EVP_PKEY_type(q_EVP_PKEY_base_id(pkey));
-#else
- const int keyType = pkey->type;
-#endif
if (keyType == EVP_PKEY_RSA) {
isNull = false;
algorithm = QSsl::Rsa;
@@ -350,33 +346,17 @@ static QByteArray doCrypt(QSslKeyPrivate::Cipher cipher, const QByteArray &data,
QByteArray output;
output.resize(data.size() + EVP_MAX_BLOCK_LENGTH);
-#if QT_CONFIG(opensslv11)
EVP_CIPHER_CTX *ctx = q_EVP_CIPHER_CTX_new();
q_EVP_CIPHER_CTX_reset(ctx);
-#else
- EVP_CIPHER_CTX evpCipherContext;
- EVP_CIPHER_CTX *ctx = &evpCipherContext;
- q_EVP_CIPHER_CTX_init(ctx);
-#endif
-
q_EVP_CipherInit(ctx, type, nullptr, nullptr, enc);
q_EVP_CIPHER_CTX_set_key_length(ctx, key.size());
if (cipher == QSslKeyPrivate::Rc2Cbc)
q_EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_SET_RC2_KEY_BITS, 8 * key.size(), nullptr);
-#if QT_CONFIG(opensslv11)
- // EVP_CipherInit in 1.1 resets the context thus making the calls above useless.
- // We call EVP_CipherInit_ex instead.
q_EVP_CipherInit_ex(ctx, nullptr, nullptr,
reinterpret_cast<const unsigned char *>(key.constData()),
reinterpret_cast<const unsigned char *>(iv.constData()),
enc);
-#else
- q_EVP_CipherInit(ctx, NULL,
- reinterpret_cast<const unsigned char *>(key.constData()),
- reinterpret_cast<const unsigned char *>(iv.constData()), enc);
-#endif // opensslv11
-
q_EVP_CipherUpdate(ctx,
reinterpret_cast<unsigned char *>(output.data()), &len,
reinterpret_cast<const unsigned char *>(data.constData()), data.size());
@@ -384,12 +364,8 @@ static QByteArray doCrypt(QSslKeyPrivate::Cipher cipher, const QByteArray &data,
reinterpret_cast<unsigned char *>(output.data()) + len, &i);
len += i;
-#if QT_CONFIG(opensslv11)
q_EVP_CIPHER_CTX_reset(ctx);
q_EVP_CIPHER_CTX_free(ctx);
-#else
- q_EVP_CIPHER_CTX_cleanup(ctx);
-#endif
return output.left(len);
}
diff --git a/src/network/ssl/qsslsocket.cpp b/src/network/ssl/qsslsocket.cpp
index e302aa1761..690251727d 100644
--- a/src/network/ssl/qsslsocket.cpp
+++ b/src/network/ssl/qsslsocket.cpp
@@ -139,10 +139,21 @@
before the handshake phase with setLocalCertificate() and
setPrivateKey().
\li The CA certificate database can be extended and customized with
- addCaCertificate(), addCaCertificates(), addDefaultCaCertificate(),
- addDefaultCaCertificates(), and QSslConfiguration::defaultConfiguration().setCaCertificates().
+ QSslConfiguration::addCaCertificate(),
+ QSslConfiguration::addCaCertificates().
\endlist
+ To extend the list of \e default CA certificates used by the SSL sockets
+ during the SSL handshake you must update the default configuration, as
+ in the snippet below:
+
+ \code
+ QList<QSslCertificate> certificates = getCertificates();
+ QSslConfiguration configuration = QSslConfiguration::defaultConfiguration();
+ configuration.addCaCertificates(certificates);
+ QSslConfiguration::setDefaultConfiguration(configuration);
+ \endcode
+
\note If available, root certificates on Unix (excluding \macos) will be
loaded on demand from the standard certificate directories. If you do not
want to load root certificates on demand, you need to call either
@@ -1384,6 +1395,10 @@ QList<QSslCipher> QSslSocket::supportedCiphers()
#endif // #if QT_DEPRECATED_SINCE(5, 5)
/*!
+ \deprecated
+
+ Use QSslConfiguration::addCaCertificates() instead.
+
Searches all files in the \a path for certificates encoded in the
specified \a format and adds them to this socket's CA certificate
database. \a path must be a file or a pattern matching one or more
@@ -1411,6 +1426,10 @@ bool QSslSocket::addCaCertificates(const QString &path, QSsl::EncodingFormat for
}
/*!
+ \deprecated
+
+ Use QSslConfiguration::addCaCertificate() instead.
+
Adds the \a certificate to this socket's CA certificate database.
The CA certificate database is used by the socket during the
handshake phase to validate the peer's certificate.
@@ -1427,6 +1446,10 @@ void QSslSocket::addCaCertificate(const QSslCertificate &certificate)
}
/*!
+ \deprecated
+
+ Use QSslConfiguration::addCaCertificates() instead.
+
Adds the \a certificates to this socket's CA certificate database.
The CA certificate database is used by the socket during the
handshake phase to validate the peer's certificate.
@@ -1489,6 +1512,10 @@ QList<QSslCertificate> QSslSocket::caCertificates() const
#endif // #if QT_DEPRECATED_SINCE(5, 5)
/*!
+ \deprecated
+
+ Use QSslConfiguration::addCaCertificates() on the default QSslConfiguration instead.
+
Searches all files in the \a path for certificates with the
specified \a encoding and adds them to the default CA certificate
database. \a path can be an explicit file, or it can contain
@@ -1498,8 +1525,8 @@ QList<QSslCertificate> QSslSocket::caCertificates() const
Each SSL socket's CA certificate database is initialized to the
default CA certificate database.
- \sa QSslConfiguration::caCertificates(), addCaCertificates(),
- addDefaultCaCertificate()
+ \sa QSslConfiguration::caCertificates(), QSslConfiguration::addCaCertificates(),
+ QSslConfiguration::addDefaultCaCertificate()
*/
bool QSslSocket::addDefaultCaCertificates(const QString &path, QSsl::EncodingFormat encoding,
QRegExp::PatternSyntax syntax)
@@ -1508,11 +1535,15 @@ bool QSslSocket::addDefaultCaCertificates(const QString &path, QSsl::EncodingFor
}
/*!
+ \deprecated
+
+ Use QSslConfiguration::addCaCertificate() on the default QSslConfiguration instead.
+
Adds \a certificate to the default CA certificate database. Each
SSL socket's CA certificate database is initialized to the default
CA certificate database.
- \sa QSslConfiguration::caCertificates(), addCaCertificates()
+ \sa QSslConfiguration::caCertificates(), QSslConfiguration::addCaCertificates()
*/
void QSslSocket::addDefaultCaCertificate(const QSslCertificate &certificate)
{
@@ -1520,11 +1551,15 @@ void QSslSocket::addDefaultCaCertificate(const QSslCertificate &certificate)
}
/*!
+ \deprecated
+
+ Use QSslConfiguration::addCaCertificates() on the default QSslConfiguration instead.
+
Adds \a certificates to the default CA certificate database. Each
SSL socket's CA certificate database is initialized to the default
CA certificate database.
- \sa QSslConfiguration::caCertificates(), addCaCertificates()
+ \sa QSslConfiguration::caCertificates(), QSslConfiguration::addCaCertificates()
*/
void QSslSocket::addDefaultCaCertificates(const QList<QSslCertificate> &certificates)
{
diff --git a/src/network/ssl/qsslsocket.h b/src/network/ssl/qsslsocket.h
index 35943c7d7e..843e2d15f5 100644
--- a/src/network/ssl/qsslsocket.h
+++ b/src/network/ssl/qsslsocket.h
@@ -164,18 +164,22 @@ public:
#endif // QT_DEPRECATED_SINCE(5, 5)
// CA settings.
- bool addCaCertificates(const QString &path, QSsl::EncodingFormat format = QSsl::Pem,
+#if QT_DEPRECATED_SINCE(5, 15)
+ QT_DEPRECATED_X("Use QSslConfiguration::addCaCertificates()") bool addCaCertificates(const QString &path, QSsl::EncodingFormat format = QSsl::Pem,
QRegExp::PatternSyntax syntax = QRegExp::FixedString);
- void addCaCertificate(const QSslCertificate &certificate);
- void addCaCertificates(const QList<QSslCertificate> &certificates);
+ QT_DEPRECATED_X("Use QSslConfiguration::addCaCertificate()") void addCaCertificate(const QSslCertificate &certificate);
+ QT_DEPRECATED_X("Use QSslConfiguration::addCaCertificates()") void addCaCertificates(const QList<QSslCertificate> &certificates);
+#endif // QT_DEPRECATED_SINCE(5, 15)
#if QT_DEPRECATED_SINCE(5, 5)
QT_DEPRECATED_X("Use QSslConfiguration::setCaCertificates()") void setCaCertificates(const QList<QSslCertificate> &certificates);
QT_DEPRECATED_X("Use QSslConfiguration::caCertificates()") QList<QSslCertificate> caCertificates() const;
#endif // QT_DEPRECATED_SINCE(5, 5)
- static bool addDefaultCaCertificates(const QString &path, QSsl::EncodingFormat format = QSsl::Pem,
+#if QT_DEPRECATED_SINCE(5, 15)
+ QT_DEPRECATED static bool addDefaultCaCertificates(const QString &path, QSsl::EncodingFormat format = QSsl::Pem,
QRegExp::PatternSyntax syntax = QRegExp::FixedString);
- static void addDefaultCaCertificate(const QSslCertificate &certificate);
- static void addDefaultCaCertificates(const QList<QSslCertificate> &certificates);
+ QT_DEPRECATED static void addDefaultCaCertificate(const QSslCertificate &certificate);
+ QT_DEPRECATED static void addDefaultCaCertificates(const QList<QSslCertificate> &certificates);
+#endif // QT_DEPRECATED_SINCE(5, 15)
#if QT_DEPRECATED_SINCE(5, 5)
QT_DEPRECATED static void setDefaultCaCertificates(const QList<QSslCertificate> &certificates);
QT_DEPRECATED static QList<QSslCertificate> defaultCaCertificates();
diff --git a/src/network/ssl/qsslsocket_openssl.cpp b/src/network/ssl/qsslsocket_openssl.cpp
index 51510f1c60..8fbbffcaca 100644
--- a/src/network/ssl/qsslsocket_openssl.cpp
+++ b/src/network/ssl/qsslsocket_openssl.cpp
@@ -66,15 +66,12 @@
#include "qsslpresharedkeyauthenticator.h"
#include "qsslpresharedkeyauthenticator_p.h"
#include "qocspresponse_p.h"
+#include "qsslkey.h"
#ifdef Q_OS_WIN
#include "qwindowscarootfetcher_p.h"
#endif
-#if !QT_CONFIG(opensslv11)
-#include <openssl/x509_vfy.h>
-#endif
-
#include <QtCore/qdatetime.h>
#include <QtCore/qdebug.h>
#include <QtCore/qdir.h>
@@ -87,6 +84,8 @@
#include <QtCore/qurl.h>
#include <QtCore/qvarlengtharray.h>
#include <QtCore/qscopedvaluerollback.h>
+#include <QtCore/qlibrary.h>
+#include <QtCore/qoperatingsystemversion.h>
#if QT_CONFIG(ocsp)
#include "qocsp_p.h"
@@ -99,13 +98,12 @@
QT_BEGIN_NAMESPACE
+Q_GLOBAL_STATIC(QRecursiveMutex, qt_opensslInitMutex)
+
bool QSslSocketPrivate::s_libraryLoaded = false;
bool QSslSocketPrivate::s_loadedCiphersAndCerts = false;
bool QSslSocketPrivate::s_loadRootCertsOnDemand = false;
-
-#if OPENSSL_VERSION_NUMBER >= 0x10001000L
int QSslSocketBackendPrivate::s_indexForSSLExtraData = -1;
-#endif
QString QSslSocketBackendPrivate::getErrorsFromOpenSsl()
{
@@ -123,7 +121,7 @@ QString QSslSocketBackendPrivate::getErrorsFromOpenSsl()
extern "C" {
-#if OPENSSL_VERSION_NUMBER >= 0x10001000L && !defined(OPENSSL_NO_PSK)
+#ifndef OPENSSL_NO_PSK
static unsigned int q_ssl_psk_client_callback(SSL *ssl,
const char *hint,
char *identity, unsigned int max_identity_len,
@@ -144,7 +142,6 @@ static unsigned int q_ssl_psk_server_callback(SSL *ssl,
}
#ifdef TLS1_3_VERSION
-#ifndef OPENSSL_NO_PSK
static unsigned int q_ssl_psk_restore_client(SSL *ssl,
const char *hint,
char *identity, unsigned int max_identity_len,
@@ -165,7 +162,6 @@ static unsigned int q_ssl_psk_restore_client(SSL *ssl,
return 0;
}
-#endif // !OPENSSL_NO_PSK
static int q_ssl_psk_use_session_callback(SSL *ssl, const EVP_MD *md, const unsigned char **id,
size_t *idlen, SSL_SESSION **sess)
@@ -176,7 +172,6 @@ static int q_ssl_psk_use_session_callback(SSL *ssl, const EVP_MD *md, const unsi
Q_UNUSED(idlen);
Q_UNUSED(sess);
-#ifndef OPENSSL_NO_PSK
#ifdef QT_DEBUG
QSslSocketBackendPrivate *d = reinterpret_cast<QSslSocketBackendPrivate *>(q_SSL_get_ex_data(ssl, QSslSocketBackendPrivate::s_indexForSSLExtraData));
Q_ASSERT(d);
@@ -185,13 +180,12 @@ static int q_ssl_psk_use_session_callback(SSL *ssl, const EVP_MD *md, const unsi
// Temporarily rebind the psk because it will be called next. The function will restore it.
q_SSL_set_psk_client_callback(ssl, &q_ssl_psk_restore_client);
-#endif
return 1; // need to return 1 or else "the connection setup fails."
}
#endif // TLS1_3_VERSION
-#endif
+#endif // !OPENSSL_NO_PSK
#if QT_CONFIG(ocsp)
@@ -408,13 +402,8 @@ int q_X509Callback(int ok, X509_STORE_CTX *ctx)
ErrorListPtr errors = nullptr;
// Error list is attached to either 'SSL' or 'X509_STORE'.
- if (X509_STORE *store = q_X509_STORE_CTX_get0_store(ctx)) { // We try store first:
-#if QT_CONFIG(opensslv11)
+ if (X509_STORE *store = q_X509_STORE_CTX_get0_store(ctx)) // We try store first:
errors = ErrorListPtr(q_X509_STORE_get_ex_data(store, 0));
-#else
- errors = ErrorListPtr(q_CRYPTO_get_ex_data(&store->ex_data, 0));
-#endif // opensslv11
- }
if (!errors) {
// Not found on store? Try SSL and its external data then. According to the OpenSSL's
@@ -477,17 +466,12 @@ long QSslSocketBackendPrivate::setupOpenSslOptions(QSsl::SslProtocol protocol, Q
options = SSL_OP_ALL|SSL_OP_NO_SSLv2|SSL_OP_NO_SSLv3;
else if (protocol == QSsl::TlsV1_0OrLater)
options = SSL_OP_ALL|SSL_OP_NO_SSLv2|SSL_OP_NO_SSLv3;
-#if OPENSSL_VERSION_NUMBER >= 0x10001000L
- // Choosing Tlsv1_1OrLater or TlsV1_2OrLater on OpenSSL < 1.0.1
- // will cause an error in QSslContext::fromConfiguration, meaning
- // we will never get here.
else if (protocol == QSsl::TlsV1_1OrLater)
options = SSL_OP_ALL|SSL_OP_NO_SSLv2|SSL_OP_NO_SSLv3|SSL_OP_NO_TLSv1;
else if (protocol == QSsl::TlsV1_2OrLater)
options = SSL_OP_ALL|SSL_OP_NO_SSLv2|SSL_OP_NO_SSLv3|SSL_OP_NO_TLSv1|SSL_OP_NO_TLSv1_1;
else if (protocol == QSsl::TlsV1_3OrLater)
options = SSL_OP_ALL|SSL_OP_NO_SSLv2|SSL_OP_NO_SSLv3|SSL_OP_NO_TLSv1|SSL_OP_NO_TLSv1_1|SSL_OP_NO_TLSv1_2;
-#endif
else
options = SSL_OP_ALL;
@@ -591,15 +575,13 @@ bool QSslSocketBackendPrivate::initSslContext()
q_SSL_set_ex_data(ssl, s_indexForSSLExtraData, this);
-#if OPENSSL_VERSION_NUMBER >= 0x10001000L && !defined(OPENSSL_NO_PSK)
+#ifndef OPENSSL_NO_PSK
// Set the client callback for PSK
- if (QSslSocket::sslLibraryVersionNumber() >= 0x10001000L) {
- if (mode == QSslSocket::SslClientMode)
- q_SSL_set_psk_client_callback(ssl, &q_ssl_psk_client_callback);
- else if (mode == QSslSocket::SslServerMode)
- q_SSL_set_psk_server_callback(ssl, &q_ssl_psk_server_callback);
- }
-#endif
+ if (mode == QSslSocket::SslClientMode)
+ q_SSL_set_psk_client_callback(ssl, &q_ssl_psk_client_callback);
+ else if (mode == QSslSocket::SslServerMode)
+ q_SSL_set_psk_server_callback(ssl, &q_ssl_psk_server_callback);
+
#if OPENSSL_VERSION_NUMBER >= 0x10101006L
// Set the client callback for TLSv1.3 PSK
if (mode == QSslSocket::SslClientMode
@@ -608,6 +590,9 @@ bool QSslSocketBackendPrivate::initSslContext()
}
#endif // openssl version >= 0x10101006L
+#endif // OPENSSL_NO_PSK
+
+
#if QT_CONFIG(ocsp)
if (configuration.ocspStaplingEnabled) {
if (mode == QSslSocket::SslServerMode) {
@@ -674,10 +659,43 @@ bool QSslSocketPrivate::supportsSsl()
/*!
\internal
+ Returns the version number of the SSL library in use. Note that
+ this is the version of the library in use at run-time, not compile
+ time.
+*/
+long QSslSocketPrivate::sslLibraryVersionNumber()
+{
+ if (!supportsSsl())
+ return 0;
+
+ return q_OpenSSL_version_num();
+}
+
+/*!
+ \internal
+
+ Returns the version string of the SSL library in use. Note that
+ this is the version of the library in use at run-time, not compile
+ time. If no SSL support is available then this will return an empty value.
+*/
+QString QSslSocketPrivate::sslLibraryVersionString()
+{
+ if (!supportsSsl())
+ return QString();
+
+ const char *versionString = q_OpenSSL_version(OPENSSL_VERSION);
+ if (!versionString)
+ return QString();
+
+ return QString::fromLatin1(versionString);
+}
+
+/*!
+ \internal
+
Declared static in QSslSocketPrivate, makes sure the SSL libraries have
been initialized.
*/
-
void QSslSocketPrivate::ensureInitialized()
{
if (!supportsSsl())
@@ -686,11 +704,23 @@ void QSslSocketPrivate::ensureInitialized()
ensureCiphersAndCertsLoaded();
}
+/*!
+ \internal
+
+ Returns the version number of the SSL library in use at compile
+ time.
+*/
long QSslSocketPrivate::sslLibraryBuildVersionNumber()
{
return OPENSSL_VERSION_NUMBER;
}
+/*!
+ \internal
+
+ Returns the version string of the SSL library in use at compile
+ time.
+*/
QString QSslSocketPrivate::sslLibraryBuildVersionString()
{
// Using QStringLiteral to store the version string as unicode and
@@ -707,11 +737,7 @@ QString QSslSocketPrivate::sslLibraryBuildVersionString()
*/
void QSslSocketPrivate::resetDefaultCiphers()
{
-#if QT_CONFIG(opensslv11)
SSL_CTX *myCtx = q_SSL_CTX_new(q_TLS_client_method());
-#else
- SSL_CTX *myCtx = q_SSL_CTX_new(q_SSLv23_client_method());
-#endif
// Note, we assert, not just silently return/bail out early:
// this should never happen and problems with OpenSSL's initialization
// must be caught before this (see supportsSsl()).
@@ -1738,6 +1764,174 @@ QSsl::SslProtocol QSslSocketBackendPrivate::sessionProtocol() const
return QSsl::UnknownProtocol;
}
+
+void QSslSocketBackendPrivate::continueHandshake()
+{
+ Q_Q(QSslSocket);
+ // if we have a max read buffer size, reset the plain socket's to match
+ if (readBufferMaxSize)
+ plainSocket->setReadBufferSize(readBufferMaxSize);
+
+ if (q_SSL_session_reused(ssl))
+ configuration.peerSessionShared = true;
+
+#ifdef QT_DECRYPT_SSL_TRAFFIC
+ if (q_SSL_get_session(ssl)) {
+ size_t master_key_len = q_SSL_SESSION_get_master_key(q_SSL_get_session(ssl), 0, 0);
+ size_t client_random_len = q_SSL_get_client_random(ssl, 0, 0);
+ QByteArray masterKey(int(master_key_len), 0); // Will not overflow
+ QByteArray clientRandom(int(client_random_len), 0); // Will not overflow
+
+ q_SSL_SESSION_get_master_key(q_SSL_get_session(ssl),
+ reinterpret_cast<unsigned char*>(masterKey.data()),
+ masterKey.size());
+ q_SSL_get_client_random(ssl, reinterpret_cast<unsigned char *>(clientRandom.data()),
+ clientRandom.size());
+
+ QByteArray debugLineClientRandom("CLIENT_RANDOM ");
+ debugLineClientRandom.append(clientRandom.toHex().toUpper());
+ debugLineClientRandom.append(" ");
+ debugLineClientRandom.append(masterKey.toHex().toUpper());
+ debugLineClientRandom.append("\n");
+
+ QString sslKeyFile = QDir::tempPath() + QLatin1String("/qt-ssl-keys");
+ QFile file(sslKeyFile);
+ if (!file.open(QIODevice::Append))
+ qCWarning(lcSsl) << "could not open file" << sslKeyFile << "for appending";
+ if (!file.write(debugLineClientRandom))
+ qCWarning(lcSsl) << "could not write to file" << sslKeyFile;
+ file.close();
+ } else {
+ qCWarning(lcSsl, "could not decrypt SSL traffic");
+ }
+#endif
+
+ // Cache this SSL session inside the QSslContext
+ if (!(configuration.sslOptions & QSsl::SslOptionDisableSessionSharing)) {
+ if (!sslContextPointer->cacheSession(ssl)) {
+ sslContextPointer.clear(); // we could not cache the session
+ } else {
+ // Cache the session for permanent usage as well
+ if (!(configuration.sslOptions & QSsl::SslOptionDisableSessionPersistence)) {
+ if (!sslContextPointer->sessionASN1().isEmpty())
+ configuration.sslSession = sslContextPointer->sessionASN1();
+ configuration.sslSessionTicketLifeTimeHint = sslContextPointer->sessionTicketLifeTimeHint();
+ }
+ }
+ }
+
+#if !defined(OPENSSL_NO_NEXTPROTONEG)
+
+ configuration.nextProtocolNegotiationStatus = sslContextPointer->npnContext().status;
+ if (sslContextPointer->npnContext().status == QSslConfiguration::NextProtocolNegotiationUnsupported) {
+ // we could not agree -> be conservative and use HTTP/1.1
+ configuration.nextNegotiatedProtocol = QByteArrayLiteral("http/1.1");
+ } else {
+ const unsigned char *proto = nullptr;
+ unsigned int proto_len = 0;
+
+ q_SSL_get0_alpn_selected(ssl, &proto, &proto_len);
+ if (proto_len && mode == QSslSocket::SslClientMode) {
+ // Client does not have a callback that sets it ...
+ configuration.nextProtocolNegotiationStatus = QSslConfiguration::NextProtocolNegotiationNegotiated;
+ }
+
+ if (!proto_len) { // Test if NPN was more lucky ...
+ q_SSL_get0_next_proto_negotiated(ssl, &proto, &proto_len);
+ }
+
+ if (proto_len)
+ configuration.nextNegotiatedProtocol = QByteArray(reinterpret_cast<const char *>(proto), proto_len);
+ else
+ configuration.nextNegotiatedProtocol.clear();
+ }
+#endif // !defined(OPENSSL_NO_NEXTPROTONEG)
+
+ if (mode == QSslSocket::SslClientMode) {
+ EVP_PKEY *key;
+ if (q_SSL_get_server_tmp_key(ssl, &key))
+ configuration.ephemeralServerKey = QSslKey(key, QSsl::PublicKey);
+ }
+
+ connectionEncrypted = true;
+ emit q->encrypted();
+ if (autoStartHandshake && pendingClose) {
+ pendingClose = false;
+ q->disconnectFromHost();
+ }
+}
+
+bool QSslSocketPrivate::ensureLibraryLoaded()
+{
+ if (!q_resolveOpenSslSymbols())
+ return false;
+
+ const QMutexLocker locker(qt_opensslInitMutex);
+
+ if (!s_libraryLoaded) {
+ // Initialize OpenSSL.
+ if (q_OPENSSL_init_ssl(0, nullptr) != 1)
+ return false;
+ q_SSL_load_error_strings();
+ q_OpenSSL_add_all_algorithms();
+
+ QSslSocketBackendPrivate::s_indexForSSLExtraData
+ = q_CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL, 0L, nullptr, nullptr,
+ nullptr, nullptr);
+
+ // Initialize OpenSSL's random seed.
+ if (!q_RAND_status()) {
+ qWarning("Random number generator not seeded, disabling SSL support");
+ return false;
+ }
+
+ s_libraryLoaded = true;
+ }
+ return true;
+}
+
+void QSslSocketPrivate::ensureCiphersAndCertsLoaded()
+{
+ const QMutexLocker locker(qt_opensslInitMutex);
+
+ if (s_loadedCiphersAndCerts)
+ return;
+ s_loadedCiphersAndCerts = true;
+
+ resetDefaultCiphers();
+ resetDefaultEllipticCurves();
+
+#if QT_CONFIG(library)
+ //load symbols needed to receive certificates from system store
+#if defined(Q_OS_QNX)
+ s_loadRootCertsOnDemand = true;
+#elif defined(Q_OS_UNIX) && !defined(Q_OS_DARWIN)
+ // check whether we can enable on-demand root-cert loading (i.e. check whether the sym links are there)
+ QList<QByteArray> dirs = unixRootCertDirectories();
+ QStringList symLinkFilter;
+ symLinkFilter << QLatin1String("[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f].[0-9]");
+ for (int a = 0; a < dirs.count(); ++a) {
+ QDirIterator iterator(QLatin1String(dirs.at(a)), symLinkFilter, QDir::Files);
+ if (iterator.hasNext()) {
+ s_loadRootCertsOnDemand = true;
+ break;
+ }
+ }
+#endif
+#endif // QT_CONFIG(library)
+ // if on-demand loading was not enabled, load the certs now
+ if (!s_loadRootCertsOnDemand)
+ setDefaultCaCertificates(systemCaCertificates());
+#ifdef Q_OS_WIN
+ //Enabled for fetching additional root certs from windows update on windows.
+ //This flag is set false by setDefaultCaCertificates() indicating the app uses
+ //its own cert bundle rather than the system one.
+ //Same logic that disables the unix on demand cert loading.
+ //Unlike unix, we do preload the certificates from the cert store.
+ s_loadRootCertsOnDemand = true;
+#endif
+}
+
QList<QSslCertificate> QSslSocketBackendPrivate::STACKOFX509_to_QSslCertificates(STACK_OF(X509) *x509)
{
ensureInitialized();
@@ -1790,19 +1984,11 @@ QList<QSslError> QSslSocketBackendPrivate::verify(const QList<QSslCertificate> &
}
QVector<QSslErrorEntry> lastErrors;
-#if QT_CONFIG(opensslv11)
if (!q_X509_STORE_set_ex_data(certStore, 0, &lastErrors)) {
qCWarning(lcSsl) << "Unable to attach external data (error list) to a store";
errors << QSslError(QSslError::UnspecifiedError);
return errors;
}
-#else
- if (!q_CRYPTO_set_ex_data(&certStore->ex_data, 0, &lastErrors)) {
- qCWarning(lcSsl) << "Unable to attach external data (error list) to a store";
- errors << QSslError(QSslError::UnspecifiedError);
- return errors;
- }
-#endif // opensslv11
// Register a custom callback to get all verification errors.
q_X509_STORE_set_verify_cb(certStore, q_X509Callback);
diff --git a/src/network/ssl/qsslsocket_openssl11.cpp b/src/network/ssl/qsslsocket_openssl11.cpp
deleted file mode 100644
index 1d935c5217..0000000000
--- a/src/network/ssl/qsslsocket_openssl11.cpp
+++ /dev/null
@@ -1,271 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Copyright (C) 2014 Governikus GmbH & Co. KG
-** Copyright (C) 2016 Richard J. Moore <rich@kde.org>
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtNetwork module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/****************************************************************************
-**
-** In addition, as a special exception, the copyright holders listed above give
-** permission to link the code of its release of Qt with the OpenSSL project's
-** "OpenSSL" library (or modified versions of the "OpenSSL" library that use the
-** same license as the original version), and distribute the linked executables.
-**
-** You must comply with the GNU General Public License version 2 in all
-** respects for all of the code used other than the "OpenSSL" code. If you
-** modify this file, you may extend this exception to your version of the file,
-** but you are not obligated to do so. If you do not wish to do so, delete
-** this exception statement from your version of this file.
-**
-****************************************************************************/
-
-//#define QT_DECRYPT_SSL_TRAFFIC
-
-#include "qssl_p.h"
-#include "qsslsocket_openssl_p.h"
-#include "qsslsocket_openssl_symbols_p.h"
-#include "qsslsocket.h"
-#include "qsslkey.h"
-
-#include <QtCore/qdebug.h>
-#include <QtCore/qdir.h>
-#include <QtCore/qdiriterator.h>
-#include <QtCore/qfile.h>
-#include <QtCore/qmutex.h>
-#include <QtCore/qlibrary.h>
-#include <QtCore/qoperatingsystemversion.h>
-
-QT_BEGIN_NAMESPACE
-
-Q_GLOBAL_STATIC(QRecursiveMutex, qt_opensslInitMutex)
-
-void QSslSocketPrivate::deinitialize()
-{
- // This function exists only for compatibility with the pre-11 code,
- // where deinitialize() actually does some cleanup. To be discarded
- // once we retire < 1.1.
-}
-
-bool QSslSocketPrivate::ensureLibraryLoaded()
-{
- if (!q_resolveOpenSslSymbols())
- return false;
-
- const QMutexLocker locker(qt_opensslInitMutex);
-
- if (!s_libraryLoaded) {
- // Initialize OpenSSL.
- if (q_OPENSSL_init_ssl(0, nullptr) != 1)
- return false;
- q_SSL_load_error_strings();
- q_OpenSSL_add_all_algorithms();
-
- QSslSocketBackendPrivate::s_indexForSSLExtraData
- = q_CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL, 0L, nullptr, nullptr,
- nullptr, nullptr);
-
- // Initialize OpenSSL's random seed.
- if (!q_RAND_status()) {
- qWarning("Random number generator not seeded, disabling SSL support");
- return false;
- }
-
- s_libraryLoaded = true;
- }
- return true;
-}
-
-void QSslSocketPrivate::ensureCiphersAndCertsLoaded()
-{
- const QMutexLocker locker(qt_opensslInitMutex);
-
- if (s_loadedCiphersAndCerts)
- return;
- s_loadedCiphersAndCerts = true;
-
- resetDefaultCiphers();
- resetDefaultEllipticCurves();
-
-#if QT_CONFIG(library)
- //load symbols needed to receive certificates from system store
-#if defined(Q_OS_QNX)
- s_loadRootCertsOnDemand = true;
-#elif defined(Q_OS_UNIX) && !defined(Q_OS_DARWIN)
- // check whether we can enable on-demand root-cert loading (i.e. check whether the sym links are there)
- QList<QByteArray> dirs = unixRootCertDirectories();
- QStringList symLinkFilter;
- symLinkFilter << QLatin1String("[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f].[0-9]");
- for (int a = 0; a < dirs.count(); ++a) {
- QDirIterator iterator(QLatin1String(dirs.at(a)), symLinkFilter, QDir::Files);
- if (iterator.hasNext()) {
- s_loadRootCertsOnDemand = true;
- break;
- }
- }
-#endif
-#endif // QT_CONFIG(library)
- // if on-demand loading was not enabled, load the certs now
- if (!s_loadRootCertsOnDemand)
- setDefaultCaCertificates(systemCaCertificates());
-#ifdef Q_OS_WIN
- //Enabled for fetching additional root certs from windows update on windows.
- //This flag is set false by setDefaultCaCertificates() indicating the app uses
- //its own cert bundle rather than the system one.
- //Same logic that disables the unix on demand cert loading.
- //Unlike unix, we do preload the certificates from the cert store.
- s_loadRootCertsOnDemand = true;
-#endif
-}
-
-long QSslSocketPrivate::sslLibraryVersionNumber()
-{
- if (!supportsSsl())
- return 0;
-
- return q_OpenSSL_version_num();
-}
-
-QString QSslSocketPrivate::sslLibraryVersionString()
-{
- if (!supportsSsl())
- return QString();
-
- const char *versionString = q_OpenSSL_version(OPENSSL_VERSION);
- if (!versionString)
- return QString();
-
- return QString::fromLatin1(versionString);
-}
-
-void QSslSocketBackendPrivate::continueHandshake()
-{
- Q_Q(QSslSocket);
- // if we have a max read buffer size, reset the plain socket's to match
- if (readBufferMaxSize)
- plainSocket->setReadBufferSize(readBufferMaxSize);
-
- if (q_SSL_session_reused(ssl))
- configuration.peerSessionShared = true;
-
-#ifdef QT_DECRYPT_SSL_TRAFFIC
- if (q_SSL_get_session(ssl)) {
- size_t master_key_len = q_SSL_SESSION_get_master_key(q_SSL_get_session(ssl), 0, 0);
- size_t client_random_len = q_SSL_get_client_random(ssl, 0, 0);
- QByteArray masterKey(int(master_key_len), 0); // Will not overflow
- QByteArray clientRandom(int(client_random_len), 0); // Will not overflow
-
- q_SSL_SESSION_get_master_key(q_SSL_get_session(ssl),
- reinterpret_cast<unsigned char*>(masterKey.data()),
- masterKey.size());
- q_SSL_get_client_random(ssl, reinterpret_cast<unsigned char *>(clientRandom.data()),
- clientRandom.size());
-
- QByteArray debugLineClientRandom("CLIENT_RANDOM ");
- debugLineClientRandom.append(clientRandom.toHex().toUpper());
- debugLineClientRandom.append(" ");
- debugLineClientRandom.append(masterKey.toHex().toUpper());
- debugLineClientRandom.append("\n");
-
- QString sslKeyFile = QDir::tempPath() + QLatin1String("/qt-ssl-keys");
- QFile file(sslKeyFile);
- if (!file.open(QIODevice::Append))
- qCWarning(lcSsl) << "could not open file" << sslKeyFile << "for appending";
- if (!file.write(debugLineClientRandom))
- qCWarning(lcSsl) << "could not write to file" << sslKeyFile;
- file.close();
- } else {
- qCWarning(lcSsl, "could not decrypt SSL traffic");
- }
-#endif
-
- // Cache this SSL session inside the QSslContext
- if (!(configuration.sslOptions & QSsl::SslOptionDisableSessionSharing)) {
- if (!sslContextPointer->cacheSession(ssl)) {
- sslContextPointer.clear(); // we could not cache the session
- } else {
- // Cache the session for permanent usage as well
- if (!(configuration.sslOptions & QSsl::SslOptionDisableSessionPersistence)) {
- if (!sslContextPointer->sessionASN1().isEmpty())
- configuration.sslSession = sslContextPointer->sessionASN1();
- configuration.sslSessionTicketLifeTimeHint = sslContextPointer->sessionTicketLifeTimeHint();
- }
- }
- }
-
-#if !defined(OPENSSL_NO_NEXTPROTONEG)
-
- configuration.nextProtocolNegotiationStatus = sslContextPointer->npnContext().status;
- if (sslContextPointer->npnContext().status == QSslConfiguration::NextProtocolNegotiationUnsupported) {
- // we could not agree -> be conservative and use HTTP/1.1
- configuration.nextNegotiatedProtocol = QByteArrayLiteral("http/1.1");
- } else {
- const unsigned char *proto = nullptr;
- unsigned int proto_len = 0;
-
- q_SSL_get0_alpn_selected(ssl, &proto, &proto_len);
- if (proto_len && mode == QSslSocket::SslClientMode) {
- // Client does not have a callback that sets it ...
- configuration.nextProtocolNegotiationStatus = QSslConfiguration::NextProtocolNegotiationNegotiated;
- }
-
- if (!proto_len) { // Test if NPN was more lucky ...
- q_SSL_get0_next_proto_negotiated(ssl, &proto, &proto_len);
- }
-
- if (proto_len)
- configuration.nextNegotiatedProtocol = QByteArray(reinterpret_cast<const char *>(proto), proto_len);
- else
- configuration.nextNegotiatedProtocol.clear();
- }
-#endif // !defined(OPENSSL_NO_NEXTPROTONEG)
-
- if (mode == QSslSocket::SslClientMode) {
- EVP_PKEY *key;
- if (q_SSL_get_server_tmp_key(ssl, &key))
- configuration.ephemeralServerKey = QSslKey(key, QSsl::PublicKey);
- }
-
- connectionEncrypted = true;
- emit q->encrypted();
- if (autoStartHandshake && pendingClose) {
- pendingClose = false;
- q->disconnectFromHost();
- }
-}
-
-QT_END_NAMESPACE
diff --git a/src/network/ssl/qsslsocket_openssl11_symbols_p.h b/src/network/ssl/qsslsocket_openssl11_symbols_p.h
deleted file mode 100644
index 0fe0899d4f..0000000000
--- a/src/network/ssl/qsslsocket_openssl11_symbols_p.h
+++ /dev/null
@@ -1,195 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Copyright (C) 2014 BlackBerry Limited. All rights reserved.
-** Copyright (C) 2016 Richard J. Moore <rich@kde.org>
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtNetwork module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/****************************************************************************
-**
-** In addition, as a special exception, the copyright holders listed above give
-** permission to link the code of its release of Qt with the OpenSSL project's
-** "OpenSSL" library (or modified versions of the "OpenSSL" library that use the
-** same license as the original version), and distribute the linked executables.
-**
-** You must comply with the GNU General Public License version 2 in all
-** respects for all of the code used other than the "OpenSSL" code. If you
-** modify this file, you may extend this exception to your version of the file,
-** but you are not obligated to do so. If you do not wish to do so, delete
-** this exception statement from your version of this file.
-**
-****************************************************************************/
-
-#ifndef QSSLSOCKET_OPENSSL11_SYMBOLS_P_H
-#define QSSLSOCKET_OPENSSL11_SYMBOLS_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.
-//
-
-// Note: this file does not have QT_BEGIN_NAMESPACE/QT_END_NAMESPACE, it's done
-// in qsslsocket_openssl_symbols_p.h.
-
-#ifndef QSSLSOCKET_OPENSSL_SYMBOLS_P_H
-#error "You are not supposed to use this header file, include qsslsocket_openssl_symbols_p.h instead"
-#endif
-
-const unsigned char * q_ASN1_STRING_get0_data(const ASN1_STRING *x);
-
-Q_AUTOTEST_EXPORT BIO *q_BIO_new(const BIO_METHOD *a);
-Q_AUTOTEST_EXPORT const BIO_METHOD *q_BIO_s_mem();
-
-int q_DSA_bits(DSA *a);
-int q_EVP_CIPHER_CTX_reset(EVP_CIPHER_CTX *c);
-Q_AUTOTEST_EXPORT int q_EVP_PKEY_up_ref(EVP_PKEY *a);
-int q_EVP_PKEY_base_id(EVP_PKEY *a);
-int q_RSA_bits(RSA *a);
-Q_AUTOTEST_EXPORT int q_OPENSSL_sk_num(OPENSSL_STACK *a);
-Q_AUTOTEST_EXPORT void q_OPENSSL_sk_pop_free(OPENSSL_STACK *a, void (*b)(void *));
-Q_AUTOTEST_EXPORT OPENSSL_STACK *q_OPENSSL_sk_new_null();
-Q_AUTOTEST_EXPORT void q_OPENSSL_sk_push(OPENSSL_STACK *st, void *data);
-Q_AUTOTEST_EXPORT void q_OPENSSL_sk_free(OPENSSL_STACK *a);
-Q_AUTOTEST_EXPORT void * q_OPENSSL_sk_value(OPENSSL_STACK *a, int b);
-int q_SSL_session_reused(SSL *a);
-unsigned long q_SSL_CTX_set_options(SSL_CTX *ctx, unsigned long op);
-int q_OPENSSL_init_ssl(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings);
-size_t q_SSL_get_client_random(SSL *a, unsigned char *out, size_t outlen);
-size_t q_SSL_SESSION_get_master_key(const SSL_SESSION *session, unsigned char *out, size_t outlen);
-int q_CRYPTO_get_ex_new_index(int class_index, long argl, void *argp, CRYPTO_EX_new *new_func, CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func);
-const SSL_METHOD *q_TLS_method();
-const SSL_METHOD *q_TLS_client_method();
-const SSL_METHOD *q_TLS_server_method();
-ASN1_TIME *q_X509_getm_notBefore(X509 *a);
-ASN1_TIME *q_X509_getm_notAfter(X509 *a);
-
-Q_AUTOTEST_EXPORT void q_X509_up_ref(X509 *a);
-long q_X509_get_version(X509 *a);
-EVP_PKEY *q_X509_get_pubkey(X509 *a);
-void q_X509_STORE_set_verify_cb(X509_STORE *ctx, X509_STORE_CTX_verify_cb verify_cb);
-int q_X509_STORE_set_ex_data(X509_STORE *ctx, int idx, void *data);
-void *q_X509_STORE_get_ex_data(X509_STORE *r, int idx);
-STACK_OF(X509) *q_X509_STORE_CTX_get0_chain(X509_STORE_CTX *ctx);
-void q_DH_get0_pqg(const DH *dh, const BIGNUM **p, const BIGNUM **q, const BIGNUM **g);
-int q_DH_bits(DH *dh);
-
-# define q_SSL_load_error_strings() q_OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS \
- | OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL)
-
-#define q_SKM_sk_num(type, st) ((int (*)(const STACK_OF(type) *))q_OPENSSL_sk_num)(st)
-#define q_SKM_sk_value(type, st,i) ((type * (*)(const STACK_OF(type) *, int))q_OPENSSL_sk_value)(st, i)
-
-#define q_OPENSSL_add_all_algorithms_conf() q_OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \
- | OPENSSL_INIT_ADD_ALL_DIGESTS \
- | OPENSSL_INIT_LOAD_CONFIG, NULL)
-#define q_OPENSSL_add_all_algorithms_noconf() q_OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \
- | OPENSSL_INIT_ADD_ALL_DIGESTS, NULL)
-
-int q_OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings);
-void q_CRYPTO_free(void *str, const char *file, int line);
-
-long q_OpenSSL_version_num();
-const char *q_OpenSSL_version(int type);
-
-unsigned long q_SSL_SESSION_get_ticket_lifetime_hint(const SSL_SESSION *session);
-unsigned long q_SSL_set_options(SSL *s, unsigned long op);
-
-#ifdef TLS1_3_VERSION
-int q_SSL_CTX_set_ciphersuites(SSL_CTX *ctx, const char *str);
-#endif
-
-#if QT_CONFIG(dtls)
-// Functions and types required for DTLS support:
-extern "C"
-{
-
-typedef int (*CookieVerifyCallback)(SSL *, const unsigned char *, unsigned);
-typedef int (*DgramWriteCallback) (BIO *, const char *, int);
-typedef int (*DgramReadCallback) (BIO *, char *, int);
-typedef int (*DgramPutsCallback) (BIO *, const char *);
-typedef long (*DgramCtrlCallback) (BIO *, int, long, void *);
-typedef int (*DgramCreateCallback) (BIO *);
-typedef int (*DgramDestroyCallback) (BIO *);
-
-}
-
-int q_DTLSv1_listen(SSL *s, BIO_ADDR *client);
-BIO_ADDR *q_BIO_ADDR_new();
-void q_BIO_ADDR_free(BIO_ADDR *ap);
-
-// API we need for a custom dgram BIO:
-
-BIO_METHOD *q_BIO_meth_new(int type, const char *name);
-void q_BIO_meth_free(BIO_METHOD *biom);
-int q_BIO_meth_set_write(BIO_METHOD *biom, DgramWriteCallback);
-int q_BIO_meth_set_read(BIO_METHOD *biom, DgramReadCallback);
-int q_BIO_meth_set_puts(BIO_METHOD *biom, DgramPutsCallback);
-int q_BIO_meth_set_ctrl(BIO_METHOD *biom, DgramCtrlCallback);
-int q_BIO_meth_set_create(BIO_METHOD *biom, DgramCreateCallback);
-int q_BIO_meth_set_destroy(BIO_METHOD *biom, DgramDestroyCallback);
-
-#endif // dtls
-
-void q_BIO_set_data(BIO *a, void *ptr);
-void *q_BIO_get_data(BIO *a);
-void q_BIO_set_init(BIO *a, int init);
-int q_BIO_get_shutdown(BIO *a);
-void q_BIO_set_shutdown(BIO *a, int shut);
-
-#if QT_CONFIG(ocsp)
-const OCSP_CERTID *q_OCSP_SINGLERESP_get0_id(const OCSP_SINGLERESP *x);
-#endif // ocsp
-
-#define q_SSL_CTX_set_min_proto_version(ctx, version) \
- q_SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MIN_PROTO_VERSION, version, nullptr)
-
-#define q_SSL_CTX_set_max_proto_version(ctx, version) \
- q_SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MAX_PROTO_VERSION, version, nullptr)
-
-extern "C" {
-typedef int (*q_SSL_psk_use_session_cb_func_t)(SSL *, const EVP_MD *, const unsigned char **, size_t *,
- SSL_SESSION **);
-}
-void q_SSL_set_psk_use_session_callback(SSL *s, q_SSL_psk_use_session_cb_func_t);
-
-#endif
diff --git a/src/network/ssl/qsslsocket_openssl_p.h b/src/network/ssl/qsslsocket_openssl_p.h
index c23234e291..0370a7d2ac 100644
--- a/src/network/ssl/qsslsocket_openssl_p.h
+++ b/src/network/ssl/qsslsocket_openssl_p.h
@@ -130,9 +130,7 @@ public:
BIO *writeBio;
SSL_SESSION *session;
QVector<QSslErrorEntry> errorList;
-#if OPENSSL_VERSION_NUMBER >= 0x10001000L
static int s_indexForSSLExtraData; // index used in SSL_get_ex_data to get the matching QSslSocketBackendPrivate
-#endif
bool inSetAndEmitError = false;
diff --git a/src/network/ssl/qsslsocket_openssl_symbols.cpp b/src/network/ssl/qsslsocket_openssl_symbols.cpp
index 1fcfdf9f16..3504924888 100644
--- a/src/network/ssl/qsslsocket_openssl_symbols.cpp
+++ b/src/network/ssl/qsslsocket_openssl_symbols.cpp
@@ -137,10 +137,6 @@ void qsslSocketCannotResolveSymbolWarning(const char *functionName)
#endif // QT_LINKED_OPENSSL
-#if QT_CONFIG(opensslv11)
-
-// Below are the functions first introduced in version 1.1:
-
DEFINEFUNC(const unsigned char *, ASN1_STRING_get0_data, const ASN1_STRING *a, a, return nullptr, return)
DEFINEFUNC2(int, OPENSSL_init_ssl, uint64_t opts, opts, const OPENSSL_INIT_SETTINGS *settings, settings, return 0, return)
DEFINEFUNC2(int, OPENSSL_init_crypto, uint64_t opts, opts, const OPENSSL_INIT_SETTINGS *settings, settings, return 0, return)
@@ -237,93 +233,6 @@ DEFINEFUNC2(void, BIO_set_init, BIO *a, a, int init, init, return, DUMMYARG)
DEFINEFUNC(int, BIO_get_shutdown, BIO *a, a, return -1, return)
DEFINEFUNC2(void, BIO_set_shutdown, BIO *a, a, int shut, shut, return, DUMMYARG)
-#else // QT_CONFIG(opensslv11)
-
-// Functions below are either deprecated or removed in OpenSSL >= 1.1:
-
-DEFINEFUNC(unsigned char *, ASN1_STRING_data, ASN1_STRING *a, a, return nullptr, return)
-
-#ifdef SSLEAY_MACROS
-DEFINEFUNC3(void *, ASN1_dup, i2d_of_void *a, a, d2i_of_void *b, b, char *c, c, return nullptr, return)
-#endif
-DEFINEFUNC2(BIO *, BIO_new_file, const char *filename, filename, const char *mode, mode, return nullptr, return)
-DEFINEFUNC(void, ERR_clear_error, DUMMYARG, DUMMYARG, return, DUMMYARG)
-DEFINEFUNC(BIO *, BIO_new, BIO_METHOD *a, a, return nullptr, return)
-DEFINEFUNC(BIO_METHOD *, BIO_s_mem, void, DUMMYARG, return nullptr, return)
-DEFINEFUNC(int, CRYPTO_num_locks, DUMMYARG, DUMMYARG, return 0, return)
-DEFINEFUNC(void, CRYPTO_set_locking_callback, void (*a)(int, int, const char *, int), a, return, DUMMYARG)
-DEFINEFUNC(void, CRYPTO_set_id_callback, unsigned long (*a)(), a, return, DUMMYARG)
-DEFINEFUNC(void, CRYPTO_free, void *a, a, return, DUMMYARG)
-DEFINEFUNC3(int, CRYPTO_set_ex_data, CRYPTO_EX_DATA *ad, ad, int idx, idx, void *val, val, return 0, return)
-DEFINEFUNC2(void *, CRYPTO_get_ex_data, const CRYPTO_EX_DATA *ad, ad, int idx, idx, return nullptr, return)
-DEFINEFUNC(unsigned long, ERR_peek_last_error, DUMMYARG, DUMMYARG, return 0, return)
-DEFINEFUNC(void, ERR_free_strings, void, DUMMYARG, return, DUMMYARG)
-DEFINEFUNC(void, EVP_CIPHER_CTX_cleanup, EVP_CIPHER_CTX *a, a, return, DUMMYARG)
-DEFINEFUNC(void, EVP_CIPHER_CTX_init, EVP_CIPHER_CTX *a, a, return, DUMMYARG)
-
-#ifdef SSLEAY_MACROS
-DEFINEFUNC6(void *, PEM_ASN1_read_bio, d2i_of_void *a, a, const char *b, b, BIO *c, c, void **d, d, pem_password_cb *e, e, void *f, f, return nullptr, return)
-DEFINEFUNC6(void *, PEM_ASN1_write_bio, d2i_of_void *a, a, const char *b, b, BIO *c, c, void **d, d, pem_password_cb *e, e, void *f, f, return nullptr, return)
-#endif // SSLEAY_MACROS
-
-DEFINEFUNC(int, sk_num, STACK *a, a, return -1, return)
-DEFINEFUNC2(void, sk_pop_free, STACK *a, a, void (*b)(void*), b, return, DUMMYARG)
-
-DEFINEFUNC(_STACK *, sk_new_null, DUMMYARG, DUMMYARG, return nullptr, return)
-DEFINEFUNC2(void, sk_push, _STACK *a, a, void *b, b, return, DUMMYARG)
-DEFINEFUNC(void, sk_free, _STACK *a, a, return, DUMMYARG)
-DEFINEFUNC2(void *, sk_value, STACK *a, a, int b, b, return nullptr, return)
-
-DEFINEFUNC(int, SSL_library_init, void, DUMMYARG, return -1, return)
-DEFINEFUNC(void, SSL_load_error_strings, void, DUMMYARG, return, DUMMYARG)
-
-#if OPENSSL_VERSION_NUMBER >= 0x10001000L
-DEFINEFUNC5(int, SSL_get_ex_new_index, long argl, argl, void *argp, argp, CRYPTO_EX_new *new_func, new_func, CRYPTO_EX_dup *dup_func, dup_func, CRYPTO_EX_free *free_func, free_func, return -1, return)
-#endif // OPENSSL_VERSION_NUMBER >= 0x10001000L
-
-DEFINEFUNC(const SSL_METHOD *, SSLv23_client_method, DUMMYARG, DUMMYARG, return nullptr, return)
-DEFINEFUNC(const SSL_METHOD *, TLSv1_client_method, DUMMYARG, DUMMYARG, return nullptr, return)
-#if OPENSSL_VERSION_NUMBER >= 0x10001000L
-DEFINEFUNC(const SSL_METHOD *, TLSv1_1_client_method, DUMMYARG, DUMMYARG, return nullptr, return)
-DEFINEFUNC(const SSL_METHOD *, TLSv1_2_client_method, DUMMYARG, DUMMYARG, return nullptr, return)
-#endif
-DEFINEFUNC(const SSL_METHOD *, SSLv23_server_method, DUMMYARG, DUMMYARG, return nullptr, return)
-DEFINEFUNC(const SSL_METHOD *, TLSv1_server_method, DUMMYARG, DUMMYARG, return nullptr, return)
-#if OPENSSL_VERSION_NUMBER >= 0x10001000L
-DEFINEFUNC(const SSL_METHOD *, TLSv1_1_server_method, DUMMYARG, DUMMYARG, return nullptr, return)
-DEFINEFUNC(const SSL_METHOD *, TLSv1_2_server_method, DUMMYARG, DUMMYARG, return nullptr, return)
-#endif
-
-DEFINEFUNC(STACK_OF(X509) *, X509_STORE_CTX_get_chain, X509_STORE_CTX *a, a, return nullptr, return)
-
-#ifdef SSLEAY_MACROS
-DEFINEFUNC2(int, i2d_DSAPrivateKey, const DSA *a, a, unsigned char **b, b, return -1, return)
-DEFINEFUNC2(int, i2d_RSAPrivateKey, const RSA *a, a, unsigned char **b, b, return -1, return)
-#ifndef OPENSSL_NO_EC
-DEFINEFUNC2(int, i2d_ECPrivateKey, const EC_KEY *a, a, unsigned char **b, b, return -1, return)
-#endif
-DEFINEFUNC3(RSA *, d2i_RSAPrivateKey, RSA **a, a, unsigned char **b, b, long c, c, return nullptr, return)
-DEFINEFUNC3(DSA *, d2i_DSAPrivateKey, DSA **a, a, unsigned char **b, b, long c, c, return nullptr, return)
-#ifndef OPENSSL_NO_EC
-DEFINEFUNC3(EC_KEY *, d2i_ECPrivateKey, EC_KEY **a, a, unsigned char **b, b, long c, c, return nullptr, return)
-#endif
-#endif
-
-#if QT_CONFIG(dtls)
-DEFINEFUNC(const SSL_METHOD *, DTLSv1_server_method, void, DUMMYARG, return nullptr, return)
-DEFINEFUNC(const SSL_METHOD *, DTLSv1_client_method, void, DUMMYARG, return nullptr, return)
-DEFINEFUNC(const SSL_METHOD *, DTLSv1_2_server_method, void, DUMMYARG, return nullptr, return)
-DEFINEFUNC(const SSL_METHOD *, DTLSv1_2_client_method, void, DUMMYARG, return nullptr, return)
-#endif // dtls
-
-DEFINEFUNC(char *, CONF_get1_default_config_file, DUMMYARG, DUMMYARG, return nullptr, return)
-DEFINEFUNC(void, OPENSSL_add_all_algorithms_noconf, void, DUMMYARG, return, DUMMYARG)
-DEFINEFUNC(void, OPENSSL_add_all_algorithms_conf, void, DUMMYARG, return, DUMMYARG)
-DEFINEFUNC(long, SSLeay, void, DUMMYARG, return 0, return)
-DEFINEFUNC(const char *, SSLeay_version, int a, a, return nullptr, return)
-
-#endif // QT_CONFIG(opensslv11)
-
DEFINEFUNC(long, ASN1_INTEGER_get, ASN1_INTEGER *a, a, return 0, return)
DEFINEFUNC2(int, ASN1_INTEGER_cmp, const ASN1_INTEGER *a, a, const ASN1_INTEGER *b, b, return 1, return)
DEFINEFUNC(int, ASN1_STRING_length, ASN1_STRING *a, a, return 0, return)
@@ -392,36 +301,28 @@ DEFINEFUNC(int, OBJ_sn2nid, const char *s, s, return 0, return)
DEFINEFUNC(int, OBJ_ln2nid, const char *s, s, return 0, return)
DEFINEFUNC3(int, i2t_ASN1_OBJECT, char *a, a, int b, b, ASN1_OBJECT *c, c, return -1, return)
DEFINEFUNC4(int, OBJ_obj2txt, char *a, a, int b, b, ASN1_OBJECT *c, c, int d, d, return -1, return)
-
DEFINEFUNC(int, OBJ_obj2nid, const ASN1_OBJECT *a, a, return NID_undef, return)
-
-#ifndef SSLEAY_MACROS
DEFINEFUNC4(EVP_PKEY *, PEM_read_bio_PrivateKey, BIO *a, a, EVP_PKEY **b, b, pem_password_cb *c, c, void *d, d, return nullptr, return)
DEFINEFUNC4(DSA *, PEM_read_bio_DSAPrivateKey, BIO *a, a, DSA **b, b, pem_password_cb *c, c, void *d, d, return nullptr, return)
DEFINEFUNC4(RSA *, PEM_read_bio_RSAPrivateKey, BIO *a, a, RSA **b, b, pem_password_cb *c, c, void *d, d, return nullptr, return)
+
#ifndef OPENSSL_NO_EC
DEFINEFUNC4(EC_KEY *, PEM_read_bio_ECPrivateKey, BIO *a, a, EC_KEY **b, b, pem_password_cb *c, c, void *d, d, return nullptr, return)
-#endif
+DEFINEFUNC7(int, PEM_write_bio_ECPrivateKey, BIO *a, a, EC_KEY *b, b, const EVP_CIPHER *c, c, unsigned char *d, d, int e, e, pem_password_cb *f, f, void *g, g, return 0, return)
+DEFINEFUNC4(EC_KEY *, PEM_read_bio_EC_PUBKEY, BIO *a, a, EC_KEY **b, b, pem_password_cb *c, c, void *d, d, return nullptr, return)
+DEFINEFUNC2(int, PEM_write_bio_EC_PUBKEY, BIO *a, a, EC_KEY *b, b, return 0, return)
+#endif // OPENSSL_NO_EC
+
DEFINEFUNC4(DH *, PEM_read_bio_DHparams, BIO *a, a, DH **b, b, pem_password_cb *c, c, void *d, d, return nullptr, return)
DEFINEFUNC7(int, PEM_write_bio_DSAPrivateKey, BIO *a, a, DSA *b, b, const EVP_CIPHER *c, c, unsigned char *d, d, int e, e, pem_password_cb *f, f, void *g, g, return 0, return)
DEFINEFUNC7(int, PEM_write_bio_RSAPrivateKey, BIO *a, a, RSA *b, b, const EVP_CIPHER *c, c, unsigned char *d, d, int e, e, pem_password_cb *f, f, void *g, g, return 0, return)
DEFINEFUNC7(int, PEM_write_bio_PrivateKey, BIO *a, a, EVP_PKEY *b, b, const EVP_CIPHER *c, c, unsigned char *d, d, int e, e, pem_password_cb *f, f, void *g, g, return 0, return)
-#ifndef OPENSSL_NO_EC
-DEFINEFUNC7(int, PEM_write_bio_ECPrivateKey, BIO *a, a, EC_KEY *b, b, const EVP_CIPHER *c, c, unsigned char *d, d, int e, e, pem_password_cb *f, f, void *g, g, return 0, return)
-#endif
-#endif // !SSLEAY_MACROS
DEFINEFUNC4(EVP_PKEY *, PEM_read_bio_PUBKEY, BIO *a, a, EVP_PKEY **b, b, pem_password_cb *c, c, void *d, d, return nullptr, return)
DEFINEFUNC4(DSA *, PEM_read_bio_DSA_PUBKEY, BIO *a, a, DSA **b, b, pem_password_cb *c, c, void *d, d, return nullptr, return)
DEFINEFUNC4(RSA *, PEM_read_bio_RSA_PUBKEY, BIO *a, a, RSA **b, b, pem_password_cb *c, c, void *d, d, return nullptr, return)
-#ifndef OPENSSL_NO_EC
-DEFINEFUNC4(EC_KEY *, PEM_read_bio_EC_PUBKEY, BIO *a, a, EC_KEY **b, b, pem_password_cb *c, c, void *d, d, return nullptr, return)
-#endif
DEFINEFUNC2(int, PEM_write_bio_DSA_PUBKEY, BIO *a, a, DSA *b, b, return 0, return)
DEFINEFUNC2(int, PEM_write_bio_RSA_PUBKEY, BIO *a, a, RSA *b, b, return 0, return)
DEFINEFUNC2(int, PEM_write_bio_PUBKEY, BIO *a, a, EVP_PKEY *b, b, return 0, return)
-#ifndef OPENSSL_NO_EC
-DEFINEFUNC2(int, PEM_write_bio_EC_PUBKEY, BIO *a, a, EC_KEY *b, b, return 0, return)
-#endif
DEFINEFUNC2(void, RAND_seed, const void *a, a, int b, b, return, DUMMYARG)
DEFINEFUNC(int, RAND_status, void, DUMMYARG, return -1, return)
DEFINEFUNC2(int, RAND_bytes, unsigned char *b, b, int n, n, return 0, return)
@@ -448,14 +349,12 @@ DEFINEFUNC2(int, SSL_CTX_use_PrivateKey, SSL_CTX *a, a, EVP_PKEY *b, b, return -
DEFINEFUNC2(int, SSL_CTX_use_RSAPrivateKey, SSL_CTX *a, a, RSA *b, b, return -1, return)
DEFINEFUNC3(int, SSL_CTX_use_PrivateKey_file, SSL_CTX *a, a, const char *b, b, int c, c, return -1, return)
DEFINEFUNC(X509_STORE *, SSL_CTX_get_cert_store, const SSL_CTX *a, a, return nullptr, return)
-#if OPENSSL_VERSION_NUMBER >= 0x10002000L
DEFINEFUNC(SSL_CONF_CTX *, SSL_CONF_CTX_new, DUMMYARG, DUMMYARG, return nullptr, return);
DEFINEFUNC(void, SSL_CONF_CTX_free, SSL_CONF_CTX *a, a, return ,return);
DEFINEFUNC2(void, SSL_CONF_CTX_set_ssl_ctx, SSL_CONF_CTX *a, a, SSL_CTX *b, b, return, return);
DEFINEFUNC2(unsigned int, SSL_CONF_CTX_set_flags, SSL_CONF_CTX *a, a, unsigned int b, b, return 0, return);
DEFINEFUNC(int, SSL_CONF_CTX_finish, SSL_CONF_CTX *a, a, return 0, return);
DEFINEFUNC3(int, SSL_CONF_cmd, SSL_CONF_CTX *a, a, const char *b, b, const char *c, c, return 0, return);
-#endif
DEFINEFUNC(void, SSL_free, SSL *a, a, return, DUMMYARG)
DEFINEFUNC(STACK_OF(SSL_CIPHER) *, SSL_get_ciphers, const SSL *a, a, return nullptr, return)
DEFINEFUNC(const SSL_CIPHER *, SSL_get_current_cipher, SSL *a, a, return nullptr, return)
@@ -477,21 +376,19 @@ DEFINEFUNC2(int, SSL_set_session, SSL* to, to, SSL_SESSION *session, session, re
DEFINEFUNC(void, SSL_SESSION_free, SSL_SESSION *ses, ses, return, DUMMYARG)
DEFINEFUNC(SSL_SESSION*, SSL_get1_session, SSL *ssl, ssl, return nullptr, return)
DEFINEFUNC(SSL_SESSION*, SSL_get_session, const SSL *ssl, ssl, return nullptr, return)
-#if OPENSSL_VERSION_NUMBER >= 0x10001000L
DEFINEFUNC3(int, SSL_set_ex_data, SSL *ssl, ssl, int idx, idx, void *arg, arg, return 0, return)
DEFINEFUNC2(void *, SSL_get_ex_data, const SSL *ssl, ssl, int idx, idx, return nullptr, return)
-#endif
-#if OPENSSL_VERSION_NUMBER >= 0x10001000L && !defined(OPENSSL_NO_PSK)
+
+#ifndef OPENSSL_NO_PSK
DEFINEFUNC2(void, SSL_set_psk_client_callback, SSL* ssl, ssl, q_psk_client_callback_t callback, callback, return, DUMMYARG)
DEFINEFUNC2(void, SSL_set_psk_server_callback, SSL* ssl, ssl, q_psk_server_callback_t callback, callback, return, DUMMYARG)
DEFINEFUNC2(int, SSL_CTX_use_psk_identity_hint, SSL_CTX* ctx, ctx, const char *hint, hint, return 0, return)
-#endif
+#endif // !OPENSSL_NO_PSK
+
DEFINEFUNC3(int, SSL_write, SSL *a, a, const void *b, b, int c, c, return -1, return)
DEFINEFUNC2(int, X509_cmp, X509 *a, a, X509 *b, b, return -1, return)
DEFINEFUNC4(int, X509_digest, const X509 *x509, x509, const EVP_MD *type, type, unsigned char *md, md, unsigned int *len, len, return -1, return)
-#ifndef SSLEAY_MACROS
DEFINEFUNC(X509 *, X509_dup, X509 *a, a, return nullptr, return)
-#endif
DEFINEFUNC2(void, X509_print, BIO *a, a, X509 *b, b, return, DUMMYARG);
DEFINEFUNC(ASN1_OBJECT *, X509_EXTENSION_get_object, X509_EXTENSION *a, a, return nullptr, return)
DEFINEFUNC(void, X509_free, X509 *a, a, return, DUMMYARG)
@@ -535,7 +432,8 @@ DEFINEFUNC(int, SSL_get_ex_data_X509_STORE_CTX_idx, DUMMYARG, DUMMYARG, return -
DEFINEFUNC3(int, SSL_CTX_load_verify_locations, SSL_CTX *ctx, ctx, const char *CAfile, CAfile, const char *CApath, CApath, return 0, return)
DEFINEFUNC2(int, i2d_SSL_SESSION, SSL_SESSION *in, in, unsigned char **pp, pp, return 0, return)
DEFINEFUNC3(SSL_SESSION *, d2i_SSL_SESSION, SSL_SESSION **a, a, const unsigned char **pp, pp, long length, length, return nullptr, return)
-#if OPENSSL_VERSION_NUMBER >= 0x1000100fL && !defined(OPENSSL_NO_NEXTPROTONEG)
+
+#ifndef OPENSSL_NO_NEXTPROTONEG
DEFINEFUNC6(int, SSL_select_next_proto, unsigned char **out, out, unsigned char *outlen, outlen,
const unsigned char *in, in, unsigned int inlen, inlen,
const unsigned char *client, client, unsigned int client_len, client_len,
@@ -548,7 +446,6 @@ DEFINEFUNC3(void, SSL_CTX_set_next_proto_select_cb, SSL_CTX *s, s,
void *arg, arg, return, DUMMYARG)
DEFINEFUNC3(void, SSL_get0_next_proto_negotiated, const SSL *s, s,
const unsigned char **data, data, unsigned *len, len, return, DUMMYARG)
-#if OPENSSL_VERSION_NUMBER >= 0x10002000L
DEFINEFUNC3(int, SSL_set_alpn_protos, SSL *s, s, const unsigned char *protos, protos,
unsigned protos_len, protos_len, return -1, return)
DEFINEFUNC3(void, SSL_CTX_set_alpn_select_cb, SSL_CTX *s, s,
@@ -559,8 +456,7 @@ DEFINEFUNC3(void, SSL_CTX_set_alpn_select_cb, SSL_CTX *s, s,
void *arg, arg, return, DUMMYARG)
DEFINEFUNC3(void, SSL_get0_alpn_selected, const SSL *s, s, const unsigned char **data, data,
unsigned *len, len, return, DUMMYARG)
-#endif // OPENSSL_VERSION_NUMBER >= 0x10002000L ...
-#endif // OPENSSL_VERSION_NUMBER >= 0x1000100fL ...
+#endif // !OPENSSL_NO_NEXTPROTONEG
// DTLS:
#if QT_CONFIG(dtls)
@@ -581,14 +477,13 @@ DEFINEFUNC3(DH *, d2i_DHparams, DH**a, a, const unsigned char **pp, pp, long len
DEFINEFUNC2(int, i2d_DHparams, DH *a, a, unsigned char **p, p, return -1, return)
DEFINEFUNC2(int, DH_check, DH *dh, dh, int *codes, codes, return 0, return)
DEFINEFUNC3(BIGNUM *, BN_bin2bn, const unsigned char *s, s, int len, len, BIGNUM *ret, ret, return nullptr, return)
+
#ifndef OPENSSL_NO_EC
DEFINEFUNC(EC_KEY *, EC_KEY_dup, const EC_KEY *ec, ec, return nullptr, return)
DEFINEFUNC(EC_KEY *, EC_KEY_new_by_curve_name, int nid, nid, return nullptr, return)
DEFINEFUNC(void, EC_KEY_free, EC_KEY *ecdh, ecdh, return, DUMMYARG)
DEFINEFUNC2(size_t, EC_get_builtin_curves, EC_builtin_curve * r, r, size_t nitems, nitems, return 0, return)
-#if OPENSSL_VERSION_NUMBER >= 0x10002000L
DEFINEFUNC(int, EC_curve_nist2nid, const char *name, name, return 0, return)
-#endif // OPENSSL_VERSION_NUMBER >= 0x10002000L
#endif // OPENSSL_NO_EC
DEFINEFUNC5(int, PKCS12_parse, PKCS12 *p12, p12, const char *pass, pass, EVP_PKEY **pkey, pkey, \
@@ -760,7 +655,6 @@ static LoadedOpenSsl loadOpenSsl()
{
LoadedOpenSsl result;
-#if QT_CONFIG(opensslv11)
// With OpenSSL 1.1 the names have changed to libssl-1_1(-x64) and libcrypto-1_1(-x64), for builds using
// MSVC and GCC, (-x64 suffix for 64-bit builds).
@@ -774,21 +668,6 @@ static LoadedOpenSsl loadOpenSsl()
QLatin1String("libcrypto-1_1" QT_SSL_SUFFIX), result);
#undef QT_SSL_SUFFIX
-
-#else // QT_CONFIG(opensslv11)
-
- // When OpenSSL is built using MSVC then the libraries are named 'ssleay32.dll' and 'libeay32'dll'.
- // When OpenSSL is built using GCC then different library names are used (depending on the OpenSSL version)
- // The oldest version of a GCC-based OpenSSL which can be detected by the code below is 0.9.8g (released in 2007)
- if (!tryToLoadOpenSslWin32Library(QLatin1String("ssleay32"), QLatin1String("libeay32"), result)) {
- if (!tryToLoadOpenSslWin32Library(QLatin1String("libssl-10"), QLatin1String("libcrypto-10"), result)) {
- if (!tryToLoadOpenSslWin32Library(QLatin1String("libssl-8"), QLatin1String("libcrypto-8"), result)) {
- tryToLoadOpenSslWin32Library(QLatin1String("libssl-7"), QLatin1String("libcrypto-7"), result);
- }
- }
- }
-#endif // !QT_CONFIG(opensslv11)
-
return result;
}
#else
@@ -852,27 +731,6 @@ static LoadedOpenSsl loadOpenSsl()
libssl->unload();
libcrypto->unload();
}
-
-#if !QT_CONFIG(opensslv11)
- // first-and-half attempts: for OpenSSL 1.0 try to load some hardcoded sonames:
- // - "1.0.0" is the official upstream one
- // - "1.0.2" is found on some distributions (e.g. Debian) that patch OpenSSL
- static const QLatin1String fallbackSonames[] = {
- QLatin1String("1.0.0"),
- QLatin1String("1.0.2")
- };
-
- for (auto fallbackSoname : fallbackSonames) {
- libssl->setFileNameAndVersion(QLatin1String("ssl"), fallbackSoname);
- libcrypto->setFileNameAndVersion(QLatin1String("crypto"), fallbackSoname);
- if (libcrypto->load() && libssl->load()) {
- return result;
- } else {
- libssl->unload();
- libcrypto->unload();
- }
- }
-#endif
#endif
#ifndef Q_OS_DARWIN
@@ -890,11 +748,9 @@ static LoadedOpenSsl loadOpenSsl()
return defaultSuffix;
return suffix;
};
-# if QT_CONFIG(opensslv11)
+
static QString suffix = QString::fromLatin1(openSSLSuffix("_1_1"));
-# else
- static QString suffix = QString::fromLatin1(openSSLSuffix());
-# endif
+
libssl->setFileNameAndVersion(QLatin1String("ssl") + suffix, -1);
libcrypto->setFileNameAndVersion(QLatin1String("crypto") + suffix, -1);
# else
@@ -968,8 +824,6 @@ bool q_resolveOpenSslSymbols()
// failed to load them
return false;
-#if QT_CONFIG(opensslv11)
-
RESOLVEFUNC(OPENSSL_init_ssl)
RESOLVEFUNC(OPENSSL_init_crypto)
RESOLVEFUNC(ASN1_STRING_get0_data)
@@ -985,10 +839,12 @@ bool q_resolveOpenSslSymbols()
RESOLVEFUNC(OPENSSL_sk_value)
RESOLVEFUNC(DH_get0_pqg)
RESOLVEFUNC(SSL_CTX_set_options)
+
#ifdef TLS1_3_VERSION
RESOLVEFUNC(SSL_CTX_set_ciphersuites)
RESOLVEFUNC(SSL_set_psk_use_session_callback)
#endif // TLS 1.3 or OpenSSL > 1.1.1
+
RESOLVEFUNC(SSL_get_client_random)
RESOLVEFUNC(SSL_SESSION_get_master_key)
RESOLVEFUNC(SSL_session_reused)
@@ -1010,6 +866,7 @@ bool q_resolveOpenSslSymbols()
RESOLVEFUNC(CRYPTO_free)
RESOLVEFUNC(OpenSSL_version_num)
RESOLVEFUNC(OpenSSL_version)
+
if (!_q_OpenSSL_version) {
// Apparently, we were built with OpenSSL 1.1 enabled but are now using
// a wrong library.
@@ -1034,6 +891,7 @@ bool q_resolveOpenSslSymbols()
RESOLVEFUNC(BIO_meth_set_create)
RESOLVEFUNC(BIO_meth_set_destroy)
#endif // dtls
+
#if QT_CONFIG(ocsp)
RESOLVEFUNC(OCSP_SINGLERESP_get0_id)
RESOLVEFUNC(d2i_OCSP_RESPONSE)
@@ -1058,99 +916,12 @@ bool q_resolveOpenSslSymbols()
RESOLVEFUNC(OCSP_cert_to_id)
RESOLVEFUNC(OCSP_id_cmp)
#endif // ocsp
+
RESOLVEFUNC(BIO_set_data)
RESOLVEFUNC(BIO_get_data)
RESOLVEFUNC(BIO_set_init)
RESOLVEFUNC(BIO_get_shutdown)
RESOLVEFUNC(BIO_set_shutdown)
-#else // !opensslv11
-
- RESOLVEFUNC(ASN1_STRING_data)
-
-#ifdef SSLEAY_MACROS
- RESOLVEFUNC(ASN1_dup)
-#endif // SSLEAY_MACROS
- RESOLVEFUNC(BIO_new_file)
- RESOLVEFUNC(ERR_clear_error)
- RESOLVEFUNC(CRYPTO_free)
- RESOLVEFUNC(CRYPTO_num_locks)
- RESOLVEFUNC(CRYPTO_set_id_callback)
- RESOLVEFUNC(CRYPTO_set_locking_callback)
- RESOLVEFUNC(CRYPTO_set_ex_data)
- RESOLVEFUNC(CRYPTO_get_ex_data)
- RESOLVEFUNC(ERR_peek_last_error)
- RESOLVEFUNC(ERR_free_strings)
- RESOLVEFUNC(EVP_CIPHER_CTX_cleanup)
- RESOLVEFUNC(EVP_CIPHER_CTX_init)
-
-#ifdef SSLEAY_MACROS // ### verify
- RESOLVEFUNC(PEM_ASN1_read_bio)
-#endif // SSLEAY_MACROS
-
- RESOLVEFUNC(sk_new_null)
- RESOLVEFUNC(sk_push)
- RESOLVEFUNC(sk_free)
- RESOLVEFUNC(sk_num)
- RESOLVEFUNC(sk_pop_free)
- RESOLVEFUNC(sk_value)
- RESOLVEFUNC(SSL_library_init)
- RESOLVEFUNC(SSL_load_error_strings)
-#if OPENSSL_VERSION_NUMBER >= 0x10001000L
- RESOLVEFUNC(SSL_get_ex_new_index)
-#endif
- RESOLVEFUNC(SSLv23_client_method)
- RESOLVEFUNC(TLSv1_client_method)
-#if OPENSSL_VERSION_NUMBER >= 0x10001000L
- RESOLVEFUNC(TLSv1_1_client_method)
- RESOLVEFUNC(TLSv1_2_client_method)
-#endif
- RESOLVEFUNC(SSLv23_server_method)
- RESOLVEFUNC(TLSv1_server_method)
-#if OPENSSL_VERSION_NUMBER >= 0x10001000L
- RESOLVEFUNC(TLSv1_1_server_method)
- RESOLVEFUNC(TLSv1_2_server_method)
-#endif
- RESOLVEFUNC(X509_STORE_CTX_get_chain)
-#ifdef SSLEAY_MACROS
- RESOLVEFUNC(i2d_DSAPrivateKey)
- RESOLVEFUNC(i2d_RSAPrivateKey)
- RESOLVEFUNC(d2i_DSAPrivateKey)
- RESOLVEFUNC(d2i_RSAPrivateKey)
-#endif
-
-#if QT_CONFIG(dtls)
- RESOLVEFUNC(DTLSv1_server_method)
- RESOLVEFUNC(DTLSv1_client_method)
- RESOLVEFUNC(DTLSv1_2_server_method)
- RESOLVEFUNC(DTLSv1_2_client_method)
-#endif // dtls
-
- RESOLVEFUNC(CONF_get1_default_config_file)
- RESOLVEFUNC(OPENSSL_add_all_algorithms_noconf)
- RESOLVEFUNC(OPENSSL_add_all_algorithms_conf)
- RESOLVEFUNC(SSLeay)
-
- if (!_q_SSLeay || q_SSLeay() >= 0x10100000L) {
- // OpenSSL 1.1 has deprecated and removed SSLeay. We consider a failure to
- // resolve this symbol as a failure to resolve symbols.
- // The right operand of '||' above is ... a bit of paranoia.
- qCWarning(lcSsl, "Incompatible version of OpenSSL");
- return false;
- }
-
-
- RESOLVEFUNC(SSLeay_version)
-
-#ifndef OPENSSL_NO_EC
-#if OPENSSL_VERSION_NUMBER >= 0x10002000L
- if (q_SSLeay() >= 0x10002000L)
- RESOLVEFUNC(EC_curve_nist2nid)
-#endif // OPENSSL_VERSION_NUMBER >= 0x10002000L
-#endif // OPENSSL_NO_EC
-
-
-#endif // !opensslv11
-
RESOLVEFUNC(ASN1_INTEGER_get)
RESOLVEFUNC(ASN1_INTEGER_cmp)
RESOLVEFUNC(ASN1_STRING_length)
@@ -1172,9 +943,7 @@ bool q_resolveOpenSslSymbols()
RESOLVEFUNC(EC_GROUP_get_degree)
#endif
RESOLVEFUNC(BN_num_bits)
-#if QT_CONFIG(opensslv11)
RESOLVEFUNC(BN_is_word)
-#endif
RESOLVEFUNC(BN_mod_word)
RESOLVEFUNC(DSA_new)
RESOLVEFUNC(DSA_free)
@@ -1207,17 +976,21 @@ bool q_resolveOpenSslSymbols()
RESOLVEFUNC(EVP_PKEY_set1_RSA)
RESOLVEFUNC(EVP_PKEY_set1_DSA)
RESOLVEFUNC(EVP_PKEY_set1_DH)
+
#ifndef OPENSSL_NO_EC
RESOLVEFUNC(EVP_PKEY_set1_EC_KEY)
-#endif
+ RESOLVEFUNC(EVP_PKEY_get1_EC_KEY)
+ RESOLVEFUNC(PEM_read_bio_ECPrivateKey)
+ RESOLVEFUNC(PEM_write_bio_ECPrivateKey)
+ RESOLVEFUNC(PEM_read_bio_EC_PUBKEY)
+ RESOLVEFUNC(PEM_write_bio_EC_PUBKEY)
+#endif // OPENSSL_NO_EC
+
RESOLVEFUNC(EVP_PKEY_cmp)
RESOLVEFUNC(EVP_PKEY_free)
RESOLVEFUNC(EVP_PKEY_get1_DSA)
RESOLVEFUNC(EVP_PKEY_get1_RSA)
RESOLVEFUNC(EVP_PKEY_get1_DH)
-#ifndef OPENSSL_NO_EC
- RESOLVEFUNC(EVP_PKEY_get1_EC_KEY)
-#endif
RESOLVEFUNC(EVP_PKEY_new)
RESOLVEFUNC(EVP_PKEY_type)
RESOLVEFUNC(OBJ_nid2sn)
@@ -1227,35 +1000,19 @@ bool q_resolveOpenSslSymbols()
RESOLVEFUNC(i2t_ASN1_OBJECT)
RESOLVEFUNC(OBJ_obj2txt)
RESOLVEFUNC(OBJ_obj2nid)
-
-#ifndef SSLEAY_MACROS
RESOLVEFUNC(PEM_read_bio_PrivateKey)
RESOLVEFUNC(PEM_read_bio_DSAPrivateKey)
RESOLVEFUNC(PEM_read_bio_RSAPrivateKey)
-#ifndef OPENSSL_NO_EC
- RESOLVEFUNC(PEM_read_bio_ECPrivateKey)
-#endif
RESOLVEFUNC(PEM_read_bio_DHparams)
RESOLVEFUNC(PEM_write_bio_DSAPrivateKey)
RESOLVEFUNC(PEM_write_bio_RSAPrivateKey)
RESOLVEFUNC(PEM_write_bio_PrivateKey)
-#ifndef OPENSSL_NO_EC
- RESOLVEFUNC(PEM_write_bio_ECPrivateKey)
-#endif
-#endif // !SSLEAY_MACROS
-
RESOLVEFUNC(PEM_read_bio_PUBKEY)
RESOLVEFUNC(PEM_read_bio_DSA_PUBKEY)
RESOLVEFUNC(PEM_read_bio_RSA_PUBKEY)
-#ifndef OPENSSL_NO_EC
- RESOLVEFUNC(PEM_read_bio_EC_PUBKEY)
-#endif
RESOLVEFUNC(PEM_write_bio_DSA_PUBKEY)
RESOLVEFUNC(PEM_write_bio_RSA_PUBKEY)
RESOLVEFUNC(PEM_write_bio_PUBKEY)
-#ifndef OPENSSL_NO_EC
- RESOLVEFUNC(PEM_write_bio_EC_PUBKEY)
-#endif
RESOLVEFUNC(RAND_seed)
RESOLVEFUNC(RAND_status)
RESOLVEFUNC(RAND_bytes)
@@ -1279,14 +1036,12 @@ bool q_resolveOpenSslSymbols()
RESOLVEFUNC(SSL_CTX_use_RSAPrivateKey)
RESOLVEFUNC(SSL_CTX_use_PrivateKey_file)
RESOLVEFUNC(SSL_CTX_get_cert_store);
-#if OPENSSL_VERSION_NUMBER >= 0x10002000L
RESOLVEFUNC(SSL_CONF_CTX_new);
RESOLVEFUNC(SSL_CONF_CTX_free);
RESOLVEFUNC(SSL_CONF_CTX_set_ssl_ctx);
RESOLVEFUNC(SSL_CONF_CTX_set_flags);
RESOLVEFUNC(SSL_CONF_CTX_finish);
RESOLVEFUNC(SSL_CONF_cmd);
-#endif
RESOLVEFUNC(SSL_accept)
RESOLVEFUNC(SSL_clear)
RESOLVEFUNC(SSL_connect)
@@ -1311,16 +1066,16 @@ bool q_resolveOpenSslSymbols()
RESOLVEFUNC(SSL_SESSION_free)
RESOLVEFUNC(SSL_get1_session)
RESOLVEFUNC(SSL_get_session)
-#if OPENSSL_VERSION_NUMBER >= 0x10001000L
RESOLVEFUNC(SSL_set_ex_data)
RESOLVEFUNC(SSL_get_ex_data)
RESOLVEFUNC(SSL_get_ex_data_X509_STORE_CTX_idx)
-#endif
-#if OPENSSL_VERSION_NUMBER >= 0x10001000L && !defined(OPENSSL_NO_PSK)
+
+#ifndef OPENSSL_NO_PSK
RESOLVEFUNC(SSL_set_psk_client_callback)
RESOLVEFUNC(SSL_set_psk_server_callback)
RESOLVEFUNC(SSL_CTX_use_psk_identity_hint)
-#endif
+#endif // !OPENSSL_NO_PSK
+
RESOLVEFUNC(SSL_write)
RESOLVEFUNC(X509_NAME_entry_count)
RESOLVEFUNC(X509_NAME_get_entry)
@@ -1340,10 +1095,7 @@ bool q_resolveOpenSslSymbols()
RESOLVEFUNC(X509_STORE_CTX_get0_store)
RESOLVEFUNC(X509_cmp)
RESOLVEFUNC(X509_STORE_CTX_get_ex_data)
-
-#ifndef SSLEAY_MACROS
RESOLVEFUNC(X509_dup)
-#endif
RESOLVEFUNC(X509_print)
RESOLVEFUNC(X509_digest)
RESOLVEFUNC(X509_EXTENSION_get_object)
@@ -1371,22 +1123,23 @@ bool q_resolveOpenSslSymbols()
RESOLVEFUNC(SSL_CTX_load_verify_locations)
RESOLVEFUNC(i2d_SSL_SESSION)
RESOLVEFUNC(d2i_SSL_SESSION)
-#if OPENSSL_VERSION_NUMBER >= 0x1000100fL && !defined(OPENSSL_NO_NEXTPROTONEG)
+
+#ifndef OPENSSL_NO_NEXTPROTONEG
RESOLVEFUNC(SSL_select_next_proto)
RESOLVEFUNC(SSL_CTX_set_next_proto_select_cb)
RESOLVEFUNC(SSL_get0_next_proto_negotiated)
-#endif // OPENSSL_VERSION_NUMBER >= 0x1000100fL ...
-#if OPENSSL_VERSION_NUMBER >= 0x10002000L
RESOLVEFUNC(SSL_set_alpn_protos)
RESOLVEFUNC(SSL_CTX_set_alpn_select_cb)
RESOLVEFUNC(SSL_get0_alpn_selected)
-#endif // OPENSSL_VERSION_NUMBER >= 0x10002000L ...
+#endif // !OPENSSL_NO_NEXTPROTONEG
+
#if QT_CONFIG(dtls)
RESOLVEFUNC(SSL_CTX_set_cookie_generate_cb)
RESOLVEFUNC(SSL_CTX_set_cookie_verify_cb)
RESOLVEFUNC(DTLS_server_method)
RESOLVEFUNC(DTLS_client_method)
#endif // dtls
+
RESOLVEFUNC(CRYPTO_malloc)
RESOLVEFUNC(DH_new)
RESOLVEFUNC(DH_free)
@@ -1394,12 +1147,14 @@ bool q_resolveOpenSslSymbols()
RESOLVEFUNC(i2d_DHparams)
RESOLVEFUNC(DH_check)
RESOLVEFUNC(BN_bin2bn)
+
#ifndef OPENSSL_NO_EC
RESOLVEFUNC(EC_KEY_dup)
RESOLVEFUNC(EC_KEY_new_by_curve_name)
RESOLVEFUNC(EC_KEY_free)
RESOLVEFUNC(EC_get_builtin_curves)
#endif // OPENSSL_NO_EC
+
RESOLVEFUNC(PKCS12_parse)
RESOLVEFUNC(d2i_PKCS12_bio)
RESOLVEFUNC(PKCS12_free)
diff --git a/src/network/ssl/qsslsocket_openssl_symbols_p.h b/src/network/ssl/qsslsocket_openssl_symbols_p.h
index 69b2b90fbd..baf1a43113 100644
--- a/src/network/ssl/qsslsocket_openssl_symbols_p.h
+++ b/src/network/ssl/qsslsocket_openssl_symbols_p.h
@@ -220,11 +220,129 @@ QT_BEGIN_NAMESPACE
#endif // !defined QT_LINKED_OPENSSL
-#if QT_CONFIG(opensslv11)
-#include "qsslsocket_openssl11_symbols_p.h"
-#else
-#include "qsslsocket_opensslpre11_symbols_p.h"
-#endif // QT_CONFIG
+// TODO: the following lines previously were a part of 1.1 - specific header.
+// To reduce the amount of the change, I'm directly copying and pasting the
+// content of the header here. Later, can be better sorted/split into groups,
+// depending on the functionality.
+//#include "qsslsocket_openssl11_symbols_p.h"
+
+const unsigned char * q_ASN1_STRING_get0_data(const ASN1_STRING *x);
+
+Q_AUTOTEST_EXPORT BIO *q_BIO_new(const BIO_METHOD *a);
+Q_AUTOTEST_EXPORT const BIO_METHOD *q_BIO_s_mem();
+
+int q_DSA_bits(DSA *a);
+int q_EVP_CIPHER_CTX_reset(EVP_CIPHER_CTX *c);
+Q_AUTOTEST_EXPORT int q_EVP_PKEY_up_ref(EVP_PKEY *a);
+int q_EVP_PKEY_base_id(EVP_PKEY *a);
+int q_RSA_bits(RSA *a);
+Q_AUTOTEST_EXPORT int q_OPENSSL_sk_num(OPENSSL_STACK *a);
+Q_AUTOTEST_EXPORT void q_OPENSSL_sk_pop_free(OPENSSL_STACK *a, void (*b)(void *));
+Q_AUTOTEST_EXPORT OPENSSL_STACK *q_OPENSSL_sk_new_null();
+Q_AUTOTEST_EXPORT void q_OPENSSL_sk_push(OPENSSL_STACK *st, void *data);
+Q_AUTOTEST_EXPORT void q_OPENSSL_sk_free(OPENSSL_STACK *a);
+Q_AUTOTEST_EXPORT void * q_OPENSSL_sk_value(OPENSSL_STACK *a, int b);
+int q_SSL_session_reused(SSL *a);
+unsigned long q_SSL_CTX_set_options(SSL_CTX *ctx, unsigned long op);
+int q_OPENSSL_init_ssl(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings);
+size_t q_SSL_get_client_random(SSL *a, unsigned char *out, size_t outlen);
+size_t q_SSL_SESSION_get_master_key(const SSL_SESSION *session, unsigned char *out, size_t outlen);
+int q_CRYPTO_get_ex_new_index(int class_index, long argl, void *argp, CRYPTO_EX_new *new_func, CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func);
+const SSL_METHOD *q_TLS_method();
+const SSL_METHOD *q_TLS_client_method();
+const SSL_METHOD *q_TLS_server_method();
+ASN1_TIME *q_X509_getm_notBefore(X509 *a);
+ASN1_TIME *q_X509_getm_notAfter(X509 *a);
+
+Q_AUTOTEST_EXPORT void q_X509_up_ref(X509 *a);
+long q_X509_get_version(X509 *a);
+EVP_PKEY *q_X509_get_pubkey(X509 *a);
+void q_X509_STORE_set_verify_cb(X509_STORE *ctx, X509_STORE_CTX_verify_cb verify_cb);
+int q_X509_STORE_set_ex_data(X509_STORE *ctx, int idx, void *data);
+void *q_X509_STORE_get_ex_data(X509_STORE *r, int idx);
+STACK_OF(X509) *q_X509_STORE_CTX_get0_chain(X509_STORE_CTX *ctx);
+void q_DH_get0_pqg(const DH *dh, const BIGNUM **p, const BIGNUM **q, const BIGNUM **g);
+int q_DH_bits(DH *dh);
+
+# define q_SSL_load_error_strings() q_OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS \
+ | OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL)
+
+#define q_SKM_sk_num(type, st) ((int (*)(const STACK_OF(type) *))q_OPENSSL_sk_num)(st)
+#define q_SKM_sk_value(type, st,i) ((type * (*)(const STACK_OF(type) *, int))q_OPENSSL_sk_value)(st, i)
+
+#define q_OPENSSL_add_all_algorithms_conf() q_OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \
+ | OPENSSL_INIT_ADD_ALL_DIGESTS \
+ | OPENSSL_INIT_LOAD_CONFIG, NULL)
+#define q_OPENSSL_add_all_algorithms_noconf() q_OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \
+ | OPENSSL_INIT_ADD_ALL_DIGESTS, NULL)
+
+int q_OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings);
+void q_CRYPTO_free(void *str, const char *file, int line);
+
+long q_OpenSSL_version_num();
+const char *q_OpenSSL_version(int type);
+
+unsigned long q_SSL_SESSION_get_ticket_lifetime_hint(const SSL_SESSION *session);
+unsigned long q_SSL_set_options(SSL *s, unsigned long op);
+
+#ifdef TLS1_3_VERSION
+int q_SSL_CTX_set_ciphersuites(SSL_CTX *ctx, const char *str);
+#endif
+
+#if QT_CONFIG(dtls)
+// Functions and types required for DTLS support:
+extern "C"
+{
+
+typedef int (*CookieVerifyCallback)(SSL *, const unsigned char *, unsigned);
+typedef int (*DgramWriteCallback) (BIO *, const char *, int);
+typedef int (*DgramReadCallback) (BIO *, char *, int);
+typedef int (*DgramPutsCallback) (BIO *, const char *);
+typedef long (*DgramCtrlCallback) (BIO *, int, long, void *);
+typedef int (*DgramCreateCallback) (BIO *);
+typedef int (*DgramDestroyCallback) (BIO *);
+
+}
+
+int q_DTLSv1_listen(SSL *s, BIO_ADDR *client);
+BIO_ADDR *q_BIO_ADDR_new();
+void q_BIO_ADDR_free(BIO_ADDR *ap);
+
+// API we need for a custom dgram BIO:
+
+BIO_METHOD *q_BIO_meth_new(int type, const char *name);
+void q_BIO_meth_free(BIO_METHOD *biom);
+int q_BIO_meth_set_write(BIO_METHOD *biom, DgramWriteCallback);
+int q_BIO_meth_set_read(BIO_METHOD *biom, DgramReadCallback);
+int q_BIO_meth_set_puts(BIO_METHOD *biom, DgramPutsCallback);
+int q_BIO_meth_set_ctrl(BIO_METHOD *biom, DgramCtrlCallback);
+int q_BIO_meth_set_create(BIO_METHOD *biom, DgramCreateCallback);
+int q_BIO_meth_set_destroy(BIO_METHOD *biom, DgramDestroyCallback);
+
+#endif // dtls
+
+void q_BIO_set_data(BIO *a, void *ptr);
+void *q_BIO_get_data(BIO *a);
+void q_BIO_set_init(BIO *a, int init);
+int q_BIO_get_shutdown(BIO *a);
+void q_BIO_set_shutdown(BIO *a, int shut);
+
+#if QT_CONFIG(ocsp)
+const OCSP_CERTID *q_OCSP_SINGLERESP_get0_id(const OCSP_SINGLERESP *x);
+#endif // ocsp
+
+#define q_SSL_CTX_set_min_proto_version(ctx, version) \
+ q_SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MIN_PROTO_VERSION, version, nullptr)
+
+#define q_SSL_CTX_set_max_proto_version(ctx, version) \
+ q_SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MAX_PROTO_VERSION, version, nullptr)
+
+extern "C" {
+typedef int (*q_SSL_psk_use_session_cb_func_t)(SSL *, const EVP_MD *, const unsigned char **, size_t *,
+ SSL_SESSION **);
+}
+void q_SSL_set_psk_use_session_callback(SSL *s, q_SSL_psk_use_session_cb_func_t);
+// Here the content of the 1.1 header ends.
bool q_resolveOpenSslSymbols();
long q_ASN1_INTEGER_get(ASN1_INTEGER *a);
@@ -237,27 +355,14 @@ BIO *q_BIO_new_mem_buf(void *a, int b);
int q_BIO_read(BIO *a, void *b, int c);
Q_AUTOTEST_EXPORT int q_BIO_write(BIO *a, const void *b, int c);
int q_BN_num_bits(const BIGNUM *a);
-
-#if QT_CONFIG(opensslv11)
int q_BN_is_word(BIGNUM *a, BN_ULONG w);
-#else // opensslv11
-// BN_is_word is implemented purely as a
-// macro in OpenSSL < 1.1. It doesn't
-// call any functions.
-//
-// The implementation of BN_is_word is
-// 100% the same between 1.0.0, 1.0.1
-// and 1.0.2.
-//
-// Users are required to include <openssl/bn.h>.
-#define q_BN_is_word BN_is_word
-#endif // !opensslv11
-
BN_ULONG q_BN_mod_word(const BIGNUM *a, BN_ULONG w);
+
#ifndef OPENSSL_NO_EC
const EC_GROUP* q_EC_KEY_get0_group(const EC_KEY* k);
int q_EC_GROUP_get_degree(const EC_GROUP* g);
-#endif
+#endif // OPENSSL_NO_EC
+
DSA *q_DSA_new();
void q_DSA_free(DSA *a);
X509 *q_d2i_X509(X509 **a, const unsigned char **b, long c);
@@ -277,23 +382,28 @@ const EVP_MD *q_EVP_get_digestbyname(const char *name);
#ifndef OPENSSL_NO_DES
const EVP_CIPHER *q_EVP_des_cbc();
const EVP_CIPHER *q_EVP_des_ede3_cbc();
-#endif
+#endif // OPENSSL_NO_DES
+
#ifndef OPENSSL_NO_RC2
const EVP_CIPHER *q_EVP_rc2_cbc();
-#endif
+#endif // OPENSSL_NO_RC2
+
#ifndef OPENSSL_NO_AES
const EVP_CIPHER *q_EVP_aes_128_cbc();
const EVP_CIPHER *q_EVP_aes_192_cbc();
const EVP_CIPHER *q_EVP_aes_256_cbc();
-#endif
+#endif // OPENSSL_NO_AES
+
Q_AUTOTEST_EXPORT const EVP_MD *q_EVP_sha1();
int q_EVP_PKEY_assign(EVP_PKEY *a, int b, char *c);
Q_AUTOTEST_EXPORT int q_EVP_PKEY_set1_RSA(EVP_PKEY *a, RSA *b);
Q_AUTOTEST_EXPORT int q_EVP_PKEY_set1_DSA(EVP_PKEY *a, DSA *b);
Q_AUTOTEST_EXPORT int q_EVP_PKEY_set1_DH(EVP_PKEY *a, DH *b);
+
#ifndef OPENSSL_NO_EC
Q_AUTOTEST_EXPORT int q_EVP_PKEY_set1_EC_KEY(EVP_PKEY *a, EC_KEY *b);
#endif
+
Q_AUTOTEST_EXPORT int q_EVP_PKEY_cmp(const EVP_PKEY *a, const EVP_PKEY *b);
Q_AUTOTEST_EXPORT void q_EVP_PKEY_free(EVP_PKEY *a);
RSA *q_EVP_PKEY_get1_RSA(EVP_PKEY *a);
@@ -313,18 +423,18 @@ int q_i2t_ASN1_OBJECT(char *buf, int buf_len, ASN1_OBJECT *obj);
int q_OBJ_obj2txt(char *buf, int buf_len, ASN1_OBJECT *obj, int no_name);
int q_OBJ_obj2nid(const ASN1_OBJECT *a);
#define q_EVP_get_digestbynid(a) q_EVP_get_digestbyname(q_OBJ_nid2sn(a))
-#ifdef SSLEAY_MACROS
-// ### verify
-void *q_PEM_ASN1_read_bio(d2i_of_void *a, const char *b, BIO *c, void **d, pem_password_cb *e,
- void *f);
-// ### ditto for write
-#else
Q_AUTOTEST_EXPORT EVP_PKEY *q_PEM_read_bio_PrivateKey(BIO *a, EVP_PKEY **b, pem_password_cb *c, void *d);
DSA *q_PEM_read_bio_DSAPrivateKey(BIO *a, DSA **b, pem_password_cb *c, void *d);
RSA *q_PEM_read_bio_RSAPrivateKey(BIO *a, RSA **b, pem_password_cb *c, void *d);
+
#ifndef OPENSSL_NO_EC
EC_KEY *q_PEM_read_bio_ECPrivateKey(BIO *a, EC_KEY **b, pem_password_cb *c, void *d);
-#endif
+int q_PEM_write_bio_ECPrivateKey(BIO *a, EC_KEY *b, const EVP_CIPHER *c, unsigned char *d,
+ int e, pem_password_cb *f, void *g);
+EC_KEY *q_PEM_read_bio_EC_PUBKEY(BIO *a, EC_KEY **b, pem_password_cb *c, void *d);
+int q_PEM_write_bio_EC_PUBKEY(BIO *a, EC_KEY *b);
+#endif // OPENSSL_NO_EC
+
DH *q_PEM_read_bio_DHparams(BIO *a, DH **b, pem_password_cb *c, void *d);
int q_PEM_write_bio_DSAPrivateKey(BIO *a, DSA *b, const EVP_CIPHER *c, unsigned char *d,
int e, pem_password_cb *f, void *g);
@@ -332,23 +442,13 @@ int q_PEM_write_bio_RSAPrivateKey(BIO *a, RSA *b, const EVP_CIPHER *c, unsigned
int e, pem_password_cb *f, void *g);
int q_PEM_write_bio_PrivateKey(BIO *a, EVP_PKEY *b, const EVP_CIPHER *c, unsigned char *d,
int e, pem_password_cb *f, void *g);
-#ifndef OPENSSL_NO_EC
-int q_PEM_write_bio_ECPrivateKey(BIO *a, EC_KEY *b, const EVP_CIPHER *c, unsigned char *d,
- int e, pem_password_cb *f, void *g);
-#endif
-#endif // SSLEAY_MACROS
Q_AUTOTEST_EXPORT EVP_PKEY *q_PEM_read_bio_PUBKEY(BIO *a, EVP_PKEY **b, pem_password_cb *c, void *d);
DSA *q_PEM_read_bio_DSA_PUBKEY(BIO *a, DSA **b, pem_password_cb *c, void *d);
RSA *q_PEM_read_bio_RSA_PUBKEY(BIO *a, RSA **b, pem_password_cb *c, void *d);
-#ifndef OPENSSL_NO_EC
-EC_KEY *q_PEM_read_bio_EC_PUBKEY(BIO *a, EC_KEY **b, pem_password_cb *c, void *d);
-#endif
int q_PEM_write_bio_DSA_PUBKEY(BIO *a, DSA *b);
int q_PEM_write_bio_RSA_PUBKEY(BIO *a, RSA *b);
int q_PEM_write_bio_PUBKEY(BIO *a, EVP_PKEY *b);
-#ifndef OPENSSL_NO_EC
-int q_PEM_write_bio_EC_PUBKEY(BIO *a, EC_KEY *b);
-#endif
+
void q_RAND_seed(const void *a, int b);
int q_RAND_status();
int q_RAND_bytes(unsigned char *b, int n);
@@ -378,14 +478,12 @@ int q_SSL_CTX_use_PrivateKey(SSL_CTX *a, EVP_PKEY *b);
int q_SSL_CTX_use_RSAPrivateKey(SSL_CTX *a, RSA *b);
int q_SSL_CTX_use_PrivateKey_file(SSL_CTX *a, const char *b, int c);
X509_STORE *q_SSL_CTX_get_cert_store(const SSL_CTX *a);
-#if OPENSSL_VERSION_NUMBER >= 0x10002000L
SSL_CONF_CTX *q_SSL_CONF_CTX_new();
void q_SSL_CONF_CTX_free(SSL_CONF_CTX *a);
void q_SSL_CONF_CTX_set_ssl_ctx(SSL_CONF_CTX *a, SSL_CTX *b);
unsigned int q_SSL_CONF_CTX_set_flags(SSL_CONF_CTX *a, unsigned int b);
int q_SSL_CONF_CTX_finish(SSL_CONF_CTX *a);
int q_SSL_CONF_cmd(SSL_CONF_CTX *a, const char *b, const char *c);
-#endif
void q_SSL_free(SSL *a);
STACK_OF(SSL_CIPHER) *q_SSL_get_ciphers(const SSL *a);
const SSL_CIPHER *q_SSL_get_current_cipher(SSL *a);
@@ -407,26 +505,18 @@ int q_SSL_set_session(SSL *to, SSL_SESSION *session);
void q_SSL_SESSION_free(SSL_SESSION *ses);
SSL_SESSION *q_SSL_get1_session(SSL *ssl);
SSL_SESSION *q_SSL_get_session(const SSL *ssl);
-#if OPENSSL_VERSION_NUMBER >= 0x10001000L
int q_SSL_set_ex_data(SSL *ssl, int idx, void *arg);
void *q_SSL_get_ex_data(const SSL *ssl, int idx);
-#endif
-#if OPENSSL_VERSION_NUMBER >= 0x10001000L && !defined(OPENSSL_NO_PSK)
+#ifndef OPENSSL_NO_PSK
typedef unsigned int (*q_psk_client_callback_t)(SSL *ssl, const char *hint, char *identity, unsigned int max_identity_len, unsigned char *psk, unsigned int max_psk_len);
void q_SSL_set_psk_client_callback(SSL *ssl, q_psk_client_callback_t callback);
typedef unsigned int (*q_psk_server_callback_t)(SSL *ssl, const char *identity, unsigned char *psk, unsigned int max_psk_len);
void q_SSL_set_psk_server_callback(SSL *ssl, q_psk_server_callback_t callback);
int q_SSL_CTX_use_psk_identity_hint(SSL_CTX *ctx, const char *hint);
-#endif // OPENSSL_VERSION_NUMBER >= 0x10001000L && !defined(OPENSSL_NO_PSK)
+#endif // !OPENSSL_NO_PSK
int q_SSL_write(SSL *a, const void *b, int c);
int q_X509_cmp(X509 *a, X509 *b);
-#ifdef SSLEAY_MACROS
-void *q_ASN1_dup(i2d_of_void *i2d, d2i_of_void *d2i, char *x);
-#define q_X509_dup(x509) (X509 *)q_ASN1_dup((i2d_of_void *)q_i2d_X509, \
- (d2i_of_void *)q_d2i_X509,(char *)x509)
-#else
X509 *q_X509_dup(X509 *a);
-#endif
void q_X509_print(BIO *a, X509*b);
int q_X509_digest(const X509 *x509, const EVP_MD *type, unsigned char *md, unsigned int *len);
ASN1_OBJECT *q_X509_EXTENSION_get_object(X509_EXTENSION *a);
@@ -485,13 +575,10 @@ void q_EC_KEY_free(EC_KEY *ecdh);
// EC curves management
size_t q_EC_get_builtin_curves(EC_builtin_curve *r, size_t nitems);
-#if OPENSSL_VERSION_NUMBER >= 0x10002000L
int q_EC_curve_nist2nid(const char *name);
-#endif // OPENSSL_VERSION_NUMBER >= 0x10002000L
#endif // OPENSSL_NO_EC
-#if OPENSSL_VERSION_NUMBER >= 0x10002000L
+
#define q_SSL_get_server_tmp_key(ssl, key) q_SSL_ctrl((ssl), SSL_CTRL_GET_SERVER_TMP_KEY, 0, (char *)key)
-#endif // OPENSSL_VERSION_NUMBER >= 0x10002000L
// PKCS#12 support
int q_PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, STACK_OF(X509) **ca);
@@ -521,7 +608,7 @@ int q_SSL_CTX_load_verify_locations(SSL_CTX *ctx, const char *CAfile, const char
int q_i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp);
SSL_SESSION *q_d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, long length);
-#if OPENSSL_VERSION_NUMBER >= 0x1000100fL && !defined(OPENSSL_NO_NEXTPROTONEG)
+#ifndef OPENSSL_NO_NEXTPROTONEG
int q_SSL_select_next_proto(unsigned char **out, unsigned char *outlen,
const unsigned char *in, unsigned int inlen,
const unsigned char *client, unsigned int client_len);
@@ -533,7 +620,6 @@ void q_SSL_CTX_set_next_proto_select_cb(SSL_CTX *s,
void *arg);
void q_SSL_get0_next_proto_negotiated(const SSL *s, const unsigned char **data,
unsigned *len);
-#if OPENSSL_VERSION_NUMBER >= 0x10002000L
int q_SSL_set_alpn_protos(SSL *ssl, const unsigned char *protos,
unsigned protos_len);
void q_SSL_CTX_set_alpn_select_cb(SSL_CTX *ctx,
@@ -545,8 +631,8 @@ void q_SSL_CTX_set_alpn_select_cb(SSL_CTX *ctx,
void *arg), void *arg);
void q_SSL_get0_alpn_selected(const SSL *ssl, const unsigned char **data,
unsigned *len);
-#endif
-#endif // OPENSSL_VERSION_NUMBER >= 0x1000100fL ...
+#endif // !OPENSSL_NO_NEXTPROTONEG
+
#if QT_CONFIG(dtls)
@@ -586,13 +672,9 @@ int q_BIO_set_ex_data(BIO *b, int idx, void *data);
class QDateTime;
QDateTime q_getTimeFromASN1(const ASN1_TIME *aTime);
-#ifndef OPENSSL_NO_TLSEXT
-
#define q_SSL_set_tlsext_status_type(ssl, type) \
q_SSL_ctrl((ssl), SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE, (type), nullptr)
-#endif // OPENSSL_NO_TLSEXT
-
#if QT_CONFIG(ocsp)
OCSP_RESPONSE *q_d2i_OCSP_RESPONSE(OCSP_RESPONSE **a, const unsigned char **in, long len);
diff --git a/src/network/ssl/qsslsocket_opensslpre11.cpp b/src/network/ssl/qsslsocket_opensslpre11.cpp
deleted file mode 100644
index 2af437f0fa..0000000000
--- a/src/network/ssl/qsslsocket_opensslpre11.cpp
+++ /dev/null
@@ -1,408 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Copyright (C) 2014 Governikus GmbH & Co. KG
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtNetwork module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/****************************************************************************
-**
-** In addition, as a special exception, the copyright holders listed above give
-** permission to link the code of its release of Qt with the OpenSSL project's
-** "OpenSSL" library (or modified versions of the "OpenSSL" library that use the
-** same license as the original version), and distribute the linked executables.
-**
-** You must comply with the GNU General Public License version 2 in all
-** respects for all of the code used other than the "OpenSSL" code. If you
-** modify this file, you may extend this exception to your version of the file,
-** but you are not obligated to do so. If you do not wish to do so, delete
-** this exception statement from your version of this file.
-**
-****************************************************************************/
-
-//#define QT_DECRYPT_SSL_TRAFFIC
-
-#include "qssl_p.h"
-#include "qsslsocket_openssl_p.h"
-#include "qsslsocket_openssl_symbols_p.h"
-#include "qsslsocket.h"
-#include "qsslkey.h"
-
-#include <QtCore/qdebug.h>
-#include <QtCore/qdir.h>
-#include <QtCore/qdiriterator.h>
-#include <QtCore/qthread.h>
-#include <QtCore/qfile.h>
-#include <QtCore/qmutex.h>
-
-QT_BEGIN_NAMESPACE
-
-/* \internal
-
- From OpenSSL's thread(3) manual page:
-
- OpenSSL can safely be used in multi-threaded applications provided that at
- least two callback functions are set.
-
- locking_function(int mode, int n, const char *file, int line) is needed to
- perform locking on shared data structures. (Note that OpenSSL uses a
- number of global data structures that will be implicitly shared
- whenever multiple threads use OpenSSL.) Multi-threaded
- applications will crash at random if it is not set. ...
- ...
- id_function(void) is a function that returns a thread ID. It is not
- needed on Windows nor on platforms where getpid() returns a different
- ID for each thread (most notably Linux)
-*/
-
-class QOpenSslLocks
-{
-public:
- QOpenSslLocks()
- : initLocker(QMutex::Recursive),
- locksLocker(QMutex::Recursive)
- {
- QMutexLocker locker(&locksLocker);
- int numLocks = q_CRYPTO_num_locks();
- locks = new QMutex *[numLocks];
- memset(locks, 0, numLocks * sizeof(QMutex *));
- }
- ~QOpenSslLocks()
- {
- QMutexLocker locker(&locksLocker);
- for (int i = 0; i < q_CRYPTO_num_locks(); ++i)
- delete locks[i];
- delete [] locks;
-
- QSslSocketPrivate::deinitialize();
- }
- QMutex *lock(int num)
- {
- QMutexLocker locker(&locksLocker);
- QMutex *tmp = locks[num];
- if (!tmp)
- tmp = locks[num] = new QMutex(QMutex::Recursive);
- return tmp;
- }
-
- QMutex *globalLock()
- {
- return &locksLocker;
- }
-
- QMutex *initLock()
- {
- return &initLocker;
- }
-
-private:
- QMutex initLocker;
- QMutex locksLocker;
- QMutex **locks;
-};
-
-Q_GLOBAL_STATIC(QOpenSslLocks, openssl_locks)
-
-extern "C" {
-static void locking_function(int mode, int lockNumber, const char *, int)
-{
- QMutex *mutex = openssl_locks()->lock(lockNumber);
-
- // Lock or unlock it
- if (mode & CRYPTO_LOCK)
- mutex->lock();
- else
- mutex->unlock();
-}
-static unsigned long id_function()
-{
- return (quintptr)QThread::currentThreadId();
-}
-
-} // extern "C"
-
-static void q_OpenSSL_add_all_algorithms_safe()
-{
-#ifdef Q_OS_WIN
- // Prior to version 1.0.1m an attempt to call OpenSSL_add_all_algorithms on
- // Windows could result in 'exit' call from OPENSSL_config (QTBUG-43843).
- // We can predict this and avoid OPENSSL_add_all_algorithms call.
- // From OpenSSL docs:
- // "An application does not need to add algorithms to use them explicitly,
- // for example by EVP_sha1(). It just needs to add them if it (or any of
- // the functions it calls) needs to lookup algorithms.
- // The cipher and digest lookup functions are used in many parts of the
- // library. If the table is not initialized several functions will
- // misbehave and complain they cannot find algorithms. This includes the
- // PEM, PKCS#12, SSL and S/MIME libraries. This is a common query in
- // the OpenSSL mailing lists."
- //
- // Anyway, as a result, we chose not to call this function if it would exit.
-
- if (q_SSLeay() < 0x100010DFL)
- {
- // Now, before we try to call it, check if an attempt to open config file
- // will result in exit:
- if (char *confFileName = q_CONF_get1_default_config_file()) {
- BIO *confFile = q_BIO_new_file(confFileName, "r");
- const auto lastError = q_ERR_peek_last_error();
- q_CRYPTO_free(confFileName);
- if (confFile) {
- q_BIO_free(confFile);
- } else {
- q_ERR_clear_error();
- if (ERR_GET_REASON(lastError) == ERR_R_SYS_LIB) {
- qCWarning(lcSsl, "failed to open openssl.conf file");
- return;
- }
- }
- }
- }
-#endif // Q_OS_WIN
-
- q_OpenSSL_add_all_algorithms();
-}
-
-
-void QSslSocketPrivate::deinitialize()
-{
- q_CRYPTO_set_id_callback(0);
- q_CRYPTO_set_locking_callback(0);
- q_ERR_free_strings();
-}
-
-
-bool QSslSocketPrivate::ensureLibraryLoaded()
-{
- if (!q_resolveOpenSslSymbols())
- return false;
-
- // Check if the library itself needs to be initialized.
- QMutexLocker locker(openssl_locks()->initLock());
-
- if (!s_libraryLoaded) {
- // Initialize OpenSSL.
- q_CRYPTO_set_id_callback(id_function);
- q_CRYPTO_set_locking_callback(locking_function);
- if (q_SSL_library_init() != 1)
- return false;
- q_SSL_load_error_strings();
- q_OpenSSL_add_all_algorithms_safe();
-
-#if OPENSSL_VERSION_NUMBER >= 0x10001000L
- if (q_SSLeay() >= 0x10001000L)
- QSslSocketBackendPrivate::s_indexForSSLExtraData = q_SSL_get_ex_new_index(0L, NULL, NULL, NULL, NULL);
-#endif
-
- // Initialize OpenSSL's random seed.
- if (!q_RAND_status()) {
- qWarning("Random number generator not seeded, disabling SSL support");
- return false;
- }
-
- s_libraryLoaded = true;
- }
- return true;
-}
-
-void QSslSocketPrivate::ensureCiphersAndCertsLoaded()
-{
- QMutexLocker locker(openssl_locks()->initLock());
- if (s_loadedCiphersAndCerts)
- return;
- s_loadedCiphersAndCerts = true;
-
- resetDefaultCiphers();
- resetDefaultEllipticCurves();
-
-#if QT_CONFIG(library)
- //load symbols needed to receive certificates from system store
-#if defined(Q_OS_QNX)
- s_loadRootCertsOnDemand = true;
-#elif defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)
- // check whether we can enable on-demand root-cert loading (i.e. check whether the sym links are there)
- QList<QByteArray> dirs = unixRootCertDirectories();
- QStringList symLinkFilter;
- symLinkFilter << QLatin1String("[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f].[0-9]");
- for (int a = 0; a < dirs.count(); ++a) {
- QDirIterator iterator(QLatin1String(dirs.at(a)), symLinkFilter, QDir::Files);
- if (iterator.hasNext()) {
- s_loadRootCertsOnDemand = true;
- break;
- }
- }
-#endif
-#endif // QT_CONFIG(library)
- // if on-demand loading was not enabled, load the certs now
- if (!s_loadRootCertsOnDemand)
- setDefaultCaCertificates(systemCaCertificates());
-#ifdef Q_OS_WIN
- //Enabled for fetching additional root certs from windows update on windows 6+
- //This flag is set false by setDefaultCaCertificates() indicating the app uses
- //its own cert bundle rather than the system one.
- //Same logic that disables the unix on demand cert loading.
- //Unlike unix, we do preload the certificates from the cert store.
- s_loadRootCertsOnDemand = true;
-#endif
-}
-
-long QSslSocketPrivate::sslLibraryVersionNumber()
-{
- if (!supportsSsl())
- return 0;
-
- return q_SSLeay();
-}
-
-QString QSslSocketPrivate::sslLibraryVersionString()
-{
- if (!supportsSsl())
- return QString();
-
- const char *versionString = q_SSLeay_version(SSLEAY_VERSION);
- if (!versionString)
- return QString();
-
- return QString::fromLatin1(versionString);
-}
-
-void QSslSocketBackendPrivate::continueHandshake()
-{
- Q_Q(QSslSocket);
- // if we have a max read buffer size, reset the plain socket's to match
- if (readBufferMaxSize)
- plainSocket->setReadBufferSize(readBufferMaxSize);
-
- if (q_SSL_ctrl((ssl), SSL_CTRL_GET_SESSION_REUSED, 0, NULL))
- configuration.peerSessionShared = true;
-
-#ifdef QT_DECRYPT_SSL_TRAFFIC
- if (ssl->session && ssl->s3) {
- const char *mk = reinterpret_cast<const char *>(ssl->session->master_key);
- QByteArray masterKey(mk, ssl->session->master_key_length);
- const char *random = reinterpret_cast<const char *>(ssl->s3->client_random);
- QByteArray clientRandom(random, SSL3_RANDOM_SIZE);
-
- // different format, needed for e.g. older Wireshark versions:
-// const char *sid = reinterpret_cast<const char *>(ssl->session->session_id);
-// QByteArray sessionID(sid, ssl->session->session_id_length);
-// QByteArray debugLineRSA("RSA Session-ID:");
-// debugLineRSA.append(sessionID.toHex().toUpper());
-// debugLineRSA.append(" Master-Key:");
-// debugLineRSA.append(masterKey.toHex().toUpper());
-// debugLineRSA.append("\n");
-
- QByteArray debugLineClientRandom("CLIENT_RANDOM ");
- debugLineClientRandom.append(clientRandom.toHex().toUpper());
- debugLineClientRandom.append(" ");
- debugLineClientRandom.append(masterKey.toHex().toUpper());
- debugLineClientRandom.append("\n");
-
- QString sslKeyFile = QDir::tempPath() + QLatin1String("/qt-ssl-keys");
- QFile file(sslKeyFile);
- if (!file.open(QIODevice::Append))
- qCWarning(lcSsl) << "could not open file" << sslKeyFile << "for appending";
- if (!file.write(debugLineClientRandom))
- qCWarning(lcSsl) << "could not write to file" << sslKeyFile;
- file.close();
- } else {
- qCWarning(lcSsl, "could not decrypt SSL traffic");
- }
-#endif
-
- // Cache this SSL session inside the QSslContext
- if (!(configuration.sslOptions & QSsl::SslOptionDisableSessionSharing)) {
- if (!sslContextPointer->cacheSession(ssl)) {
- sslContextPointer.clear(); // we could not cache the session
- } else {
- // Cache the session for permanent usage as well
- if (!(configuration.sslOptions & QSsl::SslOptionDisableSessionPersistence)) {
- if (!sslContextPointer->sessionASN1().isEmpty())
- configuration.sslSession = sslContextPointer->sessionASN1();
- configuration.sslSessionTicketLifeTimeHint = sslContextPointer->sessionTicketLifeTimeHint();
- }
- }
- }
-
-#if OPENSSL_VERSION_NUMBER >= 0x1000100fL && !defined(OPENSSL_NO_NEXTPROTONEG)
-
- configuration.nextProtocolNegotiationStatus = sslContextPointer->npnContext().status;
- if (sslContextPointer->npnContext().status == QSslConfiguration::NextProtocolNegotiationUnsupported) {
- // we could not agree -> be conservative and use HTTP/1.1
- configuration.nextNegotiatedProtocol = QByteArrayLiteral("http/1.1");
- } else {
- const unsigned char *proto = 0;
- unsigned int proto_len = 0;
-#if OPENSSL_VERSION_NUMBER >= 0x10002000L
- if (q_SSLeay() >= 0x10002000L) {
- q_SSL_get0_alpn_selected(ssl, &proto, &proto_len);
- if (proto_len && mode == QSslSocket::SslClientMode) {
- // Client does not have a callback that sets it ...
- configuration.nextProtocolNegotiationStatus = QSslConfiguration::NextProtocolNegotiationNegotiated;
- }
- }
-
- if (!proto_len) { // Test if NPN was more lucky ...
-#else
- {
-#endif
- q_SSL_get0_next_proto_negotiated(ssl, &proto, &proto_len);
- }
-
- if (proto_len)
- configuration.nextNegotiatedProtocol = QByteArray(reinterpret_cast<const char *>(proto), proto_len);
- else
- configuration.nextNegotiatedProtocol.clear();
- }
-#endif // OPENSSL_VERSION_NUMBER >= 0x1000100fL ...
-
-#if OPENSSL_VERSION_NUMBER >= 0x10002000L
- if (q_SSLeay() >= 0x10002000L && mode == QSslSocket::SslClientMode) {
- EVP_PKEY *key;
- if (q_SSL_get_server_tmp_key(ssl, &key))
- configuration.ephemeralServerKey = QSslKey(key, QSsl::PublicKey);
- }
-#endif // OPENSSL_VERSION_NUMBER >= 0x10002000L ...
-
- connectionEncrypted = true;
- emit q->encrypted();
- if (autoStartHandshake && pendingClose) {
- pendingClose = false;
- q->disconnectFromHost();
- }
-}
-
-QT_END_NAMESPACE
diff --git a/src/network/ssl/qsslsocket_opensslpre11_symbols_p.h b/src/network/ssl/qsslsocket_opensslpre11_symbols_p.h
deleted file mode 100644
index f5626d5d16..0000000000
--- a/src/network/ssl/qsslsocket_opensslpre11_symbols_p.h
+++ /dev/null
@@ -1,202 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Copyright (C) 2014 BlackBerry Limited. All rights reserved.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtNetwork module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/****************************************************************************
-**
-** In addition, as a special exception, the copyright holders listed above give
-** permission to link the code of its release of Qt with the OpenSSL project's
-** "OpenSSL" library (or modified versions of the "OpenSSL" library that use the
-** same license as the original version), and distribute the linked executables.
-**
-** You must comply with the GNU General Public License version 2 in all
-** respects for all of the code used other than the "OpenSSL" code. If you
-** modify this file, you may extend this exception to your version of the file,
-** but you are not obligated to do so. If you do not wish to do so, delete
-** this exception statement from your version of this file.
-**
-****************************************************************************/
-
-
-#ifndef QSSLSOCKET_OPENSSLPRE11_SYMBOLS_P_H
-#define QSSLSOCKET_OPENSSLPRE11_SYMBOLS_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.
-//
-
-// Note: this file does not have QT_BEGIN_NAMESPACE/QT_END_NAMESPACE, it's done
-// in qsslsocket_openssl_symbols_p.h.
-
-#ifndef QSSLSOCKET_OPENSSL_SYMBOLS_P_H
-#error "You are not supposed to use this header file, include qsslsocket_openssl_symbols_p.h instead"
-#endif
-
-unsigned char * q_ASN1_STRING_data(ASN1_STRING *a);
-BIO *q_BIO_new_file(const char *filename, const char *mode);
-void q_ERR_clear_error();
-Q_AUTOTEST_EXPORT BIO *q_BIO_new(BIO_METHOD *a);
-Q_AUTOTEST_EXPORT BIO_METHOD *q_BIO_s_mem();
-int q_CRYPTO_num_locks();
-void q_CRYPTO_set_locking_callback(void (*a)(int, int, const char *, int));
-void q_CRYPTO_set_id_callback(unsigned long (*a)());
-void q_CRYPTO_free(void *a);
-int q_CRYPTO_set_ex_data(CRYPTO_EX_DATA *ad, int idx, void *val);
-void *q_CRYPTO_get_ex_data(const CRYPTO_EX_DATA *ad, int idx);
-unsigned long q_ERR_peek_last_error();
-void q_ERR_free_strings();
-void q_EVP_CIPHER_CTX_cleanup(EVP_CIPHER_CTX *a);
-void q_EVP_CIPHER_CTX_init(EVP_CIPHER_CTX *a);
-
-typedef _STACK STACK;
-
-// The typedef we use to make our pre 1.1 code look more like 1.1 (less ifdefs).
-typedef STACK OPENSSL_STACK;
-
-// We resolve q_sk_ functions, but use q_OPENSSL_sk_ macros in code to reduce
-// the amount of #ifdefs.
-int q_sk_num(STACK *a);
-#define q_OPENSSL_sk_num(a) q_sk_num(a)
-void q_sk_pop_free(STACK *a, void (*b)(void *));
-#define q_OPENSSL_sk_pop_free(a, b) q_sk_pop_free(a, b)
-STACK *q_sk_new_null();
-#define q_OPENSSL_sk_new_null() q_sk_new_null()
-
-void q_sk_free(STACK *a);
-
-// Just a name alias (not a function call expression) since in code we take an
-// address of this:
-#define q_OPENSSL_sk_free q_sk_free
-
-void *q_sk_value(STACK *a, int b);
-void q_sk_push(STACK *st, void *data);
-
-#define q_OPENSSL_sk_value(a, b) q_sk_value(a, b)
-#define q_OPENSSL_sk_push(st, data) q_sk_push(st, data)
-
-SSL_CTX *q_SSL_CTX_new(const SSL_METHOD *a);
-
-int q_SSL_library_init();
-void q_SSL_load_error_strings();
-
-#if OPENSSL_VERSION_NUMBER >= 0x10001000L
-int q_SSL_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func);
-#endif
-
-const SSL_METHOD *q_SSLv23_client_method();
-const SSL_METHOD *q_TLSv1_client_method();
-const SSL_METHOD *q_TLSv1_1_client_method();
-const SSL_METHOD *q_TLSv1_2_client_method();
-const SSL_METHOD *q_SSLv23_server_method();
-const SSL_METHOD *q_TLSv1_server_method();
-const SSL_METHOD *q_TLSv1_1_server_method();
-const SSL_METHOD *q_TLSv1_2_server_method();
-
-STACK_OF(X509) *q_X509_STORE_CTX_get_chain(X509_STORE_CTX *ctx);
-
-#ifdef SSLEAY_MACROS
-int q_i2d_DSAPrivateKey(const DSA *a, unsigned char **pp);
-int q_i2d_RSAPrivateKey(const RSA *a, unsigned char **pp);
-RSA *q_d2i_RSAPrivateKey(RSA **a, unsigned char **pp, long length);
-DSA *q_d2i_DSAPrivateKey(DSA **a, unsigned char **pp, long length);
-#define q_PEM_read_bio_RSAPrivateKey(bp, x, cb, u) \
- (RSA *)q_PEM_ASN1_read_bio( \
- (void *(*)(void**, const unsigned char**, long int))q_d2i_RSAPrivateKey, PEM_STRING_RSA, bp, (void **)x, cb, u)
-#define q_PEM_read_bio_DSAPrivateKey(bp, x, cb, u) \
- (DSA *)q_PEM_ASN1_read_bio( \
- (void *(*)(void**, const unsigned char**, long int))q_d2i_DSAPrivateKey, PEM_STRING_DSA, bp, (void **)x, cb, u)
-#define q_PEM_write_bio_RSAPrivateKey(bp,x,enc,kstr,klen,cb,u) \
- PEM_ASN1_write_bio((int (*)(void*, unsigned char**))q_i2d_RSAPrivateKey,PEM_STRING_RSA,\
- bp,(char *)x,enc,kstr,klen,cb,u)
-#define q_PEM_write_bio_DSAPrivateKey(bp,x,enc,kstr,klen,cb,u) \
- PEM_ASN1_write_bio((int (*)(void*, unsigned char**))q_i2d_DSAPrivateKey,PEM_STRING_DSA,\
- bp,(char *)x,enc,kstr,klen,cb,u)
-#define q_PEM_read_bio_DHparams(bp, dh, cb, u) \
- (DH *)q_PEM_ASN1_read_bio( \
- (void *(*)(void**, const unsigned char**, long int))q_d2i_DHparams, PEM_STRING_DHPARAMS, bp, (void **)x, cb, u)
-#endif // SSLEAY_MACROS
-
-#define q_SSL_CTX_set_options(ctx,op) q_SSL_CTX_ctrl((ctx),SSL_CTRL_OPTIONS,(op),NULL)
-#define q_SSL_set_options(ssl,op) q_SSL_ctrl((ssl),SSL_CTRL_OPTIONS,(op),nullptr)
-#define q_SKM_sk_num(type, st) ((int (*)(const STACK_OF(type) *))q_sk_num)(st)
-#define q_SKM_sk_value(type, st,i) ((type * (*)(const STACK_OF(type) *, int))q_sk_value)(st, i)
-#define q_X509_getm_notAfter(x) X509_get_notAfter(x)
-#define q_X509_getm_notBefore(x) X509_get_notBefore(x)
-
-// "Forward compatibility" with OpenSSL 1.1 (to save on #if-ery elsewhere):
-#define q_X509_get_version(x509) q_ASN1_INTEGER_get((x509)->cert_info->version)
-#define q_ASN1_STRING_get0_data(x) q_ASN1_STRING_data(x)
-#define q_EVP_PKEY_base_id(pkey) ((pkey)->type)
-#define q_X509_get_pubkey(x509) q_X509_PUBKEY_get((x509)->cert_info->key)
-#define q_SSL_SESSION_get_ticket_lifetime_hint(s) ((s)->tlsext_tick_lifetime_hint)
-#define q_RSA_bits(rsa) q_BN_num_bits((rsa)->n)
-#define q_DSA_bits(dsa) q_BN_num_bits((dsa)->p)
-#define q_DH_bits(dsa) q_BN_num_bits((dh)->p)
-#define q_X509_STORE_set_verify_cb(s,c) X509_STORE_set_verify_cb_func((s),(c))
-
-char *q_CONF_get1_default_config_file();
-void q_OPENSSL_add_all_algorithms_noconf();
-void q_OPENSSL_add_all_algorithms_conf();
-
-long q_SSLeay();
-const char *q_SSLeay_version(int type);
-
-#if QT_CONFIG(dtls)
-// DTLS:
-extern "C"
-{
-typedef int (*CookieVerifyCallback)(SSL *, unsigned char *, unsigned);
-}
-
-#define q_DTLSv1_listen(ssl, peer) q_SSL_ctrl(ssl, DTLS_CTRL_LISTEN, 0, (void *)peer)
-
-const SSL_METHOD *q_DTLSv1_server_method();
-const SSL_METHOD *q_DTLSv1_client_method();
-const SSL_METHOD *q_DTLSv1_2_server_method();
-const SSL_METHOD *q_DTLSv1_2_client_method();
-#endif // dtls
-
-#endif // QSSLSOCKET_OPENSSL_PRE11_SYMBOLS_P_H
diff --git a/src/network/ssl/qsslsocket_p.h b/src/network/ssl/qsslsocket_p.h
index daa9be23f4..1abd18bb32 100644
--- a/src/network/ssl/qsslsocket_p.h
+++ b/src/network/ssl/qsslsocket_p.h
@@ -127,7 +127,6 @@ public:
static long sslLibraryBuildVersionNumber();
static QString sslLibraryBuildVersionString();
static void ensureInitialized();
- static void deinitialize();
static QList<QSslCipher> defaultCiphers();
static QList<QSslCipher> supportedCiphers();
static void setDefaultCiphers(const QList<QSslCipher> &ciphers);
diff --git a/src/network/ssl/qsslsocket_schannel.cpp b/src/network/ssl/qsslsocket_schannel.cpp
index c6e3e4d786..31b0db4818 100644
--- a/src/network/ssl/qsslsocket_schannel.cpp
+++ b/src/network/ssl/qsslsocket_schannel.cpp
@@ -431,6 +431,53 @@ QByteArray createAlpnString(const QByteArrayList &nextAllowedProtocols)
return alpnString;
}
#endif // SUPPORTS_ALPN
+
+qint64 readToBuffer(QByteArray &buffer, QTcpSocket *plainSocket)
+{
+ Q_ASSERT(plainSocket);
+ static const qint64 shrinkCutoff = 1024 * 12;
+ static const qint64 defaultRead = 1024 * 16;
+ qint64 bytesRead = 0;
+
+ const auto toRead = std::min(defaultRead, plainSocket->bytesAvailable());
+ if (toRead > 0) {
+ const auto bufferSize = buffer.size();
+ buffer.reserve(bufferSize + toRead); // avoid growth strategy kicking in
+ buffer.resize(bufferSize + toRead);
+ bytesRead = plainSocket->read(buffer.data() + bufferSize, toRead);
+ buffer.resize(bufferSize + bytesRead);
+ // In case of excessive memory usage we shrink:
+ if (buffer.size() < shrinkCutoff && buffer.capacity() > defaultRead)
+ buffer.shrink_to_fit();
+ }
+
+ return bytesRead;
+}
+
+void retainExtraData(QByteArray &buffer, const SecBuffer &secBuffer)
+{
+ Q_ASSERT(secBuffer.BufferType == SECBUFFER_EXTRA);
+ if (int(secBuffer.cbBuffer) >= buffer.size())
+ return;
+
+#ifdef QSSLSOCKET_DEBUG
+ qCDebug(lcSsl, "We got SECBUFFER_EXTRA, will retain %lu bytes", secBuffer.cbBuffer);
+#endif
+ std::move(buffer.end() - secBuffer.cbBuffer, buffer.end(), buffer.begin());
+ buffer.resize(secBuffer.cbBuffer);
+}
+
+qint64 checkIncompleteData(const SecBuffer &secBuffer)
+{
+ if (secBuffer.BufferType == SECBUFFER_MISSING) {
+#ifdef QSSLSOCKET_DEBUG
+ qCDebug(lcSsl, "Need %lu more bytes.", secBuffer.cbBuffer);
+#endif
+ return secBuffer.cbBuffer;
+}
+ return 0;
+}
+
} // anonymous namespace
bool QSslSocketPrivate::s_loadRootCertsOnDemand = true;
@@ -619,8 +666,8 @@ bool QSslSocketBackendPrivate::acquireCredentialsHandle()
nullptr);
if (!chainContext) {
const QString message = isClient
- ? QSslSocket::tr("The certificate provided cannot be used for a client.")
- : QSslSocket::tr("The certificate provided cannot be used for a server.");
+ ? QSslSocket::tr("The certificate provided cannot be used for a client.")
+ : QSslSocket::tr("The certificate provided cannot be used for a server.");
setErrorAndEmit(QAbstractSocket::SocketError::SslInvalidUserDataError, message);
return false;
}
@@ -774,7 +821,11 @@ bool QSslSocketBackendPrivate::acceptContext()
Q_ASSERT(mode == QSslSocket::SslServerMode);
ULONG contextReq = getContextRequirements();
- intermediateBuffer += plainSocket->read(16384);
+ if (missingData > plainSocket->bytesAvailable())
+ return true;
+
+ missingData = 0;
+ readToBuffer(intermediateBuffer, plainSocket);
if (intermediateBuffer.isEmpty())
return true; // definitely need more data..
@@ -830,6 +881,7 @@ bool QSslSocketBackendPrivate::acceptContext()
if (status == SEC_E_INCOMPLETE_MESSAGE) {
// Need more data
+ missingData = checkIncompleteData(outBuffers[0]);
return true;
}
@@ -837,9 +889,9 @@ bool QSslSocketBackendPrivate::acceptContext()
// https://docs.microsoft.com/en-us/windows/desktop/secauthn/extra-buffers-returned-by-schannel
// inBuffers[1].cbBuffer indicates the amount of bytes _NOT_ processed, the rest need to
// be stored.
- intermediateBuffer = intermediateBuffer.right(int(inBuffers[1].cbBuffer));
+ retainExtraData(intermediateBuffer, inBuffers[1]);
} else { /* No 'extra' data, message not incomplete */
- intermediateBuffer.clear();
+ intermediateBuffer.resize(0);
}
if (status != SEC_I_CONTINUE_NEEDED) {
@@ -865,11 +917,15 @@ bool QSslSocketBackendPrivate::performHandshake()
Q_ASSERT(schannelState == SchannelState::PerformHandshake);
#ifdef QSSLSOCKET_DEBUG
- qCDebug(lcSsl) << "Bytes available from socket:" << plainSocket->bytesAvailable();
- qCDebug(lcSsl) << "intermediateBuffer size:" << intermediateBuffer.size();
+ qCDebug(lcSsl, "Bytes available from socket: %lld", plainSocket->bytesAvailable());
+ qCDebug(lcSsl, "intermediateBuffer size: %d", intermediateBuffer.size());
#endif
- intermediateBuffer += plainSocket->read(16384);
+ if (missingData > plainSocket->bytesAvailable())
+ return true;
+
+ missingData = 0;
+ readToBuffer(intermediateBuffer, plainSocket);
if (intermediateBuffer.isEmpty())
return true; // no data, will fail
@@ -918,11 +974,10 @@ bool QSslSocketBackendPrivate::performHandshake()
// https://docs.microsoft.com/en-us/windows/desktop/secauthn/extra-buffers-returned-by-schannel
// inputBuffers[1].cbBuffer indicates the amount of bytes _NOT_ processed, the rest need to
// be stored.
- intermediateBuffer = intermediateBuffer.right(int(inputBuffers[1].cbBuffer));
- } else {
+ retainExtraData(intermediateBuffer, inputBuffers[1]);
+ } else if (status != SEC_E_INCOMPLETE_MESSAGE) {
// Clear the buffer if we weren't asked for more data
- if (status != SEC_E_INCOMPLETE_MESSAGE)
- intermediateBuffer.clear();
+ intermediateBuffer.resize(0);
}
switch (status) {
case SEC_E_OK:
@@ -955,6 +1010,7 @@ bool QSslSocketBackendPrivate::performHandshake()
return true;
case SEC_E_INCOMPLETE_MESSAGE:
// Simply incomplete, wait for more data
+ missingData = checkIncompleteData(outBuffers[0]);
return true;
case SEC_E_ALGORITHM_MISMATCH:
setErrorAndEmit(QAbstractSocket::SslHandshakeFailedError,
@@ -1158,6 +1214,8 @@ void QSslSocketBackendPrivate::reset()
connectionEncrypted = false;
shutdown = false;
renegotiating = false;
+
+ missingData = 0;
}
void QSslSocketBackendPrivate::startClientEncryption()
@@ -1229,8 +1287,7 @@ void QSslSocketBackendPrivate::transmit()
fullMessage.resize(inputBuffers[0].cbBuffer + inputBuffers[1].cbBuffer + inputBuffers[2].cbBuffer);
const qint64 bytesWritten = plainSocket->write(fullMessage);
#ifdef QSSLSOCKET_DEBUG
- qCDebug(lcSsl) << "Wrote" << bytesWritten << "of total"
- << fullMessage.length() << "bytes";
+ qCDebug(lcSsl, "Wrote %lld of total %d bytes", bytesWritten, fullMessage.length());
#endif
if (bytesWritten >= 0) {
totalBytesWritten += bytesWritten;
@@ -1255,36 +1312,32 @@ void QSslSocketBackendPrivate::transmit()
int totalRead = 0;
bool hadIncompleteData = false;
while (!readBufferMaxSize || buffer.size() < readBufferMaxSize) {
- QByteArray ciphertext;
- if (intermediateBuffer.length()) {
+ if (missingData > plainSocket->bytesAvailable()) {
#ifdef QSSLSOCKET_DEBUG
- qCDebug(lcSsl) << "Restoring data from intermediateBuffer:"
- << intermediateBuffer.length() << "bytes";
+ qCDebug(lcSsl, "We're still missing %lld bytes, will check later.", missingData);
#endif
- ciphertext.swap(intermediateBuffer);
+ break;
}
- int initialLength = ciphertext.length();
- ciphertext += plainSocket->read(16384);
+
+ missingData = 0;
+ const qint64 bytesRead = readToBuffer(intermediateBuffer, plainSocket);
#ifdef QSSLSOCKET_DEBUG
- qCDebug(lcSsl) << "Read" << ciphertext.length() - initialLength
- << "encrypted bytes from the socket";
+ qCDebug(lcSsl, "Read %lld encrypted bytes from the socket", bytesRead);
#endif
- if (ciphertext.length() == 0 || (hadIncompleteData && initialLength == ciphertext.length())) {
+ if (intermediateBuffer.length() == 0 || (hadIncompleteData && bytesRead == 0)) {
#ifdef QSSLSOCKET_DEBUG
- qCDebug(lcSsl) << (hadIncompleteData ? "No new data received, leaving loop!"
- : "Nothing to decrypt, leaving loop!");
+ qCDebug(lcSsl, (hadIncompleteData ? "No new data received, leaving loop!"
+ : "Nothing to decrypt, leaving loop!"));
#endif
- if (ciphertext.length()) // We have data, it came from intermediateBuffer, swap back
- intermediateBuffer.swap(ciphertext);
break;
}
hadIncompleteData = false;
#ifdef QSSLSOCKET_DEBUG
- qCDebug(lcSsl) << "Total amount of bytes to decrypt:" << ciphertext.length();
+ qCDebug(lcSsl, "Total amount of bytes to decrypt: %d", intermediateBuffer.length());
#endif
SecBuffer dataBuffer[4]{
- createSecBuffer(ciphertext, SECBUFFER_DATA),
+ createSecBuffer(intermediateBuffer, SECBUFFER_DATA),
createSecBuffer(nullptr, 0, SECBUFFER_EMPTY),
createSecBuffer(nullptr, 0, SECBUFFER_EMPTY),
createSecBuffer(nullptr, 0, SECBUFFER_EMPTY)
@@ -1300,34 +1353,30 @@ void QSslSocketBackendPrivate::transmit()
if (dataBuffer[1].cbBuffer > 0) {
// It is always decrypted in-place.
// But [0] is the STREAM_HEADER, [1] is the DATA and [2] is the STREAM_TRAILER.
- // The pointers in all of those still point into the 'ciphertext' byte array.
+ // The pointers in all of those still point into 'intermediateBuffer'.
buffer.append(static_cast<char *>(dataBuffer[1].pvBuffer),
dataBuffer[1].cbBuffer);
totalRead += dataBuffer[1].cbBuffer;
#ifdef QSSLSOCKET_DEBUG
- qCDebug(lcSsl) << "Decrypted" << dataBuffer[1].cbBuffer
- << "bytes. New read buffer size:" << buffer.size();
+ qCDebug(lcSsl, "Decrypted %lu bytes. New read buffer size: %d",
+ dataBuffer[1].cbBuffer, buffer.size());
#endif
}
if (dataBuffer[3].BufferType == SECBUFFER_EXTRA) {
// https://docs.microsoft.com/en-us/windows/desktop/secauthn/extra-buffers-returned-by-schannel
// dataBuffer[3].cbBuffer indicates the amount of bytes _NOT_ processed,
// the rest need to be stored.
-#ifdef QSSLSOCKET_DEBUG
- qCDebug(lcSsl) << "We've got excess data, moving it to the intermediate buffer:"
- << dataBuffer[3].cbBuffer << "bytes";
-#endif
- intermediateBuffer = ciphertext.right(int(dataBuffer[3].cbBuffer));
+ retainExtraData(intermediateBuffer, dataBuffer[3]);
+ } else {
+ intermediateBuffer.resize(0);
}
}
if (status == SEC_E_INCOMPLETE_MESSAGE) {
- // Need more data before we can decrypt.. to the buffer it goes!
+ missingData = checkIncompleteData(dataBuffer[0]);
#ifdef QSSLSOCKET_DEBUG
qCDebug(lcSsl, "We didn't have enough data to decrypt anything, will try again!");
#endif
- Q_ASSERT(intermediateBuffer.isEmpty());
- intermediateBuffer.swap(ciphertext);
// We try again, but if we don't get any more data then we leave
hadIncompleteData = true;
} else if (status == SEC_E_INVALID_HANDLE) {
diff --git a/src/network/ssl/qsslsocket_schannel_p.h b/src/network/ssl/qsslsocket_schannel_p.h
index 6ab200e1f9..a184deef49 100644
--- a/src/network/ssl/qsslsocket_schannel_p.h
+++ b/src/network/ssl/qsslsocket_schannel_p.h
@@ -145,6 +145,7 @@ private:
const CERT_CONTEXT *localCertContext = nullptr;
ULONG contextAttributes = 0;
+ qint64 missingData = 0;
bool renegotiating = false;
};
diff --git a/src/network/ssl/qsslsocket_winrt.cpp b/src/network/ssl/qsslsocket_winrt.cpp
index 39c1ce55e3..f3ca3dc257 100644
--- a/src/network/ssl/qsslsocket_winrt.cpp
+++ b/src/network/ssl/qsslsocket_winrt.cpp
@@ -157,11 +157,6 @@ QSslSocketBackendPrivate::~QSslSocketBackendPrivate()
g->syncCaCertificates(QSet<QSslCertificate>(), previousCaCertificates);
}
-void QSslSocketPrivate::deinitialize()
-{
- Q_UNIMPLEMENTED();
-}
-
bool QSslSocketPrivate::supportsSsl()
{
return true;
diff --git a/src/network/ssl/ssl.pri b/src/network/ssl/ssl.pri
index 8bb70a2aed..0c8b9ccd40 100644
--- a/src/network/ssl/ssl.pri
+++ b/src/network/ssl/ssl.pri
@@ -102,17 +102,7 @@ qtConfig(ssl) {
qtConfig(ocsp): HEADERS += ssl/qocsp_p.h
- qtConfig(opensslv11) {
- HEADERS += ssl/qsslsocket_openssl11_symbols_p.h
- SOURCES += ssl/qsslsocket_openssl11.cpp \
- ssl/qsslcontext_openssl11.cpp
-
- QMAKE_CXXFLAGS += -DOPENSSL_API_COMPAT=0x10100000L
- } else {
- HEADERS += ssl/qsslsocket_opensslpre11_symbols_p.h
- SOURCES += ssl/qsslsocket_opensslpre11.cpp \
- ssl/qsslcontext_opensslpre11.cpp
- }
+ QMAKE_CXXFLAGS += -DOPENSSL_API_COMPAT=0x10100000L
darwin:SOURCES += ssl/qsslsocket_mac_shared.cpp
diff --git a/src/opengl/qgl.cpp b/src/opengl/qgl.cpp
index 2d7b0280d8..4108b70094 100644
--- a/src/opengl/qgl.cpp
+++ b/src/opengl/qgl.cpp
@@ -83,7 +83,8 @@ QT_BEGIN_NAMESPACE
class QGLDefaultExtensions
{
public:
- QGLDefaultExtensions() : extensions(0) {
+ QGLDefaultExtensions()
+ {
QGLTemporaryContext tempContext;
Q_ASSERT(QOpenGLContext::currentContext());
QOpenGLExtensions *ext = qgl_extensions();
diff --git a/src/opengl/qglfunctions.cpp b/src/opengl/qglfunctions.cpp
index f22f9f470b..b20311bec4 100644
--- a/src/opengl/qglfunctions.cpp
+++ b/src/opengl/qglfunctions.cpp
@@ -279,7 +279,7 @@ QGLFunctions::OpenGLFeatures QGLFunctions::openGLFeatures() const
{
QGLFunctionsPrivateEx *d = static_cast<QGLFunctionsPrivateEx *>(d_ptr);
if (!d)
- return 0;
+ return { };
if (d->m_features == -1)
d->m_features = qt_gl_resolve_features();
return QGLFunctions::OpenGLFeatures(d->m_features);
diff --git a/src/platformheaders/nativecontexts/qglxnativecontext.h b/src/platformheaders/nativecontexts/qglxnativecontext.h
index 2b566d127a..989d68eb9e 100644
--- a/src/platformheaders/nativecontexts/qglxnativecontext.h
+++ b/src/platformheaders/nativecontexts/qglxnativecontext.h
@@ -56,13 +56,13 @@ typedef int VisualID;
struct QGLXNativeContext
{
QGLXNativeContext()
- : m_context(0),
- m_display(0),
+ : m_context(nullptr),
+ m_display(nullptr),
m_window(0),
m_visualId(0)
{ }
- QGLXNativeContext(GLXContext ctx, Display *dpy = 0, Window wnd = 0, VisualID vid = 0)
+ QGLXNativeContext(GLXContext ctx, Display *dpy = nullptr, Window wnd = 0, VisualID vid = 0)
: m_context(ctx),
m_display(dpy),
m_window(wnd),
diff --git a/src/platformsupport/eglconvenience/qeglconvenience.cpp b/src/platformsupport/eglconvenience/qeglconvenience.cpp
index 5ee4773b70..5303d37cee 100644
--- a/src/platformsupport/eglconvenience/qeglconvenience.cpp
+++ b/src/platformsupport/eglconvenience/qeglconvenience.cpp
@@ -281,11 +281,11 @@ EGLConfig QEglConfigChooser::chooseConfig()
}
configureAttributes.append(EGL_NONE);
- EGLConfig cfg = 0;
+ EGLConfig cfg = nullptr;
do {
// Get the number of matching configurations for this set of properties.
EGLint matching = 0;
- if (!eglChooseConfig(display(), configureAttributes.constData(), 0, 0, &matching) || !matching)
+ if (!eglChooseConfig(display(), configureAttributes.constData(), nullptr, 0, &matching) || !matching)
continue;
// Fetch all of the matching configurations and find the
@@ -450,7 +450,7 @@ static struct AttrInfo attrs[] = {
{EGL_BIND_TO_TEXTURE_RGBA, "EGL_BIND_TO_TEXTURE_RGBA"},
{EGL_MIN_SWAP_INTERVAL, "EGL_MIN_SWAP_INTERVAL"},
{EGL_MAX_SWAP_INTERVAL, "EGL_MAX_SWAP_INTERVAL"},
- {-1, 0}};
+ {-1, nullptr}};
void q_printEglConfig(EGLDisplay display, EGLConfig config)
{
diff --git a/src/platformsupport/eglconvenience/qeglpbuffer_p.h b/src/platformsupport/eglconvenience/qeglpbuffer_p.h
index 8ad2eb7248..a137d0d328 100644
--- a/src/platformsupport/eglconvenience/qeglpbuffer_p.h
+++ b/src/platformsupport/eglconvenience/qeglpbuffer_p.h
@@ -60,7 +60,7 @@ class QEGLPbuffer : public QPlatformOffscreenSurface
{
public:
QEGLPbuffer(EGLDisplay display, const QSurfaceFormat &format, QOffscreenSurface *offscreenSurface,
- QEGLPlatformContext::Flags flags = nullptr);
+ QEGLPlatformContext::Flags flags = { });
~QEGLPbuffer();
QSurfaceFormat format() const override { return m_format; }
diff --git a/src/platformsupport/eglconvenience/qeglplatformcontext.cpp b/src/platformsupport/eglconvenience/qeglplatformcontext.cpp
index 94def16748..aa87a620d8 100644
--- a/src/platformsupport/eglconvenience/qeglplatformcontext.cpp
+++ b/src/platformsupport/eglconvenience/qeglplatformcontext.cpp
@@ -137,7 +137,7 @@ void QEGLPlatformContext::init(const QSurfaceFormat &format, QPlatformOpenGLCont
m_format = q_glFormatFromConfig(m_eglDisplay, m_eglConfig, format);
// m_format now has the renderableType() resolved (it cannot be Default anymore)
// but does not yet contain version, profile, options.
- m_shareContext = share ? static_cast<QEGLPlatformContext *>(share)->m_eglContext : 0;
+ m_shareContext = share ? static_cast<QEGLPlatformContext *>(share)->m_eglContext : nullptr;
QVector<EGLint> contextAttrs;
contextAttrs.append(EGL_CONTEXT_CLIENT_VERSION);
@@ -194,8 +194,8 @@ void QEGLPlatformContext::init(const QSurfaceFormat &format, QPlatformOpenGLCont
eglBindAPI(m_api);
m_eglContext = eglCreateContext(m_eglDisplay, m_eglConfig, m_shareContext, contextAttrs.constData());
if (m_eglContext == EGL_NO_CONTEXT && m_shareContext != EGL_NO_CONTEXT) {
- m_shareContext = 0;
- m_eglContext = eglCreateContext(m_eglDisplay, m_eglConfig, 0, contextAttrs.constData());
+ m_shareContext = nullptr;
+ m_eglContext = eglCreateContext(m_eglDisplay, m_eglConfig, nullptr, contextAttrs.constData());
}
if (m_eglContext == EGL_NO_CONTEXT) {
@@ -262,7 +262,7 @@ void QEGLPlatformContext::adopt(const QVariant &nativeHandle, QPlatformOpenGLCon
}
m_eglContext = context;
- m_shareContext = share ? static_cast<QEGLPlatformContext *>(share)->m_eglContext : 0;
+ m_shareContext = share ? static_cast<QEGLPlatformContext *>(share)->m_eglContext : nullptr;
updateFormatFromGL();
}
@@ -326,7 +326,7 @@ void QEGLPlatformContext::updateFormatFromGL()
EGLBoolean ok = eglMakeCurrent(m_eglDisplay, tempSurface, tempSurface, m_eglContext);
if (!ok) {
EGLConfig config = q_configFromGLFormat(m_eglDisplay, m_format, false, EGL_PBUFFER_BIT);
- tempContext = eglCreateContext(m_eglDisplay, config, 0, m_contextAttrs.constData());
+ tempContext = eglCreateContext(m_eglDisplay, config, nullptr, m_contextAttrs.constData());
if (tempContext != EGL_NO_CONTEXT)
ok = eglMakeCurrent(m_eglDisplay, tempSurface, tempSurface, tempContext);
}
diff --git a/src/platformsupport/eglconvenience/qeglplatformcontext_p.h b/src/platformsupport/eglconvenience/qeglplatformcontext_p.h
index ed77c57df5..f0388cd29c 100644
--- a/src/platformsupport/eglconvenience/qeglplatformcontext_p.h
+++ b/src/platformsupport/eglconvenience/qeglplatformcontext_p.h
@@ -69,7 +69,7 @@ public:
QEGLPlatformContext(const QSurfaceFormat &format, QPlatformOpenGLContext *share, EGLDisplay display,
EGLConfig *config = nullptr, const QVariant &nativeHandle = QVariant(),
- Flags flags = nullptr);
+ Flags flags = { });
~QEGLPlatformContext();
void initialize() override;
diff --git a/src/platformsupport/eventdispatchers/qwindowsguieventdispatcher.cpp b/src/platformsupport/eventdispatchers/qwindowsguieventdispatcher.cpp
index a37547f513..20cfb5155e 100644
--- a/src/platformsupport/eventdispatchers/qwindowsguieventdispatcher.cpp
+++ b/src/platformsupport/eventdispatchers/qwindowsguieventdispatcher.cpp
@@ -61,7 +61,7 @@ QT_BEGIN_NAMESPACE
*/
QWindowsGuiEventDispatcher::QWindowsGuiEventDispatcher(QObject *parent) :
- QEventDispatcherWin32(parent), m_flags(0)
+ QEventDispatcherWin32(parent)
{
setObjectName(QStringLiteral("QWindowsGuiEventDispatcher"));
createInternalHwnd(); // QTBUG-40881: Do not delay registering timers, etc. for QtMfc.
diff --git a/src/platformsupport/fbconvenience/qfbscreen.cpp b/src/platformsupport/fbconvenience/qfbscreen.cpp
index c42fd879f8..76984dfe5c 100644
--- a/src/platformsupport/fbconvenience/qfbscreen.cpp
+++ b/src/platformsupport/fbconvenience/qfbscreen.cpp
@@ -255,7 +255,7 @@ QFbWindow *QFbScreen::windowForId(WId wid) const
QFbScreen::Flags QFbScreen::flags() const
{
- return 0;
+ return { };
}
QT_END_NAMESPACE
diff --git a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
index 7abf295782..7af5490963 100644
--- a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
+++ b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2019 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the plugins of the Qt Toolkit.
@@ -260,7 +260,18 @@ static const char specialLanguages[][6] = {
"", // MasaramGondi
"", // Nushu
"", // Soyombo
- "" // ZanabazarSquare
+ "", // ZanabazarSquare
+ "", // Dogra
+ "", // GunjalaGondi
+ "", // HanifiRohingya
+ "", // Makasar
+ "", // Medefaidrin
+ "", // OldSogdian
+ "", // Sogdian
+ "", // Elymaic
+ "", // Nandinagari
+ "", // NyiakengPuachueHmong
+ "" // Wancho
};
Q_STATIC_ASSERT(sizeof specialLanguages / sizeof *specialLanguages == QChar::ScriptCount);
@@ -349,7 +360,7 @@ Q_STATIC_ASSERT(sizeof(capabilityForWritingSystem) / sizeof(*capabilityForWritin
static const char *getFcFamilyForStyleHint(const QFont::StyleHint style)
{
- const char *stylehint = 0;
+ const char *stylehint = nullptr;
switch (style) {
case QFont::SansSerif:
stylehint = "sans-serif";
@@ -383,7 +394,7 @@ static void populateFromPattern(FcPattern *pattern)
{
QString familyName;
QString familyNameLang;
- FcChar8 *value = 0;
+ FcChar8 *value = nullptr;
int weight_value;
int slant_value;
int spacing_value;
@@ -406,7 +417,7 @@ static void populateFromPattern(FcPattern *pattern)
slant_value = FC_SLANT_ROMAN;
weight_value = FC_WEIGHT_REGULAR;
spacing_value = FC_PROPORTIONAL;
- file_value = 0;
+ file_value = nullptr;
indexValue = 0;
scalable = FcTrue;
@@ -420,20 +431,20 @@ static void populateFromPattern(FcPattern *pattern)
if (FcPatternGetInteger(pattern, FC_SPACING, 0, &spacing_value) != FcResultMatch)
spacing_value = FC_PROPORTIONAL;
if (FcPatternGetString(pattern, FC_FILE, 0, &file_value) != FcResultMatch)
- file_value = 0;
+ file_value = nullptr;
if (FcPatternGetInteger(pattern, FC_INDEX, 0, &indexValue) != FcResultMatch)
indexValue = 0;
if (FcPatternGetBool(pattern, FC_SCALABLE, 0, &scalable) != FcResultMatch)
scalable = FcTrue;
if (FcPatternGetString(pattern, FC_FOUNDRY, 0, &foundry_value) != FcResultMatch)
- foundry_value = 0;
+ foundry_value = nullptr;
if (FcPatternGetString(pattern, FC_STYLE, 0, &style_value) != FcResultMatch)
- style_value = 0;
+ style_value = nullptr;
if (FcPatternGetBool(pattern,FC_ANTIALIAS,0,&antialias) != FcResultMatch)
antialias = true;
QSupportedWritingSystems writingSystems;
- FcLangSet *langset = 0;
+ FcLangSet *langset = nullptr;
FcResult res = FcPatternGetLangSet(pattern, FC_LANG, 0, &langset);
if (res == FcResultMatch) {
bool hasLang = false;
@@ -450,7 +461,7 @@ static void populateFromPattern(FcPattern *pattern)
if (*capabilityForWritingSystem[j] && requiresOpenType(j)) {
if (cap == nullptr)
capRes = FcPatternGetString(pattern, FC_CAPABILITY, 0, &cap);
- if (capRes == FcResultMatch && strstr(reinterpret_cast<const char *>(cap), capabilityForWritingSystem[j]) == 0)
+ if (capRes == FcResultMatch && strstr(reinterpret_cast<const char *>(cap), capabilityForWritingSystem[j]) == nullptr)
continue;
}
#endif
@@ -535,14 +546,14 @@ void QFontconfigDatabase::populateFontDatabase()
#if FC_VERSION >= 20297
FC_CAPABILITY,
#endif
- (const char *)0
+ (const char *)nullptr
};
const char **p = properties;
while (*p) {
FcObjectSetAdd(os, *p);
++p;
}
- fonts = FcFontList(0, pattern, os);
+ fonts = FcFontList(nullptr, pattern, os);
FcObjectSetDestroy(os);
FcPatternDestroy(pattern);
}
@@ -561,7 +572,7 @@ void QFontconfigDatabase::populateFontDatabase()
{ "Serif", "serif", false },
{ "Sans Serif", "sans-serif", false },
{ "Monospace", "monospace", true },
- { 0, 0, false }
+ { nullptr, nullptr, false }
};
const FcDefaultFont *f = defaults;
// aliases only make sense for 'common', not for any of the specials
@@ -570,9 +581,9 @@ void QFontconfigDatabase::populateFontDatabase()
while (f->qtname) {
QString familyQtName = QString::fromLatin1(f->qtname);
- registerFont(familyQtName,QString(),QString(),QFont::Normal,QFont::StyleNormal,QFont::Unstretched,true,true,0,f->fixed,ws,0);
- registerFont(familyQtName,QString(),QString(),QFont::Normal,QFont::StyleItalic,QFont::Unstretched,true,true,0,f->fixed,ws,0);
- registerFont(familyQtName,QString(),QString(),QFont::Normal,QFont::StyleOblique,QFont::Unstretched,true,true,0,f->fixed,ws,0);
+ registerFont(familyQtName,QString(),QString(),QFont::Normal,QFont::StyleNormal,QFont::Unstretched,true,true,0,f->fixed,ws,nullptr);
+ registerFont(familyQtName,QString(),QString(),QFont::Normal,QFont::StyleItalic,QFont::Unstretched,true,true,0,f->fixed,ws,nullptr);
+ registerFont(familyQtName,QString(),QString(),QFont::Normal,QFont::StyleOblique,QFont::Unstretched,true,true,0,f->fixed,ws,nullptr);
++f;
}
@@ -588,7 +599,7 @@ void QFontconfigDatabase::populateFontDatabase()
void QFontconfigDatabase::invalidate()
{
// Clear app fonts.
- FcConfigAppFontClear(0);
+ FcConfigAppFontClear(nullptr);
}
QFontEngineMulti *QFontconfigDatabase::fontEngineMulti(QFontEngine *fontEngine, QChar::Script script)
@@ -680,7 +691,7 @@ QFontEngine::SubpixelAntialiasingType subpixelTypeFromMatch(FcPattern *match, bo
QFontEngine *QFontconfigDatabase::fontEngine(const QFontDef &f, void *usrPtr)
{
if (!usrPtr)
- return 0;
+ return nullptr;
FontFile *fontfile = static_cast<FontFile *> (usrPtr);
QFontEngine::FaceId fid;
@@ -695,7 +706,7 @@ QFontEngine *QFontconfigDatabase::fontEngine(const QFontDef &f, void *usrPtr)
if (!engine->init(fid, engine->antialias, engine->defaultFormat) || engine->invalid()) {
delete engine;
- engine = 0;
+ engine = nullptr;
}
return engine;
@@ -704,8 +715,8 @@ QFontEngine *QFontconfigDatabase::fontEngine(const QFontDef &f, void *usrPtr)
QFontEngine *QFontconfigDatabase::fontEngine(const QByteArray &fontData, qreal pixelSize, QFont::HintingPreference hintingPreference)
{
QFontEngineFT *engine = static_cast<QFontEngineFT*>(QFreeTypeFontDatabase::fontEngine(fontData, pixelSize, hintingPreference));
- if (engine == 0)
- return 0;
+ if (engine == nullptr)
+ return nullptr;
setupFontEngine(engine, engine->fontDef);
@@ -746,7 +757,7 @@ QStringList QFontconfigDatabase::fallbacksForFamily(const QString &family, QFont
// while a Japanese font should be used for that if LANG=ja)
FcPattern *dummy = FcPatternCreate();
FcDefaultSubstitute(dummy);
- FcChar8 *lang = 0;
+ FcChar8 *lang = nullptr;
FcResult res = FcPatternGetString(dummy, FC_LANG, 0, &lang);
if (res == FcResultMatch)
FcPatternAddString(pattern, FC_LANG, lang);
@@ -759,11 +770,11 @@ QStringList QFontconfigDatabase::fallbacksForFamily(const QString &family, QFont
FcPatternAddWeak(pattern, FC_FAMILY, value, FcTrue);
}
- FcConfigSubstitute(0, pattern, FcMatchPattern);
+ FcConfigSubstitute(nullptr, pattern, FcMatchPattern);
FcDefaultSubstitute(pattern);
FcResult result = FcResultMatch;
- FcFontSet *fontSet = FcFontSort(0,pattern,FcFalse,0,&result);
+ FcFontSet *fontSet = FcFontSort(nullptr,pattern,FcFalse,nullptr,&result);
FcPatternDestroy(pattern);
if (fontSet) {
@@ -771,7 +782,7 @@ QStringList QFontconfigDatabase::fallbacksForFamily(const QString &family, QFont
duplicates.reserve(fontSet->nfont + 1);
duplicates.insert(family.toCaseFolded());
for (int i = 0; i < fontSet->nfont; i++) {
- FcChar8 *value = 0;
+ FcChar8 *value = nullptr;
if (FcPatternGetString(fontSet->fonts[i], FC_FAMILY, 0, &value) != FcResultMatch)
continue;
// capitalize(value);
@@ -800,7 +811,7 @@ static FcPattern *queryFont(const FcChar8 *file, const QByteArray &data, int id,
FT_Library lib = qt_getFreetype();
- FcPattern *pattern = 0;
+ FcPattern *pattern = nullptr;
FT_Face face;
if (!FT_New_Memory_Face(lib, (const FT_Byte *)data.constData(), data.size(), id, &face)) {
@@ -819,16 +830,16 @@ QStringList QFontconfigDatabase::addApplicationFont(const QByteArray &fontData,
{
QStringList families;
- FcFontSet *set = FcConfigGetFonts(0, FcSetApplication);
+ FcFontSet *set = FcConfigGetFonts(nullptr, FcSetApplication);
if (!set) {
- FcConfigAppFontAddFile(0, (const FcChar8 *)":/non-existent");
- set = FcConfigGetFonts(0, FcSetApplication); // try again
+ FcConfigAppFontAddFile(nullptr, (const FcChar8 *)":/non-existent");
+ set = FcConfigGetFonts(nullptr, FcSetApplication); // try again
if (!set)
return families;
}
int id = 0;
- FcBlanks *blanks = FcConfigGetBlanks(0);
+ FcBlanks *blanks = FcConfigGetBlanks(nullptr);
int count = 0;
FcPattern *pattern;
@@ -838,7 +849,7 @@ QStringList QFontconfigDatabase::addApplicationFont(const QByteArray &fontData,
if (!pattern)
return families;
- FcChar8 *fam = 0;
+ FcChar8 *fam = nullptr;
if (FcPatternGetString(pattern, FC_FAMILY, 0, &fam) == FcResultMatch) {
QString family = QString::fromUtf8(reinterpret_cast<const char *>(fam));
families << family;
@@ -866,10 +877,10 @@ QString QFontconfigDatabase::resolveFontFamilyAlias(const QString &family) const
const QByteArray cs = family.toUtf8();
FcPatternAddString(pattern, FC_FAMILY, (const FcChar8 *) cs.constData());
}
- FcConfigSubstitute(0, pattern, FcMatchPattern);
+ FcConfigSubstitute(nullptr, pattern, FcMatchPattern);
FcDefaultSubstitute(pattern);
- FcChar8 *familyAfterSubstitution = 0;
+ FcChar8 *familyAfterSubstitution = nullptr;
FcPatternGetString(pattern, FC_FAMILY, 0, &familyAfterSubstitution);
resolved = QString::fromUtf8((const char *) familyAfterSubstitution);
FcPatternDestroy(pattern);
@@ -884,7 +895,7 @@ QFont QFontconfigDatabase::defaultFont() const
// or https://bugs.freedesktop.org/show_bug.cgi?id=35482 is fixed
FcPattern *dummy = FcPatternCreate();
FcDefaultSubstitute(dummy);
- FcChar8 *lang = 0;
+ FcChar8 *lang = nullptr;
FcResult res = FcPatternGetString(dummy, FC_LANG, 0, &lang);
FcPattern *pattern = FcPatternCreate();
@@ -893,10 +904,10 @@ QFont QFontconfigDatabase::defaultFont() const
// certain FC_LANG based custom rules may happen in FcConfigSubstitute()
FcPatternAddString(pattern, FC_LANG, lang);
}
- FcConfigSubstitute(0, pattern, FcMatchPattern);
+ FcConfigSubstitute(nullptr, pattern, FcMatchPattern);
FcDefaultSubstitute(pattern);
- FcChar8 *familyAfterSubstitution = 0;
+ FcChar8 *familyAfterSubstitution = nullptr;
FcPatternGetString(pattern, FC_FAMILY, 0, &familyAfterSubstitution);
QString resolved = QString::fromUtf8((const char *) familyAfterSubstitution);
FcPatternDestroy(pattern);
@@ -953,10 +964,10 @@ void QFontconfigDatabase::setupFontEngine(QFontEngineFT *engine, const QFontDef
FcResult result;
- FcConfigSubstitute(0, pattern, FcMatchPattern);
+ FcConfigSubstitute(nullptr, pattern, FcMatchPattern);
FcDefaultSubstitute(pattern);
- FcPattern *match = FcFontMatch(0, pattern, &result);
+ FcPattern *match = FcFontMatch(nullptr, pattern, &result);
if (match) {
engine->setDefaultHintStyle(defaultHintStyleFromMatch((QFont::HintingPreference)fontDef.hintingPreference, match, useXftConf));
diff --git a/src/platformsupport/fontdatabases/fontconfig/qfontenginemultifontconfig.cpp b/src/platformsupport/fontdatabases/fontconfig/qfontenginemultifontconfig.cpp
index 2fbcb6216e..cbf0793d75 100644
--- a/src/platformsupport/fontdatabases/fontconfig/qfontenginemultifontconfig.cpp
+++ b/src/platformsupport/fontdatabases/fontconfig/qfontenginemultifontconfig.cpp
@@ -60,7 +60,7 @@ bool QFontEngineMultiFontConfig::shouldLoadFontEngineForCharacter(int at, uint u
{
bool charSetHasChar = true;
FcPattern *matchPattern = getMatchPatternForFallback(at - 1);
- if (matchPattern != 0) {
+ if (matchPattern != nullptr) {
FcCharSet *charSet;
FcPatternGetCharSet(matchPattern, FC_CHARSET, 0, &charSet);
charSetHasChar = FcCharSetHasChar(charSet, ucs4);
@@ -85,7 +85,7 @@ FcPattern * QFontEngineMultiFontConfig::getMatchPatternForFallback(int fallBackI
value.u.s = reinterpret_cast<const FcChar8 *>(cs.data());
FcPatternAdd(requestPattern, FC_FAMILY, value, true);
FcResult result;
- ret = FcFontMatch(0, requestPattern, &result);
+ ret = FcFontMatch(nullptr, requestPattern, &result);
cachedMatchPatterns.insert(fallBackIndex, ret);
FcPatternDestroy(requestPattern);
return ret;
diff --git a/src/platformsupport/fontdatabases/freetype/qfontengine_ft.cpp b/src/platformsupport/fontdatabases/freetype/qfontengine_ft.cpp
index 8c6cc8fbc1..3e5939a5e4 100644
--- a/src/platformsupport/fontdatabases/freetype/qfontengine_ft.cpp
+++ b/src/platformsupport/fontdatabases/freetype/qfontengine_ft.cpp
@@ -121,7 +121,7 @@ class QtFreetypeData
{
public:
QtFreetypeData()
- : library(0)
+ : library(nullptr)
{ }
~QtFreetypeData();
@@ -135,7 +135,7 @@ QtFreetypeData::~QtFreetypeData()
iter.value()->cleanup();
faces.clear();
FT_Done_FreeType(library);
- library = 0;
+ library = nullptr;
}
Q_GLOBAL_STATIC(QThreadStorage<QtFreetypeData *>, theFreetypeData)
@@ -215,7 +215,7 @@ QFreetypeFace *QFreetypeFace::getFace(const QFontEngine::FaceId &face_id,
const QByteArray &fontData)
{
if (face_id.filename.isEmpty() && fontData.isEmpty())
- return 0;
+ return nullptr;
QtFreetypeData *freetypeData = qt_getFreetypeData();
@@ -238,7 +238,7 @@ QFreetypeFace *QFreetypeFace::getFace(const QFontEngine::FaceId &face_id,
} else if (!QFileInfo(fileName).isNativePath()) {
QFile file(fileName);
if (!file.open(QIODevice::ReadOnly)) {
- return 0;
+ return nullptr;
}
newFreetype->fontData = file.readAll();
}
@@ -247,10 +247,10 @@ QFreetypeFace *QFreetypeFace::getFace(const QFontEngine::FaceId &face_id,
}
if (!newFreetype->fontData.isEmpty()) {
if (FT_New_Memory_Face(freetypeData->library, (const FT_Byte *)newFreetype->fontData.constData(), newFreetype->fontData.size(), face_id.index, &face)) {
- return 0;
+ return nullptr;
}
} else if (FT_New_Face(freetypeData->library, face_id.filename, face_id.index, &face)) {
- return 0;
+ return nullptr;
}
newFreetype->face = face;
@@ -261,8 +261,8 @@ QFreetypeFace *QFreetypeFace::getFace(const QFontEngine::FaceId &face_id,
newFreetype->matrix.yy = 0x10000;
newFreetype->matrix.xy = 0;
newFreetype->matrix.yx = 0;
- newFreetype->unicode_map = 0;
- newFreetype->symbol_map = 0;
+ newFreetype->unicode_map = nullptr;
+ newFreetype->symbol_map = nullptr;
memset(newFreetype->cmapCache, 0, sizeof(newFreetype->cmapCache));
@@ -307,7 +307,7 @@ void QFreetypeFace::cleanup()
{
hbFace.reset();
FT_Done_Face(face);
- face = 0;
+ face = nullptr;
}
void QFreetypeFace::release(const QFontEngine::FaceId &face_id)
@@ -324,7 +324,7 @@ void QFreetypeFace::release(const QFontEngine::FaceId &face_id)
if (freetypeData->faces.isEmpty()) {
FT_Done_FreeType(freetypeData->library);
- freetypeData->library = 0;
+ freetypeData->library = nullptr;
}
}
@@ -659,7 +659,7 @@ QFontEngineFT *QFontEngineFT::create(const QByteArray &fontData, qreal pixelSize
QFontEngineFTRawData *fe = new QFontEngineFTRawData(fontDef);
if (!fe->initFromData(fontData)) {
delete fe;
- return 0;
+ return nullptr;
}
fe->updateFamilyNameAndStyle();
@@ -682,7 +682,7 @@ QFontEngineFT::QFontEngineFT(const QFontDef &fd)
embolden = false;
obliquen = false;
antialias = true;
- freetype = 0;
+ freetype = nullptr;
default_load_flags = FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH;
default_hint_style = ftInitialDefaultHintStyle;
subpixelType = Subpixel_None;
@@ -729,7 +729,7 @@ bool QFontEngineFT::init(FaceId faceId, bool antialias, GlyphFormat format,
face_id = faceId;
- symbol = freetype->symbol_map != 0;
+ symbol = freetype->symbol_map != nullptr;
PS_FontInfoRec psrec;
// don't assume that type1 fonts are symbol fonts by default
if (FT_Get_PS_Font_Info(freetype->face, &psrec) == FT_Err_Ok) {
@@ -744,7 +744,7 @@ bool QFontEngineFT::init(FaceId faceId, bool antialias, GlyphFormat format,
bool fake_oblique = (fontDef.style != QFont::StyleNormal) && !(face->style_flags & FT_STYLE_FLAG_ITALIC);
if (fake_oblique)
obliquen = true;
- FT_Set_Transform(face, &matrix, 0);
+ FT_Set_Transform(face, &matrix, nullptr);
freetype->matrix = matrix;
// fake bold
if ((fontDef.weight >= QFont::Bold) && !(face->style_flags & FT_STYLE_FLAG_BOLD) && !FT_IS_FIXED_WIDTH(face)) {
@@ -953,7 +953,7 @@ QFontEngineFT::Glyph *QFontEngineFT::loadGlyph(QGlyphSet *set, uint glyph,
format = defaultFormat != Format_None ? defaultFormat : Format_Mono;
Q_ASSERT(format != Format_None);
- Glyph *g = set ? set->getGlyph(glyph, subPixelPosition) : 0;
+ Glyph *g = set ? set->getGlyph(glyph, subPixelPosition) : nullptr;
if (g && g->format == format && (fetchMetricsOnly || g->data))
return g;
@@ -1051,10 +1051,10 @@ QFontEngineFT::Glyph *QFontEngineFT::loadGlyph(QGlyphSet *set, uint glyph,
// If any of the metrics are too large to fit, don't cache them
if (areMetricsTooLarge(info))
- return 0;
+ return nullptr;
g = new Glyph;
- g->data = 0;
+ g->data = nullptr;
g->linearAdvance = info.linearAdvance;
g->width = info.width;
g->height = info.height;
@@ -1176,12 +1176,12 @@ QFontEngineFT::Glyph *QFontEngineFT::loadGlyph(QGlyphSet *set, uint glyph,
convertRGBToARGB_V(slot->bitmap.buffer, (uint *)glyph_buffer.data(), info.width, info.height, slot->bitmap.pitch, subpixelType != Subpixel_VRGB);
} else {
qWarning("QFontEngine: Glyph rendered in unknown pixel_mode=%d", slot->bitmap.pixel_mode);
- return 0;
+ return nullptr;
}
if (!g) {
g = new Glyph;
- g->data = 0;
+ g->data = nullptr;
}
g->linearAdvance = info.linearAdvance;
@@ -1357,7 +1357,7 @@ static inline FT_Matrix QTransformToFTMatrix(const QTransform &matrix)
QFontEngineFT::QGlyphSet *QFontEngineFT::loadGlyphSet(const QTransform &matrix)
{
if (matrix.type() > QTransform::TxShear || !cacheEnabled)
- return 0;
+ return nullptr;
// FT_Set_Transform only supports scalable fonts
if (!FT_IS_SCALABLE(freetype->face))
@@ -1365,7 +1365,7 @@ QFontEngineFT::QGlyphSet *QFontEngineFT::loadGlyphSet(const QTransform &matrix)
FT_Matrix m = QTransformToFTMatrix(matrix);
- QGlyphSet *gs = 0;
+ QGlyphSet *gs = nullptr;
for (int i = 0; i < transformedGlyphSets.count(); ++i) {
const QGlyphSet &g = transformedGlyphSets.at(i);
@@ -1393,7 +1393,7 @@ QFontEngineFT::QGlyphSet *QFontEngineFT::loadGlyphSet(const QTransform &matrix)
gs->transformationMatrix = m;
gs->outline_drawing = fontDef.pixelSize * fontDef.pixelSize * qAbs(matrix.determinant()) > QT_MAX_CACHED_GLYPH_SIZE * QT_MAX_CACHED_GLYPH_SIZE;
}
- Q_ASSERT(gs != 0);
+ Q_ASSERT(gs != nullptr);
return gs;
}
@@ -1401,7 +1401,7 @@ QFontEngineFT::QGlyphSet *QFontEngineFT::loadGlyphSet(const QTransform &matrix)
void QFontEngineFT::getUnscaledGlyph(glyph_t glyph, QPainterPath *path, glyph_metrics_t *metrics)
{
FT_Face face = lockFace(Unscaled);
- FT_Set_Transform(face, 0, 0);
+ FT_Set_Transform(face, nullptr, nullptr);
FT_Load_Glyph(face, glyph, FT_LOAD_NO_BITMAP);
int left = face->glyph->metrics.horiBearingX;
@@ -1424,7 +1424,7 @@ void QFontEngineFT::getUnscaledGlyph(glyph_t glyph, QPainterPath *path, glyph_me
else
QFreetypeFace::addGlyphToPath(face, face->glyph, p, path, face->units_per_EM << 6, face->units_per_EM << 6);
- FT_Set_Transform(face, &freetype->matrix, 0);
+ FT_Set_Transform(face, &freetype->matrix, nullptr);
unlockFace();
}
@@ -1622,10 +1622,10 @@ glyph_metrics_t QFontEngineFT::scaledBitmapMetrics(const glyph_metrics_t &m, con
void QFontEngineFT::recalcAdvances(QGlyphLayout *glyphs, QFontEngine::ShaperFlags flags) const
{
- FT_Face face = 0;
+ FT_Face face = nullptr;
bool design = shouldUseDesignMetrics(flags);
for (int i = 0; i < glyphs->numGlyphs; i++) {
- Glyph *g = cacheEnabled ? defaultGlyphSet.getGlyph(glyphs->glyphs[i]) : 0;
+ Glyph *g = cacheEnabled ? defaultGlyphSet.getGlyph(glyphs->glyphs[i]) : nullptr;
// Since we are passing Format_None to loadGlyph, use same default format logic as loadGlyph
GlyphFormat acceptableFormat = (defaultFormat != Format_None) ? defaultFormat : Format_Mono;
if (g && g->format == acceptableFormat) {
@@ -1633,7 +1633,7 @@ void QFontEngineFT::recalcAdvances(QGlyphLayout *glyphs, QFontEngine::ShaperFlag
} else {
if (!face)
face = lockFace();
- g = loadGlyph(cacheEnabled ? &defaultGlyphSet : 0, glyphs->glyphs[i], 0, Format_None, true);
+ g = loadGlyph(cacheEnabled ? &defaultGlyphSet : nullptr, glyphs->glyphs[i], 0, Format_None, true);
if (g)
glyphs->advances[i] = design ? QFixed::fromFixed(g->linearAdvance) : QFixed(g->advance);
else
@@ -1657,7 +1657,7 @@ void QFontEngineFT::recalcAdvances(QGlyphLayout *glyphs, QFontEngine::ShaperFlag
glyph_metrics_t QFontEngineFT::boundingBox(const QGlyphLayout &glyphs)
{
- FT_Face face = 0;
+ FT_Face face = nullptr;
glyph_metrics_t overall;
// initialize with line height, we get the same behaviour on all platforms
@@ -1672,11 +1672,11 @@ glyph_metrics_t QFontEngineFT::boundingBox(const QGlyphLayout &glyphs)
QFixed ymax = 0;
QFixed xmax = 0;
for (int i = 0; i < glyphs.numGlyphs; i++) {
- Glyph *g = cacheEnabled ? defaultGlyphSet.getGlyph(glyphs.glyphs[i]) : 0;
+ Glyph *g = cacheEnabled ? defaultGlyphSet.getGlyph(glyphs.glyphs[i]) : nullptr;
if (!g) {
if (!face)
face = lockFace();
- g = loadGlyph(cacheEnabled ? &defaultGlyphSet : 0, glyphs.glyphs[i], 0, Format_None, true);
+ g = loadGlyph(cacheEnabled ? &defaultGlyphSet : nullptr, glyphs.glyphs[i], 0, Format_None, true);
}
if (g) {
QFixed x = overall.xoff + glyphs.offsets[i].x + g->x;
@@ -1716,12 +1716,12 @@ glyph_metrics_t QFontEngineFT::boundingBox(const QGlyphLayout &glyphs)
glyph_metrics_t QFontEngineFT::boundingBox(glyph_t glyph)
{
- FT_Face face = 0;
+ FT_Face face = nullptr;
glyph_metrics_t overall;
- Glyph *g = cacheEnabled ? defaultGlyphSet.getGlyph(glyph) : 0;
+ Glyph *g = cacheEnabled ? defaultGlyphSet.getGlyph(glyph) : nullptr;
if (!g) {
face = lockFace();
- g = loadGlyph(cacheEnabled ? &defaultGlyphSet : 0, glyph, 0, Format_None, true);
+ g = loadGlyph(cacheEnabled ? &defaultGlyphSet : nullptr, glyph, 0, Format_None, true);
}
if (g) {
overall.x = g->x;
@@ -1854,10 +1854,10 @@ QFontEngineFT::Glyph *QFontEngineFT::loadGlyphFor(glyph_t g,
bool disableOutlineDrawing)
{
QGlyphSet *glyphSet = loadGlyphSet(t);
- if (glyphSet != 0 && glyphSet->outline_drawing && !disableOutlineDrawing && !fetchBoundingBox)
- return 0;
+ if (glyphSet != nullptr && glyphSet->outline_drawing && !disableOutlineDrawing && !fetchBoundingBox)
+ return nullptr;
- Glyph *glyph = glyphSet != 0 ? glyphSet->getGlyph(g, subPixelPosition) : 0;
+ Glyph *glyph = glyphSet != nullptr ? glyphSet->getGlyph(g, subPixelPosition) : nullptr;
if (!glyph || glyph->format != format || (!fetchBoundingBox && !glyph->data)) {
QScopedValueRollback<HintStyle> saved_default_hint_style(default_hint_style);
if (t.type() >= QTransform::TxScale && !is2dRotation(t))
@@ -1865,7 +1865,7 @@ QFontEngineFT::Glyph *QFontEngineFT::loadGlyphFor(glyph_t g,
lockFace();
FT_Matrix m = this->matrix;
- FT_Matrix ftMatrix = glyphSet != 0 ? glyphSet->transformationMatrix : QTransformToFTMatrix(t);
+ FT_Matrix ftMatrix = glyphSet != nullptr ? glyphSet->transformationMatrix : QTransformToFTMatrix(t);
FT_Matrix_Multiply(&ftMatrix, &m);
freetype->matrix = m;
glyph = loadGlyph(glyphSet, g, subPixelPosition, format, false, disableOutlineDrawing);
@@ -1978,7 +1978,7 @@ FT_Face QFontEngineFT::lockFace(Scaling scale) const
freetype->matrix.xy != matrix.xy ||
freetype->matrix.yx != matrix.yx) {
freetype->matrix = matrix;
- FT_Set_Transform(face, &freetype->matrix, 0);
+ FT_Set_Transform(face, &freetype->matrix, nullptr);
}
return face;
@@ -2017,7 +2017,7 @@ void QFontEngineFT::QGlyphSet::clear()
for (int i = 0; i < 256; ++i) {
if (fast_glyph_data[i]) {
delete fast_glyph_data[i];
- fast_glyph_data[i] = 0;
+ fast_glyph_data[i] = nullptr;
}
}
fast_glyph_count = 0;
@@ -2031,7 +2031,7 @@ void QFontEngineFT::QGlyphSet::removeGlyphFromCache(glyph_t index, QFixed subPix
if (useFastGlyphData(index, subPixelPosition)) {
if (fast_glyph_data[index]) {
delete fast_glyph_data[index];
- fast_glyph_data[index] = 0;
+ fast_glyph_data[index] = nullptr;
if (fast_glyph_count > 0)
--fast_glyph_count;
}
@@ -2056,7 +2056,7 @@ int QFontEngineFT::getPointInOutline(glyph_t glyph, int flags, quint32 point, QF
lockFace();
bool hsubpixel = true;
int vfactor = 1;
- int load_flags = loadFlags(0, Format_A8, flags, hsubpixel, vfactor);
+ int load_flags = loadFlags(nullptr, Format_A8, flags, hsubpixel, vfactor);
int result = freetype->getPointInOutline(glyph, load_flags, point, xpos, ypos, nPoints);
unlockFace();
return result;
@@ -2091,7 +2091,7 @@ QFontEngine *QFontEngineFT::cloneWithSize(qreal pixelSize) const
QFontEngineFT *fe = new QFontEngineFT(fontDef);
if (!fe->initFromFontEngine(this)) {
delete fe;
- return 0;
+ return nullptr;
} else {
return fe;
}
diff --git a/src/platformsupport/fontdatabases/windows/qwindowsfontdatabase.cpp b/src/platformsupport/fontdatabases/windows/qwindowsfontdatabase.cpp
index 011476cf13..36a94724c1 100644
--- a/src/platformsupport/fontdatabases/windows/qwindowsfontdatabase.cpp
+++ b/src/platformsupport/fontdatabases/windows/qwindowsfontdatabase.cpp
@@ -1069,18 +1069,16 @@ static bool addFontToDatabase(QString familyName,
QString subFamilyName;
QString subFamilyStyle;
- if (ttf) {
- // Look-up names registered in the font
- QFontNames canonicalNames = qt_getCanonicalFontNames(logFont);
- if (qt_localizedName(familyName) && !canonicalNames.name.isEmpty())
- englishName = canonicalNames.name;
- if (!canonicalNames.preferredName.isEmpty()) {
- subFamilyName = familyName;
- subFamilyStyle = styleName;
- faceName = familyName; // Remember the original name for later lookups
- familyName = canonicalNames.preferredName;
- styleName = canonicalNames.preferredStyle;
- }
+ // Look-up names registered in the font
+ QFontNames canonicalNames = qt_getCanonicalFontNames(logFont);
+ if (qt_localizedName(familyName) && !canonicalNames.name.isEmpty())
+ englishName = canonicalNames.name;
+ if (!canonicalNames.preferredName.isEmpty()) {
+ subFamilyName = familyName;
+ subFamilyStyle = styleName;
+ faceName = familyName; // Remember the original name for later lookups
+ familyName = canonicalNames.preferredName;
+ styleName = canonicalNames.preferredStyle;
}
QSupportedWritingSystems writingSystems;
diff --git a/src/platformsupport/fontdatabases/windows/qwindowsfontdatabase_ft.cpp b/src/platformsupport/fontdatabases/windows/qwindowsfontdatabase_ft.cpp
index a6b7fcf31e..5c2742d295 100644
--- a/src/platformsupport/fontdatabases/windows/qwindowsfontdatabase_ft.cpp
+++ b/src/platformsupport/fontdatabases/windows/qwindowsfontdatabase_ft.cpp
@@ -215,17 +215,15 @@ static bool addFontToDatabase(QString familyName,
QString subFamilyName;
QString subFamilyStyle;
- if (ttf) {
- // Look-up names registered in the font
- QFontNames canonicalNames = qt_getCanonicalFontNames(logFont);
- if (qt_localizedName(familyName) && !canonicalNames.name.isEmpty())
- englishName = canonicalNames.name;
- if (!canonicalNames.preferredName.isEmpty()) {
- subFamilyName = familyName;
- subFamilyStyle = styleName;
- familyName = canonicalNames.preferredName;
- styleName = canonicalNames.preferredStyle;
- }
+ // Look-up names registered in the font
+ QFontNames canonicalNames = qt_getCanonicalFontNames(logFont);
+ if (qt_localizedName(familyName) && !canonicalNames.name.isEmpty())
+ englishName = canonicalNames.name;
+ if (!canonicalNames.preferredName.isEmpty()) {
+ subFamilyName = familyName;
+ subFamilyStyle = styleName;
+ familyName = canonicalNames.preferredName;
+ styleName = canonicalNames.preferredStyle;
}
QSupportedWritingSystems writingSystems;
diff --git a/src/platformsupport/fontdatabases/windows/qwindowsfontenginedirectwrite.cpp b/src/platformsupport/fontdatabases/windows/qwindowsfontenginedirectwrite.cpp
index e796c18e79..3415002ffc 100644
--- a/src/platformsupport/fontdatabases/windows/qwindowsfontenginedirectwrite.cpp
+++ b/src/platformsupport/fontdatabases/windows/qwindowsfontenginedirectwrite.cpp
@@ -458,7 +458,7 @@ bool QWindowsFontEngineDirectWrite::stringToCMap(const QChar *str, int len, QGly
glyphs->numGlyphs = actualLength;
if (!(flags & GlyphIndicesOnly))
- recalcAdvances(glyphs, 0);
+ recalcAdvances(glyphs, {});
return true;
}
diff --git a/src/platformsupport/glxconvenience/qglxconvenience.cpp b/src/platformsupport/glxconvenience/qglxconvenience.cpp
index 81bccb1c25..5387214e8c 100644
--- a/src/platformsupport/glxconvenience/qglxconvenience.cpp
+++ b/src/platformsupport/glxconvenience/qglxconvenience.cpp
@@ -193,7 +193,7 @@ GLXFBConfig qglx_findConfig(Display *display, int screen , QSurfaceFormat format
{
QXcbSoftwareOpenGLEnforcer softwareOpenGLEnforcer;
- GLXFBConfig config = 0;
+ GLXFBConfig config = nullptr;
do {
const QVector<int> spec = qglx_buildSpec(format, drawableBit, flags);
@@ -273,7 +273,7 @@ XVisualInfo *qglx_findVisualInfo(Display *display, int screen, QSurfaceFormat *f
{
Q_ASSERT(format);
- XVisualInfo *visualInfo = 0;
+ XVisualInfo *visualInfo = nullptr;
GLXFBConfig config = qglx_findConfig(display, screen, *format, false, drawableBit, flags);
if (config)
diff --git a/src/platformsupport/input/evdevmouse/qevdevmousehandler.cpp b/src/platformsupport/input/evdevmouse/qevdevmousehandler.cpp
index 6a53ad2088..a729eeb851 100644
--- a/src/platformsupport/input/evdevmouse/qevdevmousehandler.cpp
+++ b/src/platformsupport/input/evdevmouse/qevdevmousehandler.cpp
@@ -99,8 +99,7 @@ std::unique_ptr<QEvdevMouseHandler> QEvdevMouseHandler::create(const QString &de
}
QEvdevMouseHandler::QEvdevMouseHandler(const QString &device, int fd, bool abs, bool compression, int jitterLimit)
- : m_device(device), m_fd(fd), m_notify(0), m_x(0), m_y(0), m_prevx(0), m_prevy(0),
- m_abs(abs), m_compression(compression), m_buttons(0), m_prevInvalid(true)
+ : m_device(device), m_fd(fd), m_abs(abs), m_compression(compression)
{
setObjectName(QLatin1String("Evdev Mouse Handler"));
diff --git a/src/platformsupport/input/evdevmouse/qevdevmousehandler_p.h b/src/platformsupport/input/evdevmouse/qevdevmousehandler_p.h
index 727f1a02f9..93314e885f 100644
--- a/src/platformsupport/input/evdevmouse/qevdevmousehandler_p.h
+++ b/src/platformsupport/input/evdevmouse/qevdevmousehandler_p.h
@@ -84,16 +84,16 @@ private:
QString m_device;
int m_fd;
- QSocketNotifier *m_notify;
- int m_x, m_y;
- int m_prevx, m_prevy;
+ QSocketNotifier *m_notify = nullptr;
+ int m_x = 0, m_y = 0;
+ int m_prevx = 0, m_prevy = 0;
bool m_abs;
bool m_compression;
Qt::MouseButtons m_buttons;
Qt::MouseButton m_button;
QEvent::Type m_eventType;
int m_jitterLimitSquared;
- bool m_prevInvalid;
+ bool m_prevInvalid = true;
int m_hardwareWidth;
int m_hardwareHeight;
qreal m_hardwareScalerY;
diff --git a/src/platformsupport/input/evdevtouch/qevdevtouchhandler.cpp b/src/platformsupport/input/evdevtouch/qevdevtouchhandler.cpp
index c51db59e1f..78728ef4ce 100644
--- a/src/platformsupport/input/evdevtouch/qevdevtouchhandler.cpp
+++ b/src/platformsupport/input/evdevtouch/qevdevtouchhandler.cpp
@@ -113,16 +113,13 @@ public:
QList<QWindowSystemInterface::TouchPoint> m_lastTouchPoints;
struct Contact {
- int trackingId;
- int x;
- int y;
- int maj;
- int pressure;
- Qt::TouchPointState state;
+ int trackingId = -1;
+ int x = 0;
+ int y = 0;
+ int maj = -1;
+ int pressure = 0;
+ Qt::TouchPointState state = Qt::TouchPointPressed;
QTouchEvent::TouchPoint::InfoFlags flags;
- Contact() : trackingId(-1),
- x(0), y(0), maj(-1), pressure(0),
- state(Qt::TouchPointPressed), flags(0) { }
};
QHash<int, Contact> m_contacts; // The key is a tracking id for type A, slot number for type B.
QHash<int, Contact> m_lastContacts;
diff --git a/src/platformsupport/input/integrityhid/qintegrityhidmanager.h b/src/platformsupport/input/integrityhid/qintegrityhidmanager.h
index 36d7587457..fde5fd7dbb 100644
--- a/src/platformsupport/input/integrityhid/qintegrityhidmanager.h
+++ b/src/platformsupport/input/integrityhid/qintegrityhidmanager.h
@@ -52,7 +52,7 @@ class QIntegrityHIDManager : public QThread
{
Q_OBJECT
public:
- QIntegrityHIDManager(const QString &key, const QString &specification, QObject *parent = 0);
+ QIntegrityHIDManager(const QString &key, const QString &specification, QObject *parent = nullptr);
~QIntegrityHIDManager();
void run(void);
diff --git a/src/platformsupport/input/libinput/qlibinputtouch.cpp b/src/platformsupport/input/libinput/qlibinputtouch.cpp
index ad85360b0e..e3a79be12e 100644
--- a/src/platformsupport/input/libinput/qlibinputtouch.cpp
+++ b/src/platformsupport/input/libinput/qlibinputtouch.cpp
@@ -136,7 +136,7 @@ void QLibInputTouch::processTouchUp(libinput_event_touch *e)
if (tp) {
tp->state = Qt::TouchPointReleased;
// There may not be a Frame event after the last Up. Work this around.
- Qt::TouchPointStates s = 0;
+ Qt::TouchPointStates s;
for (int i = 0; i < state->m_points.count(); ++i)
s |= state->m_points.at(i).state;
if (s == Qt::TouchPointReleased)
diff --git a/src/platformsupport/kmsconvenience/qkmsdevice.cpp b/src/platformsupport/kmsconvenience/qkmsdevice.cpp
index 6121faf362..b820fafd50 100644
--- a/src/platformsupport/kmsconvenience/qkmsdevice.cpp
+++ b/src/platformsupport/kmsconvenience/qkmsdevice.cpp
@@ -176,6 +176,15 @@ static bool parseModeline(const QByteArray &text, drmModeModeInfoPtr mode)
return true;
}
+static inline void assignPlane(QKmsOutput *output, QKmsPlane *plane)
+{
+ if (output->eglfs_plane)
+ output->eglfs_plane->activeCrtcId = 0;
+
+ plane->activeCrtcId = output->crtc_id;
+ output->eglfs_plane = plane;
+}
+
QPlatformScreen *QKmsDevice::createScreenForConnector(drmModeResPtr resources,
drmModeConnectorPtr connector,
ScreenInfo *vinfo)
@@ -449,13 +458,16 @@ QPlatformScreen *QKmsDevice::createScreenForConnector(drmModeResPtr resources,
#endif
QString planeListStr;
- for (const QKmsPlane &plane : qAsConst(m_planes)) {
+ for (QKmsPlane &plane : m_planes) {
if (plane.possibleCrtcs & (1 << output.crtc_index)) {
output.available_planes.append(plane);
planeListStr.append(QString::number(plane.id));
planeListStr.append(QLatin1Char(' '));
- if (plane.type == QKmsPlane::PrimaryPlane)
- output.eglfs_plane = (QKmsPlane*)&plane;
+
+ // Choose the first primary plane that is not already assigned to
+ // another screen's associated crtc.
+ if (!output.eglfs_plane && plane.type == QKmsPlane::PrimaryPlane && !plane.activeCrtcId)
+ assignPlane(&output, &plane);
}
}
qCDebug(qLcKmsDebug, "Output %s can use %d planes: %s",
@@ -477,9 +489,11 @@ QPlatformScreen *QKmsDevice::createScreenForConnector(drmModeResPtr resources,
qCDebug(qLcKmsDebug, "Forcing plane index %d, plane id %u (belongs to crtc id %u)",
idx, plane->plane_id, plane->crtc_id);
- for (const QKmsPlane &kmsplane : qAsConst(m_planes)) {
- if (kmsplane.id == output.forced_plane_id)
- output.eglfs_plane = (QKmsPlane*)&kmsplane;
+ for (QKmsPlane &kmsplane : m_planes) {
+ if (kmsplane.id == output.forced_plane_id) {
+ assignPlane(&output, &kmsplane);
+ break;
+ }
}
drmModeFreePlane(plane);
@@ -490,8 +504,37 @@ QPlatformScreen *QKmsDevice::createScreenForConnector(drmModeResPtr resources,
}
}
- if (output.eglfs_plane)
- qCDebug(qLcKmsDebug, "Output eglfs plane is: %d", output.eglfs_plane->id);
+ // A more useful version: allows specifying "crtc_id,plane_id:crtc_id,plane_id:..."
+ // in order to allow overriding the plane used for a given crtc.
+ if (qEnvironmentVariableIsSet("QT_QPA_EGLFS_KMS_PLANES_FOR_CRTCS")) {
+ const QString val = qEnvironmentVariable("QT_QPA_EGLFS_KMS_PLANES_FOR_CRTCS");
+ qCDebug(qLcKmsDebug, "crtc_id:plane_id override list: %s", qPrintable(val));
+ const QStringList crtcPlanePairs = val.split(QLatin1Char(':'));
+ for (const QString &crtcPlanePair : crtcPlanePairs) {
+ const QStringList values = crtcPlanePair.split(QLatin1Char(','));
+ if (values.count() == 2 && uint(values[0].toInt()) == output.crtc_id) {
+ uint planeId = values[1].toInt();
+ for (QKmsPlane &kmsplane : m_planes) {
+ if (kmsplane.id == planeId) {
+ assignPlane(&output, &kmsplane);
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ if (output.eglfs_plane) {
+ qCDebug(qLcKmsDebug, "Chose plane %u for output %s (crtc id %u) (may not be applicable)",
+ output.eglfs_plane->id, connectorName.constData(), output.crtc_id);
+ }
+
+#if QT_CONFIG(drm_atomic)
+ if (hasAtomicSupport() && !output.eglfs_plane) {
+ qCDebug(qLcKmsDebug, "No plane associated with output %s (crtc id %u) and atomic modesetting is enabled. This is bad.",
+ connectorName.constData(), output.crtc_id);
+ }
+#endif
m_crtc_allocator |= (1 << output.crtc_index);
@@ -538,10 +581,6 @@ QKmsDevice::QKmsDevice(QKmsScreenConfig *screenConfig, const QString &path)
, m_path(path)
, m_dri_fd(-1)
, m_has_atomic_support(false)
-#if QT_CONFIG(drm_atomic)
- , m_atomic_request(nullptr)
- , m_previous_request(nullptr)
-#endif
, m_crtc_allocator(0)
{
if (m_path.isEmpty()) {
@@ -557,7 +596,7 @@ QKmsDevice::QKmsDevice(QKmsScreenConfig *screenConfig, const QString &path)
QKmsDevice::~QKmsDevice()
{
#if QT_CONFIG(drm_atomic)
- atomicReset();
+ threadLocalAtomicReset();
#endif
}
@@ -834,7 +873,7 @@ void QKmsDevice::discoverPlanes()
plane.type = QKmsPlane::Type(value);
} else if (!strcmp(prop->name, "rotation")) {
plane.initialRotation = QKmsPlane::Rotations(int(value));
- plane.availableRotations = 0;
+ plane.availableRotations = { };
if (propTypeIs(prop, DRM_MODE_PROP_BITMASK)) {
for (int i = 0; i < prop->count_enums; ++i)
plane.availableRotations |= QKmsPlane::Rotation(1 << prop->enums[i].value);
@@ -897,39 +936,51 @@ bool QKmsDevice::hasAtomicSupport()
}
#if QT_CONFIG(drm_atomic)
-drmModeAtomicReq * QKmsDevice::atomic_request()
+drmModeAtomicReq *QKmsDevice::threadLocalAtomicRequest()
{
- if (!m_atomic_request && m_has_atomic_support)
- m_atomic_request = drmModeAtomicAlloc();
+ if (!m_has_atomic_support)
+ return nullptr;
+
+ AtomicReqs &a(m_atomicReqs.localData());
+ if (!a.request)
+ a.request = drmModeAtomicAlloc();
- return m_atomic_request;
+ return a.request;
}
-bool QKmsDevice::atomicCommit(void *user_data)
+bool QKmsDevice::threadLocalAtomicCommit(void *user_data)
{
- if (m_atomic_request) {
- int ret = drmModeAtomicCommit(m_dri_fd, m_atomic_request,
- DRM_MODE_ATOMIC_NONBLOCK | DRM_MODE_PAGE_FLIP_EVENT | DRM_MODE_ATOMIC_ALLOW_MODESET, user_data);
+ if (!m_has_atomic_support)
+ return false;
- if (ret) {
- qWarning("Failed to commit atomic request (code=%d)", ret);
- return false;
- }
+ AtomicReqs &a(m_atomicReqs.localData());
+ if (!a.request)
+ return false;
- m_previous_request = m_atomic_request;
- m_atomic_request = nullptr;
+ int ret = drmModeAtomicCommit(m_dri_fd, a.request,
+ DRM_MODE_ATOMIC_NONBLOCK | DRM_MODE_PAGE_FLIP_EVENT | DRM_MODE_ATOMIC_ALLOW_MODESET,
+ user_data);
- return true;
+ if (ret) {
+ qWarning("Failed to commit atomic request (code=%d)", ret);
+ return false;
}
- return false;
+ a.previous_request = a.request;
+ a.request = nullptr;
+
+ return true;
}
-void QKmsDevice::atomicReset()
+void QKmsDevice::threadLocalAtomicReset()
{
- if (m_previous_request) {
- drmModeAtomicFree(m_previous_request);
- m_previous_request = nullptr;
+ if (!m_has_atomic_support)
+ return;
+
+ AtomicReqs &a(m_atomicReqs.localData());
+ if (a.previous_request) {
+ drmModeAtomicFree(a.previous_request);
+ a.previous_request = nullptr;
}
}
#endif
diff --git a/src/platformsupport/kmsconvenience/qkmsdevice_p.h b/src/platformsupport/kmsconvenience/qkmsdevice_p.h
index b1150e2875..55a590cfce 100644
--- a/src/platformsupport/kmsconvenience/qkmsdevice_p.h
+++ b/src/platformsupport/kmsconvenience/qkmsdevice_p.h
@@ -57,6 +57,7 @@
#include <qpa/qplatformscreen.h>
#include <QtCore/QMap>
#include <QtCore/QVariant>
+#include <QtCore/QThreadStorage>
#include <xf86drm.h>
#include <xf86drmMode.h>
@@ -179,6 +180,8 @@ struct QKmsPlane
uint32_t crtcheightPropertyId = 0;
uint32_t zposPropertyId = 0;
uint32_t blendOpPropertyId = 0;
+
+ uint32_t activeCrtcId = 0;
};
Q_DECLARE_OPERATORS_FOR_FLAGS(QKmsPlane::Rotations)
@@ -239,10 +242,9 @@ public:
bool hasAtomicSupport();
#if QT_CONFIG(drm_atomic)
- bool atomicCommit(void *user_data);
- void atomicReset();
-
- drmModeAtomicReq *atomic_request();
+ drmModeAtomicReq *threadLocalAtomicRequest();
+ bool threadLocalAtomicCommit(void *user_data);
+ void threadLocalAtomicReset();
#endif
void createScreens();
@@ -282,8 +284,11 @@ protected:
bool m_has_atomic_support;
#if QT_CONFIG(drm_atomic)
- drmModeAtomicReq *m_atomic_request;
- drmModeAtomicReq *m_previous_request;
+ struct AtomicReqs {
+ drmModeAtomicReq *request = nullptr;
+ drmModeAtomicReq *previous_request = nullptr;
+ };
+ QThreadStorage<AtomicReqs> m_atomicReqs;
#endif
quint32 m_crtc_allocator;
diff --git a/src/platformsupport/themes/genericunix/qgenericunixthemes_p.h b/src/platformsupport/themes/genericunix/qgenericunixthemes_p.h
index c0da9d8370..f6acf00f39 100644
--- a/src/platformsupport/themes/genericunix/qgenericunixthemes_p.h
+++ b/src/platformsupport/themes/genericunix/qgenericunixthemes_p.h
@@ -109,7 +109,7 @@ public:
QVariant themeHint(ThemeHint hint) const override;
QIcon fileIcon(const QFileInfo &fileInfo,
- QPlatformTheme::IconOptions iconOptions = nullptr) const override;
+ QPlatformTheme::IconOptions iconOptions = { }) const override;
const QPalette *palette(Palette type = SystemPalette) const override;
@@ -134,7 +134,7 @@ public:
QGnomeTheme();
QVariant themeHint(ThemeHint hint) const override;
QIcon fileIcon(const QFileInfo &fileInfo,
- QPlatformTheme::IconOptions = nullptr) const override;
+ QPlatformTheme::IconOptions = { }) const override;
const QFont *font(Font type) const override;
QString standardButtonText(int button) const override;
diff --git a/src/plugins/bearer/qnetworksession_impl.cpp b/src/plugins/bearer/qnetworksession_impl.cpp
index c6b678ab20..8eba9ccc42 100644
--- a/src/plugins/bearer/qnetworksession_impl.cpp
+++ b/src/plugins/bearer/qnetworksession_impl.cpp
@@ -65,7 +65,7 @@ static QBearerEngineImpl *getEngineFromId(const QString &id)
}
}
- return 0;
+ return nullptr;
}
class QNetworkSessionManagerPrivate : public QObject
@@ -73,7 +73,7 @@ class QNetworkSessionManagerPrivate : public QObject
Q_OBJECT
public:
- QNetworkSessionManagerPrivate(QObject *parent = 0) : QObject(parent) {}
+ QNetworkSessionManagerPrivate(QObject *parent = nullptr) : QObject(parent) {}
~QNetworkSessionManagerPrivate() {}
inline void forceSessionClose(const QNetworkConfiguration &config)
@@ -119,7 +119,7 @@ void QNetworkSessionPrivateImpl::syncStateWithInterface()
// Defer setting serviceConfig and activeConfig until open().
Q_FALLTHROUGH();
default:
- engine = 0;
+ engine = nullptr;
}
networkConfigurationsChanged();
diff --git a/src/plugins/imageformats/gif/main.cpp b/src/plugins/imageformats/gif/main.cpp
index c171111fac..993871420c 100644
--- a/src/plugins/imageformats/gif/main.cpp
+++ b/src/plugins/imageformats/gif/main.cpp
@@ -62,7 +62,7 @@ QImageIOPlugin::Capabilities QGifPlugin::capabilities(QIODevice *device, const Q
{
if (format == "gif" || (device && device->isReadable() && QGifHandler::canRead(device)))
return Capabilities(CanRead);
- return 0;
+ return { };
}
QImageIOHandler *QGifPlugin::create(QIODevice *device, const QByteArray &format) const
diff --git a/src/plugins/imageformats/gif/qgifhandler.cpp b/src/plugins/imageformats/gif/qgifhandler.cpp
index a6029b691c..c92cc3ea61 100644
--- a/src/plugins/imageformats/gif/qgifhandler.cpp
+++ b/src/plugins/imageformats/gif/qgifhandler.cpp
@@ -147,8 +147,8 @@ private:
*/
QGIFFormat::QGIFFormat()
{
- globalcmap = 0;
- localcmap = 0;
+ globalcmap = nullptr;
+ localcmap = nullptr;
lncols = 0;
gncols = 0;
disposal = NoDisposal;
@@ -160,9 +160,9 @@ QGIFFormat::QGIFFormat()
lcmap = false;
newFrame = false;
partialNewFrame = false;
- table[0] = 0;
- table[1] = 0;
- stack = 0;
+ table[0] = nullptr;
+ table[1] = nullptr;
+ stack = nullptr;
}
/*!
@@ -550,7 +550,7 @@ int QGIFFormat::decode(QImage *image, const uchar *buffer, int length,
}
oldcode=incode;
const int h = image->height();
- QRgb *line = 0;
+ QRgb *line = nullptr;
if (!out_of_bounds && h > y)
line = (QRgb*)FAST_SCAN_LINE(bits, bpl, y);
while (sp>stack) {
diff --git a/src/plugins/imageformats/ico/main.cpp b/src/plugins/imageformats/ico/main.cpp
index baaf33e1fc..b00d8c7fd3 100644
--- a/src/plugins/imageformats/ico/main.cpp
+++ b/src/plugins/imageformats/ico/main.cpp
@@ -46,9 +46,9 @@ QImageIOPlugin::Capabilities QICOPlugin::capabilities(QIODevice *device, const Q
if (format == "ico" || format == "cur")
return Capabilities(CanRead | CanWrite);
if (!format.isEmpty())
- return 0;
+ return { };
if (!device->isOpen())
- return 0;
+ return { };
Capabilities cap;
if (device->isReadable() && QtIcoHandler::canRead(device))
diff --git a/src/plugins/imageformats/jpeg/main.cpp b/src/plugins/imageformats/jpeg/main.cpp
index 58442053a1..83f13c4a9d 100644
--- a/src/plugins/imageformats/jpeg/main.cpp
+++ b/src/plugins/imageformats/jpeg/main.cpp
@@ -51,9 +51,9 @@ QImageIOPlugin::Capabilities QJpegPlugin::capabilities(QIODevice *device, const
if (format == "jpeg" || format == "jpg")
return Capabilities(CanRead | CanWrite);
if (!format.isEmpty())
- return 0;
+ return { };
if (!device->isOpen())
- return 0;
+ return { };
Capabilities cap;
if (device->isReadable() && QJpegHandler::canRead(device))
diff --git a/src/plugins/imageformats/jpeg/qjpeghandler.cpp b/src/plugins/imageformats/jpeg/qjpeghandler.cpp
index 1f1675e490..c31e2db3c5 100644
--- a/src/plugins/imageformats/jpeg/qjpeghandler.cpp
+++ b/src/plugins/imageformats/jpeg/qjpeghandler.cpp
@@ -248,13 +248,12 @@ static bool ensureValidImage(QImage *dest, struct jpeg_decompress_struct *info,
static bool read_jpeg_image(QImage *outImage,
QSize scaledSize, QRect scaledClipRect,
- QRect clipRect, volatile int inQuality,
+ QRect clipRect, int quality,
Rgb888ToRgb32Converter converter,
j_decompress_ptr info, struct my_error_mgr* err )
{
if (!setjmp(err->setjmp_buffer)) {
// -1 means default quality.
- int quality = inQuality;
if (quality < 0)
quality = 75;
@@ -529,7 +528,14 @@ static inline void write_icc_profile(const QImage &image, j_compress_ptr cinfo)
}
}
-static bool write_jpeg_image(const QImage &image, QIODevice *device, volatile int sourceQuality, const QString &description, bool optimize, bool progressive)
+static bool do_write_jpeg_image(struct jpeg_compress_struct &cinfo,
+ JSAMPROW *row_pointer,
+ const QImage &image,
+ QIODevice *device,
+ int sourceQuality,
+ const QString &description,
+ bool optimize,
+ bool progressive)
{
bool success = false;
const QVector<QRgb> cmap = image.colorTable();
@@ -537,10 +543,6 @@ static bool write_jpeg_image(const QImage &image, QIODevice *device, volatile in
if (image.format() == QImage::Format_Invalid || image.format() == QImage::Format_Alpha8)
return false;
- struct jpeg_compress_struct cinfo;
- JSAMPROW row_pointer[1];
- row_pointer[0] = 0;
-
struct my_jpeg_destination_mgr *iod_dest = new my_jpeg_destination_mgr(device);
struct my_error_mgr jerr;
@@ -713,6 +715,27 @@ static bool write_jpeg_image(const QImage &image, QIODevice *device, volatile in
}
delete iod_dest;
+ return success;
+}
+
+static bool write_jpeg_image(const QImage &image,
+ QIODevice *device,
+ int sourceQuality,
+ const QString &description,
+ bool optimize,
+ bool progressive)
+{
+ // protect these objects from the setjmp/longjmp pair inside
+ // do_write_jpeg_image (by making them non-local).
+ struct jpeg_compress_struct cinfo;
+ JSAMPROW row_pointer[1];
+ row_pointer[0] = nullptr;
+
+ const bool success = do_write_jpeg_image(cinfo, row_pointer,
+ image, device,
+ sourceQuality, description,
+ optimize, progressive);
+
delete [] row_pointer[0];
return success;
}
@@ -728,7 +751,7 @@ public:
};
QJpegHandlerPrivate(QJpegHandler *qq)
- : quality(75), transformation(QImageIOHandler::TransformationNone), iod_src(0),
+ : quality(75), transformation(QImageIOHandler::TransformationNone), iod_src(nullptr),
rgb888ToRgb32ConverterPtr(qt_convert_rgb888_to_rgb32), state(Ready), optimize(false), progressive(false), q(qq)
{}
@@ -738,7 +761,7 @@ public:
{
jpeg_destroy_decompress(&info);
delete iod_src;
- iod_src = 0;
+ iod_src = nullptr;
}
}
@@ -931,7 +954,7 @@ bool QJpegHandlerPrivate::readJpegHeader(QIODevice *device)
QByteArray exifData;
- for (jpeg_saved_marker_ptr marker = info.marker_list; marker != NULL; marker = marker->next) {
+ for (jpeg_saved_marker_ptr marker = info.marker_list; marker != nullptr; marker = marker->next) {
if (marker->marker == JPEG_COM) {
QString key, value;
QString s = QString::fromUtf8((const char *)marker->data, marker->data_length);
diff --git a/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.h b/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.h
index 8e7b8df120..e9c9c55f6a 100644
--- a/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.h
+++ b/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.h
@@ -61,7 +61,7 @@ public:
explicit QIBusFilterEventWatcher(const QDBusPendingCall &call,
QObject *parent = nullptr,
QWindow *window = nullptr,
- const Qt::KeyboardModifiers modifiers = nullptr,
+ const Qt::KeyboardModifiers modifiers = { },
const QVariantList arguments = QVariantList())
: QDBusPendingCallWatcher(call, parent)
, m_window(window)
diff --git a/src/plugins/platforms/android/androidjniinput.cpp b/src/plugins/platforms/android/androidjniinput.cpp
index 56885f2e23..049f9b0b13 100644
--- a/src/plugins/platforms/android/androidjniinput.cpp
+++ b/src/plugins/platforms/android/androidjniinput.cpp
@@ -247,8 +247,8 @@ namespace QtAndroidInput
break;
}
- const int dw = desktopWidthPixels();
- const int dh = desktopHeightPixels();
+ const int dw = availableWidthPixels();
+ const int dh = availableHeightPixels();
QWindowSystemInterface::TouchPoint touchPoint;
touchPoint.id = id;
touchPoint.pressure = pressure;
diff --git a/src/plugins/platforms/android/androidjnimain.cpp b/src/plugins/platforms/android/androidjnimain.cpp
index fd2644717e..bdbd3517bd 100644
--- a/src/plugins/platforms/android/androidjnimain.cpp
+++ b/src/plugins/platforms/android/androidjnimain.cpp
@@ -111,8 +111,8 @@ static int m_surfaceId = 1;
static QAndroidPlatformIntegration *m_androidPlatformIntegration = nullptr;
-static int m_desktopWidthPixels = 0;
-static int m_desktopHeightPixels = 0;
+static int m_availableWidthPixels = 0;
+static int m_availableHeightPixels = 0;
static double m_scaledDensity = 0;
static double m_density = 1.0;
@@ -155,14 +155,14 @@ namespace QtAndroid
: 0;
}
- int desktopWidthPixels()
+ int availableWidthPixels()
{
- return m_desktopWidthPixels;
+ return m_availableWidthPixels;
}
- int desktopHeightPixels()
+ int availableHeightPixels()
{
- return m_desktopHeightPixels;
+ return m_availableHeightPixels;
}
double scaledDensity()
@@ -200,22 +200,9 @@ namespace QtAndroid
return m_serviceObject;
}
- void showStatusBar()
+ void setSystemUiVisibility(SystemUiVisibility uiVisibility)
{
- if (m_statusBarShowing)
- return;
-
- QJNIObjectPrivate::callStaticMethod<void>(m_applicationClass, "setFullScreen", "(Z)V", false);
- m_statusBarShowing = true;
- }
-
- void hideStatusBar()
- {
- if (!m_statusBarShowing)
- return;
-
- QJNIObjectPrivate::callStaticMethod<void>(m_applicationClass, "setFullScreen", "(Z)V", true);
- m_statusBarShowing = false;
+ QJNIObjectPrivate::callStaticMethod<void>(m_applicationClass, "setSystemUiVisibility", "(I)V", jint(uiVisibility));
}
jobject createBitmap(QImage img, JNIEnv *env)
@@ -620,35 +607,33 @@ static void setSurface(JNIEnv *env, jobject /*thiz*/, jint id, jobject jSurface,
}
static void setDisplayMetrics(JNIEnv */*env*/, jclass /*clazz*/,
- jint widthPixels, jint heightPixels,
- jint desktopWidthPixels, jint desktopHeightPixels,
+ jint screenWidthPixels, jint screenHeightPixels,
+ jint availableLeftPixels, jint availableTopPixels,
+ jint availableWidthPixels, jint availableHeightPixels,
jdouble xdpi, jdouble ydpi,
jdouble scaledDensity, jdouble density)
{
- // Android does not give us the correct screen size for immersive mode, but
- // the surface does have the right size
-
- widthPixels = qMax(widthPixels, desktopWidthPixels);
- heightPixels = qMax(heightPixels, desktopHeightPixels);
-
- m_desktopWidthPixels = desktopWidthPixels;
- m_desktopHeightPixels = desktopHeightPixels;
+ m_availableWidthPixels = availableWidthPixels;
+ m_availableHeightPixels = availableHeightPixels;
m_scaledDensity = scaledDensity;
m_density = density;
QMutexLocker lock(&m_platformMutex);
if (!m_androidPlatformIntegration) {
- QAndroidPlatformIntegration::setDefaultDisplayMetrics(desktopWidthPixels,
- desktopHeightPixels,
- qRound(double(widthPixels) / xdpi * 25.4),
- qRound(double(heightPixels) / ydpi * 25.4),
- widthPixels,
- heightPixels);
+ QAndroidPlatformIntegration::setDefaultDisplayMetrics(availableLeftPixels,
+ availableTopPixels,
+ availableWidthPixels,
+ availableHeightPixels,
+ qRound(double(screenWidthPixels) / xdpi * 25.4),
+ qRound(double(screenHeightPixels) / ydpi * 25.4),
+ screenWidthPixels,
+ screenHeightPixels);
} else {
- m_androidPlatformIntegration->setDisplayMetrics(qRound(double(widthPixels) / xdpi * 25.4),
- qRound(double(heightPixels) / ydpi * 25.4));
- m_androidPlatformIntegration->setScreenSize(widthPixels, heightPixels);
- m_androidPlatformIntegration->setDesktopSize(desktopWidthPixels, desktopHeightPixels);
+ m_androidPlatformIntegration->setPhysicalSize(qRound(double(screenWidthPixels) / xdpi * 25.4),
+ qRound(double(screenHeightPixels) / ydpi * 25.4));
+ m_androidPlatformIntegration->setScreenSize(screenWidthPixels, screenHeightPixels);
+ m_androidPlatformIntegration->setAvailableGeometry(QRect(availableLeftPixels, availableTopPixels,
+ availableWidthPixels, availableHeightPixels));
}
}
@@ -774,7 +759,7 @@ static JNINativeMethod methods[] = {
{"quitQtCoreApplication", "()V", (void *)quitQtCoreApplication},
{"terminateQt", "()V", (void *)terminateQt},
{"waitForServiceSetup", "()V", (void *)waitForServiceSetup},
- {"setDisplayMetrics", "(IIIIDDDD)V", (void *)setDisplayMetrics},
+ {"setDisplayMetrics", "(IIIIIIDDDD)V", (void *)setDisplayMetrics},
{"setSurface", "(ILjava/lang/Object;II)V", (void *)setSurface},
{"updateWindow", "()V", (void *)updateWindow},
{"updateApplicationState", "(I)V", (void *)updateApplicationState},
diff --git a/src/plugins/platforms/android/androidjnimain.h b/src/plugins/platforms/android/androidjnimain.h
index 17ae30a1be..63be5910f9 100644
--- a/src/plugins/platforms/android/androidjnimain.h
+++ b/src/plugins/platforms/android/androidjnimain.h
@@ -77,8 +77,8 @@ namespace QtAndroid
void bringChildToBack(int surfaceId);
QWindow *topLevelWindowAt(const QPoint &globalPos);
- int desktopWidthPixels();
- int desktopHeightPixels();
+ int availableWidthPixels();
+ int availableHeightPixels();
double scaledDensity();
double pixelDensity();
JavaVM *javaVM();
@@ -88,8 +88,13 @@ namespace QtAndroid
jobject activity();
jobject service();
- void showStatusBar();
- void hideStatusBar();
+ // Keep synchronized with flags in ActivityDelegate.java
+ enum SystemUiVisibility {
+ SYSTEM_UI_VISIBILITY_NORMAL = 0,
+ SYSTEM_UI_VISIBILITY_FULLSCREEN = 1,
+ SYSTEM_UI_VISIBILITY_TRANSLUCENT = 2
+ };
+ void setSystemUiVisibility(SystemUiVisibility uiVisibility);
jobject createBitmap(QImage img, JNIEnv *env = 0);
jobject createBitmap(int width, int height, QImage::Format format, JNIEnv *env);
diff --git a/src/plugins/platforms/android/qandroidplatformintegration.cpp b/src/plugins/platforms/android/qandroidplatformintegration.cpp
index e0c437be27..48f330680b 100644
--- a/src/plugins/platforms/android/qandroidplatformintegration.cpp
+++ b/src/plugins/platforms/android/qandroidplatformintegration.cpp
@@ -76,12 +76,9 @@
QT_BEGIN_NAMESPACE
-int QAndroidPlatformIntegration::m_defaultGeometryWidth = 320;
-int QAndroidPlatformIntegration::m_defaultGeometryHeight = 455;
-int QAndroidPlatformIntegration::m_defaultScreenWidth = 320;
-int QAndroidPlatformIntegration::m_defaultScreenHeight = 455;
-int QAndroidPlatformIntegration::m_defaultPhysicalSizeWidth = 50;
-int QAndroidPlatformIntegration::m_defaultPhysicalSizeHeight = 71;
+QSize QAndroidPlatformIntegration::m_defaultScreenSize = QSize(320, 455);
+QRect QAndroidPlatformIntegration::m_defaultAvailableGeometry = QRect(0, 0, 320, 455);
+QSize QAndroidPlatformIntegration::m_defaultPhysicalSize = QSize(50, 71);
Qt::ScreenOrientation QAndroidPlatformIntegration::m_orientation = Qt::PrimaryOrientation;
Qt::ScreenOrientation QAndroidPlatformIntegration::m_nativeOrientation = Qt::PrimaryOrientation;
@@ -174,9 +171,9 @@ QAndroidPlatformIntegration::QAndroidPlatformIntegration(const QStringList &para
m_primaryScreen = new QAndroidPlatformScreen();
QWindowSystemInterface::handleScreenAdded(m_primaryScreen);
- m_primaryScreen->setPhysicalSize(QSize(m_defaultPhysicalSizeWidth, m_defaultPhysicalSizeHeight));
- m_primaryScreen->setSize(QSize(m_defaultScreenWidth, m_defaultScreenHeight));
- m_primaryScreen->setAvailableGeometry(QRect(0, 0, m_defaultGeometryWidth, m_defaultGeometryHeight));
+ m_primaryScreen->setPhysicalSize(m_defaultPhysicalSize);
+ m_primaryScreen->setSize(m_defaultScreenSize);
+ m_primaryScreen->setAvailableGeometry(m_defaultAvailableGeometry);
m_mainThread = QThread::currentThread();
@@ -266,6 +263,7 @@ bool QAndroidPlatformIntegration::hasCapability(Capability cap) const
case ThreadedOpenGL: return !needsBasicRenderloopWorkaround() && QtAndroid::activity();
case RasterGLSurface: return QtAndroid::activity();
case TopStackedNativeChildWindows: return false;
+ case MaximizeUsingFullscreenGeometry: return true;
default:
return QPlatformIntegration::hasCapability(cap);
}
@@ -415,20 +413,19 @@ QPlatformTheme *QAndroidPlatformIntegration::createPlatformTheme(const QString &
return 0;
}
-void QAndroidPlatformIntegration::setDefaultDisplayMetrics(int gw, int gh, int sw, int sh, int screenWidth, int screenHeight)
+void QAndroidPlatformIntegration::setDefaultDisplayMetrics(int availableLeft,
+ int availableTop,
+ int availableWidth,
+ int availableHeight,
+ int physicalWidth,
+ int physicalHeight,
+ int screenWidth,
+ int screenHeight)
{
- m_defaultGeometryWidth = gw;
- m_defaultGeometryHeight = gh;
- m_defaultPhysicalSizeWidth = sw;
- m_defaultPhysicalSizeHeight = sh;
- m_defaultScreenWidth = screenWidth;
- m_defaultScreenHeight = screenHeight;
-}
-
-void QAndroidPlatformIntegration::setDefaultDesktopSize(int gw, int gh)
-{
- m_defaultGeometryWidth = gw;
- m_defaultGeometryHeight = gh;
+ m_defaultAvailableGeometry = QRect(availableLeft, availableTop,
+ availableWidth, availableHeight);
+ m_defaultPhysicalSize = QSize(physicalWidth, physicalHeight);
+ m_defaultScreenSize = QSize(screenWidth, screenHeight);
}
void QAndroidPlatformIntegration::setScreenOrientation(Qt::ScreenOrientation currentOrientation,
@@ -440,10 +437,9 @@ void QAndroidPlatformIntegration::setScreenOrientation(Qt::ScreenOrientation cur
void QAndroidPlatformIntegration::flushPendingUpdates()
{
- m_primaryScreen->setPhysicalSize(QSize(m_defaultPhysicalSizeWidth,
- m_defaultPhysicalSizeHeight));
- m_primaryScreen->setSize(QSize(m_defaultScreenWidth, m_defaultScreenHeight));
- m_primaryScreen->setAvailableGeometry(QRect(0, 0, m_defaultGeometryWidth, m_defaultGeometryHeight));
+ m_primaryScreen->setPhysicalSize(m_defaultPhysicalSize);
+ m_primaryScreen->setSize(m_defaultScreenSize);
+ m_primaryScreen->setAvailableGeometry(m_defaultAvailableGeometry);
}
#ifndef QT_NO_ACCESSIBILITY
@@ -453,13 +449,13 @@ QPlatformAccessibility *QAndroidPlatformIntegration::accessibility() const
}
#endif
-void QAndroidPlatformIntegration::setDesktopSize(int width, int height)
+void QAndroidPlatformIntegration::setAvailableGeometry(const QRect &availableGeometry)
{
if (m_primaryScreen)
- QMetaObject::invokeMethod(m_primaryScreen, "setAvailableGeometry", Qt::AutoConnection, Q_ARG(QRect, QRect(0,0,width, height)));
+ QMetaObject::invokeMethod(m_primaryScreen, "setAvailableGeometry", Qt::AutoConnection, Q_ARG(QRect, availableGeometry));
}
-void QAndroidPlatformIntegration::setDisplayMetrics(int width, int height)
+void QAndroidPlatformIntegration::setPhysicalSize(int width, int height)
{
if (m_primaryScreen)
QMetaObject::invokeMethod(m_primaryScreen, "setPhysicalSize", Qt::AutoConnection, Q_ARG(QSize, QSize(width, height)));
diff --git a/src/plugins/platforms/android/qandroidplatformintegration.h b/src/plugins/platforms/android/qandroidplatformintegration.h
index c795c499bc..d607ec0064 100644
--- a/src/plugins/platforms/android/qandroidplatformintegration.h
+++ b/src/plugins/platforms/android/qandroidplatformintegration.h
@@ -91,8 +91,8 @@ public:
QAndroidPlatformScreen *screen() { return m_primaryScreen; }
QPlatformOffscreenSurface *createPlatformOffscreenSurface(QOffscreenSurface *surface) const override;
- virtual void setDesktopSize(int width, int height);
- virtual void setDisplayMetrics(int width, int height);
+ void setAvailableGeometry(const QRect &availableGeometry);
+ void setPhysicalSize(int width, int height);
void setScreenSize(int width, int height);
bool isVirtualDesktop() { return true; }
@@ -116,16 +116,17 @@ public:
QStringList themeNames() const override;
QPlatformTheme *createPlatformTheme(const QString &name) const override;
- static void setDefaultDisplayMetrics(int gw, int gh, int sw, int sh, int width, int height);
- static void setDefaultDesktopSize(int gw, int gh);
+ static void setDefaultDisplayMetrics(int availableLeft,
+ int availableTop,
+ int availableWidth,
+ int availableHeight,
+ int physicalWidth,
+ int physicalHeight,
+ int screenWidth,
+ int screenHeight);
static void setScreenOrientation(Qt::ScreenOrientation currentOrientation,
Qt::ScreenOrientation nativeOrientation);
- static QSize defaultDesktopSize()
- {
- return QSize(m_defaultGeometryWidth, m_defaultGeometryHeight);
- }
-
QTouchDevice *touchDevice() const { return m_touchDevice; }
void setTouchDevice(QTouchDevice *touchDevice) { m_touchDevice = touchDevice; }
@@ -143,12 +144,9 @@ private:
QThread *m_mainThread;
- static int m_defaultGeometryWidth;
- static int m_defaultGeometryHeight;
- static int m_defaultPhysicalSizeWidth;
- static int m_defaultPhysicalSizeHeight;
- static int m_defaultScreenWidth;
- static int m_defaultScreenHeight;
+ static QRect m_defaultAvailableGeometry;
+ static QSize m_defaultPhysicalSize;
+ static QSize m_defaultScreenSize;
static Qt::ScreenOrientation m_orientation;
static Qt::ScreenOrientation m_nativeOrientation;
diff --git a/src/plugins/platforms/android/qandroidplatformscreen.cpp b/src/plugins/platforms/android/qandroidplatformscreen.cpp
index 80757c2135..5f8486a7a2 100644
--- a/src/plugins/platforms/android/qandroidplatformscreen.cpp
+++ b/src/plugins/platforms/android/qandroidplatformscreen.cpp
@@ -90,8 +90,8 @@ private:
QAndroidPlatformScreen::QAndroidPlatformScreen()
: QObject(), QPlatformScreen()
{
- m_availableGeometry = QRect(0, 0, QAndroidPlatformIntegration::m_defaultGeometryWidth, QAndroidPlatformIntegration::m_defaultGeometryHeight);
- m_size = QSize(QAndroidPlatformIntegration::m_defaultScreenWidth, QAndroidPlatformIntegration::m_defaultScreenHeight);
+ m_availableGeometry = QAndroidPlatformIntegration::m_defaultAvailableGeometry;
+ m_size = QAndroidPlatformIntegration::m_defaultScreenSize;
// Raster only apps should set QT_ANDROID_RASTER_IMAGE_DEPTH to 16
// is way much faster than 32
if (qEnvironmentVariableIntValue("QT_ANDROID_RASTER_IMAGE_DEPTH") == 16) {
@@ -101,8 +101,7 @@ QAndroidPlatformScreen::QAndroidPlatformScreen()
m_format = QImage::Format_ARGB32_Premultiplied;
m_depth = 32;
}
- m_physicalSize.setHeight(QAndroidPlatformIntegration::m_defaultPhysicalSizeHeight);
- m_physicalSize.setWidth(QAndroidPlatformIntegration::m_defaultPhysicalSizeWidth);
+ m_physicalSize = QAndroidPlatformIntegration::m_defaultPhysicalSize;
connect(qGuiApp, &QGuiApplication::applicationStateChanged, this, &QAndroidPlatformScreen::applicationStateChanged);
}
@@ -294,7 +293,7 @@ void QAndroidPlatformScreen::topWindowChanged(QWindow *w)
if (w != 0) {
QAndroidPlatformWindow *platformWindow = static_cast<QAndroidPlatformWindow *>(w->handle());
if (platformWindow != 0)
- platformWindow->updateStatusBarVisibility();
+ platformWindow->updateSystemUiVisibility();
}
}
@@ -334,7 +333,7 @@ void QAndroidPlatformScreen::doRedraw()
}
QMutexLocker lock(&m_surfaceMutex);
if (m_id == -1 && m_rasterSurfaces) {
- m_id = QtAndroid::createSurface(this, m_availableGeometry, true, m_depth);
+ m_id = QtAndroid::createSurface(this, geometry(), true, m_depth);
AndroidDeadlockProtector protector;
if (!protector.acquire())
return;
diff --git a/src/plugins/platforms/android/qandroidplatformwindow.cpp b/src/plugins/platforms/android/qandroidplatformwindow.cpp
index 4f691ce112..a88cb9b823 100644
--- a/src/plugins/platforms/android/qandroidplatformwindow.cpp
+++ b/src/plugins/platforms/android/qandroidplatformwindow.cpp
@@ -67,25 +67,39 @@ void QAndroidPlatformWindow::lower()
void QAndroidPlatformWindow::raise()
{
- updateStatusBarVisibility();
+ updateSystemUiVisibility();
platformScreen()->raise(this);
}
+QMargins QAndroidPlatformWindow::safeAreaMargins() const
+{
+ if ((m_windowState & Qt::WindowMaximized) && (window()->flags() & Qt::MaximizeUsingFullscreenGeometryHint)) {
+ QRect availableGeometry = platformScreen()->availableGeometry();
+ return QMargins(availableGeometry.left(), availableGeometry.top(),
+ availableGeometry.right(), availableGeometry.bottom());
+ } else {
+ return QPlatformWindow::safeAreaMargins();
+ }
+}
+
void QAndroidPlatformWindow::setGeometry(const QRect &rect)
{
+ QPlatformWindow::setGeometry(rect);
QWindowSystemInterface::handleGeometryChange(window(), rect);
}
void QAndroidPlatformWindow::setVisible(bool visible)
{
if (visible)
- updateStatusBarVisibility();
+ updateSystemUiVisibility();
if (visible) {
- if (m_windowState & Qt::WindowFullScreen)
+ if ((m_windowState & Qt::WindowFullScreen)
+ || ((m_windowState & Qt::WindowMaximized) && (window()->flags() & Qt::MaximizeUsingFullscreenGeometryHint))) {
setGeometry(platformScreen()->geometry());
- else if (m_windowState & Qt::WindowMaximized)
+ } else if (m_windowState & Qt::WindowMaximized) {
setGeometry(platformScreen()->availableGeometry());
+ }
}
if (visible)
@@ -107,7 +121,7 @@ void QAndroidPlatformWindow::setWindowState(Qt::WindowStates state)
m_windowState = state;
if (window()->isVisible())
- updateStatusBarVisibility();
+ updateSystemUiVisibility();
}
void QAndroidPlatformWindow::setWindowFlags(Qt::WindowFlags flags)
@@ -143,15 +157,17 @@ void QAndroidPlatformWindow::requestActivateWindow()
platformScreen()->topWindowChanged(window());
}
-void QAndroidPlatformWindow::updateStatusBarVisibility()
+void QAndroidPlatformWindow::updateSystemUiVisibility()
{
Qt::WindowFlags flags = window()->flags();
bool isNonRegularWindow = flags & (Qt::Popup | Qt::Dialog | Qt::Sheet) & ~Qt::Window;
if (!isNonRegularWindow) {
if (m_windowState & Qt::WindowFullScreen)
- QtAndroid::hideStatusBar();
+ QtAndroid::setSystemUiVisibility(QtAndroid::SYSTEM_UI_VISIBILITY_FULLSCREEN);
+ else if (flags & Qt::MaximizeUsingFullscreenGeometryHint)
+ QtAndroid::setSystemUiVisibility(QtAndroid::SYSTEM_UI_VISIBILITY_TRANSLUCENT);
else
- QtAndroid::showStatusBar();
+ QtAndroid::setSystemUiVisibility(QtAndroid::SYSTEM_UI_VISIBILITY_NORMAL);
}
}
diff --git a/src/plugins/platforms/android/qandroidplatformwindow.h b/src/plugins/platforms/android/qandroidplatformwindow.h
index d8eb6b7b7f..f83ad7bea3 100644
--- a/src/plugins/platforms/android/qandroidplatformwindow.h
+++ b/src/plugins/platforms/android/qandroidplatformwindow.h
@@ -70,9 +70,11 @@ public:
QAndroidPlatformScreen *platformScreen() const;
+ QMargins safeAreaMargins() const override;
+
void propagateSizeHints() override;
void requestActivateWindow() override;
- void updateStatusBarVisibility();
+ void updateSystemUiVisibility();
inline bool isRaster() const {
if (isForeignWindow())
return false;
diff --git a/src/plugins/platforms/cocoa/cocoa.pro b/src/plugins/platforms/cocoa/cocoa.pro
index 4cf9e64447..8f2956e7d4 100644
--- a/src/plugins/platforms/cocoa/cocoa.pro
+++ b/src/plugins/platforms/cocoa/cocoa.pro
@@ -87,6 +87,11 @@ qtConfig(accessibility) {
qcocoaaccessibility.h
}
+qtConfig(sessionmanager) {
+ SOURCES += qcocoasessionmanager.cpp
+ HEADERS += qcocoasessionmanager.h
+}
+
RESOURCES += qcocoaresources.qrc
LIBS += -framework AppKit -framework CoreServices -framework Carbon -framework IOKit -framework QuartzCore -framework CoreVideo -framework Metal -framework IOSurface -lcups
diff --git a/src/plugins/platforms/cocoa/qcocoaapplicationdelegate.mm b/src/plugins/platforms/cocoa/qcocoaapplicationdelegate.mm
index 9b0a6b1b86..3fb9e83d35 100644
--- a/src/plugins/platforms/cocoa/qcocoaapplicationdelegate.mm
+++ b/src/plugins/platforms/cocoa/qcocoaapplicationdelegate.mm
@@ -79,11 +79,14 @@
#include "qcocoamenuitem.h"
#include "qcocoansmenu.h"
+#if QT_CONFIG(sessionmanager)
+# include "qcocoasessionmanager.h"
+#endif
+
#include <qevent.h>
#include <qurl.h>
#include <qdebug.h>
#include <qguiapplication.h>
-#include <private/qguiapplication_p.h>
#include "qt_mac_p.h"
#include <qpa/qwindowsysteminterface.h>
#include <qwindowdefs.h>
@@ -149,7 +152,7 @@ QT_USE_NAMESPACE
if ([reflectionDelegate respondsToSelector:_cmd])
return [reflectionDelegate applicationShouldTerminate:sender];
- if (QGuiApplicationPrivate::instance()->threadData->eventLoops.isEmpty()) {
+ if (QGuiApplicationPrivate::instance()->threadData.loadRelaxed()->eventLoops.isEmpty()) {
// No event loop is executing. This probably means that Qt is used as a plugin,
// or as a part of a native Cocoa application. In any case it should be fine to
// terminate now.
@@ -157,6 +160,17 @@ QT_USE_NAMESPACE
return NSTerminateNow;
}
+#if QT_CONFIG(sessionmanager)
+ QCocoaSessionManager *cocoaSessionManager = QCocoaSessionManager::instance();
+ cocoaSessionManager->resetCancellation();
+ cocoaSessionManager->appCommitData();
+
+ if (cocoaSessionManager->wasCanceled()) {
+ qCDebug(lcQpaApplication) << "Session management canceled application termination";
+ return NSTerminateCancel;
+ }
+#endif
+
if (!QWindowSystemInterface::handleApplicationTermination<QWindowSystemInterface::SynchronousDelivery>()) {
qCDebug(lcQpaApplication) << "Application termination canceled";
return NSTerminateCancel;
@@ -359,7 +373,7 @@ QT_USE_NAMESPACE
if (!platformItem || platformItem->menu())
return;
- QScopedScopeLevelCounter scopeLevelCounter(QGuiApplicationPrivate::instance()->threadData);
+ QScopedScopeLevelCounter scopeLevelCounter(QGuiApplicationPrivate::instance()->threadData.loadRelaxed());
QGuiApplicationPrivate::modifier_buttons = [QNSView convertKeyModifiers:[NSEvent modifierFlags]];
static QMetaMethod activatedSignal = QMetaMethod::fromSignal(&QCocoaMenuItem::activated);
diff --git a/src/plugins/platforms/cocoa/qcocoaclipboard.mm b/src/plugins/platforms/cocoa/qcocoaclipboard.mm
index a35c153084..141940cc50 100644
--- a/src/plugins/platforms/cocoa/qcocoaclipboard.mm
+++ b/src/plugins/platforms/cocoa/qcocoaclipboard.mm
@@ -67,7 +67,7 @@ void QCocoaClipboard::setMimeData(QMimeData *data, QClipboard::Mode mode)
}
pasteBoard->sync();
- pasteBoard->setMimeData(data);
+ pasteBoard->setMimeData(data, QMacPasteboard::LazyRequest);
emitChanged(mode);
}
}
diff --git a/src/plugins/platforms/cocoa/qcocoaeventdispatcher.h b/src/plugins/platforms/cocoa/qcocoaeventdispatcher.h
index 69587a24be..b8d2532b8e 100644
--- a/src/plugins/platforms/cocoa/qcocoaeventdispatcher.h
+++ b/src/plugins/platforms/cocoa/qcocoaeventdispatcher.h
@@ -186,6 +186,7 @@ public:
QAtomicInt serialNumber;
int lastSerial;
bool interrupt;
+ bool propagateInterrupt = false;
static void postedEventsSourceCallback(void *info);
static void waitingObserverCallback(CFRunLoopObserverRef observer,
diff --git a/src/plugins/platforms/cocoa/qcocoaeventdispatcher.mm b/src/plugins/platforms/cocoa/qcocoaeventdispatcher.mm
index e87fc39c42..94b9e62eab 100644
--- a/src/plugins/platforms/cocoa/qcocoaeventdispatcher.mm
+++ b/src/plugins/platforms/cocoa/qcocoaeventdispatcher.mm
@@ -84,13 +84,12 @@
#include "private/qthread_p.h"
#include "private/qguiapplication_p.h"
#include <qdebug.h>
+#include <qscopeguard.h>
#include <AppKit/AppKit.h>
QT_BEGIN_NAMESPACE
-QT_USE_NAMESPACE
-
static inline CFRunLoopRef mainRunLoop()
{
return CFRunLoopGetMain();
@@ -293,46 +292,42 @@ bool QCocoaEventDispatcher::hasPendingEvents()
return qGlobalPostedEventsCount() || (qt_is_gui_used && !CFRunLoopIsWaiting(CFRunLoopGetMain()));
}
-static bool IsMouseOrKeyEvent( NSEvent* event )
+static bool isUserInputEvent(NSEvent* event)
{
- bool result = false;
-
- switch( [event type] )
- {
- case NSEventTypeLeftMouseDown:
- case NSEventTypeLeftMouseUp:
- case NSEventTypeRightMouseDown:
- case NSEventTypeRightMouseUp:
- case NSEventTypeMouseMoved: // ??
- case NSEventTypeLeftMouseDragged:
- case NSEventTypeRightMouseDragged:
- case NSEventTypeMouseEntered:
- case NSEventTypeMouseExited:
- case NSEventTypeKeyDown:
- case NSEventTypeKeyUp:
- case NSEventTypeFlagsChanged: // key modifiers changed?
- case NSEventTypeCursorUpdate: // ??
- case NSEventTypeScrollWheel:
- case NSEventTypeTabletPoint:
- case NSEventTypeTabletProximity:
- case NSEventTypeOtherMouseDown:
- case NSEventTypeOtherMouseUp:
- case NSEventTypeOtherMouseDragged:
+ switch ([event type]) {
+ case NSEventTypeLeftMouseDown:
+ case NSEventTypeLeftMouseUp:
+ case NSEventTypeRightMouseDown:
+ case NSEventTypeRightMouseUp:
+ case NSEventTypeMouseMoved: // ??
+ case NSEventTypeLeftMouseDragged:
+ case NSEventTypeRightMouseDragged:
+ case NSEventTypeMouseEntered:
+ case NSEventTypeMouseExited:
+ case NSEventTypeKeyDown:
+ case NSEventTypeKeyUp:
+ case NSEventTypeFlagsChanged: // key modifiers changed?
+ case NSEventTypeCursorUpdate: // ??
+ case NSEventTypeScrollWheel:
+ case NSEventTypeTabletPoint:
+ case NSEventTypeTabletProximity:
+ case NSEventTypeOtherMouseDown:
+ case NSEventTypeOtherMouseUp:
+ case NSEventTypeOtherMouseDragged:
#ifndef QT_NO_GESTURES
- case NSEventTypeGesture: // touch events
- case NSEventTypeMagnify:
- case NSEventTypeSwipe:
- case NSEventTypeRotate:
- case NSEventTypeBeginGesture:
- case NSEventTypeEndGesture:
+ case NSEventTypeGesture: // touch events
+ case NSEventTypeMagnify:
+ case NSEventTypeSwipe:
+ case NSEventTypeRotate:
+ case NSEventTypeBeginGesture:
+ case NSEventTypeEndGesture:
#endif // QT_NO_GESTURES
- result = true;
+ return true;
break;
-
- default:
+ default:
break;
}
- return result;
+ return false;
}
static inline void qt_mac_waitForMoreEvents(NSString *runLoopMode = NSDefaultRunLoopMode)
@@ -352,6 +347,16 @@ static inline void qt_mac_waitForMoreEvents(NSString *runLoopMode = NSDefaultRun
bool QCocoaEventDispatcher::processEvents(QEventLoop::ProcessEventsFlags flags)
{
Q_D(QCocoaEventDispatcher);
+
+ // In rare rather corner cases a user's application messes with
+ // QEventLoop::exec()/exit() and QCoreApplication::processEvents(),
+ // we have to undo what bool blocker normally does.
+ d->propagateInterrupt = false;
+ const auto boolBlockerUndo = qScopeGuard([d](){
+ if (d->propagateInterrupt)
+ d->interrupt = true;
+ d->propagateInterrupt = false;
+ });
QBoolBlocker interruptBlocker(d->interrupt, false);
bool interruptLater = false;
@@ -465,7 +470,7 @@ bool QCocoaEventDispatcher::processEvents(QEventLoop::ProcessEventsFlags flags)
dequeue: YES];
if (event) {
- if (IsMouseOrKeyEvent(event)) {
+ if (isUserInputEvent(event)) {
[event retain];
d->queuedUserInputEvents.append(event);
continue;
@@ -485,7 +490,7 @@ bool QCocoaEventDispatcher::processEvents(QEventLoop::ProcessEventsFlags flags)
if (event) {
if (flags & QEventLoop::ExcludeUserInputEvents) {
- if (IsMouseOrKeyEvent(event)) {
+ if (isUserInputEvent(event)) {
[event retain];
d->queuedUserInputEvents.append(event);
continue;
@@ -500,7 +505,16 @@ bool QCocoaEventDispatcher::processEvents(QEventLoop::ProcessEventsFlags flags)
if ((d->processEventsFlags & QEventLoop::EventLoopExec) == 0) {
// When called "manually", always process posted events and timers
+ bool oldInterrupt = d->interrupt;
d->processPostedEvents();
+ if (!oldInterrupt && d->interrupt && !d->currentModalSession()) {
+ // We had direct processEvent call, coming not from QEventLoop::exec().
+ // One of the posted events triggered an application to interrupt the loop.
+ // But bool blocker will reset d->interrupt to false, so the real event
+ // loop will never notice it was interrupted. Now we'll have to fix it by
+ // enforcing the value of d->interrupt.
+ d->propagateInterrupt = true;
+ }
retVal = d->processTimers() || retVal;
}
@@ -515,7 +529,7 @@ bool QCocoaEventDispatcher::processEvents(QEventLoop::ProcessEventsFlags flags)
if (hadModalSession && !d->currentModalSessionCached)
interruptLater = true;
}
- bool canWait = (d->threadData->canWait
+ bool canWait = (d->threadData.loadRelaxed()->canWait
&& !retVal
&& !d->interrupt
&& (d->processEventsFlags & QEventLoop::WaitForMoreEvents));
@@ -882,7 +896,7 @@ void QCocoaEventDispatcherPrivate::processPostedEvents()
}
int serial = serialNumber.loadRelaxed();
- if (!threadData->canWait || (serial != lastSerial)) {
+ if (!threadData.loadRelaxed()->canWait || (serial != lastSerial)) {
lastSerial = serial;
QCoreApplication::sendPostedEvents();
QWindowSystemInterface::sendWindowSystemEvents(QEventLoop::AllEvents);
diff --git a/src/plugins/platforms/cocoa/qcocoaintegration.h b/src/plugins/platforms/cocoa/qcocoaintegration.h
index bfc3bfe9de..0c14e07551 100644
--- a/src/plugins/platforms/cocoa/qcocoaintegration.h
+++ b/src/plugins/platforms/cocoa/qcocoaintegration.h
@@ -92,6 +92,10 @@ public:
QCocoaVulkanInstance *getCocoaVulkanInstance() const;
#endif
+#if QT_CONFIG(sessionmanager)
+ QPlatformSessionManager *createPlatformSessionManager(const QString &id, const QString &key) const override;
+#endif
+
QCoreTextFontDatabase *fontDatabase() const override;
QCocoaNativeInterface *nativeInterface() const override;
QPlatformInputContext *inputContext() const override;
diff --git a/src/plugins/platforms/cocoa/qcocoaintegration.mm b/src/plugins/platforms/cocoa/qcocoaintegration.mm
index b7f15a2bf1..61308d6bf9 100644
--- a/src/plugins/platforms/cocoa/qcocoaintegration.mm
+++ b/src/plugins/platforms/cocoa/qcocoaintegration.mm
@@ -52,6 +52,9 @@
#include "qcocoamimetypes.h"
#include "qcocoaaccessibility.h"
#include "qcocoascreen.h"
+#if QT_CONFIG(sessionmanager)
+# include "qcocoasessionmanager.h"
+#endif
#include <qpa/qplatforminputcontextfactory_p.h>
#include <qpa/qplatformaccessibility.h>
@@ -245,6 +248,13 @@ QCocoaIntegration::Options QCocoaIntegration::options() const
return mOptions;
}
+#if QT_CONFIG(sessionmanager)
+QPlatformSessionManager *QCocoaIntegration::createPlatformSessionManager(const QString &id, const QString &key) const
+{
+ return new QCocoaSessionManager(id, key);
+}
+#endif
+
bool QCocoaIntegration::hasCapability(QPlatformIntegration::Capability cap) const
{
switch (cap) {
diff --git a/src/plugins/platforms/cocoa/qcocoasessionmanager.cpp b/src/plugins/platforms/cocoa/qcocoasessionmanager.cpp
new file mode 100644
index 0000000000..74e318b5be
--- /dev/null
+++ b/src/plugins/platforms/cocoa/qcocoasessionmanager.cpp
@@ -0,0 +1,88 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 Samuel Gaist <samuel.gaist@idiap.ch>
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the plugins of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QT_NO_SESSIONMANAGER
+#include <private/qsessionmanager_p.h>
+#include <private/qguiapplication_p.h>
+
+#include <qcocoasessionmanager.h>
+#include <qstring.h>
+
+QT_BEGIN_NAMESPACE
+
+QCocoaSessionManager::QCocoaSessionManager(const QString &id, const QString &key)
+ : QPlatformSessionManager(id, key),
+ m_canceled(false)
+{
+}
+
+QCocoaSessionManager::~QCocoaSessionManager()
+{
+}
+
+bool QCocoaSessionManager::allowsInteraction()
+{
+ return false;
+}
+
+void QCocoaSessionManager::resetCancellation()
+{
+ m_canceled = false;
+}
+
+void QCocoaSessionManager::cancel()
+{
+ m_canceled = true;
+}
+
+bool QCocoaSessionManager::wasCanceled() const
+{
+ return m_canceled;
+}
+
+QCocoaSessionManager *QCocoaSessionManager::instance()
+{
+ auto *qGuiAppPriv = QGuiApplicationPrivate::instance();
+ auto *managerPrivate = static_cast<QSessionManagerPrivate*>(QObjectPrivate::get(qGuiAppPriv->session_manager));
+ return static_cast<QCocoaSessionManager *>(managerPrivate->platformSessionManager);
+}
+
+QT_END_NAMESPACE
+
+#endif // QT_NO_SESSIONMANAGER
diff --git a/src/plugins/platforms/cocoa/qcocoasessionmanager.h b/src/plugins/platforms/cocoa/qcocoasessionmanager.h
new file mode 100644
index 0000000000..89ab7bd157
--- /dev/null
+++ b/src/plugins/platforms/cocoa/qcocoasessionmanager.h
@@ -0,0 +1,81 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 Samuel Gaist <samuel.gaist@idiap.ch>
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the plugins of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QCOCOASESSIONMANAGER_H
+#define QCOCOASESSIONMANAGER_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is part of the QPA API and is not meant to be used
+// in applications. Usage of this API may make your code
+// source and binary incompatible with future versions of Qt.
+//
+
+#ifndef QT_NO_SESSIONMANAGER
+
+#include <qpa/qplatformsessionmanager.h>
+
+QT_BEGIN_NAMESPACE
+
+class QCocoaSessionManager : public QPlatformSessionManager
+{
+public:
+ QCocoaSessionManager(const QString &id, const QString &key);
+ virtual ~QCocoaSessionManager();
+
+ bool allowsInteraction() override;
+ void cancel() override;
+ void resetCancellation();
+ bool wasCanceled() const;
+
+ static QCocoaSessionManager *instance();
+
+private:
+ bool m_canceled;
+
+ Q_DISABLE_COPY(QCocoaSessionManager)
+};
+
+QT_END_NAMESPACE
+
+#endif // QT_NO_SESSIONMANAGER
+
+#endif // QCOCOASESSIONMANAGER_H
diff --git a/src/plugins/platforms/cocoa/qcocoasystemtrayicon.h b/src/plugins/platforms/cocoa/qcocoasystemtrayicon.h
index 6779bda491..738c40aba6 100644
--- a/src/plugins/platforms/cocoa/qcocoasystemtrayicon.h
+++ b/src/plugins/platforms/cocoa/qcocoasystemtrayicon.h
@@ -65,7 +65,7 @@ public:
void updateMenu(QPlatformMenu *menu) override;
QRect geometry() const override;
void showMessage(const QString &title, const QString &msg,
- const QIcon& icon, MessageIcon iconType, int secs) override;
+ const QIcon& icon, MessageIcon iconType, int msecs) override;
bool isSystemTrayAvailable() const override;
bool supportsMessages() const override;
diff --git a/src/plugins/platforms/cocoa/qcocoasystemtrayicon.mm b/src/plugins/platforms/cocoa/qcocoasystemtrayicon.mm
index a5b42ac4e3..559188aa5f 100644
--- a/src/plugins/platforms/cocoa/qcocoasystemtrayicon.mm
+++ b/src/plugins/platforms/cocoa/qcocoasystemtrayicon.mm
@@ -265,7 +265,7 @@ bool QCocoaSystemTrayIcon::supportsMessages() const
}
void QCocoaSystemTrayIcon::showMessage(const QString &title, const QString &message,
- const QIcon& icon, MessageIcon, int)
+ const QIcon& icon, MessageIcon, int msecs)
{
if (!m_sys)
return;
@@ -283,6 +283,10 @@ void QCocoaSystemTrayIcon::showMessage(const QString &title, const QString &mess
NSUserNotificationCenter *center = NSUserNotificationCenter.defaultUserNotificationCenter;
center.delegate = m_sys->item;
[center deliverNotification:notification];
+ if (msecs) {
+ NSTimeInterval timeout = msecs / 1000.0;
+ [center performSelector:@selector(removeDeliveredNotification:) withObject:notification afterDelay:timeout];
+ }
[notification release];
}
QT_END_NAMESPACE
@@ -435,8 +439,7 @@ QT_END_NAMESPACE
}
- (void)userNotificationCenter:(NSUserNotificationCenter *)center didActivateNotification:(NSUserNotification *)notification {
- Q_UNUSED(center);
- Q_UNUSED(notification);
+ [center removeDeliveredNotification:notification];
emit systray->messageClicked();
}
diff --git a/src/plugins/platforms/cocoa/qcocoatheme.h b/src/plugins/platforms/cocoa/qcocoatheme.h
index a00cbdfea3..50e56ef1bf 100644
--- a/src/plugins/platforms/cocoa/qcocoatheme.h
+++ b/src/plugins/platforms/cocoa/qcocoatheme.h
@@ -70,7 +70,7 @@ public:
const QPalette *palette(Palette type = SystemPalette) const override;
const QFont *font(Font type = SystemFont) const override;
QPixmap standardPixmap(StandardPixmap sp, const QSizeF &size) const override;
- QIcon fileIcon(const QFileInfo &fileInfo, QPlatformTheme::IconOptions options = 0) const override;
+ QIcon fileIcon(const QFileInfo &fileInfo, QPlatformTheme::IconOptions options = {}) const override;
QVariant themeHint(ThemeHint hint) const override;
QString standardButtonText(int button) const override;
diff --git a/src/plugins/platforms/cocoa/qmacclipboard.mm b/src/plugins/platforms/cocoa/qmacclipboard.mm
index 358a6b49fd..654647b35a 100644
--- a/src/plugins/platforms/cocoa/qmacclipboard.mm
+++ b/src/plugins/platforms/cocoa/qmacclipboard.mm
@@ -138,8 +138,12 @@ QMacPasteboard::QMacPasteboard(CFStringRef name, uchar mt)
QMacPasteboard::~QMacPasteboard()
{
- // commit all promises for paste after exit close
- resolvingBeforeDestruction = true;
+ /*
+ Commit all promises for paste when shutting down,
+ unless we are the stack-allocated clipboard used by QCocoaDrag.
+ */
+ if (mime_type == QMacInternalPasteboardMime::MIME_DND)
+ resolvingBeforeDestruction = true;
PasteboardResolvePromises(paste);
if (paste)
CFRelease(paste);
diff --git a/src/plugins/platforms/eglfs/api/qeglfscontext.cpp b/src/plugins/platforms/eglfs/api/qeglfscontext.cpp
index c5cef34d8e..48fafbda8d 100644
--- a/src/plugins/platforms/eglfs/api/qeglfscontext.cpp
+++ b/src/plugins/platforms/eglfs/api/qeglfscontext.cpp
@@ -52,7 +52,7 @@ QT_BEGIN_NAMESPACE
QEglFSContext::QEglFSContext(const QSurfaceFormat &format, QPlatformOpenGLContext *share, EGLDisplay display,
EGLConfig *config, const QVariant &nativeHandle)
: QEGLPlatformContext(format, share, display, config, nativeHandle,
- qt_egl_device_integration()->supportsSurfacelessContexts() ? Flags(0) : QEGLPlatformContext::NoSurfaceless),
+ qt_egl_device_integration()->supportsSurfacelessContexts() ? Flags() : QEGLPlatformContext::NoSurfaceless),
m_tempWindow(0)
{
}
@@ -78,7 +78,7 @@ EGLSurface QEglFSContext::createTemporaryOffscreenSurface()
}
}
EGLConfig config = q_configFromGLFormat(eglDisplay(), format());
- return eglCreateWindowSurface(eglDisplay(), config, m_tempWindow, 0);
+ return eglCreateWindowSurface(eglDisplay(), config, m_tempWindow, nullptr);
}
void QEglFSContext::destroyTemporaryOffscreenSurface(EGLSurface surface)
diff --git a/src/plugins/platforms/eglfs/api/qeglfscursor.cpp b/src/plugins/platforms/eglfs/api/qeglfscursor.cpp
index 22319fcc66..98e05195ee 100644
--- a/src/plugins/platforms/eglfs/api/qeglfscursor.cpp
+++ b/src/plugins/platforms/eglfs/api/qeglfscursor.cpp
@@ -62,7 +62,7 @@ QEglFSCursor::QEglFSCursor(QPlatformScreen *screen)
: m_visible(true),
m_screen(static_cast<QEglFSScreen *>(screen)),
m_activeScreen(nullptr),
- m_deviceListener(0),
+ m_deviceListener(nullptr),
m_updateRequested(false)
{
QByteArray hideCursorVal = qgetenv("QT_QPA_EGLFS_HIDECURSOR");
diff --git a/src/plugins/platforms/eglfs/api/qeglfsintegration.cpp b/src/plugins/platforms/eglfs/api/qeglfsintegration.cpp
index 674f579b4f..d9a3545a95 100644
--- a/src/plugins/platforms/eglfs/api/qeglfsintegration.cpp
+++ b/src/plugins/platforms/eglfs/api/qeglfsintegration.cpp
@@ -109,10 +109,10 @@ QT_BEGIN_NAMESPACE
QEglFSIntegration::QEglFSIntegration()
: m_display(EGL_NO_DISPLAY),
- m_inputContext(0),
+ m_inputContext(nullptr),
m_fontDb(new QGenericUnixFontDatabase),
m_services(new QGenericUnixServices),
- m_kbdMgr(0),
+ m_kbdMgr(nullptr),
m_disableInputHandlers(false)
{
m_disableInputHandlers = qEnvironmentVariableIntValue("QT_QPA_EGLFS_DISABLE_INPUT");
@@ -223,7 +223,7 @@ QPlatformOpenGLContext *QEglFSIntegration::createPlatformOpenGLContext(QOpenGLCo
EGLConfig config = QEglFSDeviceIntegration::chooseConfig(dpy, adjustedFormat);
ctx = new QEglFSContext(adjustedFormat, share, dpy, &config, QVariant());
} else {
- ctx = new QEglFSContext(adjustedFormat, share, dpy, 0, nativeHandle);
+ ctx = new QEglFSContext(adjustedFormat, share, dpy, nullptr, nativeHandle);
}
nativeHandle = QVariant::fromValue<QEGLNativeContext>(QEGLNativeContext(ctx->eglContext(), dpy));
@@ -236,7 +236,7 @@ QPlatformOffscreenSurface *QEglFSIntegration::createPlatformOffscreenSurface(QOf
EGLDisplay dpy = surface->screen() ? static_cast<QEglFSScreen *>(surface->screen()->handle())->display() : display();
QSurfaceFormat fmt = qt_egl_device_integration()->surfaceFormatFor(surface->requestedFormat());
if (qt_egl_device_integration()->supportsPBuffers()) {
- QEGLPlatformContext::Flags flags = 0;
+ QEGLPlatformContext::Flags flags;
if (!qt_egl_device_integration()->supportsSurfacelessContexts())
flags |= QEGLPlatformContext::NoSurfaceless;
return new QEGLPbuffer(dpy, fmt, surface, flags);
@@ -307,7 +307,7 @@ static int resourceType(const QByteArray &key)
void *QEglFSIntegration::nativeResourceForIntegration(const QByteArray &resource)
{
- void *result = 0;
+ void *result = nullptr;
switch (resourceType(resource)) {
case EglDisplay:
@@ -329,7 +329,7 @@ void *QEglFSIntegration::nativeResourceForIntegration(const QByteArray &resource
void *QEglFSIntegration::nativeResourceForScreen(const QByteArray &resource, QScreen *screen)
{
- void *result = 0;
+ void *result = nullptr;
switch (resourceType(resource)) {
case XlibDisplay:
@@ -347,7 +347,7 @@ void *QEglFSIntegration::nativeResourceForScreen(const QByteArray &resource, QSc
void *QEglFSIntegration::nativeResourceForWindow(const QByteArray &resource, QWindow *window)
{
- void *result = 0;
+ void *result = nullptr;
switch (resourceType(resource)) {
case EglDisplay:
@@ -374,7 +374,7 @@ void *QEglFSIntegration::nativeResourceForWindow(const QByteArray &resource, QWi
#ifndef QT_NO_OPENGL
void *QEglFSIntegration::nativeResourceForContext(const QByteArray &resource, QOpenGLContext *context)
{
- void *result = 0;
+ void *result = nullptr;
switch (resourceType(resource)) {
case EglContext:
@@ -402,7 +402,7 @@ static void *eglContextForContext(QOpenGLContext *context)
QEglFSContext *handle = static_cast<QEglFSContext *>(context->handle());
if (!handle)
- return 0;
+ return nullptr;
return handle->eglContext();
}
@@ -416,7 +416,7 @@ QPlatformNativeInterface::NativeResourceForContextFunction QEglFSIntegration::na
#else
Q_UNUSED(resource);
#endif
- return 0;
+ return nullptr;
}
QFunctionPointer QEglFSIntegration::platformFunction(const QByteArray &function) const
diff --git a/src/plugins/platforms/eglfs/api/qeglfsoffscreenwindow.cpp b/src/plugins/platforms/eglfs/api/qeglfsoffscreenwindow.cpp
index 864271cd3a..c96e329816 100644
--- a/src/plugins/platforms/eglfs/api/qeglfsoffscreenwindow.cpp
+++ b/src/plugins/platforms/eglfs/api/qeglfsoffscreenwindow.cpp
@@ -67,7 +67,7 @@ QEglFSOffscreenWindow::QEglFSOffscreenWindow(EGLDisplay display, const QSurfaceF
return;
}
EGLConfig config = q_configFromGLFormat(m_display, m_format);
- m_surface = eglCreateWindowSurface(m_display, config, m_window, 0);
+ m_surface = eglCreateWindowSurface(m_display, config, m_window, nullptr);
if (m_surface != EGL_NO_SURFACE)
m_format = q_glFormatFromConfig(m_display, config);
}
diff --git a/src/plugins/platforms/eglfs/api/qeglfsscreen.cpp b/src/plugins/platforms/eglfs/api/qeglfsscreen.cpp
index 11b68c0589..8a8e8cd563 100644
--- a/src/plugins/platforms/eglfs/api/qeglfsscreen.cpp
+++ b/src/plugins/platforms/eglfs/api/qeglfsscreen.cpp
@@ -54,7 +54,7 @@ QT_BEGIN_NAMESPACE
QEglFSScreen::QEglFSScreen(EGLDisplay dpy)
: m_dpy(dpy),
m_surface(EGL_NO_SURFACE),
- m_cursor(0)
+ m_cursor(nullptr)
{
m_cursor = qt_egl_device_integration()->createCursor(this);
}
@@ -164,7 +164,7 @@ void QEglFSScreen::handleCursorMove(const QPoint &pos)
return;
}
- QWindow *enter = 0, *leave = 0;
+ QWindow *enter = nullptr, *leave = nullptr;
for (int i = windows.count() - 1; i >= 0; --i) {
QWindow *window = windows[i]->sourceWindow();
const QRect geom = window->geometry();
diff --git a/src/plugins/platforms/eglfs/api/qeglfswindow.cpp b/src/plugins/platforms/eglfs/api/qeglfswindow.cpp
index 1fed182882..f7e116eb88 100644
--- a/src/plugins/platforms/eglfs/api/qeglfswindow.cpp
+++ b/src/plugins/platforms/eglfs/api/qeglfswindow.cpp
@@ -61,13 +61,12 @@ QT_BEGIN_NAMESPACE
QEglFSWindow::QEglFSWindow(QWindow *w)
: QPlatformWindow(w),
#ifndef QT_NO_OPENGL
- m_backingStore(0),
- m_rasterCompositingContext(0),
+ m_backingStore(nullptr),
+ m_rasterCompositingContext(nullptr),
#endif
m_winId(0),
m_surface(EGL_NO_SURFACE),
- m_window(0),
- m_flags(0)
+ m_window(0)
{
}
@@ -186,7 +185,7 @@ void QEglFSWindow::destroy()
#endif
}
- m_flags = 0;
+ m_flags = { };
}
void QEglFSWindow::invalidateSurface()
@@ -208,7 +207,7 @@ void QEglFSWindow::resetSurface()
m_format = q_glFormatFromConfig(display, m_config, platformFormat);
const QSize surfaceSize = screen()->rawGeometry().size();
m_window = qt_egl_device_integration()->createNativeWindow(this, surfaceSize, m_format);
- m_surface = eglCreateWindowSurface(display, m_config, m_window, NULL);
+ m_surface = eglCreateWindowSurface(display, m_config, m_window, nullptr);
}
void QEglFSWindow::setVisible(bool visible)
@@ -338,7 +337,7 @@ const QPlatformTextureList *QEglFSWindow::textures() const
if (m_backingStore)
return m_backingStore->textures();
- return 0;
+ return nullptr;
}
void QEglFSWindow::endCompositing()
diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmcursor.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmcursor.cpp
index 4d0cf0c47e..dc98cdce4b 100644
--- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmcursor.cpp
+++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmcursor.cpp
@@ -69,7 +69,7 @@ QEglFSKmsGbmCursor::QEglFSKmsGbmCursor(QEglFSKmsGbmScreen *screen)
: m_screen(screen)
, m_cursorSize(64, 64) // 64x64 is the old standard size, we now try to query the real size below
, m_bo(nullptr)
- , m_cursorImage(0, 0, 0, 0, 0, 0)
+ , m_cursorImage(nullptr, nullptr, 0, 0, 0, 0)
, m_state(CursorPendingVisible)
, m_deviceListener(nullptr)
{
@@ -102,7 +102,7 @@ QEglFSKmsGbmCursor::QEglFSKmsGbmCursor(QEglFSKmsGbmScreen *screen)
#ifndef QT_NO_CURSOR
QCursor cursor(Qt::ArrowCursor);
- changeCursor(&cursor, 0);
+ changeCursor(&cursor, nullptr);
#endif
setPos(QPoint(0, 0));
}
@@ -214,7 +214,8 @@ void QEglFSKmsGbmCursor::changeCursor(QCursor *windowCursor, QWindow *window)
Q_FOREACH (QPlatformScreen *screen, m_screen->virtualSiblings()) {
QEglFSKmsScreen *kmsScreen = static_cast<QEglFSKmsScreen *>(screen);
-
+ if (kmsScreen->isCursorOutOfRange())
+ continue;
int status = drmModeSetCursor(kmsScreen->device()->fd(), kmsScreen->output().crtc_id, handle,
m_cursorSize.width(), m_cursorSize.height());
if (status != 0)
@@ -232,17 +233,36 @@ void QEglFSKmsGbmCursor::setPos(const QPoint &pos)
{
Q_FOREACH (QPlatformScreen *screen, m_screen->virtualSiblings()) {
QEglFSKmsScreen *kmsScreen = static_cast<QEglFSKmsScreen *>(screen);
- QPoint origin = kmsScreen->geometry().topLeft();
- QPoint localPos = pos - origin;
- QPoint adjustedPos = localPos - m_cursorImage.hotspot();
-
- int ret = drmModeMoveCursor(kmsScreen->device()->fd(), kmsScreen->output().crtc_id, adjustedPos.x(), adjustedPos.y());
- if (ret == 0)
- m_pos = pos;
- else
- qWarning("Failed to move cursor on screen %s: %d", kmsScreen->name().toLatin1().constData(), ret);
-
- kmsScreen->handleCursorMove(pos);
+ const QRect screenGeom = kmsScreen->geometry();
+ const QPoint origin = screenGeom.topLeft();
+ const QPoint localPos = pos - origin;
+ const QPoint adjustedLocalPos = localPos - m_cursorImage.hotspot();
+
+ if (localPos.x() < 0 || localPos.y() < 0
+ || localPos.x() >= screenGeom.width() || localPos.y() >= screenGeom.height())
+ {
+ if (!kmsScreen->isCursorOutOfRange()) {
+ kmsScreen->setCursorOutOfRange(true);
+ drmModeSetCursor(kmsScreen->device()->fd(), kmsScreen->output().crtc_id, 0, 0, 0);
+ }
+ } else {
+ int ret;
+ if (kmsScreen->isCursorOutOfRange()) {
+ kmsScreen->setCursorOutOfRange(false);
+ uint32_t handle = gbm_bo_get_handle(m_bo).u32;
+ ret = drmModeSetCursor(kmsScreen->device()->fd(), kmsScreen->output().crtc_id,
+ handle, m_cursorSize.width(), m_cursorSize.height());
+ } else {
+ ret = drmModeMoveCursor(kmsScreen->device()->fd(), kmsScreen->output().crtc_id,
+ adjustedLocalPos.x(), adjustedLocalPos.y());
+ }
+ if (ret == 0)
+ m_pos = pos;
+ else
+ qWarning("Failed to move cursor on screen %s: %d", kmsScreen->name().toLatin1().constData(), ret);
+
+ kmsScreen->handleCursorMove(pos);
+ }
}
}
diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmcursor.h b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmcursor.h
index d47b579238..5d2dfedba2 100644
--- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmcursor.h
+++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmcursor.h
@@ -85,6 +85,8 @@ public:
void updateMouseStatus();
+ void reevaluateVisibilityForScreens() { setPos(pos()); }
+
private:
void initCursorAtlas();
diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmdevice.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmdevice.cpp
index 20127ae7f7..503419cf91 100644
--- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmdevice.cpp
+++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmdevice.cpp
@@ -83,6 +83,8 @@ bool QEglFSKmsGbmDevice::open()
setFd(fd);
+ m_eventReader.create(this);
+
return true;
}
@@ -90,6 +92,8 @@ void QEglFSKmsGbmDevice::close()
{
// Note: screens are gone at this stage.
+ m_eventReader.destroy();
+
if (m_gbm_device) {
gbm_device_destroy(m_gbm_device);
m_gbm_device = nullptr;
@@ -155,4 +159,14 @@ void QEglFSKmsGbmDevice::registerScreenCloning(QPlatformScreen *screen,
gbmScreen->initCloning(screenThisScreenClones, screensCloningThisScreen);
}
+void QEglFSKmsGbmDevice::registerScreen(QPlatformScreen *screen,
+ bool isPrimary,
+ const QPoint &virtualPos,
+ const QList<QPlatformScreen *> &virtualSiblings)
+{
+ QEglFSKmsDevice::registerScreen(screen, isPrimary, virtualPos, virtualSiblings);
+ if (screenConfig()->hwCursor() && m_globalCursor)
+ m_globalCursor->reevaluateVisibilityForScreens();
+}
+
QT_END_NAMESPACE
diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmdevice.h b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmdevice.h
index 518e2ce58b..f1476f8ffa 100644
--- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmdevice.h
+++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmdevice.h
@@ -70,6 +70,10 @@ public:
void registerScreenCloning(QPlatformScreen *screen,
QPlatformScreen *screenThisScreenClones,
const QVector<QPlatformScreen *> &screensCloningThisScreen) override;
+ void registerScreen(QPlatformScreen *screen,
+ bool isPrimary,
+ const QPoint &virtualPos,
+ const QList<QPlatformScreen *> &virtualSiblings) override;
private:
Q_DISABLE_COPY(QEglFSKmsGbmDevice)
diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration.cpp
index f154520669..caa1187b40 100644
--- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration.cpp
+++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration.cpp
@@ -54,8 +54,6 @@
QT_BEGIN_NAMESPACE
-QMutex QEglFSKmsGbmScreen::m_waitForFlipMutex;
-
QEglFSKmsGbmIntegration::QEglFSKmsGbmIntegration()
{
qCDebug(qLcEglfsKmsDebug, "New DRM/KMS via GBM integration created");
diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmscreen.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmscreen.cpp
index 16dbfe1522..6f5c3b6953 100644
--- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmscreen.cpp
+++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmscreen.cpp
@@ -110,7 +110,7 @@ QEglFSKmsGbmScreen::FrameBuffer *QEglFSKmsGbmScreen::framebufferForBufferObject(
return fb.take();
}
-QEglFSKmsGbmScreen::QEglFSKmsGbmScreen(QKmsDevice *device, const QKmsOutput &output, bool headless)
+QEglFSKmsGbmScreen::QEglFSKmsGbmScreen(QEglFSKmsDevice *device, const QKmsOutput &output, bool headless)
: QEglFSKmsScreen(device, output, headless)
, m_gbm_surface(nullptr)
, m_gbm_bo_current(nullptr)
@@ -243,7 +243,7 @@ void QEglFSKmsGbmScreen::ensureModeSet(uint32_t fb)
if (device()->hasAtomicSupport()) {
#if QT_CONFIG(drm_atomic)
- drmModeAtomicReq *request = device()->atomic_request();
+ drmModeAtomicReq *request = device()->threadLocalAtomicRequest();
if (request) {
drmModeAtomicAddProperty(request, op.connector_id, op.crtcIdPropertyId, op.crtc_id);
drmModeAtomicAddProperty(request, op.crtc_id, op.modeIdPropertyId, op.mode_blob_id);
@@ -276,19 +276,15 @@ void QEglFSKmsGbmScreen::waitForFlip()
if (!m_gbm_bo_next)
return;
- QMutexLocker lock(&m_waitForFlipMutex);
- while (m_gbm_bo_next) {
- drmEventContext drmEvent;
- memset(&drmEvent, 0, sizeof(drmEvent));
- drmEvent.version = 2;
- drmEvent.vblank_handler = nullptr;
- drmEvent.page_flip_handler = pageFlipHandler;
- drmHandleEvent(device()->fd(), &drmEvent);
- }
+ m_flipMutex.lock();
+ device()->eventReader()->startWaitFlip(this, &m_flipMutex, &m_flipCond);
+ m_flipCond.wait(&m_flipMutex);
+ m_flipMutex.unlock();
+
+ flipFinished();
#if QT_CONFIG(drm_atomic)
- if (device()->hasAtomicSupport())
- device()->atomicReset();
+ device()->threadLocalAtomicReset();
#endif
}
@@ -324,16 +320,16 @@ void QEglFSKmsGbmScreen::flip()
if (device()->hasAtomicSupport()) {
#if QT_CONFIG(drm_atomic)
- drmModeAtomicReq *request = device()->atomic_request();
+ drmModeAtomicReq *request = device()->threadLocalAtomicRequest();
if (request) {
drmModeAtomicAddProperty(request, op.eglfs_plane->id, op.eglfs_plane->framebufferPropertyId, fb->fb);
drmModeAtomicAddProperty(request, op.eglfs_plane->id, op.eglfs_plane->crtcPropertyId, op.crtc_id);
drmModeAtomicAddProperty(request, op.eglfs_plane->id, op.eglfs_plane->srcwidthPropertyId,
- output().size.width() << 16);
+ op.size.width() << 16);
drmModeAtomicAddProperty(request, op.eglfs_plane->id, op.eglfs_plane->srcXPropertyId, 0);
drmModeAtomicAddProperty(request, op.eglfs_plane->id, op.eglfs_plane->srcYPropertyId, 0);
drmModeAtomicAddProperty(request, op.eglfs_plane->id, op.eglfs_plane->srcheightPropertyId,
- output().size.height() << 16);
+ op.size.height() << 16);
drmModeAtomicAddProperty(request, op.eglfs_plane->id, op.eglfs_plane->crtcXPropertyId, 0);
drmModeAtomicAddProperty(request, op.eglfs_plane->id, op.eglfs_plane->crtcYPropertyId, 0);
drmModeAtomicAddProperty(request, op.eglfs_plane->id, op.eglfs_plane->crtcwidthPropertyId,
@@ -371,7 +367,7 @@ void QEglFSKmsGbmScreen::flip()
if (device()->hasAtomicSupport()) {
#if QT_CONFIG(drm_atomic)
- drmModeAtomicReq *request = device()->atomic_request();
+ drmModeAtomicReq *request = device()->threadLocalAtomicRequest();
if (request) {
drmModeAtomicAddProperty(request, d.screen->output().eglfs_plane->id,
d.screen->output().eglfs_plane->framebufferPropertyId, fb->fb);
@@ -394,22 +390,10 @@ void QEglFSKmsGbmScreen::flip()
}
#if QT_CONFIG(drm_atomic)
- if (device()->hasAtomicSupport())
- device()->atomicCommit(this);
+ device()->threadLocalAtomicCommit(this);
#endif
}
-void QEglFSKmsGbmScreen::pageFlipHandler(int fd, unsigned int sequence, unsigned int tv_sec, unsigned int tv_usec, void *user_data)
-{
- Q_UNUSED(fd);
- Q_UNUSED(sequence);
- Q_UNUSED(tv_sec);
- Q_UNUSED(tv_usec);
-
- QEglFSKmsGbmScreen *screen = static_cast<QEglFSKmsGbmScreen *>(user_data);
- screen->flipFinished();
-}
-
void QEglFSKmsGbmScreen::flipFinished()
{
if (m_cloneSource) {
diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmscreen.h b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmscreen.h
index b94f44b7b1..69feeee703 100644
--- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmscreen.h
+++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmscreen.h
@@ -43,7 +43,8 @@
#define QEGLFSKMSGBMSCREEN_H
#include "qeglfskmsscreen.h"
-#include <QtCore/QMutex>
+#include <QMutex>
+#include <QWaitCondition>
#include <gbm.h>
@@ -54,7 +55,7 @@ class QEglFSKmsGbmCursor;
class QEglFSKmsGbmScreen : public QEglFSKmsScreen
{
public:
- QEglFSKmsGbmScreen(QKmsDevice *device, const QKmsOutput &output, bool headless);
+ QEglFSKmsGbmScreen(QEglFSKmsDevice *device, const QKmsOutput &output, bool headless);
~QEglFSKmsGbmScreen();
QPlatformCursor *cursor() const override;
@@ -75,18 +76,15 @@ private:
void cloneDestFlipFinished(QEglFSKmsGbmScreen *cloneDestScreen);
void updateFlipStatus();
- static void pageFlipHandler(int fd,
- unsigned int sequence,
- unsigned int tv_sec,
- unsigned int tv_usec,
- void *user_data);
-
gbm_surface *m_gbm_surface;
gbm_bo *m_gbm_bo_current;
gbm_bo *m_gbm_bo_next;
bool m_flipPending;
+ QMutex m_flipMutex;
+ QWaitCondition m_flipCond;
+
QScopedPointer<QEglFSKmsGbmCursor> m_cursor;
struct FrameBuffer {
@@ -101,8 +99,6 @@ private:
bool cloneFlipPending = false;
};
QVector<CloneDestination> m_cloneDests;
-
- static QMutex m_waitForFlipMutex;
};
QT_END_NAMESPACE
diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldevicescreen.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldevicescreen.cpp
index 1626c86239..5a62e437c4 100644
--- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldevicescreen.cpp
+++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldevicescreen.cpp
@@ -47,7 +47,7 @@ QT_BEGIN_NAMESPACE
Q_DECLARE_LOGGING_CATEGORY(qLcEglfsKmsDebug)
-QEglFSKmsEglDeviceScreen::QEglFSKmsEglDeviceScreen(QKmsDevice *device, const QKmsOutput &output)
+QEglFSKmsEglDeviceScreen::QEglFSKmsEglDeviceScreen(QEglFSKmsDevice *device, const QKmsOutput &output)
: QEglFSKmsScreen(device, output)
{
}
diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldevicescreen.h b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldevicescreen.h
index 5efe35f8b3..961398ba3e 100644
--- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldevicescreen.h
+++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldevicescreen.h
@@ -47,7 +47,7 @@ QT_BEGIN_NAMESPACE
class QEglFSKmsEglDeviceScreen : public QEglFSKmsScreen
{
public:
- QEglFSKmsEglDeviceScreen(QKmsDevice *device, const QKmsOutput &output);
+ QEglFSKmsEglDeviceScreen(QEglFSKmsDevice *device, const QKmsOutput &output);
~QEglFSKmsEglDeviceScreen();
QPlatformCursor *cursor() const override;
diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/eglfs_kms_support.pro b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/eglfs_kms_support.pro
index 40806b6a9b..e51903ed96 100644
--- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/eglfs_kms_support.pro
+++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/eglfs_kms_support.pro
@@ -14,9 +14,11 @@ CONFIG += egl
SOURCES += $$PWD/qeglfskmsintegration.cpp \
$$PWD/qeglfskmsdevice.cpp \
- $$PWD/qeglfskmsscreen.cpp
+ $$PWD/qeglfskmsscreen.cpp \
+ $$PWD/qeglfskmseventreader.cpp
HEADERS += $$PWD/qeglfskmsintegration.h \
$$PWD/qeglfskmsdevice.h \
$$PWD/qeglfskmsscreen.h \
- $$PWD/qeglfskmshelpers.h
+ $$PWD/qeglfskmshelpers.h \
+ $$PWD/qeglfskmseventreader.h
diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsdevice.h b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsdevice.h
index fc83a620d9..34908aa60f 100644
--- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsdevice.h
+++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsdevice.h
@@ -42,6 +42,7 @@
#define QEGLFSKMSDEVICE_H
#include "private/qeglfsglobal_p.h"
+#include "qeglfskmseventreader.h"
#include <QtKmsSupport/private/qkmsdevice_p.h>
QT_BEGIN_NAMESPACE
@@ -55,6 +56,11 @@ public:
bool isPrimary,
const QPoint &virtualPos,
const QList<QPlatformScreen *> &virtualSiblings) override;
+
+ QEglFSKmsEventReader *eventReader() { return &m_eventReader; }
+
+protected:
+ QEglFSKmsEventReader m_eventReader;
};
QT_END_NAMESPACE
diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmseventreader.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmseventreader.cpp
new file mode 100644
index 0000000000..645a0ae2e9
--- /dev/null
+++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmseventreader.cpp
@@ -0,0 +1,218 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the plugins of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qeglfskmseventreader.h"
+#include "qeglfskmsdevice.h"
+#include <QSocketNotifier>
+#include <QCoreApplication>
+#include <QLoggingCategory>
+
+QT_BEGIN_NAMESPACE
+
+Q_DECLARE_LOGGING_CATEGORY(qLcEglfsKmsDebug)
+
+static void pageFlipHandler(int fd, unsigned int sequence, unsigned int tv_sec, unsigned int tv_usec, void *user_data)
+{
+ Q_UNUSED(fd);
+ Q_UNUSED(sequence);
+ Q_UNUSED(tv_sec);
+ Q_UNUSED(tv_usec);
+
+ QEglFSKmsEventReaderThread *t = static_cast<QEglFSKmsEventReaderThread *>(QThread::currentThread());
+ t->eventHost()->handlePageFlipCompleted(user_data);
+}
+
+class RegisterWaitFlipEvent : public QEvent
+{
+public:
+ static const QEvent::Type TYPE = QEvent::Type(QEvent::User + 1);
+ RegisterWaitFlipEvent(void *key, QMutex *mutex, QWaitCondition *cond)
+ : QEvent(TYPE), key(key), mutex(mutex), cond(cond)
+ { }
+ void *key;
+ QMutex *mutex;
+ QWaitCondition *cond;
+};
+
+bool QEglFSKmsEventHost::event(QEvent *event)
+{
+ if (event->type() == RegisterWaitFlipEvent::TYPE) {
+ RegisterWaitFlipEvent *e = static_cast<RegisterWaitFlipEvent *>(event);
+ PendingFlipWait *p = &pendingFlipWaits[0];
+ PendingFlipWait *end = p + MAX_FLIPS;
+ while (p < end) {
+ if (!p->key) {
+ p->key = e->key;
+ p->mutex = e->mutex;
+ p->cond = e->cond;
+ updateStatus();
+ return true;
+ }
+ ++p;
+ }
+ qWarning("Cannot queue page flip wait (more than %d screens?)", MAX_FLIPS);
+ e->mutex->lock();
+ e->cond->wakeOne();
+ e->mutex->unlock();
+ return true;
+ }
+ return QObject::event(event);
+}
+
+void QEglFSKmsEventHost::updateStatus()
+{
+ void **begin = &completedFlips[0];
+ void **end = begin + MAX_FLIPS;
+
+ for (int i = 0; i < MAX_FLIPS; ++i) {
+ PendingFlipWait *w = pendingFlipWaits + i;
+ if (!w->key)
+ continue;
+
+ void **p = begin;
+ while (p < end) {
+ if (*p == w->key) {
+ *p = nullptr;
+ w->key = nullptr;
+ w->mutex->lock();
+ w->cond->wakeOne();
+ w->mutex->unlock();
+ return;
+ }
+ ++p;
+ }
+ }
+}
+
+void QEglFSKmsEventHost::handlePageFlipCompleted(void *key)
+{
+ void **begin = &completedFlips[0];
+ void **end = begin + MAX_FLIPS;
+ void **p = begin;
+ while (p < end) {
+ if (*p == key) {
+ updateStatus();
+ return;
+ }
+ ++p;
+ }
+ p = begin;
+ while (p < end) {
+ if (!*p) {
+ *p = key;
+ updateStatus();
+ return;
+ }
+ ++p;
+ }
+ qWarning("Cannot store page flip status (more than %d screens?)", MAX_FLIPS);
+}
+
+void QEglFSKmsEventReaderThread::run()
+{
+ qCDebug(qLcEglfsKmsDebug, "Event reader thread: entering event loop");
+
+ QSocketNotifier notifier(m_fd, QSocketNotifier::Read);
+ QObject::connect(&notifier, &QSocketNotifier::activated, &notifier, [this] {
+ drmEventContext drmEvent;
+ memset(&drmEvent, 0, sizeof(drmEvent));
+ drmEvent.version = 2;
+ drmEvent.vblank_handler = nullptr;
+ drmEvent.page_flip_handler = pageFlipHandler;
+ drmHandleEvent(m_fd, &drmEvent);
+ });
+
+ exec();
+
+ m_ev.moveToThread(thread()); // move back to the thread where m_ev was created
+
+ qCDebug(qLcEglfsKmsDebug, "Event reader thread: event loop stopped");
+}
+
+QEglFSKmsEventReader::~QEglFSKmsEventReader()
+{
+ destroy();
+}
+
+void QEglFSKmsEventReader::create(QEglFSKmsDevice *device)
+{
+ destroy();
+
+ if (!device)
+ return;
+
+ m_device = device;
+
+ qCDebug(qLcEglfsKmsDebug, "Initalizing event reader for device %p fd %d",
+ m_device, m_device->fd());
+
+ m_thread = new QEglFSKmsEventReaderThread(m_device->fd());
+ m_thread->start();
+
+ // Change thread affinity for the event host, so that postEvent()
+ // goes through the event reader thread's event loop for that object.
+ m_thread->eventHost()->moveToThread(m_thread);
+}
+
+void QEglFSKmsEventReader::destroy()
+{
+ if (!m_device)
+ return;
+
+ qCDebug(qLcEglfsKmsDebug, "Stopping event reader for device %p", m_device);
+
+ if (m_thread) {
+ m_thread->quit();
+ m_thread->wait();
+ delete m_thread;
+ m_thread = nullptr;
+ }
+
+ m_device = nullptr;
+}
+
+void QEglFSKmsEventReader::startWaitFlip(void *key, QMutex *mutex, QWaitCondition *cond)
+{
+ if (m_thread) {
+ QCoreApplication::postEvent(m_thread->eventHost(),
+ new RegisterWaitFlipEvent(key, mutex, cond));
+ }
+}
+
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmseventreader.h b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmseventreader.h
new file mode 100644
index 0000000000..4aa285b0fe
--- /dev/null
+++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmseventreader.h
@@ -0,0 +1,99 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the plugins of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QEGLFSKKMSEVENTREADER_H
+#define QEGLFSKKMSEVENTREADER_H
+
+#include "private/qeglfsglobal_p.h"
+#include <QObject>
+#include <QThread>
+#include <QMutex>
+#include <QWaitCondition>
+
+QT_BEGIN_NAMESPACE
+
+class QEglFSKmsDevice;
+
+struct QEglFSKmsEventHost : public QObject
+{
+ struct PendingFlipWait {
+ void *key;
+ QMutex *mutex;
+ QWaitCondition *cond;
+ };
+
+ static const int MAX_FLIPS = 32;
+ void *completedFlips[MAX_FLIPS] = {};
+ QEglFSKmsEventHost::PendingFlipWait pendingFlipWaits[MAX_FLIPS] = {};
+
+ bool event(QEvent *event) override;
+ void updateStatus();
+ void handlePageFlipCompleted(void *key);
+};
+
+class QEglFSKmsEventReaderThread : public QThread
+{
+public:
+ QEglFSKmsEventReaderThread(int fd) : m_fd(fd) { }
+ void run() override;
+ QEglFSKmsEventHost *eventHost() { return &m_ev; }
+
+private:
+ int m_fd;
+ QEglFSKmsEventHost m_ev;
+};
+
+class Q_EGLFS_EXPORT QEglFSKmsEventReader
+{
+public:
+ ~QEglFSKmsEventReader();
+
+ void create(QEglFSKmsDevice *device);
+ void destroy();
+
+ void startWaitFlip(void *key, QMutex *mutex, QWaitCondition *cond);
+
+private:
+ QEglFSKmsDevice *m_device = nullptr;
+ QEglFSKmsEventReaderThread *m_thread = nullptr;
+};
+
+QT_END_NAMESPACE
+
+#endif // QEGLFSKKMSEVENTREADER_H
diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsintegration.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsintegration.cpp
index a6aac61506..28b6b7df63 100644
--- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsintegration.cpp
+++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsintegration.cpp
@@ -140,7 +140,7 @@ void *QEglFSKmsIntegration::nativeResourceForIntegration(const QByteArray &name)
#if QT_CONFIG(drm_atomic)
if (name == QByteArrayLiteral("dri_atomic_request") && m_device)
- return (void *) (qintptr) m_device->atomic_request();
+ return (void *) (qintptr) m_device->threadLocalAtomicRequest();
#endif
return nullptr;
}
diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsscreen.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsscreen.cpp
index e5354d97bd..959f17eba3 100644
--- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsscreen.cpp
+++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsscreen.cpp
@@ -40,6 +40,7 @@
****************************************************************************/
#include "qeglfskmsscreen.h"
+#include "qeglfskmsdevice.h"
#include "qeglfsintegration_p.h"
#include <QtCore/QLoggingCategory>
@@ -68,10 +69,11 @@ private:
QEglFSKmsScreen *m_screen;
};
-QEglFSKmsScreen::QEglFSKmsScreen(QKmsDevice *device, const QKmsOutput &output, bool headless)
+QEglFSKmsScreen::QEglFSKmsScreen(QEglFSKmsDevice *device, const QKmsOutput &output, bool headless)
: QEglFSScreen(static_cast<QEglFSIntegration *>(QGuiApplicationPrivate::platformIntegration())->display())
, m_device(device)
, m_output(output)
+ , m_cursorOutOfRange(false)
, m_powerState(PowerStateOn)
, m_interruptHandler(new QEglFSKmsInterruptHandler(this))
, m_headless(headless)
diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsscreen.h b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsscreen.h
index 7f395aacb7..a5c8f5b4e8 100644
--- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsscreen.h
+++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmsscreen.h
@@ -51,12 +51,13 @@
QT_BEGIN_NAMESPACE
+class QEglFSKmsDevice;
class QEglFSKmsInterruptHandler;
class Q_EGLFS_EXPORT QEglFSKmsScreen : public QEglFSScreen
{
public:
- QEglFSKmsScreen(QKmsDevice *device, const QKmsOutput &output, bool headless = false);
+ QEglFSKmsScreen(QEglFSKmsDevice *device, const QKmsOutput &output, bool headless = false);
~QEglFSKmsScreen();
void setVirtualPosition(const QPoint &pos);
@@ -87,7 +88,7 @@ public:
int currentMode() const override;
int preferredMode() const override;
- QKmsDevice *device() const { return m_device; }
+ QEglFSKmsDevice *device() const { return m_device; }
virtual void waitForFlip();
@@ -99,12 +100,16 @@ public:
QPlatformScreen::PowerState powerState() const override;
void setPowerState(QPlatformScreen::PowerState state) override;
+ bool isCursorOutOfRange() const { return m_cursorOutOfRange; }
+ void setCursorOutOfRange(bool b) { m_cursorOutOfRange = b; }
+
protected:
- QKmsDevice *m_device;
+ QEglFSKmsDevice *m_device;
QKmsOutput m_output;
QEdidParser m_edid;
QPoint m_pos;
+ bool m_cursorOutOfRange;
QList<QPlatformScreen *> m_siblings;
diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_vsp2/qeglfskmsvsp2screen.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_vsp2/qeglfskmsvsp2screen.cpp
index 475d9d55dd..c255bc84b7 100644
--- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_vsp2/qeglfskmsvsp2screen.cpp
+++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_vsp2/qeglfskmsvsp2screen.cpp
@@ -99,7 +99,7 @@ QEglFSKmsVsp2Screen::DmaBuffer *QEglFSKmsVsp2Screen::dmaBufferForGbmBuffer(gbm_b
return fb.take();
}
-QEglFSKmsVsp2Screen::QEglFSKmsVsp2Screen(QKmsDevice *device, const QKmsOutput &output)
+QEglFSKmsVsp2Screen::QEglFSKmsVsp2Screen(QEglFSKmsDevice *device, const QKmsOutput &output)
: QEglFSKmsScreen(device, output)
, m_blender(new Blender(this))
{
diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_vsp2/qeglfskmsvsp2screen.h b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_vsp2/qeglfskmsvsp2screen.h
index 7618510333..378786643d 100644
--- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_vsp2/qeglfskmsvsp2screen.h
+++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_vsp2/qeglfskmsvsp2screen.h
@@ -53,7 +53,7 @@ QT_BEGIN_NAMESPACE
class QEglFSKmsVsp2Screen : public QEglFSKmsScreen
{
public:
- QEglFSKmsVsp2Screen(QKmsDevice *device, const QKmsOutput &output);
+ QEglFSKmsVsp2Screen(QEglFSKmsDevice *device, const QKmsOutput &output);
gbm_surface *createSurface();
void resetSurface();
diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_x11/qeglfsx11integration.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_x11/qeglfsx11integration.cpp
index 07b2de7c58..ce5a721906 100644
--- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_x11/qeglfsx11integration.cpp
+++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_x11/qeglfsx11integration.cpp
@@ -75,7 +75,7 @@ void EventReader::run()
if (client->format == 32
&& client->type == atoms[Atoms::WM_PROTOCOLS]
&& client->data.data32[0] == atoms[Atoms::WM_DELETE_WINDOW]) {
- QWindow *window = m_integration->platformWindow() ? m_integration->platformWindow()->window() : 0;
+ QWindow *window = m_integration->platformWindow() ? m_integration->platformWindow()->window() : nullptr;
if (window)
QWindowSystemInterface::handleCloseEvent(window);
}
@@ -106,7 +106,7 @@ void QEglFSX11Integration::sendConnectionEvent(xcb_atom_t a)
void QEglFSX11Integration::platformInit()
{
- m_display = XOpenDisplay(0);
+ m_display = XOpenDisplay(nullptr);
if (Q_UNLIKELY(!m_display))
qFatal("Could not open display");
@@ -121,7 +121,7 @@ void QEglFSX11Integration::platformInit()
xcb_create_window(m_connection, XCB_COPY_FROM_PARENT,
m_connectionEventListener, it.data->root,
0, 0, 1, 1, 0, XCB_WINDOW_CLASS_INPUT_ONLY,
- it.data->root_visual, 0, 0);
+ it.data->root_visual, 0, nullptr);
m_eventReader = new EventReader(this);
m_eventReader->start();
@@ -135,11 +135,11 @@ void QEglFSX11Integration::platformDestroy()
m_eventReader->wait();
delete m_eventReader;
- m_eventReader = 0;
+ m_eventReader = nullptr;
XCloseDisplay(DISPLAY);
- m_display = 0;
- m_connection = 0;
+ m_display = nullptr;
+ m_connection = nullptr;
}
EGLNativeDisplayType QEglFSX11Integration::platformDisplay() const
@@ -175,7 +175,7 @@ EGLNativeWindowType QEglFSX11Integration::createNativeWindow(QPlatformWindow *pl
xcb_create_window(m_connection, XCB_COPY_FROM_PARENT, m_window, it.data->root,
0, 0, size.width(), size.height(), 0,
XCB_WINDOW_CLASS_INPUT_OUTPUT, it.data->root_visual,
- 0, 0);
+ 0, nullptr);
xcb_intern_atom_cookie_t cookies[Atoms::N_ATOMS];
static const char *atomNames[Atoms::N_ATOMS] = {
@@ -189,7 +189,7 @@ EGLNativeWindowType QEglFSX11Integration::createNativeWindow(QPlatformWindow *pl
for (int i = 0; i < Atoms::N_ATOMS; ++i) {
cookies[i] = xcb_intern_atom(m_connection, false, strlen(atomNames[i]), atomNames[i]);
- xcb_intern_atom_reply_t *reply = xcb_intern_atom_reply(m_connection, cookies[i], 0);
+ xcb_intern_atom_reply_t *reply = xcb_intern_atom_reply(m_connection, cookies[i], nullptr);
m_atoms[i] = reply->atom;
free(reply);
}
diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_x11/qeglfsx11integration.h b/src/plugins/platforms/eglfs/deviceintegration/eglfs_x11/qeglfsx11integration.h
index bf431caaac..ebcc19b682 100644
--- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_x11/qeglfsx11integration.h
+++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_x11/qeglfsx11integration.h
@@ -67,7 +67,7 @@ class EventReader;
class QEglFSX11Integration : public QEglFSDeviceIntegration
{
public:
- QEglFSX11Integration() : m_connection(0), m_window(0), m_eventReader(0) {}
+ QEglFSX11Integration() : m_connection(nullptr), m_window(0), m_eventReader(nullptr) {}
void platformInit() override;
void platformDestroy() override;
diff --git a/src/plugins/platforms/eglfs/qeglfsmain.cpp b/src/plugins/platforms/eglfs/qeglfsmain.cpp
index 4f77b7cd17..b41bbec27d 100644
--- a/src/plugins/platforms/eglfs/qeglfsmain.cpp
+++ b/src/plugins/platforms/eglfs/qeglfsmain.cpp
@@ -56,7 +56,7 @@ QPlatformIntegration* QEglFSIntegrationPlugin::create(const QString& system, con
if (!system.compare(QLatin1String("eglfs"), Qt::CaseInsensitive))
return new QEglFSIntegration;
- return 0;
+ return nullptr;
}
QT_END_NAMESPACE
diff --git a/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileengineassetslibrary.mm b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileengineassetslibrary.mm
index 54152aebf7..c5244a51ad 100644
--- a/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileengineassetslibrary.mm
+++ b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileengineassetslibrary.mm
@@ -373,7 +373,7 @@ bool QIOSFileEngineAssetsLibrary::close()
QAbstractFileEngine::FileFlags QIOSFileEngineAssetsLibrary::fileFlags(QAbstractFileEngine::FileFlags type) const
{
- QAbstractFileEngine::FileFlags flags = 0;
+ QAbstractFileEngine::FileFlags flags;
const bool isDir = (m_assetUrl == QLatin1String("assets-library://"));
const bool exists = isDir || m_assetUrl == g_iteratorCurrentUrl.localData() || loadAsset();
diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm
index cdec57de71..1b6a802ca2 100644
--- a/src/plugins/platforms/ios/qioswindow.mm
+++ b/src/plugins/platforms/ios/qioswindow.mm
@@ -51,6 +51,9 @@
#include <qpa/qplatformintegration.h>
#import <QuartzCore/CAEAGLLayer.h>
+#ifdef Q_OS_IOS
+#import <QuartzCore/CAMetalLayer.h>
+#endif
#include <QtDebug>
@@ -58,9 +61,15 @@ QT_BEGIN_NAMESPACE
QIOSWindow::QIOSWindow(QWindow *window)
: QPlatformWindow(window)
- , m_view([[QUIView alloc] initWithQIOSWindow:this])
, m_windowLevel(0)
{
+#ifdef Q_OS_IOS
+ if (window->surfaceType() == QSurface::MetalSurface)
+ m_view = [[QUIMetalView alloc] initWithQIOSWindow:this];
+ else
+#endif
+ m_view = [[QUIView alloc] initWithQIOSWindow:this];
+
connect(qGuiApp, &QGuiApplication::applicationStateChanged, this, &QIOSWindow::applicationStateChanged);
setParent(QPlatformWindow::parent());
diff --git a/src/plugins/platforms/ios/quiview.h b/src/plugins/platforms/ios/quiview.h
index e1d5d5af0c..1ab9481dd6 100644
--- a/src/plugins/platforms/ios/quiview.h
+++ b/src/plugins/platforms/ios/quiview.h
@@ -70,3 +70,7 @@ QT_END_NAMESPACE
@property (nonatomic, readonly) UIEdgeInsets qt_safeAreaInsets;
@end
+#ifdef Q_OS_IOS
+@interface QUIMetalView : QUIView
+@end
+#endif
diff --git a/src/plugins/platforms/ios/quiview.mm b/src/plugins/platforms/ios/quiview.mm
index 91a186bace..59eae07388 100644
--- a/src/plugins/platforms/ios/quiview.mm
+++ b/src/plugins/platforms/ios/quiview.mm
@@ -100,13 +100,15 @@ Q_LOGGING_CATEGORY(lcQpaTablet, "qt.qpa.input.tablet")
- (instancetype)initWithFrame:(CGRect)frame
{
if ((self = [super initWithFrame:frame])) {
- // Set up EAGL layer
- CAEAGLLayer *eaglLayer = static_cast<CAEAGLLayer *>(self.layer);
- eaglLayer.opaque = TRUE;
- eaglLayer.drawableProperties = @{
- kEAGLDrawablePropertyRetainedBacking: @(YES),
- kEAGLDrawablePropertyColorFormat: kEAGLColorFormatRGBA8
- };
+ if ([self.layer isKindOfClass:[CAEAGLLayer class]]) {
+ // Set up EAGL layer
+ CAEAGLLayer *eaglLayer = static_cast<CAEAGLLayer *>(self.layer);
+ eaglLayer.opaque = TRUE;
+ eaglLayer.drawableProperties = @{
+ kEAGLDrawablePropertyRetainedBacking: @(YES),
+ kEAGLDrawablePropertyColorFormat: kEAGLColorFormatRGBA8
+ };
+ }
if (isQtApplication())
self.hidden = YES;
@@ -675,6 +677,25 @@ Q_LOGGING_CATEGORY(lcQpaTablet, "qt.qpa.input.tablet")
@end
+#ifdef Q_OS_IOS
+@implementation QUIMetalView
+
++ (Class)layerClass
+{
+#ifdef TARGET_IPHONE_SIMULATOR
+ if (@available(ios 13.0, *))
+#endif
+
+ return [CAMetalLayer class];
+
+#ifdef TARGET_IPHONE_SIMULATOR
+ return nil;
+#endif
+}
+
+@end
+#endif
+
#ifndef QT_NO_ACCESSIBILITY
// Include category as an alternative to using -ObjC (Apple QA1490)
#include "quiview_accessibility.mm"
diff --git a/src/plugins/platforms/offscreen/main.cpp b/src/plugins/platforms/offscreen/main.cpp
index 207db60f3a..f364d9f004 100644
--- a/src/plugins/platforms/offscreen/main.cpp
+++ b/src/plugins/platforms/offscreen/main.cpp
@@ -57,7 +57,7 @@ QPlatformIntegration *QOffscreenIntegrationPlugin::create(const QString& system,
if (!system.compare(QLatin1String("offscreen"), Qt::CaseInsensitive))
return QOffscreenIntegration::createOffscreenIntegration();
- return 0;
+ return nullptr;
}
QT_END_NAMESPACE
diff --git a/src/plugins/platforms/offscreen/qoffscreencommon.cpp b/src/plugins/platforms/offscreen/qoffscreencommon.cpp
index eae25012c1..de75a3e012 100644
--- a/src/plugins/platforms/offscreen/qoffscreencommon.cpp
+++ b/src/plugins/platforms/offscreen/qoffscreencommon.cpp
@@ -48,7 +48,7 @@
QT_BEGIN_NAMESPACE
-QPlatformWindow *QOffscreenScreen::windowContainingCursor = 0;
+QPlatformWindow *QOffscreenScreen::windowContainingCursor = nullptr;
class QOffscreenCursor : public QPlatformCursor
{
@@ -60,7 +60,7 @@ public:
{
m_pos = pos;
const QWindowList wl = QGuiApplication::topLevelWindows();
- QWindow *containing = 0;
+ QWindow *containing = nullptr;
for (QWindow *w : wl) {
if (w->type() != Qt::Desktop && w->isExposed() && w->geometry().contains(pos)) {
containing = w;
@@ -72,7 +72,7 @@ public:
if (containing)
local -= containing->position();
- QWindow *previous = QOffscreenScreen::windowContainingCursor ? QOffscreenScreen::windowContainingCursor->window() : 0;
+ QWindow *previous = QOffscreenScreen::windowContainingCursor ? QOffscreenScreen::windowContainingCursor->window() : nullptr;
if (containing != previous)
QWindowSystemInterface::handleEnterLeaveEvent(containing, previous, local, pos);
@@ -80,7 +80,7 @@ public:
QWindowSystemInterface::handleMouseEvent(containing, local, pos, QGuiApplication::mouseButtons(), Qt::NoButton,
QEvent::MouseMove, QGuiApplication::keyboardModifiers(), Qt::MouseEventSynthesizedByQt);
- QOffscreenScreen::windowContainingCursor = containing ? containing->handle() : 0;
+ QOffscreenScreen::windowContainingCursor = containing ? containing->handle() : nullptr;
}
#ifndef QT_NO_CURSOR
void changeCursor(QCursor *windowCursor, QWindow *window) override
@@ -106,7 +106,7 @@ QPixmap QOffscreenScreen::grabWindow(WId id, int x, int y, int width, int height
QOffscreenWindow *window = QOffscreenWindow::windowForWinId(id);
if (!window || window->window()->type() == Qt::Desktop) {
const QWindowList wl = QGuiApplication::topLevelWindows();
- QWindow *containing = 0;
+ QWindow *containing = nullptr;
for (QWindow *w : wl) {
if (w->type() != Qt::Desktop && w->isExposed() && w->geometry().contains(rect)) {
containing = w;
diff --git a/src/plugins/platforms/offscreen/qoffscreenintegration.cpp b/src/plugins/platforms/offscreen/qoffscreenintegration.cpp
index 869e9228cd..3a4494fc2e 100644
--- a/src/plugins/platforms/offscreen/qoffscreenintegration.cpp
+++ b/src/plugins/platforms/offscreen/qoffscreenintegration.cpp
@@ -79,7 +79,7 @@ template <typename BaseEventDispatcher>
class QOffscreenEventDispatcher : public BaseEventDispatcher
{
public:
- explicit QOffscreenEventDispatcher(QObject *parent = 0)
+ explicit QOffscreenEventDispatcher(QObject *parent = nullptr)
: BaseEventDispatcher(parent)
{
}
diff --git a/src/plugins/platforms/offscreen/qoffscreenintegration_x11.cpp b/src/plugins/platforms/offscreen/qoffscreenintegration_x11.cpp
index 92fc8aa57a..84991d751f 100644
--- a/src/plugins/platforms/offscreen/qoffscreenintegration_x11.cpp
+++ b/src/plugins/platforms/offscreen/qoffscreenintegration_x11.cpp
@@ -206,7 +206,7 @@ QOffscreenX11GLXContext::QOffscreenX11GLXContext(QOffscreenX11Info *x11, QOpenGL
if (d->format.renderableType() != QSurfaceFormat::OpenGL)
return;
- d->shareContext = 0;
+ d->shareContext = nullptr;
if (context->shareHandle())
d->shareContext = static_cast<QOffscreenX11GLXContext *>(context->shareHandle())->d->context;
@@ -216,9 +216,9 @@ QOffscreenX11GLXContext::QOffscreenX11GLXContext(QOffscreenX11Info *x11, QOpenGL
if (config) {
d->context = glXCreateNewContext(x11->display(), config, GLX_RGBA_TYPE, d->shareContext, true);
if (!d->context && d->shareContext) {
- d->shareContext = 0;
+ d->shareContext = nullptr;
// re-try without a shared glx context
- d->context = glXCreateNewContext(x11->display(), config, GLX_RGBA_TYPE, 0, true);
+ d->context = glXCreateNewContext(x11->display(), config, GLX_RGBA_TYPE, nullptr, true);
}
// Get the basic surface format details
@@ -234,8 +234,8 @@ QOffscreenX11GLXContext::QOffscreenX11GLXContext(QOffscreenX11Info *x11, QOpenGL
d->context = glXCreateContext(x11->display(), visualInfo, d->shareContext, true);
if (!d->context && d->shareContext) {
// re-try without a shared glx context
- d->shareContext = 0;
- d->context = glXCreateContext(x11->display(), visualInfo, 0, true);
+ d->shareContext = nullptr;
+ d->context = glXCreateContext(x11->display(), visualInfo, nullptr, true);
}
d->window = createDummyWindow(x11, visualInfo);
@@ -269,7 +269,7 @@ bool QOffscreenX11GLXContext::makeCurrent(QPlatformSurface *surface)
void QOffscreenX11GLXContext::doneCurrent()
{
- glXMakeCurrent(d->x11->display(), 0, 0);
+ glXMakeCurrent(d->x11->display(), 0, nullptr);
}
void QOffscreenX11GLXContext::swapBuffers(QPlatformSurface *)
diff --git a/src/plugins/platforms/offscreen/qoffscreenwindow.cpp b/src/plugins/platforms/offscreen/qoffscreenwindow.cpp
index 832e94034d..53880c877e 100644
--- a/src/plugins/platforms/offscreen/qoffscreenwindow.cpp
+++ b/src/plugins/platforms/offscreen/qoffscreenwindow.cpp
@@ -69,7 +69,7 @@ QOffscreenWindow::QOffscreenWindow(QWindow *window)
QOffscreenWindow::~QOffscreenWindow()
{
if (QOffscreenScreen::windowContainingCursor == this)
- QOffscreenScreen::windowContainingCursor = 0;
+ QOffscreenScreen::windowContainingCursor = nullptr;
m_windowForWinIdHash.remove(m_winId);
}
diff --git a/src/plugins/platforms/vnc/main.cpp b/src/plugins/platforms/vnc/main.cpp
index 3ec0f0b78d..ac7e18e03f 100644
--- a/src/plugins/platforms/vnc/main.cpp
+++ b/src/plugins/platforms/vnc/main.cpp
@@ -56,7 +56,7 @@ QPlatformIntegration* QVncIntegrationPlugin::create(const QString& system, const
if (!system.compare(QLatin1String("vnc"), Qt::CaseInsensitive))
return new QVncIntegration(paramList);
- return 0;
+ return nullptr;
}
QT_END_NAMESPACE
diff --git a/src/plugins/platforms/vnc/qvnc.cpp b/src/plugins/platforms/vnc/qvnc.cpp
index 32114c6443..8390fa19cd 100644
--- a/src/plugins/platforms/vnc/qvnc.cpp
+++ b/src/plugins/platforms/vnc/qvnc.cpp
@@ -537,7 +537,7 @@ QVncClientCursor::QVncClientCursor()
{
QWindow *w = QGuiApplication::focusWindow();
QCursor c = w ? w->cursor() : QCursor(Qt::ArrowCursor);
- changeCursor(&c, 0);
+ changeCursor(&c, nullptr);
}
QVncClientCursor::~QVncClientCursor()
@@ -595,7 +595,7 @@ void QVncClientCursor::changeCursor(QCursor *widgetCursor, QWindow *window)
cursor = widgetCursor->pixmap().toImage();
} else {
// system cursor
- QPlatformCursorImage platformImage(0, 0, 0, 0, 0, 0);
+ QPlatformCursorImage platformImage(nullptr, nullptr, 0, 0, 0, 0);
platformImage.set(shape);
cursor = *platformImage.image();
hotspot = platformImage.hotspot();
diff --git a/src/plugins/platforms/vnc/qvncclient.cpp b/src/plugins/platforms/vnc/qvncclient.cpp
index 3a373a5e4b..c5caddc58d 100644
--- a/src/plugins/platforms/vnc/qvncclient.cpp
+++ b/src/plugins/platforms/vnc/qvncclient.cpp
@@ -65,7 +65,6 @@ QVncClient::QVncClient(QTcpSocket *clientSocket, QVncServer *server)
, m_cutTextPending(0)
, m_supportHextile(false)
, m_wantUpdate(false)
- , m_keymod(0)
, m_dirtyCursor(false)
, m_updatePending(false)
, m_protocolVersion(V3_3)
@@ -618,7 +617,7 @@ void QVncClient::keyEvent()
m_keymod = ev.down ? m_keymod | Qt::AltModifier :
m_keymod & ~Qt::AltModifier;
if (ev.unicode || ev.keycode)
- QWindowSystemInterface::handleKeyEvent(0, ev.down ? QEvent::KeyPress : QEvent::KeyRelease, ev.keycode, m_keymod, QString(ev.unicode));
+ QWindowSystemInterface::handleKeyEvent(nullptr, ev.down ? QEvent::KeyPress : QEvent::KeyRelease, ev.keycode, m_keymod, QString(ev.unicode));
m_handleMsg = false;
}
}
diff --git a/src/plugins/platforms/vnc/qvncscreen.cpp b/src/plugins/platforms/vnc/qvncscreen.cpp
index 2eca18fb4d..5dc3919ff5 100644
--- a/src/plugins/platforms/vnc/qvncscreen.cpp
+++ b/src/plugins/platforms/vnc/qvncscreen.cpp
@@ -101,7 +101,7 @@ bool QVncScreen::initialize()
default:
qWarning("QVNCScreen::initDevice: No support for screen depth %d",
depth());
- dirty = 0;
+ dirty = nullptr;
return false;
}
diff --git a/src/plugins/platforms/wasm/qwasmscreen.cpp b/src/plugins/platforms/wasm/qwasmscreen.cpp
index 37f1ea832a..b6c9b9e377 100644
--- a/src/plugins/platforms/wasm/qwasmscreen.cpp
+++ b/src/plugins/platforms/wasm/qwasmscreen.cpp
@@ -54,6 +54,8 @@ QWasmScreen::QWasmScreen(const QString &canvasId)
m_compositor = new QWasmCompositor(this);
m_eventTranslator = new QWasmEventTranslator(this);
updateQScreenAndCanvasRenderSize();
+ emscripten::val canvas = emscripten::val::global(m_canvasId.toUtf8().constData());
+ canvas.call<void>("focus");
}
QWasmScreen::~QWasmScreen()
diff --git a/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp b/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp
index b7ab952a1d..cdb4e407d1 100644
--- a/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp
+++ b/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp
@@ -466,14 +466,14 @@ inline void QWindowsFileDialogSharedData::setSelectedNameFilter(const QString &f
inline QList<QUrl> QWindowsFileDialogSharedData::selectedFiles() const
{
m_data->mutex.lock();
- const QList<QUrl> result = m_data->selectedFiles;
+ const auto result = m_data->selectedFiles;
m_data->mutex.unlock();
return result;
}
inline QString QWindowsFileDialogSharedData::selectedFile() const
{
- const QList<QUrl> files = selectedFiles();
+ const auto files = selectedFiles();
return files.isEmpty() ? QString() : files.front().toLocalFile();
}
diff --git a/src/plugins/platforms/windows/qwindowsdropdataobject.cpp b/src/plugins/platforms/windows/qwindowsdropdataobject.cpp
index e1a41c0ede..c9dd1c7c17 100644
--- a/src/plugins/platforms/windows/qwindowsdropdataobject.cpp
+++ b/src/plugins/platforms/windows/qwindowsdropdataobject.cpp
@@ -95,7 +95,7 @@ bool QWindowsDropDataObject::shouldIgnore(LPFORMATETC pformatetc) const
|| pformatetc->cfFormat == CF_TEXT
|| formatName == QStringLiteral("UniformResourceLocator")
|| formatName == QStringLiteral("UniformResourceLocatorW")) {
- QList<QUrl> urls = dropData->urls();
+ const auto urls = dropData->urls();
return std::all_of(urls.cbegin(), urls.cend(), [] (const QUrl &u) { return u.isLocalFile(); });
}
}
diff --git a/src/plugins/platforms/windows/qwindowsglcontext.cpp b/src/plugins/platforms/windows/qwindowsglcontext.cpp
index 8bf88300e9..f2d31d5783 100644
--- a/src/plugins/platforms/windows/qwindowsglcontext.cpp
+++ b/src/plugins/platforms/windows/qwindowsglcontext.cpp
@@ -196,6 +196,7 @@ bool QWindowsOpengl32DLL::init(bool softwareRendering)
wglShareLists = reinterpret_cast<BOOL (WINAPI *)(HGLRC, HGLRC)>(resolve("wglShareLists"));
wglSwapBuffers = reinterpret_cast<BOOL (WINAPI *)(HDC)>(resolve("wglSwapBuffers"));
wglSetPixelFormat = reinterpret_cast<BOOL (WINAPI *)(HDC, int, const PIXELFORMATDESCRIPTOR *)>(resolve("wglSetPixelFormat"));
+ wglDescribePixelFormat = reinterpret_cast<int (WINAPI *)(HDC, int, UINT, PIXELFORMATDESCRIPTOR *)>(resolve("wglDescribePixelFormat"));
glGetError = reinterpret_cast<GLenum (APIENTRY *)()>(resolve("glGetError"));
glGetIntegerv = reinterpret_cast<void (APIENTRY *)(GLenum , GLint *)>(resolve("glGetIntegerv"));
@@ -214,6 +215,11 @@ BOOL QWindowsOpengl32DLL::setPixelFormat(HDC dc, int pf, const PIXELFORMATDESCRI
return moduleIsNotOpengl32() ? wglSetPixelFormat(dc, pf, pfd) : SetPixelFormat(dc, pf, pfd);
}
+int QWindowsOpengl32DLL::describePixelFormat(HDC dc, int pf, UINT size, PIXELFORMATDESCRIPTOR *pfd)
+{
+ return moduleIsNotOpengl32() ? wglDescribePixelFormat(dc, pf, size, pfd) : DescribePixelFormat(dc, pf, size, pfd);
+}
+
QWindowsOpenGLContext *QOpenGLStaticContext::createContext(QOpenGLContext *context)
{
return new QWindowsGLContext(this, context);
@@ -322,11 +328,11 @@ static inline bool
static void describeFormats(HDC hdc)
{
- const int pfiMax = DescribePixelFormat(hdc, 0, 0, nullptr);
+ const int pfiMax = QOpenGLStaticContext::opengl32.describePixelFormat(hdc, 0, 0, nullptr);
for (int i = 0; i < pfiMax; i++) {
PIXELFORMATDESCRIPTOR pfd;
initPixelFormatDescriptor(&pfd);
- DescribePixelFormat(hdc, i, sizeof(PIXELFORMATDESCRIPTOR), &pfd);
+ QOpenGLStaticContext::opengl32.describePixelFormat(hdc, i, sizeof(PIXELFORMATDESCRIPTOR), &pfd);
qCDebug(lcQpaGl) << '#' << i << '/' << pfiMax << ':' << pfd;
}
}
@@ -617,7 +623,7 @@ static int choosePixelFormat(HDC hdc,
// Verify if format is acceptable. Note that the returned
// formats have been observed to not contain PFD_SUPPORT_OPENGL, ignore.
initPixelFormatDescriptor(obtainedPfd);
- DescribePixelFormat(hdc, pixelFormat, sizeof(PIXELFORMATDESCRIPTOR), obtainedPfd);
+ QOpenGLStaticContext::opengl32.describePixelFormat(hdc, pixelFormat, sizeof(PIXELFORMATDESCRIPTOR), obtainedPfd);
if (!isAcceptableFormat(additional, *obtainedPfd, true)) {
qCDebug(lcQpaGl) << __FUNCTION__ << " obtained px #" << pixelFormat
<< " not acceptable=" << *obtainedPfd;
diff --git a/src/plugins/platforms/windows/qwindowsglcontext.h b/src/plugins/platforms/windows/qwindowsglcontext.h
index 8b0c33f7d5..8794368fe4 100644
--- a/src/plugins/platforms/windows/qwindowsglcontext.h
+++ b/src/plugins/platforms/windows/qwindowsglcontext.h
@@ -89,7 +89,7 @@ struct QWindowsOpenGLContextFormat
QSurfaceFormat::OpenGLContextProfile profile = QSurfaceFormat::NoProfile;
int version = 0; //! majorVersion<<8 + minorVersion
- QSurfaceFormat::FormatOptions options = nullptr;
+ QSurfaceFormat::FormatOptions options;
};
#ifndef QT_NO_DEBUG_STREAM
@@ -107,6 +107,7 @@ struct QWindowsOpengl32DLL
// Wrappers. Always use these instead of SwapBuffers/wglSwapBuffers/etc.
BOOL swapBuffers(HDC dc);
BOOL setPixelFormat(HDC dc, int pf, const PIXELFORMATDESCRIPTOR *pfd);
+ int describePixelFormat(HDC dc, int pf, UINT size, PIXELFORMATDESCRIPTOR *pfd);
// WGL
HGLRC (WINAPI * wglCreateContext)(HDC dc);
@@ -130,6 +131,7 @@ private:
// For Mesa llvmpipe shipped with a name other than opengl32.dll
BOOL (WINAPI * wglSwapBuffers)(HDC dc);
BOOL (WINAPI * wglSetPixelFormat)(HDC dc, int pf, const PIXELFORMATDESCRIPTOR *pfd);
+ int (WINAPI * wglDescribePixelFormat)(HDC dc, int pf, UINT size, PIXELFORMATDESCRIPTOR *pfd);
};
class QOpenGLStaticContext : public QWindowsStaticOpenGLContext
diff --git a/src/plugins/platforms/windows/qwindowskeymapper.cpp b/src/plugins/platforms/windows/qwindowskeymapper.cpp
index 4f0f846749..e3edf7e81e 100644
--- a/src/plugins/platforms/windows/qwindowskeymapper.cpp
+++ b/src/plugins/platforms/windows/qwindowskeymapper.cpp
@@ -1019,14 +1019,14 @@ bool QWindowsKeyMapper::translateKeyEventInternal(QWindow *window, MSG msg,
if (dirStatus == VK_LSHIFT
&& ((msg.wParam == VK_SHIFT && GetKeyState(VK_LCONTROL))
|| (msg.wParam == VK_CONTROL && GetKeyState(VK_LSHIFT)))) {
- sendExtendedPressRelease(receiver, Qt::Key_Direction_L, nullptr,
+ sendExtendedPressRelease(receiver, Qt::Key_Direction_L, {},
scancode, vk_key, nModifiers, QString(), false);
result = true;
dirStatus = 0;
} else if (dirStatus == VK_RSHIFT
&& ( (msg.wParam == VK_SHIFT && GetKeyState(VK_RCONTROL))
|| (msg.wParam == VK_CONTROL && GetKeyState(VK_RSHIFT)))) {
- sendExtendedPressRelease(receiver, Qt::Key_Direction_R, nullptr,
+ sendExtendedPressRelease(receiver, Qt::Key_Direction_R, {},
scancode, vk_key, nModifiers, QString(), false);
result = true;
dirStatus = 0;
@@ -1388,7 +1388,7 @@ QList<int> QWindowsKeyMapper::possibleKeys(const QKeyEvent *e) const
if (key && key != baseKey && ((keyMods & neededMods) == neededMods)) {
const Qt::KeyboardModifiers missingMods = keyMods & ~neededMods;
const int matchedKey = int(key) + missingMods;
- const QList<int>::iterator it =
+ const auto it =
std::find_if(result.begin(), result.end(),
[key] (int k) { return (k & ~Qt::KeyboardModifierMask) == key; });
// QTBUG-67200: Use the match with the least modifiers (prefer
diff --git a/src/plugins/platforms/windows/qwindowsmime.cpp b/src/plugins/platforms/windows/qwindowsmime.cpp
index b9d8b191f5..1c6c999f05 100644
--- a/src/plugins/platforms/windows/qwindowsmime.cpp
+++ b/src/plugins/platforms/windows/qwindowsmime.cpp
@@ -107,7 +107,7 @@ static inline QByteArray msgConversionError(const char *func, const char *format
msg += ": Unable to convert DIB image. The image converter plugin for '";
msg += format;
msg += "' is not available. Available formats: ";
- const QList<QByteArray> &formats = QImageReader::supportedImageFormats();
+ const auto &formats = QImageReader::supportedImageFormats();
for (const QByteArray &af : formats) {
msg += af;
msg += ' ';
@@ -747,7 +747,7 @@ QWindowsMimeURI::QWindowsMimeURI()
bool QWindowsMimeURI::canConvertFromMime(const FORMATETC &formatetc, const QMimeData *mimeData) const
{
if (mimeData->hasUrls() && getCf(formatetc) == CF_HDROP) {
- const QList<QUrl> urls = mimeData->urls();
+ const auto urls = mimeData->urls();
for (const QUrl &url : urls) {
if (url.isLocalFile())
return true;
@@ -760,7 +760,7 @@ bool QWindowsMimeURI::convertFromMime(const FORMATETC &formatetc, const QMimeDat
{
if (canConvertFromMime(formatetc, mimeData)) {
if (getCf(formatetc) == CF_HDROP) {
- const QList<QUrl> &urls = mimeData->urls();
+ const auto &urls = mimeData->urls();
QStringList fileNames;
int size = sizeof(DROPFILES)+2;
for (const QUrl &url : urls) {
@@ -791,7 +791,7 @@ bool QWindowsMimeURI::convertFromMime(const FORMATETC &formatetc, const QMimeDat
return setData(result, pmedium);
}
if (getCf(formatetc) == CF_INETURL_W) {
- QList<QUrl> urls = mimeData->urls();
+ const auto urls = mimeData->urls();
QByteArray result;
if (!urls.isEmpty()) {
QString url = urls.at(0).toString();
@@ -803,7 +803,7 @@ bool QWindowsMimeURI::convertFromMime(const FORMATETC &formatetc, const QMimeDat
return setData(result, pmedium);
}
if (getCf(formatetc) == CF_INETURL) {
- QList<QUrl> urls = mimeData->urls();
+ const auto urls = mimeData->urls();
QByteArray result;
if (!urls.isEmpty())
result = urls.at(0).toString().toLocal8Bit();
diff --git a/src/plugins/platforms/windows/qwindowsmime.h b/src/plugins/platforms/windows/qwindowsmime.h
index 1c389e8800..f8708f1259 100644
--- a/src/plugins/platforms/windows/qwindowsmime.h
+++ b/src/plugins/platforms/windows/qwindowsmime.h
@@ -43,7 +43,6 @@
#include <QtCore/qt_windows.h>
#include <QtCore/qvector.h>
-#include <QtCore/qlist.h>
#include <QtCore/qvariant.h>
QT_BEGIN_NAMESPACE
@@ -95,7 +94,7 @@ public:
private:
void ensureInitialized() const;
- mutable QList<QWindowsMime *> m_mimes;
+ mutable QVector<QWindowsMime *> m_mimes;
mutable int m_internalMimeCount = 0;
};
diff --git a/src/plugins/platforms/windows/qwindowsmousehandler.cpp b/src/plugins/platforms/windows/qwindowsmousehandler.cpp
index 6df5e6aa27..b776efc942 100644
--- a/src/plugins/platforms/windows/qwindowsmousehandler.cpp
+++ b/src/plugins/platforms/windows/qwindowsmousehandler.cpp
@@ -165,7 +165,7 @@ void QWindowsMouseHandler::clearEvents()
Qt::MouseButtons QWindowsMouseHandler::queryMouseButtons()
{
- Qt::MouseButtons result = nullptr;
+ Qt::MouseButtons result;
const bool mouseSwapped = GetSystemMetrics(SM_SWAPBUTTON);
if (GetAsyncKeyState(VK_LBUTTON) < 0)
result |= mouseSwapped ? Qt::RightButton: Qt::LeftButton;
@@ -630,7 +630,7 @@ bool QWindowsMouseHandler::translateTouchEvent(QWindow *window, HWND,
QTouchPointList touchPoints;
touchPoints.reserve(winTouchPointCount);
- Qt::TouchPointStates allStates = nullptr;
+ Qt::TouchPointStates allStates;
GetTouchInputInfo(reinterpret_cast<HTOUCHINPUT>(msg.lParam),
UINT(msg.wParam), winTouchInputs.data(), sizeof(TOUCHINPUT));
diff --git a/src/plugins/platforms/windows/qwindowspointerhandler.cpp b/src/plugins/platforms/windows/qwindowspointerhandler.cpp
index b477147da7..fba24d8696 100644
--- a/src/plugins/platforms/windows/qwindowspointerhandler.cpp
+++ b/src/plugins/platforms/windows/qwindowspointerhandler.cpp
@@ -482,7 +482,7 @@ bool QWindowsPointerHandler::translateTouchEvent(QWindow *window, HWND hwnd,
<< " message=" << Qt::hex << msg.message
<< " count=" << Qt::dec << count;
- Qt::TouchPointStates allStates = nullptr;
+ Qt::TouchPointStates allStates;
for (quint32 i = 0; i < count; ++i) {
if (QWindowsContext::verbose > 1)
diff --git a/src/plugins/platforms/windows/qwindowsscreen.cpp b/src/plugins/platforms/windows/qwindowsscreen.cpp
index df63adf558..4f76a82544 100644
--- a/src/plugins/platforms/windows/qwindowsscreen.cpp
+++ b/src/plugins/platforms/windows/qwindowsscreen.cpp
@@ -73,7 +73,7 @@ static inline QDpi monitorDPI(HMONITOR hMonitor)
return {0, 0};
}
-using WindowsScreenDataList = QList<QWindowsScreenData>;
+using WindowsScreenDataList = QVector<QWindowsScreenData>;
static bool monitorData(HMONITOR hMonitor, QWindowsScreenData *data)
{
@@ -467,7 +467,7 @@ bool QWindowsScreenManager::handleDisplayChange(WPARAM wParam, LPARAM lParam)
return false;
}
-static inline int indexOfMonitor(const QList<QWindowsScreen *> &screens,
+static inline int indexOfMonitor(const QWindowsScreenManager::WindowsScreenList &screens,
const QString &monitorName)
{
for (int i= 0; i < screens.size(); ++i)
@@ -476,7 +476,7 @@ static inline int indexOfMonitor(const QList<QWindowsScreen *> &screens,
return -1;
}
-static inline int indexOfMonitor(const QList<QWindowsScreenData> &screenData,
+static inline int indexOfMonitor(const WindowsScreenDataList &screenData,
const QString &monitorName)
{
for (int i = 0; i < screenData.size(); ++i)
diff --git a/src/plugins/platforms/windows/qwindowsscreen.h b/src/plugins/platforms/windows/qwindowsscreen.h
index 2fd56f53cf..5c095808f2 100644
--- a/src/plugins/platforms/windows/qwindowsscreen.h
+++ b/src/plugins/platforms/windows/qwindowsscreen.h
@@ -127,7 +127,7 @@ private:
class QWindowsScreenManager
{
public:
- using WindowsScreenList = QList<QWindowsScreen *>;
+ using WindowsScreenList = QVector<QWindowsScreen *>;
QWindowsScreenManager();
diff --git a/src/plugins/platforms/windows/qwindowstheme.cpp b/src/plugins/platforms/windows/qwindowstheme.cpp
index 40f9652cbd..32a65109af 100644
--- a/src/plugins/platforms/windows/qwindowstheme.cpp
+++ b/src/plugins/platforms/windows/qwindowstheme.cpp
@@ -164,7 +164,7 @@ public:
QMutexLocker readyLocker(&m_readyMutex);
while (!m_cancelled.loadRelaxed()) {
if (!m_params && !m_cancelled.loadRelaxed()
- && !m_readyCondition.wait(&m_readyMutex, 1000))
+ && !m_readyCondition.wait(&m_readyMutex, QDeadlineTimer(1000ll)))
continue;
if (m_params) {
@@ -189,7 +189,7 @@ public:
CoUninitialize();
}
- bool runWithParams(QShGetFileInfoParams *params, unsigned long timeOutMSecs)
+ bool runWithParams(QShGetFileInfoParams *params, qint64 timeOutMSecs)
{
QMutexLocker doneLocker(&m_doneMutex);
@@ -198,7 +198,7 @@ public:
m_readyCondition.wakeAll();
m_readyMutex.unlock();
- return m_doneCondition.wait(&m_doneMutex, timeOutMSecs);
+ return m_doneCondition.wait(&m_doneMutex, QDeadlineTimer(timeOutMSecs));
}
void cancel()
@@ -220,7 +220,7 @@ private:
static bool shGetFileInfoBackground(const QString &fileName, DWORD attributes,
SHFILEINFO *info, UINT flags,
- unsigned long timeOutMSecs = 5000)
+ qint64 timeOutMSecs = 5000)
{
static QShGetFileInfoThread *getFileInfoThread = nullptr;
if (!getFileInfoThread) {
diff --git a/src/plugins/platforms/windows/qwindowstheme.h b/src/plugins/platforms/windows/qwindowstheme.h
index 07120230ce..7a8c321da4 100644
--- a/src/plugins/platforms/windows/qwindowstheme.h
+++ b/src/plugins/platforms/windows/qwindowstheme.h
@@ -71,7 +71,7 @@ public:
QPixmap standardPixmap(StandardPixmap sp, const QSizeF &size) const override;
- QIcon fileIcon(const QFileInfo &fileInfo, QPlatformTheme::IconOptions iconOptions = nullptr) const override;
+ QIcon fileIcon(const QFileInfo &fileInfo, QPlatformTheme::IconOptions iconOptions = {}) const override;
void windowsThemeChanged(QWindow *window);
void displayChanged() { refreshIconPixmapSizes(); }
diff --git a/src/plugins/platforms/windows/qwindowswindow.cpp b/src/plugins/platforms/windows/qwindowswindow.cpp
index ea91e3bb2d..5a4f879d0f 100644
--- a/src/plugins/platforms/windows/qwindowswindow.cpp
+++ b/src/plugins/platforms/windows/qwindowswindow.cpp
@@ -592,7 +592,7 @@ static QPoint calcPosition(const QWindow *w, const QWindowCreationContextPtr &co
return posFrame;
// Find the original screen containing the coordinates.
- const QList<QScreen *> screens = screenForGL->virtualSiblings();
+ const auto screens = screenForGL->virtualSiblings();
const QScreen *orgScreen = nullptr;
for (QScreen *screen : screens) {
if (screen->handle()->availableGeometry().contains(posFrame)) {
diff --git a/src/plugins/platforms/windows/uiautomation/qwindowsuiaselectionprovider.cpp b/src/plugins/platforms/windows/uiautomation/qwindowsuiaselectionprovider.cpp
index 3305e9c5c4..fb41012cf4 100644
--- a/src/plugins/platforms/windows/uiautomation/qwindowsuiaselectionprovider.cpp
+++ b/src/plugins/platforms/windows/uiautomation/qwindowsuiaselectionprovider.cpp
@@ -49,6 +49,7 @@
#include <QtCore/qloggingcategory.h>
#include <QtCore/qstring.h>
#include <QtCore/qlist.h>
+#include <QtCore/qvector.h>
QT_BEGIN_NAMESPACE
@@ -78,7 +79,7 @@ HRESULT STDMETHODCALLTYPE QWindowsUiaSelectionProvider::GetSelection(SAFEARRAY *
return UIA_E_ELEMENTNOTAVAILABLE;
// First put selected items in a list, then build a safe array with the right size.
- QList<QAccessibleInterface *> selectedList;
+ QVector<QAccessibleInterface *> selectedList;
for (int i = 0; i < accessible->childCount(); ++i) {
if (QAccessibleInterface *child = accessible->child(i)) {
if (child->state().selected) {
diff --git a/src/plugins/platforms/windows/uiautomation/qwindowsuiatableitemprovider.cpp b/src/plugins/platforms/windows/uiautomation/qwindowsuiatableitemprovider.cpp
index 2a94012590..1348ec7cc0 100644
--- a/src/plugins/platforms/windows/uiautomation/qwindowsuiatableitemprovider.cpp
+++ b/src/plugins/platforms/windows/uiautomation/qwindowsuiatableitemprovider.cpp
@@ -80,7 +80,7 @@ HRESULT STDMETHODCALLTYPE QWindowsUiaTableItemProvider::GetRowHeaderItems(SAFEAR
if (!tableCellInterface)
return UIA_E_ELEMENTNOTAVAILABLE;
- QList<QAccessibleInterface *> headers = tableCellInterface->rowHeaderCells();
+ const auto headers = tableCellInterface->rowHeaderCells();
if ((*pRetVal = SafeArrayCreateVector(VT_UNKNOWN, 0, headers.size()))) {
for (LONG i = 0; i < headers.size(); ++i) {
@@ -110,7 +110,7 @@ HRESULT STDMETHODCALLTYPE QWindowsUiaTableItemProvider::GetColumnHeaderItems(SAF
if (!tableCellInterface)
return UIA_E_ELEMENTNOTAVAILABLE;
- QList<QAccessibleInterface *> headers = tableCellInterface->columnHeaderCells();
+ const auto headers = tableCellInterface->columnHeaderCells();
if ((*pRetVal = SafeArrayCreateVector(VT_UNKNOWN, 0, headers.size()))) {
for (LONG i = 0; i < headers.size(); ++i) {
diff --git a/src/plugins/platforms/xcb/gl_integrations/xcb_egl/qxcbeglcontext.h b/src/plugins/platforms/xcb/gl_integrations/xcb_egl/qxcbeglcontext.h
index c3ce8d8745..fda53f17a1 100644
--- a/src/plugins/platforms/xcb/gl_integrations/xcb_egl/qxcbeglcontext.h
+++ b/src/plugins/platforms/xcb/gl_integrations/xcb_egl/qxcbeglcontext.h
@@ -52,7 +52,7 @@ class QXcbEglContext : public QEGLPlatformContext
public:
QXcbEglContext(const QSurfaceFormat &glFormat, QPlatformOpenGLContext *share,
EGLDisplay display, const QVariant &nativeHandle)
- : QEGLPlatformContext(glFormat, share, display, 0, nativeHandle)
+ : QEGLPlatformContext(glFormat, share, display, nullptr, nativeHandle)
{
}
diff --git a/src/plugins/platforms/xcb/gl_integrations/xcb_egl/qxcbeglwindow.cpp b/src/plugins/platforms/xcb/gl_integrations/xcb_egl/qxcbeglwindow.cpp
index 65beac227c..30e3381993 100644
--- a/src/plugins/platforms/xcb/gl_integrations/xcb_egl/qxcbeglwindow.cpp
+++ b/src/plugins/platforms/xcb/gl_integrations/xcb_egl/qxcbeglwindow.cpp
@@ -93,7 +93,7 @@ void QXcbEglWindow::create()
{
QXcbWindow::create();
- m_surface = eglCreateWindowSurface(m_glIntegration->eglDisplay(), m_config, m_window, 0);
+ m_surface = eglCreateWindowSurface(m_glIntegration->eglDisplay(), m_config, m_window, nullptr);
}
QT_END_NAMESPACE
diff --git a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp
index 2b77062b16..57805d5571 100644
--- a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp
+++ b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp
@@ -223,13 +223,13 @@ QGLXContext::QGLXContext(QXcbScreen *screen, const QSurfaceFormat &format, QPlat
const QVariant &nativeHandle)
: QPlatformOpenGLContext()
, m_display(static_cast<Display *>(screen->connection()->xlib_display()))
- , m_config(0)
- , m_context(0)
- , m_shareContext(0)
+ , m_config(nullptr)
+ , m_context(nullptr)
+ , m_shareContext(nullptr)
, m_format(format)
, m_isPBufferCurrent(false)
, m_ownsContext(nativeHandle.isNull())
- , m_getGraphicsResetStatus(0)
+ , m_getGraphicsResetStatus(nullptr)
, m_lost(false)
{
if (nativeHandle.isNull())
@@ -254,14 +254,14 @@ void QGLXContext::init(QXcbScreen *screen, QPlatformOpenGLContext *share)
GLXFBConfig config = qglx_findConfig(m_display, screen->screenNumber(), m_format);
m_config = config;
- XVisualInfo *visualInfo = 0;
+ XVisualInfo *visualInfo = nullptr;
Window window = 0; // Temporary window used to query OpenGL context
if (config) {
const QByteArrayList glxExt = QByteArray(glXQueryExtensionsString(m_display, screen->screenNumber())).split(' ');
// Resolve entry point for glXCreateContextAttribsARB
- glXCreateContextAttribsARBProc glXCreateContextAttribsARB = 0;
+ glXCreateContextAttribsARBProc glXCreateContextAttribsARB = nullptr;
if (glxExt.contains("GLX_ARB_create_context"))
glXCreateContextAttribsARB = (glXCreateContextAttribsARBProc) glXGetProcAddress((const GLubyte*)"glXCreateContextAttribsARB");
@@ -271,7 +271,7 @@ void QGLXContext::init(QXcbScreen *screen, QPlatformOpenGLContext *share)
// Use glXCreateContextAttribsARB if available
// Also, GL ES context creation requires GLX_EXT_create_context_es2_profile
- if (glXCreateContextAttribsARB != 0
+ if (glXCreateContextAttribsARB != nullptr
&& (m_format.renderableType() != QSurfaceFormat::OpenGLES || (supportsProfiles && glxExt.contains("GLX_EXT_create_context_es2_profile")))) {
// Try to create an OpenGL context for each known OpenGL version in descending
// order from the requested version.
@@ -358,9 +358,9 @@ void QGLXContext::init(QXcbScreen *screen, QPlatformOpenGLContext *share)
m_context = glXCreateContextAttribsARB(m_display, config, m_shareContext, true, contextAttributes.data());
if (!m_context && m_shareContext) {
// re-try without a shared glx context
- m_context = glXCreateContextAttribsARB(m_display, config, 0, true, contextAttributes.data());
+ m_context = glXCreateContextAttribsARB(m_display, config, nullptr, true, contextAttributes.data());
if (m_context)
- m_shareContext = 0;
+ m_shareContext = nullptr;
}
}
}
@@ -375,9 +375,9 @@ void QGLXContext::init(QXcbScreen *screen, QPlatformOpenGLContext *share)
m_context = glXCreateNewContext(m_display, config, GLX_RGBA_TYPE, m_shareContext, true);
if (!m_context && m_shareContext) {
// re-try without a shared glx context
- m_context = glXCreateNewContext(m_display, config, GLX_RGBA_TYPE, 0, true);
+ m_context = glXCreateNewContext(m_display, config, GLX_RGBA_TYPE, nullptr, true);
if (m_context)
- m_shareContext = 0;
+ m_shareContext = nullptr;
}
}
@@ -399,7 +399,7 @@ void QGLXContext::init(QXcbScreen *screen, QPlatformOpenGLContext *share)
m_context = glXCreateContext(m_display, visualInfo, m_shareContext, true);
if (!m_context && m_shareContext) {
// re-try without a shared glx context
- m_shareContext = 0;
+ m_shareContext = nullptr;
m_context = glXCreateContext(m_display, visualInfo, nullptr, true);
}
@@ -444,7 +444,7 @@ void QGLXContext::init(QXcbScreen *screen, QPlatformOpenGLContext *share, const
// Legacy contexts created using glXCreateContext are created using a visual
// and the FBConfig cannot be queried. The only way to adapt these contexts
// is to figure out the visual id.
- XVisualInfo *vinfo = 0;
+ XVisualInfo *vinfo = nullptr;
// If the VisualID is provided use it.
VisualID vid = handle.visualId();
if (!vid) {
@@ -464,13 +464,13 @@ void QGLXContext::init(QXcbScreen *screen, QPlatformOpenGLContext *share, const
vinfo = XGetVisualInfo(dpy, VisualScreenMask | VisualIDMask, &v, &n);
if (n < 1) {
XFree(vinfo);
- vinfo = 0;
+ vinfo = nullptr;
}
}
// For contexts created with an FBConfig using the modern functions providing the
// visual or window is not mandatory. Just query the config from the context.
- GLXFBConfig config = 0;
+ GLXFBConfig config = nullptr;
if (!vinfo) {
int configId = 0;
if (glXQueryContext(dpy, context, GLX_FBCONFIG_ID, &configId) != Success) {
@@ -595,8 +595,8 @@ bool QGLXContext::makeCurrent(QPlatformSurface *surface)
if (interval >= 0 && interval != window->swapInterval() && screen) {
typedef void (*qt_glXSwapIntervalEXT)(Display *, GLXDrawable, int);
typedef void (*qt_glXSwapIntervalMESA)(unsigned int);
- static qt_glXSwapIntervalEXT glXSwapIntervalEXT = 0;
- static qt_glXSwapIntervalMESA glXSwapIntervalMESA = 0;
+ static qt_glXSwapIntervalEXT glXSwapIntervalEXT = nullptr;
+ static qt_glXSwapIntervalMESA glXSwapIntervalMESA = nullptr;
static bool resolved = false;
if (!resolved) {
resolved = true;
@@ -621,9 +621,9 @@ bool QGLXContext::makeCurrent(QPlatformSurface *surface)
void QGLXContext::doneCurrent()
{
if (m_isPBufferCurrent)
- glXMakeContextCurrent(m_display, 0, 0, 0);
+ glXMakeContextCurrent(m_display, 0, 0, nullptr);
else
- glXMakeCurrent(m_display, 0, 0);
+ glXMakeCurrent(m_display, 0, nullptr);
m_isPBufferCurrent = false;
}
@@ -658,12 +658,12 @@ QSurfaceFormat QGLXContext::format() const
bool QGLXContext::isSharing() const
{
- return m_shareContext != 0;
+ return m_shareContext != nullptr;
}
bool QGLXContext::isValid() const
{
- return m_context != 0 && !m_lost;
+ return m_context != nullptr && !m_lost;
}
bool QGLXContext::m_queriedDummyContext = false;
@@ -675,7 +675,7 @@ bool QGLXContext::m_supportsThreading = true;
// binary search.
static const char *qglx_threadedgl_blacklist_renderer[] = {
"Chromium", // QTBUG-32225 (initialization fails)
- 0
+ nullptr
};
static const char *qglx_threadedgl_blacklist_vendor[] = {
@@ -695,7 +695,7 @@ void QGLXContext::queryDummyContext()
return;
QOpenGLContext *oldContext = QOpenGLContext::currentContext();
- QSurface *oldSurface = 0;
+ QSurface *oldSurface = nullptr;
if (oldContext)
oldSurface = oldContext->surface();
@@ -732,7 +732,7 @@ void QGLXContext::queryDummyContext()
if (const char *renderer = (const char *) glGetString(GL_RENDERER)) {
for (int i = 0; qglx_threadedgl_blacklist_renderer[i]; ++i) {
- if (strstr(renderer, qglx_threadedgl_blacklist_renderer[i]) != 0) {
+ if (strstr(renderer, qglx_threadedgl_blacklist_renderer[i]) != nullptr) {
qCDebug(lcQpaGl).nospace() << "Multithreaded OpenGL disabled: "
"blacklisted renderer \""
<< qglx_threadedgl_blacklist_renderer[i]
@@ -744,7 +744,7 @@ void QGLXContext::queryDummyContext()
}
if (const char *vendor = (const char *) glGetString(GL_VENDOR)) {
for (int i = 0; qglx_threadedgl_blacklist_vendor[i]; ++i) {
- if (strstr(vendor, qglx_threadedgl_blacklist_vendor[i]) != 0) {
+ if (strstr(vendor, qglx_threadedgl_blacklist_vendor[i]) != nullptr) {
qCDebug(lcQpaGl).nospace() << "Multithreaded OpenGL disabled: "
"blacklisted vendor \""
<< qglx_threadedgl_blacklist_vendor[i]
@@ -759,7 +759,7 @@ void QGLXContext::queryDummyContext()
// Blacklist Mesa drivers due to QTCREATORBUG-10875 (crash in creator),
// QTBUG-34492 (flickering in fullscreen) and QTBUG-38221
const char *mesaVersionStr = nullptr;
- if (strstr(glxvendor, "Mesa Project") != 0) {
+ if (strstr(glxvendor, "Mesa Project") != nullptr) {
mesaVersionStr = (const char *) glGetString(GL_VERSION);
m_supportsThreading = false;
}
diff --git a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qxcbglxintegration.cpp b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qxcbglxintegration.cpp
index 34895caaa2..6814dbd844 100644
--- a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qxcbglxintegration.cpp
+++ b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qxcbglxintegration.cpp
@@ -133,7 +133,7 @@ bool QXcbGlxIntegration::handleXcbEvent(xcb_generic_event_t *event, uint respons
Display *xdisplay = static_cast<Display *>(m_connection->xlib_display());
XLockDisplay(xdisplay);
bool locked = true;
- Bool (*proc)(Display*, XEvent*, xEvent*) = XESetWireToEvent(xdisplay, responseType, 0);
+ Bool (*proc)(Display*, XEvent*, xEvent*) = XESetWireToEvent(xdisplay, responseType, nullptr);
if (proc) {
XESetWireToEvent(xdisplay, responseType, proc);
XEvent dummy;
@@ -212,7 +212,7 @@ QPlatformOffscreenSurface *QXcbGlxIntegration::createPlatformOffscreenSurface(QO
if (glxPbufferUsable)
return new QGLXPbuffer(surface);
else
- return 0; // trigger fallback to hidden QWindow
+ return nullptr; // trigger fallback to hidden QWindow
}
diff --git a/src/plugins/platforms/xcb/qxcbatom.cpp b/src/plugins/platforms/xcb/qxcbatom.cpp
index ecb73cb90b..79b5ba06e6 100644
--- a/src/plugins/platforms/xcb/qxcbatom.cpp
+++ b/src/plugins/platforms/xcb/qxcbatom.cpp
@@ -265,7 +265,7 @@ void QXcbAtom::initializeAllAtoms(xcb_connection_t *connection) {
cookies[i] = xcb_intern_atom(connection, false, strlen(names[i]), names[i]);
for (i = 0; i < QXcbAtom::NAtoms; ++i) {
- xcb_intern_atom_reply_t *reply = xcb_intern_atom_reply(connection, cookies[i], 0);
+ xcb_intern_atom_reply_t *reply = xcb_intern_atom_reply(connection, cookies[i], nullptr);
m_allAtoms[i] = reply->atom;
free(reply);
}
diff --git a/src/plugins/platforms/xcb/qxcbbackingstore.cpp b/src/plugins/platforms/xcb/qxcbbackingstore.cpp
index 741317d766..8f55bc2e96 100644
--- a/src/plugins/platforms/xcb/qxcbbackingstore.cpp
+++ b/src/plugins/platforms/xcb/qxcbbackingstore.cpp
@@ -229,7 +229,7 @@ void QXcbBackingStoreImage::resize(const QSize &size)
m_xcb_format->bits_per_pixel,
0, byteOrder,
XCB_IMAGE_ORDER_MSB_FIRST,
- 0, ~0, 0);
+ nullptr, ~0, nullptr);
const size_t segmentSize = imageDataSize(m_xcb_image);
@@ -412,13 +412,13 @@ bool QXcbBackingStoreImage::createSystemVShmSegment(xcb_connection_t *c, size_t
return false;
}
- void *addr = shmat(id, 0, 0);
+ void *addr = shmat(id, nullptr, 0);
if (addr == (void *)-1) {
qCWarning(lcQpaXcb, "shmat() failed (%d: %s) for id %d", errno, strerror(errno), id);
return false;
}
- if (shmctl(id, IPC_RMID, 0) == -1)
+ if (shmctl(id, IPC_RMID, nullptr) == -1)
qCWarning(lcQpaXcb, "Error while marking the shared memory segment to be destroyed");
const auto seg = xcb_generate_id(c);
@@ -780,7 +780,7 @@ QXcbBackingStore::~QXcbBackingStore()
QPaintDevice *QXcbBackingStore::paintDevice()
{
if (!m_image)
- return 0;
+ return nullptr;
return m_rgbImage.isNull() ? m_image->image() : &m_rgbImage;
}
@@ -1036,7 +1036,7 @@ void QXcbSystemTrayBackingStore::recreateImage(QXcbWindow *win, const QSize &siz
xcb_create_pixmap(xcb_connection(), 32, m_xrenderPixmap, screen->root(), size.width(), size.height());
m_xrenderPicture = xcb_generate_id(xcb_connection());
- xcb_render_create_picture(xcb_connection(), m_xrenderPicture, m_xrenderPixmap, m_xrenderPictFormat, 0, 0);
+ xcb_render_create_picture(xcb_connection(), m_xrenderPicture, m_xrenderPixmap, m_xrenderPictFormat, 0, nullptr);
// XRender expects premultiplied alpha
if (m_image)
@@ -1077,7 +1077,7 @@ void QXcbSystemTrayBackingStore::initXRenderMode()
m_windowPicture = xcb_generate_id(conn);
xcb_void_cookie_t cookie =
- xcb_render_create_picture_checked(conn, m_windowPicture, platformWindow->xcb_window(), vfmt->format, 0, 0);
+ xcb_render_create_picture_checked(conn, m_windowPicture, platformWindow->xcb_window(), vfmt->format, 0, nullptr);
xcb_generic_error_t *error = xcb_request_check(conn, cookie);
if (error) {
qWarning("QXcbSystemTrayBackingStore: Failed to create Picture with format %x for window %x, error code %d",
diff --git a/src/plugins/platforms/xcb/qxcbclipboard.cpp b/src/plugins/platforms/xcb/qxcbclipboard.cpp
index 2cb6720d40..c2d9d060fb 100644
--- a/src/plugins/platforms/xcb/qxcbclipboard.cpp
+++ b/src/plugins/platforms/xcb/qxcbclipboard.cpp
@@ -226,8 +226,8 @@ QXcbClipboard::QXcbClipboard(QXcbConnection *c)
{
Q_ASSERT(QClipboard::Clipboard == 0);
Q_ASSERT(QClipboard::Selection == 1);
- m_clientClipboard[QClipboard::Clipboard] = 0;
- m_clientClipboard[QClipboard::Selection] = 0;
+ m_clientClipboard[QClipboard::Clipboard] = nullptr;
+ m_clientClipboard[QClipboard::Selection] = nullptr;
m_timestamp[QClipboard::Clipboard] = XCB_CURRENT_TIME;
m_timestamp[QClipboard::Selection] = XCB_CURRENT_TIME;
m_owner = connection()->getQtSelectionOwner();
@@ -316,7 +316,7 @@ QClipboard::Mode QXcbClipboard::modeForAtom(xcb_atom_t a) const
QMimeData * QXcbClipboard::mimeData(QClipboard::Mode mode)
{
if (mode > QClipboard::Selection)
- return 0;
+ return nullptr;
xcb_window_t clipboardOwner = getSelectionOwner(atomForMode(mode));
if (clipboardOwner == owner()) {
@@ -334,7 +334,7 @@ void QXcbClipboard::setMimeData(QMimeData *data, QClipboard::Mode mode)
if (mode > QClipboard::Selection)
return;
- QXcbClipboardMime *xClipboard = 0;
+ QXcbClipboardMime *xClipboard = nullptr;
// verify if there is data to be cleared on global X Clipboard.
if (!data) {
xClipboard = qobject_cast<QXcbClipboardMime *>(mimeData(mode));
@@ -353,7 +353,7 @@ void QXcbClipboard::setMimeData(QMimeData *data, QClipboard::Mode mode)
if (m_clientClipboard[mode]) {
if (m_clientClipboard[QClipboard::Clipboard] != m_clientClipboard[QClipboard::Selection])
delete m_clientClipboard[mode];
- m_clientClipboard[mode] = 0;
+ m_clientClipboard[mode] = nullptr;
m_timestamp[mode] = XCB_CURRENT_TIME;
}
@@ -416,7 +416,7 @@ xcb_window_t QXcbClipboard::requestor() const
XCB_WINDOW_CLASS_INPUT_OUTPUT, // window class
platformScreen->screen()->root_visual, // visual
0, // value mask
- 0); // value list
+ nullptr); // value list
QXcbWindow::setWindowTitle(connection(), window,
QStringLiteral("Qt Clipboard Requestor Window"));
@@ -529,7 +529,7 @@ void QXcbClipboard::handleSelectionClearRequest(xcb_selection_clear_event_t *eve
if (newOwner != XCB_NONE) {
if (m_clientClipboard[QClipboard::Clipboard] != m_clientClipboard[QClipboard::Selection])
delete m_clientClipboard[mode];
- m_clientClipboard[mode] = 0;
+ m_clientClipboard[mode] = nullptr;
m_timestamp[mode] = XCB_CURRENT_TIME;
}
}
@@ -576,7 +576,7 @@ void QXcbClipboard::handleSelectionRequest(xcb_selection_request_event_t *req)
xcb_atom_t multipleAtom = atom(QXcbAtom::MULTIPLE);
xcb_atom_t timestampAtom = atom(QXcbAtom::TIMESTAMP);
- struct AtomPair { xcb_atom_t target; xcb_atom_t property; } *multi = 0;
+ struct AtomPair { xcb_atom_t target; xcb_atom_t property; } *multi = nullptr;
xcb_atom_t multi_type = XCB_NONE;
int multi_format = 0;
int nmulti = 0;
@@ -587,7 +587,7 @@ void QXcbClipboard::handleSelectionRequest(xcb_selection_request_event_t *req)
QByteArray multi_data;
if (req->property == XCB_NONE
|| !clipboardReadProperty(req->requestor, req->property, false, &multi_data,
- 0, &multi_type, &multi_format)
+ nullptr, &multi_type, &multi_format)
|| multi_format != 32) {
// MULTIPLE property not formatted correctly
xcb_send_event(xcb_connection(), false, req->requestor, XCB_EVENT_MASK_NO_EVENT, (const char *)&event);
@@ -842,7 +842,7 @@ QByteArray QXcbClipboard::clipboardReadIncrementalProperty(xcb_window_t win, xcb
continue;
prev_time = event->time;
- if (clipboardReadProperty(win, property, true, &tmp_buf, &length, 0, 0)) {
+ if (clipboardReadProperty(win, property, true, &tmp_buf, &length, nullptr, nullptr)) {
if (length == 0) { // no more data, we're done
if (nullterm) {
buf.resize(offset+1);
@@ -900,7 +900,7 @@ QByteArray QXcbClipboard::getSelection(xcb_atom_t selection, xcb_atom_t target,
return buf;
xcb_atom_t type;
- if (clipboardReadProperty(win, property, true, &buf, 0, &type, 0)) {
+ if (clipboardReadProperty(win, property, true, &buf, nullptr, &type, nullptr)) {
if (type == atom(QXcbAtom::INCR)) {
int nbytes = buf.size() >= 4 ? *((int*)buf.data()) : 0;
buf = clipboardReadIncrementalProperty(win, property, nbytes, false);
diff --git a/src/plugins/platforms/xcb/qxcbconnection.cpp b/src/plugins/platforms/xcb/qxcbconnection.cpp
index cac6345b66..435c4aee93 100644
--- a/src/plugins/platforms/xcb/qxcbconnection.cpp
+++ b/src/plugins/platforms/xcb/qxcbconnection.cpp
@@ -66,14 +66,10 @@
#include <errno.h>
#include <xcb/xfixes.h>
-#if QT_CONFIG(xkb)
#define explicit dont_use_cxx_explicit
#include <xcb/xkb.h>
#undef explicit
-#endif
-#if QT_CONFIG(xcb_xinput)
#include <xcb/xinput.h>
-#endif
QT_BEGIN_NAMESPACE
@@ -88,12 +84,6 @@ Q_LOGGING_CATEGORY(lcQpaKeyboard, "qt.qpa.xkeyboard")
Q_LOGGING_CATEGORY(lcQpaClipboard, "qt.qpa.clipboard")
Q_LOGGING_CATEGORY(lcQpaXDnd, "qt.qpa.xdnd")
-// this event type was added in libxcb 1.10,
-// but we support also older version
-#ifndef XCB_GE_GENERIC
-#define XCB_GE_GENERIC 35
-#endif
-
QXcbConnection::QXcbConnection(QXcbNativeInterface *nativeInterface, bool canGrabServer, xcb_visualid_t defaultVisualId, const char *displayName)
: QXcbBasicConnection(displayName)
, m_canGrabServer(canGrabServer)
@@ -112,12 +102,10 @@ QXcbConnection::QXcbConnection(QXcbNativeInterface *nativeInterface, bool canGra
initializeScreens();
-#if QT_CONFIG(xcb_xinput)
if (hasXInput2()) {
xi2SetupDevices();
xi2SelectStateEvents();
}
-#endif
m_wmSupport.reset(new QXcbWMSupport(this));
m_keyboard = new QXcbKeyboard(this);
@@ -196,7 +184,7 @@ QXcbWindow *QXcbConnection::platformWindowFromId(xcb_window_t id)
QXcbWindowEventListener *listener = m_mapper.value(id, 0);
if (listener)
return listener->toWindow();
- return 0;
+ return nullptr;
}
#define HANDLE_PLATFORM_WINDOW_EVENT(event_t, windowMember, handler) \
@@ -467,7 +455,7 @@ void QXcbConnection::printXcbError(const char *message, xcb_generic_error_t *err
static Qt::MouseButtons translateMouseButtons(int s)
{
- Qt::MouseButtons ret = 0;
+ Qt::MouseButtons ret;
if (s & XCB_BUTTON_MASK_1)
ret |= Qt::LeftButton;
if (s & XCB_BUTTON_MASK_2)
@@ -518,7 +506,6 @@ Qt::MouseButton QXcbConnection::translateMouseButton(xcb_button_t s)
}
}
-#if QT_CONFIG(xkb)
namespace {
typedef union {
/* All XKB events share these fields. */
@@ -534,7 +521,6 @@ namespace {
xcb_xkb_state_notify_event_t state_notify;
} _xkb_event;
}
-#endif
void QXcbConnection::handleXcbEvent(xcb_generic_event_t *event)
{
@@ -611,16 +597,12 @@ void QXcbConnection::handleXcbEvent(xcb_generic_event_t *event)
HANDLE_PLATFORM_WINDOW_EVENT(xcb_client_message_event_t, window, handleClientMessageEvent);
}
case XCB_ENTER_NOTIFY:
-#if QT_CONFIG(xcb_xinput)
if (hasXInput2() && !xi2MouseEventsDisabled())
break;
-#endif
HANDLE_PLATFORM_WINDOW_EVENT(xcb_enter_notify_event_t, event, handleEnterNotifyEvent);
case XCB_LEAVE_NOTIFY:
-#if QT_CONFIG(xcb_xinput)
if (hasXInput2() && !xi2MouseEventsDisabled())
break;
-#endif
m_keyboard->updateXKBStateFromCore(reinterpret_cast<xcb_leave_notify_event_t *>(event)->state);
HANDLE_PLATFORM_WINDOW_EVENT(xcb_leave_notify_event_t, event, handleLeaveNotifyEvent);
case XCB_FOCUS_IN:
@@ -682,13 +664,11 @@ void QXcbConnection::handleXcbEvent(xcb_generic_event_t *event)
}
break;
}
-#if QT_CONFIG(xcb_xinput)
case XCB_GE_GENERIC:
// Here the windowEventListener is invoked from xi2HandleEvent()
if (hasXInput2() && isXIEvent(event))
xi2HandleEvent(reinterpret_cast<xcb_ge_event_t *>(event));
break;
-#endif
default:
handled = false; // event type not recognized
break;
@@ -712,7 +692,6 @@ void QXcbConnection::handleXcbEvent(xcb_generic_event_t *event)
auto change_event = reinterpret_cast<xcb_randr_screen_change_notify_event_t *>(event);
if (auto virtualDesktop = virtualDesktopForRootWindow(change_event->root))
virtualDesktop->handleScreenChange(change_event);
-#if QT_CONFIG(xkb)
} else if (isXkbType(response_type)) {
auto xkb_event = reinterpret_cast<_xkb_event *>(event);
if (xkb_event->any.deviceID == m_keyboard->coreDeviceId()) {
@@ -735,7 +714,6 @@ void QXcbConnection::handleXcbEvent(xcb_generic_event_t *event)
break;
}
}
-#endif
} else {
handled = false; // event type still not recognized
}
@@ -825,7 +803,7 @@ xcb_window_t QXcbConnection::getQtSelectionOwner()
XCB_WINDOW_CLASS_INPUT_OUTPUT, // window class
xcbScreen->root_visual, // visual
0, // value mask
- 0); // value list
+ nullptr); // value list
QXcbWindow::setWindowTitle(connection(), m_qtSelectionOwner,
QLatin1String("Qt Selection Owner for ") + QCoreApplication::applicationName());
@@ -852,7 +830,7 @@ xcb_window_t QXcbConnection::clientLeader()
0,
XCB_WINDOW_CLASS_INPUT_OUTPUT,
screen->screen()->root_visual,
- 0, 0);
+ 0, nullptr);
QXcbWindow::setWindowTitle(connection(), m_clientLeader,
@@ -912,7 +890,6 @@ bool QXcbConnection::compressEvent(xcb_generic_event_t *event) const
});
}
-#if QT_CONFIG(xcb_xinput)
// compress XI_* events
if (responseType == XCB_GE_GENERIC) {
if (!hasXInput2())
@@ -948,7 +925,6 @@ bool QXcbConnection::compressEvent(xcb_generic_event_t *event) const
return false;
}
-#endif
if (responseType == XCB_CONFIGURE_NOTIFY) {
// compress multiple configure notify events for the same window
@@ -978,7 +954,6 @@ bool QXcbConnection::isUserInputEvent(xcb_generic_event_t *event) const
if (isInputEvent)
return true;
-#if QT_CONFIG(xcb_xinput)
if (connection()->hasXInput2()) {
isInputEvent = isXIType(event, XCB_INPUT_BUTTON_PRESS) ||
isXIType(event, XCB_INPUT_BUTTON_RELEASE) ||
@@ -993,7 +968,6 @@ bool QXcbConnection::isUserInputEvent(xcb_generic_event_t *event) const
}
if (isInputEvent)
return true;
-#endif
if (eventType == XCB_CLIENT_MESSAGE) {
auto clientMessage = reinterpret_cast<const xcb_client_message_event_t *>(event);
@@ -1057,7 +1031,7 @@ void QXcbConnection::sync()
{
// from xcb_aux_sync
xcb_get_input_focus_cookie_t cookie = xcb_get_input_focus(xcb_connection());
- free(xcb_get_input_focus_reply(xcb_connection(), cookie, 0));
+ free(xcb_get_input_focus_reply(xcb_connection(), cookie, nullptr));
}
QXcbSystemTrayTracker *QXcbConnection::systemTrayTracker() const
@@ -1075,14 +1049,14 @@ QXcbSystemTrayTracker *QXcbConnection::systemTrayTracker() const
Qt::MouseButtons QXcbConnection::queryMouseButtons() const
{
int stateMask = 0;
- QXcbCursor::queryPointer(connection(), 0, 0, &stateMask);
+ QXcbCursor::queryPointer(connection(), nullptr, nullptr, &stateMask);
return translateMouseButtons(stateMask);
}
Qt::KeyboardModifiers QXcbConnection::queryKeyboardModifiers() const
{
int stateMask = 0;
- QXcbCursor::queryPointer(connection(), 0, 0, &stateMask);
+ QXcbCursor::queryPointer(connection(), nullptr, nullptr, &stateMask);
return keyboard()->translateModifiers(stateMask);
}
@@ -1140,7 +1114,7 @@ void QXcbSyncWindowRequest::invalidate()
{
if (m_window) {
m_window->clearSyncWindowRequest();
- m_window = 0;
+ m_window = nullptr;
}
}
@@ -1160,7 +1134,7 @@ void QXcbConnectionGrabber::release()
{
if (m_connection) {
m_connection->ungrabServer();
- m_connection = 0;
+ m_connection = nullptr;
}
}
diff --git a/src/plugins/platforms/xcb/qxcbconnection.h b/src/plugins/platforms/xcb/qxcbconnection.h
index 7cf25d41a6..2d89b971dc 100644
--- a/src/plugins/platforms/xcb/qxcbconnection.h
+++ b/src/plugins/platforms/xcb/qxcbconnection.h
@@ -104,10 +104,8 @@ public:
virtual void handleFocusInEvent(const xcb_focus_in_event_t *) {}
virtual void handleFocusOutEvent(const xcb_focus_out_event_t *) {}
virtual void handlePropertyNotifyEvent(const xcb_property_notify_event_t *) {}
-#if QT_CONFIG(xcb_xinput)
virtual void handleXIMouseEvent(xcb_ge_event_t *, Qt::MouseEventSource = Qt::MouseEventNotSynthesized) {}
virtual void handleXIEnterLeave(xcb_ge_event_t *) {}
-#endif
virtual QXcbWindow *toWindow() { return nullptr; }
};
@@ -129,7 +127,7 @@ class Q_XCB_EXPORT QXcbConnection : public QXcbBasicConnection
{
Q_OBJECT
public:
- QXcbConnection(QXcbNativeInterface *nativeInterface, bool canGrabServer, xcb_visualid_t defaultVisualId, const char *displayName = 0);
+ QXcbConnection(QXcbNativeInterface *nativeInterface, bool canGrabServer, xcb_visualid_t defaultVisualId, const char *displayName = nullptr);
~QXcbConnection();
QXcbConnection *connection() const { return const_cast<QXcbConnection *>(this); }
@@ -225,7 +223,6 @@ public:
bool isUserInputEvent(xcb_generic_event_t *event) const;
-#if QT_CONFIG(xcb_xinput)
void xi2SelectStateEvents();
void xi2SelectDeviceEvents(xcb_window_t window);
void xi2SelectDeviceEventsCompatibility(xcb_window_t window);
@@ -236,7 +233,6 @@ public:
bool startSystemMoveResizeForTouchBegin(xcb_window_t window, const QPoint &point, int corner);
void abortSystemMoveResizeForTouch();
bool isTouchScreen(int id);
-#endif
bool canGrab() const { return m_canGrabServer; }
@@ -267,7 +263,6 @@ private:
inline bool timeGreaterThan(xcb_timestamp_t a, xcb_timestamp_t b) const
{ return static_cast<int32_t>(a - b) > 0 || b == XCB_CURRENT_TIME; }
-#if QT_CONFIG(xcb_xinput)
void xi2SetupDevice(void *info, bool removeExisting = true);
void xi2SetupDevices();
struct TouchDeviceData {
@@ -299,7 +294,7 @@ private:
int deviceId = 0;
QTabletEvent::PointerType pointerType = QTabletEvent::UnknownPointer;
QTabletEvent::TabletDevice tool = QTabletEvent::Stylus;
- Qt::MouseButtons buttons = 0;
+ Qt::MouseButtons buttons;
qint64 serialId = 0;
bool inProximity = false;
struct ValuatorClassInfo {
@@ -323,8 +318,8 @@ private:
int horizontalIndex = 0;
double verticalIncrement = 0;
double horizontalIncrement = 0;
- Qt::Orientations orientations = 0;
- Qt::Orientations legacyOrientations = 0;
+ Qt::Orientations orientations;
+ Qt::Orientations legacyOrientations;
QPointF lastScrollPosition;
};
QHash<int, ScrollingDevice> m_scrollingDevices;
@@ -341,7 +336,6 @@ private:
uint32_t pointid;
int corner;
} m_startSystemMoveResizeInfo;
-#endif // QT_CONFIG(xcb_xinput)
const bool m_canGrabServer;
const xcb_visualid_t m_defaultVisualId;
@@ -366,7 +360,7 @@ private:
WindowMapper m_mapper;
- Qt::MouseButtons m_buttonState = nullptr;
+ Qt::MouseButtons m_buttonState;
Qt::MouseButton m_button = Qt::NoButton;
QXcbWindow *m_focusWindow = nullptr;
@@ -389,12 +383,10 @@ private:
QTimer m_focusInTimer;
};
-#if QT_CONFIG(xcb_xinput)
#if QT_CONFIG(tabletevent)
Q_DECLARE_TYPEINFO(QXcbConnection::TabletData::ValuatorClassInfo, Q_PRIMITIVE_TYPE);
Q_DECLARE_TYPEINFO(QXcbConnection::TabletData, Q_MOVABLE_TYPE);
#endif
-#endif
class QXcbConnectionGrabber
{
diff --git a/src/plugins/platforms/xcb/qxcbconnection_basic.cpp b/src/plugins/platforms/xcb/qxcbconnection_basic.cpp
index 9a028e5a7e..18dee89adb 100644
--- a/src/plugins/platforms/xcb/qxcbconnection_basic.cpp
+++ b/src/plugins/platforms/xcb/qxcbconnection_basic.cpp
@@ -45,14 +45,10 @@
#include <xcb/xfixes.h>
#include <xcb/xinerama.h>
#include <xcb/render.h>
-#if QT_CONFIG(xcb_xinput)
#include <xcb/xinput.h>
-#endif
-#if QT_CONFIG(xkb)
#define explicit dont_use_cxx_explicit
#include <xcb/xkb.h>
#undef explicit
-#endif
#if QT_CONFIG(xcb_xlib)
#define register /* C++17 deprecated register */
@@ -97,7 +93,7 @@ static int nullErrorHandler(Display *dpy, XErrorEvent *err)
static int ioErrorHandler(Display *dpy)
{
xcb_connection_t *conn = XGetXCBConnection(dpy);
- if (conn != NULL) {
+ if (conn != nullptr) {
/* Print a message with a textual description of the error */
int code = xcb_connection_has_error(conn);
const char *str = "Unknown error";
@@ -138,14 +134,7 @@ QXcbBasicConnection::QXcbBasicConnection(const char *displayName)
xcb_extension_t *extensions[] = {
&xcb_shm_id, &xcb_xfixes_id, &xcb_randr_id, &xcb_shape_id, &xcb_sync_id,
- &xcb_render_id,
-#if QT_CONFIG(xkb)
- &xcb_xkb_id,
-#endif
-#if QT_CONFIG(xcb_xinput)
- &xcb_input_id,
-#endif
- 0
+ &xcb_render_id, &xcb_xkb_id, &xcb_input_id, nullptr
};
for (xcb_extension_t **ext_it = extensions; *ext_it; ++ext_it)
@@ -160,10 +149,8 @@ QXcbBasicConnection::QXcbBasicConnection(const char *displayName)
initializeXinerama();
initializeXFixes();
initializeXRender();
-#if QT_CONFIG(xcb_xinput)
if (!qEnvironmentVariableIsSet("QT_XCB_NO_XI2"))
initializeXInput2();
-#endif
initializeXShape();
initializeXKB();
}
@@ -213,7 +200,6 @@ bool QXcbBasicConnection::hasBigRequest() const
return m_maximumRequestLength > m_setup->maximum_request_length;
}
-#if QT_CONFIG(xcb_xinput)
// Starting from the xcb version 1.9.3 struct xcb_ge_event_t has changed:
// - "pad0" became "extension"
// - "pad1" and "pad" became "pad0"
@@ -240,7 +226,6 @@ bool QXcbBasicConnection::isXIType(xcb_generic_event_t *event, uint16_t type) co
auto *e = reinterpret_cast<qt_xcb_ge_event_t *>(event);
return e->event_type == type;
}
-#endif // QT_CONFIG(xcb_xinput)
bool QXcbBasicConnection::isXFixesType(uint responseType, int eventType) const
{
@@ -370,7 +355,6 @@ void QXcbBasicConnection::initializeXRandr()
m_xrandrFirstEvent = reply->first_event;
}
-#if QT_CONFIG(xcb_xinput)
void QXcbBasicConnection::initializeXInput2()
{
const xcb_query_extension_reply_t *reply = xcb_get_extension_data(m_xcbConnection, &xcb_input_id);
@@ -393,7 +377,6 @@ void QXcbBasicConnection::initializeXInput2()
m_xinputFirstEvent = reply->first_event;
m_xi2Minor = xinputQuery->minor_version;
}
-#endif
void QXcbBasicConnection::initializeXShape()
{
@@ -417,7 +400,6 @@ void QXcbBasicConnection::initializeXShape()
void QXcbBasicConnection::initializeXKB()
{
-#if QT_CONFIG(xkb)
const xcb_query_extension_reply_t *reply = xcb_get_extension_data(m_xcbConnection, &xcb_xkb_id);
if (!reply || !reply->present) {
qCWarning(lcQpaXcb, "XKeyboard extension not present on the X server");
@@ -439,7 +421,6 @@ void QXcbBasicConnection::initializeXKB()
m_hasXkb = true;
m_xkbFirstEvent = reply->first_event;
-#endif
}
QT_END_NAMESPACE
diff --git a/src/plugins/platforms/xcb/qxcbconnection_basic.h b/src/plugins/platforms/xcb/qxcbconnection_basic.h
index 1bd4310562..109186f966 100644
--- a/src/plugins/platforms/xcb/qxcbconnection_basic.h
+++ b/src/plugins/platforms/xcb/qxcbconnection_basic.h
@@ -99,12 +99,10 @@ public:
bool hasXinerama() const { return m_hasXinerama; }
bool hasBigRequest() const;
-#if QT_CONFIG(xcb_xinput)
bool isAtLeastXI21() const { return m_xi2Enabled && m_xi2Minor >= 1; }
bool isAtLeastXI22() const { return m_xi2Enabled && m_xi2Minor >= 2; }
bool isXIEvent(xcb_generic_event_t *event) const;
bool isXIType(xcb_generic_event_t *event, uint16_t type) const;
-#endif
bool isXFixesType(uint responseType, int eventType) const;
bool isXRandrType(uint responseType, int eventType) const;
@@ -119,9 +117,7 @@ protected:
void initializeXShape();
void initializeXKB();
void initializeXSync();
-#if QT_CONFIG(xcb_xinput)
void initializeXInput2();
-#endif
private:
#if QT_CONFIG(xcb_xlib)
@@ -147,11 +143,9 @@ private:
QPair<int, int> m_xrenderVersion;
bool m_xi2Enabled = false;
-#if QT_CONFIG(xcb_xinput)
int m_xi2Minor = -1;
int m_xiOpCode = -1;
uint32_t m_xinputFirstEvent = 0;
-#endif
uint32_t m_xfixesFirstEvent = 0;
uint32_t m_xrandrFirstEvent = 0;
diff --git a/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp b/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
index 4639185416..bd62460b96 100644
--- a/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
+++ b/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
@@ -166,7 +166,7 @@ void QXcbConnection::xi2SetupDevice(void *info, bool removeExisting)
}
case XCB_INPUT_DEVICE_CLASS_TYPE_BUTTON: {
auto *bci = reinterpret_cast<xcb_input_button_class_t *>(classinfo);
- xcb_atom_t *labels = 0;
+ xcb_atom_t *labels = nullptr;
if (bci->num_buttons >= 5) {
labels = xcb_input_button_class_labels(bci);
xcb_atom_t label4 = labels[3];
@@ -424,7 +424,7 @@ QXcbConnection::TouchDeviceData *QXcbConnection::touchDeviceForId(int id)
QXcbConnection::TouchDeviceData *QXcbConnection::populateTouchDevices(void *info)
{
auto *deviceinfo = reinterpret_cast<xcb_input_xi_device_info_t *>(info);
- QTouchDevice::Capabilities caps = 0;
+ QTouchDevice::Capabilities caps;
int type = -1;
int maxTouchPoints = 1;
bool isTouchDevice = false;
@@ -527,7 +527,7 @@ void QXcbConnection::xi2HandleEvent(xcb_ge_event_t *event)
int sourceDeviceId = xiEvent->deviceid; // may be the master id
qt_xcb_input_device_event_t *xiDeviceEvent = nullptr;
xcb_input_enter_event_t *xiEnterEvent = nullptr;
- QXcbWindowEventListener *eventListener = 0;
+ QXcbWindowEventListener *eventListener = nullptr;
switch (xiEvent->event_type) {
case XCB_INPUT_BUTTON_PRESS:
diff --git a/src/plugins/platforms/xcb/qxcbcursor.cpp b/src/plugins/platforms/xcb/qxcbcursor.cpp
index fbadab4d50..639e4f039c 100644
--- a/src/plugins/platforms/xcb/qxcbcursor.cpp
+++ b/src/plugins/platforms/xcb/qxcbcursor.cpp
@@ -67,10 +67,10 @@ enum {
};
#undef CursorShape
-static PtrXcursorLibraryLoadCursor ptrXcursorLibraryLoadCursor = 0;
-static PtrXcursorLibraryGetTheme ptrXcursorLibraryGetTheme = 0;
-static PtrXcursorLibrarySetTheme ptrXcursorLibrarySetTheme = 0;
-static PtrXcursorLibraryGetDefaultSize ptrXcursorLibraryGetDefaultSize = 0;
+static PtrXcursorLibraryLoadCursor ptrXcursorLibraryLoadCursor = nullptr;
+static PtrXcursorLibraryGetTheme ptrXcursorLibraryGetTheme = nullptr;
+static PtrXcursorLibrarySetTheme ptrXcursorLibrarySetTheme = nullptr;
+static PtrXcursorLibraryGetDefaultSize ptrXcursorLibraryGetDefaultSize = nullptr;
#endif
static xcb_font_t cursorFont = 0;
@@ -118,7 +118,7 @@ static const uint8_t mcur_fdiag_bits[] = {
static const uint8_t *cursor_bits16[] = {
cur_ver_bits, mcur_ver_bits, cur_hor_bits, mcur_hor_bits,
cur_bdiag_bits, mcur_bdiag_bits, cur_fdiag_bits, mcur_fdiag_bits,
- 0, 0, cur_blank_bits, cur_blank_bits };
+ nullptr, nullptr, cur_blank_bits, cur_blank_bits };
static const uint8_t vsplit_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -219,7 +219,7 @@ static const uint8_t busym_bits[] = {
static const uint8_t * const cursor_bits32[] = {
vsplit_bits, vsplitm_bits, hsplit_bits, hsplitm_bits,
- 0, 0, 0, 0, whatsthis_bits, whatsthism_bits, busy_bits, busym_bits
+ nullptr, nullptr, nullptr, nullptr, whatsthis_bits, whatsthism_bits, busy_bits, busym_bits
};
static const uint8_t forbidden_bits[] = {
@@ -452,19 +452,19 @@ xcb_cursor_t QXcbCursor::createNonStandardCursor(int cshape)
if (cshape == Qt::BlankCursor) {
xcb_pixmap_t cp = xcb_create_pixmap_from_bitmap_data(conn, m_screen->root(), cur_blank_bits, 16, 16,
- 1, 0, 0, 0);
+ 1, 0, 0, nullptr);
xcb_pixmap_t mp = xcb_create_pixmap_from_bitmap_data(conn, m_screen->root(), cur_blank_bits, 16, 16,
- 1, 0, 0, 0);
+ 1, 0, 0, nullptr);
cursor = xcb_generate_id(conn);
xcb_create_cursor(conn, cursor, cp, mp, 0, 0, 0, 0xFFFF, 0xFFFF, 0xFFFF, 8, 8);
} else if (cshape >= Qt::SizeVerCursor && cshape < Qt::SizeAllCursor) {
int i = (cshape - Qt::SizeVerCursor) * 2;
xcb_pixmap_t pm = xcb_create_pixmap_from_bitmap_data(conn, m_screen->root(),
const_cast<uint8_t*>(cursor_bits16[i]),
- 16, 16, 1, 0, 0, 0);
+ 16, 16, 1, 0, 0, nullptr);
xcb_pixmap_t pmm = xcb_create_pixmap_from_bitmap_data(conn, m_screen->root(),
const_cast<uint8_t*>(cursor_bits16[i + 1]),
- 16, 16, 1, 0, 0, 0);
+ 16, 16, 1, 0, 0, nullptr);
cursor = xcb_generate_id(conn);
xcb_create_cursor(conn, cursor, pm, pmm, 0, 0, 0, 0xFFFF, 0xFFFF, 0xFFFF, 8, 8);
} else if ((cshape >= Qt::SplitVCursor && cshape <= Qt::SplitHCursor)
@@ -472,10 +472,10 @@ xcb_cursor_t QXcbCursor::createNonStandardCursor(int cshape)
int i = (cshape - Qt::SplitVCursor) * 2;
xcb_pixmap_t pm = xcb_create_pixmap_from_bitmap_data(conn, m_screen->root(),
const_cast<uint8_t*>(cursor_bits32[i]),
- 32, 32, 1, 0, 0, 0);
+ 32, 32, 1, 0, 0, nullptr);
xcb_pixmap_t pmm = xcb_create_pixmap_from_bitmap_data(conn, m_screen->root(),
const_cast<uint8_t*>(cursor_bits32[i + 1]),
- 32, 32, 1, 0, 0, 0);
+ 32, 32, 1, 0, 0, nullptr);
int hs = (cshape == Qt::PointingHandCursor || cshape == Qt::WhatsThisCursor
|| cshape == Qt::BusyCursor) ? 0 : 16;
cursor = xcb_generate_id(conn);
@@ -484,20 +484,20 @@ xcb_cursor_t QXcbCursor::createNonStandardCursor(int cshape)
int i = (cshape - Qt::ForbiddenCursor) * 2;
xcb_pixmap_t pm = xcb_create_pixmap_from_bitmap_data(conn, m_screen->root(),
const_cast<uint8_t*>(cursor_bits20[i]),
- 20, 20, 1, 0, 0, 0);
+ 20, 20, 1, 0, 0, nullptr);
xcb_pixmap_t pmm = xcb_create_pixmap_from_bitmap_data(conn, m_screen->root(),
const_cast<uint8_t*>(cursor_bits20[i + 1]),
- 20, 20, 1, 0, 0, 0);
+ 20, 20, 1, 0, 0, nullptr);
cursor = xcb_generate_id(conn);
xcb_create_cursor(conn, cursor, pm, pmm, 0, 0, 0, 0xFFFF, 0xFFFF, 0xFFFF, 10, 10);
} else if (cshape == Qt::OpenHandCursor || cshape == Qt::ClosedHandCursor) {
bool open = cshape == Qt::OpenHandCursor;
xcb_pixmap_t pm = xcb_create_pixmap_from_bitmap_data(conn, m_screen->root(),
const_cast<uint8_t*>(open ? openhand_bits : closedhand_bits),
- 16, 16, 1, 0, 0, 0);
+ 16, 16, 1, 0, 0, nullptr);
xcb_pixmap_t pmm = xcb_create_pixmap_from_bitmap_data(conn, m_screen->root(),
const_cast<uint8_t*>(open ? openhandm_bits : closedhandm_bits),
- 16, 16, 1, 0, 0, 0);
+ 16, 16, 1, 0, 0, nullptr);
cursor = xcb_generate_id(conn);
xcb_create_cursor(conn, cursor, pm, pmm, 0, 0, 0, 0xFFFF, 0xFFFF, 0xFFFF, 8, 8);
} else if (cshape == Qt::DragCopyCursor || cshape == Qt::DragMoveCursor
@@ -660,14 +660,14 @@ void QXcbCursor::queryPointer(QXcbConnection *c, QXcbVirtualDesktop **virtualDes
QPoint QXcbCursor::pos() const
{
QPoint p;
- queryPointer(connection(), 0, &p);
+ queryPointer(connection(), nullptr, &p);
return p;
}
void QXcbCursor::setPos(const QPoint &pos)
{
QXcbVirtualDesktop *virtualDesktop = nullptr;
- queryPointer(connection(), &virtualDesktop, 0);
+ queryPointer(connection(), &virtualDesktop, nullptr);
xcb_warp_pointer(xcb_connection(), XCB_NONE, virtualDesktop->root(), 0, 0, 0, 0, pos.x(), pos.y());
xcb_flush(xcb_connection());
}
diff --git a/src/plugins/platforms/xcb/qxcbdrag.cpp b/src/plugins/platforms/xcb/qxcbdrag.cpp
index 3d525598ca..47d58fa880 100644
--- a/src/plugins/platforms/xcb/qxcbdrag.cpp
+++ b/src/plugins/platforms/xcb/qxcbdrag.cpp
@@ -148,7 +148,7 @@ void QXcbDrag::init()
source_time = XCB_CURRENT_TIME;
target_time = XCB_CURRENT_TIME;
- QXcbCursor::queryPointer(connection(), &current_virtual_desktop, 0);
+ QXcbCursor::queryPointer(connection(), &current_virtual_desktop, nullptr);
drag_types.clear();
//current_embedding_widget = 0;
@@ -384,13 +384,13 @@ void QXcbDrag::move(const QPoint &globalPos, Qt::MouseButtons b, Qt::KeyboardMod
if (!findXdndAwareTarget(globalPos, &target))
return;
- QXcbWindow *w = 0;
+ QXcbWindow *w = nullptr;
if (target) {
w = connection()->platformWindowFromId(target);
if (w && (w->window()->type() == Qt::Desktop) /*&& !w->acceptDrops()*/)
- w = 0;
+ w = nullptr;
} else {
- w = 0;
+ w = nullptr;
target = current_virtual_desktop->root();
}
@@ -522,7 +522,7 @@ void QXcbDrag::drop(const QPoint &globalPos, Qt::MouseButtons b, Qt::KeyboardMod
QXcbWindow *w = connection()->platformWindowFromId(current_proxy_target);
if (w && w->window()->type() == Qt::Desktop) // && !w->acceptDrops()
- w = 0;
+ w = nullptr;
Transaction t = {
connection()->time(),
@@ -716,7 +716,7 @@ void QXcbDrag::handle_xdnd_position(QPlatformWindow *w, const xcb_client_message
target_time = e->data.data32[3];
}
- QMimeData *dropData = 0;
+ QMimeData *dropData = nullptr;
Qt::DropActions supported_actions = Qt::IgnoreAction;
if (currentDrag()) {
dropData = currentDrag()->mimeData();
@@ -883,7 +883,7 @@ void QXcbDrag::handleLeave(QPlatformWindow *w, const xcb_client_message_event_t
event->data.data32[0], xdnd_dragsource);
}
- QWindowSystemInterface::handleDrag(w->window(), nullptr, QPoint(), Qt::IgnoreAction, 0, 0);
+ QWindowSystemInterface::handleDrag(w->window(), nullptr, QPoint(), Qt::IgnoreAction, { }, { });
}
void QXcbDrag::send_leave()
@@ -911,7 +911,7 @@ void QXcbDrag::send_leave()
QXcbWindow *w = connection()->platformWindowFromId(current_proxy_target);
if (w && (w->window()->type() == Qt::Desktop) /*&& !w->acceptDrops()*/)
- w = 0;
+ w = nullptr;
qCDebug(lcQpaXDnd) << "sending XdndLeave to target:" << current_target;
@@ -945,7 +945,7 @@ void QXcbDrag::handleDrop(QPlatformWindow *, const xcb_client_message_event_t *e
target_time = l[2];
Qt::DropActions supported_drop_actions;
- QMimeData *dropData = 0;
+ QMimeData *dropData = nullptr;
if (currentDrag()) {
dropData = currentDrag()->mimeData();
supported_drop_actions = Qt::DropActions(l[4]);
@@ -1152,7 +1152,7 @@ void QXcbDrag::handleSelectionRequest(const xcb_selection_request_event_t *event
}
}
- QDrag *transactionDrag = 0;
+ QDrag *transactionDrag = nullptr;
if (at >= 0) {
transactionDrag = transactions.at(at).drag;
} else if (at == -2) {
@@ -1222,7 +1222,7 @@ bool QXcbDrag::dndEnable(QXcbWindow *w, bool on)
if (w->window()->type() == Qt::Desktop) {
xcb_delete_property(xcb_connection(), w->xcb_window(), atom(QXcbAtom::XdndProxy));
delete desktop_proxy;
- desktop_proxy = 0;
+ desktop_proxy = nullptr;
} else {
qCDebug(lcQpaXDnd) << "not deleting XDndAware";
}
diff --git a/src/plugins/platforms/xcb/qxcbdrag.h b/src/plugins/platforms/xcb/qxcbdrag.h
index 1388e68acc..7bef7a818a 100644
--- a/src/plugins/platforms/xcb/qxcbdrag.h
+++ b/src/plugins/platforms/xcb/qxcbdrag.h
@@ -86,7 +86,7 @@ public:
void handlePosition(QPlatformWindow *w, const xcb_client_message_event_t *event);
void handleLeave(QPlatformWindow *w, const xcb_client_message_event_t *event);
void handleDrop(QPlatformWindow *, const xcb_client_message_event_t *event,
- Qt::MouseButtons b = nullptr, Qt::KeyboardModifiers mods = nullptr);
+ Qt::MouseButtons b = { }, Qt::KeyboardModifiers mods = { });
void handleStatus(const xcb_client_message_event_t *event);
void handleSelectionRequest(const xcb_selection_request_event_t *event);
@@ -109,7 +109,7 @@ private:
void init();
void handle_xdnd_position(QPlatformWindow *w, const xcb_client_message_event_t *event,
- Qt::MouseButtons b = nullptr, Qt::KeyboardModifiers mods = nullptr);
+ Qt::MouseButtons b = { }, Qt::KeyboardModifiers mods = { });
void handle_xdnd_status(const xcb_client_message_event_t *event);
void send_leave();
diff --git a/src/plugins/platforms/xcb/qxcbimage.cpp b/src/plugins/platforms/xcb/qxcbimage.cpp
index 8f33e6ed31..b0e610dd51 100644
--- a/src/plugins/platforms/xcb/qxcbimage.cpp
+++ b/src/plugins/platforms/xcb/qxcbimage.cpp
@@ -221,7 +221,7 @@ xcb_pixmap_t qt_xcb_XPixmapFromBitmap(QXcbScreen *screen, const QImage &image)
for (int i = 0; i < height; i++)
memcpy(buf + (destLineSize * i), map + (bytesPerLine * i), destLineSize);
xcb_pixmap_t pm = xcb_create_pixmap_from_bitmap_data(conn, screen->root(), buf,
- width, height, 1, 0, 0, 0);
+ width, height, 1, 0, 0, nullptr);
delete[] buf;
return pm;
}
@@ -249,7 +249,7 @@ xcb_cursor_t qt_xcb_createCursorXRender(QXcbScreen *screen, const QImage &image,
32, 32, 32, 32,
QSysInfo::ByteOrder == QSysInfo::BigEndian ? XCB_IMAGE_ORDER_MSB_FIRST : XCB_IMAGE_ORDER_LSB_FIRST,
XCB_IMAGE_ORDER_MSB_FIRST,
- 0, 0, 0);
+ nullptr, 0, nullptr);
if (!xi) {
qWarning("qt_xcb_createCursorXRender: xcb_image_create failed");
return XCB_NONE;
@@ -266,10 +266,10 @@ xcb_cursor_t qt_xcb_createCursorXRender(QXcbScreen *screen, const QImage &image,
xcb_create_pixmap(conn, 32, pix, screen->root(), w, h);
xcb_render_picture_t pic = xcb_generate_id(conn);
- xcb_render_create_picture(conn, pic, pix, fmt->id, 0, 0);
+ xcb_render_create_picture(conn, pic, pix, fmt->id, 0, nullptr);
xcb_gcontext_t gc = xcb_generate_id(conn);
- xcb_create_gc(conn, gc, pix, 0, 0);
+ xcb_create_gc(conn, gc, pix, 0, nullptr);
xcb_image_put(conn, pix, gc, xi, 0, 0, 0);
xcb_free_gc(conn, gc);
diff --git a/src/plugins/platforms/xcb/qxcbintegration.cpp b/src/plugins/platforms/xcb/qxcbintegration.cpp
index efda6b67ce..3fd989e1f9 100644
--- a/src/plugins/platforms/xcb/qxcbintegration.cpp
+++ b/src/plugins/platforms/xcb/qxcbintegration.cpp
@@ -130,7 +130,7 @@ QXcbIntegration *QXcbIntegration::m_instance = nullptr;
QXcbIntegration::QXcbIntegration(const QStringList &parameters, int &argc, char **argv)
: m_services(new QGenericUnixServices)
- , m_instanceName(0)
+ , m_instanceName(nullptr)
, m_canGrab(true)
, m_defaultVisualId(UINT_MAX)
{
@@ -146,7 +146,7 @@ QXcbIntegration::QXcbIntegration(const QStringList &parameters, int &argc, char
m_nativeInterface.reset(new QXcbNativeInterface);
// Parse arguments
- const char *displayName = 0;
+ const char *displayName = nullptr;
bool noGrabArg = false;
bool doGrabArg = false;
if (argc) {
diff --git a/src/plugins/platforms/xcb/qxcbkeyboard.cpp b/src/plugins/platforms/xcb/qxcbkeyboard.cpp
index d0e02ecdd1..e8286381a2 100644
--- a/src/plugins/platforms/xcb/qxcbkeyboard.cpp
+++ b/src/plugins/platforms/xcb/qxcbkeyboard.cpp
@@ -49,13 +49,7 @@
#include <private/qguiapplication_p.h>
-#if QT_CONFIG(xkb)
-#include <xkbcommon/xkbcommon-x11.h>
-#endif
-
-#if QT_CONFIG(xcb_xinput)
#include <xcb/xinput.h>
-#endif
QT_BEGIN_NAMESPACE
@@ -392,20 +386,16 @@ void QXcbKeyboard::updateKeymap()
xkb_context_set_log_level(m_xkbContext.get(), logLevel);
}
-#if QT_CONFIG(xkb)
if (connection()->hasXKB()) {
m_xkbKeymap.reset(xkb_x11_keymap_new_from_device(m_xkbContext.get(), xcb_connection(),
core_device_id, XKB_KEYMAP_COMPILE_NO_FLAGS));
if (m_xkbKeymap)
m_xkbState.reset(xkb_x11_state_new_from_device(m_xkbKeymap.get(), xcb_connection(), core_device_id));
} else {
-#endif
m_xkbKeymap.reset(keymapFromCore(keysymMods));
if (m_xkbKeymap)
m_xkbState.reset(xkb_state_new(m_xkbKeymap.get()));
-#if QT_CONFIG(xkb)
}
-#endif
if (!m_xkbKeymap) {
qCWarning(lcQpaKeyboard, "failed to compile a keymap");
@@ -428,7 +418,6 @@ QList<int> QXcbKeyboard::possibleKeys(const QKeyEvent *event) const
return QXkbCommon::possibleKeys(m_xkbState.get(), event, m_superAsMeta, m_hyperAsMeta);
}
-#if QT_CONFIG(xkb)
void QXcbKeyboard::updateXKBState(xcb_xkb_state_notify_event_t *state)
{
if (m_config && connection()->hasXKB()) {
@@ -444,7 +433,6 @@ void QXcbKeyboard::updateXKBState(xcb_xkb_state_notify_event_t *state)
handleStateChanges(changedComponents);
}
}
-#endif
static xkb_layout_index_t lockedGroup(quint16 state)
{
@@ -473,7 +461,6 @@ void QXcbKeyboard::updateXKBStateFromCore(quint16 state)
}
}
-#if QT_CONFIG(xcb_xinput)
void QXcbKeyboard::updateXKBStateFromXI(void *modInfo, void *groupInfo)
{
if (m_config && !connection()->hasXKB()) {
@@ -491,7 +478,6 @@ void QXcbKeyboard::updateXKBStateFromXI(void *modInfo, void *groupInfo)
handleStateChanges(changedComponents);
}
}
-#endif
void QXcbKeyboard::handleStateChanges(xkb_state_component changedComponents)
{
@@ -541,7 +527,6 @@ void QXcbKeyboard::updateXKBMods()
QXcbKeyboard::QXcbKeyboard(QXcbConnection *connection)
: QXcbObject(connection)
{
-#if QT_CONFIG(xkb)
core_device_id = 0;
if (connection->hasXKB()) {
selectEvents();
@@ -551,11 +536,9 @@ QXcbKeyboard::QXcbKeyboard(QXcbConnection *connection)
return;
}
} else {
-#endif
m_key_symbols = xcb_key_symbols_alloc(xcb_connection());
-#if QT_CONFIG(xkb)
}
-#endif
+
updateKeymap();
}
@@ -573,7 +556,6 @@ void QXcbKeyboard::initialize()
void QXcbKeyboard::selectEvents()
{
-#if QT_CONFIG(xkb)
const uint16_t required_map_parts = (XCB_XKB_MAP_PART_KEY_TYPES |
XCB_XKB_MAP_PART_KEY_SYMS |
XCB_XKB_MAP_PART_MODIFIER_MAP |
@@ -597,19 +579,17 @@ void QXcbKeyboard::selectEvents()
required_events,
required_map_parts,
required_map_parts,
- 0);
+ nullptr);
xcb_generic_error_t *error = xcb_request_check(xcb_connection(), select);
if (error) {
free(error);
qCWarning(lcQpaXcb, "failed to select notify events from XKB");
}
-#endif
}
void QXcbKeyboard::updateVModMapping()
{
-#if QT_CONFIG(xkb)
xcb_xkb_get_names_value_list_t names_list;
memset(&vmod_masks, 0, sizeof(vmod_masks));
@@ -640,7 +620,7 @@ void QXcbKeyboard::updateVModMapping()
vmod_mask = name_reply->virtualMods;
// find the virtual modifiers for which names are defined.
for (bit = 1; vmod_mask; bit <<= 1) {
- vmod_name = 0;
+ vmod_name = nullptr;
if (!(vmod_mask & bit))
continue;
@@ -667,12 +647,10 @@ void QXcbKeyboard::updateVModMapping()
else if (qstrcmp(vmod_name, "Hyper") == 0)
vmod_masks.hyper = bit;
}
-#endif
}
void QXcbKeyboard::updateVModToRModMapping()
{
-#if QT_CONFIG(xkb)
xcb_xkb_get_map_map_t map;
memset(&rmod_masks, 0, sizeof(rmod_masks));
@@ -729,7 +707,6 @@ void QXcbKeyboard::updateVModToRModMapping()
else if (vmod_masks.hyper == bit)
rmod_masks.hyper = modmap;
}
-#endif
}
// Small helper: set modifier bit, if modifier position is valid
diff --git a/src/plugins/platforms/xcb/qxcbkeyboard.h b/src/plugins/platforms/xcb/qxcbkeyboard.h
index e35c82ad24..0ee08aeff2 100644
--- a/src/plugins/platforms/xcb/qxcbkeyboard.h
+++ b/src/plugins/platforms/xcb/qxcbkeyboard.h
@@ -43,14 +43,12 @@
#include "qxcbobject.h"
#include <xcb/xcb_keysyms.h>
-#if QT_CONFIG(xkb)
#define explicit dont_use_cxx_explicit
#include <xcb/xkb.h>
#undef explicit
-#endif
-#include <xkbcommon/xkbcommon.h>
#include <QtXkbCommonSupport/private/qxkbcommon_p.h>
+#include <xkbcommon/xkbcommon-x11.h>
#include <QEvent>
@@ -74,18 +72,14 @@ public:
void updateKeymap();
QList<int> possibleKeys(const QKeyEvent *event) const;
- // when XKEYBOARD not present on the X server
void updateXKBMods();
xkb_mod_mask_t xkbModMask(quint16 state);
void updateXKBStateFromCore(quint16 state);
-#if QT_CONFIG(xcb_xinput)
void updateXKBStateFromXI(void *modInfo, void *groupInfo);
-#endif
-#if QT_CONFIG(xkb)
- // when XKEYBOARD is present on the X server
+
int coreDeviceId() const { return core_device_id; }
void updateXKBState(xcb_xkb_state_notify_event_t *state);
-#endif
+
void handleStateChanges(xkb_state_component changedComponents);
protected:
@@ -97,10 +91,9 @@ protected:
typedef QMap<xcb_keysym_t, int> KeysymModifierMap;
struct xkb_keymap *keymapFromCore(const KeysymModifierMap &keysymMods);
- // when XKEYBOARD not present on the X server
void updateModifiers(const KeysymModifierMap &keysymMods);
KeysymModifierMap keysymsToModifiers();
- // when XKEYBOARD is present on the X server
+
void updateVModMapping();
void updateVModToRModMapping();
@@ -119,7 +112,6 @@ private:
_mod_masks rmod_masks;
- // when XKEYBOARD not present on the X server
xcb_key_symbols_t *m_key_symbols = nullptr;
struct _xkb_mods {
xkb_mod_index_t shift;
@@ -132,11 +124,9 @@ private:
xkb_mod_index_t mod5;
};
_xkb_mods xkb_mods;
-#if QT_CONFIG(xkb)
- // when XKEYBOARD is present on the X server
+
_mod_masks vmod_masks;
int core_device_id;
-#endif
QXkbCommon::ScopedXKBState m_xkbState;
QXkbCommon::ScopedXKBKeymap m_xkbKeymap;
diff --git a/src/plugins/platforms/xcb/qxcbnativeinterface.cpp b/src/plugins/platforms/xcb/qxcbnativeinterface.cpp
index 81b889a80f..30fa6864ac 100644
--- a/src/plugins/platforms/xcb/qxcbnativeinterface.cpp
+++ b/src/plugins/platforms/xcb/qxcbnativeinterface.cpp
@@ -268,7 +268,7 @@ QPlatformNativeInterface::NativeResourceForIntegrationFunction QXcbNativeInterfa
if (lowerCaseResource == "peekeventqueue")
return NativeResourceForIntegrationFunction(reinterpret_cast<void *>(peekEventQueue));
- return 0;
+ return nullptr;
}
QPlatformNativeInterface::NativeResourceForContextFunction QXcbNativeInterface::nativeResourceFunctionForContext(const QByteArray &resource)
@@ -291,7 +291,7 @@ QPlatformNativeInterface::NativeResourceForScreenFunction QXcbNativeInterface::n
return NativeResourceForScreenFunction(reinterpret_cast<void *>(setAppTime));
else if (lowerCaseResource == "setappusertime")
return NativeResourceForScreenFunction(reinterpret_cast<void *>(setAppUserTime));
- return 0;
+ return nullptr;
}
QPlatformNativeInterface::NativeResourceForWindowFunction QXcbNativeInterface::nativeResourceFunctionForWindow(const QByteArray &resource)
@@ -365,7 +365,7 @@ void *QXcbNativeInterface::startupId()
QXcbConnection *defaultConnection = integration->defaultConnection();
if (defaultConnection)
return reinterpret_cast<void *>(const_cast<char *>(defaultConnection->startupId().constData()));
- return 0;
+ return nullptr;
}
void *QXcbNativeInterface::x11Screen()
@@ -374,7 +374,7 @@ void *QXcbNativeInterface::x11Screen()
QXcbConnection *defaultConnection = integration->defaultConnection();
if (defaultConnection)
return reinterpret_cast<void *>(defaultConnection->primaryScreenNumber());
- return 0;
+ return nullptr;
}
void *QXcbNativeInterface::rootWindow()
@@ -383,7 +383,7 @@ void *QXcbNativeInterface::rootWindow()
QXcbConnection *defaultConnection = integration->defaultConnection();
if (defaultConnection)
return reinterpret_cast<void *>(defaultConnection->rootWindow());
- return 0;
+ return nullptr;
}
void *QXcbNativeInterface::display()
diff --git a/src/plugins/platforms/xcb/qxcbscreen.cpp b/src/plugins/platforms/xcb/qxcbscreen.cpp
index 7c60ca06f9..cc84e836b4 100644
--- a/src/plugins/platforms/xcb/qxcbscreen.cpp
+++ b/src/plugins/platforms/xcb/qxcbscreen.cpp
@@ -320,7 +320,7 @@ bool QXcbVirtualDesktop::xResource(const QByteArray &identifier,
static bool parseXftInt(const QByteArray& stringValue, int *value)
{
- Q_ASSERT(value != 0);
+ Q_ASSERT(value != nullptr);
bool ok;
*value = stringValue.toInt(&ok);
return ok;
@@ -468,7 +468,7 @@ const xcb_visualtype_t *QXcbVirtualDesktop::visualForId(xcb_visualid_t visualid)
{
QMap<xcb_visualid_t, xcb_visualtype_t>::const_iterator it = m_visuals.find(visualid);
if (it == m_visuals.constEnd())
- return 0;
+ return nullptr;
return &*it;
}
@@ -588,7 +588,7 @@ QWindow *QXcbScreen::topLevelAt(const QPoint &p) const
do {
auto translate_reply = Q_XCB_REPLY_UNCHECKED(xcb_translate_coordinates, xcb_connection(), parent, child, x, y);
if (!translate_reply) {
- return 0;
+ return nullptr;
}
parent = child;
@@ -597,14 +597,14 @@ QWindow *QXcbScreen::topLevelAt(const QPoint &p) const
y = translate_reply->dst_y;
if (!child || child == root)
- return 0;
+ return nullptr;
QPlatformWindow *platformWindow = connection()->platformWindowFromId(child);
if (platformWindow)
return platformWindow->window();
} while (parent != child);
- return 0;
+ return nullptr;
}
void QXcbScreen::windowShown(QXcbWindow *window)
diff --git a/src/plugins/platforms/xcb/qxcbsessionmanager.cpp b/src/plugins/platforms/xcb/qxcbsessionmanager.cpp
index f880d4d722..2eb32c069e 100644
--- a/src/plugins/platforms/xcb/qxcbsessionmanager.cpp
+++ b/src/plugins/platforms/xcb/qxcbsessionmanager.cpp
@@ -69,7 +69,7 @@ public Q_SLOTS:
};
-static SmcConn smcConnection = 0;
+static SmcConn smcConnection = nullptr;
static bool sm_interactionActive;
static bool sm_smActive;
static int sm_interactStyle;
@@ -81,7 +81,7 @@ static bool sm_phase2;
static bool sm_in_phase2;
bool qt_sm_blockUserInput = false;
-static QSmSocketReceiver* sm_receiver = 0;
+static QSmSocketReceiver* sm_receiver = nullptr;
static void resetSmState();
static void sm_setProperty(const char *name, const char *type,
@@ -191,7 +191,7 @@ static void sm_performSaveYourself(QXcbSessionManager *sm)
// generate a new session key
timeval tv;
- gettimeofday(&tv, 0);
+ gettimeofday(&tv, nullptr);
sm->setSessionKey(QString::number(qulonglong(tv.tv_sec)) +
QLatin1Char('_') +
QString::number(qulonglong(tv.tv_usec)));
@@ -203,7 +203,7 @@ static void sm_performSaveYourself(QXcbSessionManager *sm)
// tell the session manager about our program in best POSIX style
sm_setProperty(QString::fromLatin1(SmProgram), argument0);
// tell the session manager about our user as well.
- struct passwd *entryPtr = 0;
+ struct passwd *entryPtr = nullptr;
#if defined(_POSIX_THREAD_SAFE_FUNCTIONS) && (_POSIX_THREAD_SAFE_FUNCTIONS - 0 > 0)
QVarLengthArray<char, 1024> buf(qMax<long>(sysconf(_SC_GETPW_R_SIZE_MAX), 1024L));
struct passwd entry;
@@ -329,7 +329,7 @@ static void sm_saveYourselfPhase2Callback(SmcConn smcConn, SmPointer clientData)
void QSmSocketReceiver::socketActivated(int)
{
- IceProcessMessages(SmcGetIceConnection(smcConnection), 0, 0);
+ IceProcessMessages(SmcGetIceConnection(smcConnection), nullptr, nullptr);
}
@@ -337,11 +337,11 @@ void QSmSocketReceiver::socketActivated(int)
QXcbSessionManager::QXcbSessionManager(const QString &id, const QString &key)
: QPlatformSessionManager(id, key)
- , m_eventLoop(0)
+ , m_eventLoop(nullptr)
{
resetSmState();
char cerror[256];
- char* myId = 0;
+ char* myId = nullptr;
QByteArray b_id = id.toLatin1();
char* prevId = b_id.data();
@@ -359,7 +359,7 @@ QXcbSessionManager::QXcbSessionManager(const QString &id, const QString &key)
if (!qEnvironmentVariableIsSet("SESSION_MANAGER"))
return;
- smcConnection = SmcOpenConnection(0, 0, 1, 0,
+ smcConnection = SmcOpenConnection(nullptr, nullptr, 1, 0,
SmcSaveYourselfProcMask |
SmcDieProcMask |
SmcSaveCompleteProcMask |
@@ -382,8 +382,8 @@ QXcbSessionManager::QXcbSessionManager(const QString &id, const QString &key)
QXcbSessionManager::~QXcbSessionManager()
{
if (smcConnection)
- SmcCloseConnection(smcConnection, 0, 0);
- smcConnection = 0;
+ SmcCloseConnection(smcConnection, 0, nullptr);
+ smcConnection = nullptr;
delete sm_receiver;
}
@@ -411,7 +411,7 @@ bool QXcbSessionManager::allowsInteraction()
QEventLoop eventLoop;
m_eventLoop = &eventLoop;
eventLoop.exec();
- m_eventLoop = 0;
+ m_eventLoop = nullptr;
sm_waitingForInteraction = false;
if (sm_smActive) { // not cancelled
@@ -441,7 +441,7 @@ bool QXcbSessionManager::allowsErrorInteraction()
QEventLoop eventLoop;
m_eventLoop = &eventLoop;
eventLoop.exec();
- m_eventLoop = 0;
+ m_eventLoop = nullptr;
sm_waitingForInteraction = false;
if (sm_smActive) { // not cancelled
diff --git a/src/plugins/platforms/xcb/qxcbsystemtraytracker.cpp b/src/plugins/platforms/xcb/qxcbsystemtraytracker.cpp
index 684e603fab..ff5ad98cd2 100644
--- a/src/plugins/platforms/xcb/qxcbsystemtraytracker.cpp
+++ b/src/plugins/platforms/xcb/qxcbsystemtraytracker.cpp
@@ -64,11 +64,11 @@ QXcbSystemTrayTracker *QXcbSystemTrayTracker::create(QXcbConnection *connection)
// Selection, tray atoms for GNOME, NET WM Specification
const xcb_atom_t trayAtom = connection->atom(QXcbAtom::_NET_SYSTEM_TRAY_OPCODE);
if (!trayAtom)
- return 0;
+ return nullptr;
const QByteArray netSysTray = QByteArrayLiteral("_NET_SYSTEM_TRAY_S") + QByteArray::number(connection->primaryScreenNumber());
const xcb_atom_t selection = connection->internAtom(netSysTray.constData());
if (!selection)
- return 0;
+ return nullptr;
return new QXcbSystemTrayTracker(connection, trayAtom, selection);
}
diff --git a/src/plugins/platforms/xcb/qxcbvulkaninstance.cpp b/src/plugins/platforms/xcb/qxcbvulkaninstance.cpp
index b3f8a5832d..7c15882768 100644
--- a/src/plugins/platforms/xcb/qxcbvulkaninstance.cpp
+++ b/src/plugins/platforms/xcb/qxcbvulkaninstance.cpp
@@ -93,7 +93,7 @@ bool QXcbVulkanInstance::supportsPresent(VkPhysicalDevice physicalDevice,
VkSurfaceKHR QXcbVulkanInstance::createSurface(QXcbWindow *window)
{
- VkSurfaceKHR surface = 0;
+ VkSurfaceKHR surface = nullptr;
if (!m_createSurface) {
m_createSurface = reinterpret_cast<PFN_vkCreateXcbSurfaceKHR>(
diff --git a/src/plugins/platforms/xcb/qxcbvulkanwindow.cpp b/src/plugins/platforms/xcb/qxcbvulkanwindow.cpp
index 25bc340f97..17d7d9791e 100644
--- a/src/plugins/platforms/xcb/qxcbvulkanwindow.cpp
+++ b/src/plugins/platforms/xcb/qxcbvulkanwindow.cpp
@@ -43,7 +43,7 @@ QT_BEGIN_NAMESPACE
QXcbVulkanWindow::QXcbVulkanWindow(QWindow *window)
: QXcbWindow(window),
- m_surface(0)
+ m_surface(nullptr)
{
}
diff --git a/src/plugins/platforms/xcb/qxcbwindow.cpp b/src/plugins/platforms/xcb/qxcbwindow.cpp
index 97da420798..66030b9ad4 100644
--- a/src/plugins/platforms/xcb/qxcbwindow.cpp
+++ b/src/plugins/platforms/xcb/qxcbwindow.cpp
@@ -67,9 +67,7 @@
#include <xcb/xcb_icccm.h>
#include <xcb/xfixes.h>
#include <xcb/shape.h>
-#if QT_CONFIG(xcb_xinput)
#include <xcb/xinput.h>
-#endif
#include <private/qguiapplication_p.h>
#include <private/qwindow_p.h>
@@ -176,13 +174,13 @@ static inline XTextProperty* qstringToXTP(Display *dpy, const QString& s)
{
#include <X11/Xatom.h>
- static XTextProperty tp = { 0, 0, 0, 0 };
+ static XTextProperty tp = { nullptr, 0, 0, 0 };
static bool free_prop = true; // we can't free tp.value in case it references
// the data of the static QByteArray below.
if (tp.value) {
if (free_prop)
XFree(tp.value);
- tp.value = 0;
+ tp.value = nullptr;
free_prop = true;
}
@@ -193,7 +191,7 @@ static inline XTextProperty* qstringToXTP(Display *dpy, const QString& s)
QByteArray mapped = mapper->fromUnicode(s);
char* tl[2];
tl[0] = mapped.data();
- tl[1] = 0;
+ tl[1] = nullptr;
errCode = XmbTextListToTextProperty(dpy, tl, 1, XStdICCTextStyle, &tp);
if (errCode < 0)
qCDebug(lcQpaXcb, "XmbTextListToTextProperty result code %d", errCode);
@@ -282,7 +280,7 @@ void QXcbWindow::create()
m_window = platformScreen->root();
m_depth = platformScreen->screen()->root_depth;
m_visualId = platformScreen->screen()->root_visual;
- const xcb_visualtype_t *visual = 0;
+ const xcb_visualtype_t *visual = nullptr;
if (connection()->hasDefaultVisualId()) {
visual = platformScreen->visualForId(connection()->defaultVisualId());
if (visual)
@@ -492,14 +490,12 @@ void QXcbWindow::create()
atom(QXcbAtom::_XEMBED_INFO),
32, 2, (void *)data);
-#if QT_CONFIG(xcb_xinput)
if (connection()->hasXInput2()) {
if (connection()->xi2MouseEventsDisabled())
connection()->xi2SelectDeviceEventsCompatibility(m_window);
else
connection()->xi2SelectDeviceEvents(m_window);
}
-#endif
setWindowState(window()->windowStates());
setWindowFlags(window()->flags());
@@ -823,7 +819,7 @@ bool QXcbWindow::relayFocusToModalWindow() const
while (w && w->parent())
w = w->parent();
- QWindow *modalWindow = 0;
+ QWindow *modalWindow = nullptr;
const bool blocked = QGuiApplicationPrivate::instance()->isWindowBlocked(w, &modalWindow);
if (blocked && modalWindow != w) {
modalWindow->requestActivate();
@@ -880,7 +876,7 @@ enum {
QXcbWindow::NetWmStates QXcbWindow::netWmStates()
{
- NetWmStates result(0);
+ NetWmStates result;
auto reply = Q_XCB_REPLY_UNCHECKED(xcb_get_property, xcb_connection(),
0, m_window, atom(QXcbAtom::_NET_WM_STATE),
@@ -931,7 +927,7 @@ void QXcbWindow::setWindowFlags(Qt::WindowFlags flags)
xcb_change_window_attributes(xcb_connection(), xcb_window(), mask, values);
- QXcbWindowFunctions::WmWindowTypes wmWindowTypes = 0;
+ QXcbWindowFunctions::WmWindowTypes wmWindowTypes;
if (window()->dynamicPropertyNames().contains(wm_window_type_property_id)) {
wmWindowTypes = static_cast<QXcbWindowFunctions::WmWindowTypes>(
window()->property(wm_window_type_property_id).value<int>());
@@ -1067,7 +1063,7 @@ void QXcbWindow::setNetWmStateOnUnmappedWindow()
if (Q_UNLIKELY(m_mapped))
qCWarning(lcQpaXcb()) << "internal error: " << Q_FUNC_INFO << "called on mapped window";
- NetWmStates states(0);
+ NetWmStates states;
const Qt::WindowFlags flags = window()->flags();
if (flags & Qt::WindowStaysOnTopHint) {
states |= NetWmStateAbove;
@@ -1197,7 +1193,7 @@ void QXcbWindow::updateNetWmUserTime(xcb_timestamp_t timestamp)
XCB_WINDOW_CLASS_INPUT_OUTPUT, // window class
m_visualId, // visual
0, // value mask
- 0); // value list
+ nullptr); // value list
wid = m_netWmUserTimeWindow;
xcb_change_property(xcb_connection(), XCB_PROP_MODE_REPLACE, m_window, atom(QXcbAtom::_NET_WM_USER_TIME_WINDOW),
XCB_ATOM_WINDOW, 32, 1, &m_netWmUserTimeWindow);
@@ -1227,7 +1223,7 @@ void QXcbWindow::setTransparentForMouseEvents(bool transparent)
xcb_rectangle_t rectangle;
- xcb_rectangle_t *rect = 0;
+ xcb_rectangle_t *rect = nullptr;
int nrect = 0;
if (!transparent) {
@@ -1481,7 +1477,7 @@ uint QXcbWindow::visualIdStatic(QWindow *window)
QXcbWindowFunctions::WmWindowTypes QXcbWindow::wmWindowTypes() const
{
- QXcbWindowFunctions::WmWindowTypes result(0);
+ QXcbWindowFunctions::WmWindowTypes result;
auto reply = Q_XCB_REPLY_UNCHECKED(xcb_get_property, xcb_connection(),
0, m_window, atom(QXcbAtom::_NET_WM_WINDOW_TYPE),
@@ -1886,7 +1882,7 @@ void QXcbWindow::handleButtonPressEvent(int event_x, int event_y, int root_x, in
if (m_embedded && !m_trayIconWindow) {
if (window() != QGuiApplication::focusWindow()) {
const QXcbWindow *container = static_cast<const QXcbWindow *>(parent());
- Q_ASSERT(container != 0);
+ Q_ASSERT(container != nullptr);
sendXEmbedMessage(container->xcb_window(), XEMBED_REQUEST_FOCUS);
}
@@ -1895,9 +1891,7 @@ void QXcbWindow::handleButtonPressEvent(int event_x, int event_y, int root_x, in
QPoint global(root_x, root_y);
if (isWheel) {
-#if QT_CONFIG(xcb_xinput)
if (!connection()->isAtLeastXI21()) {
-#endif
QPoint angleDelta;
if (detail == 4)
angleDelta.setY(120);
@@ -1910,9 +1904,7 @@ void QXcbWindow::handleButtonPressEvent(int event_x, int event_y, int root_x, in
if (modifiers & Qt::AltModifier)
angleDelta = angleDelta.transposed();
QWindowSystemInterface::handleWheelEvent(window(), timestamp, local, global, QPoint(), angleDelta, modifiers);
-#if QT_CONFIG(xcb_xinput)
}
-#endif
return;
}
@@ -1948,13 +1940,8 @@ static inline bool doCheckUnGrabAncestor(QXcbConnection *conn)
* not pressed, otherwise (e.g. on Alt+Tab) it can igonre important enter/leave events.
*/
if (conn) {
-
const bool mouseButtonsPressed = (conn->buttonState() != Qt::NoButton);
-#if QT_CONFIG(xcb_xinput)
return mouseButtonsPressed || (conn->hasXInput2() && !conn->xi2MouseEventsDisabled());
-#else
- return mouseButtonsPressed;
-#endif
}
return true;
}
@@ -1986,10 +1973,9 @@ void QXcbWindow::handleEnterNotifyEvent(int event_x, int event_y, int root_x, in
if (ignoreEnterEvent(mode, detail, connection()) || connection()->mousePressWindow())
return;
-#if QT_CONFIG(xcb_xinput)
+
// Updates scroll valuators, as user might have done some scrolling outside our X client.
connection()->xi2UpdateScrollingDevices();
-#endif
const QPoint local(event_x, event_y);
QWindowSystemInterface::handleEnterEvent(window(), local, global);
@@ -2064,7 +2050,6 @@ void QXcbWindow::handleMotionNotifyEvent(const xcb_motion_notify_event_t *event)
event->time, QEvent::MouseMove);
}
-#if QT_CONFIG(xcb_xinput)
static inline int fixed1616ToInt(xcb_input_fp1616_t val)
{
return int(qreal(val) / 0x10000);
@@ -2102,7 +2087,7 @@ void QXcbWindow::handleXIMouseEvent(xcb_ge_event_t *event, Qt::MouseEventSource
const Qt::MouseButton button = conn->xiToQtMouseButton(ev->detail);
- const char *sourceName = 0;
+ const char *sourceName = nullptr;
if (Q_UNLIKELY(lcQpaXInputEvents().isDebugEnabled())) {
const QMetaObject *metaObject = qt_getEnumMetaObject(source);
const QMetaEnum me = metaObject->enumerator(metaObject->indexOfEnumerator(qt_getEnumName(source)));
@@ -2165,7 +2150,6 @@ void QXcbWindow::handleXIEnterLeave(xcb_ge_event_t *event)
break;
}
}
-#endif
QXcbWindow *QXcbWindow::toWindow() { return this; }
@@ -2301,14 +2285,12 @@ bool QXcbWindow::setMouseGrabEnabled(bool grab)
if (grab && !connection()->canGrab())
return false;
-#if QT_CONFIG(xcb_xinput)
if (connection()->hasXInput2() && !connection()->xi2MouseEventsDisabled()) {
bool result = connection()->xi2SetMouseGrabEnabled(m_window, grab);
if (grab && result)
connection()->setMouseGrabber(this);
return result;
}
-#endif
if (!grab) {
xcb_ungrab_pointer(xcb_connection(), XCB_TIME_CURRENT_TIME);
@@ -2376,7 +2358,7 @@ bool QXcbWindow::startSystemMoveResize(const QPoint &pos, int corner)
return false;
const QPoint globalPos = QHighDpi::toNativePixels(window()->mapToGlobal(pos), window()->screen());
-#if QT_CONFIG(xcb_xinput)
+
// ### FIXME QTBUG-53389
bool startedByTouch = connection()->startSystemMoveResizeForTouchBegin(m_window, globalPos, corner);
if (startedByTouch) {
@@ -2386,9 +2368,7 @@ bool QXcbWindow::startSystemMoveResize(const QPoint &pos, int corner)
return false;
}
// KWin, Openbox, AwesomeWM have been tested to work with _NET_WM_MOVERESIZE.
- } else
-#endif
- { // Started by mouse press.
+ } else { // Started by mouse press.
if (connection()->isUnity())
return false; // _NET_WM_MOVERESIZE on this WM is bouncy (WM bug?).
diff --git a/src/plugins/platforms/xcb/qxcbwindow.h b/src/plugins/platforms/xcb/qxcbwindow.h
index 5de5974ca7..13b37db028 100644
--- a/src/plugins/platforms/xcb/qxcbwindow.h
+++ b/src/plugins/platforms/xcb/qxcbwindow.h
@@ -137,10 +137,8 @@ public:
void handleFocusInEvent(const xcb_focus_in_event_t *event) override;
void handleFocusOutEvent(const xcb_focus_out_event_t *event) override;
void handlePropertyNotifyEvent(const xcb_property_notify_event_t *event) override;
-#if QT_CONFIG(xcb_xinput)
void handleXIMouseEvent(xcb_ge_event_t *, Qt::MouseEventSource source = Qt::MouseEventNotSynthesized) override;
void handleXIEnterLeave(xcb_ge_event_t *) override;
-#endif
QXcbWindow *toWindow() override;
diff --git a/src/plugins/platforms/xcb/qxcbxsettings.cpp b/src/plugins/platforms/xcb/qxcbxsettings.cpp
index 88f15e344f..902f196ba9 100644
--- a/src/plugins/platforms/xcb/qxcbxsettings.cpp
+++ b/src/plugins/platforms/xcb/qxcbxsettings.cpp
@@ -256,7 +256,7 @@ QXcbXSettings::QXcbXSettings(QXcbVirtualDesktop *screen)
QXcbXSettings::~QXcbXSettings()
{
delete d_ptr;
- d_ptr = 0;
+ d_ptr = nullptr;
}
bool QXcbXSettings::initialized() const
diff --git a/src/plugins/platforms/xcb/xcb-static/xcb-static.pro b/src/plugins/platforms/xcb/xcb-static/xcb-static.pro
deleted file mode 100644
index 078b275381..0000000000
--- a/src/plugins/platforms/xcb/xcb-static/xcb-static.pro
+++ /dev/null
@@ -1,80 +0,0 @@
-#
-# Statically compile in code for
-# libxcb-fixes, libxcb-randr, libxcb-shm, libxcb-sync, libxcb-image,
-# libxcb-keysyms, libxcb-icccm, libxcb-renderutil, libxcb-xkb,
-# libxcb-xinerama, libxcb-xinput
-#
-CONFIG += static
-
-XCB_DIR = $$QT_SOURCE_TREE/src/3rdparty/xcb
-
-MODULE_INCLUDEPATH += $$XCB_DIR/include $$XCB_DIR/sysinclude
-INCLUDEPATH += $$XCB_DIR/include/xcb
-
-QMAKE_USE += xcb/nolink
-
-# ignore compiler warnings in 3rdparty code
-QMAKE_CFLAGS_STATIC_LIB+=-w
-
-#
-# libxcb
-#
-LIBXCB_DIR = $$XCB_DIR/libxcb
-
-SOURCES += \
- $$LIBXCB_DIR/xfixes.c \
- $$LIBXCB_DIR/randr.c \
- $$LIBXCB_DIR/shm.c \
- $$LIBXCB_DIR/sync.c \
- $$LIBXCB_DIR/render.c \
- $$LIBXCB_DIR/shape.c \
- $$LIBXCB_DIR/xkb.c \
- $$LIBXCB_DIR/xinerama.c \
- $$LIBXCB_DIR/xinput.c
-
-#
-# xcb-util
-#
-XCB_UTIL_DIR = $$XCB_DIR/xcb-util
-
-
-SOURCES += \
- $$XCB_UTIL_DIR/xcb_aux.c \
- $$XCB_UTIL_DIR/atoms.c \
- $$XCB_UTIL_DIR/event.c
-
-#
-# xcb-util-image
-#
-XCB_IMAGE_DIR = $$XCB_DIR/xcb-util-image
-
-SOURCES += $$XCB_IMAGE_DIR/xcb_image.c
-
-#
-# xcb-util-keysyms
-#
-XCB_KEYSYMS_DIR = $$XCB_DIR/xcb-util-keysyms
-
-SOURCES += $$XCB_KEYSYMS_DIR/keysyms.c
-
-#
-# xcb-util-renderutil
-#
-
-XCB_RENDERUTIL_DIR = $$XCB_DIR/xcb-util-renderutil
-
-SOURCES += $$XCB_RENDERUTIL_DIR/util.c
-
-#
-# xcb-util-wm
-#
-XCB_WM_DIR = $$XCB_DIR/xcb-util-wm
-
-SOURCES += \
- $$XCB_WM_DIR/icccm.c
-
-OTHER_FILES = $$XCB_DIR/README
-
-TR_EXCLUDE += $$XCB_DIR/*
-
-load(qt_helper_lib)
diff --git a/src/plugins/platforms/xcb/xcb.pro b/src/plugins/platforms/xcb/xcb.pro
index 0d27645a60..1c43c5ca04 100644
--- a/src/plugins/platforms/xcb/xcb.pro
+++ b/src/plugins/platforms/xcb/xcb.pro
@@ -2,8 +2,6 @@ TEMPLATE = subdirs
CONFIG += ordered
QT_FOR_CONFIG += gui-private
-!qtConfig(system-xcb): SUBDIRS += xcb-static
-
SUBDIRS += xcb_qpa_lib.pro
SUBDIRS += xcb-plugin.pro
SUBDIRS += gl_integrations
diff --git a/src/plugins/platforms/xcb/xcb_qpa_lib.pro b/src/plugins/platforms/xcb/xcb_qpa_lib.pro
index 34c671c8c7..a5d05faa9c 100644
--- a/src/plugins/platforms/xcb/xcb_qpa_lib.pro
+++ b/src/plugins/platforms/xcb/xcb_qpa_lib.pro
@@ -35,6 +35,7 @@ SOURCES = \
qxcbeventdispatcher.cpp \
qxcbconnection_basic.cpp \
qxcbconnection_screens.cpp \
+ qxcbconnection_xi2.cpp \
qxcbatom.cpp
HEADERS = \
@@ -71,10 +72,6 @@ qtConfig(xcb-xlib) {
QMAKE_USE += xcb_xlib
}
-qtConfig(xcb-xinput) {
- SOURCES += qxcbconnection_xi2.cpp
-}
-
qtConfig(xcb-sm) {
QMAKE_USE += x11sm
SOURCES += qxcbsessionmanager.cpp
@@ -94,20 +91,19 @@ qtConfig(vulkan) {
qxcbvulkanwindow.h
}
-!qtConfig(system-xcb) {
- QMAKE_USE += xcb-static
-} else {
- qtConfig(xcb-xinput): QMAKE_USE += xcb_xinput
- QMAKE_USE += \
- xcb_icccm xcb_image xcb_keysyms xcb_randr xcb_render xcb_renderutil \
- xcb_shape xcb_shm xcb_sync xcb_xfixes xcb_xinerama
-}
-QMAKE_USE += xcb
+QMAKE_USE += \
+ xcb xcb_icccm xcb_image xcb_keysyms xcb_randr xcb_render xcb_renderutil \
+ xcb_shape xcb_shm xcb_sync xcb_xfixes xcb_xinerama xcb_xkb xkbcommon xkbcommon_x11
-QMAKE_USE += xkbcommon
-qtConfig(xkb) {
- QMAKE_USE += xkbcommon_x11
- qtConfig(system-xcb): QMAKE_USE += xcb_xkb
+qtConfig(system-xcb-xinput) {
+ QMAKE_USE += xcb_xinput
+} else {
+ # Use bundled xcb-xinput sources.
+ XCB_DIR = $$QT_SOURCE_TREE/src/3rdparty/xcb
+ INCLUDEPATH += $$XCB_DIR/include/
+ SOURCES += $$XCB_DIR/libxcb/xinput.c
+ # Ignore compiler warnings in 3rdparty C code.
+ QMAKE_CFLAGS+=-w
}
qtConfig(dlopen): QMAKE_USE += libdl
diff --git a/src/plugins/platformthemes/gtk3/main.cpp b/src/plugins/platformthemes/gtk3/main.cpp
index fb1c425d8e..860fc3a26e 100644
--- a/src/plugins/platformthemes/gtk3/main.cpp
+++ b/src/plugins/platformthemes/gtk3/main.cpp
@@ -57,7 +57,7 @@ QPlatformTheme *QGtk3ThemePlugin::create(const QString &key, const QStringList &
if (!key.compare(QLatin1String(QGtk3Theme::name), Qt::CaseInsensitive))
return new QGtk3Theme;
- return 0;
+ return nullptr;
}
QT_END_NAMESPACE
diff --git a/src/plugins/platformthemes/gtk3/qgtk3dialoghelpers.cpp b/src/plugins/platformthemes/gtk3/qgtk3dialoghelpers.cpp
index c64a02fa0c..65564b59a1 100644
--- a/src/plugins/platformthemes/gtk3/qgtk3dialoghelpers.cpp
+++ b/src/plugins/platformthemes/gtk3/qgtk3dialoghelpers.cpp
@@ -165,12 +165,12 @@ void QGtk3Dialog::onResponse(QGtk3Dialog *dialog, int response)
void QGtk3Dialog::onParentWindowDestroyed()
{
// The QGtk3*DialogHelper classes own this object. Make sure the parent doesn't delete it.
- setParent(0);
+ setParent(nullptr);
}
QGtk3ColorDialogHelper::QGtk3ColorDialogHelper()
{
- d.reset(new QGtk3Dialog(gtk_color_chooser_dialog_new("", 0)));
+ d.reset(new QGtk3Dialog(gtk_color_chooser_dialog_new("", nullptr)));
connect(d.data(), SIGNAL(accept()), this, SLOT(onAccepted()));
connect(d.data(), SIGNAL(reject()), this, SIGNAL(reject()));
@@ -238,7 +238,7 @@ void QGtk3ColorDialogHelper::applyOptions()
QGtk3FileDialogHelper::QGtk3FileDialogHelper()
{
- d.reset(new QGtk3Dialog(gtk_file_chooser_dialog_new("", 0,
+ d.reset(new QGtk3Dialog(gtk_file_chooser_dialog_new("", nullptr,
GTK_FILE_CHOOSER_ACTION_OPEN,
qUtf8Printable(QGtk3Theme::defaultStandardButtonText(QPlatformDialogHelper::Cancel)), GTK_RESPONSE_CANCEL,
qUtf8Printable(QGtk3Theme::defaultStandardButtonText(QPlatformDialogHelper::Ok)), GTK_RESPONSE_OK,
@@ -497,7 +497,7 @@ void QGtk3FileDialogHelper::setNameFilters(const QStringList &filters)
QGtk3FontDialogHelper::QGtk3FontDialogHelper()
{
- d.reset(new QGtk3Dialog(gtk_font_chooser_dialog_new("", 0)));
+ d.reset(new QGtk3Dialog(gtk_font_chooser_dialog_new("", nullptr)));
connect(d.data(), SIGNAL(accept()), this, SLOT(onAccepted()));
connect(d.data(), SIGNAL(reject()), this, SIGNAL(reject()));
diff --git a/src/plugins/platformthemes/gtk3/qgtk3menu.cpp b/src/plugins/platformthemes/gtk3/qgtk3menu.cpp
index 4f0bd9d9a0..d9d117faeb 100644
--- a/src/plugins/platformthemes/gtk3/qgtk3menu.cpp
+++ b/src/plugins/platformthemes/gtk3/qgtk3menu.cpp
@@ -200,7 +200,7 @@ void QGtk3MenuItem::setMenu(QPlatformMenu *menu)
{
m_menu = qobject_cast<QGtk3Menu *>(menu);
if (GTK_IS_MENU_ITEM(m_item))
- gtk_menu_item_set_submenu(GTK_MENU_ITEM(m_item), m_menu ? m_menu->handle() : NULL);
+ gtk_menu_item_set_submenu(GTK_MENU_ITEM(m_item), m_menu ? m_menu->handle() : nullptr);
}
bool QGtk3MenuItem::isVisible() const
@@ -436,7 +436,7 @@ void QGtk3Menu::showPopup(const QWindow *parentWindow, const QRect &targetRect,
if (pw)
m_targetPos = pw->mapToGlobal(m_targetPos);
- gtk_menu_popup(GTK_MENU(m_menu), NULL, NULL, qt_gtk_menu_position_func, this, 0, gtk_get_current_event_time());
+ gtk_menu_popup(GTK_MENU(m_menu), nullptr, nullptr, qt_gtk_menu_position_func, this, 0, gtk_get_current_event_time());
}
void QGtk3Menu::dismiss()
diff --git a/src/plugins/platformthemes/gtk3/qgtk3theme.cpp b/src/plugins/platformthemes/gtk3/qgtk3theme.cpp
index 077955eb4e..93520344f8 100644
--- a/src/plugins/platformthemes/gtk3/qgtk3theme.cpp
+++ b/src/plugins/platformthemes/gtk3/qgtk3theme.cpp
@@ -86,9 +86,9 @@ QGtk3Theme::QGtk3Theme()
{
// gtk_init will reset the Xlib error handler, and that causes
// Qt applications to quit on X errors. Therefore, we need to manually restore it.
- int (*oldErrorHandler)(Display *, XErrorEvent *) = XSetErrorHandler(NULL);
+ int (*oldErrorHandler)(Display *, XErrorEvent *) = XSetErrorHandler(nullptr);
- gtk_init(0, 0);
+ gtk_init(nullptr, nullptr);
XSetErrorHandler(oldErrorHandler);
@@ -99,7 +99,7 @@ QGtk3Theme::QGtk3Theme()
g_type_ensure(PANGO_TYPE_FONT_FACE);
/* Use our custom log handler. */
- g_log_set_handler("Gtk", G_LOG_LEVEL_MESSAGE, gtkMessageHandler, NULL);
+ g_log_set_handler("Gtk", G_LOG_LEVEL_MESSAGE, gtkMessageHandler, nullptr);
}
static inline QVariant gtkGetLongPressTime()
@@ -173,7 +173,7 @@ QPlatformDialogHelper *QGtk3Theme::createPlatformDialogHelper(DialogType type) c
case FontDialog:
return new QGtk3FontDialogHelper;
default:
- return 0;
+ return nullptr;
}
}
@@ -197,7 +197,7 @@ bool QGtk3Theme::useNativeFileDialog()
* dialogs entirely since we can't avoid creation of a platform
* dialog helper.
*/
- return gtk_check_version(3, 15, 5) == 0;
+ return gtk_check_version(3, 15, 5) == nullptr;
}
QT_END_NAMESPACE
diff --git a/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportaltheme.h b/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportaltheme.h
index 5cfc4df0d0..d38b3ddda3 100644
--- a/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportaltheme.h
+++ b/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportaltheme.h
@@ -72,7 +72,7 @@ public:
QPixmap standardPixmap(StandardPixmap sp, const QSizeF &size) const override;
QIcon fileIcon(const QFileInfo &fileInfo,
- QPlatformTheme::IconOptions iconOptions = nullptr) const override;
+ QPlatformTheme::IconOptions iconOptions = { }) const override;
QIconEngine *createIconEngine(const QString &iconName) const override;
diff --git a/src/plugins/sqldrivers/ibase/qsql_ibase.cpp b/src/plugins/sqldrivers/ibase/qsql_ibase.cpp
index 0f39f6aa0d..d0928fe6ab 100644
--- a/src/plugins/sqldrivers/ibase/qsql_ibase.cpp
+++ b/src/plugins/sqldrivers/ibase/qsql_ibase.cpp
@@ -1914,7 +1914,12 @@ void QIBaseDriver::qHandleEventNotification(void *updatedResultBuffer)
if (counts[0]) {
if (eBuffer->subscriptionState == QIBaseEventBuffer::Subscribed) {
+#if QT_DEPRECATED_SINCE(5, 15)
+QT_WARNING_PUSH
+QT_WARNING_DISABLE_DEPRECATED
emit notification(i.key());
+QT_WARNING_POP
+#endif
emit notification(i.key(), QSqlDriver::UnknownSource, QVariant());
}
else if (eBuffer->subscriptionState == QIBaseEventBuffer::Starting)
diff --git a/src/plugins/sqldrivers/mysql/qsql_mysql.cpp b/src/plugins/sqldrivers/mysql/qsql_mysql.cpp
index febbe58506..0e195cfdb4 100644
--- a/src/plugins/sqldrivers/mysql/qsql_mysql.cpp
+++ b/src/plugins/sqldrivers/mysql/qsql_mysql.cpp
@@ -65,16 +65,7 @@
Q_DECLARE_METATYPE(MYSQL_RES*)
Q_DECLARE_METATYPE(MYSQL*)
-
-#if MYSQL_VERSION_ID >= 40108
Q_DECLARE_METATYPE(MYSQL_STMT*)
-#endif
-
-#if MYSQL_VERSION_ID >= 40100
-# define Q_CLIENT_MULTI_STATEMENTS CLIENT_MULTI_STATEMENTS
-#else
-# define Q_CLIENT_MULTI_STATEMENTS 0
-#endif
// MySQL above version 8 removed my_bool typedef while MariaDB kept it,
// by redefining it we can regain source compatibility.
@@ -199,10 +190,8 @@ protected:
bool nextResult() override;
void detachFromResultSet() override;
-#if MYSQL_VERSION_ID >= 40108
bool prepare(const QString &stmt) override;
bool exec() override;
-#endif
};
class QMYSQLResultPrivate: public QSqlResultPrivate
@@ -217,9 +206,7 @@ public:
result(0),
rowsAffected(0),
hasBlobs(false)
-#if MYSQL_VERSION_ID >= 40108
, stmt(0), meta(0), inBinds(0), outBinds(0)
-#endif
, preparedQuery(false)
{ }
@@ -247,13 +234,11 @@ public:
QVector<QMyField> fields;
-#if MYSQL_VERSION_ID >= 40108
MYSQL_STMT* stmt;
MYSQL_RES* meta;
MYSQL_BIND *inBinds;
MYSQL_BIND *outBinds;
-#endif
bool preparedQuery;
};
@@ -261,11 +246,9 @@ public:
#if QT_CONFIG(textcodec)
static QTextCodec* codec(MYSQL* mysql)
{
-#if MYSQL_VERSION_ID >= 32321
QTextCodec* heuristicCodec = QTextCodec::codecForName(mysql_character_set_name(mysql));
if (heuristicCodec)
return heuristicCodec;
-#endif
return QTextCodec::codecForLocale();
}
#endif // textcodec
@@ -350,8 +333,6 @@ static QSqlField qToField(MYSQL_FIELD *field, QTextCodec *tc)
return f;
}
-#if MYSQL_VERSION_ID >= 40108
-
static QSqlError qMakeStmtError(const QString& err, QSqlError::ErrorType type,
MYSQL_STMT* stmt)
{
@@ -445,7 +426,6 @@ bool QMYSQLResultPrivate::bindInValues()
}
return true;
}
-#endif
QMYSQLResult::QMYSQLResult(const QMYSQLDriver* db)
: QSqlResult(*new QMYSQLResultPrivate(this, db))
@@ -460,11 +440,9 @@ QMYSQLResult::~QMYSQLResult()
QVariant QMYSQLResult::handle() const
{
Q_D(const QMYSQLResult);
-#if MYSQL_VERSION_ID >= 40108
if(d->preparedQuery)
return d->meta ? QVariant::fromValue(d->meta) : QVariant::fromValue(d->stmt);
else
-#endif
return QVariant::fromValue(d->result);
}
@@ -476,15 +454,12 @@ void QMYSQLResult::cleanup()
// must iterate trough leftover result sets from multi-selects or stored procedures
// if this isn't done subsequent queries will fail with "Commands out of sync"
-#if MYSQL_VERSION_ID >= 40100
while (driver() && d->drv_d_func()->mysql && mysql_next_result(d->drv_d_func()->mysql) == 0) {
MYSQL_RES *res = mysql_store_result(d->drv_d_func()->mysql);
if (res)
mysql_free_result(res);
}
-#endif
-#if MYSQL_VERSION_ID >= 40108
if (d->stmt) {
if (mysql_stmt_close(d->stmt))
qWarning("QMYSQLResult::cleanup: unable to free statement handle");
@@ -509,7 +484,6 @@ void QMYSQLResult::cleanup()
delete[] d->inBinds;
d->inBinds = 0;
}
-#endif
d->hasBlobs = false;
d->fields.clear();
@@ -536,7 +510,6 @@ bool QMYSQLResult::fetch(int i)
if (at() == i)
return true;
if (d->preparedQuery) {
-#if MYSQL_VERSION_ID >= 40108
mysql_stmt_data_seek(d->stmt, i);
int nRC = mysql_stmt_fetch(d->stmt);
@@ -550,9 +523,6 @@ bool QMYSQLResult::fetch(int i)
"Unable to fetch data"), QSqlError::StatementError, d->stmt));
return false;
}
-#else
- return false;
-#endif
} else {
mysql_data_seek(d->result, i);
d->row = mysql_fetch_row(d->result);
@@ -570,7 +540,6 @@ bool QMYSQLResult::fetchNext()
if (!driver())
return false;
if (d->preparedQuery) {
-#if MYSQL_VERSION_ID >= 40108
int nRC = mysql_stmt_fetch(d->stmt);
if (nRC) {
#ifdef MYSQL_DATA_TRUNCATED
@@ -582,9 +551,6 @@ bool QMYSQLResult::fetchNext()
"Unable to fetch data"), QSqlError::StatementError, d->stmt));
return false;
}
-#else
- return false;
-#endif
} else {
d->row = mysql_fetch_row(d->result);
if (!d->row)
@@ -607,11 +573,7 @@ bool QMYSQLResult::fetchLast()
my_ulonglong numRows;
if (d->preparedQuery) {
-#if MYSQL_VERSION_ID >= 40108
numRows = mysql_stmt_num_rows(d->stmt);
-#else
- numRows = 0;
-#endif
} else {
numRows = mysql_num_rows(d->result);
}
@@ -788,11 +750,7 @@ int QMYSQLResult::size()
Q_D(const QMYSQLResult);
if (driver() && isSelect())
if (d->preparedQuery)
-#if MYSQL_VERSION_ID >= 40108
return mysql_stmt_num_rows(d->stmt);
-#else
- return -1;
-#endif
else
return int(mysql_num_rows(d->result));
else
@@ -821,11 +779,9 @@ QVariant QMYSQLResult::lastInsertId() const
return QVariant();
if (d->preparedQuery) {
-#if MYSQL_VERSION_ID >= 40108
quint64 id = mysql_stmt_insert_id(d->stmt);
if (id)
return QVariant(id);
-#endif
} else {
quint64 id = mysql_insert_id(d->drv_d_func()->mysql);
if (id)
@@ -842,11 +798,7 @@ QSqlRecord QMYSQLResult::record() const
if (!isActive() || !isSelect() || !driver())
return info;
-#if MYSQL_VERSION_ID >= 40108
res = d->preparedQuery ? d->meta : d->result;
-#else
- res = d->result;
-#endif
if (!mysql_errno(d->drv_d_func()->mysql)) {
mysql_field_seek(res, 0);
@@ -865,7 +817,7 @@ bool QMYSQLResult::nextResult()
Q_D(QMYSQLResult);
if (!driver())
return false;
-#if MYSQL_VERSION_ID >= 40100
+
setAt(-1);
setActive(false);
@@ -908,9 +860,6 @@ bool QMYSQLResult::nextResult()
setActive(true);
return true;
-#else
- return false;
-#endif
}
void QMYSQLResult::virtual_hook(int id, void *data)
@@ -918,9 +867,6 @@ void QMYSQLResult::virtual_hook(int id, void *data)
QSqlResult::virtual_hook(id, data);
}
-
-#if MYSQL_VERSION_ID >= 40108
-
static MYSQL_TIME *toMySqlDate(QDate date, QTime time, QVariant::Type type)
{
Q_ASSERT(type == QVariant::Time || type == QVariant::Date
@@ -949,7 +895,7 @@ bool QMYSQLResult::prepare(const QString& query)
Q_D(QMYSQLResult);
if (!driver())
return false;
-#if MYSQL_VERSION_ID >= 40108
+
cleanup();
if (!d->drv_d_func()->preparedQuerysEnabled)
return QSqlResult::prepare(query);
@@ -983,9 +929,6 @@ bool QMYSQLResult::prepare(const QString& query)
setSelect(d->bindInValues());
d->preparedQuery = true;
return true;
-#else
- return false;
-#endif
}
bool QMYSQLResult::exec()
@@ -1155,7 +1098,7 @@ bool QMYSQLResult::exec()
setActive(true);
return true;
}
-#endif
+
/////////////////////////////////////////////////////////
static int qMySqlConnectionCount = 0;
@@ -1164,18 +1107,16 @@ static bool qMySqlInitHandledByUser = false;
static void qLibraryInit()
{
#ifndef Q_NO_MYSQL_EMBEDDED
-# if MYSQL_VERSION_ID >= 40000
if (qMySqlInitHandledByUser || qMySqlConnectionCount > 1)
return;
-# if (MYSQL_VERSION_ID >= 40110 && MYSQL_VERSION_ID < 50000) || MYSQL_VERSION_ID >= 50003
+# if MYSQL_VERSION_ID >= 50003
if (mysql_library_init(0, 0, 0)) {
# else
if (mysql_server_init(0, 0, 0)) {
# endif
qWarning("QMYSQLDriver::qServerInit: unable to start server.");
}
-# endif // MYSQL_VERSION_ID
#endif // Q_NO_MYSQL_EMBEDDED
#if defined(MARIADB_BASE_VERSION) || defined(MARIADB_VERSION_ID)
@@ -1187,12 +1128,10 @@ static void qLibraryEnd()
{
#if !defined(MARIADB_BASE_VERSION) && !defined(MARIADB_VERSION_ID)
# if !defined(Q_NO_MYSQL_EMBEDDED)
-# if MYSQL_VERSION_ID > 40000
-# if (MYSQL_VERSION_ID >= 40110 && MYSQL_VERSION_ID < 50000) || MYSQL_VERSION_ID >= 50003
- mysql_library_end();
-# else
- mysql_server_end();
-# endif
+# if MYSQL_VERSION_ID >= 50003
+ mysql_library_end();
+# else
+ mysql_server_end();
# endif
# endif
#endif
@@ -1271,17 +1210,9 @@ bool QMYSQLDriver::hasFeature(DriverFeature f) const
return true;
case PreparedQueries:
case PositionalPlaceholders:
-#if MYSQL_VERSION_ID >= 40108
return d->preparedQuerysEnabled;
-#else
- return false;
-#endif
case MultipleResultSets:
-#if MYSQL_VERSION_ID >= 40100
return true;
-#else
- return false;
-#endif
}
return false;
}
@@ -1322,7 +1253,7 @@ bool QMYSQLDriver::open(const QString& db,
we have to enable CLIEN_MULTI_STATEMENTS here, otherwise _any_
stored procedure call will fail.
*/
- unsigned int optionFlags = Q_CLIENT_MULTI_STATEMENTS;
+ unsigned int optionFlags = CLIENT_MULTI_STATEMENTS;
const QStringList opts(connOpts.split(QLatin1Char(';'), QString::SkipEmptyParts));
QString unixSocket;
QString sslCert;
@@ -1330,12 +1261,10 @@ bool QMYSQLDriver::open(const QString& db,
QString sslKey;
QString sslCAPath;
QString sslCipher;
-#if MYSQL_VERSION_ID >= 50000
my_bool reconnect=false;
uint connectTimeout = 0;
uint readTimeout = 0;
uint writeTimeout = 0;
-#endif
// extract the real options from the string
for (int i = 0; i < opts.count(); ++i) {
@@ -1346,18 +1275,15 @@ bool QMYSQLDriver::open(const QString& db,
QString opt = tmp.left(idx).simplified();
if (opt == QLatin1String("UNIX_SOCKET"))
unixSocket = val;
-#if MYSQL_VERSION_ID >= 50000
else if (opt == QLatin1String("MYSQL_OPT_RECONNECT")) {
if (val == QLatin1String("TRUE") || val == QLatin1String("1") || val.isEmpty())
reconnect = true;
- } else if (opt == QLatin1String("MYSQL_OPT_CONNECT_TIMEOUT")) {
+ } else if (opt == QLatin1String("MYSQL_OPT_CONNECT_TIMEOUT"))
connectTimeout = val.toInt();
- } else if (opt == QLatin1String("MYSQL_OPT_READ_TIMEOUT")) {
+ else if (opt == QLatin1String("MYSQL_OPT_READ_TIMEOUT"))
readTimeout = val.toInt();
- } else if (opt == QLatin1String("MYSQL_OPT_WRITE_TIMEOUT")) {
+ else if (opt == QLatin1String("MYSQL_OPT_WRITE_TIMEOUT"))
writeTimeout = val.toInt();
- }
-#endif
else if (opt == QLatin1String("SSL_KEY"))
sslKey = val;
else if (opt == QLatin1String("SSL_CERT"))
@@ -1442,7 +1368,7 @@ bool QMYSQLDriver::open(const QString& db,
return false;
}
-#if (MYSQL_VERSION_ID >= 40113 && MYSQL_VERSION_ID < 50000) || MYSQL_VERSION_ID >= 50007
+#if MYSQL_VERSION_ID >= 50007
if (mysql_get_client_version() >= 50503 && mysql_get_server_version(d->mysql) >= 50503) {
// force the communication to be utf8mb4 (only utf8mb4 supports 4-byte characters)
mysql_set_character_set(d->mysql, "utf8mb4");
@@ -1457,20 +1383,15 @@ bool QMYSQLDriver::open(const QString& db,
d->tc = codec(d->mysql);
#endif
}
-#endif
+#endif // MYSQL_VERSION_ID >= 50007
-#if MYSQL_VERSION_ID >= 40108
d->preparedQuerysEnabled = mysql_get_client_version() >= 40108
&& mysql_get_server_version(d->mysql) >= 40100;
-#else
- d->preparedQuerysEnabled = false;
-#endif
#if QT_CONFIG(thread)
mysql_thread_init();
#endif
-
setOpen(true);
setOpenError(false);
return true;
@@ -1499,46 +1420,21 @@ QStringList QMYSQLDriver::tables(QSql::TableType type) const
{
Q_D(const QMYSQLDriver);
QStringList tl;
-#if MYSQL_VERSION_ID >= 40100
- if( mysql_get_server_version(d->mysql) < 50000)
- {
-#endif
- if (!isOpen())
- return tl;
- if (!(type & QSql::Tables))
- return tl;
-
- MYSQL_RES* tableRes = mysql_list_tables(d->mysql, NULL);
- MYSQL_ROW row;
- int i = 0;
- while (tableRes) {
- mysql_data_seek(tableRes, i);
- row = mysql_fetch_row(tableRes);
- if (!row)
- break;
- tl.append(toUnicode(d->tc, row[0]));
- i++;
- }
- mysql_free_result(tableRes);
-#if MYSQL_VERSION_ID >= 40100
- } else {
- QSqlQuery q(createResult());
- if(type & QSql::Tables) {
- QString sql = QLatin1String("select table_name from information_schema.tables where table_schema = '") + QLatin1String(d->mysql->db) + QLatin1String("' and table_type = 'BASE TABLE'");
- q.exec(sql);
+ QSqlQuery q(createResult());
+ if (type & QSql::Tables) {
+ QString sql = QLatin1String("select table_name from information_schema.tables where table_schema = '") + QLatin1String(d->mysql->db) + QLatin1String("' and table_type = 'BASE TABLE'");
+ q.exec(sql);
- while(q.next())
- tl.append(q.value(0).toString());
- }
- if(type & QSql::Views) {
- QString sql = QLatin1String("select table_name from information_schema.tables where table_schema = '") + QLatin1String(d->mysql->db) + QLatin1String("' and table_type = 'VIEW'");
- q.exec(sql);
+ while (q.next())
+ tl.append(q.value(0).toString());
+ }
+ if (type & QSql::Views) {
+ QString sql = QLatin1String("select table_name from information_schema.tables where table_schema = '") + QLatin1String(d->mysql->db) + QLatin1String("' and table_type = 'VIEW'");
+ q.exec(sql);
- while(q.next())
- tl.append(q.value(0).toString());
- }
+ while (q.next())
+ tl.append(q.value(0).toString());
}
-#endif
return tl;
}
diff --git a/src/plugins/sqldrivers/mysql/qsql_mysql_p.h b/src/plugins/sqldrivers/mysql/qsql_mysql_p.h
index 48b04fb1f5..9ccc8f4e4f 100644
--- a/src/plugins/sqldrivers/mysql/qsql_mysql_p.h
+++ b/src/plugins/sqldrivers/mysql/qsql_mysql_p.h
@@ -75,8 +75,8 @@ class Q_EXPORT_SQLDRIVER_MYSQL QMYSQLDriver : public QSqlDriver
Q_DECLARE_PRIVATE(QMYSQLDriver)
Q_OBJECT
public:
- explicit QMYSQLDriver(QObject *parent=0);
- explicit QMYSQLDriver(MYSQL *con, QObject * parent=0);
+ explicit QMYSQLDriver(QObject *parent=nullptr);
+ explicit QMYSQLDriver(MYSQL *con, QObject * parent=nullptr);
~QMYSQLDriver();
bool hasFeature(DriverFeature f) const override;
bool open(const QString & db,
diff --git a/src/plugins/sqldrivers/psql/qsql_psql.cpp b/src/plugins/sqldrivers/psql/qsql_psql.cpp
index e0f82eee73..d735d29fc7 100644
--- a/src/plugins/sqldrivers/psql/qsql_psql.cpp
+++ b/src/plugins/sqldrivers/psql/qsql_psql.cpp
@@ -1684,7 +1684,12 @@ void QPSQLDriver::_q_handleNotification(int)
if (notify->extra)
payload = d->isUtf8 ? QString::fromUtf8(notify->extra) : QString::fromLatin1(notify->extra);
#endif
+#if QT_DEPRECATED_SINCE(5, 15)
+QT_WARNING_PUSH
+QT_WARNING_DISABLE_DEPRECATED
emit notification(name);
+QT_WARNING_POP
+#endif
QSqlDriver::NotificationSource source = (notify->be_pid == PQbackendPID(d->connection)) ? QSqlDriver::SelfSource : QSqlDriver::OtherSource;
emit notification(name, source, payload);
}
diff --git a/src/plugins/sqldrivers/sqlite/qsql_sqlite.cpp b/src/plugins/sqldrivers/sqlite/qsql_sqlite.cpp
index 001bd673fc..65d3f0a580 100644
--- a/src/plugins/sqldrivers/sqlite/qsql_sqlite.cpp
+++ b/src/plugins/sqldrivers/sqlite/qsql_sqlite.cpp
@@ -1044,7 +1044,12 @@ void QSQLiteDriver::handleNotification(const QString &tableName, qint64 rowid)
{
Q_D(const QSQLiteDriver);
if (d->notificationid.contains(tableName)) {
+#if QT_DEPRECATED_SINCE(5, 15)
+QT_WARNING_PUSH
+QT_WARNING_DISABLE_DEPRECATED
emit notification(tableName);
+QT_WARNING_POP
+#endif
emit notification(tableName, QSqlDriver::UnknownSource, QVariant(rowid));
}
}
diff --git a/src/plugins/sqldrivers/sqlite2/qsql_sqlite2_p.h b/src/plugins/sqldrivers/sqlite2/qsql_sqlite2_p.h
index 48c64536f1..57db0a4d47 100644
--- a/src/plugins/sqldrivers/sqlite2/qsql_sqlite2_p.h
+++ b/src/plugins/sqldrivers/sqlite2/qsql_sqlite2_p.h
@@ -76,8 +76,8 @@ class Q_EXPORT_SQLDRIVER_SQLITE2 QSQLite2Driver : public QSqlDriver
Q_DECLARE_PRIVATE(QSQLite2Driver)
Q_OBJECT
public:
- explicit QSQLite2Driver(QObject *parent = 0);
- explicit QSQLite2Driver(sqlite *connection, QObject *parent = 0);
+ explicit QSQLite2Driver(QObject *parent = nullptr);
+ explicit QSQLite2Driver(sqlite *connection, QObject *parent = nullptr);
~QSQLite2Driver();
bool hasFeature(DriverFeature f) const override;
bool open(const QString &db,
diff --git a/src/plugins/sqldrivers/tds/qsql_tds_p.h b/src/plugins/sqldrivers/tds/qsql_tds_p.h
index 948e3c7024..b72fababbb 100644
--- a/src/plugins/sqldrivers/tds/qsql_tds_p.h
+++ b/src/plugins/sqldrivers/tds/qsql_tds_p.h
@@ -85,8 +85,8 @@ class Q_EXPORT_SQLDRIVER_TDS QTDSDriver : public QSqlDriver
Q_OBJECT
friend class QTDSResultPrivate;
public:
- explicit QTDSDriver(QObject* parent = 0);
- QTDSDriver(LOGINREC* rec, const QString& host, const QString &db, QObject* parent = 0);
+ explicit QTDSDriver(QObject* parent = nullptr);
+ QTDSDriver(LOGINREC* rec, const QString& host, const QString &db, QObject* parent = nullptr);
~QTDSDriver();
bool hasFeature(DriverFeature f) const override;
bool open(const QString &db,
diff --git a/src/plugins/styles/mac/qmacstyle_mac.mm b/src/plugins/styles/mac/qmacstyle_mac.mm
index ecdde06bb8..93d2681fd8 100644
--- a/src/plugins/styles/mac/qmacstyle_mac.mm
+++ b/src/plugins/styles/mac/qmacstyle_mac.mm
@@ -1388,14 +1388,22 @@ void QMacStylePrivate::tabLayout(const QStyleOptionTab *opt, const QWidget *widg
// High-dpi icons do not need adjustment; make sure tabIconSize is not larger than iconSize
tabIconSize = QSize(qMin(tabIconSize.width(), iconSize.width()), qMin(tabIconSize.height(), iconSize.height()));
- *iconRect = QRect(tr.left(), tr.center().y() - tabIconSize.height() / 2,
- tabIconSize.width(), tabIconSize.height());
+ const int stylePadding = proxyStyle->pixelMetric(QStyle::PM_TabBarTabHSpace, opt, widget) / 2 - hpadding;
+
+ if (opt->documentMode) {
+ // documents show the icon as part of the the text
+ const int textWidth =
+ opt->fontMetrics.boundingRect(tr, Qt::AlignCenter | Qt::TextShowMnemonic, opt->text).width();
+ *iconRect = QRect(tr.center().x() - textWidth / 2 - stylePadding - tabIconSize.width(),
+ tr.center().y() - tabIconSize.height() / 2,
+ tabIconSize.width(), tabIconSize.height());
+ } else {
+ *iconRect = QRect(tr.left() + stylePadding, tr.center().y() - tabIconSize.height() / 2,
+ tabIconSize.width(), tabIconSize.height());
+ }
if (!verticalTabs)
*iconRect = proxyStyle->visualRect(opt->direction, opt->rect, *iconRect);
- int stylePadding = proxyStyle->pixelMetric(QStyle::PM_TabBarTabHSpace, opt, widget) / 2;
- stylePadding -= hpadding;
-
tr.setLeft(tr.left() + stylePadding + tabIconSize.width() + 4);
tr.setRight(tr.right() - stylePadding - tabIconSize.width() - 4);
}
@@ -2873,7 +2881,7 @@ int QMacStyle::styleHint(StyleHint sh, const QStyleOption *opt, const QWidget *w
ret = false;
break;
case SH_Table_GridLineColor:
- ret = int(qt_mac_toQColor(NSColor.gridColor).rgb());
+ ret = int(qt_mac_toQColor(NSColor.gridColor).rgba());
break;
default:
ret = QCommonStyle::styleHint(sh, opt, w, hret);
diff --git a/src/plugins/styles/mac/qmacstyle_mac_p_p.h b/src/plugins/styles/mac/qmacstyle_mac_p_p.h
index d6af18f01f..274936bd79 100644
--- a/src/plugins/styles/mac/qmacstyle_mac_p_p.h
+++ b/src/plugins/styles/mac/qmacstyle_mac_p_p.h
@@ -284,7 +284,7 @@ public:
CocoaControlType windowButtonCocoaControl(QStyle::SubControl sc) const;
#if QT_CONFIG(tabbar)
- void tabLayout(const QStyleOptionTab *opt, const QWidget *widget, QRect *textRect, QRect *iconRect) const;
+ void tabLayout(const QStyleOptionTab *opt, const QWidget *widget, QRect *textRect, QRect *iconRect) const override;
static Direction tabDirection(QTabBar::Shape shape);
static bool verticalTabs(QMacStylePrivate::Direction tabDirection);
#endif
diff --git a/src/plugins/styles/windowsvista/qwindowsvistastyle.cpp b/src/plugins/styles/windowsvista/qwindowsvistastyle.cpp
index e213d65946..345267c8fc 100644
--- a/src/plugins/styles/windowsvista/qwindowsvistastyle.cpp
+++ b/src/plugins/styles/windowsvista/qwindowsvistastyle.cpp
@@ -2110,7 +2110,7 @@ int QWindowsVistaStyle::styleHint(StyleHint hint, const QStyleOption *option, co
break;
case SH_Table_GridLineColor:
if (option)
- ret = int(option->palette.color(QPalette::Base).darker(118).rgb());
+ ret = int(option->palette.color(QPalette::Base).darker(118).rgba());
else
ret = -1;
break;
diff --git a/src/plugins/styles/windowsvista/windowsvista.pro b/src/plugins/styles/windowsvista/windowsvista.pro
index c08db7f533..483914c13d 100644
--- a/src/plugins/styles/windowsvista/windowsvista.pro
+++ b/src/plugins/styles/windowsvista/windowsvista.pro
@@ -11,9 +11,7 @@ HEADERS += qwindowsxpstyle_p.h qwindowsxpstyle_p_p.h
SOURCES += qwindowsxpstyle.cpp
QMAKE_USE_PRIVATE += user32 gdi32
-
-# DEFINES/LIBS needed for qwizard_win.cpp and the styles
-include(../../../widgets/kernel/win.pri)
+LIBS_PRIVATE *= -luxtheme
DISTFILES += windowsvistastyle.json
diff --git a/src/printsupport/dialogs/qpagesetupdialog_unix.cpp b/src/printsupport/dialogs/qpagesetupdialog_unix.cpp
index 1d8af9dbf0..ab7a2edb67 100644
--- a/src/printsupport/dialogs/qpagesetupdialog_unix.cpp
+++ b/src/printsupport/dialogs/qpagesetupdialog_unix.cpp
@@ -725,7 +725,7 @@ QPageSetupDialog::QPageSetupDialog(QPrinter *printer, QWidget *parent)
}
QPageSetupDialog::QPageSetupDialog(QWidget *parent)
- : QDialog(*(new QUnixPageSetupDialogPrivate(0)), parent)
+ : QDialog(*(new QUnixPageSetupDialogPrivate(nullptr)), parent)
{
Q_D(QPageSetupDialog);
setWindowTitle(QCoreApplication::translate("QPrintPreviewDialog", "Page Setup"));
diff --git a/src/printsupport/dialogs/qprintdialog_unix.cpp b/src/printsupport/dialogs/qprintdialog_unix.cpp
index c7328d9732..d929367557 100644
--- a/src/printsupport/dialogs/qprintdialog_unix.cpp
+++ b/src/printsupport/dialogs/qprintdialog_unix.cpp
@@ -1176,7 +1176,7 @@ QUnixPrintWidgetPrivate::QUnixPrintWidgetPrivate(QUnixPrintWidget *p, QPrinter *
void QUnixPrintWidgetPrivate::updateWidget()
{
- const bool printToFile = q == 0 || q->isOptionEnabled(QPrintDialog::PrintToFile);
+ const bool printToFile = q == nullptr || q->isOptionEnabled(QPrintDialog::PrintToFile);
if (printToFile && !filePrintersAdded) {
if (widget.printers->count())
widget.printers->insertSeparator(widget.printers->count());
diff --git a/src/printsupport/dialogs/qprintsettingsoutput.ui b/src/printsupport/dialogs/qprintsettingsoutput.ui
index 290111a98c..360634aaa7 100644
--- a/src/printsupport/dialogs/qprintsettingsoutput.ui
+++ b/src/printsupport/dialogs/qprintsettingsoutput.ui
@@ -351,13 +351,13 @@
<item row="0" column="0">
<widget class="QGroupBox" name="duplex">
<property name="title">
- <string>Duplex Printing</string>
+ <string>Double Sided Printing</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QRadioButton" name="noDuplex">
<property name="text">
- <string>None</string>
+ <string>Off</string>
</property>
<property name="checked">
<bool>true</bool>
@@ -367,14 +367,14 @@
<item>
<widget class="QRadioButton" name="duplexLong">
<property name="text">
- <string>Long side</string>
+ <string>Long side binding</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="duplexShort">
<property name="text">
- <string>Short side</string>
+ <string>Short side binding</string>
</property>
</widget>
</item>
diff --git a/src/printsupport/kernel/qpaintengine_alpha.cpp b/src/printsupport/kernel/qpaintengine_alpha.cpp
index 410051df2a..8106db4edb 100644
--- a/src/printsupport/kernel/qpaintengine_alpha.cpp
+++ b/src/printsupport/kernel/qpaintengine_alpha.cpp
@@ -377,16 +377,16 @@ void QAlphaPaintEngine::cleanUp()
delete d->m_picpainter;
delete d->m_pic;
- d->m_picpainter = 0;
- d->m_pic = 0;
- d->m_picengine = 0;
+ d->m_picpainter = nullptr;
+ d->m_pic = nullptr;
+ d->m_picengine = nullptr;
}
QAlphaPaintEnginePrivate::QAlphaPaintEnginePrivate()
: m_pass(0),
- m_pic(0),
- m_picengine(0),
- m_picpainter(0),
+ m_pic(nullptr),
+ m_picengine(nullptr),
+ m_picpainter(nullptr),
m_numberOfCachedRects(0),
m_hasalpha(false),
m_alphaPen(false),
diff --git a/src/printsupport/kernel/qpaintengine_alpha_p.h b/src/printsupport/kernel/qpaintengine_alpha_p.h
index efae442690..bc6ca91017 100644
--- a/src/printsupport/kernel/qpaintengine_alpha_p.h
+++ b/src/printsupport/kernel/qpaintengine_alpha_p.h
@@ -81,7 +81,7 @@ public:
void drawTiledPixmap(const QRectF &r, const QPixmap &pixmap, const QPointF &s) override;
protected:
- QAlphaPaintEngine(QAlphaPaintEnginePrivate &data, PaintEngineFeatures devcaps = 0);
+ QAlphaPaintEngine(QAlphaPaintEnginePrivate &data, PaintEngineFeatures devcaps = { });
QRegion alphaClipping() const;
bool continueCall() const;
void flushAndInit(bool init = true);
diff --git a/src/printsupport/kernel/qplatformprintplugin.h b/src/printsupport/kernel/qplatformprintplugin.h
index 30e8f7938a..db28da4dd3 100644
--- a/src/printsupport/kernel/qplatformprintplugin.h
+++ b/src/printsupport/kernel/qplatformprintplugin.h
@@ -66,7 +66,7 @@ class Q_PRINTSUPPORT_EXPORT QPlatformPrinterSupportPlugin : public QObject
{
Q_OBJECT
public:
- explicit QPlatformPrinterSupportPlugin(QObject *parent = 0);
+ explicit QPlatformPrinterSupportPlugin(QObject *parent = nullptr);
~QPlatformPrinterSupportPlugin();
virtual QPlatformPrinterSupport *create(const QString &key) = 0;
diff --git a/src/printsupport/kernel/qprinter_p.h b/src/printsupport/kernel/qprinter_p.h
index 37c9702c17..4c42ed5717 100644
--- a/src/printsupport/kernel/qprinter_p.h
+++ b/src/printsupport/kernel/qprinter_p.h
@@ -76,12 +76,12 @@ class Q_PRINTSUPPORT_EXPORT QPrinterPrivate
public:
QPrinterPrivate(QPrinter *printer)
: pdfVersion(QPrinter::PdfVersion_1_4),
- printEngine(0),
- paintEngine(0),
- realPrintEngine(0),
- realPaintEngine(0),
+ printEngine(nullptr),
+ paintEngine(nullptr),
+ realPrintEngine(nullptr),
+ realPaintEngine(nullptr),
#if QT_CONFIG(printpreviewwidget)
- previewEngine(0),
+ previewEngine(nullptr),
#endif
q_ptr(printer),
printRange(QPrinter::AllPages),
diff --git a/src/sql/kernel/qsqldatabase.cpp b/src/sql/kernel/qsqldatabase.cpp
index 01726d79ef..32338c1fe2 100644
--- a/src/sql/kernel/qsqldatabase.cpp
+++ b/src/sql/kernel/qsqldatabase.cpp
@@ -84,7 +84,7 @@ Q_GLOBAL_STATIC(QConnectionDict, dbDict)
class QSqlDatabasePrivate
{
public:
- QSqlDatabasePrivate(QSqlDatabase *d, QSqlDriver *dr = 0):
+ QSqlDatabasePrivate(QSqlDatabase *d, QSqlDriver *dr = nullptr):
ref(1),
q(d),
driver(dr),
@@ -178,7 +178,7 @@ DriverDict &QSqlDatabasePrivate::driverDict()
QSqlDatabasePrivate *QSqlDatabasePrivate::shared_null()
{
static QSqlNullDriver dr;
- static QSqlDatabasePrivate n(NULL, &dr);
+ static QSqlDatabasePrivate n(nullptr, &dr);
return &n;
}
@@ -702,7 +702,7 @@ void QSqlDatabasePrivate::init(const QString &type)
qWarning("QSqlDatabase: %s driver not loaded", type.toLatin1().data());
qWarning("QSqlDatabase: available drivers: %s",
QSqlDatabase::drivers().join(QLatin1Char(' ')).toLatin1().data());
- if (QCoreApplication::instance() == 0)
+ if (QCoreApplication::instance() == nullptr)
qWarning("QSqlDatabase: an instance of QCoreApplication is required for loading driver plugins");
driver = shared_null()->driver;
}
diff --git a/src/sql/kernel/qsqldriver.cpp b/src/sql/kernel/qsqldriver.cpp
index 7f7b81b05b..fcd3c70a04 100644
--- a/src/sql/kernel/qsqldriver.cpp
+++ b/src/sql/kernel/qsqldriver.cpp
@@ -51,7 +51,7 @@ QT_BEGIN_NAMESPACE
static QString prepareIdentifier(const QString &identifier,
QSqlDriver::IdentifierType type, const QSqlDriver *driver)
{
- Q_ASSERT( driver != NULL );
+ Q_ASSERT( driver != nullptr );
QString ret = identifier;
if (!driver->isIdentifierEscaped(identifier, type)) {
ret = driver->escapeIdentifier(identifier, type);
@@ -110,6 +110,9 @@ QSqlDriver::~QSqlDriver()
that the driver subscribes to. \a name identifies the event notification.
\sa subscribeToNotification()
+
+ \obsolete use QSqlDriver::notification(const QString &name, QSqlDriver::NotificationSource source, const QVariant &payload)
+ instead
*/
/*!
diff --git a/src/sql/kernel/qsqldriver.h b/src/sql/kernel/qsqldriver.h
index 1e03be48d3..ca9f7dc51e 100644
--- a/src/sql/kernel/qsqldriver.h
+++ b/src/sql/kernel/qsqldriver.h
@@ -135,7 +135,10 @@ public Q_SLOTS:
virtual bool cancelQuery();
Q_SIGNALS:
+#if QT_DEPRECATED_SINCE(5, 15)
+ QT_DEPRECATED_X("Use the 3-args version of notification() instead.")
void notification(const QString &name);
+#endif
void notification(const QString &name, QSqlDriver::NotificationSource source, const QVariant &payload);
protected:
diff --git a/src/sql/models/qsqlrelationaltablemodel.cpp b/src/sql/models/qsqlrelationaltablemodel.cpp
index 34be010474..20adec6a3b 100644
--- a/src/sql/models/qsqlrelationaltablemodel.cpp
+++ b/src/sql/models/qsqlrelationaltablemodel.cpp
@@ -137,7 +137,7 @@ class QRelatedTableModel;
struct QRelation
{
public:
- QRelation(): model(0), m_parent(0), m_dictInitialized(false) {}
+ QRelation(): model(nullptr), m_parent(nullptr), m_dictInitialized(false) {}
void init(QSqlRelationalTableModel *parent, const QSqlRelation &relation);
void populateModel();
@@ -161,7 +161,7 @@ struct QRelation
class QRelatedTableModel : public QSqlTableModel
{
public:
- QRelatedTableModel(QRelation *rel, QObject *parent = 0, QSqlDatabase db = QSqlDatabase());
+ QRelatedTableModel(QRelation *rel, QObject *parent = nullptr, QSqlDatabase db = QSqlDatabase());
bool select() override;
private:
bool firstSelect;
@@ -174,7 +174,7 @@ private:
*/
void QRelation::init(QSqlRelationalTableModel *parent, const QSqlRelation &relation)
{
- Q_ASSERT(parent != NULL);
+ Q_ASSERT(parent != nullptr);
m_parent = parent;
rel = relation;
}
@@ -183,7 +183,7 @@ void QRelation::populateModel()
{
if (!isValid())
return;
- Q_ASSERT(m_parent != NULL);
+ Q_ASSERT(m_parent != nullptr);
if (!model) {
model = new QRelatedTableModel(this, m_parent, m_parent->database());
@@ -202,7 +202,7 @@ void QRelation::populateDictionary()
if (!isValid())
return;
- if (model == NULL)
+ if (model == nullptr)
populateModel();
QSqlRecord record;
@@ -234,13 +234,13 @@ void QRelation::clearDictionary()
void QRelation::clear()
{
delete model;
- model = 0;
+ model = nullptr;
clearDictionary();
}
bool QRelation::isValid()
{
- return (rel.isValid() && m_parent != NULL);
+ return (rel.isValid() && m_parent != nullptr);
}
diff --git a/src/sql/models/qsqltablemodel.cpp b/src/sql/models/qsqltablemodel.cpp
index 4bc9a8c2f8..4b29492134 100644
--- a/src/sql/models/qsqltablemodel.cpp
+++ b/src/sql/models/qsqltablemodel.cpp
@@ -1305,7 +1305,7 @@ Qt::ItemFlags QSqlTableModel::flags(const QModelIndex &index) const
Q_D(const QSqlTableModel);
if (index.internalPointer() || index.column() < 0 || index.column() >= d->rec.count()
|| index.row() < 0)
- return 0;
+ return { };
bool editable = true;
@@ -1369,7 +1369,7 @@ QSqlRecord QSqlTableModel::record(int row) const
// get generated flags from the cache
const QSqlTableModelPrivate::ModifiedRow mrow = d->cache.value(row);
if (mrow.op() != QSqlTableModelPrivate::None) {
- const QSqlRecord crec = mrow.rec();
+ const QSqlRecord &crec = mrow.rec();
for (int i = 0, cnt = rec.count(); i < cnt; ++i)
rec.setGenerated(i, crec.isGenerated(i));
}
diff --git a/src/src.pro b/src/src.pro
index 8ff3ec4c1f..592f0cf644 100644
--- a/src/src.pro
+++ b/src/src.pro
@@ -70,7 +70,7 @@ src_winmain.depends = sub-corelib # just for the module .pri file
src_corelib.subdir = $$PWD/corelib
src_corelib.target = sub-corelib
-src_corelib.depends = src_tools_moc src_tools_rcc src_tools_tracegen
+src_corelib.depends = src_tools_moc src_tools_tracegen
src_xml.subdir = $$PWD/xml
src_xml.target = sub-xml
@@ -118,7 +118,7 @@ src_angle.target = sub-angle
src_gui.subdir = $$PWD/gui
src_gui.target = sub-gui
-src_gui.depends = src_corelib
+src_gui.depends = src_corelib src_tools_rcc
src_platformheaders.subdir = $$PWD/platformheaders
src_platformheaders.target = sub-platformheaders
diff --git a/src/testlib/qtestcase.cpp b/src/testlib/qtestcase.cpp
index 9ab12c5c68..7b407c9073 100644
--- a/src/testlib/qtestcase.cpp
+++ b/src/testlib/qtestcase.cpp
@@ -58,8 +58,8 @@
#include <QtCore/qdiriterator.h>
#include <QtCore/qtemporarydir.h>
#include <QtCore/qthread.h>
-#include <QtCore/qwaitcondition.h>
-#include <QtCore/qmutex.h>
+#include <QtCore/private/qlocking_p.h>
+#include <QtCore/private/qwaitcondition_p.h>
#include <QtCore/qtestsupport_core.h>
@@ -85,6 +85,9 @@
#include <cmath>
#include <numeric>
#include <algorithm>
+#include <condition_variable>
+#include <mutex>
+#include <chrono>
#include <stdarg.h>
#include <stdio.h>
@@ -406,7 +409,7 @@ int Q_TESTLIB_EXPORT defaultKeyDelay()
return keyDelay;
}
#if QT_CONFIG(thread)
-static int defaultTimeout()
+static std::chrono::milliseconds defaultTimeout()
{
if (timeout == -1) {
bool ok = false;
@@ -415,7 +418,7 @@ static int defaultTimeout()
if (!ok || timeout <= 0)
timeout = 5*60*1000;
}
- return timeout;
+ return std::chrono::milliseconds{timeout};
}
#endif
@@ -1008,53 +1011,81 @@ void TestMethods::invokeTestOnData(int index) const
class WatchDog : public QThread
{
+ enum Expectation {
+ ThreadStart,
+ TestFunctionStart,
+ TestFunctionEnd,
+ ThreadEnd,
+ };
+
+ bool waitFor(std::unique_lock<QtPrivate::mutex> &m, Expectation e) {
+ auto expectationChanged = [this, e] { return expecting != e; };
+ switch (e) {
+ case TestFunctionEnd:
+ return waitCondition.wait_for(m, defaultTimeout(), expectationChanged);
+ case ThreadStart:
+ case ThreadEnd:
+ case TestFunctionStart:
+ waitCondition.wait(m, expectationChanged);
+ return true;
+ }
+ Q_UNREACHABLE();
+ return false;
+ }
+
public:
WatchDog()
{
- QMutexLocker locker(&mutex);
- timeout.storeRelaxed(-1);
+ auto locker = qt_unique_lock(mutex);
+ expecting = ThreadStart;
start();
- waitCondition.wait(&mutex);
+ waitFor(locker, ThreadStart);
}
~WatchDog() {
{
- QMutexLocker locker(&mutex);
- timeout.storeRelaxed(0);
- waitCondition.wakeAll();
+ const auto locker = qt_scoped_lock(mutex);
+ expecting = ThreadEnd;
+ waitCondition.notify_all();
}
wait();
}
void beginTest() {
- QMutexLocker locker(&mutex);
- timeout.storeRelaxed(defaultTimeout());
- waitCondition.wakeAll();
+ const auto locker = qt_scoped_lock(mutex);
+ expecting = TestFunctionEnd;
+ waitCondition.notify_all();
}
void testFinished() {
- QMutexLocker locker(&mutex);
- timeout.storeRelaxed(-1);
- waitCondition.wakeAll();
+ const auto locker = qt_scoped_lock(mutex);
+ expecting = TestFunctionStart;
+ waitCondition.notify_all();
}
void run() override {
- QMutexLocker locker(&mutex);
- waitCondition.wakeAll();
+ auto locker = qt_unique_lock(mutex);
+ expecting = TestFunctionStart;
+ waitCondition.notify_all();
while (true) {
- int t = timeout.loadRelaxed();
- if (!t)
- break;
- if (Q_UNLIKELY(!waitCondition.wait(&mutex, t))) {
- stackTrace();
- qFatal("Test function timed out");
+ switch (expecting) {
+ case ThreadEnd:
+ return;
+ case ThreadStart:
+ Q_UNREACHABLE();
+ case TestFunctionStart:
+ case TestFunctionEnd:
+ if (Q_UNLIKELY(!waitFor(locker, expecting))) {
+ stackTrace();
+ qFatal("Test function timed out");
+ }
}
}
}
private:
- QBasicAtomicInt timeout;
- QMutex mutex;
- QWaitCondition waitCondition;
+ QtPrivate::mutex mutex;
+ QtPrivate::condition_variable waitCondition;
+ Expectation expecting;
};
#else // !QT_CONFIG(thread)
diff --git a/src/tools/androidtestrunner/main.cpp b/src/tools/androidtestrunner/main.cpp
index 1046c7b7ef..5471db3afd 100644
--- a/src/tools/androidtestrunner/main.cpp
+++ b/src/tools/androidtestrunner/main.cpp
@@ -460,7 +460,7 @@ int main(int argc, char *argv[])
}
// Run androiddeployqt
- static auto verbose = g_options.verbose ? QStringLiteral("--verbose") : QStringLiteral();
+ static auto verbose = g_options.verbose ? QStringLiteral("--verbose") : QString();
if (!execCommand(QStringLiteral("%1 %3 --reinstall --output %2 --apk %4").arg(g_options.androidDeployQtCommand,
g_options.buildPath,
verbose,
diff --git a/src/tools/bootstrap/bootstrap.pro b/src/tools/bootstrap/bootstrap.pro
index 9863ff5e69..6230cc081d 100644
--- a/src/tools/bootstrap/bootstrap.pro
+++ b/src/tools/bootstrap/bootstrap.pro
@@ -63,8 +63,9 @@ SOURCES += \
../../corelib/kernel/qsharedmemory.cpp \
../../corelib/kernel/qsystemsemaphore.cpp \
../../corelib/plugin/quuid.cpp \
+ ../../corelib/serialization/qcborvalue.cpp \
../../corelib/serialization/qdatastream.cpp \
- ../../corelib/serialization/qjson.cpp \
+ ../../corelib/serialization/qjsoncbor.cpp \
../../corelib/serialization/qjsondocument.cpp \
../../corelib/serialization/qjsonobject.cpp \
../../corelib/serialization/qjsonarray.cpp \
diff --git a/src/tools/moc/collectjson.cpp b/src/tools/moc/collectjson.cpp
new file mode 100644
index 0000000000..4029bca5e9
--- /dev/null
+++ b/src/tools/moc/collectjson.cpp
@@ -0,0 +1,103 @@
+/****************************************************************************
+**
+** Copyright (C) 2018 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:GPL-EXCEPT$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <qfile.h>
+#include <qjsonarray.h>
+#include <qjsondocument.h>
+#include <qjsonobject.h>
+#include <qhashfunctions.h>
+#include <qstringlist.h>
+#include <cstdlib>
+
+static bool readFromDevice(QIODevice *device, QJsonArray *allMetaObjects)
+{
+ const QByteArray contents = device->readAll();
+ if (contents.isEmpty())
+ return true;
+
+ QJsonParseError error {};
+ QJsonDocument metaObjects = QJsonDocument::fromJson(contents, &error);
+ if (error.error != QJsonParseError::NoError) {
+ fprintf(stderr, "%s at %d\n", error.errorString().toUtf8().constData(), error.offset);
+ return false;
+ }
+
+ allMetaObjects->append(metaObjects.object());
+ return true;
+}
+
+int collectJson(const QStringList &jsonFiles, const QString &outputFile)
+{
+ qSetGlobalQHashSeed(0);
+
+ QFile output;
+ if (outputFile.isEmpty()) {
+ if (!output.open(stdout, QIODevice::WriteOnly)) {
+ fprintf(stderr, "Error opening stdout for writing\n");
+ return EXIT_FAILURE;
+ }
+ } else {
+ output.setFileName(outputFile);
+ if (!output.open(QIODevice::WriteOnly)) {
+ fprintf(stderr, "Error opening %s for writing\n", qPrintable(outputFile));
+ return EXIT_FAILURE;
+ }
+ }
+
+ QJsonArray allMetaObjects;
+ if (jsonFiles.isEmpty()) {
+ QFile f;
+ if (!f.open(stdin, QIODevice::ReadOnly)) {
+ fprintf(stderr, "Error opening stdin for reading\n");
+ return EXIT_FAILURE;
+ }
+
+ if (!readFromDevice(&f, &allMetaObjects)) {
+ fprintf(stderr, "Error parsing data from stdin\n");
+ return EXIT_FAILURE;
+ }
+ }
+
+ for (const QString &jsonFile: jsonFiles) {
+ QFile f(jsonFile);
+ if (!f.open(QIODevice::ReadOnly)) {
+ fprintf(stderr, "Error opening %s for reading\n", qPrintable(jsonFile));
+ return EXIT_FAILURE;
+ }
+
+ if (!readFromDevice(&f, &allMetaObjects)) {
+ fprintf(stderr, "Error parsing %s\n", qPrintable(jsonFile));
+ return EXIT_FAILURE;
+ }
+ }
+
+ QJsonDocument doc(allMetaObjects);
+ output.write(doc.toJson());
+
+ return EXIT_SUCCESS;
+}
diff --git a/src/tools/moc/collectjson.h b/src/tools/moc/collectjson.h
new file mode 100644
index 0000000000..9d329c96ca
--- /dev/null
+++ b/src/tools/moc/collectjson.h
@@ -0,0 +1,42 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the tools applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:GPL-EXCEPT$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef COLLECTJSON_H
+#define COLLECTJSON_H
+
+#include <qglobal.h>
+#include <qstring.h>
+#include <qstringlist.h>
+
+QT_BEGIN_NAMESPACE
+
+int collectJson(const QStringList &jsonFiles, const QString &outputFile);
+
+QT_END_NAMESPACE
+
+#endif // COLLECTOJSON_H
diff --git a/src/tools/moc/generator.cpp b/src/tools/moc/generator.cpp
index 6a74e739e6..553e16d472 100644
--- a/src/tools/moc/generator.cpp
+++ b/src/tools/moc/generator.cpp
@@ -77,7 +77,7 @@ static const char *metaTypeEnumValueString(int type)
QT_FOR_EACH_STATIC_TYPE(RETURN_METATYPENAME_STRING)
}
#undef RETURN_METATYPENAME_STRING
- return 0;
+ return nullptr;
}
Generator::Generator(ClassDef *classDef, const QVector<QByteArray> &metaTypes, const QHash<QByteArray, QByteArray> &knownQObjectClasses, const QHash<QByteArray, QByteArray> &knownGadgets, FILE *outfile)
diff --git a/src/tools/moc/main.cpp b/src/tools/moc/main.cpp
index ba559b572f..4aa040a9bb 100644
--- a/src/tools/moc/main.cpp
+++ b/src/tools/moc/main.cpp
@@ -30,6 +30,7 @@
#include "preprocessor.h"
#include "moc.h"
#include "outputrevision.h"
+#include "collectjson.h"
#include <qfile.h>
#include <qfileinfo.h>
@@ -37,10 +38,12 @@
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
+#include <errno.h>
#include <qcoreapplication.h>
#include <qcommandlineoption.h>
#include <qcommandlineparser.h>
+#include <qscopedpointer.h>
QT_BEGIN_NAMESPACE
@@ -77,6 +80,10 @@ void error(const char *msg = "Invalid argument")
fprintf(stderr, "moc: %s\n", msg);
}
+struct ScopedPointerFileCloser
+{
+ static inline void cleanup(FILE *handle) { if (handle) fclose(handle); }
+};
static inline bool hasNext(const Symbols &symbols, int i)
{ return (i < symbols.size()); }
@@ -293,10 +300,20 @@ int runMoc(int argc, char **argv)
ignoreConflictsOption.setDescription(QStringLiteral("Ignore all options that conflict with compilers, like -pthread conflicting with moc's -p option."));
parser.addOption(ignoreConflictsOption);
+ QCommandLineOption jsonOption(QStringLiteral("output-json"));
+ jsonOption.setDescription(QStringLiteral("In addition to generating C++ code, create a machine-readable JSON file in a file that matches the output file and an extra .json extension."));
+ parser.addOption(jsonOption);
+
+ QCommandLineOption collectOption(QStringLiteral("collect-json"));
+ collectOption.setDescription(QStringLiteral("Instead of processing C++ code, collect previously generated JSON output into a single file."));
+ parser.addOption(collectOption);
+
parser.addPositionalArgument(QStringLiteral("[header-file]"),
QStringLiteral("Header file to read from, otherwise stdin."));
parser.addPositionalArgument(QStringLiteral("[@option-file]"),
QStringLiteral("Read additional options from option-file."));
+ parser.addPositionalArgument(QStringLiteral("[MOC generated json file]"),
+ QStringLiteral("MOC generated json output"));
const QStringList arguments = argumentsFromCommandLineAndFile(app.arguments());
if (arguments.isEmpty())
@@ -305,6 +322,10 @@ int runMoc(int argc, char **argv)
parser.process(arguments);
const QStringList files = parser.positionalArguments();
+ output = parser.value(outputOption);
+ if (parser.isSet(collectOption))
+ return collectJson(files, output);
+
if (files.count() > 1) {
error(qPrintable(QLatin1String("Too many input files specified: '") + files.join(QLatin1String("' '")) + QLatin1Char('\'')));
parser.showHelp(1);
@@ -313,7 +334,6 @@ int runMoc(int argc, char **argv)
}
const bool ignoreConflictingOptions = parser.isSet(ignoreConflictsOption);
- output = parser.value(outputOption);
pp.preprocessOnly = parser.isSet(preprocessOption);
if (parser.isSet(noIncludeOption)) {
moc.noInclude = true;
@@ -485,6 +505,8 @@ int runMoc(int argc, char **argv)
// 3. and output meta object code
+ QScopedPointer<FILE, ScopedPointerFileCloser> jsonOutput;
+
if (output.size()) { // output file specified
#if defined(_MSC_VER)
if (_wfopen_s(&out, reinterpret_cast<const wchar_t *>(output.utf16()), L"w") != 0)
@@ -496,6 +518,21 @@ int runMoc(int argc, char **argv)
fprintf(stderr, "moc: Cannot create %s\n", QFile::encodeName(output).constData());
return 1;
}
+
+ if (parser.isSet(jsonOption)) {
+ const QString jsonOutputFileName = output + QLatin1String(".json");
+ FILE *f;
+#if defined(_MSC_VER)
+ if (_wfopen_s(&f, reinterpret_cast<const wchar_t *>(jsonOutputFileName.utf16()), L"w") != 0)
+#else
+ f = fopen(QFile::encodeName(jsonOutputFileName).constData(), "w");
+ if (!f)
+#endif
+ fprintf(stderr, "moc: Cannot create JSON output file %s. %s\n",
+ QFile::encodeName(jsonOutputFileName).constData(),
+ strerror(errno));
+ jsonOutput.reset(f);
+ }
} else { // use stdout
out = stdout;
}
@@ -506,7 +543,7 @@ int runMoc(int argc, char **argv)
if (moc.classList.isEmpty())
moc.note("No relevant classes found. No output generated.");
else
- moc.generate(out);
+ moc.generate(out, jsonOutput.data());
}
if (output.size())
diff --git a/src/tools/moc/moc.cpp b/src/tools/moc/moc.cpp
index 50946443be..8cc605fd8a 100644
--- a/src/tools/moc/moc.cpp
+++ b/src/tools/moc/moc.cpp
@@ -35,6 +35,7 @@
#include <QtCore/qfile.h>
#include <QtCore/qfileinfo.h>
#include <QtCore/qdir.h>
+#include <QtCore/qjsondocument.h>
// for normalizeTypeInternal
#include <private/qmetaobject_moc_p.h>
@@ -999,7 +1000,7 @@ static QByteArrayList requiredQtContainers(const QVector<ClassDef> &classes)
return required;
}
-void Moc::generate(FILE *out)
+void Moc::generate(FILE *out, FILE *jsonOutput)
{
QByteArray fn = filename;
int i = filename.length()-1;
@@ -1062,6 +1063,23 @@ void Moc::generate(FILE *out)
fprintf(out, "QT_WARNING_POP\n");
fprintf(out, "QT_END_MOC_NAMESPACE\n");
+
+ if (jsonOutput) {
+ QJsonObject mocData;
+ mocData[QLatin1String("outputRevision")] = mocOutputRevision;
+ mocData[QLatin1String("inputFile")] = QLatin1String(fn.constData());
+
+ QJsonArray classesJsonFormatted;
+
+ for (const ClassDef &cdef: qAsConst(classList))
+ classesJsonFormatted.append(cdef.toJson());
+
+ if (!classesJsonFormatted.isEmpty())
+ mocData[QLatin1String("classes")] = classesJsonFormatted;
+
+ QJsonDocument jsonDoc(mocData);
+ fputs(jsonDoc.toJson().constData(), jsonOutput);
+ }
}
void Moc::parseSlots(ClassDef *def, FunctionDef::Access access)
@@ -1784,6 +1802,186 @@ void Moc::checkProperties(ClassDef *cdef)
}
}
+QJsonObject ClassDef::toJson() const
+{
+ QJsonObject cls;
+ cls[QLatin1String("className")] = QString::fromUtf8(classname.constData());
+ cls[QLatin1String("qualifiedClassName")] = QString::fromUtf8(qualified.constData());
+
+ QJsonArray classInfos;
+ for (const auto &info: qAsConst(classInfoList)) {
+ QJsonObject infoJson;
+ infoJson[QLatin1String("name")] = QString::fromUtf8(info.name);
+ infoJson[QLatin1String("value")] = QString::fromUtf8(info.value);
+ classInfos.append(infoJson);
+ }
+
+ if (classInfos.size())
+ cls[QLatin1String("classInfos")] = classInfos;
+
+ const auto appendFunctions = [&cls](const QString &type, const QVector<FunctionDef> &funcs) {
+ QJsonArray jsonFuncs;
+
+ for (const FunctionDef &fdef: funcs)
+ jsonFuncs.append(fdef.toJson());
+
+ if (!jsonFuncs.isEmpty())
+ cls[type] = jsonFuncs;
+ };
+
+ appendFunctions(QLatin1String("signals"), signalList);
+ appendFunctions(QLatin1String("slots"), slotList);
+ appendFunctions(QLatin1String("constructors"), constructorList);
+ appendFunctions(QLatin1String("methods"), methodList);
+
+ QJsonArray props;
+
+ for (const PropertyDef &propDef: qAsConst(propertyList))
+ props.append(propDef.toJson());
+
+ if (!props.isEmpty())
+ cls[QLatin1String("properties")] = props;
+
+ if (hasQGadget)
+ cls[QLatin1String("gadget")] = true;
+
+ QJsonArray superClasses;
+
+ for (const auto &super: qAsConst(superclassList)) {
+ const auto name = super.first;
+ const auto access = super.second;
+ QJsonObject superCls;
+ superCls[QLatin1String("name")] = QString::fromUtf8(name);
+ FunctionDef::accessToJson(&superCls, access);
+ superClasses.append(superCls);
+ }
+
+ if (!superClasses.isEmpty())
+ cls[QLatin1String("superClasses")] = superClasses;
+
+ QJsonArray enums;
+ for (const EnumDef &enumDef: qAsConst(enumList))
+ enums.append(enumDef.toJson(*this));
+ if (!enums.isEmpty())
+ cls[QLatin1String("enums")] = enums;
+
+ QJsonArray ifaces;
+ for (const QVector<Interface> &ifaceList: interfaceList) {
+ QJsonArray jsonList;
+ for (const Interface &iface: ifaceList) {
+ QJsonObject ifaceJson;
+ ifaceJson[QLatin1String("id")] = QString::fromUtf8(iface.interfaceId);
+ ifaceJson[QLatin1String("className")] = QString::fromUtf8(iface.className);
+ jsonList.append(ifaceJson);
+ }
+ ifaces.append(jsonList);
+ }
+ if (!ifaces.isEmpty())
+ cls[QLatin1String("interfaces")] = ifaces;
+
+ return cls;
+}
+
+QJsonObject FunctionDef::toJson() const
+{
+ QJsonObject fdef;
+ fdef[QLatin1String("name")] = QString::fromUtf8(name);
+ if (!tag.isEmpty())
+ fdef[QLatin1String("tag")] = QString::fromUtf8(tag);
+ fdef[QLatin1String("returnType")] = QString::fromUtf8(normalizedType);
+ QJsonArray args;
+ for (const ArgumentDef &arg: arguments)
+ args.append(arg.toJson());
+
+ if (!args.isEmpty())
+ fdef[QLatin1String("arguments")] = args;
+
+ accessToJson(&fdef, access);
+
+ if (revision > 0)
+ fdef[QLatin1String("revision")] = revision;
+
+ return fdef;
+}
+
+void FunctionDef::accessToJson(QJsonObject *obj, FunctionDef::Access acs)
+{
+ switch (acs) {
+ case Private: (*obj)[QLatin1String("access")] = QLatin1String("private"); break;
+ case Public: (*obj)[QLatin1String("access")] = QLatin1String("public"); break;
+ case Protected: (*obj)[QLatin1String("access")] = QLatin1String("protected"); break;
+ }
+}
+
+QJsonObject ArgumentDef::toJson() const
+{
+ QJsonObject arg;
+ arg[QLatin1String("type")] = QString::fromUtf8(normalizedType);
+ if (!name.isEmpty())
+ arg[QLatin1String("name")] = QString::fromUtf8(name);
+ return arg;
+}
+
+QJsonObject PropertyDef::toJson() const
+{
+ QJsonObject prop;
+ prop[QLatin1String("name")] = QString::fromUtf8(name);
+ prop[QLatin1String("type")] = QString::fromUtf8(type);
+
+ const auto jsonify = [&prop](const char *str, const QByteArray &member) {
+ if (!member.isEmpty())
+ prop[QLatin1String(str)] = QString::fromUtf8(member);
+ };
+
+ jsonify("member", member);
+ jsonify("read", read);
+ jsonify("write", write);
+ jsonify("reset", reset);
+ jsonify("notify", notify);
+ jsonify("privateClass", inPrivateClass);
+
+ const auto jsonifyBoolOrString = [&prop](const char *str, const QByteArray &boolOrString) {
+ QJsonValue value;
+ if (boolOrString == "true")
+ value = true;
+ else if (boolOrString == "false")
+ value = false;
+ else
+ value = QString::fromUtf8(boolOrString); // function name to query at run-time
+ prop[QLatin1String(str)] = value;
+ };
+
+ jsonifyBoolOrString("designable", designable);
+ jsonifyBoolOrString("scriptable", scriptable);
+ jsonifyBoolOrString("stored", stored);
+ jsonifyBoolOrString("user", user);
+
+ prop[QLatin1String("constant")] = constant;
+ prop[QLatin1String("final")] = final;
+
+ if (revision > 0)
+ prop[QLatin1String("revision")] = revision;
+
+ return prop;
+}
+
+QJsonObject EnumDef::toJson(const ClassDef &cdef) const
+{
+ QJsonObject def;
+ def[QLatin1String("name")] = QString::fromUtf8(name);
+ if (!enumName.isEmpty())
+ def[QLatin1String("alias")] = QString::fromUtf8(enumName);
+ def[QLatin1String("isFlag")] = cdef.enumDeclarations.value(name);
+ def[QLatin1String("isClass")] = isEnumClass;
+
+ QJsonArray valueArr;
+ for (const QByteArray &value: values)
+ valueArr.append(QString::fromUtf8(value));
+ if (!valueArr.isEmpty())
+ def[QLatin1String("values")] = valueArr;
+
+ return def;
+}
QT_END_NAMESPACE
diff --git a/src/tools/moc/moc.h b/src/tools/moc/moc.h
index bb1c9501fe..687ea2552f 100644
--- a/src/tools/moc/moc.h
+++ b/src/tools/moc/moc.h
@@ -61,6 +61,7 @@ struct Type
};
Q_DECLARE_TYPEINFO(Type, Q_MOVABLE_TYPE);
+struct ClassDef;
struct EnumDef
{
QByteArray name;
@@ -68,6 +69,7 @@ struct EnumDef
QVector<QByteArray> values;
bool isEnumClass; // c++11 enum class
EnumDef() : isEnumClass(false) {}
+ QJsonObject toJson(const ClassDef &cdef) const;
};
Q_DECLARE_TYPEINFO(EnumDef, Q_MOVABLE_TYPE);
@@ -78,6 +80,8 @@ struct ArgumentDef
QByteArray rightType, normalizedType, name;
QByteArray typeNameForCast; // type name to be used in cast from void * in metacall
bool isDefault;
+
+ QJsonObject toJson() const;
};
Q_DECLARE_TYPEINFO(ArgumentDef, Q_MOVABLE_TYPE);
@@ -111,6 +115,9 @@ struct FunctionDef
bool isConstructor = false;
bool isDestructor = false;
bool isAbstract = false;
+
+ QJsonObject toJson() const;
+ static void accessToJson(QJsonObject *obj, Access acs);
};
Q_DECLARE_TYPEINFO(FunctionDef, Q_MOVABLE_TYPE);
@@ -130,6 +137,8 @@ struct PropertyDef
int revision = 0;
bool constant = false;
bool final = false;
+
+ QJsonObject toJson() const;
};
Q_DECLARE_TYPEINFO(PropertyDef, Q_MOVABLE_TYPE);
@@ -183,6 +192,7 @@ struct ClassDef : BaseDef {
bool hasQObject = false;
bool hasQGadget = false;
+ QJsonObject toJson() const;
};
Q_DECLARE_TYPEINFO(ClassDef, Q_MOVABLE_TYPE);
Q_DECLARE_TYPEINFO(ClassDef::Interface, Q_MOVABLE_TYPE);
@@ -215,7 +225,7 @@ public:
QMap<QString, QJsonArray> metaArgs;
void parse();
- void generate(FILE *out);
+ void generate(FILE *out, FILE *jsonOutput);
bool parseClassHead(ClassDef *def);
inline bool inClass(const ClassDef *def) const {
diff --git a/src/tools/moc/moc.pri b/src/tools/moc/moc.pri
index 90839a445b..278d5607cd 100644
--- a/src/tools/moc/moc.pri
+++ b/src/tools/moc/moc.pri
@@ -10,9 +10,12 @@ HEADERS = $$PWD/moc.h \
$$PWD/utils.h \
$$PWD/generator.h \
$$PWD/outputrevision.h \
- $$PWD/cbordevice.h
+ $$PWD/cbordevice.h \
+ $$PWD/collectjson.h
+
SOURCES = $$PWD/moc.cpp \
$$PWD/preprocessor.cpp \
$$PWD/generator.cpp \
$$PWD/parser.cpp \
- $$PWD/token.cpp
+ $$PWD/token.cpp \
+ $$PWD/collectjson.cpp
diff --git a/src/tools/moc/parser.cpp b/src/tools/moc/parser.cpp
index b7aefae1ec..068f75d4bd 100644
--- a/src/tools/moc/parser.cpp
+++ b/src/tools/moc/parser.cpp
@@ -37,7 +37,7 @@ QT_BEGIN_NAMESPACE
Symbol::LexemStore Symbol::lexemStore;
#endif
-static const char *error_msg = 0;
+static const char *error_msg = nullptr;
#ifdef Q_CC_MSVC
#define ErrorFormatString "%s(%d): "
diff --git a/src/tools/moc/preprocessor.cpp b/src/tools/moc/preprocessor.cpp
index d135bddb4c..a99b8cc80c 100644
--- a/src/tools/moc/preprocessor.cpp
+++ b/src/tools/moc/preprocessor.cpp
@@ -943,7 +943,7 @@ int PP_Expression::primary_expression()
test(PP_RPAREN);
} else {
next();
- value = lexem().toInt(0, 0);
+ value = lexem().toInt(nullptr, 0);
}
return value;
}
diff --git a/src/tools/uic/cpp/cppwriteinitialization.cpp b/src/tools/uic/cpp/cppwriteinitialization.cpp
index 0349061089..9bb2cfcfea 100644
--- a/src/tools/uic/cpp/cppwriteinitialization.cpp
+++ b/src/tools/uic/cpp/cppwriteinitialization.cpp
@@ -2304,7 +2304,7 @@ void WriteInitialization::initializeTreeWidget(DomWidget *w)
QString tempName = disableSorting(w, varName);
- QList<Item *> items = initializeTreeWidgetItems(w->elementItem());
+ const auto items = initializeTreeWidgetItems(w->elementItem());
for (int i = 0; i < items.count(); i++) {
Item *itm = items[i];
itm->writeSetupUi(varName);
@@ -2326,10 +2326,10 @@ void WriteInitialization::initializeTreeWidget(DomWidget *w)
conditions an item is needed needs to be done bottom-up, the whole process makes
two passes, storing the intermediate result in a recursive StringInitializerListMap.
*/
-QList<WriteInitialization::Item *> WriteInitialization::initializeTreeWidgetItems(const QVector<DomItem *> &domItems)
+WriteInitialization::Items WriteInitialization::initializeTreeWidgetItems(const QVector<DomItem *> &domItems)
{
// items
- QList<Item *> items;
+ Items items;
const int numDomItems = domItems.size();
items.reserve(numDomItems);
@@ -2357,7 +2357,7 @@ QList<WriteInitialization::Item *> WriteInitialization::initializeTreeWidgetItem
// AbstractFromBuilder saves flags last, so they always end up in the last column's map.
addQtFlagsInitializer(item, map, QLatin1String("flags"));
- const QList<Item *> subItems = initializeTreeWidgetItems(domItem->elementItem());
+ const auto subItems = initializeTreeWidgetItems(domItem->elementItem());
for (Item *subItem : subItems)
item->addChild(subItem);
}
diff --git a/src/tools/uic/cpp/cppwriteinitialization.h b/src/tools/uic/cpp/cppwriteinitialization.h
index 6f8e352f6a..ab996a2800 100644
--- a/src/tools/uic/cpp/cppwriteinitialization.h
+++ b/src/tools/uic/cpp/cppwriteinitialization.h
@@ -187,7 +187,7 @@ private:
};
ItemData m_setupUiData;
ItemData m_retranslateUiData;
- QList<Item *> m_children;
+ QVector<Item *> m_children;
Item *m_parent = nullptr;
const QString m_itemClassName;
@@ -196,6 +196,7 @@ private:
QTextStream &m_retranslateUiStream;
Driver *m_driver;
};
+ using Items = QVector<Item *>;
void addInitializer(Item *item,
const QString &name, int column, const QString &value, const QString &directive = QString(), bool translatable = false) const;
@@ -214,7 +215,7 @@ private:
void initializeComboBox(DomWidget *w);
void initializeListWidget(DomWidget *w);
void initializeTreeWidget(DomWidget *w);
- QList<Item *> initializeTreeWidgetItems(const QVector<DomItem *> &domItems);
+ Items initializeTreeWidgetItems(const QVector<DomItem *> &domItems);
void initializeTableWidget(DomWidget *w);
QString disableSorting(DomWidget *w, const QString &varName);
diff --git a/src/tools/uic/treewalker.h b/src/tools/uic/treewalker.h
index 3777229517..6905d74fd9 100644
--- a/src/tools/uic/treewalker.h
+++ b/src/tools/uic/treewalker.h
@@ -29,7 +29,7 @@
#ifndef TREEWALKER_H
#define TREEWALKER_H
-#include <qlist.h>
+#include <qvector.h>
QT_BEGIN_NAMESPACE
diff --git a/src/tools/uic/ui4.cpp b/src/tools/uic/ui4.cpp
index 334ced276d..f52a8bd7d4 100644
--- a/src/tools/uic/ui4.cpp
+++ b/src/tools/uic/ui4.cpp
@@ -59,7 +59,7 @@ void DomUI::read(QXmlStreamReader &reader)
{
const QXmlStreamAttributes &attributes = reader.attributes();
for (const QXmlStreamAttribute &attribute : attributes) {
- const QStringRef name = attribute.name();
+ const auto name = attribute.name();
if (name == QLatin1String("version")) {
setAttributeVersion(attribute.value().toString());
continue;
@@ -94,7 +94,7 @@ void DomUI::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
if (!tag.compare(QLatin1String("author"), Qt::CaseInsensitive)) {
setElementAuthor(reader.readElementText());
continue;
@@ -581,7 +581,7 @@ void DomIncludes::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
if (!tag.compare(QLatin1String("include"), Qt::CaseInsensitive)) {
auto *v = new DomInclude();
v->read(reader);
@@ -621,7 +621,7 @@ void DomInclude::read(QXmlStreamReader &reader)
{
const QXmlStreamAttributes &attributes = reader.attributes();
for (const QXmlStreamAttribute &attribute : attributes) {
- const QStringRef name = attribute.name();
+ const auto name = attribute.name();
if (name == QLatin1String("location")) {
setAttributeLocation(attribute.value().toString());
continue;
@@ -636,7 +636,7 @@ void DomInclude::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
reader.raiseError(QLatin1String("Unexpected element ") + tag);
}
break;
@@ -678,7 +678,7 @@ void DomResources::read(QXmlStreamReader &reader)
{
const QXmlStreamAttributes &attributes = reader.attributes();
for (const QXmlStreamAttribute &attribute : attributes) {
- const QStringRef name = attribute.name();
+ const auto name = attribute.name();
if (name == QLatin1String("name")) {
setAttributeName(attribute.value().toString());
continue;
@@ -689,7 +689,7 @@ void DomResources::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
if (!tag.compare(QLatin1String("include"), Qt::CaseInsensitive)) {
auto *v = new DomResource();
v->read(reader);
@@ -732,7 +732,7 @@ void DomResource::read(QXmlStreamReader &reader)
{
const QXmlStreamAttributes &attributes = reader.attributes();
for (const QXmlStreamAttribute &attribute : attributes) {
- const QStringRef name = attribute.name();
+ const auto name = attribute.name();
if (name == QLatin1String("location")) {
setAttributeLocation(attribute.value().toString());
continue;
@@ -743,7 +743,7 @@ void DomResource::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
reader.raiseError(QLatin1String("Unexpected element ") + tag);
}
break;
@@ -781,7 +781,7 @@ void DomActionGroup::read(QXmlStreamReader &reader)
{
const QXmlStreamAttributes &attributes = reader.attributes();
for (const QXmlStreamAttribute &attribute : attributes) {
- const QStringRef name = attribute.name();
+ const auto name = attribute.name();
if (name == QLatin1String("name")) {
setAttributeName(attribute.value().toString());
continue;
@@ -792,7 +792,7 @@ void DomActionGroup::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
if (!tag.compare(QLatin1String("action"), Qt::CaseInsensitive)) {
auto *v = new DomAction();
v->read(reader);
@@ -886,7 +886,7 @@ void DomAction::read(QXmlStreamReader &reader)
{
const QXmlStreamAttributes &attributes = reader.attributes();
for (const QXmlStreamAttribute &attribute : attributes) {
- const QStringRef name = attribute.name();
+ const auto name = attribute.name();
if (name == QLatin1String("name")) {
setAttributeName(attribute.value().toString());
continue;
@@ -901,7 +901,7 @@ void DomAction::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
if (!tag.compare(QLatin1String("property"), Qt::CaseInsensitive)) {
auto *v = new DomProperty();
v->read(reader);
@@ -962,7 +962,7 @@ void DomActionRef::read(QXmlStreamReader &reader)
{
const QXmlStreamAttributes &attributes = reader.attributes();
for (const QXmlStreamAttribute &attribute : attributes) {
- const QStringRef name = attribute.name();
+ const auto name = attribute.name();
if (name == QLatin1String("name")) {
setAttributeName(attribute.value().toString());
continue;
@@ -973,7 +973,7 @@ void DomActionRef::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
reader.raiseError(QLatin1String("Unexpected element ") + tag);
}
break;
@@ -1007,7 +1007,7 @@ void DomButtonGroup::read(QXmlStreamReader &reader)
{
const QXmlStreamAttributes &attributes = reader.attributes();
for (const QXmlStreamAttribute &attribute : attributes) {
- const QStringRef name = attribute.name();
+ const auto name = attribute.name();
if (name == QLatin1String("name")) {
setAttributeName(attribute.value().toString());
continue;
@@ -1018,7 +1018,7 @@ void DomButtonGroup::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
if (!tag.compare(QLatin1String("property"), Qt::CaseInsensitive)) {
auto *v = new DomProperty();
v->read(reader);
@@ -1081,7 +1081,7 @@ void DomButtonGroups::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
if (!tag.compare(QLatin1String("buttongroup"), Qt::CaseInsensitive)) {
auto *v = new DomButtonGroup();
v->read(reader);
@@ -1126,7 +1126,7 @@ void DomCustomWidgets::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
if (!tag.compare(QLatin1String("customwidget"), Qt::CaseInsensitive)) {
auto *v = new DomCustomWidget();
v->read(reader);
@@ -1166,7 +1166,7 @@ void DomHeader::read(QXmlStreamReader &reader)
{
const QXmlStreamAttributes &attributes = reader.attributes();
for (const QXmlStreamAttribute &attribute : attributes) {
- const QStringRef name = attribute.name();
+ const auto name = attribute.name();
if (name == QLatin1String("location")) {
setAttributeLocation(attribute.value().toString());
continue;
@@ -1177,7 +1177,7 @@ void DomHeader::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
reader.raiseError(QLatin1String("Unexpected element ") + tag);
}
break;
@@ -1219,7 +1219,7 @@ void DomCustomWidget::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
if (!tag.compare(QLatin1String("class"), Qt::CaseInsensitive)) {
setElementClass(reader.readElementText());
continue;
@@ -1473,7 +1473,7 @@ void DomLayoutDefault::read(QXmlStreamReader &reader)
{
const QXmlStreamAttributes &attributes = reader.attributes();
for (const QXmlStreamAttribute &attribute : attributes) {
- const QStringRef name = attribute.name();
+ const auto name = attribute.name();
if (name == QLatin1String("spacing")) {
setAttributeSpacing(attribute.value().toInt());
continue;
@@ -1488,7 +1488,7 @@ void DomLayoutDefault::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
reader.raiseError(QLatin1String("Unexpected element ") + tag);
}
break;
@@ -1519,7 +1519,7 @@ void DomLayoutFunction::read(QXmlStreamReader &reader)
{
const QXmlStreamAttributes &attributes = reader.attributes();
for (const QXmlStreamAttribute &attribute : attributes) {
- const QStringRef name = attribute.name();
+ const auto name = attribute.name();
if (name == QLatin1String("spacing")) {
setAttributeSpacing(attribute.value().toString());
continue;
@@ -1534,7 +1534,7 @@ void DomLayoutFunction::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
reader.raiseError(QLatin1String("Unexpected element ") + tag);
}
break;
@@ -1569,7 +1569,7 @@ void DomTabStops::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
if (!tag.compare(QLatin1String("tabstop"), Qt::CaseInsensitive)) {
m_tabStop.append(reader.readElementText());
continue;
@@ -1615,7 +1615,7 @@ void DomLayout::read(QXmlStreamReader &reader)
{
const QXmlStreamAttributes &attributes = reader.attributes();
for (const QXmlStreamAttribute &attribute : attributes) {
- const QStringRef name = attribute.name();
+ const auto name = attribute.name();
if (name == QLatin1String("class")) {
setAttributeClass(attribute.value().toString());
continue;
@@ -1650,7 +1650,7 @@ void DomLayout::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
if (!tag.compare(QLatin1String("property"), Qt::CaseInsensitive)) {
auto *v = new DomProperty();
v->read(reader);
@@ -1759,7 +1759,7 @@ void DomLayoutItem::read(QXmlStreamReader &reader)
{
const QXmlStreamAttributes &attributes = reader.attributes();
for (const QXmlStreamAttribute &attribute : attributes) {
- const QStringRef name = attribute.name();
+ const auto name = attribute.name();
if (name == QLatin1String("row")) {
setAttributeRow(attribute.value().toInt());
continue;
@@ -1786,7 +1786,7 @@ void DomLayoutItem::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
if (!tag.compare(QLatin1String("widget"), Qt::CaseInsensitive)) {
auto *v = new DomWidget();
v->read(reader);
@@ -1910,7 +1910,7 @@ void DomRow::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
if (!tag.compare(QLatin1String("property"), Qt::CaseInsensitive)) {
auto *v = new DomProperty();
v->read(reader);
@@ -1955,7 +1955,7 @@ void DomColumn::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
if (!tag.compare(QLatin1String("property"), Qt::CaseInsensitive)) {
auto *v = new DomProperty();
v->read(reader);
@@ -2001,7 +2001,7 @@ void DomItem::read(QXmlStreamReader &reader)
{
const QXmlStreamAttributes &attributes = reader.attributes();
for (const QXmlStreamAttribute &attribute : attributes) {
- const QStringRef name = attribute.name();
+ const auto name = attribute.name();
if (name == QLatin1String("row")) {
setAttributeRow(attribute.value().toInt());
continue;
@@ -2016,7 +2016,7 @@ void DomItem::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
if (!tag.compare(QLatin1String("property"), Qt::CaseInsensitive)) {
auto *v = new DomProperty();
v->read(reader);
@@ -2101,7 +2101,7 @@ void DomWidget::read(QXmlStreamReader &reader)
{
const QXmlStreamAttributes &attributes = reader.attributes();
for (const QXmlStreamAttribute &attribute : attributes) {
- const QStringRef name = attribute.name();
+ const auto name = attribute.name();
if (name == QLatin1String("class")) {
setAttributeClass(attribute.value().toString());
continue;
@@ -2120,7 +2120,7 @@ void DomWidget::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
if (!tag.compare(QLatin1String("class"), Qt::CaseInsensitive)) {
m_class.append(reader.readElementText());
continue;
@@ -2344,7 +2344,7 @@ void DomSpacer::read(QXmlStreamReader &reader)
{
const QXmlStreamAttributes &attributes = reader.attributes();
for (const QXmlStreamAttribute &attribute : attributes) {
- const QStringRef name = attribute.name();
+ const auto name = attribute.name();
if (name == QLatin1String("name")) {
setAttributeName(attribute.value().toString());
continue;
@@ -2355,7 +2355,7 @@ void DomSpacer::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
if (!tag.compare(QLatin1String("property"), Qt::CaseInsensitive)) {
auto *v = new DomProperty();
v->read(reader);
@@ -2398,7 +2398,7 @@ void DomColor::read(QXmlStreamReader &reader)
{
const QXmlStreamAttributes &attributes = reader.attributes();
for (const QXmlStreamAttribute &attribute : attributes) {
- const QStringRef name = attribute.name();
+ const auto name = attribute.name();
if (name == QLatin1String("alpha")) {
setAttributeAlpha(attribute.value().toInt());
continue;
@@ -2409,7 +2409,7 @@ void DomColor::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
if (!tag.compare(QLatin1String("red"), Qt::CaseInsensitive)) {
setElementRed(reader.readElementText().toInt());
continue;
@@ -2494,7 +2494,7 @@ void DomGradientStop::read(QXmlStreamReader &reader)
{
const QXmlStreamAttributes &attributes = reader.attributes();
for (const QXmlStreamAttribute &attribute : attributes) {
- const QStringRef name = attribute.name();
+ const auto name = attribute.name();
if (name == QLatin1String("position")) {
setAttributePosition(attribute.value().toDouble());
continue;
@@ -2505,7 +2505,7 @@ void DomGradientStop::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
if (!tag.compare(QLatin1String("color"), Qt::CaseInsensitive)) {
auto *v = new DomColor();
v->read(reader);
@@ -2568,7 +2568,7 @@ void DomGradient::read(QXmlStreamReader &reader)
{
const QXmlStreamAttributes &attributes = reader.attributes();
for (const QXmlStreamAttribute &attribute : attributes) {
- const QStringRef name = attribute.name();
+ const auto name = attribute.name();
if (name == QLatin1String("startx")) {
setAttributeStartX(attribute.value().toDouble());
continue;
@@ -2627,7 +2627,7 @@ void DomGradient::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
if (!tag.compare(QLatin1String("gradientstop"), Qt::CaseInsensitive)) {
auto *v = new DomGradientStop();
v->read(reader);
@@ -2724,7 +2724,7 @@ void DomBrush::read(QXmlStreamReader &reader)
{
const QXmlStreamAttributes &attributes = reader.attributes();
for (const QXmlStreamAttribute &attribute : attributes) {
- const QStringRef name = attribute.name();
+ const auto name = attribute.name();
if (name == QLatin1String("brushstyle")) {
setAttributeBrushStyle(attribute.value().toString());
continue;
@@ -2735,7 +2735,7 @@ void DomBrush::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
if (!tag.compare(QLatin1String("color"), Qt::CaseInsensitive)) {
auto *v = new DomColor();
v->read(reader);
@@ -2845,7 +2845,7 @@ void DomColorRole::read(QXmlStreamReader &reader)
{
const QXmlStreamAttributes &attributes = reader.attributes();
for (const QXmlStreamAttribute &attribute : attributes) {
- const QStringRef name = attribute.name();
+ const auto name = attribute.name();
if (name == QLatin1String("role")) {
setAttributeRole(attribute.value().toString());
continue;
@@ -2856,7 +2856,7 @@ void DomColorRole::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
if (!tag.compare(QLatin1String("brush"), Qt::CaseInsensitive)) {
auto *v = new DomBrush();
v->read(reader);
@@ -2922,7 +2922,7 @@ void DomColorGroup::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
if (!tag.compare(QLatin1String("colorrole"), Qt::CaseInsensitive)) {
auto *v = new DomColorRole();
v->read(reader);
@@ -2983,7 +2983,7 @@ void DomPalette::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
if (!tag.compare(QLatin1String("active"), Qt::CaseInsensitive)) {
auto *v = new DomColorGroup();
v->read(reader);
@@ -3102,7 +3102,7 @@ void DomFont::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
if (!tag.compare(QLatin1String("family"), Qt::CaseInsensitive)) {
setElementFamily(reader.readElementText());
continue;
@@ -3308,7 +3308,7 @@ void DomPoint::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
if (!tag.compare(QLatin1String("x"), Qt::CaseInsensitive)) {
setElementX(reader.readElementText().toInt());
continue;
@@ -3370,7 +3370,7 @@ void DomRect::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
if (!tag.compare(QLatin1String("x"), Qt::CaseInsensitive)) {
setElementX(reader.readElementText().toInt());
continue;
@@ -3467,7 +3467,7 @@ void DomLocale::read(QXmlStreamReader &reader)
{
const QXmlStreamAttributes &attributes = reader.attributes();
for (const QXmlStreamAttribute &attribute : attributes) {
- const QStringRef name = attribute.name();
+ const auto name = attribute.name();
if (name == QLatin1String("language")) {
setAttributeLanguage(attribute.value().toString());
continue;
@@ -3482,7 +3482,7 @@ void DomLocale::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
reader.raiseError(QLatin1String("Unexpected element ") + tag);
}
break;
@@ -3513,7 +3513,7 @@ void DomSizePolicy::read(QXmlStreamReader &reader)
{
const QXmlStreamAttributes &attributes = reader.attributes();
for (const QXmlStreamAttribute &attribute : attributes) {
- const QStringRef name = attribute.name();
+ const auto name = attribute.name();
if (name == QLatin1String("hsizetype")) {
setAttributeHSizeType(attribute.value().toString());
continue;
@@ -3528,7 +3528,7 @@ void DomSizePolicy::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
if (!tag.compare(QLatin1String("hsizetype"), Qt::CaseInsensitive)) {
setElementHSizeType(reader.readElementText().toInt());
continue;
@@ -3632,7 +3632,7 @@ void DomSize::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
if (!tag.compare(QLatin1String("width"), Qt::CaseInsensitive)) {
setElementWidth(reader.readElementText().toInt());
continue;
@@ -3694,7 +3694,7 @@ void DomDate::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
if (!tag.compare(QLatin1String("year"), Qt::CaseInsensitive)) {
setElementYear(reader.readElementText().toInt());
continue;
@@ -3774,7 +3774,7 @@ void DomTime::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
if (!tag.compare(QLatin1String("hour"), Qt::CaseInsensitive)) {
setElementHour(reader.readElementText().toInt());
continue;
@@ -3854,7 +3854,7 @@ void DomDateTime::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
if (!tag.compare(QLatin1String("hour"), Qt::CaseInsensitive)) {
setElementHour(reader.readElementText().toInt());
continue;
@@ -3990,7 +3990,7 @@ void DomStringList::read(QXmlStreamReader &reader)
{
const QXmlStreamAttributes &attributes = reader.attributes();
for (const QXmlStreamAttribute &attribute : attributes) {
- const QStringRef name = attribute.name();
+ const auto name = attribute.name();
if (name == QLatin1String("notr")) {
setAttributeNotr(attribute.value().toString());
continue;
@@ -4013,7 +4013,7 @@ void DomStringList::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
if (!tag.compare(QLatin1String("string"), Qt::CaseInsensitive)) {
m_string.append(reader.readElementText());
continue;
@@ -4063,7 +4063,7 @@ void DomResourcePixmap::read(QXmlStreamReader &reader)
{
const QXmlStreamAttributes &attributes = reader.attributes();
for (const QXmlStreamAttribute &attribute : attributes) {
- const QStringRef name = attribute.name();
+ const auto name = attribute.name();
if (name == QLatin1String("resource")) {
setAttributeResource(attribute.value().toString());
continue;
@@ -4078,7 +4078,7 @@ void DomResourcePixmap::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
reader.raiseError(QLatin1String("Unexpected element ") + tag);
}
break;
@@ -4126,7 +4126,7 @@ void DomResourceIcon::read(QXmlStreamReader &reader)
{
const QXmlStreamAttributes &attributes = reader.attributes();
for (const QXmlStreamAttribute &attribute : attributes) {
- const QStringRef name = attribute.name();
+ const auto name = attribute.name();
if (name == QLatin1String("theme")) {
setAttributeTheme(attribute.value().toString());
continue;
@@ -4141,7 +4141,7 @@ void DomResourceIcon::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
if (!tag.compare(QLatin1String("normaloff"), Qt::CaseInsensitive)) {
auto *v = new DomResourcePixmap();
v->read(reader);
@@ -4427,7 +4427,7 @@ void DomString::read(QXmlStreamReader &reader)
{
const QXmlStreamAttributes &attributes = reader.attributes();
for (const QXmlStreamAttribute &attribute : attributes) {
- const QStringRef name = attribute.name();
+ const auto name = attribute.name();
if (name == QLatin1String("notr")) {
setAttributeNotr(attribute.value().toString());
continue;
@@ -4450,7 +4450,7 @@ void DomString::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
reader.raiseError(QLatin1String("Unexpected element ") + tag);
}
break;
@@ -4495,7 +4495,7 @@ void DomPointF::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
if (!tag.compare(QLatin1String("x"), Qt::CaseInsensitive)) {
setElementX(reader.readElementText().toDouble());
continue;
@@ -4557,7 +4557,7 @@ void DomRectF::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
if (!tag.compare(QLatin1String("x"), Qt::CaseInsensitive)) {
setElementX(reader.readElementText().toDouble());
continue;
@@ -4655,7 +4655,7 @@ void DomSizeF::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
if (!tag.compare(QLatin1String("width"), Qt::CaseInsensitive)) {
setElementWidth(reader.readElementText().toDouble());
continue;
@@ -4717,7 +4717,7 @@ void DomChar::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
if (!tag.compare(QLatin1String("unicode"), Qt::CaseInsensitive)) {
setElementUnicode(reader.readElementText().toInt());
continue;
@@ -4764,7 +4764,7 @@ void DomUrl::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
if (!tag.compare(QLatin1String("string"), Qt::CaseInsensitive)) {
auto *v = new DomString();
v->read(reader);
@@ -4899,7 +4899,7 @@ void DomProperty::read(QXmlStreamReader &reader)
{
const QXmlStreamAttributes &attributes = reader.attributes();
for (const QXmlStreamAttribute &attribute : attributes) {
- const QStringRef name = attribute.name();
+ const auto name = attribute.name();
if (name == QLatin1String("name")) {
setAttributeName(attribute.value().toString());
continue;
@@ -4914,7 +4914,7 @@ void DomProperty::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
if (!tag.compare(QLatin1String("bool"), Qt::CaseInsensitive)) {
setElementBool(reader.readElementText());
continue;
@@ -5659,7 +5659,7 @@ void DomConnections::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
if (!tag.compare(QLatin1String("connection"), Qt::CaseInsensitive)) {
auto *v = new DomConnection();
v->read(reader);
@@ -5703,7 +5703,7 @@ void DomConnection::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
if (!tag.compare(QLatin1String("sender"), Qt::CaseInsensitive)) {
setElementSender(reader.readElementText());
continue;
@@ -5836,7 +5836,7 @@ void DomConnectionHints::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
if (!tag.compare(QLatin1String("hint"), Qt::CaseInsensitive)) {
auto *v = new DomConnectionHint();
v->read(reader);
@@ -5876,7 +5876,7 @@ void DomConnectionHint::read(QXmlStreamReader &reader)
{
const QXmlStreamAttributes &attributes = reader.attributes();
for (const QXmlStreamAttribute &attribute : attributes) {
- const QStringRef name = attribute.name();
+ const auto name = attribute.name();
if (name == QLatin1String("type")) {
setAttributeType(attribute.value().toString());
continue;
@@ -5887,7 +5887,7 @@ void DomConnectionHint::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
if (!tag.compare(QLatin1String("x"), Qt::CaseInsensitive)) {
setElementX(reader.readElementText().toInt());
continue;
@@ -5956,7 +5956,7 @@ void DomDesignerData::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
if (!tag.compare(QLatin1String("property"), Qt::CaseInsensitive)) {
auto *v = new DomProperty();
v->read(reader);
@@ -6001,7 +6001,7 @@ void DomSlots::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
if (!tag.compare(QLatin1String("signal"), Qt::CaseInsensitive)) {
m_signal.append(reader.readElementText());
continue;
@@ -6059,7 +6059,7 @@ void DomPropertySpecifications::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
if (!tag.compare(QLatin1String("tooltip"), Qt::CaseInsensitive)) {
auto *v = new DomPropertyToolTip();
v->read(reader);
@@ -6114,7 +6114,7 @@ void DomPropertyToolTip::read(QXmlStreamReader &reader)
{
const QXmlStreamAttributes &attributes = reader.attributes();
for (const QXmlStreamAttribute &attribute : attributes) {
- const QStringRef name = attribute.name();
+ const auto name = attribute.name();
if (name == QLatin1String("name")) {
setAttributeName(attribute.value().toString());
continue;
@@ -6125,7 +6125,7 @@ void DomPropertyToolTip::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
reader.raiseError(QLatin1String("Unexpected element ") + tag);
}
break;
@@ -6153,7 +6153,7 @@ void DomStringPropertySpecification::read(QXmlStreamReader &reader)
{
const QXmlStreamAttributes &attributes = reader.attributes();
for (const QXmlStreamAttribute &attribute : attributes) {
- const QStringRef name = attribute.name();
+ const auto name = attribute.name();
if (name == QLatin1String("name")) {
setAttributeName(attribute.value().toString());
continue;
@@ -6172,7 +6172,7 @@ void DomStringPropertySpecification::read(QXmlStreamReader &reader)
while (!reader.hasError()) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
- const QStringRef tag = reader.name();
+ const auto tag = reader.name();
reader.raiseError(QLatin1String("Unexpected element ") + tag);
}
break;
diff --git a/src/tools/uic/ui4.h b/src/tools/uic/ui4.h
index 08a3abf490..94cdb40b6f 100644
--- a/src/tools/uic/ui4.h
+++ b/src/tools/uic/ui4.h
@@ -140,7 +140,7 @@ class DomStringPropertySpecification;
*/
class QDESIGNER_UILIB_EXPORT DomUI {
- Q_DISABLE_COPY(DomUI)
+ Q_DISABLE_COPY_MOVE(DomUI)
public:
DomUI() = default;
~DomUI();
@@ -339,7 +339,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomIncludes {
- Q_DISABLE_COPY(DomIncludes)
+ Q_DISABLE_COPY_MOVE(DomIncludes)
public:
DomIncludes() = default;
~DomIncludes();
@@ -363,7 +363,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomInclude {
- Q_DISABLE_COPY(DomInclude)
+ Q_DISABLE_COPY_MOVE(DomInclude)
public:
DomInclude() = default;
~DomInclude();
@@ -397,7 +397,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomResources {
- Q_DISABLE_COPY(DomResources)
+ Q_DISABLE_COPY_MOVE(DomResources)
public:
DomResources() = default;
~DomResources();
@@ -430,7 +430,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomResource {
- Q_DISABLE_COPY(DomResource)
+ Q_DISABLE_COPY_MOVE(DomResource)
public:
DomResource() = default;
~DomResource();
@@ -451,7 +451,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomActionGroup {
- Q_DISABLE_COPY(DomActionGroup)
+ Q_DISABLE_COPY_MOVE(DomActionGroup)
public:
DomActionGroup() = default;
~DomActionGroup();
@@ -499,7 +499,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomAction {
- Q_DISABLE_COPY(DomAction)
+ Q_DISABLE_COPY_MOVE(DomAction)
public:
DomAction() = default;
~DomAction();
@@ -545,7 +545,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomActionRef {
- Q_DISABLE_COPY(DomActionRef)
+ Q_DISABLE_COPY_MOVE(DomActionRef)
public:
DomActionRef() = default;
~DomActionRef();
@@ -566,7 +566,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomButtonGroup {
- Q_DISABLE_COPY(DomButtonGroup)
+ Q_DISABLE_COPY_MOVE(DomButtonGroup)
public:
DomButtonGroup() = default;
~DomButtonGroup();
@@ -604,7 +604,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomButtonGroups {
- Q_DISABLE_COPY(DomButtonGroups)
+ Q_DISABLE_COPY_MOVE(DomButtonGroups)
public:
DomButtonGroups() = default;
~DomButtonGroups();
@@ -628,7 +628,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomCustomWidgets {
- Q_DISABLE_COPY(DomCustomWidgets)
+ Q_DISABLE_COPY_MOVE(DomCustomWidgets)
public:
DomCustomWidgets() = default;
~DomCustomWidgets();
@@ -652,7 +652,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomHeader {
- Q_DISABLE_COPY(DomHeader)
+ Q_DISABLE_COPY_MOVE(DomHeader)
public:
DomHeader() = default;
~DomHeader();
@@ -678,7 +678,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomCustomWidget {
- Q_DISABLE_COPY(DomCustomWidget)
+ Q_DISABLE_COPY_MOVE(DomCustomWidget)
public:
DomCustomWidget() = default;
~DomCustomWidget();
@@ -764,7 +764,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomLayoutDefault {
- Q_DISABLE_COPY(DomLayoutDefault)
+ Q_DISABLE_COPY_MOVE(DomLayoutDefault)
public:
DomLayoutDefault() = default;
~DomLayoutDefault();
@@ -793,7 +793,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomLayoutFunction {
- Q_DISABLE_COPY(DomLayoutFunction)
+ Q_DISABLE_COPY_MOVE(DomLayoutFunction)
public:
DomLayoutFunction() = default;
~DomLayoutFunction();
@@ -822,7 +822,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomTabStops {
- Q_DISABLE_COPY(DomTabStops)
+ Q_DISABLE_COPY_MOVE(DomTabStops)
public:
DomTabStops() = default;
~DomTabStops();
@@ -846,7 +846,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomLayout {
- Q_DISABLE_COPY(DomLayout)
+ Q_DISABLE_COPY_MOVE(DomLayout)
public:
DomLayout() = default;
~DomLayout();
@@ -937,7 +937,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomLayoutItem {
- Q_DISABLE_COPY(DomLayoutItem)
+ Q_DISABLE_COPY_MOVE(DomLayoutItem)
public:
DomLayoutItem() = default;
~DomLayoutItem();
@@ -1014,7 +1014,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomRow {
- Q_DISABLE_COPY(DomRow)
+ Q_DISABLE_COPY_MOVE(DomRow)
public:
DomRow() = default;
~DomRow();
@@ -1038,7 +1038,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomColumn {
- Q_DISABLE_COPY(DomColumn)
+ Q_DISABLE_COPY_MOVE(DomColumn)
public:
DomColumn() = default;
~DomColumn();
@@ -1062,7 +1062,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomItem {
- Q_DISABLE_COPY(DomItem)
+ Q_DISABLE_COPY_MOVE(DomItem)
public:
DomItem() = default;
~DomItem();
@@ -1108,7 +1108,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomWidget {
- Q_DISABLE_COPY(DomWidget)
+ Q_DISABLE_COPY_MOVE(DomWidget)
public:
DomWidget() = default;
~DomWidget();
@@ -1212,7 +1212,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomSpacer {
- Q_DISABLE_COPY(DomSpacer)
+ Q_DISABLE_COPY_MOVE(DomSpacer)
public:
DomSpacer() = default;
~DomSpacer();
@@ -1245,7 +1245,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomColor {
- Q_DISABLE_COPY(DomColor)
+ Q_DISABLE_COPY_MOVE(DomColor)
public:
DomColor() = default;
~DomColor();
@@ -1294,7 +1294,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomGradientStop {
- Q_DISABLE_COPY(DomGradientStop)
+ Q_DISABLE_COPY_MOVE(DomGradientStop)
public:
DomGradientStop() = default;
~DomGradientStop();
@@ -1330,7 +1330,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomGradient {
- Q_DISABLE_COPY(DomGradient)
+ Q_DISABLE_COPY_MOVE(DomGradient)
public:
DomGradient() = default;
~DomGradient();
@@ -1459,7 +1459,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomBrush {
- Q_DISABLE_COPY(DomBrush)
+ Q_DISABLE_COPY_MOVE(DomBrush)
public:
DomBrush() = default;
~DomBrush();
@@ -1504,7 +1504,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomColorRole {
- Q_DISABLE_COPY(DomColorRole)
+ Q_DISABLE_COPY_MOVE(DomColorRole)
public:
DomColorRole() = default;
~DomColorRole();
@@ -1540,7 +1540,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomColorGroup {
- Q_DISABLE_COPY(DomColorGroup)
+ Q_DISABLE_COPY_MOVE(DomColorGroup)
public:
DomColorGroup() = default;
~DomColorGroup();
@@ -1569,7 +1569,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomPalette {
- Q_DISABLE_COPY(DomPalette)
+ Q_DISABLE_COPY_MOVE(DomPalette)
public:
DomPalette() = default;
~DomPalette();
@@ -1612,7 +1612,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomFont {
- Q_DISABLE_COPY(DomFont)
+ Q_DISABLE_COPY_MOVE(DomFont)
public:
DomFont() = default;
~DomFont();
@@ -1701,7 +1701,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomPoint {
- Q_DISABLE_COPY(DomPoint)
+ Q_DISABLE_COPY_MOVE(DomPoint)
public:
DomPoint() = default;
~DomPoint();
@@ -1734,7 +1734,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomRect {
- Q_DISABLE_COPY(DomRect)
+ Q_DISABLE_COPY_MOVE(DomRect)
public:
DomRect() = default;
~DomRect();
@@ -1781,7 +1781,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomLocale {
- Q_DISABLE_COPY(DomLocale)
+ Q_DISABLE_COPY_MOVE(DomLocale)
public:
DomLocale() = default;
~DomLocale();
@@ -1810,7 +1810,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomSizePolicy {
- Q_DISABLE_COPY(DomSizePolicy)
+ Q_DISABLE_COPY_MOVE(DomSizePolicy)
public:
DomSizePolicy() = default;
~DomSizePolicy();
@@ -1874,7 +1874,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomSize {
- Q_DISABLE_COPY(DomSize)
+ Q_DISABLE_COPY_MOVE(DomSize)
public:
DomSize() = default;
~DomSize();
@@ -1907,7 +1907,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomDate {
- Q_DISABLE_COPY(DomDate)
+ Q_DISABLE_COPY_MOVE(DomDate)
public:
DomDate() = default;
~DomDate();
@@ -1947,7 +1947,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomTime {
- Q_DISABLE_COPY(DomTime)
+ Q_DISABLE_COPY_MOVE(DomTime)
public:
DomTime() = default;
~DomTime();
@@ -1987,7 +1987,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomDateTime {
- Q_DISABLE_COPY(DomDateTime)
+ Q_DISABLE_COPY_MOVE(DomDateTime)
public:
DomDateTime() = default;
~DomDateTime();
@@ -2048,7 +2048,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomStringList {
- Q_DISABLE_COPY(DomStringList)
+ Q_DISABLE_COPY_MOVE(DomStringList)
public:
DomStringList() = default;
~DomStringList();
@@ -2105,7 +2105,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomResourcePixmap {
- Q_DISABLE_COPY(DomResourcePixmap)
+ Q_DISABLE_COPY_MOVE(DomResourcePixmap)
public:
DomResourcePixmap() = default;
~DomResourcePixmap();
@@ -2139,7 +2139,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomResourceIcon {
- Q_DISABLE_COPY(DomResourceIcon)
+ Q_DISABLE_COPY_MOVE(DomResourceIcon)
public:
DomResourceIcon() = default;
~DomResourceIcon();
@@ -2244,7 +2244,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomString {
- Q_DISABLE_COPY(DomString)
+ Q_DISABLE_COPY_MOVE(DomString)
public:
DomString() = default;
~DomString();
@@ -2294,7 +2294,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomPointF {
- Q_DISABLE_COPY(DomPointF)
+ Q_DISABLE_COPY_MOVE(DomPointF)
public:
DomPointF() = default;
~DomPointF();
@@ -2327,7 +2327,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomRectF {
- Q_DISABLE_COPY(DomRectF)
+ Q_DISABLE_COPY_MOVE(DomRectF)
public:
DomRectF() = default;
~DomRectF();
@@ -2374,7 +2374,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomSizeF {
- Q_DISABLE_COPY(DomSizeF)
+ Q_DISABLE_COPY_MOVE(DomSizeF)
public:
DomSizeF() = default;
~DomSizeF();
@@ -2407,7 +2407,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomChar {
- Q_DISABLE_COPY(DomChar)
+ Q_DISABLE_COPY_MOVE(DomChar)
public:
DomChar() = default;
~DomChar();
@@ -2433,7 +2433,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomUrl {
- Q_DISABLE_COPY(DomUrl)
+ Q_DISABLE_COPY_MOVE(DomUrl)
public:
DomUrl() = default;
~DomUrl();
@@ -2460,7 +2460,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomProperty {
- Q_DISABLE_COPY(DomProperty)
+ Q_DISABLE_COPY_MOVE(DomProperty)
public:
DomProperty() = default;
~DomProperty();
@@ -2651,7 +2651,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomConnections {
- Q_DISABLE_COPY(DomConnections)
+ Q_DISABLE_COPY_MOVE(DomConnections)
public:
DomConnections() = default;
~DomConnections();
@@ -2675,7 +2675,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomConnection {
- Q_DISABLE_COPY(DomConnection)
+ Q_DISABLE_COPY_MOVE(DomConnection)
public:
DomConnection() = default;
~DomConnection();
@@ -2730,7 +2730,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomConnectionHints {
- Q_DISABLE_COPY(DomConnectionHints)
+ Q_DISABLE_COPY_MOVE(DomConnectionHints)
public:
DomConnectionHints() = default;
~DomConnectionHints();
@@ -2754,7 +2754,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomConnectionHint {
- Q_DISABLE_COPY(DomConnectionHint)
+ Q_DISABLE_COPY_MOVE(DomConnectionHint)
public:
DomConnectionHint() = default;
~DomConnectionHint();
@@ -2796,7 +2796,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomDesignerData {
- Q_DISABLE_COPY(DomDesignerData)
+ Q_DISABLE_COPY_MOVE(DomDesignerData)
public:
DomDesignerData() = default;
~DomDesignerData();
@@ -2820,7 +2820,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomSlots {
- Q_DISABLE_COPY(DomSlots)
+ Q_DISABLE_COPY_MOVE(DomSlots)
public:
DomSlots() = default;
~DomSlots();
@@ -2849,7 +2849,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomPropertySpecifications {
- Q_DISABLE_COPY(DomPropertySpecifications)
+ Q_DISABLE_COPY_MOVE(DomPropertySpecifications)
public:
DomPropertySpecifications() = default;
~DomPropertySpecifications();
@@ -2878,7 +2878,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomPropertyToolTip {
- Q_DISABLE_COPY(DomPropertyToolTip)
+ Q_DISABLE_COPY_MOVE(DomPropertyToolTip)
public:
DomPropertyToolTip() = default;
~DomPropertyToolTip();
@@ -2899,7 +2899,7 @@ private:
};
class QDESIGNER_UILIB_EXPORT DomStringPropertySpecification {
- Q_DISABLE_COPY(DomStringPropertySpecification)
+ Q_DISABLE_COPY_MOVE(DomStringPropertySpecification)
public:
DomStringPropertySpecification() = default;
~DomStringPropertySpecification();
diff --git a/src/widgets/Qt5WidgetsMacros.cmake b/src/widgets/Qt5WidgetsMacros.cmake
index 737371a5ad..21e73d4f0c 100644
--- a/src/widgets/Qt5WidgetsMacros.cmake
+++ b/src/widgets/Qt5WidgetsMacros.cmake
@@ -41,7 +41,7 @@ include(CMakeParseArguments)
# qt5_wrap_ui(outfiles inputfile ... )
-function(QT5_WRAP_UI outfiles )
+function(qt5_wrap_ui outfiles )
set(options)
set(oneValueArgs)
set(multiValueArgs OPTIONS)
diff --git a/src/widgets/accessible/complexwidgets.cpp b/src/widgets/accessible/complexwidgets.cpp
index 63c6fbb9bb..4d9a629ab6 100644
--- a/src/widgets/accessible/complexwidgets.cpp
+++ b/src/widgets/accessible/complexwidgets.cpp
@@ -97,10 +97,10 @@ public:
if (t == QAccessible::ActionInterface) {
return static_cast<QAccessibleActionInterface*>(this);
}
- return 0;
+ return nullptr;
}
- QObject *object() const override { return 0; }
+ QObject *object() const override { return nullptr; }
QAccessible::Role role() const override { return QAccessible::PageTab; }
QAccessible::State state() const override {
if (!isValid()) {
@@ -129,7 +129,7 @@ public:
return false;
}
- QAccessibleInterface *childAt(int, int) const override { return 0; }
+ QAccessibleInterface *childAt(int, int) const override { return nullptr; }
int childCount() const override { return 0; }
int indexOfChild(const QAccessibleInterface *) const override { return -1; }
@@ -168,7 +168,7 @@ public:
QAccessibleInterface *parent() const override {
return QAccessible::queryAccessibleInterface(m_parent.data());
}
- QAccessibleInterface *child(int) const override { return 0; }
+ QAccessibleInterface *child(int) const override { return nullptr; }
// action interface
QStringList actionNames() const override
@@ -237,7 +237,7 @@ QAccessibleInterface* QAccessibleTabBar::child(int index) const
return QAccessible::queryAccessibleInterface(tabBar()->d_func()->rightB);
}
}
- return 0;
+ return nullptr;
}
int QAccessibleTabBar::indexOfChild(const QAccessibleInterface *child) const
@@ -314,7 +314,7 @@ QAccessibleInterface *QAccessibleComboBox::child(int index) const
} else if (index == 1 && comboBox()->isEditable()) {
return QAccessible::queryAccessibleInterface(comboBox()->lineEdit());
}
- return 0;
+ return nullptr;
}
int QAccessibleComboBox::childCount() const
@@ -327,7 +327,7 @@ QAccessibleInterface *QAccessibleComboBox::childAt(int x, int y) const
{
if (comboBox()->isEditable() && comboBox()->lineEdit()->rect().contains(x, y))
return child(1);
- return 0;
+ return nullptr;
}
int QAccessibleComboBox::indexOfChild(const QAccessibleInterface *child) const
@@ -432,7 +432,7 @@ bool QAccessibleAbstractScrollArea::isValid() const
QAccessibleInterface *QAccessibleAbstractScrollArea::childAt(int x, int y) const
{
if (!abstractScrollArea()->isVisible())
- return 0;
+ return nullptr;
for (int i = 0; i < childCount(); ++i) {
QPoint wpos = accessibleChildren().at(i)->mapToGlobal(QPoint(0, 0));
@@ -440,7 +440,7 @@ QAccessibleInterface *QAccessibleAbstractScrollArea::childAt(int x, int y) const
if (rect.contains(x, y))
return child(i);
}
- return 0;
+ return nullptr;
}
QAbstractScrollArea *QAccessibleAbstractScrollArea::abstractScrollArea() const
diff --git a/src/widgets/accessible/itemviews.cpp b/src/widgets/accessible/itemviews.cpp
index 3bfe215c05..5a7fdf9a03 100644
--- a/src/widgets/accessible/itemviews.cpp
+++ b/src/widgets/accessible/itemviews.cpp
@@ -121,7 +121,7 @@ QAccessibleTable::~QAccessibleTable()
QHeaderView *QAccessibleTable::horizontalHeader() const
{
- QHeaderView *header = 0;
+ QHeaderView *header = nullptr;
if (false) {
#if QT_CONFIG(tableview)
} else if (const QTableView *tv = qobject_cast<const QTableView*>(view())) {
@@ -137,7 +137,7 @@ QHeaderView *QAccessibleTable::horizontalHeader() const
QHeaderView *QAccessibleTable::verticalHeader() const
{
- QHeaderView *header = 0;
+ QHeaderView *header = nullptr;
if (false) {
#if QT_CONFIG(tableview)
} else if (const QTableView *tv = qobject_cast<const QTableView*>(view())) {
@@ -150,19 +150,19 @@ QHeaderView *QAccessibleTable::verticalHeader() const
QAccessibleInterface *QAccessibleTable::cellAt(int row, int column) const
{
if (!view()->model())
- return 0;
+ return nullptr;
Q_ASSERT(role() != QAccessible::Tree);
QModelIndex index = view()->model()->index(row, column, view()->rootIndex());
if (Q_UNLIKELY(!index.isValid())) {
qWarning() << "QAccessibleTable::cellAt: invalid index: " << index << " for " << view();
- return 0;
+ return nullptr;
}
return child(logicalIndex(index));
}
QAccessibleInterface *QAccessibleTable::caption() const
{
- return 0;
+ return nullptr;
}
QString QAccessibleTable::columnDescription(int column) const
@@ -254,7 +254,7 @@ QList<int> QAccessibleTable::selectedRows() const
QAccessibleInterface *QAccessibleTable::summary() const
{
- return 0;
+ return nullptr;
}
bool QAccessibleTable::isColumnSelected(int column) const
@@ -422,7 +422,7 @@ QAccessibleInterface *QAccessibleTable::childAt(int x, int y) const
if (index.isValid()) {
return child(logicalIndex(index));
}
- return 0;
+ return nullptr;
}
int QAccessibleTable::childCount() const
@@ -485,13 +485,13 @@ QAccessibleInterface *QAccessibleTable::parent() const
}
return QAccessible::queryAccessibleInterface(view()->parent());
}
- return 0;
+ return nullptr;
}
QAccessibleInterface *QAccessibleTable::child(int logicalIndex) const
{
if (!view()->model())
- return 0;
+ return nullptr;
auto id = childToId.constFind(logicalIndex);
if (id != childToId.constEnd())
@@ -505,7 +505,7 @@ QAccessibleInterface *QAccessibleTable::child(int logicalIndex) const
int row = logicalIndex / columns;
int column = logicalIndex % columns;
- QAccessibleInterface *iface = 0;
+ QAccessibleInterface *iface = nullptr;
if (vHeader) {
if (column == 0) {
@@ -528,7 +528,7 @@ QAccessibleInterface *QAccessibleTable::child(int logicalIndex) const
QModelIndex index = view()->model()->index(row, column, view()->rootIndex());
if (Q_UNLIKELY(!index.isValid())) {
qWarning("QAccessibleTable::child: Invalid index at: %d %d", row, column);
- return 0;
+ return nullptr;
}
iface = new QAccessibleTableCell(view(), index, cellRole());
}
@@ -542,7 +542,7 @@ void *QAccessibleTable::interface_cast(QAccessible::InterfaceType t)
{
if (t == QAccessible::TableInterface)
return static_cast<QAccessibleTableInterface*>(this);
- return 0;
+ return nullptr;
}
void QAccessibleTable::modelChange(QAccessibleTableModelChangeEvent *event)
@@ -676,13 +676,13 @@ QModelIndex QAccessibleTree::indexFromLogical(int row, int column) const
QAccessibleInterface *QAccessibleTree::childAt(int x, int y) const
{
if (!view()->model())
- return 0;
+ return nullptr;
QPoint viewportOffset = view()->viewport()->mapTo(view(), QPoint(0,0));
QPoint indexPosition = view()->mapFromGlobal(QPoint(x, y) - viewportOffset);
QModelIndex index = view()->indexAt(indexPosition);
if (!index.isValid())
- return 0;
+ return nullptr;
const QTreeView *treeView = qobject_cast<const QTreeView*>(view());
int row = treeView->d_func()->viewIndex(index) + (horizontalHeader() ? 1 : 0);
@@ -706,9 +706,9 @@ int QAccessibleTree::childCount() const
QAccessibleInterface *QAccessibleTree::child(int logicalIndex) const
{
if (logicalIndex < 0 || !view()->model() || !view()->model()->columnCount())
- return 0;
+ return nullptr;
- QAccessibleInterface *iface = 0;
+ QAccessibleInterface *iface = nullptr;
int index = logicalIndex;
if (horizontalHeader()) {
@@ -724,7 +724,7 @@ QAccessibleInterface *QAccessibleTree::child(int logicalIndex) const
int column = index % view()->model()->columnCount();
QModelIndex modelIndex = indexFromLogical(row, column);
if (!modelIndex.isValid())
- return 0;
+ return nullptr;
iface = new QAccessibleTableCell(view(), modelIndex, cellRole());
}
QAccessible::registerAccessibleInterface(iface);
@@ -772,7 +772,7 @@ QAccessibleInterface *QAccessibleTree::cellAt(int row, int column) const
QModelIndex index = indexFromLogical(row, column);
if (Q_UNLIKELY(!index.isValid())) {
qWarning("Requested invalid tree cell: %d %d", row, column);
- return 0;
+ return nullptr;
}
const QTreeView *treeView = qobject_cast<const QTreeView*>(view());
Q_ASSERT(treeView);
@@ -841,7 +841,7 @@ void *QAccessibleTableCell::interface_cast(QAccessible::InterfaceType t)
return static_cast<QAccessibleTableCellInterface*>(this);
if (t == QAccessible::ActionInterface)
return static_cast<QAccessibleActionInterface*>(this);
- return 0;
+ return nullptr;
}
int QAccessibleTableCell::columnExtent() const { return 1; }
@@ -869,7 +869,7 @@ QList<QAccessibleInterface*> QAccessibleTableCell::columnHeaderCells() const
QHeaderView *QAccessibleTableCell::horizontalHeader() const
{
- QHeaderView *header = 0;
+ QHeaderView *header = nullptr;
if (false) {
#if QT_CONFIG(tableview)
@@ -887,7 +887,7 @@ QHeaderView *QAccessibleTableCell::horizontalHeader() const
QHeaderView *QAccessibleTableCell::verticalHeader() const
{
- QHeaderView *header = 0;
+ QHeaderView *header = nullptr;
#if QT_CONFIG(tableview)
if (const QTableView *tv = qobject_cast<const QTableView*>(view))
header = tv->verticalHeader();
@@ -1115,7 +1115,7 @@ QAccessibleInterface *QAccessibleTableCell::parent() const
QAccessibleInterface *QAccessibleTableCell::child(int) const
{
- return 0;
+ return nullptr;
}
QAccessibleTableHeaderCell::QAccessibleTableHeaderCell(QAbstractItemView *view_, int index_, Qt::Orientation orientation_)
@@ -1143,7 +1143,7 @@ QAccessible::State QAccessibleTableHeaderCell::state() const
QRect QAccessibleTableHeaderCell::rect() const
{
- QHeaderView *header = 0;
+ QHeaderView *header = nullptr;
if (false) {
#if QT_CONFIG(tableview)
} else if (const QTableView *tv = qobject_cast<const QTableView*>(view)) {
@@ -1206,12 +1206,12 @@ QAccessibleInterface *QAccessibleTableHeaderCell::parent() const
QAccessibleInterface *QAccessibleTableHeaderCell::child(int) const
{
- return 0;
+ return nullptr;
}
QHeaderView *QAccessibleTableHeaderCell::headerView() const
{
- QHeaderView *header = 0;
+ QHeaderView *header = nullptr;
if (false) {
#if QT_CONFIG(tableview)
} else if (const QTableView *tv = qobject_cast<const QTableView*>(view)) {
diff --git a/src/widgets/accessible/qaccessiblemenu.cpp b/src/widgets/accessible/qaccessiblemenu.cpp
index 048d4062b8..99a9444ff1 100644
--- a/src/widgets/accessible/qaccessiblemenu.cpp
+++ b/src/widgets/accessible/qaccessiblemenu.cpp
@@ -88,8 +88,8 @@ QAccessibleInterface *QAccessibleMenu::childAt(int x, int y) const
{
QAction *act = menu()->actionAt(menu()->mapFromGlobal(QPoint(x,y)));
if(act && act->isSeparator())
- act = 0;
- return act ? getOrCreateMenu(menu(), act) : 0;
+ act = nullptr;
+ return act ? getOrCreateMenu(menu(), act) : nullptr;
}
QString QAccessibleMenu::text(QAccessible::Text t) const
@@ -112,7 +112,7 @@ QAccessibleInterface *QAccessibleMenu::child(int index) const
{
if (index < childCount())
return getOrCreateMenu(menu(), menu()->actions().at(index));
- return 0;
+ return nullptr;
}
QAccessibleInterface *QAccessibleMenu::parent() const
@@ -165,7 +165,7 @@ QAccessibleInterface *QAccessibleMenuBar::child(int index) const
if (index < childCount()) {
return getOrCreateMenu(menuBar(), menuBar()->actions().at(index));
}
- return 0;
+ return nullptr;
}
int QAccessibleMenuBar::indexOfChild(const QAccessibleInterface *child) const
@@ -195,7 +195,7 @@ QAccessibleInterface *QAccessibleMenuItem::childAt(int x, int y ) const
return childInterface;
}
}
- return 0;
+ return nullptr;
}
int QAccessibleMenuItem::childCount() const
@@ -224,14 +224,14 @@ QAccessibleInterface *QAccessibleMenuItem::child(int index) const
{
if (index == 0 && action()->menu())
return QAccessible::queryAccessibleInterface(action()->menu());
- return 0;
+ return nullptr;
}
void *QAccessibleMenuItem::interface_cast(QAccessible::InterfaceType t)
{
if (t == QAccessible::ActionInterface)
return static_cast<QAccessibleActionInterface*>(this);
- return 0;
+ return nullptr;
}
QObject *QAccessibleMenuItem::object() const
diff --git a/src/widgets/accessible/qaccessiblewidget.cpp b/src/widgets/accessible/qaccessiblewidget.cpp
index 27e6b09dc7..c782e00f4f 100644
--- a/src/widgets/accessible/qaccessiblewidget.cpp
+++ b/src/widgets/accessible/qaccessiblewidget.cpp
@@ -363,7 +363,7 @@ QAccessibleInterface *QAccessibleWidget::child(int index) const
QWidgetList childList = childWidgets(widget());
if (index >= 0 && index < childList.size())
return QAccessible::queryAccessibleInterface(childList.at(index));
- return 0;
+ return nullptr;
}
/*! \reimp */
@@ -374,11 +374,11 @@ QAccessibleInterface *QAccessibleWidget::focusChild() const
QWidget *fw = widget()->focusWidget();
if (!fw)
- return 0;
+ return nullptr;
if (isAncestor(widget(), fw) || fw == widget())
return QAccessible::queryAccessibleInterface(fw);
- return 0;
+ return nullptr;
}
/*! \reimp */
@@ -522,7 +522,7 @@ void *QAccessibleWidget::interface_cast(QAccessible::InterfaceType t)
{
if (t == QAccessible::ActionInterface)
return static_cast<QAccessibleActionInterface*>(this);
- return 0;
+ return nullptr;
}
QT_END_NAMESPACE
diff --git a/src/widgets/accessible/qaccessiblewidgetfactory.cpp b/src/widgets/accessible/qaccessiblewidgetfactory.cpp
index 0bac45de27..d59da86076 100644
--- a/src/widgets/accessible/qaccessiblewidgetfactory.cpp
+++ b/src/widgets/accessible/qaccessiblewidgetfactory.cpp
@@ -62,7 +62,7 @@ QT_BEGIN_NAMESPACE
QAccessibleInterface *qAccessibleFactory(const QString &classname, QObject *object)
{
- QAccessibleInterface *iface = 0;
+ QAccessibleInterface *iface = nullptr;
if (!object || !object->isWidgetType())
return iface;
@@ -79,7 +79,7 @@ QAccessibleInterface *qAccessibleFactory(const QString &classname, QObject *obje
#if QT_CONFIG(lineedit)
} else if (classname == QLatin1String("QLineEdit")) {
if (widget->objectName() == QLatin1String("qt_spinbox_lineedit"))
- iface = 0;
+ iface = nullptr;
else
iface = new QAccessibleLineEdit(widget);
#endif
@@ -223,7 +223,7 @@ QAccessibleInterface *qAccessibleFactory(const QString &classname, QObject *obje
#endif
} else if (classname == QLatin1String("QDesktopScreenWidget")) {
- iface = 0;
+ iface = nullptr;
} else if (classname == QLatin1String("QWidget")) {
iface = new QAccessibleWidget(widget);
} else if (classname == QLatin1String("QWindowContainer")) {
diff --git a/src/widgets/accessible/qaccessiblewidgets.cpp b/src/widgets/accessible/qaccessiblewidgets.cpp
index 52c953ed3a..574be1f5ea 100644
--- a/src/widgets/accessible/qaccessiblewidgets.cpp
+++ b/src/widgets/accessible/qaccessiblewidgets.cpp
@@ -332,14 +332,14 @@ QAccessibleStackedWidget::QAccessibleStackedWidget(QWidget *widget)
QAccessibleInterface *QAccessibleStackedWidget::childAt(int x, int y) const
{
if (!stackedWidget()->isVisible())
- return 0;
+ return nullptr;
QWidget *currentWidget = stackedWidget()->currentWidget();
if (!currentWidget)
- return 0;
+ return nullptr;
QPoint position = currentWidget->mapFromGlobal(QPoint(x, y));
if (currentWidget->rect().contains(position))
return child(stackedWidget()->currentIndex());
- return 0;
+ return nullptr;
}
int QAccessibleStackedWidget::childCount() const
@@ -359,7 +359,7 @@ int QAccessibleStackedWidget::indexOfChild(const QAccessibleInterface *child) co
QAccessibleInterface *QAccessibleStackedWidget::child(int index) const
{
if (index < 0 || index >= stackedWidget()->count())
- return 0;
+ return nullptr;
return QAccessible::queryAccessibleInterface(stackedWidget()->widget(index));
}
@@ -401,7 +401,7 @@ QAccessibleInterface *QAccessibleMdiArea::child(int index) const
QList<QMdiSubWindow *> subWindows = mdiArea()->subWindowList();
QWidget *targetObject = subWindows.value(index);
if (!targetObject)
- return 0;
+ return nullptr;
return QAccessible::queryAccessibleInterface(targetObject);
}
@@ -478,7 +478,7 @@ QAccessibleInterface *QAccessibleMdiSubWindow::child(int index) const
{
QMdiSubWindow *source = mdiSubWindow();
if (index != 0 || !source->widget())
- return 0;
+ return nullptr;
return QAccessible::queryAccessibleInterface(source->widget());
}
@@ -554,7 +554,7 @@ int QAccessibleCalendarWidget::indexOfChild(const QAccessibleInterface *child) c
QAccessibleInterface *QAccessibleCalendarWidget::child(int index) const
{
if (index < 0 || index >= childCount())
- return 0;
+ return nullptr;
if (childCount() > 1 && index == 0)
return QAccessible::queryAccessibleInterface(navigationBar());
@@ -573,7 +573,7 @@ QAbstractItemView *QAccessibleCalendarWidget::calendarView() const
if (child->objectName() == QLatin1String("qt_calendar_calendarview"))
return static_cast<QAbstractItemView *>(child);
}
- return 0;
+ return nullptr;
}
QWidget *QAccessibleCalendarWidget::navigationBar() const
@@ -582,7 +582,7 @@ QWidget *QAccessibleCalendarWidget::navigationBar() const
if (child->objectName() == QLatin1String("qt_calendar_navigationbar"))
return static_cast<QWidget *>(child);
}
- return 0;
+ return nullptr;
}
#endif // QT_CONFIG(calendarwidget)
@@ -624,7 +624,7 @@ QAccessibleInterface *QAccessibleDockWidget::child(int index) const
if (item)
return QAccessible::queryAccessibleInterface(item->widget());
}
- return 0;
+ return nullptr;
}
int QAccessibleDockWidget::indexOfChild(const QAccessibleInterface *child) const
@@ -1109,7 +1109,7 @@ QAccessibleInterface *QAccessibleMainWindow::child(int index) const
if (index >= 0 && index < kids.count()) {
return QAccessible::queryAccessibleInterface(kids.at(index));
}
- return 0;
+ return nullptr;
}
int QAccessibleMainWindow::childCount() const
@@ -1128,10 +1128,10 @@ QAccessibleInterface *QAccessibleMainWindow::childAt(int x, int y) const
{
QWidget *w = widget();
if (!w->isVisible())
- return 0;
+ return nullptr;
QPoint gp = w->mapToGlobal(QPoint(0, 0));
if (!QRect(gp.x(), gp.y(), w->width(), w->height()).contains(x, y))
- return 0;
+ return nullptr;
const QWidgetList kids = childWidgets(mainWindow());
QPoint rp = mainWindow()->mapFromGlobal(QPoint(x, y));
@@ -1140,7 +1140,7 @@ QAccessibleInterface *QAccessibleMainWindow::childAt(int x, int y) const
return QAccessible::queryAccessibleInterface(child);
}
}
- return 0;
+ return nullptr;
}
QMainWindow *QAccessibleMainWindow::mainWindow() const
diff --git a/src/widgets/accessible/simplewidgets.cpp b/src/widgets/accessible/simplewidgets.cpp
index ca74ee4b12..9dbbe9c608 100644
--- a/src/widgets/accessible/simplewidgets.cpp
+++ b/src/widgets/accessible/simplewidgets.cpp
@@ -364,7 +364,7 @@ QAccessibleInterface *QAccessibleToolButton::child(int index) const
#else
Q_UNUSED(index)
#endif
- return 0;
+ return nullptr;
}
/*
@@ -976,7 +976,7 @@ QAccessibleInterface *QAccessibleWindowContainer::child(int i) const
{
if (i == 0)
return QAccessible::queryAccessibleInterface(container()->containedWindow());
- return 0;
+ return nullptr;
}
QWindowContainer *QAccessibleWindowContainer::container() const
diff --git a/src/widgets/dialogs/qcolordialog.cpp b/src/widgets/dialogs/qcolordialog.cpp
index d00a600424..689002b589 100644
--- a/src/widgets/dialogs/qcolordialog.cpp
+++ b/src/widgets/dialogs/qcolordialog.cpp
@@ -192,7 +192,7 @@ class QWellArray : public QWidget
Q_PROPERTY(int selectedRow READ selectedRow)
public:
- QWellArray(int rows, int cols, QWidget* parent=0);
+ QWellArray(int rows, int cols, QWidget* parent=nullptr);
~QWellArray() {}
QString cellContent(int row, int col) const;
@@ -744,7 +744,7 @@ class QColorLuminancePicker : public QWidget
{
Q_OBJECT
public:
- QColorLuminancePicker(QWidget* parent=0);
+ QColorLuminancePicker(QWidget* parent=nullptr);
~QColorLuminancePicker();
public slots:
@@ -789,7 +789,7 @@ QColorLuminancePicker::QColorLuminancePicker(QWidget* parent)
:QWidget(parent)
{
hue = 100; val = 100; sat = 100;
- pix = 0;
+ pix = nullptr;
// setAttribute(WA_NoErase, true);
}
@@ -812,7 +812,7 @@ void QColorLuminancePicker::setVal(int v)
if (val == v)
return;
val = qMax(0, qMin(v,255));
- delete pix; pix=0;
+ delete pix; pix=nullptr;
repaint();
emit newHsv(hue, sat, val);
}
@@ -861,7 +861,7 @@ void QColorLuminancePicker::setCol(int h, int s , int v)
val = v;
hue = h;
sat = s;
- delete pix; pix=0;
+ delete pix; pix=nullptr;
repaint();
}
@@ -1678,8 +1678,8 @@ void QColorDialogPrivate::init(const QColor &initial)
q->setWindowTitle(QColorDialog::tr("Select Color"));
// default: use the native dialog if possible. Can be overridden in setOptions()
- nativeDialogInUse = (platformColorDialogHelper() != 0);
- colorPickingEventFilter = 0;
+ nativeDialogInUse = (platformColorDialogHelper() != nullptr);
+ colorPickingEventFilter = nullptr;
nextCust = 0;
if (!nativeDialogInUse)
@@ -1703,7 +1703,7 @@ void QColorDialogPrivate::initWidgets()
QHBoxLayout *topLay = new QHBoxLayout();
mainLay->addLayout(topLay);
- leftLay = 0;
+ leftLay = nullptr;
#if defined(QT_SMALL_COLORDIALOG)
smallDisplay = true;
@@ -1773,8 +1773,8 @@ void QColorDialogPrivate::initWidgets()
pWidth = 150;
pHeight = 100;
#endif
- custom = 0;
- standard = 0;
+ custom = nullptr;
+ standard = nullptr;
}
QVBoxLayout *rightLay = new QVBoxLayout;
@@ -2302,7 +2302,7 @@ void QColorDialog::done(int result)
if (d->receiverToDisconnectOnClose) {
disconnect(this, SIGNAL(colorSelected(QColor)),
d->receiverToDisconnectOnClose, d->memberToDisconnectOnClose);
- d->receiverToDisconnectOnClose = 0;
+ d->receiverToDisconnectOnClose = nullptr;
}
d->memberToDisconnectOnClose.clear();
}
diff --git a/src/widgets/dialogs/qdialog.cpp b/src/widgets/dialogs/qdialog.cpp
index 3cdd9a5f04..362200a4fd 100644
--- a/src/widgets/dialogs/qdialog.cpp
+++ b/src/widgets/dialogs/qdialog.cpp
@@ -187,7 +187,7 @@ QWindow *QDialogPrivate::transientParentWindow() const
return parent->windowHandle();
else if (q->windowHandle())
return q->windowHandle()->transientParent();
- return 0;
+ return nullptr;
}
bool QDialogPrivate::setNativeDialogVisible(bool visible)
@@ -214,7 +214,7 @@ QVariant QDialogPrivate::styleHint(QPlatformDialogHelper::StyleHint hint) const
void QDialogPrivate::deletePlatformHelper()
{
delete m_platformHelper;
- m_platformHelper = 0;
+ m_platformHelper = nullptr;
m_platformHelperCreated = false;
nativeDialogInUse = false;
}
@@ -460,7 +460,7 @@ void QDialogPrivate::setDefault(QPushButton *pushButton)
*/
void QDialogPrivate::setMainDefault(QPushButton *pushButton)
{
- mainDef = 0;
+ mainDef = nullptr;
setDefault(pushButton);
}
@@ -602,7 +602,7 @@ int QDialog::exec()
}
if (guard.isNull())
return QDialog::Rejected;
- d->eventLoop = 0;
+ d->eventLoop = nullptr;
setAttribute(Qt::WA_ShowModal, wasShowModal);
@@ -679,12 +679,12 @@ void QDialog::contextMenuEvent(QContextMenuEvent *e)
#else
QWidget *w = childAt(e->pos());
if (!w) {
- w = rect().contains(e->pos()) ? this : 0;
+ w = rect().contains(e->pos()) ? this : nullptr;
if (!w)
return;
}
while (w && w->whatsThis().size() == 0 && !w->testAttribute(Qt::WA_CustomWhatsThis))
- w = w->isWindow() ? 0 : w->parentWidget();
+ w = w->isWindow() ? nullptr : w->parentWidget();
if (w) {
QPointer<QMenu> p = new QMenu(this);
QAction *wt = p.data()->addAction(tr("What's This?"));
@@ -1191,7 +1191,7 @@ void QDialog::setSizeGripEnabled(bool enabled)
d->resizer->show();
} else {
delete d->resizer;
- d->resizer = 0;
+ d->resizer = nullptr;
}
}
#endif // QT_CONFIG(sizegrip)
diff --git a/src/widgets/dialogs/qerrormessage.cpp b/src/widgets/dialogs/qerrormessage.cpp
index f0ec2c0102..790d09414b 100644
--- a/src/widgets/dialogs/qerrormessage.cpp
+++ b/src/widgets/dialogs/qerrormessage.cpp
@@ -149,13 +149,13 @@ QSize QErrorMessageTextView::sizeHint() const
\sa QMessageBox, QStatusBar::showMessage(), {Standard Dialogs Example}
*/
-static QErrorMessage * qtMessageHandler = 0;
+static QErrorMessage * qtMessageHandler = nullptr;
static void deleteStaticcQErrorMessage() // post-routine
{
if (qtMessageHandler) {
delete qtMessageHandler;
- qtMessageHandler = 0;
+ qtMessageHandler = nullptr;
}
}
@@ -252,8 +252,8 @@ QErrorMessage::QErrorMessage(QWidget * parent)
QErrorMessage::~QErrorMessage()
{
if (this == qtMessageHandler) {
- qtMessageHandler = 0;
- QtMessageHandler tmp = qInstallMessageHandler(0);
+ qtMessageHandler = nullptr;
+ QtMessageHandler tmp = qInstallMessageHandler(nullptr);
// in case someone else has later stuck in another...
if (tmp != jump)
qInstallMessageHandler(tmp);
@@ -293,7 +293,7 @@ void QErrorMessage::done(int a)
QErrorMessage * QErrorMessage::qtHandler()
{
if (!qtMessageHandler) {
- qtMessageHandler = new QErrorMessage(0);
+ qtMessageHandler = new QErrorMessage(nullptr);
qAddPostRoutine(deleteStaticcQErrorMessage); // clean up
qtMessageHandler->setWindowTitle(QCoreApplication::applicationName());
qInstallMessageHandler(jump);
diff --git a/src/widgets/dialogs/qfiledialog.cpp b/src/widgets/dialogs/qfiledialog.cpp
index a1b9003c1c..f0bd08a778 100644
--- a/src/widgets/dialogs/qfiledialog.cpp
+++ b/src/widgets/dialogs/qfiledialog.cpp
@@ -370,7 +370,7 @@ QFileDialog::QFileDialog(QWidget *parent,
const QString &caption,
const QString &directory,
const QString &filter)
- : QDialog(*new QFileDialogPrivate, parent, 0)
+ : QDialog(*new QFileDialogPrivate, parent, { })
{
Q_D(QFileDialog);
d->init(QUrl::fromLocalFile(directory), filter, caption);
@@ -380,7 +380,7 @@ QFileDialog::QFileDialog(QWidget *parent,
\internal
*/
QFileDialog::QFileDialog(const QFileDialogArgs &args)
- : QDialog(*new QFileDialogPrivate, args.parent, 0)
+ : QDialog(*new QFileDialogPrivate, args.parent, { })
{
Q_D(QFileDialog);
d->init(args.directory, args.filter, args.caption);
@@ -531,15 +531,15 @@ void QFileDialog::changeEvent(QEvent *e)
QFileDialogPrivate::QFileDialogPrivate()
:
#if QT_CONFIG(proxymodel)
- proxyModel(0),
+ proxyModel(nullptr),
#endif
- model(0),
+ model(nullptr),
currentHistoryLocation(-1),
- renameAction(0),
- deleteAction(0),
- showHiddenAction(0),
+ renameAction(nullptr),
+ deleteAction(nullptr),
+ showHiddenAction(nullptr),
useDefaultCaption(true),
- qFileDialogUi(0),
+ qFileDialogUi(nullptr),
options(QFileDialogOptions::create())
{
}
@@ -882,14 +882,14 @@ void QFileDialog::setVisible(bool visible)
#if QT_CONFIG(fscompleter)
// So the completer doesn't try to complete and therefore show a popup
if (!d->nativeDialogInUse)
- d->completer->setModel(0);
+ d->completer->setModel(nullptr);
#endif
} else {
d->createWidgets();
setAttribute(Qt::WA_DontShowOnScreen, false);
#if QT_CONFIG(fscompleter)
if (!d->nativeDialogInUse) {
- if (d->proxyModel != 0)
+ if (d->proxyModel != nullptr)
d->completer->setModel(d->proxyModel);
else
d->completer->setModel(d->model);
@@ -1824,7 +1824,7 @@ QModelIndex QFileDialogPrivate::rootIndex() const {
QAbstractItemView *QFileDialogPrivate::currentView() const {
if (!qFileDialogUi->stackedWidget)
- return 0;
+ return nullptr;
if (qFileDialogUi->stackedWidget->currentWidget() == qFileDialogUi->listView->parent())
return qFileDialogUi->listView;
return qFileDialogUi->treeView;
@@ -2038,7 +2038,7 @@ QAbstractItemDelegate *QFileDialog::itemDelegate() const
{
Q_D(const QFileDialog);
if (!d->usingWidgets())
- return 0;
+ return nullptr;
return d->qFileDialogUi->listView->itemDelegate();
}
@@ -2776,7 +2776,7 @@ void QFileDialog::done(int result)
if (d->receiverToDisconnectOnClose) {
disconnect(this, d->signalToDisconnectOnClose,
d->receiverToDisconnectOnClose, d->memberToDisconnectOnClose);
- d->receiverToDisconnectOnClose = 0;
+ d->receiverToDisconnectOnClose = nullptr;
}
d->memberToDisconnectOnClose.clear();
d->signalToDisconnectOnClose.clear();
@@ -3015,7 +3015,7 @@ void QFileDialogPrivate::init(const QUrl &directory, const QString &nameFilter,
}
q->setAcceptMode(QFileDialog::AcceptOpen);
- nativeDialogInUse = platformFileDialogHelper() != 0;
+ nativeDialogInUse = platformFileDialogHelper() != nullptr;
if (!nativeDialogInUse)
createWidgets();
q->setFileMode(QFileDialog::AnyFile);
@@ -3273,7 +3273,7 @@ void QFileDialog::setProxyModel(QAbstractProxyModel *proxyModel)
this, SLOT(_q_rowsInserted(QModelIndex)));
}
- if (proxyModel != 0) {
+ if (proxyModel != nullptr) {
proxyModel->setParent(this);
d->proxyModel = proxyModel;
proxyModel->setSourceModel(d->model);
@@ -3286,13 +3286,13 @@ void QFileDialog::setProxyModel(QAbstractProxyModel *proxyModel)
connect(d->proxyModel, SIGNAL(rowsInserted(QModelIndex,int,int)),
this, SLOT(_q_rowsInserted(QModelIndex)));
} else {
- d->proxyModel = 0;
+ d->proxyModel = nullptr;
d->qFileDialogUi->listView->setModel(d->model);
d->qFileDialogUi->treeView->setModel(d->model);
#if QT_CONFIG(fscompleter)
d->completer->setModel(d->model);
d->completer->sourceModel = d->model;
- d->completer->proxyModel = 0;
+ d->completer->proxyModel = nullptr;
#endif
connect(d->model, SIGNAL(rowsInserted(QModelIndex,int,int)),
this, SLOT(_q_rowsInserted(QModelIndex)));
@@ -3330,27 +3330,27 @@ QAbstractProxyModel *QFileDialog::proxyModel() const
void QFileDialogPrivate::createToolButtons()
{
Q_Q(QFileDialog);
- qFileDialogUi->backButton->setIcon(q->style()->standardIcon(QStyle::SP_ArrowBack, 0, q));
+ qFileDialogUi->backButton->setIcon(q->style()->standardIcon(QStyle::SP_ArrowBack, nullptr, q));
qFileDialogUi->backButton->setAutoRaise(true);
qFileDialogUi->backButton->setEnabled(false);
QObject::connect(qFileDialogUi->backButton, SIGNAL(clicked()), q, SLOT(_q_navigateBackward()));
- qFileDialogUi->forwardButton->setIcon(q->style()->standardIcon(QStyle::SP_ArrowForward, 0, q));
+ qFileDialogUi->forwardButton->setIcon(q->style()->standardIcon(QStyle::SP_ArrowForward, nullptr, q));
qFileDialogUi->forwardButton->setAutoRaise(true);
qFileDialogUi->forwardButton->setEnabled(false);
QObject::connect(qFileDialogUi->forwardButton, SIGNAL(clicked()), q, SLOT(_q_navigateForward()));
- qFileDialogUi->toParentButton->setIcon(q->style()->standardIcon(QStyle::SP_FileDialogToParent, 0, q));
+ qFileDialogUi->toParentButton->setIcon(q->style()->standardIcon(QStyle::SP_FileDialogToParent, nullptr, q));
qFileDialogUi->toParentButton->setAutoRaise(true);
qFileDialogUi->toParentButton->setEnabled(false);
QObject::connect(qFileDialogUi->toParentButton, SIGNAL(clicked()), q, SLOT(_q_navigateToParent()));
- qFileDialogUi->listModeButton->setIcon(q->style()->standardIcon(QStyle::SP_FileDialogListView, 0, q));
+ qFileDialogUi->listModeButton->setIcon(q->style()->standardIcon(QStyle::SP_FileDialogListView, nullptr, q));
qFileDialogUi->listModeButton->setAutoRaise(true);
qFileDialogUi->listModeButton->setDown(true);
QObject::connect(qFileDialogUi->listModeButton, SIGNAL(clicked()), q, SLOT(_q_showListView()));
- qFileDialogUi->detailModeButton->setIcon(q->style()->standardIcon(QStyle::SP_FileDialogDetailedView, 0, q));
+ qFileDialogUi->detailModeButton->setIcon(q->style()->standardIcon(QStyle::SP_FileDialogDetailedView, nullptr, q));
qFileDialogUi->detailModeButton->setAutoRaise(true);
QObject::connect(qFileDialogUi->detailModeButton, SIGNAL(clicked()), q, SLOT(_q_showDetailsView()));
@@ -3361,7 +3361,7 @@ void QFileDialogPrivate::createToolButtons()
qFileDialogUi->forwardButton->setFixedSize(toolSize);
qFileDialogUi->toParentButton->setFixedSize(toolSize);
- qFileDialogUi->newFolderButton->setIcon(q->style()->standardIcon(QStyle::SP_FileDialogNewFolder, 0, q));
+ qFileDialogUi->newFolderButton->setIcon(q->style()->standardIcon(QStyle::SP_FileDialogNewFolder, nullptr, q));
qFileDialogUi->newFolderButton->setFixedSize(toolSize);
qFileDialogUi->newFolderButton->setAutoRaise(true);
qFileDialogUi->newFolderButton->setEnabled(false);
@@ -3598,7 +3598,7 @@ void QFileDialogPrivate::_q_showContextMenu(const QPoint &position)
Q_UNUSED(position);
#else
Q_Q(QFileDialog);
- QAbstractItemView *view = 0;
+ QAbstractItemView *view = nullptr;
if (q->viewMode() == QFileDialog::Detail)
view = qFileDialogUi->treeView;
else
diff --git a/src/widgets/dialogs/qfilesystemmodel.cpp b/src/widgets/dialogs/qfilesystemmodel.cpp
index a04189513a..914c845565 100644
--- a/src/widgets/dialogs/qfilesystemmodel.cpp
+++ b/src/widgets/dialogs/qfilesystemmodel.cpp
@@ -586,9 +586,9 @@ QModelIndex QFileSystemModel::parent(const QModelIndex &index) const
return QModelIndex();
QFileSystemModelPrivate::QFileSystemNode *indexNode = d->node(index);
- Q_ASSERT(indexNode != 0);
+ Q_ASSERT(indexNode != nullptr);
QFileSystemModelPrivate::QFileSystemNode *parentNode = indexNode->parent;
- if (parentNode == 0 || parentNode == &d->root)
+ if (parentNode == nullptr || parentNode == &d->root)
return QModelIndex();
// get the parent's row
@@ -608,7 +608,7 @@ QModelIndex QFileSystemModel::parent(const QModelIndex &index) const
QModelIndex QFileSystemModelPrivate::index(const QFileSystemModelPrivate::QFileSystemNode *node, int column) const
{
Q_Q(const QFileSystemModel);
- QFileSystemModelPrivate::QFileSystemNode *parentNode = (node ? node->parent : 0);
+ QFileSystemModelPrivate::QFileSystemNode *parentNode = (node ? node->parent : nullptr);
if (node == &root || !parentNode)
return QModelIndex();
@@ -2077,7 +2077,8 @@ void QFileSystemModelPrivate::init()
#endif // filesystemwatcher
q->connect(&delayedSortTimer, SIGNAL(timeout()), q, SLOT(_q_performDelayedSort()), Qt::QueuedConnection);
- roleNames.insertMulti(QFileSystemModel::FileIconRole, QByteArrayLiteral("fileIcon")); // == Qt::decoration
+ roleNames.insert(QFileSystemModel::FileIconRole,
+ QByteArrayLiteral("fileIcon")); // == Qt::decoration
roleNames.insert(QFileSystemModel::FilePathRole, QByteArrayLiteral("filePath"));
roleNames.insert(QFileSystemModel::FileNameRole, QByteArrayLiteral("fileName"));
roleNames.insert(QFileSystemModel::FilePermissions, QByteArrayLiteral("filePermissions"));
diff --git a/src/widgets/dialogs/qfilesystemmodel_p.h b/src/widgets/dialogs/qfilesystemmodel_p.h
index 844e417e2d..ad98b9ef44 100644
--- a/src/widgets/dialogs/qfilesystemmodel_p.h
+++ b/src/widgets/dialogs/qfilesystemmodel_p.h
@@ -116,7 +116,7 @@ public:
inline qint64 size() const { if (info && !info->isDir()) return info->size(); return 0; }
inline QString type() const { if (info) return info->displayType; return QLatin1String(""); }
inline QDateTime lastModified() const { if (info) return info->lastModified(); return QDateTime(); }
- inline QFile::Permissions permissions() const { if (info) return info->permissions(); return nullptr; }
+ inline QFile::Permissions permissions() const { if (info) return info->permissions(); return { }; }
inline bool isReadable() const { return ((permissions() & QFile::ReadUser) != 0); }
inline bool isWritable() const { return ((permissions() & QFile::WriteUser) != 0); }
inline bool isExecutable() const { return ((permissions() & QFile::ExeUser) != 0); }
diff --git a/src/widgets/dialogs/qfontdialog.cpp b/src/widgets/dialogs/qfontdialog.cpp
index 7e3592e034..fe8f88d64f 100644
--- a/src/widgets/dialogs/qfontdialog.cpp
+++ b/src/widgets/dialogs/qfontdialog.cpp
@@ -276,7 +276,7 @@ void QFontDialogPrivate::init()
mainGrid->setColumnMinimumWidth(3, spacing);
int margin = 0;
- mainGrid->getContentsMargins(0, 0, 0, &margin);
+ mainGrid->getContentsMargins(nullptr, nullptr, nullptr, &margin);
mainGrid->setRowMinimumHeight(3, margin);
mainGrid->setRowMinimumHeight(6, 2);
@@ -391,7 +391,7 @@ QFont QFontDialog::getFont(bool *ok, const QFont &initial, QWidget *parent, cons
QFont QFontDialog::getFont(bool *ok, QWidget *parent)
{
QFont initial;
- return QFontDialogPrivate::getFont(ok, initial, parent, QString(), 0);
+ return QFontDialogPrivate::getFont(ok, initial, parent, QString(), { });
}
QFont QFontDialogPrivate::getFont(bool *ok, const QFont &initial, QWidget *parent,
@@ -435,7 +435,7 @@ bool QFontDialog::eventFilter(QObject *o , QEvent *e)
QCoreApplication::sendEvent(d->sizeList, k);
if (ci != d->sizeList->currentItem()
- && style()->styleHint(QStyle::SH_FontDialog_SelectAssociatedText, 0, this))
+ && style()->styleHint(QStyle::SH_FontDialog_SelectAssociatedText, nullptr, this))
d->sizeEdit->selectAll();
return true;
} else if ((o == d->familyList || o == d->styleList) &&
@@ -445,7 +445,7 @@ bool QFontDialog::eventFilter(QObject *o , QEvent *e)
return true;
}
} else if (e->type() == QEvent::FocusIn
- && style()->styleHint(QStyle::SH_FontDialog_SelectAssociatedText, 0, this)) {
+ && style()->styleHint(QStyle::SH_FontDialog_SelectAssociatedText, nullptr, this)) {
if (o == d->familyList)
d->familyEdit->selectAll();
else if (o == d->styleList)
@@ -550,7 +550,7 @@ void QFontDialogPrivate::updateFamilies()
else
familyList->setCurrentItem(0);
familyEdit->setText(familyList->currentText());
- if (q->style()->styleHint(QStyle::SH_FontDialog_SelectAssociatedText, 0, q)
+ if (q->style()->styleHint(QStyle::SH_FontDialog_SelectAssociatedText, nullptr, q)
&& familyList->hasFocus())
familyEdit->selectAll();
@@ -602,7 +602,7 @@ void QFontDialogPrivate::updateStyles()
}
styleEdit->setText(styleList->currentText());
- if (q->style()->styleHint(QStyle::SH_FontDialog_SelectAssociatedText, 0, q)
+ if (q->style()->styleHint(QStyle::SH_FontDialog_SelectAssociatedText, nullptr, q)
&& styleList->hasFocus())
styleEdit->selectAll();
@@ -641,7 +641,7 @@ void QFontDialogPrivate::updateSizes()
const QSignalBlocker blocker(sizeEdit);
sizeEdit->setText((smoothScalable ? QString::number(size) : sizeList->currentText()));
- if (q->style()->styleHint(QStyle::SH_FontDialog_SelectAssociatedText, 0, q)
+ if (q->style()->styleHint(QStyle::SH_FontDialog_SelectAssociatedText, nullptr, q)
&& sizeList->hasFocus())
sizeEdit->selectAll();
} else {
@@ -692,7 +692,7 @@ void QFontDialogPrivate::_q_familyHighlighted(int i)
Q_Q(QFontDialog);
family = familyList->text(i);
familyEdit->setText(family);
- if (q->style()->styleHint(QStyle::SH_FontDialog_SelectAssociatedText, 0, q)
+ if (q->style()->styleHint(QStyle::SH_FontDialog_SelectAssociatedText, nullptr, q)
&& familyList->hasFocus())
familyEdit->selectAll();
@@ -709,7 +709,7 @@ void QFontDialogPrivate::_q_styleHighlighted(int index)
Q_Q(QFontDialog);
QString s = styleList->text(index);
styleEdit->setText(s);
- if (q->style()->styleHint(QStyle::SH_FontDialog_SelectAssociatedText, 0, q)
+ if (q->style()->styleHint(QStyle::SH_FontDialog_SelectAssociatedText, nullptr, q)
&& styleList->hasFocus())
styleEdit->selectAll();
@@ -728,7 +728,7 @@ void QFontDialogPrivate::_q_sizeHighlighted(int index)
Q_Q(QFontDialog);
QString s = sizeList->text(index);
sizeEdit->setText(s);
- if (q->style()->styleHint(QStyle::SH_FontDialog_SelectAssociatedText, 0, q)
+ if (q->style()->styleHint(QStyle::SH_FontDialog_SelectAssociatedText, nullptr, q)
&& sizeEdit->hasFocus())
sizeEdit->selectAll();
@@ -1019,7 +1019,7 @@ void QFontDialog::done(int result)
if (d->receiverToDisconnectOnClose) {
disconnect(this, SIGNAL(fontSelected(QFont)),
d->receiverToDisconnectOnClose, d->memberToDisconnectOnClose);
- d->receiverToDisconnectOnClose = 0;
+ d->receiverToDisconnectOnClose = nullptr;
}
d->memberToDisconnectOnClose.clear();
}
diff --git a/src/widgets/dialogs/qinputdialog.cpp b/src/widgets/dialogs/qinputdialog.cpp
index 3cfe8367e0..1cb4be0682 100644
--- a/src/widgets/dialogs/qinputdialog.cpp
+++ b/src/widgets/dialogs/qinputdialog.cpp
@@ -138,7 +138,7 @@ class QInputDialogDoubleSpinBox : public QDoubleSpinBox
Q_OBJECT
public:
- QInputDialogDoubleSpinBox(QWidget *parent = 0)
+ QInputDialogDoubleSpinBox(QWidget *parent = nullptr)
: QDoubleSpinBox(parent) {
connect(lineEdit(), SIGNAL(textChanged(QString)), this, SLOT(notifyTextChanged()));
connect(this, SIGNAL(editingFinished()), this, SLOT(notifyTextChanged()));
@@ -171,7 +171,7 @@ private:
class QInputDialogListView : public QListView
{
public:
- QInputDialogListView(QWidget *parent = 0) : QListView(parent) {}
+ QInputDialogListView(QWidget *parent = nullptr) : QListView(parent) {}
QVariant inputMethodQuery(Qt::InputMethodQuery query) const override
{
if (query == Qt::ImEnabled)
@@ -223,8 +223,8 @@ public:
};
QInputDialogPrivate::QInputDialogPrivate()
- : label(0), buttonBox(0), lineEdit(0), plainTextEdit(0), intSpinBox(0), doubleSpinBox(0),
- comboBox(0), listView(0), inputWidget(0), mainLayout(0)
+ : label(nullptr), buttonBox(nullptr), lineEdit(nullptr), plainTextEdit(nullptr), intSpinBox(nullptr), doubleSpinBox(nullptr),
+ comboBox(nullptr), listView(nullptr), inputWidget(nullptr), mainLayout(nullptr)
{
}
@@ -1174,7 +1174,7 @@ void QInputDialog::done(int result)
if (d->receiverToDisconnectOnClose) {
disconnect(this, signalForMember(d->memberToDisconnectOnClose),
d->receiverToDisconnectOnClose, d->memberToDisconnectOnClose);
- d->receiverToDisconnectOnClose = 0;
+ d->receiverToDisconnectOnClose = nullptr;
}
d->memberToDisconnectOnClose.clear();
}
diff --git a/src/widgets/dialogs/qmessagebox.cpp b/src/widgets/dialogs/qmessagebox.cpp
index 8dad212692..17d199cb4f 100644
--- a/src/widgets/dialogs/qmessagebox.cpp
+++ b/src/widgets/dialogs/qmessagebox.cpp
@@ -97,7 +97,7 @@ public:
class TextEdit : public QTextEdit
{
public:
- TextEdit(QWidget *parent=0) : QTextEdit(parent) { }
+ TextEdit(QWidget *parent=nullptr) : QTextEdit(parent) { }
#ifndef QT_NO_CONTEXTMENU
void contextMenuEvent(QContextMenuEvent * e) override
{
@@ -108,7 +108,7 @@ public:
#endif // QT_NO_CONTEXTMENU
};
- QMessageBoxDetailsText(QWidget *parent=0)
+ QMessageBoxDetailsText(QWidget *parent=nullptr)
: QWidget(parent)
, copyAvailable(false)
{
@@ -197,12 +197,12 @@ class QMessageBoxPrivate : public QDialogPrivate
Q_DECLARE_PUBLIC(QMessageBox)
public:
- QMessageBoxPrivate() : escapeButton(0), defaultButton(0), checkbox(0), clickedButton(0), detailsButton(0),
+ QMessageBoxPrivate() : escapeButton(nullptr), defaultButton(nullptr), checkbox(nullptr), clickedButton(nullptr), detailsButton(nullptr),
#if QT_CONFIG(textedit)
- detailsText(0),
+ detailsText(nullptr),
#endif
compatMode(false), autoAddOkButton(true),
- detectedEscapeButton(0), informativeLabel(0),
+ detectedEscapeButton(nullptr), informativeLabel(nullptr),
options(QMessageDialogOptions::create()) { }
void init(const QString &title = QString(), const QString &text = QString());
@@ -274,7 +274,7 @@ void QMessageBoxPrivate::init(const QString &title, const QString &text)
label = new QLabel;
label->setObjectName(QLatin1String("qt_msgbox_label"));
- label->setTextInteractionFlags(Qt::TextInteractionFlags(q->style()->styleHint(QStyle::SH_MessageBox_TextInteractionFlags, 0, q)));
+ label->setTextInteractionFlags(Qt::TextInteractionFlags(q->style()->styleHint(QStyle::SH_MessageBox_TextInteractionFlags, nullptr, q)));
label->setAlignment(Qt::AlignVCenter | Qt::AlignLeft);
label->setOpenExternalLinks(true);
iconLabel = new QLabel(q);
@@ -283,7 +283,7 @@ void QMessageBoxPrivate::init(const QString &title, const QString &text)
buttonBox = new QDialogButtonBox;
buttonBox->setObjectName(QLatin1String("qt_msgbox_buttonbox"));
- buttonBox->setCenterButtons(q->style()->styleHint(QStyle::SH_MessageBox_CenterButtons, 0, q));
+ buttonBox->setCenterButtons(q->style()->styleHint(QStyle::SH_MessageBox_CenterButtons, nullptr, q));
QObject::connect(buttonBox, SIGNAL(clicked(QAbstractButton*)),
q, SLOT(_q_buttonClicked(QAbstractButton*)));
setupLayout();
@@ -927,9 +927,9 @@ void QMessageBox::removeButton(QAbstractButton *button)
Q_D(QMessageBox);
d->customButtonList.removeAll(button);
if (d->escapeButton == button)
- d->escapeButton = 0;
+ d->escapeButton = nullptr;
if (d->defaultButton == button)
- d->defaultButton = 0;
+ d->defaultButton = nullptr;
d->buttonBox->removeButton(button);
d->updateSize();
}
@@ -952,9 +952,9 @@ void QMessageBox::setStandardButtons(StandardButtons buttons)
QList<QAbstractButton *> buttonList = d->buttonBox->buttons();
if (!buttonList.contains(d->escapeButton))
- d->escapeButton = 0;
+ d->escapeButton = nullptr;
if (!buttonList.contains(d->defaultButton))
- d->defaultButton = 0;
+ d->defaultButton = nullptr;
d->autoAddOkButton = false;
d->updateSize();
}
@@ -1081,7 +1081,7 @@ void QMessageBoxPrivate::detectEscapeButton()
for (auto *button : buttons) {
if (buttonBox->buttonRole(button) == QDialogButtonBox::RejectRole) {
if (detectedEscapeButton) { // already detected!
- detectedEscapeButton = 0;
+ detectedEscapeButton = nullptr;
break;
}
detectedEscapeButton = button;
@@ -1094,7 +1094,7 @@ void QMessageBoxPrivate::detectEscapeButton()
for (auto *button : buttons) {
if (buttonBox->buttonRole(button) == QDialogButtonBox::NoRole) {
if (detectedEscapeButton) { // already detected!
- detectedEscapeButton = 0;
+ detectedEscapeButton = nullptr;
break;
}
detectedEscapeButton = button;
@@ -1189,7 +1189,7 @@ void QMessageBox::setCheckBox(QCheckBox *cb)
d->checkbox->hide();
layout()->removeWidget(d->checkbox);
if (d->checkbox->parentWidget() == this) {
- d->checkbox->setParent(0);
+ d->checkbox->setParent(nullptr);
d->checkbox->deleteLater();
}
}
@@ -1433,9 +1433,9 @@ void QMessageBox::changeEvent(QEvent *ev)
{
if (d->icon != NoIcon)
setIcon(d->icon);
- Qt::TextInteractionFlags flags(style()->styleHint(QStyle::SH_MessageBox_TextInteractionFlags, 0, this));
+ Qt::TextInteractionFlags flags(style()->styleHint(QStyle::SH_MessageBox_TextInteractionFlags, nullptr, this));
d->label->setTextInteractionFlags(flags);
- d->buttonBox->setCenterButtons(style()->styleHint(QStyle::SH_MessageBox_CenterButtons, 0, this));
+ d->buttonBox->setCenterButtons(style()->styleHint(QStyle::SH_MessageBox_CenterButtons, nullptr, this));
if (d->informativeLabel)
d->informativeLabel->setTextInteractionFlags(flags);
Q_FALLTHROUGH();
@@ -1624,7 +1624,7 @@ static QMessageBox::StandardButton showNewMessageBox(QWidget *parent,
QMessageBox msgBox(icon, title, text, QMessageBox::NoButton, parent);
QDialogButtonBox *buttonBox = msgBox.findChild<QDialogButtonBox*>();
- Q_ASSERT(buttonBox != 0);
+ Q_ASSERT(buttonBox != nullptr);
uint mask = QMessageBox::FirstButton;
while (mask <= QMessageBox::LastButton) {
@@ -2001,7 +2001,7 @@ QAbstractButton *QMessageBoxPrivate::abstractButtonForId(int id) const
if (result)
return result;
if (id & QMessageBox::FlagMask) // for compatibility with Qt 4.0/4.1 (even if it is silly)
- return 0;
+ return nullptr;
return q->button(newButton(id));
}
@@ -2522,13 +2522,13 @@ void QMessageBox::setDetailedText(const QString &text)
d->detailsText->hide();
d->detailsText->deleteLater();
}
- d->detailsText = 0;
+ d->detailsText = nullptr;
removeButton(d->detailsButton);
if (d->detailsButton) {
d->detailsButton->hide();
d->detailsButton->deleteLater();
}
- d->detailsButton = 0;
+ d->detailsButton = nullptr;
} else {
if (!d->detailsText) {
d->detailsText = new QMessageBoxDetailsText(this);
@@ -2577,12 +2577,12 @@ void QMessageBox::setInformativeText(const QString &text)
d->informativeLabel->hide();
d->informativeLabel->deleteLater();
}
- d->informativeLabel = 0;
+ d->informativeLabel = nullptr;
} else {
if (!d->informativeLabel) {
QLabel *label = new QLabel;
label->setObjectName(QLatin1String("qt_msgbox_informativelabel"));
- label->setTextInteractionFlags(Qt::TextInteractionFlags(style()->styleHint(QStyle::SH_MessageBox_TextInteractionFlags, 0, this)));
+ label->setTextInteractionFlags(Qt::TextInteractionFlags(style()->styleHint(QStyle::SH_MessageBox_TextInteractionFlags, nullptr, this)));
label->setAlignment(Qt::AlignTop | Qt::AlignLeft);
label->setOpenExternalLinks(true);
label->setWordWrap(true);
@@ -2644,20 +2644,20 @@ void QMessageBox::setWindowModality(Qt::WindowModality windowModality)
QPixmap QMessageBoxPrivate::standardIcon(QMessageBox::Icon icon, QMessageBox *mb)
{
QStyle *style = mb ? mb->style() : QApplication::style();
- int iconSize = style->pixelMetric(QStyle::PM_MessageBoxIconSize, 0, mb);
+ int iconSize = style->pixelMetric(QStyle::PM_MessageBoxIconSize, nullptr, mb);
QIcon tmpIcon;
switch (icon) {
case QMessageBox::Information:
- tmpIcon = style->standardIcon(QStyle::SP_MessageBoxInformation, 0, mb);
+ tmpIcon = style->standardIcon(QStyle::SP_MessageBoxInformation, nullptr, mb);
break;
case QMessageBox::Warning:
- tmpIcon = style->standardIcon(QStyle::SP_MessageBoxWarning, 0, mb);
+ tmpIcon = style->standardIcon(QStyle::SP_MessageBoxWarning, nullptr, mb);
break;
case QMessageBox::Critical:
- tmpIcon = style->standardIcon(QStyle::SP_MessageBoxCritical, 0, mb);
+ tmpIcon = style->standardIcon(QStyle::SP_MessageBoxCritical, nullptr, mb);
break;
case QMessageBox::Question:
- tmpIcon = style->standardIcon(QStyle::SP_MessageBoxQuestion, 0, mb);
+ tmpIcon = style->standardIcon(QStyle::SP_MessageBoxQuestion, nullptr, mb);
default:
break;
}
@@ -2739,7 +2739,7 @@ void QMessageBoxPrivate::helperDone(QDialog::DialogCode code, QPlatformDialogHel
QPixmap QMessageBox::standardIcon(Icon icon)
{
- return QMessageBoxPrivate::standardIcon(icon, 0);
+ return QMessageBoxPrivate::standardIcon(icon, nullptr);
}
/*!
diff --git a/src/widgets/dialogs/qprogressdialog.cpp b/src/widgets/dialogs/qprogressdialog.cpp
index 9507053ffe..40548e22a5 100644
--- a/src/widgets/dialogs/qprogressdialog.cpp
+++ b/src/widgets/dialogs/qprogressdialog.cpp
@@ -65,13 +65,13 @@ class QProgressDialogPrivate : public QDialogPrivate
Q_DECLARE_PUBLIC(QProgressDialog)
public:
- QProgressDialogPrivate() : label(0), cancel(0), bar(0),
+ QProgressDialogPrivate() : label(nullptr), cancel(nullptr), bar(nullptr),
shown_once(false),
cancellation_flag(false),
setValue_called(false),
showTime(defaultShowTime),
#ifndef QT_NO_SHORTCUT
- escapeShortcut(0),
+ escapeShortcut(nullptr),
#endif
useDefaultCancelText(false)
{
@@ -112,7 +112,7 @@ void QProgressDialogPrivate::init(const QString &labelText, const QString &cance
label = new QLabel(labelText, q);
bar = new QProgressBar(q);
bar->setRange(min, max);
- int align = q->style()->styleHint(QStyle::SH_ProgressDialog_TextLabelAlignment, 0, q);
+ int align = q->style()->styleHint(QStyle::SH_ProgressDialog_TextLabelAlignment, nullptr, q);
label->setAlignment(Qt::Alignment(align));
autoClose = true;
autoReset = true;
@@ -132,12 +132,12 @@ void QProgressDialogPrivate::init(const QString &labelText, const QString &cance
void QProgressDialogPrivate::layout()
{
Q_Q(QProgressDialog);
- int sp = q->style()->pixelMetric(QStyle::PM_LayoutVerticalSpacing, 0, q);
- int mb = q->style()->pixelMetric(QStyle::PM_LayoutBottomMargin, 0, q);
- int ml = qMin(q->width() / 10, q->style()->pixelMetric(QStyle::PM_LayoutLeftMargin, 0, q));
- int mr = qMin(q->width() / 10, q->style()->pixelMetric(QStyle::PM_LayoutRightMargin, 0, q));
+ int sp = q->style()->pixelMetric(QStyle::PM_LayoutVerticalSpacing, nullptr, q);
+ int mb = q->style()->pixelMetric(QStyle::PM_LayoutBottomMargin, nullptr, q);
+ int ml = qMin(q->width() / 10, q->style()->pixelMetric(QStyle::PM_LayoutLeftMargin, nullptr, q));
+ int mr = qMin(q->width() / 10, q->style()->pixelMetric(QStyle::PM_LayoutRightMargin, nullptr, q));
const bool centered =
- bool(q->style()->styleHint(QStyle::SH_ProgressDialog_CenterCancelButton, 0, q));
+ bool(q->style()->styleHint(QStyle::SH_ProgressDialog_CenterCancelButton, nullptr, q));
int additionalSpacing = 0;
QSize cs = cancel ? cancel->sizeHint() : QSize(0,0);
@@ -188,7 +188,7 @@ void QProgressDialogPrivate::_q_disconnectOnClose()
if (receiverToDisconnectOnClose) {
QObject::disconnect(q, SIGNAL(canceled()), receiverToDisconnectOnClose,
memberToDisconnectOnClose);
- receiverToDisconnectOnClose = 0;
+ receiverToDisconnectOnClose = nullptr;
}
memberToDisconnectOnClose.clear();
}
@@ -418,7 +418,7 @@ void QProgressDialog::setCancelButton(QPushButton *cancelButton)
} else {
#ifndef QT_NO_SHORTCUT
delete d->escapeShortcut;
- d->escapeShortcut = 0;
+ d->escapeShortcut = nullptr;
#endif
}
d->adoptChildWidget(cancelButton);
@@ -450,7 +450,7 @@ void QProgressDialogPrivate::setCancelButtonText(const QString &cancelButtonText
q->setCancelButton(new QPushButton(cancelButtonText, q));
}
} else {
- q->setCancelButton(0);
+ q->setCancelButton(nullptr);
}
ensureSizeIsAtLeastSizeHint();
}
@@ -492,7 +492,7 @@ void QProgressDialogPrivate::adoptChildWidget(QWidget *c)
if (c->parentWidget() == q)
c->hide(); // until after ensureSizeIsAtLeastSizeHint()
else
- c->setParent(q, 0);
+ c->setParent(q, { });
}
ensureSizeIsAtLeastSizeHint();
if (c)
diff --git a/src/widgets/dialogs/qsidebar.cpp b/src/widgets/dialogs/qsidebar.cpp
index 2c8c66e1e2..dfb707eda0 100644
--- a/src/widgets/dialogs/qsidebar.cpp
+++ b/src/widgets/dialogs/qsidebar.cpp
@@ -73,7 +73,7 @@ void QSideBarDelegate::initStyleOption(QStyleOptionViewItem *option,
Example usage: File dialog sidebar and combo box
*/
-QUrlModel::QUrlModel(QObject *parent) : QStandardItemModel(parent), showFullPath(false), fileSystemModel(0)
+QUrlModel::QUrlModel(QObject *parent) : QStandardItemModel(parent), showFullPath(false), fileSystemModel(nullptr)
{
}
@@ -298,7 +298,7 @@ void QUrlModel::setFileSystemModel(QFileSystemModel *model)
{
if (model == fileSystemModel)
return;
- if (fileSystemModel != 0) {
+ if (fileSystemModel != nullptr) {
disconnect(model, SIGNAL(dataChanged(QModelIndex,QModelIndex)),
this, SLOT(dataChanged(QModelIndex,QModelIndex)));
disconnect(model, SIGNAL(layoutChanged()),
@@ -307,7 +307,7 @@ void QUrlModel::setFileSystemModel(QFileSystemModel *model)
this, SLOT(layoutChanged()));
}
fileSystemModel = model;
- if (fileSystemModel != 0) {
+ if (fileSystemModel != nullptr) {
connect(model, SIGNAL(dataChanged(QModelIndex,QModelIndex)),
this, SLOT(dataChanged(QModelIndex,QModelIndex)));
connect(model, SIGNAL(layoutChanged()),
diff --git a/src/widgets/dialogs/qwizard.cpp b/src/widgets/dialogs/qwizard.cpp
index 0295241a74..a4789f40b1 100644
--- a/src/widgets/dialogs/qwizard.cpp
+++ b/src/widgets/dialogs/qwizard.cpp
@@ -115,7 +115,7 @@ static QWidget *iWantTheFocus(QWidget *ancestor)
return candidate;
}
}
- return 0;
+ return nullptr;
}
static bool objectInheritsXAndXIsCloserThanY(const QObject *object, const QByteArray &classX,
@@ -165,7 +165,7 @@ static const char *changed_signal(int which)
};
Q_STATIC_ASSERT(7 == NFallbackDefaultProperties);
Q_UNREACHABLE();
- return 0;
+ return nullptr;
}
class QWizardDefaultProperty
@@ -286,9 +286,9 @@ class QWizardHeader : public QWidget
public:
enum RulerType { Ruler };
- inline QWizardHeader(RulerType /* ruler */, QWidget *parent = 0)
+ inline QWizardHeader(RulerType /* ruler */, QWidget *parent = nullptr)
: QWidget(parent) { setFixedHeight(2); }
- QWizardHeader(QWidget *parent = 0);
+ QWizardHeader(QWidget *parent = nullptr);
void setup(const QWizardLayoutInfo &info, const QString &title,
const QString &subTitle, const QPixmap &logo, const QPixmap &banner,
@@ -438,7 +438,7 @@ void QWizardHeader::paintEvent(QPaintEvent * /* event */)
class QWizardRuler : public QWizardHeader
{
public:
- inline QWizardRuler(QWidget *parent = 0)
+ inline QWizardRuler(QWidget *parent = nullptr)
: QWizardHeader(Ruler, parent) {}
};
@@ -684,7 +684,7 @@ void QWizardPrivate::init()
std::fill(btns, btns + QWizard::NButtons, nullptr);
antiFlickerWidget = new QWizardAntiFlickerWidget(q, this);
- wizStyle = QWizard::WizardStyle(q->style()->styleHint(QStyle::SH_WizardStyle, 0, q));
+ wizStyle = QWizard::WizardStyle(q->style()->styleHint(QStyle::SH_WizardStyle, nullptr, q));
if (wizStyle == QWizard::MacStyle) {
opts = (QWizard::NoDefaultButton | QWizard::NoCancelButton);
} else if (wizStyle == QWizard::ModernStyle) {
@@ -836,7 +836,7 @@ void QWizardPrivate::switchToPage(int newId, Direction direction)
newPage && newPage->isCommitPage() ? QWizard::CommitButton : QWizard::NextButton;
QAbstractButton *nextOrFinishButton =
btns[canContinue ? nextOrCommit : QWizard::FinishButton];
- QWidget *candidate = 0;
+ QWidget *candidate = nullptr;
/*
If there is no default button and the Next or Finish button
@@ -887,7 +887,7 @@ static const char * buttonSlots(QWizard::WizardButton which)
case QWizard::NoButton:
Q_UNREACHABLE();
};
- return 0;
+ return nullptr;
};
QWizardLayoutInfo QWizardPrivate::layoutInfoForCurrentPage()
@@ -898,14 +898,14 @@ QWizardLayoutInfo QWizardPrivate::layoutInfoForCurrentPage()
QWizardLayoutInfo info;
const int layoutHorizontalSpacing = style->pixelMetric(QStyle::PM_LayoutHorizontalSpacing);
- info.topLevelMarginLeft = style->pixelMetric(QStyle::PM_LayoutLeftMargin, 0, q);
- info.topLevelMarginRight = style->pixelMetric(QStyle::PM_LayoutRightMargin, 0, q);
- info.topLevelMarginTop = style->pixelMetric(QStyle::PM_LayoutTopMargin, 0, q);
- info.topLevelMarginBottom = style->pixelMetric(QStyle::PM_LayoutBottomMargin, 0, q);
- info.childMarginLeft = style->pixelMetric(QStyle::PM_LayoutLeftMargin, 0, titleLabel);
- info.childMarginRight = style->pixelMetric(QStyle::PM_LayoutRightMargin, 0, titleLabel);
- info.childMarginTop = style->pixelMetric(QStyle::PM_LayoutTopMargin, 0, titleLabel);
- info.childMarginBottom = style->pixelMetric(QStyle::PM_LayoutBottomMargin, 0, titleLabel);
+ info.topLevelMarginLeft = style->pixelMetric(QStyle::PM_LayoutLeftMargin, nullptr, q);
+ info.topLevelMarginRight = style->pixelMetric(QStyle::PM_LayoutRightMargin, nullptr, q);
+ info.topLevelMarginTop = style->pixelMetric(QStyle::PM_LayoutTopMargin, nullptr, q);
+ info.topLevelMarginBottom = style->pixelMetric(QStyle::PM_LayoutBottomMargin, nullptr, q);
+ info.childMarginLeft = style->pixelMetric(QStyle::PM_LayoutLeftMargin, nullptr, titleLabel);
+ info.childMarginRight = style->pixelMetric(QStyle::PM_LayoutRightMargin, nullptr, titleLabel);
+ info.childMarginTop = style->pixelMetric(QStyle::PM_LayoutTopMargin, nullptr, titleLabel);
+ info.childMarginBottom = style->pixelMetric(QStyle::PM_LayoutBottomMargin, nullptr, titleLabel);
info.hspacing = (layoutHorizontalSpacing == -1)
? style->layoutSpacing(QSizePolicy::DefaultType, QSizePolicy::DefaultType, Qt::Horizontal)
: layoutHorizontalSpacing;
@@ -959,7 +959,7 @@ void QWizardPrivate::recreateLayout(const QWizardLayoutInfo &info)
for (int i = mainLayout->count() - 1; i >= 0; --i) {
QLayoutItem *item = mainLayout->takeAt(i);
if (item->layout()) {
- item->layout()->setParent(0);
+ item->layout()->setParent(nullptr);
} else {
delete item;
}
@@ -2281,7 +2281,7 @@ void QWizard::removePage(int id)
{
Q_D(QWizard);
- QWizardPage *removedPage = 0;
+ QWizardPage *removedPage = nullptr;
// update startItem accordingly
if (d->pageMap.count() > 0) { // only if we have any pages
@@ -2792,7 +2792,7 @@ QAbstractButton *QWizard::button(WizardButton which) const
return d->vistaHelper->backButton();
#endif
if (!d->ensureButton(which))
- return 0;
+ return nullptr;
return d->btns[which];
}
@@ -3444,7 +3444,7 @@ int QWizard::nextId() const
\sa wizard()
*/
QWizardPage::QWizardPage(QWidget *parent)
- : QWidget(*new QWizardPagePrivate, parent, 0)
+ : QWidget(*new QWizardPagePrivate, parent, { })
{
connect(this, SIGNAL(completeChanged()), this, SLOT(_q_updateCachedCompleteState()));
}
diff --git a/src/widgets/doc/snippets/javastyle.cpp b/src/widgets/doc/snippets/javastyle.cpp
index 8657d5ed29..3d1b1e0030 100644
--- a/src/widgets/doc/snippets/javastyle.cpp
+++ b/src/widgets/doc/snippets/javastyle.cpp
@@ -2589,7 +2589,7 @@ int JavaStyle::styleHint(StyleHint hint, const QStyleOption *option,
switch (hint) {
case SH_Table_GridLineColor: {
- ret = static_cast<int>(option->palette.color(QPalette::Mid).rgb());
+ ret = static_cast<int>(option->palette.color(QPalette::Mid).rgba());
break;
}
case QStyle::SH_Menu_Scrollable:
diff --git a/src/widgets/doc/snippets/qsplashscreen/main.cpp b/src/widgets/doc/snippets/qsplashscreen/main.cpp
index 843932ca83..2512035879 100644
--- a/src/widgets/doc/snippets/qsplashscreen/main.cpp
+++ b/src/widgets/doc/snippets/qsplashscreen/main.cpp
@@ -71,3 +71,10 @@ int main(int argc, char *argv[])
return app.exec();
}
//! [1]
+
+//! [2]
+QScreen *screen = QGuiApplication::screens().at(1);
+QPixmap pixmap(":/splash.png");
+QSplashScreen splash(screen, pixmap);
+splash.show();
+//! [2]
diff --git a/src/widgets/doc/src/widgets-and-layouts/stylesheet.qdoc b/src/widgets/doc/src/widgets-and-layouts/stylesheet.qdoc
index c8f374a1b1..35bad6786a 100644
--- a/src/widgets/doc/src/widgets-and-layouts/stylesheet.qdoc
+++ b/src/widgets/doc/src/widgets-and-layouts/stylesheet.qdoc
@@ -993,6 +993,9 @@
\li Supports the \l{box model}. Supports the \l{#default-ps}{:default},
\l{#flat-ps}{:flat}, \l{#checked-ps}{:checked} pseudo states.
+ Since 5.15, the \l{#icon-prop}{icon} property can be set to
+ override the button icon.
+
For QPushButton with a menu, the menu indicator is styled
using the \l{#menu-indicator-sub}{::menu-indicator}
subcontrol. Appearance of checkable push buttons can be
@@ -1946,6 +1949,20 @@
See also \l{#width-prop}{width}.
\row
+ \li \b{\c icon} \target icon-prop
+ \li \l{#Url}{Url}+
+ \li The icon that is used, for widgets that have an icon.
+
+ The only widget currently supporting this property is QPushButton.
+
+ \note It's the application's responsibilty to assign an icon to a
+ button (using the QAbstractButton API), and not the style's. So be
+ careful setting it unless your stylesheet is targeting a specific
+ application.
+
+ Available since 5.15.
+
+ \row
\li \b{\c icon-size} \target icon-size-prop
\li \l{#Length}{Length}
\li The width and height of the icon in a widget.
diff --git a/src/widgets/effects/qgraphicseffect.cpp b/src/widgets/effects/qgraphicseffect.cpp
index 94188f3485..2eb74ce2a8 100644
--- a/src/widgets/effects/qgraphicseffect.cpp
+++ b/src/widgets/effects/qgraphicseffect.cpp
@@ -415,7 +415,7 @@ QGraphicsEffect::QGraphicsEffect(QGraphicsEffectPrivate &dd, QObject *parent)
QGraphicsEffect::~QGraphicsEffect()
{
Q_D(QGraphicsEffect);
- d->setGraphicsEffectSource(0);
+ d->setGraphicsEffectSource(nullptr);
}
/*!
diff --git a/src/widgets/effects/qpixmapfilter.cpp b/src/widgets/effects/qpixmapfilter.cpp
index e1e8175423..637c9c6aba 100644
--- a/src/widgets/effects/qpixmapfilter.cpp
+++ b/src/widgets/effects/qpixmapfilter.cpp
@@ -208,7 +208,7 @@ QRectF QPixmapFilter::boundingRectFor(const QRectF &rect) const
class QPixmapConvolutionFilterPrivate : public QPixmapFilterPrivate
{
public:
- QPixmapConvolutionFilterPrivate(): convolutionKernel(0), kernelWidth(0), kernelHeight(0), convoluteAlpha(false) {}
+ QPixmapConvolutionFilterPrivate(): convolutionKernel(nullptr), kernelWidth(0), kernelHeight(0), convoluteAlpha(false) {}
~QPixmapConvolutionFilterPrivate() {
delete[] convolutionKernel;
}
@@ -424,7 +424,7 @@ void QPixmapConvolutionFilter::draw(QPainter *painter, const QPointF &p, const Q
// raster implementation
- QImage *target = 0;
+ QImage *target = nullptr;
if (painter->paintEngine()->paintDevice()->devType() == QInternal::Image) {
target = static_cast<QImage *>(painter->paintEngine()->paintDevice());
@@ -432,18 +432,18 @@ void QPixmapConvolutionFilter::draw(QPainter *painter, const QPointF &p, const Q
if (mat.type() > QTransform::TxTranslate) {
// Disabled because of transformation...
- target = 0;
+ target = nullptr;
} else {
QRasterPaintEngine *pe = static_cast<QRasterPaintEngine *>(painter->paintEngine());
if (pe->clipType() == QRasterPaintEngine::ComplexClip)
// disabled because of complex clipping...
- target = 0;
+ target = nullptr;
else {
QRectF clip = pe->clipBoundingRect();
QRectF rect = boundingRectFor(srcRect.isEmpty() ? src.rect() : srcRect);
QTransform x = painter->deviceTransform();
if (!clip.contains(rect.translated(x.dx() + p.x(), x.dy() + p.y()))) {
- target = 0;
+ target = nullptr;
}
}
diff --git a/src/widgets/graphicsview/qgraphicsanchorlayout.cpp b/src/widgets/graphicsview/qgraphicsanchorlayout.cpp
index ea6a8018ca..4f1855a606 100644
--- a/src/widgets/graphicsview/qgraphicsanchorlayout.cpp
+++ b/src/widgets/graphicsview/qgraphicsanchorlayout.cpp
@@ -353,7 +353,7 @@ void QGraphicsAnchorLayout::addAnchors(QGraphicsLayoutItem *firstItem,
bool ok = true;
if (orientations & Qt::Horizontal) {
// Currently, if the first is ok, then the rest of the calls should be ok
- ok = addAnchor(secondItem, Qt::AnchorLeft, firstItem, Qt::AnchorLeft) != 0;
+ ok = addAnchor(secondItem, Qt::AnchorLeft, firstItem, Qt::AnchorLeft) != nullptr;
if (ok)
addAnchor(firstItem, Qt::AnchorRight, secondItem, Qt::AnchorRight);
}
@@ -465,7 +465,7 @@ void QGraphicsAnchorLayout::removeAt(int index)
d->removeAnchors(item);
d->items.remove(index);
- item->setParentLayoutItem(0);
+ item->setParentLayoutItem(nullptr);
invalidate();
}
diff --git a/src/widgets/graphicsview/qgraphicsanchorlayout_p.cpp b/src/widgets/graphicsview/qgraphicsanchorlayout_p.cpp
index 4f44373cad..af0ee3d38c 100644
--- a/src/widgets/graphicsview/qgraphicsanchorlayout_p.cpp
+++ b/src/widgets/graphicsview/qgraphicsanchorlayout_p.cpp
@@ -61,7 +61,7 @@ QT_BEGIN_NAMESPACE
const qreal g_offset = (sizeof(qreal) == sizeof(double)) ? QWIDGETSIZE_MAX : QWIDGETSIZE_MAX / 32;
QGraphicsAnchorPrivate::QGraphicsAnchorPrivate(int version)
- : QObjectPrivate(version), layoutPrivate(0), data(0),
+ : QObjectPrivate(version), layoutPrivate(nullptr), data(nullptr),
sizePolicy(QSizePolicy::Fixed), preferredSize(0),
hasSize(true)
{
@@ -72,7 +72,7 @@ QGraphicsAnchorPrivate::~QGraphicsAnchorPrivate()
if (data) {
// The QGraphicsAnchor was already deleted at this moment. We must clean
// the dangling pointer to avoid double deletion in the AnchorData dtor.
- data->graphicsAnchor = 0;
+ data->graphicsAnchor = nullptr;
layoutPrivate->removeAnchor(data->from, data->to);
}
@@ -631,9 +631,9 @@ QGraphicsAnchorLayoutPrivate::QGraphicsAnchorLayoutPrivate()
spacings[i] = -1;
graphHasConflicts[i] = false;
- layoutFirstVertex[i] = 0;
- layoutCentralVertex[i] = 0;
- layoutLastVertex[i] = 0;
+ layoutFirstVertex[i] = nullptr;
+ layoutCentralVertex[i] = nullptr;
+ layoutLastVertex[i] = nullptr;
}
}
@@ -981,7 +981,7 @@ bool QGraphicsAnchorLayoutPrivate::simplifyVertices(Orientation orientation)
feasible &= replaceVertex(orientation, next, newV, newV->m_secondAnchors);
// Update the layout vertex information if one of the vertices is a layout vertex.
- AnchorVertex *layoutVertex = 0;
+ AnchorVertex *layoutVertex = nullptr;
if (v->m_item == q)
layoutVertex = v;
else if (next->m_item == q)
@@ -1035,7 +1035,7 @@ bool QGraphicsAnchorLayoutPrivate::simplifyGraphIteration(QGraphicsAnchorLayoutP
QSet<AnchorVertex *> visited;
QStack<QPair<AnchorVertex *, AnchorVertex *> > stack;
- stack.push(qMakePair(static_cast<AnchorVertex *>(0), layoutFirstVertex[orientation]));
+ stack.push(qMakePair(static_cast<AnchorVertex *>(nullptr), layoutFirstVertex[orientation]));
QVector<AnchorVertex*> candidates;
// Walk depth-first, in the stack we store start of the candidate sequence (beforeSequence)
@@ -1384,7 +1384,7 @@ void QGraphicsAnchorLayoutPrivate::createLayoutEdges()
// Save a reference to layout vertices
layoutFirstVertex[Horizontal] = internalVertex(layout, Qt::AnchorLeft);
- layoutCentralVertex[Horizontal] = 0;
+ layoutCentralVertex[Horizontal] = nullptr;
layoutLastVertex[Horizontal] = internalVertex(layout, Qt::AnchorRight);
// Vertical
@@ -1395,7 +1395,7 @@ void QGraphicsAnchorLayoutPrivate::createLayoutEdges()
// Save a reference to layout vertices
layoutFirstVertex[Vertical] = internalVertex(layout, Qt::AnchorTop);
- layoutCentralVertex[Vertical] = 0;
+ layoutCentralVertex[Vertical] = nullptr;
layoutLastVertex[Vertical] = internalVertex(layout, Qt::AnchorBottom);
}
@@ -1581,7 +1581,7 @@ void QGraphicsAnchorLayoutPrivate::removeCenterAnchors(
}
if (item == q) {
- layoutCentralVertex[orientation] = 0;
+ layoutCentralVertex[orientation] = nullptr;
}
}
@@ -1636,29 +1636,29 @@ QGraphicsAnchor *QGraphicsAnchorLayoutPrivate::addAnchor(QGraphicsLayoutItem *fi
qreal *spacing)
{
Q_Q(QGraphicsAnchorLayout);
- if ((firstItem == 0) || (secondItem == 0)) {
+ if ((firstItem == nullptr) || (secondItem == nullptr)) {
qWarning("QGraphicsAnchorLayout::addAnchor(): "
"Cannot anchor NULL items");
- return 0;
+ return nullptr;
}
if (firstItem == secondItem) {
qWarning("QGraphicsAnchorLayout::addAnchor(): "
"Cannot anchor the item to itself");
- return 0;
+ return nullptr;
}
if (edgeOrientation(secondEdge) != edgeOrientation(firstEdge)) {
qWarning("QGraphicsAnchorLayout::addAnchor(): "
"Cannot anchor edges of different orientations");
- return 0;
+ return nullptr;
}
const QGraphicsLayoutItem *parentWidget = q->parentLayoutItem();
if (firstItem == parentWidget || secondItem == parentWidget) {
qWarning("QGraphicsAnchorLayout::addAnchor(): "
"You cannot add the parent of the layout to the layout.");
- return 0;
+ return nullptr;
}
// In QGraphicsAnchorLayout, items are represented in its internal
@@ -1770,13 +1770,13 @@ QGraphicsAnchor *QGraphicsAnchorLayoutPrivate::getAnchor(QGraphicsLayoutItem *fi
{
// Do not expose internal anchors
if (firstItem == secondItem)
- return 0;
+ return nullptr;
const Orientation orientation = edgeOrientation(firstEdge);
AnchorVertex *v1 = internalVertex(firstItem, firstEdge);
AnchorVertex *v2 = internalVertex(secondItem, secondEdge);
- QGraphicsAnchor *graphicsAnchor = 0;
+ QGraphicsAnchor *graphicsAnchor = nullptr;
AnchorData *data = graph[orientation].edgeData(v1, v2);
if (data) {
@@ -1811,7 +1811,7 @@ void QGraphicsAnchorLayoutPrivate::removeAnchor(AnchorVertex *firstVertex,
removeAnchor_helper(firstVertex, secondVertex);
// Ensure no dangling pointer is left behind
- firstVertex = secondVertex = 0;
+ firstVertex = secondVertex = nullptr;
// Checking if the item stays in the layout or not
bool keepFirstItem = false;
@@ -2017,13 +2017,13 @@ QLayoutStyleInfo &QGraphicsAnchorLayoutPrivate::styleInfo() const
if (styleInfoDirty) {
Q_Q(const QGraphicsAnchorLayout);
//### Fix this if QGV ever gets support for Metal style or different Aqua sizes.
- QWidget *wid = 0;
+ QWidget *wid = nullptr;
QGraphicsLayoutItem *parent = q->parentLayoutItem();
while (parent && parent->isLayout()) {
parent = parent->parentLayoutItem();
}
- QGraphicsWidget *w = 0;
+ QGraphicsWidget *w = nullptr;
if (parent) {
QGraphicsItem *parentItem = parent->graphicsItem();
if (parentItem && parentItem->isWidget())
@@ -2404,7 +2404,7 @@ QList<QSimplexConstraint *> QGraphicsAnchorLayoutPrivate::constraintsFromSizeHin
// Look for the layout edge. That can be either the first half in case the
// layout is split in two, or the whole layout anchor.
Orientation orient = Orientation(anchors.first()->orientation);
- AnchorData *layoutEdge = 0;
+ AnchorData *layoutEdge = nullptr;
if (layoutCentralVertex[orient]) {
layoutEdge = graph[orient].edgeData(layoutFirstVertex[orient], layoutCentralVertex[orient]);
} else {
@@ -2423,7 +2423,7 @@ QList<QSimplexConstraint *> QGraphicsAnchorLayoutPrivate::constraintsFromSizeHin
actualMax = -layoutEdge->minSize;
}
if (actualMax != expectedMax) {
- layoutEdge = 0;
+ layoutEdge = nullptr;
}
// For each variable, create constraints based on size hints
@@ -2496,8 +2496,8 @@ QGraphicsAnchorLayoutPrivate::getGraphParts(Orientation orientation)
Q_ASSERT(layoutFirstVertex[orientation] && layoutLastVertex[orientation]);
- AnchorData *edgeL1 = 0;
- AnchorData *edgeL2 = 0;
+ AnchorData *edgeL1 = nullptr;
+ AnchorData *edgeL2 = nullptr;
// The layout may have a single anchor between Left and Right or two half anchors
// passing through the center
@@ -2625,7 +2625,7 @@ void QGraphicsAnchorLayoutPrivate::setItemsGeometries(const QRectF &geom)
qreal left;
qreal right;
- q->getContentsMargins(&left, &top, &right, 0);
+ q->getContentsMargins(&left, &top, &right, nullptr);
const Qt::LayoutDirection visualDir = visualDirection();
if (visualDir == Qt::RightToLeft)
qSwap(left, right);
diff --git a/src/widgets/graphicsview/qgraphicsgridlayout.cpp b/src/widgets/graphicsview/qgraphicsgridlayout.cpp
index 6b7052a0ab..260e1861c7 100644
--- a/src/widgets/graphicsview/qgraphicsgridlayout.cpp
+++ b/src/widgets/graphicsview/qgraphicsgridlayout.cpp
@@ -137,7 +137,7 @@ QGraphicsGridLayout::~QGraphicsGridLayout()
// ~QGraphicsLayoutItem.
removeAt(i);
if (item) {
- item->setParentLayoutItem(0);
+ item->setParentLayoutItem(nullptr);
if (item->ownedByLayout())
delete item;
}
@@ -535,11 +535,11 @@ QGraphicsLayoutItem *QGraphicsGridLayout::itemAt(int row, int column) const
Q_D(const QGraphicsGridLayout);
if (row < 0 || row >= rowCount() || column < 0 || column >= columnCount()) {
qWarning("QGraphicsGridLayout::itemAt: invalid row, column %d, %d", row, column);
- return 0;
+ return nullptr;
}
if (QGraphicsGridLayoutEngineItem *engineItem = static_cast<QGraphicsGridLayoutEngineItem*>(d->engine.itemAt(row, column)))
return engineItem->layoutItem();
- return 0;
+ return nullptr;
}
/*!
@@ -583,7 +583,7 @@ void QGraphicsGridLayout::removeAt(int index)
if (QGraphicsGridLayoutEngineItem *gridItem = static_cast<QGraphicsGridLayoutEngineItem*>(d->engine.itemAt(index))) {
if (QGraphicsLayoutItem *layoutItem = gridItem->layoutItem())
- layoutItem->setParentLayoutItem(0);
+ layoutItem->setParentLayoutItem(nullptr);
d->engine.removeItem(gridItem);
// recalculate rowInfo.count if we remove an item that is on the right/bottommost row
diff --git a/src/widgets/graphicsview/qgraphicsgridlayoutengine.cpp b/src/widgets/graphicsview/qgraphicsgridlayoutengine.cpp
index 6a8d5c907b..5797d9e539 100644
--- a/src/widgets/graphicsview/qgraphicsgridlayoutengine.cpp
+++ b/src/widgets/graphicsview/qgraphicsgridlayoutengine.cpp
@@ -96,7 +96,7 @@ Qt::Alignment QGraphicsGridLayoutEngine::alignment(QGraphicsLayoutItem *graphics
{
if (QGraphicsGridLayoutEngineItem *gridEngineItem = findLayoutItem(graphicsLayoutItem))
return gridEngineItem->alignment();
- return 0;
+ return { };
}
diff --git a/src/widgets/graphicsview/qgraphicsgridlayoutengine_p.h b/src/widgets/graphicsview/qgraphicsgridlayoutengine_p.h
index e98160e40f..2f2c547977 100644
--- a/src/widgets/graphicsview/qgraphicsgridlayoutengine_p.h
+++ b/src/widgets/graphicsview/qgraphicsgridlayoutengine_p.h
@@ -68,7 +68,7 @@ class QGraphicsLayoutPrivate;
class QGraphicsGridLayoutEngineItem : public QGridLayoutItem {
public:
QGraphicsGridLayoutEngineItem(QGraphicsLayoutItem *item, int row, int columns, int rowSpan = 1, int columnSpan = 1,
- Qt::Alignment alignment = nullptr)
+ Qt::Alignment alignment = { })
: QGridLayoutItem(row, columns, rowSpan, columnSpan, alignment), q_layoutItem(item) {}
virtual QLayoutPolicy::Policy sizePolicy(Qt::Orientation orientation) const override
diff --git a/src/widgets/graphicsview/qgraphicsitem.cpp b/src/widgets/graphicsview/qgraphicsitem.cpp
index 7c0f836156..6f1eb4b346 100644
--- a/src/widgets/graphicsview/qgraphicsitem.cpp
+++ b/src/widgets/graphicsview/qgraphicsitem.cpp
@@ -1250,7 +1250,7 @@ void QGraphicsItemPrivate::setParentItemHelper(QGraphicsItem *newParent, const Q
if (isWidget)
static_cast<QGraphicsWidgetPrivate *>(this)->fixFocusChainBeforeReparenting((newParent &&
- newParent->isWidget()) ? static_cast<QGraphicsWidget *>(newParent) : 0,
+ newParent->isWidget()) ? static_cast<QGraphicsWidget *>(newParent) : nullptr,
scene);
if (scene) {
// Deliver the change to the index
@@ -1293,7 +1293,7 @@ void QGraphicsItemPrivate::setParentItemHelper(QGraphicsItem *newParent, const Q
// Ensure any last parent focus scope does not point to this item or any of
// its descendents.
QGraphicsItem *p = parent;
- QGraphicsItem *parentFocusScopeItem = 0;
+ QGraphicsItem *parentFocusScopeItem = nullptr;
while (p) {
if (p->d_ptr->flags & QGraphicsItem::ItemIsFocusScope) {
// If this item's focus scope's focus scope item points
@@ -1301,7 +1301,7 @@ void QGraphicsItemPrivate::setParentItemHelper(QGraphicsItem *newParent, const Q
QGraphicsItem *fsi = p->d_ptr->focusScopeItem;
if (q_ptr == fsi || q_ptr->isAncestorOf(fsi)) {
parentFocusScopeItem = fsi;
- p->d_ptr->focusScopeItem = 0;
+ p->d_ptr->focusScopeItem = nullptr;
fsi->d_ptr->focusScopeItemChange(false);
}
break;
@@ -1321,7 +1321,7 @@ void QGraphicsItemPrivate::setParentItemHelper(QGraphicsItem *newParent, const Q
if (p->d_ptr->flags & QGraphicsItem::ItemIsFocusScope) {
if (subFocusItem && subFocusItem != q_ptr) {
// Find the subFocusItem's topmost focus scope within the new parent's focusscope
- QGraphicsItem *ancestorScope = 0;
+ QGraphicsItem *ancestorScope = nullptr;
QGraphicsItem *p2 = subFocusItem->d_ptr->parent;
while (p2 && p2 != p) {
if (p2->d_ptr->flags & QGraphicsItem::ItemIsFocusScope)
@@ -1587,7 +1587,7 @@ QGraphicsItem::~QGraphicsItem()
if (QAbstractDeclarativeData::destroyed)
QAbstractDeclarativeData::destroyed(p->declarativeData, o);
}
- p->declarativeData = 0;
+ p->declarativeData = nullptr;
p->wasDeleted = false;
}
}
@@ -1607,14 +1607,14 @@ QGraphicsItem::~QGraphicsItem()
#endif
clearFocus();
- setFocusProxy(0);
+ setFocusProxy(nullptr);
// Update focus scope item ptr.
QGraphicsItem *p = d_ptr->parent;
while (p) {
if (p->flags() & ItemIsFocusScope) {
if (p->d_ptr->focusScopeItem == this)
- p->d_ptr->focusScopeItem = 0;
+ p->d_ptr->focusScopeItem = nullptr;
break;
}
p = p->d_ptr->parent;
@@ -1630,7 +1630,7 @@ QGraphicsItem::~QGraphicsItem()
d_ptr->scene->d_func()->removeItemHelper(this);
} else {
d_ptr->resetFocusProxy();
- setParentItem(0);
+ setParentItem(nullptr);
}
#if QT_CONFIG(graphicseffect)
@@ -1639,7 +1639,7 @@ QGraphicsItem::~QGraphicsItem()
if (d_ptr->transformData) {
for(int i = 0; i < d_ptr->transformData->graphicsTransforms.size(); ++i) {
QGraphicsTransform *t = d_ptr->transformData->graphicsTransforms.at(i);
- static_cast<QGraphicsTransformPrivate *>(t->d_ptr.data())->item = 0;
+ static_cast<QGraphicsTransformPrivate *>(t->d_ptr.data())->item = nullptr;
delete t;
}
}
@@ -1751,7 +1751,7 @@ QGraphicsWidget *QGraphicsItem::parentWidget() const
QGraphicsItem *p = parentItem();
while (p && !p->isWidget())
p = p->parentItem();
- return (p && p->isWidget()) ? static_cast<QGraphicsWidget *>(p) : 0;
+ return (p && p->isWidget()) ? static_cast<QGraphicsWidget *>(p) : nullptr;
}
/*!
@@ -1811,7 +1811,7 @@ QGraphicsItem *QGraphicsItem::panel() const
*/
QGraphicsObject *QGraphicsItem::toGraphicsObject()
{
- return d_ptr->isObject ? static_cast<QGraphicsObject *>(this) : 0;
+ return d_ptr->isObject ? static_cast<QGraphicsObject *>(this) : nullptr;
}
/*!
@@ -1822,7 +1822,7 @@ QGraphicsObject *QGraphicsItem::toGraphicsObject()
*/
const QGraphicsObject *QGraphicsItem::toGraphicsObject() const
{
- return d_ptr->isObject ? static_cast<const QGraphicsObject *>(this) : 0;
+ return d_ptr->isObject ? static_cast<const QGraphicsObject *>(this) : nullptr;
}
/*!
@@ -2224,7 +2224,7 @@ bool QGraphicsItem::isBlockedByModalPanel(QGraphicsItem **blockingPanel) const
return false;
- QGraphicsItem *dummy = 0;
+ QGraphicsItem *dummy = nullptr;
if (!blockingPanel)
blockingPanel = &dummy;
@@ -2420,7 +2420,7 @@ bool QGraphicsItem::isVisibleTo(const QGraphicsItem *parent) const
if (p->d_ptr->explicitlyHidden)
return false;
} while ((p = p->d_ptr->parent));
- return parent == 0;
+ return parent == nullptr;
}
/*!
@@ -2959,7 +2959,7 @@ void QGraphicsItem::setGraphicsEffect(QGraphicsEffect *effect)
if (d_ptr->graphicsEffect) {
delete d_ptr->graphicsEffect;
- d_ptr->graphicsEffect = 0;
+ d_ptr->graphicsEffect = nullptr;
} else if (d_ptr->parent) {
d_ptr->parent->d_ptr->updateChildWithGraphicsEffectFlagRecursively();
}
@@ -2984,7 +2984,7 @@ void QGraphicsItemPrivate::updateChildWithGraphicsEffectFlagRecursively()
if (itemPrivate->mayHaveChildWithGraphicsEffect)
return;
itemPrivate->mayHaveChildWithGraphicsEffect = 1;
- } while ((itemPrivate = itemPrivate->parent ? itemPrivate->parent->d_ptr.data() : 0));
+ } while ((itemPrivate = itemPrivate->parent ? itemPrivate->parent->d_ptr.data() : nullptr));
#endif
}
@@ -3396,13 +3396,13 @@ void QGraphicsItem::setActive(bool active)
if (!activePanel || activePanel == thisPanel) {
// Deactivate this item, and reactivate the parent panel,
// or the last active panel (if any).
- QGraphicsItem *nextToActivate = 0;
+ QGraphicsItem *nextToActivate = nullptr;
if (d_ptr->parent)
nextToActivate = d_ptr->parent->panel();
if (!nextToActivate)
nextToActivate = d_ptr->scene->d_func()->lastActivePanel;
if (nextToActivate == this || isAncestorOf(nextToActivate))
- nextToActivate = 0;
+ nextToActivate = nullptr;
d_ptr->scene->setActivePanel(nextToActivate);
}
}
@@ -3499,7 +3499,7 @@ void QGraphicsItemPrivate::setFocusHelper(Qt::FocusReason focusReason, bool clim
}
// Update the child focus chain.
- QGraphicsItem *commonAncestor = 0;
+ QGraphicsItem *commonAncestor = nullptr;
if (scene && scene->focusItem() && scene->focusItem()->panel() == q_ptr->panel()) {
commonAncestor = scene->focusItem()->commonAncestorItem(f);
scene->focusItem()->d_ptr->clearSubFocus(scene->focusItem(), commonAncestor);
@@ -3552,7 +3552,7 @@ void QGraphicsItemPrivate::clearFocusHelper(bool giveFocusToParent, bool hiddenB
while (p) {
if (p->flags() & QGraphicsItem::ItemIsFocusScope) {
if (p->d_ptr->focusScopeItem == q_ptr) {
- p->d_ptr->focusScopeItem = 0;
+ p->d_ptr->focusScopeItem = nullptr;
if (!subFocusItem->hasFocus()) //if it has focus, focusScopeItemChange is called elsewhere
focusScopeItemChange(false);
}
@@ -3572,7 +3572,7 @@ void QGraphicsItemPrivate::clearFocusHelper(bool giveFocusToParent, bool hiddenB
clearSubFocus(q_ptr);
// If this item has the scene's input focus, clear it.
- scene->setFocusItem(0);
+ scene->setFocusItem(nullptr);
}
}
@@ -3621,7 +3621,7 @@ void QGraphicsItem::setFocusProxy(QGraphicsItem *item)
qWarning("QGraphicsItem::setFocusProxy: focus proxy must be in same scene");
return;
}
- for (QGraphicsItem *f = item->focusProxy(); f != 0; f = f->focusProxy()) {
+ for (QGraphicsItem *f = item->focusProxy(); f != nullptr; f = f->focusProxy()) {
if (f == this) {
qWarning("QGraphicsItem::setFocusProxy: %p is already in the focus proxy chain", item);
return;
@@ -4452,7 +4452,7 @@ QTransform QGraphicsItem::deviceTransform(const QTransform &viewportTransform) c
QTransform QGraphicsItem::itemTransform(const QGraphicsItem *other, bool *ok) const
{
// Catch simple cases first.
- if (other == 0) {
+ if (other == nullptr) {
qWarning("QGraphicsItem::itemTransform: null pointer passed");
return QTransform();
}
@@ -4892,7 +4892,7 @@ void QGraphicsItem::stackBefore(const QGraphicsItem *sibling)
}
QList<QGraphicsItem *> *siblings = d_ptr->parent
? &d_ptr->parent->d_ptr->children
- : (d_ptr->scene ? &d_ptr->scene->d_func()->topLevelItems : 0);
+ : (d_ptr->scene ? &d_ptr->scene->d_func()->topLevelItems : nullptr);
if (!siblings) {
qWarning("QGraphicsItem::stackUnder: cannot stack under %p, which must be a sibling", sibling);
return;
@@ -4949,7 +4949,7 @@ QRectF QGraphicsItem::childrenBoundingRect() const
return d_ptr->childrenBoundingRect;
d_ptr->childrenBoundingRect = QRectF();
- d_ptr->childrenBoundingRectHelper(0, &d_ptr->childrenBoundingRect, 0);
+ d_ptr->childrenBoundingRectHelper(nullptr, &d_ptr->childrenBoundingRect, nullptr);
d_ptr->dirtyChildrenBoundingRect = 0;
return d_ptr->childrenBoundingRect;
}
@@ -5422,7 +5422,7 @@ QRegion QGraphicsItem::boundingRegion(const QTransform &itemToDeviceTransform) c
// Render
QStyleOptionGraphicsItem option;
- const_cast<QGraphicsItem *>(this)->paint(&p, &option, 0);
+ const_cast<QGraphicsItem *>(this)->paint(&p, &option, nullptr);
p.end();
// Transform QRegion back to device space
@@ -5575,7 +5575,7 @@ void QGraphicsItemPrivate::invalidateParentGraphicsEffectsRecursively()
if (!itemPrivate->updateDueToGraphicsEffect)
static_cast<QGraphicsItemEffectSourcePrivate *>(itemPrivate->graphicsEffect->d_func()->source->d_func())->invalidateCache();
}
- } while ((itemPrivate = itemPrivate->parent ? itemPrivate->parent->d_ptr.data() : 0));
+ } while ((itemPrivate = itemPrivate->parent ? itemPrivate->parent->d_ptr.data() : nullptr));
}
void QGraphicsItemPrivate::invalidateChildGraphicsEffectsRecursively(QGraphicsItemPrivate::InvalidateReason reason)
@@ -5739,7 +5739,7 @@ void QGraphicsItemPrivate::ensureSceneTransformRecursive(QGraphicsItem **topMost
if (*topMostDirtyItem == q_ptr) {
if (!dirtySceneTransform)
return; // OK, neither my ancestors nor I have dirty scene transforms.
- *topMostDirtyItem = 0;
+ *topMostDirtyItem = nullptr;
} else if (*topMostDirtyItem) {
return; // Continue backtrack.
}
@@ -5771,7 +5771,7 @@ void QGraphicsItemPrivate::setSubFocus(QGraphicsItem *rootItem, QGraphicsItem *s
if (parent != q_ptr && parent->d_ptr->subFocusItem) {
if (parent->d_ptr->subFocusItem == q_ptr)
break;
- parent->d_ptr->subFocusItem->d_ptr->clearSubFocus(0, stopItem);
+ parent->d_ptr->subFocusItem->d_ptr->clearSubFocus(nullptr, stopItem);
}
parent->d_ptr->subFocusItem = q_ptr;
parent->d_ptr->subFocusItemChange();
@@ -5793,7 +5793,7 @@ void QGraphicsItemPrivate::clearSubFocus(QGraphicsItem *rootItem, QGraphicsItem
do {
if (parent->d_ptr->subFocusItem != q_ptr)
break;
- parent->d_ptr->subFocusItem = 0;
+ parent->d_ptr->subFocusItem = nullptr;
if (parent != stopItem && !parent->isAncestorOf(stopItem))
parent->d_ptr->subFocusItemChange();
} while (!parent->isPanel() && (parent = parent->d_ptr->parent));
@@ -5808,7 +5808,7 @@ void QGraphicsItemPrivate::clearSubFocus(QGraphicsItem *rootItem, QGraphicsItem
void QGraphicsItemPrivate::resetFocusProxy()
{
for (int i = 0; i < focusProxyRefs.size(); ++i)
- *focusProxyRefs.at(i) = 0;
+ *focusProxyRefs.at(i) = nullptr;
focusProxyRefs.clear();
}
@@ -7322,7 +7322,7 @@ void QGraphicsItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
}
// Find the active view.
- QGraphicsView *view = 0;
+ QGraphicsView *view = nullptr;
if (event->widget())
view = qobject_cast<QGraphicsView *>(event->widget()->parentWidget());
@@ -7330,7 +7330,7 @@ void QGraphicsItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
int i = 0;
bool movedMe = false;
while (i <= selectedItems.size()) {
- QGraphicsItem *item = 0;
+ QGraphicsItem *item = nullptr;
if (i < selectedItems.size())
item = selectedItems.at(i);
else
@@ -7891,7 +7891,7 @@ void QGraphicsItemPrivate::children_append(QDeclarativeListProperty<QGraphicsObj
if (QGraphicsItemPrivate::get(graphicsObject)->sendParentChangeNotification) {
item->setParentItem(graphicsObject);
} else {
- QGraphicsItemPrivate::get(item)->setParentItemHelper(graphicsObject, 0, 0);
+ QGraphicsItemPrivate::get(item)->setParentItemHelper(graphicsObject, nullptr, nullptr);
}
}
}
@@ -7908,7 +7908,7 @@ QGraphicsObject *QGraphicsItemPrivate::children_at(QDeclarativeListProperty<QGra
if (index >= 0 && index < d->children.count())
return d->children.at(index)->toGraphicsObject();
else
- return 0;
+ return nullptr;
}
void QGraphicsItemPrivate::children_clear(QDeclarativeListProperty<QGraphicsObject> *list)
@@ -7917,10 +7917,10 @@ void QGraphicsItemPrivate::children_clear(QDeclarativeListProperty<QGraphicsObje
int childCount = d->children.count();
if (d->sendParentChangeNotification) {
for (int index = 0; index < childCount; index++)
- d->children.at(0)->setParentItem(0);
+ d->children.at(0)->setParentItem(nullptr);
} else {
for (int index = 0; index < childCount; index++)
- QGraphicsItemPrivate::get(d->children.at(0))->setParentItemHelper(0, 0, 0);
+ QGraphicsItemPrivate::get(d->children.at(0))->setParentItemHelper(nullptr, nullptr, nullptr);
}
}
@@ -9949,7 +9949,7 @@ class QGraphicsTextItemPrivate
{
public:
QGraphicsTextItemPrivate()
- : control(0), pageNumber(0), useDefaultImpl(false), tabChangesFocus(false), clickCausedFocus(0)
+ : control(nullptr), pageNumber(0), useDefaultImpl(false), tabChangesFocus(false), clickCausedFocus(0)
{ }
mutable QWidgetTextControl *control;
@@ -11232,7 +11232,7 @@ void QGraphicsItemGroup::removeFromGroup(QGraphicsItem *item)
// ### Expensive, we could maybe use dirtySceneTransform bit for optimization
item->setTransform(itemTransform);
- item->d_func()->setIsMemberOfGroup(item->group() != 0);
+ item->d_func()->setIsMemberOfGroup(item->group() != nullptr);
// ### Quite expensive. But removeFromGroup() isn't called very often.
prepareGeometryChange();
@@ -11412,18 +11412,18 @@ QPixmap QGraphicsItemEffectSourcePrivate::pixmap(Qt::CoordinateSystem system, QP
QTransform sceneTransform = item->sceneTransform();
QTransform newEffectTransform = sceneTransform.inverted();
newEffectTransform *= effectTransform;
- scened->draw(item, &pixmapPainter, 0, &sceneTransform, 0, 0, qreal(1.0),
+ scened->draw(item, &pixmapPainter, nullptr, &sceneTransform, nullptr, nullptr, qreal(1.0),
&newEffectTransform, false, true);
} else if (deviceCoordinates) {
// Device coordinates with info.
- scened->draw(item, &pixmapPainter, info->viewTransform, info->transformPtr, 0,
+ scened->draw(item, &pixmapPainter, info->viewTransform, info->transformPtr, nullptr,
info->widget, info->opacity, &effectTransform, info->wasDirtySceneTransform,
info->drawItem);
} else {
// Item coordinates with info.
QTransform newEffectTransform = info->transformPtr->inverted();
newEffectTransform *= effectTransform;
- scened->draw(item, &pixmapPainter, info->viewTransform, info->transformPtr, 0,
+ scened->draw(item, &pixmapPainter, info->viewTransform, info->transformPtr, nullptr,
info->widget, info->opacity, &newEffectTransform, info->wasDirtySceneTransform,
info->drawItem);
}
diff --git a/src/widgets/graphicsview/qgraphicsitemanimation.cpp b/src/widgets/graphicsview/qgraphicsitemanimation.cpp
index ad77e2f260..1c5dbf265c 100644
--- a/src/widgets/graphicsview/qgraphicsitemanimation.cpp
+++ b/src/widgets/graphicsview/qgraphicsitemanimation.cpp
@@ -106,7 +106,7 @@ class QGraphicsItemAnimationPrivate
{
public:
inline QGraphicsItemAnimationPrivate()
- : q(0), timeLine(0), item(0), step(0)
+ : q(nullptr), timeLine(nullptr), item(nullptr), step(0)
{ }
QGraphicsItemAnimation *q;
diff --git a/src/widgets/graphicsview/qgraphicslayout_p.cpp b/src/widgets/graphicsview/qgraphicslayout_p.cpp
index 59ed7acd72..c10763d065 100644
--- a/src/widgets/graphicsview/qgraphicslayout_p.cpp
+++ b/src/widgets/graphicsview/qgraphicslayout_p.cpp
@@ -97,7 +97,7 @@ void QGraphicsLayoutPrivate::getMargin(qreal *result, qreal userMargin, QStyle::
*result = 0.0;
if (QGraphicsItem *layoutParentItem = parentItem()) {
if (layoutParentItem->isWidget())
- *result = (qreal)static_cast<QGraphicsWidget*>(layoutParentItem)->style()->pixelMetric(pm, 0);
+ *result = (qreal)static_cast<QGraphicsWidget*>(layoutParentItem)->style()->pixelMetric(pm, nullptr);
}
}
}
diff --git a/src/widgets/graphicsview/qgraphicslayoutitem.cpp b/src/widgets/graphicsview/qgraphicslayoutitem.cpp
index 1192bad51e..8694dcb36b 100644
--- a/src/widgets/graphicsview/qgraphicslayoutitem.cpp
+++ b/src/widgets/graphicsview/qgraphicslayoutitem.cpp
@@ -105,7 +105,7 @@ static void normalizeHints(qreal &minimum, qreal &preferred, qreal &maximum, qre
\internal
*/
QGraphicsLayoutItemPrivate::QGraphicsLayoutItemPrivate(QGraphicsLayoutItem *par, bool layout)
- : parent(par), userSizeHints(0), isLayout(layout), ownedByLayout(false), graphicsItem(0)
+ : parent(par), userSizeHints(nullptr), isLayout(layout), ownedByLayout(false), graphicsItem(nullptr)
{
}
diff --git a/src/widgets/graphicsview/qgraphicslayoutstyleinfo.cpp b/src/widgets/graphicsview/qgraphicslayoutstyleinfo.cpp
index da2510a8cb..2f1526cc78 100644
--- a/src/widgets/graphicsview/qgraphicslayoutstyleinfo.cpp
+++ b/src/widgets/graphicsview/qgraphicslayoutstyleinfo.cpp
@@ -48,7 +48,7 @@
QT_BEGIN_NAMESPACE
QGraphicsLayoutStyleInfo::QGraphicsLayoutStyleInfo(const QGraphicsLayoutPrivate *layout)
- : m_layout(layout), m_style(0)
+ : m_layout(layout), m_style(nullptr)
{
m_widget.reset(new QWidget); // pixelMetric might need a widget ptr
m_styleOption.initFrom(m_widget.get());
diff --git a/src/widgets/graphicsview/qgraphicslinearlayout.cpp b/src/widgets/graphicsview/qgraphicslinearlayout.cpp
index 8964b3b77a..f76cc61586 100644
--- a/src/widgets/graphicsview/qgraphicslinearlayout.cpp
+++ b/src/widgets/graphicsview/qgraphicslinearlayout.cpp
@@ -211,7 +211,7 @@ QGraphicsLinearLayout::~QGraphicsLinearLayout()
// ~QGraphicsLayoutItem.
removeAt(i);
if (item) {
- item->setParentLayoutItem(0);
+ item->setParentLayoutItem(nullptr);
if (item->ownedByLayout())
delete item;
}
@@ -280,7 +280,7 @@ void QGraphicsLinearLayout::insertItem(int index, QGraphicsLayoutItem *item)
Q_ASSERT(item);
d->fixIndex(&index);
d->engine.insertRow(index, d->orientation);
- QGraphicsGridLayoutEngineItem *gridEngineItem = new QGraphicsGridLayoutEngineItem(item, d->gridRow(index), d->gridColumn(index), 1, 1, 0);
+ QGraphicsGridLayoutEngineItem *gridEngineItem = new QGraphicsGridLayoutEngineItem(item, d->gridRow(index), d->gridColumn(index), 1, 1, { });
d->engine.insertItem(gridEngineItem, index);
invalidate();
}
@@ -310,7 +310,7 @@ void QGraphicsLinearLayout::removeItem(QGraphicsLayoutItem *item)
{
Q_D(QGraphicsLinearLayout);
if (QGraphicsGridLayoutEngineItem *gridItem = d->engine.findLayoutItem(item)) {
- item->setParentLayoutItem(0);
+ item->setParentLayoutItem(nullptr);
d->removeGridItem(gridItem);
delete gridItem;
invalidate();
@@ -333,7 +333,7 @@ void QGraphicsLinearLayout::removeAt(int index)
if (QGraphicsGridLayoutEngineItem *gridItem = static_cast<QGraphicsGridLayoutEngineItem*>(d->engine.itemAt(index))) {
if (QGraphicsLayoutItem *layoutItem = gridItem->layoutItem())
- layoutItem->setParentLayoutItem(0);
+ layoutItem->setParentLayoutItem(nullptr);
d->removeGridItem(gridItem);
delete gridItem;
invalidate();
@@ -483,9 +483,9 @@ QGraphicsLayoutItem *QGraphicsLinearLayout::itemAt(int index) const
Q_D(const QGraphicsLinearLayout);
if (index < 0 || index >= d->engine.itemCount()) {
qWarning("QGraphicsLinearLayout::itemAt: invalid index %d", index);
- return 0;
+ return nullptr;
}
- QGraphicsLayoutItem *item = 0;
+ QGraphicsLayoutItem *item = nullptr;
if (QGraphicsGridLayoutEngineItem *gridItem = static_cast<QGraphicsGridLayoutEngineItem *>(d->engine.itemAt(index)))
item = gridItem->layoutItem();
return item;
diff --git a/src/widgets/graphicsview/qgraphicsproxywidget.cpp b/src/widgets/graphicsview/qgraphicsproxywidget.cpp
index 7413a26261..4d4958c674 100644
--- a/src/widgets/graphicsview/qgraphicsproxywidget.cpp
+++ b/src/widgets/graphicsview/qgraphicsproxywidget.cpp
@@ -235,7 +235,7 @@ void QGraphicsProxyWidgetPrivate::sendWidgetMouseEvent(QGraphicsSceneHoverEvent
mouseEvent.setPos(event->pos());
mouseEvent.setScreenPos(event->screenPos());
mouseEvent.setButton(Qt::NoButton);
- mouseEvent.setButtons(0);
+ mouseEvent.setButtons({ });
mouseEvent.setModifiers(event->modifiers());
sendWidgetMouseEvent(&mouseEvent);
event->setAccepted(mouseEvent.isAccepted());
@@ -291,7 +291,7 @@ void QGraphicsProxyWidgetPrivate::sendWidgetMouseEvent(QGraphicsSceneMouseEvent
}
if (!lastWidgetUnderMouse) {
- QApplicationPrivate::dispatchEnterLeave(embeddedMouseGrabber ? embeddedMouseGrabber : receiver, 0, event->screenPos());
+ QApplicationPrivate::dispatchEnterLeave(embeddedMouseGrabber ? embeddedMouseGrabber : receiver, nullptr, event->screenPos());
lastWidgetUnderMouse = receiver;
}
@@ -315,10 +315,10 @@ void QGraphicsProxyWidgetPrivate::sendWidgetMouseEvent(QGraphicsSceneMouseEvent
if (q->rect().contains(event->pos()) && q->acceptHoverEvents())
lastWidgetUnderMouse = alienWidget ? alienWidget : widget;
else // released on the frame our outside the item, or doesn't accept hover events.
- lastWidgetUnderMouse = 0;
+ lastWidgetUnderMouse = nullptr;
QApplicationPrivate::dispatchEnterLeave(lastWidgetUnderMouse, embeddedMouseGrabber, event->screenPos());
- embeddedMouseGrabber = 0;
+ embeddedMouseGrabber = nullptr;
#ifndef QT_NO_CURSOR
// ### Restore the cursor, don't override it.
@@ -368,7 +368,7 @@ void QGraphicsProxyWidgetPrivate::removeSubFocusHelper(QWidget *widget, Qt::Focu
QWidget *QGraphicsProxyWidgetPrivate::findFocusChild(QWidget *child, bool next) const
{
if (!widget)
- return 0;
+ return nullptr;
// Run around the focus chain until we find a widget that can take tab focus.
if (!child) {
@@ -376,12 +376,12 @@ QWidget *QGraphicsProxyWidgetPrivate::findFocusChild(QWidget *child, bool next)
} else {
child = next ? child->d_func()->focus_next : child->d_func()->focus_prev;
if ((next && child == widget) || (!next && child == widget->d_func()->focus_prev)) {
- return 0;
+ return nullptr;
}
}
if (!child)
- return 0;
+ return nullptr;
QWidget *oldChild = child;
uint focus_flag = qt_tab_all_widgets() ? Qt::TabFocus : Qt::StrongFocus;
@@ -394,7 +394,7 @@ QWidget *QGraphicsProxyWidgetPrivate::findFocusChild(QWidget *child, bool next)
}
child = next ? child->d_func()->focus_next : child->d_func()->focus_prev;
} while (child != oldChild && !(next && child == widget) && !(!next && child == widget->d_func()->focus_prev));
- return 0;
+ return nullptr;
}
/*!
@@ -405,9 +405,9 @@ void QGraphicsProxyWidgetPrivate::_q_removeWidgetSlot()
Q_Q(QGraphicsProxyWidget);
if (!widget.isNull()) {
if (const auto &extra = widget->d_func()->extra)
- extra->proxyWidget = 0;
+ extra->proxyWidget = nullptr;
}
- widget = 0;
+ widget = nullptr;
delete q;
}
@@ -430,7 +430,7 @@ void QGraphicsProxyWidgetPrivate::updateProxyGeometryFromWidget()
QRectF widgetGeometry = widget->geometry();
QWidget *parentWidget = widget->parentWidget();
if (widget->isWindow()) {
- QGraphicsProxyWidget *proxyParent = 0;
+ QGraphicsProxyWidget *proxyParent = nullptr;
if (parentWidget && (proxyParent = qobject_cast<QGraphicsProxyWidget *>(q->parentWidget()))) {
// Nested window proxy (e.g., combobox popup), map widget to the
// parent widget's global coordinates, and map that to the parent
@@ -497,7 +497,7 @@ void QGraphicsProxyWidgetPrivate::unembedSubWindow(QWidget *subWin)
if (child->isWidget()) {
if (QGraphicsProxyWidget *proxy = qobject_cast<QGraphicsProxyWidget *>(static_cast<QGraphicsWidget *>(child))) {
if (proxy->widget() == subWin) {
- proxy->setWidget(0);
+ proxy->setWidget(nullptr);
scene->removeItem(proxy);
delete proxy;
return;
@@ -598,7 +598,7 @@ void QGraphicsProxyWidgetPrivate::setWidget_helper(QWidget *newWidget, bool auto
QObject::disconnect(widget, SIGNAL(destroyed()), q, SLOT(_q_removeWidgetSlot()));
widget->removeEventFilter(q);
widget->setAttribute(Qt::WA_DontShowOnScreen, false);
- widget->d_func()->extra->proxyWidget = 0;
+ widget->d_func()->extra->proxyWidget = nullptr;
resolveFont(inheritedFontResolveMask);
resolvePalette(inheritedPaletteResolveMask);
widget->update();
@@ -1081,7 +1081,7 @@ void QGraphicsProxyWidget::dragLeaveEvent(QGraphicsSceneDragDropEvent *event)
return;
QDragLeaveEvent proxyDragLeave;
QCoreApplication::sendEvent(d->dragDropWidget, &proxyDragLeave);
- d->dragDropWidget = 0;
+ d->dragDropWidget = nullptr;
#endif
}
@@ -1143,7 +1143,7 @@ void QGraphicsProxyWidget::dragMoveEvent(QGraphicsSceneDragDropEvent *event)
// Leave the last drag drop item
QDragLeaveEvent dragLeave;
QCoreApplication::sendEvent(d->dragDropWidget, &dragLeave);
- d->dragDropWidget = 0;
+ d->dragDropWidget = nullptr;
}
// Propagate
event->setDropAction(Qt::IgnoreAction);
@@ -1165,7 +1165,7 @@ void QGraphicsProxyWidget::dropEvent(QGraphicsSceneDragDropEvent *event)
QDropEvent dropEvent(widgetPos, event->possibleActions(), event->mimeData(), event->buttons(), event->modifiers());
QCoreApplication::sendEvent(d->dragDropWidget, &dropEvent);
event->setAccepted(dropEvent.isAccepted());
- d->dragDropWidget = 0;
+ d->dragDropWidget = nullptr;
}
#endif
}
@@ -1188,8 +1188,8 @@ void QGraphicsProxyWidget::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
Q_D(QGraphicsProxyWidget);
// If hoverMove was compressed away, make sure we update properly here.
if (d->lastWidgetUnderMouse) {
- QApplicationPrivate::dispatchEnterLeave(0, d->lastWidgetUnderMouse, event->screenPos());
- d->lastWidgetUnderMouse = 0;
+ QApplicationPrivate::dispatchEnterLeave(nullptr, d->lastWidgetUnderMouse, event->screenPos());
+ d->lastWidgetUnderMouse = nullptr;
}
}
@@ -1205,13 +1205,13 @@ void QGraphicsProxyWidget::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
// Ignore events on the window frame.
if (!d->widget || !rect().contains(event->pos())) {
if (d->lastWidgetUnderMouse) {
- QApplicationPrivate::dispatchEnterLeave(0, d->lastWidgetUnderMouse, event->screenPos());
- d->lastWidgetUnderMouse = 0;
+ QApplicationPrivate::dispatchEnterLeave(nullptr, d->lastWidgetUnderMouse, event->screenPos());
+ d->lastWidgetUnderMouse = nullptr;
}
return;
}
- d->embeddedMouseGrabber = 0;
+ d->embeddedMouseGrabber = nullptr;
d->sendWidgetMouseEvent(event);
}
@@ -1230,7 +1230,7 @@ void QGraphicsProxyWidget::ungrabMouseEvent(QEvent *event)
{
Q_D(QGraphicsProxyWidget);
Q_UNUSED(event);
- d->embeddedMouseGrabber = 0;
+ d->embeddedMouseGrabber = nullptr;
}
/*!
@@ -1372,12 +1372,12 @@ void QGraphicsProxyWidget::focusInEvent(QFocusEvent *event)
switch (event->reason()) {
case Qt::TabFocusReason: {
- if (QWidget *focusChild = d->findFocusChild(0, true))
+ if (QWidget *focusChild = d->findFocusChild(nullptr, true))
focusChild->setFocus(event->reason());
break;
}
case Qt::BacktabFocusReason:
- if (QWidget *focusChild = d->findFocusChild(0, false))
+ if (QWidget *focusChild = d->findFocusChild(nullptr, false))
focusChild->setFocus(event->reason());
break;
default:
@@ -1578,16 +1578,16 @@ QGraphicsProxyWidget *QGraphicsProxyWidget::createProxyForChildWidget(QWidget *c
return proxy;
if (!child->parentWidget()) {
qWarning("QGraphicsProxyWidget::createProxyForChildWidget: top-level widget not in a QGraphicsScene");
- return 0;
+ return nullptr;
}
QGraphicsProxyWidget *parentProxy = createProxyForChildWidget(child->parentWidget());
if (!parentProxy)
- return 0;
+ return nullptr;
if (!QMetaObject::invokeMethod(parentProxy, "newProxyWidget", Qt::DirectConnection,
Q_RETURN_ARG(QGraphicsProxyWidget*, proxy), Q_ARG(const QWidget*, child)))
- return 0;
+ return nullptr;
proxy->setParent(parentProxy);
proxy->setWidget(child);
return proxy;
diff --git a/src/widgets/graphicsview/qgraphicsscene.cpp b/src/widgets/graphicsview/qgraphicsscene.cpp
index a47d0d879d..1c6e68def1 100644
--- a/src/widgets/graphicsview/qgraphicsscene.cpp
+++ b/src/widgets/graphicsview/qgraphicsscene.cpp
@@ -278,7 +278,7 @@ static void _q_hoverFromMouseEvent(QGraphicsSceneHoverEvent *hover, const QGraph
*/
QGraphicsScenePrivate::QGraphicsScenePrivate()
: indexMethod(QGraphicsScene::BspTreeIndex),
- index(0),
+ index(nullptr),
lastItemCount(0),
hasSceneRect(false),
dirtyGrowingItemsBoundingRect(true),
@@ -301,19 +301,19 @@ QGraphicsScenePrivate::QGraphicsScenePrivate()
minimumRenderSize(0.0),
selectionChanging(0),
rectAdjust(2),
- focusItem(0),
- lastFocusItem(0),
- passiveFocusItem(0),
- tabFocusFirst(0),
- activePanel(0),
- lastActivePanel(0),
+ focusItem(nullptr),
+ lastFocusItem(nullptr),
+ passiveFocusItem(nullptr),
+ tabFocusFirst(nullptr),
+ activePanel(nullptr),
+ lastActivePanel(nullptr),
activationRefCount(0),
childExplicitActivation(0),
- lastMouseGrabberItem(0),
- dragDropItem(0),
- enterWidget(0),
+ lastMouseGrabberItem(nullptr),
+ dragDropItem(nullptr),
+ enterWidget(nullptr),
lastDropAction(Qt::IgnoreAction),
- style(0)
+ style(nullptr)
{
}
@@ -443,8 +443,8 @@ void QGraphicsScenePrivate::_q_polishItems()
return;
const QVariant booleanTrueVariant(true);
- QGraphicsItem *item = 0;
- QGraphicsItemPrivate *itemd = 0;
+ QGraphicsItem *item = nullptr;
+ QGraphicsItemPrivate *itemd = nullptr;
const int oldUnpolishedCount = unpolishedItems.count();
for (int i = 0; i < oldUnpolishedCount; ++i) {
@@ -602,7 +602,7 @@ void QGraphicsScenePrivate::removeItemHelper(QGraphicsItem *item)
unregisterScenePosItem(item);
QGraphicsScene *oldScene = item->d_func()->scene;
- item->d_func()->scene = 0;
+ item->d_func()->scene = nullptr;
//We need to remove all children first because they might use their parent
//attributes (e.g. sceneTransform).
@@ -614,7 +614,7 @@ void QGraphicsScenePrivate::removeItemHelper(QGraphicsItem *item)
if (!item->d_ptr->inDestructor && !item->parentItem() && item->isWidget()) {
QGraphicsWidget *widget = static_cast<QGraphicsWidget *>(item);
- widget->d_func()->fixFocusChainBeforeReparenting(0, oldScene, 0);
+ widget->d_func()->fixFocusChainBeforeReparenting(nullptr, oldScene, nullptr);
}
// Unregister focus proxy.
@@ -625,7 +625,7 @@ void QGraphicsScenePrivate::removeItemHelper(QGraphicsItem *item)
if (parentItem->scene()) {
Q_ASSERT_X(parentItem->scene() == q, "QGraphicsScene::removeItem",
"Parent item's scene is different from this item's scene");
- item->setParentItem(0);
+ item->setParentItem(nullptr);
}
} else {
unregisterTopLevelItem(item);
@@ -633,17 +633,17 @@ void QGraphicsScenePrivate::removeItemHelper(QGraphicsItem *item)
// Reset the mouse grabber and focus item data.
if (item == focusItem)
- focusItem = 0;
+ focusItem = nullptr;
if (item == lastFocusItem)
- lastFocusItem = 0;
+ lastFocusItem = nullptr;
if (item == passiveFocusItem)
- passiveFocusItem = 0;
+ passiveFocusItem = nullptr;
if (item == activePanel) {
// ### deactivate...
- activePanel = 0;
+ activePanel = nullptr;
}
if (item == lastActivePanel)
- lastActivePanel = 0;
+ lastActivePanel = nullptr;
// Change tabFocusFirst to the next widget in focus chain if removing the current one.
if (item == tabFocusFirst) {
@@ -651,7 +651,7 @@ void QGraphicsScenePrivate::removeItemHelper(QGraphicsItem *item)
if (wd->focusNext && wd->focusNext != tabFocusFirst && wd->focusNext->scene() == q)
tabFocusFirst = wd->focusNext;
else
- tabFocusFirst = 0;
+ tabFocusFirst = nullptr;
}
// Cancel active touches
@@ -705,11 +705,11 @@ void QGraphicsScenePrivate::removeItemHelper(QGraphicsItem *item)
// Reset the last mouse grabber item
if (item == lastMouseGrabberItem)
- lastMouseGrabberItem = 0;
+ lastMouseGrabberItem = nullptr;
// Reset the current drop item
if (item == dragDropItem)
- dragDropItem = 0;
+ dragDropItem = nullptr;
// Reenable selectionChanged() for individual items
--selectionChanging;
@@ -752,8 +752,8 @@ void QGraphicsScenePrivate::setActivePanelHelper(QGraphicsItem *item, bool durin
q->setFocus(Qt::ActiveWindowFocusReason);
// Find the item's panel.
- QGraphicsItem *panel = item ? item->panel() : 0;
- lastActivePanel = panel ? activePanel : 0;
+ QGraphicsItem *panel = item ? item->panel() : nullptr;
+ lastActivePanel = panel ? activePanel : nullptr;
if (panel == activePanel || (!q->isActive() && !duringActivationEvent))
return;
@@ -764,7 +764,7 @@ void QGraphicsScenePrivate::setActivePanelHelper(QGraphicsItem *item, bool durin
if (QGraphicsItem *fi = activePanel->focusItem()) {
// Remove focus from the current focus item.
if (fi == q->focusItem())
- setFocusItemHelper(0, Qt::ActiveWindowFocusReason, /* emitFocusChanged = */ false);
+ setFocusItemHelper(nullptr, Qt::ActiveWindowFocusReason, /* emitFocusChanged = */ false);
}
QEvent event(QEvent::WindowDeactivate);
@@ -841,7 +841,7 @@ void QGraphicsScenePrivate::setFocusItemHelper(QGraphicsItem *item,
// accept input focus.
if (item && (!(item->flags() & QGraphicsItem::ItemIsFocusable)
|| !item->isVisible() || !item->isEnabled())) {
- item = 0;
+ item = nullptr;
}
// Set focus on the scene if an item requests focus.
@@ -849,7 +849,7 @@ void QGraphicsScenePrivate::setFocusItemHelper(QGraphicsItem *item,
q->setFocus(focusReason);
if (item == focusItem) {
if (emitFocusChanged)
- emit q->focusItemChanged(focusItem, (QGraphicsItem *)0, focusReason);
+ emit q->focusItemChanged(focusItem, (QGraphicsItem *)nullptr, focusReason);
return;
}
}
@@ -869,7 +869,7 @@ void QGraphicsScenePrivate::setFocusItemHelper(QGraphicsItem *item,
}
#endif //QT_NO_IM
- focusItem = 0;
+ focusItem = nullptr;
QFocusEvent event(QEvent::FocusOut, focusReason);
sendEvent(lastFocusItem, &event);
}
@@ -877,7 +877,7 @@ void QGraphicsScenePrivate::setFocusItemHelper(QGraphicsItem *item,
// This handles the case that the item has been removed from the
// scene in response to the FocusOut event.
if (item && item->scene() != q)
- item = 0;
+ item = nullptr;
if (item)
focusItem = item;
@@ -1039,7 +1039,7 @@ void QGraphicsScenePrivate::clearMouseGrabber()
{
if (!mouseGrabberItems.isEmpty())
mouseGrabberItems.first()->ungrabMouse();
- lastMouseGrabberItem = 0;
+ lastMouseGrabberItem = nullptr;
}
/*!
@@ -1365,10 +1365,10 @@ void QGraphicsScenePrivate::mousePressEventHandler(QGraphicsSceneMouseEvent *mou
// Update window activation.
QGraphicsItem *topItem = cachedItemsUnderMouse.value(0);
- QGraphicsWidget *newActiveWindow = topItem ? topItem->window() : 0;
+ QGraphicsWidget *newActiveWindow = topItem ? topItem->window() : nullptr;
if (newActiveWindow && newActiveWindow->isBlockedByModalPanel(&topItem)) {
// pass activation to the blocking modal window
- newActiveWindow = topItem ? topItem->window() : 0;
+ newActiveWindow = topItem ? topItem->window() : nullptr;
}
if (newActiveWindow != q->activeWindow())
@@ -1409,7 +1409,7 @@ void QGraphicsScenePrivate::mousePressEventHandler(QGraphicsSceneMouseEvent *mou
// If nobody could take focus, clear it.
if (!stickyFocus && !setFocus && !sceneModality)
- q->setFocusItem(0, Qt::MouseFocusReason);
+ q->setFocusItem(nullptr, Qt::MouseFocusReason);
// Any item will do.
if (sceneModality && cachedItemsUnderMouse.isEmpty())
@@ -1694,7 +1694,7 @@ QGraphicsScene::~QGraphicsScene()
// Remove this scene from all associated views.
for (int j = 0; j < d->views.size(); ++j)
- d->views.at(j)->setScene(0);
+ d->views.at(j)->setScene(nullptr);
}
/*!
@@ -2432,7 +2432,7 @@ QGraphicsItemGroup *QGraphicsScene::createItemGroup(const QList<QGraphicsItem *>
}
// Find the common ancestor for all items
- QGraphicsItem *commonAncestor = 0;
+ QGraphicsItem *commonAncestor = nullptr;
if (!ancestors.isEmpty()) {
while (n < items.size()) {
int commonIndex = -1;
@@ -2446,7 +2446,7 @@ QGraphicsItemGroup *QGraphicsScene::createItemGroup(const QList<QGraphicsItem *>
} while ((parent = parent->parentItem()));
if (commonIndex == -1) {
- commonAncestor = 0;
+ commonAncestor = nullptr;
break;
}
@@ -2545,7 +2545,7 @@ void QGraphicsScene::addItem(QGraphicsItem *item)
// from this scene.
if (QGraphicsItem *itemParent = item->d_ptr->parent) {
if (itemParent->d_ptr->scene != this)
- item->setParentItem(0);
+ item->setParentItem(nullptr);
}
// Add the item to this scene
@@ -2568,8 +2568,16 @@ void QGraphicsScene::addItem(QGraphicsItem *item)
++d->selectionChanging;
int oldSelectedItemSize = d->selectedItems.size();
- // Enable mouse tracking if the item accepts hover events or has a cursor set.
- if (d->allItemsIgnoreHoverEvents && d->itemAcceptsHoverEvents_helper(item)) {
+ // Enable mouse tracking if we haven't already done so, and the item needs it.
+ // We cannot use itemAcceptsHoverEvents_helper() here, since we need to enable
+ // mouse tracking also if this item is temporarily blocked by a modal panel.
+
+ auto needsMouseTracking = [](const QGraphicsItemPrivate *item) {
+ return item->acceptsHover
+ || (item->isWidget && static_cast<const QGraphicsWidgetPrivate *>(item)->hasDecoration());
+ };
+
+ if (d->allItemsIgnoreHoverEvents && needsMouseTracking(item->d_ptr.data())) {
d->allItemsIgnoreHoverEvents = false;
d->enableMouseTrackingOnViews();
}
@@ -2903,7 +2911,7 @@ QGraphicsSimpleTextItem *QGraphicsScene::addSimpleText(const QString &text, cons
*/
QGraphicsProxyWidget *QGraphicsScene::addWidget(QWidget *widget, Qt::WindowFlags wFlags)
{
- QGraphicsProxyWidget *proxy = new QGraphicsProxyWidget(0, wFlags);
+ QGraphicsProxyWidget *proxy = new QGraphicsProxyWidget(nullptr, wFlags);
proxy->setWidget(widget);
addItem(proxy);
return proxy;
@@ -2936,7 +2944,7 @@ void QGraphicsScene::removeItem(QGraphicsItem *item)
const QVariant newSceneVariant(item->itemChange(QGraphicsItem::ItemSceneChange,
QVariant::fromValue<QGraphicsScene *>(0)));
QGraphicsScene *targetScene = qvariant_cast<QGraphicsScene *>(newSceneVariant);
- if (targetScene != 0 && targetScene != this) {
+ if (targetScene != nullptr && targetScene != this) {
targetScene->addItem(item);
return;
}
@@ -3038,7 +3046,7 @@ void QGraphicsScene::clearFocus()
if (d->hasFocus) {
d->hasFocus = false;
d->passiveFocusItem = d->focusItem;
- setFocusItem(0, Qt::OtherFocusReason);
+ setFocusItem(nullptr, Qt::OtherFocusReason);
}
}
@@ -3484,7 +3492,7 @@ bool QGraphicsScene::event(QEvent *event)
// Deactivate the active panel (but keep it so we can
// reactivate it later).
QGraphicsItem *lastActivePanel = d->activePanel;
- d->setActivePanelHelper(0, true);
+ d->setActivePanelHelper(nullptr, true);
d->lastActivePanel = lastActivePanel;
} else {
// Activate all toplevel items.
@@ -3613,7 +3621,7 @@ void QGraphicsScene::contextMenuEvent(QGraphicsSceneContextMenuEvent *contextMen
void QGraphicsScene::dragEnterEvent(QGraphicsSceneDragDropEvent *event)
{
Q_D(QGraphicsScene);
- d->dragDropItem = 0;
+ d->dragDropItem = nullptr;
d->lastDropAction = Qt::IgnoreAction;
event->accept();
}
@@ -3697,7 +3705,7 @@ void QGraphicsScene::dragMoveEvent(QGraphicsSceneDragDropEvent *event)
QGraphicsSceneDragDropEvent dragLeave(QEvent::GraphicsSceneDragLeave);
d->cloneDragDropEvent(&dragLeave, event);
d->sendDragDropEvent(d->dragDropItem, &dragLeave);
- d->dragDropItem = 0;
+ d->dragDropItem = nullptr;
}
// Propagate
event->setDropAction(Qt::IgnoreAction);
@@ -3717,7 +3725,7 @@ void QGraphicsScene::dragLeaveEvent(QGraphicsSceneDragDropEvent *event)
if (d->dragDropItem) {
// Leave the last drag drop item
d->sendDragDropEvent(d->dragDropItem, event);
- d->dragDropItem = 0;
+ d->dragDropItem = nullptr;
}
}
@@ -3735,7 +3743,7 @@ void QGraphicsScene::dropEvent(QGraphicsSceneDragDropEvent *event)
if (d->dragDropItem) {
// Drop on the last drag drop item
d->sendDragDropEvent(d->dragDropItem, event);
- d->dragDropItem = 0;
+ d->dragDropItem = nullptr;
}
}
@@ -3785,7 +3793,7 @@ void QGraphicsScene::focusOutEvent(QFocusEvent *focusEvent)
Q_D(QGraphicsScene);
d->hasFocus = false;
d->passiveFocusItem = d->focusItem;
- setFocusItem(0, focusEvent->reason());
+ setFocusItem(nullptr, focusEvent->reason());
// Remove all popups when the scene loses focus.
if (!d->popupWidgets.isEmpty())
@@ -3817,7 +3825,7 @@ void QGraphicsScene::helpEvent(QGraphicsSceneHelpEvent *helpEvent)
QList<QGraphicsItem *> itemsAtPos = d->itemsAtPosition(helpEvent->screenPos(),
helpEvent->scenePos(),
helpEvent->widget());
- QGraphicsItem *toolTipItem = 0;
+ QGraphicsItem *toolTipItem = nullptr;
for (int i = 0; i < itemsAtPos.size(); ++i) {
QGraphicsItem *tmp = itemsAtPos.at(i);
if (tmp->d_func()->isProxyWidget()) {
@@ -3875,7 +3883,7 @@ bool QGraphicsScenePrivate::dispatchHoverEvent(QGraphicsSceneHoverEvent *hoverEv
hoverEvent->widget());
}
- QGraphicsItem *item = 0;
+ QGraphicsItem *item = nullptr;
for (int i = 0; i < cachedItemsUnderMouse.size(); ++i) {
QGraphicsItem *tmp = cachedItemsUnderMouse.at(i);
if (itemAcceptsHoverEvents_helper(tmp)) {
@@ -3886,13 +3894,13 @@ bool QGraphicsScenePrivate::dispatchHoverEvent(QGraphicsSceneHoverEvent *hoverEv
// Find the common ancestor item for the new topmost hoverItem and the
// last item in the hoverItem list.
- QGraphicsItem *commonAncestorItem = (item && !hoverItems.isEmpty()) ? item->commonAncestorItem(hoverItems.constLast()) : 0;
+ QGraphicsItem *commonAncestorItem = (item && !hoverItems.isEmpty()) ? item->commonAncestorItem(hoverItems.constLast()) : nullptr;
while (commonAncestorItem && !itemAcceptsHoverEvents_helper(commonAncestorItem))
commonAncestorItem = commonAncestorItem->parentItem();
if (commonAncestorItem && commonAncestorItem->panel() != item->panel()) {
// The common ancestor isn't in the same panel as the two hovered
// items.
- commonAncestorItem = 0;
+ commonAncestorItem = nullptr;
}
// Check if the common ancestor item is known.
@@ -4122,7 +4130,7 @@ void QGraphicsScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent)
if (d->lastMouseGrabberItemHasImplicitMouseGrab)
d->mouseGrabberItems.constLast()->ungrabMouse();
} else {
- d->lastMouseGrabberItem = 0;
+ d->lastMouseGrabberItem = nullptr;
}
// Generate a hoverevent
@@ -4354,7 +4362,7 @@ static void _q_paintIntoCache(QPixmap *pix, QGraphicsItem *item, const QRegion &
pixmapPainter.setWorldTransform(itemToPixmap, true);
// Render.
- _q_paintItem(item, &pixmapPainter, option, 0, false, painterStateProtection);
+ _q_paintItem(item, &pixmapPainter, option, nullptr, false, painterStateProtection);
pixmapPainter.end();
if (!subPix.isNull()) {
@@ -4748,7 +4756,7 @@ void QGraphicsScenePrivate::drawSubtreeRecursive(QGraphicsItem *item, QPainter *
return;
QTransform transform(Qt::Uninitialized);
- QTransform *transformPtr = 0;
+ QTransform *transformPtr = nullptr;
bool translateOnlyTransform = false;
#define ENSURE_TRANSFORM_PTR \
if (!transformPtr) { \
@@ -4858,7 +4866,7 @@ void QGraphicsScenePrivate::drawSubtreeRecursive(QGraphicsItem *item, QPainter *
item->d_ptr->graphicsEffect->draw(painter);
painter->setWorldTransform(restoreTransform);
- sourced->info = 0;
+ sourced->info = nullptr;
} else
#endif // QT_CONFIG(graphicseffect)
{
@@ -4936,7 +4944,7 @@ void QGraphicsScenePrivate::draw(QGraphicsItem *item, QPainter *painter, const Q
Q_ASSERT(!(item->d_ptr->flags & QGraphicsItem::ItemHasNoContents));
Q_ASSERT(transformPtr);
item->d_ptr->initStyleOption(&styleOptionTmp, *transformPtr, exposedRegion
- ? *exposedRegion : QRegion(), exposedRegion == 0);
+ ? *exposedRegion : QRegion(), exposedRegion == nullptr);
const bool itemClipsToShape = item->d_ptr->flags & QGraphicsItem::ItemClipsToShape;
bool restorePainterClip = false;
@@ -5322,7 +5330,7 @@ void QGraphicsScenePrivate::processDirtyItemsRecursive(QGraphicsItem *item, bool
if (itemClipsChildrenToShape) {
// Reset updateClip.
for (int i = 0; i < views.size(); ++i)
- views.at(i)->d_func()->setUpdateClip(0);
+ views.at(i)->d_func()->setUpdateClip(nullptr);
}
} else if (wasDirtyParentSceneTransform) {
item->d_ptr->invalidateChildrenSceneTransform();
@@ -5378,7 +5386,7 @@ void QGraphicsScene::drawItems(QPainter *painter,
// Determine view, expose and flags.
QGraphicsView *view = widget ? qobject_cast<QGraphicsView *>(widget->parentWidget()) : 0;
- QRegion *expose = 0;
+ QRegion *expose = nullptr;
const quint32 oldRectAdjust = d->rectAdjust;
if (view) {
d->updateAll = false;
@@ -5462,7 +5470,7 @@ bool QGraphicsScene::focusNextPrevChild(bool next)
}
// The item must be a widget.
- QGraphicsWidget *widget = 0;
+ QGraphicsWidget *widget = nullptr;
if (!item) {
widget = next ? d->tabFocusFirst : d->tabFocusFirst->d_func()->focusPrev;
} else {
@@ -5478,7 +5486,7 @@ bool QGraphicsScene::focusNextPrevChild(bool next)
// Run around the focus chain until we find a widget that can take tab focus.
do {
if (widget->flags() & QGraphicsItem::ItemIsFocusable
- && widget->isEnabled() && widget->isVisibleTo(0)
+ && widget->isEnabled() && widget->isVisibleTo(nullptr)
&& (widget->focusPolicy() & Qt::TabFocus)
&& (!item || !item->isPanel() || item->isAncestorOf(widget))
) {
@@ -5763,7 +5771,7 @@ void QGraphicsScene::setActiveWindow(QGraphicsWidget *widget)
}
// Activate the widget's panel (all windows are panels).
- QGraphicsItem *panel = widget ? widget->panel() : 0;
+ QGraphicsItem *panel = widget ? widget->panel() : nullptr;
setActivePanel(panel);
// Raise
@@ -5945,7 +5953,7 @@ void QGraphicsScenePrivate::touchEventHandler(QTouchEvent *sceneTouchEvent)
const QTouchEvent::TouchPoint &touchPoint = sceneTouchEvent->touchPoints().at(i);
// update state
- QGraphicsItem *item = 0;
+ QGraphicsItem *item = nullptr;
if (touchPoint.state() == Qt::TouchPointPressed) {
if (sceneTouchEvent->device()->type() == QTouchDevice::TouchPad) {
// on touch-pad devices, send all touch points to the same item
@@ -6103,7 +6111,7 @@ bool QGraphicsScenePrivate::sendTouchBeginEvent(QGraphicsItem *origin, QTouchEve
// If nobody could take focus, clear it.
if (!stickyFocus && !setFocus)
- q->setFocusItem(0, Qt::MouseFocusReason);
+ q->setFocusItem(nullptr, Qt::MouseFocusReason);
}
bool res = false;
@@ -6117,7 +6125,7 @@ bool QGraphicsScenePrivate::sendTouchBeginEvent(QGraphicsItem *origin, QTouchEve
eventAccepted = touchEvent->isAccepted();
if (itemForTouchPointId.value(touchEvent->touchPoints().first().id()) == 0) {
// item was deleted
- item = 0;
+ item = nullptr;
} else {
item->d_ptr->acceptedTouchBeginEvent = (res && eventAccepted);
}
@@ -6251,7 +6259,7 @@ void QGraphicsScenePrivate::gestureTargetsAtHotSpots(const QSet<QGesture *> &ges
if (!gesture->hasHotSpot())
continue;
const Qt::GestureType gestureType = gesture->gestureType();
- QList<QGraphicsItem *> items = itemsAtPosition(QPoint(), gesture->d_func()->sceneHotSpot, 0);
+ QList<QGraphicsItem *> items = itemsAtPosition(QPoint(), gesture->d_func()->sceneHotSpot, nullptr);
for (int j = 0; j < items.size(); ++j) {
QGraphicsItem *item = items.at(j);
@@ -6323,7 +6331,7 @@ void QGraphicsScenePrivate::gestureEventHandler(QGestureEvent *event)
if (!startedGestures.isEmpty()) {
QSet<QGesture *> normalGestures; // that have just one target
QSet<QGesture *> conflictedGestures; // that have multiple possible targets
- gestureTargetsAtHotSpots(startedGestures, Qt::GestureFlag(0), &cachedItemGestures, 0,
+ gestureTargetsAtHotSpots(startedGestures, Qt::GestureFlag(0), &cachedItemGestures, nullptr,
&normalGestures, &conflictedGestures);
cachedTargetItems = cachedItemGestures.keys();
std::sort(cachedTargetItems.begin(), cachedTargetItems.end(), qt_closestItemFirst);
@@ -6497,7 +6505,7 @@ void QGraphicsScenePrivate::gestureEventHandler(QGestureEvent *event)
}
gestureTargetsAtHotSpots(ignoredGestures, Qt::ReceivePartialGestures,
- &cachedItemGestures, &targetsSet, 0, 0);
+ &cachedItemGestures, &targetsSet, nullptr, nullptr);
cachedTargetItems = targetsSet.values();
std::sort(cachedTargetItems.begin(), cachedTargetItems.end(), qt_closestItemFirst);
@@ -6537,7 +6545,7 @@ void QGraphicsScenePrivate::cancelGesturesForChildren(QGesture *original)
{
Q_ASSERT(original);
QGraphicsItem *originalItem = gestureTargets.value(original);
- if (originalItem == 0) // we only act on accepted gestures, which implies it has a target.
+ if (originalItem == nullptr) // we only act on accepted gestures, which implies it has a target.
return;
// iterate over all active gestures and for each find the owner
@@ -6560,13 +6568,13 @@ void QGraphicsScenePrivate::cancelGesturesForChildren(QGesture *original)
QSet<QGesture *> almostCanceledGestures = canceledGestures;
QSet<QGesture *>::Iterator setIter;
while (!almostCanceledGestures.isEmpty()) {
- QGraphicsObject *target = 0;
+ QGraphicsObject *target = nullptr;
QSet<QGesture*> gestures;
setIter = almostCanceledGestures.begin();
// sort per target item
while (setIter != almostCanceledGestures.end()) {
QGraphicsObject *item = gestureTargets.value(*setIter);
- if (target == 0)
+ if (target == nullptr)
target = item;
if (target == item) {
gestures << *setIter;
@@ -6590,7 +6598,7 @@ void QGraphicsScenePrivate::cancelGesturesForChildren(QGesture *original)
if (!g->hasHotSpot())
continue;
- QList<QGraphicsItem *> items = itemsAtPosition(QPoint(), g->d_func()->sceneHotSpot, 0);
+ QList<QGraphicsItem *> items = itemsAtPosition(QPoint(), g->d_func()->sceneHotSpot, nullptr);
for (int j = 0; j < items.size(); ++j) {
QGraphicsObject *item = items.at(j)->toGraphicsObject();
if (!item)
diff --git a/src/widgets/graphicsview/qgraphicssceneevent.cpp b/src/widgets/graphicsview/qgraphicssceneevent.cpp
index 5077a39d67..048ea6dc7d 100644
--- a/src/widgets/graphicsview/qgraphicssceneevent.cpp
+++ b/src/widgets/graphicsview/qgraphicssceneevent.cpp
@@ -278,8 +278,8 @@ class QGraphicsSceneEventPrivate
{
public:
inline QGraphicsSceneEventPrivate()
- : widget(0),
- q_ptr(0)
+ : widget(nullptr),
+ q_ptr(nullptr)
{ }
inline virtual ~QGraphicsSceneEventPrivate()
@@ -344,8 +344,7 @@ class QGraphicsSceneMouseEventPrivate : public QGraphicsSceneEventPrivate
Q_DECLARE_PUBLIC(QGraphicsSceneMouseEvent)
public:
inline QGraphicsSceneMouseEventPrivate()
- : button(Qt::NoButton),
- buttons(0), modifiers(0), source(Qt::MouseEventNotSynthesized), flags(0)
+ : button(Qt::NoButton), source(Qt::MouseEventNotSynthesized)
{ }
QPointF pos;
@@ -691,17 +690,15 @@ class QGraphicsSceneWheelEventPrivate : public QGraphicsSceneEventPrivate
{
Q_DECLARE_PUBLIC(QGraphicsSceneWheelEvent)
public:
- inline QGraphicsSceneWheelEventPrivate()
- : buttons(0), modifiers(0), delta(0), orientation(Qt::Horizontal)
- { }
+ inline QGraphicsSceneWheelEventPrivate() = default;
QPointF pos;
QPointF scenePos;
QPoint screenPos;
Qt::MouseButtons buttons;
Qt::KeyboardModifiers modifiers;
- int delta;
- Qt::Orientation orientation;
+ int delta = 0;
+ Qt::Orientation orientation = Qt::Horizontal;
};
/*!
@@ -872,15 +869,13 @@ class QGraphicsSceneContextMenuEventPrivate : public QGraphicsSceneEventPrivate
{
Q_DECLARE_PUBLIC(QGraphicsSceneContextMenuEvent)
public:
- inline QGraphicsSceneContextMenuEventPrivate()
- : modifiers(0), reason(QGraphicsSceneContextMenuEvent::Other)
- { }
+ inline QGraphicsSceneContextMenuEventPrivate() = default;
QPointF pos;
QPointF scenePos;
QPoint screenPos;
Qt::KeyboardModifiers modifiers;
- QGraphicsSceneContextMenuEvent::Reason reason;
+ QGraphicsSceneContextMenuEvent::Reason reason = QGraphicsSceneContextMenuEvent::Other;
};
/*!
@@ -1295,7 +1290,7 @@ class QGraphicsSceneDragDropEventPrivate : public QGraphicsSceneEventPrivate
Q_DECLARE_PUBLIC(QGraphicsSceneDragDropEvent)
public:
inline QGraphicsSceneDragDropEventPrivate()
- : source(0), mimeData(0)
+ : source(nullptr), mimeData(nullptr)
{ }
QPointF pos;
diff --git a/src/widgets/graphicsview/qgraphicstransform.cpp b/src/widgets/graphicsview/qgraphicstransform.cpp
index 0f0d9aaddc..fa763de05d 100644
--- a/src/widgets/graphicsview/qgraphicstransform.cpp
+++ b/src/widgets/graphicsview/qgraphicstransform.cpp
@@ -112,7 +112,7 @@ void QGraphicsTransformPrivate::setItem(QGraphicsItem *i)
Q_ASSERT(d_ptr->transformData);
d_ptr->transformData->graphicsTransforms.removeAll(q);
d_ptr->dirtySceneTransform = 1;
- item = 0;
+ item = nullptr;
}
item = i;
@@ -138,7 +138,7 @@ QGraphicsTransform::QGraphicsTransform(QObject *parent)
QGraphicsTransform::~QGraphicsTransform()
{
Q_D(QGraphicsTransform);
- d->setItem(0);
+ d->setItem(nullptr);
}
/*!
diff --git a/src/widgets/graphicsview/qgraphicsview.cpp b/src/widgets/graphicsview/qgraphicsview.cpp
index 57be850829..7589a1ebbd 100644
--- a/src/widgets/graphicsview/qgraphicsview.cpp
+++ b/src/widgets/graphicsview/qgraphicsview.cpp
@@ -348,22 +348,21 @@ QGraphicsViewPrivate::QGraphicsViewPrivate()
hasUpdateClip(false),
mousePressButton(Qt::NoButton),
leftIndent(0), topIndent(0),
- lastMouseEvent(QEvent::None, QPointF(), QPointF(), QPointF(), Qt::NoButton, 0, 0),
+ lastMouseEvent(QEvent::None, QPointF(), QPointF(), QPointF(), Qt::NoButton, { }, { }),
alignment(Qt::AlignCenter),
transformationAnchor(QGraphicsView::AnchorViewCenter), resizeAnchor(QGraphicsView::NoAnchor),
viewportUpdateMode(QGraphicsView::MinimalViewportUpdate),
- optimizationFlags(0),
- scene(0),
+ scene(nullptr),
#if QT_CONFIG(rubberband)
rubberBanding(false),
rubberBandSelectionMode(Qt::IntersectsItemShape),
rubberBandSelectionOperation(Qt::ReplaceSelection),
#endif
- handScrollMotions(0), cacheMode(0),
+ handScrollMotions(0),
#ifndef QT_NO_CURSOR
hasStoredOriginalCursor(false),
#endif
- lastDragDropEvent(0),
+ lastDragDropEvent(nullptr),
updateSceneSlotReimplementedChecked(false)
{
styleOptions.reserve(QGRAPHICSVIEW_PREALLOC_STYLE_OPTIONS);
@@ -385,7 +384,7 @@ void QGraphicsViewPrivate::recalculateContentSize()
int height = maxSize.height();
QRectF viewRect = matrix.mapRect(q->sceneRect());
- bool frameOnlyAround = (q->style()->styleHint(QStyle::SH_ScrollView_FrameOnlyAroundContents, 0, q));
+ bool frameOnlyAround = (q->style()->styleHint(QStyle::SH_ScrollView_FrameOnlyAroundContents, nullptr, q));
if (frameOnlyAround) {
if (hbarpolicy == Qt::ScrollBarAlwaysOn)
height -= frameWidth * 2;
@@ -395,7 +394,7 @@ void QGraphicsViewPrivate::recalculateContentSize()
// Adjust the maximum width and height of the viewport based on the width
// of visible scroll bars.
- int scrollBarExtent = q->style()->pixelMetric(QStyle::PM_ScrollBarExtent, 0, q);
+ int scrollBarExtent = q->style()->pixelMetric(QStyle::PM_ScrollBarExtent, nullptr, q);
if (frameOnlyAround)
scrollBarExtent += frameWidth * 2;
@@ -1163,19 +1162,19 @@ QList<QGraphicsItem *> QGraphicsViewPrivate::findItems(const QRegion &exposedReg
void QGraphicsViewPrivate::updateInputMethodSensitivity()
{
Q_Q(QGraphicsView);
- QGraphicsItem *focusItem = 0;
+ QGraphicsItem *focusItem = nullptr;
bool enabled = scene && (focusItem = scene->focusItem())
&& (focusItem->d_ptr->flags & QGraphicsItem::ItemAcceptsInputMethod);
q->setAttribute(Qt::WA_InputMethodEnabled, enabled);
q->viewport()->setAttribute(Qt::WA_InputMethodEnabled, enabled);
if (!enabled) {
- q->setInputMethodHints(0);
+ q->setInputMethodHints({ });
return;
}
QGraphicsProxyWidget *proxy = focusItem->d_ptr->isWidget && focusItem->d_ptr->isProxyWidget()
- ? static_cast<QGraphicsProxyWidget *>(focusItem) : 0;
+ ? static_cast<QGraphicsProxyWidget *>(focusItem) : nullptr;
if (!proxy) {
q->setInputMethodHints(focusItem->inputMethodHints());
} else if (QWidget *widget = proxy->widget()) {
@@ -1183,7 +1182,7 @@ void QGraphicsViewPrivate::updateInputMethodSensitivity()
widget = fw;
q->setInputMethodHints(widget->inputMethodHints());
} else {
- q->setInputMethodHints(0);
+ q->setInputMethodHints({ });
}
}
@@ -1193,7 +1192,7 @@ void QGraphicsViewPrivate::updateInputMethodSensitivity()
QGraphicsView::QGraphicsView(QWidget *parent)
: QAbstractScrollArea(*new QGraphicsViewPrivate, parent)
{
- setViewport(0);
+ setViewport(nullptr);
setAcceptDrops(true);
setBackgroundRole(QPalette::Base);
// Investigate leaving these disabled by default.
@@ -1209,7 +1208,7 @@ QGraphicsView::QGraphicsView(QGraphicsScene *scene, QWidget *parent)
: QAbstractScrollArea(*new QGraphicsViewPrivate, parent)
{
setScene(scene);
- setViewport(0);
+ setViewport(nullptr);
setAcceptDrops(true);
setBackgroundRole(QPalette::Base);
// Investigate leaving these disabled by default.
@@ -1223,7 +1222,7 @@ QGraphicsView::QGraphicsView(QGraphicsScene *scene, QWidget *parent)
QGraphicsView::QGraphicsView(QGraphicsViewPrivate &dd, QWidget *parent)
: QAbstractScrollArea(dd, parent)
{
- setViewport(0);
+ setViewport(nullptr);
setAcceptDrops(true);
setBackgroundRole(QPalette::Base);
// Investigate leaving these disabled by default.
@@ -2375,7 +2374,7 @@ QGraphicsItem *QGraphicsView::itemAt(const QPoint &pos) const
{
Q_D(const QGraphicsView);
if (!d->scene)
- return 0;
+ return nullptr;
const QList<QGraphicsItem *> itemsAtPos = items(pos);
return itemsAtPos.isEmpty() ? 0 : itemsAtPos.first();
}
@@ -2889,7 +2888,7 @@ bool QGraphicsView::viewportEvent(QEvent *event)
}
d->useLastMouseEvent = false;
// a hack to pass a viewport pointer to the scene inside the leave event
- Q_ASSERT(event->d == 0);
+ Q_ASSERT(event->d == nullptr);
QScopedValueRollback<QEventPrivate *> rb(event->d);
event->d = reinterpret_cast<QEventPrivate *>(viewport());
QCoreApplication::sendEvent(d->scene, event);
@@ -3020,7 +3019,7 @@ void QGraphicsView::dropEvent(QDropEvent *event)
event->setDropAction(sceneEvent.dropAction());
delete d->lastDragDropEvent;
- d->lastDragDropEvent = 0;
+ d->lastDragDropEvent = nullptr;
}
/*!
@@ -3078,7 +3077,7 @@ void QGraphicsView::dragLeaveEvent(QDragLeaveEvent *event)
sceneEvent.setWidget(d->lastDragDropEvent->widget());
sceneEvent.setSource(d->lastDragDropEvent->source());
delete d->lastDragDropEvent;
- d->lastDragDropEvent = 0;
+ d->lastDragDropEvent = nullptr;
// Send it to the scene.
QCoreApplication::sendEvent(d->scene, &sceneEvent);
@@ -3526,7 +3525,7 @@ void QGraphicsView::paintEvent(QPaintEvent *event)
d->scene->d_func()->rectAdjust = 1;
else
d->scene->d_func()->rectAdjust = 2;
- d->scene->d_func()->drawItems(&painter, viewTransformed ? &viewTransform : 0,
+ d->scene->d_func()->drawItems(&painter, viewTransformed ? &viewTransform : nullptr,
&d->exposedRegion, viewport());
d->scene->d_func()->rectAdjust = oldRectAdjust;
// Make sure the painter's world transform is restored correctly when
@@ -3795,7 +3794,7 @@ void QGraphicsView::drawItems(QPainter *painter, int numItems,
{
Q_D(QGraphicsView);
if (d->scene) {
- QWidget *widget = painter->device() == viewport() ? viewport() : 0;
+ QWidget *widget = painter->device() == viewport() ? viewport() : nullptr;
d->scene->drawItems(painter, numItems, items, options, widget);
}
}
diff --git a/src/widgets/graphicsview/qgraphicswidget.cpp b/src/widgets/graphicsview/qgraphicswidget.cpp
index cf041b9817..1035ed3575 100644
--- a/src/widgets/graphicsview/qgraphicswidget.cpp
+++ b/src/widgets/graphicsview/qgraphicswidget.cpp
@@ -172,7 +172,7 @@ QT_BEGIN_NAMESPACE
window, a tool, a popup, etc).
*/
QGraphicsWidget::QGraphicsWidget(QGraphicsItem *parent, Qt::WindowFlags wFlags)
- : QGraphicsObject(*new QGraphicsWidgetPrivate, 0), QGraphicsLayoutItem(0, false)
+ : QGraphicsObject(*new QGraphicsWidgetPrivate, nullptr), QGraphicsLayoutItem(nullptr, false)
{
Q_D(QGraphicsWidget);
d->init(parent, wFlags);
@@ -184,7 +184,7 @@ QGraphicsWidget::QGraphicsWidget(QGraphicsItem *parent, Qt::WindowFlags wFlags)
Constructs a new QGraphicsWidget, using \a dd as parent.
*/
QGraphicsWidget::QGraphicsWidget(QGraphicsWidgetPrivate &dd, QGraphicsItem *parent, Qt::WindowFlags wFlags)
- : QGraphicsObject(dd, 0), QGraphicsLayoutItem(0, false)
+ : QGraphicsObject(dd, nullptr), QGraphicsLayoutItem(nullptr, false)
{
Q_D(QGraphicsWidget);
d->init(parent, wFlags);
@@ -241,7 +241,7 @@ QGraphicsWidget::~QGraphicsWidget()
if (QGraphicsScene *scn = scene()) {
QGraphicsScenePrivate *sceneD = scn->d_func();
if (sceneD->tabFocusFirst == this)
- sceneD->tabFocusFirst = (d->focusNext == this ? 0 : d->focusNext);
+ sceneD->tabFocusFirst = (d->focusNext == this ? nullptr : d->focusNext);
}
d->focusPrev->d_func()->focusNext = d->focusNext;
d->focusNext->d_func()->focusPrev = d->focusPrev;
@@ -263,15 +263,15 @@ QGraphicsWidget::~QGraphicsWidget()
if (item->isWidget()) {
QGraphicsWidget *widget = static_cast<QGraphicsWidget *>(item);
if (widget->parentLayoutItem() == d->layout)
- widget->setParentLayoutItem(0);
+ widget->setParentLayoutItem(nullptr);
}
}
- d->layout = 0;
+ d->layout = nullptr;
delete temp;
}
// Remove this graphics widget from widgetStyles
- widgetStyles()->setStyleForWidget(this, 0);
+ widgetStyles()->setStyleForWidget(this, nullptr);
// Unset the parent here, when we're still a QGraphicsWidget.
// It is otherwise done in ~QGraphicsItem() where we'd be
@@ -942,7 +942,7 @@ QStyle *QGraphicsWidget::style() const
*/
void QGraphicsWidget::setStyle(QStyle *style)
{
- setAttribute(Qt::WA_SetStyle, style != 0);
+ setAttribute(Qt::WA_SetStyle, style != nullptr);
widgetStyles()->setStyleForWidget(this, style);
// Deliver StyleChange to the widget itself (doesn't propagate).
@@ -1557,7 +1557,7 @@ bool QGraphicsWidget::focusNextPrevChild(bool next)
{
Q_D(QGraphicsWidget);
// Let the parent's focusNextPrevChild implementation decide what to do.
- QGraphicsWidget *parent = 0;
+ QGraphicsWidget *parent = nullptr;
if (!isWindow() && (parent = parentWidget()))
return parent->focusNextPrevChild(next);
if (!d->scene)
@@ -1995,7 +1995,7 @@ void QGraphicsWidget::setShortcutAutoRepeat(int id, bool enabled)
*/
void QGraphicsWidget::addAction(QAction *action)
{
- insertAction(0, action);
+ insertAction(nullptr, action);
}
/*!
@@ -2012,7 +2012,7 @@ void QGraphicsWidget::addActions(QList<QAction *> actions)
#endif
{
for (int i = 0; i < actions.count(); ++i)
- insertAction(0, actions.at(i));
+ insertAction(nullptr, actions.at(i));
}
/*!
@@ -2041,7 +2041,7 @@ void QGraphicsWidget::insertAction(QAction *before, QAction *action)
int pos = d->actions.indexOf(before);
if (pos < 0) {
- before = 0;
+ before = nullptr;
pos = d->actions.size();
}
d->actions.insert(pos, action);
@@ -2346,7 +2346,7 @@ void QGraphicsWidget::paintWindowFrame(QPainter *painter, const QStyleOptionGrap
frameOptions.palette.setCurrentColorGroup(isActive ? QPalette::Active : QPalette::Normal);
frameOptions.rect = windowFrameRect;
- frameOptions.lineWidth = style()->pixelMetric(QStyle::PM_MdiSubWindowFrameWidth, 0, widget);
+ frameOptions.lineWidth = style()->pixelMetric(QStyle::PM_MdiSubWindowFrameWidth, nullptr, widget);
frameOptions.midLineWidth = 1;
style()->drawPrimitive(QStyle::PE_FrameWindow, &frameOptions, painter, widget);
diff --git a/src/widgets/graphicsview/qgraphicswidget_p.cpp b/src/widgets/graphicsview/qgraphicswidget_p.cpp
index 0156faf8e4..e6f39d6803 100644
--- a/src/widgets/graphicsview/qgraphicswidget_p.cpp
+++ b/src/widgets/graphicsview/qgraphicswidget_p.cpp
@@ -322,7 +322,7 @@ void QGraphicsWidgetPrivate::initStyleOptionTitleBar(QStyleOptionTitleBar *optio
option->titleBarState = Qt::WindowNoState;
}
QFont windowTitleFont = QApplication::font("QMdiSubWindowTitleBar");
- QRect textRect = q->style()->subControlRect(QStyle::CC_TitleBar, option, QStyle::SC_TitleBarLabel, 0);
+ QRect textRect = q->style()->subControlRect(QStyle::CC_TitleBar, option, QStyle::SC_TitleBarLabel, nullptr);
option->text = QFontMetrics(windowTitleFont).elidedText(
windowData->windowTitle, Qt::ElideRight, textRect.width());
}
@@ -690,7 +690,7 @@ void QGraphicsWidgetPrivate::windowFrameHoverMoveEvent(QGraphicsSceneHoverEvent
break;
case Qt::TitleBarArea:
windowData->buttonRect = q->style()->subControlRect(
- QStyle::CC_TitleBar, &bar, QStyle::SC_TitleBarCloseButton, 0);
+ QStyle::CC_TitleBar, &bar, QStyle::SC_TitleBarCloseButton, nullptr);
if (windowData->buttonRect.contains(pos.toPoint()))
windowData->buttonMouseOver = true;
event->ignore();
@@ -707,7 +707,7 @@ void QGraphicsWidgetPrivate::windowFrameHoverMoveEvent(QGraphicsSceneHoverEvent
Q_UNUSED(cursorShape);
#endif
// update buttons if we hover over them
- windowData->hoveredSubControl = q->style()->hitTestComplexControl(QStyle::CC_TitleBar, &bar, pos.toPoint(), 0);
+ windowData->hoveredSubControl = q->style()->hitTestComplexControl(QStyle::CC_TitleBar, &bar, pos.toPoint(), nullptr);
if (windowData->hoveredSubControl != QStyle::SC_TitleBarCloseButton)
windowData->hoveredSubControl = QStyle::SC_TitleBarLabel;
@@ -781,7 +781,7 @@ void QGraphicsWidgetPrivate::fixFocusChainBeforeReparenting(QGraphicsWidget *new
if (!parent && oldScene && oldScene != newScene && oldScene->d_func()->tabFocusFirst == q) {
// detach from old scene's top level focus chain.
- oldScene->d_func()->tabFocusFirst = (focusAfter != q) ? focusAfter : 0;
+ oldScene->d_func()->tabFocusFirst = (focusAfter != q) ? focusAfter : nullptr;
}
// detach from current focus chain; skip this widget subtree.
diff --git a/src/widgets/graphicsview/qsimplex_p.cpp b/src/widgets/graphicsview/qsimplex_p.cpp
index e18f1fa4c4..38c2df5fc6 100644
--- a/src/widgets/graphicsview/qsimplex_p.cpp
+++ b/src/widgets/graphicsview/qsimplex_p.cpp
@@ -76,7 +76,7 @@ QT_BEGIN_NAMESPACE
/*!
\internal
*/
-QSimplex::QSimplex() : objective(0), rows(0), columns(0), firstArtificial(0), matrix(0)
+QSimplex::QSimplex() : objective(nullptr), rows(0), columns(0), firstArtificial(0), matrix(nullptr)
{
}
@@ -93,7 +93,7 @@ QSimplex::~QSimplex()
*/
void QSimplex::clearDataStructures()
{
- if (matrix == 0)
+ if (matrix == nullptr)
return;
// Matrix
@@ -101,7 +101,7 @@ void QSimplex::clearDataStructures()
columns = 0;
firstArtificial = 0;
free(matrix);
- matrix = 0;
+ matrix = nullptr;
// Constraints
for (int i = 0; i < constraints.size(); ++i) {
@@ -113,7 +113,7 @@ void QSimplex::clearDataStructures()
// Other
variables.clear();
- objective = 0;
+ objective = nullptr;
}
/*!
@@ -195,7 +195,7 @@ bool QSimplex::setConstraints(const QList<QSimplexConstraint *> &newConstraints)
QSimplexVariable *artificial;
Q_ASSERT(constraints[i]->helper.first == 0);
- Q_ASSERT(constraints[i]->artificial == 0);
+ Q_ASSERT(constraints[i]->artificial == nullptr);
switch(constraints[i]->ratio) {
case QSimplexConstraint::LessOrEqual:
diff --git a/src/widgets/itemviews/qabstractitemdelegate.cpp b/src/widgets/itemviews/qabstractitemdelegate.cpp
index 31dde8832b..bb47881c03 100644
--- a/src/widgets/itemviews/qabstractitemdelegate.cpp
+++ b/src/widgets/itemviews/qabstractitemdelegate.cpp
@@ -255,7 +255,7 @@ QWidget *QAbstractItemDelegate::createEditor(QWidget *,
const QStyleOptionViewItem &,
const QModelIndex &) const
{
- return 0;
+ return nullptr;
}
@@ -387,44 +387,46 @@ bool QAbstractItemDelegate::helpEvent(QHelpEvent *event,
const QStyleOptionViewItem &option,
const QModelIndex &index)
{
- Q_D(QAbstractItemDelegate);
- Q_UNUSED(d);
- Q_UNUSED(index);
- Q_UNUSED(option);
-
if (!event || !view)
return false;
+ Q_D(QAbstractItemDelegate);
switch (event->type()) {
#ifndef QT_NO_TOOLTIP
case QEvent::ToolTip: {
QHelpEvent *he = static_cast<QHelpEvent*>(event);
const int precision = inherits("QItemDelegate") ? 10 : 6; // keep in sync with DBL_DIG in qitemdelegate.cpp
- const QString tooltip = d->textForRole(Qt::ToolTipRole, index.data(Qt::ToolTipRole), option.locale, precision);
- if (!tooltip.isEmpty()) {
- QToolTip::showText(he->globalPos(), tooltip, view);
- return true;
+ const QString tooltip = index.isValid() ?
+ d->textForRole(Qt::ToolTipRole, index.data(Qt::ToolTipRole), option.locale, precision) :
+ QString();
+ QRect rect;
+ if (index.isValid()) {
+ const QRect r = view->visualRect(index);
+ rect = QRect(view->mapToGlobal(r.topLeft()), r.size());
+ }
+ QToolTip::showText(he->globalPos(), tooltip, view, rect);
+ event->setAccepted(!tooltip.isEmpty());
+ break;
}
- break;}
#endif
#if QT_CONFIG(whatsthis)
- case QEvent::QueryWhatsThis: {
- if (index.data(Qt::WhatsThisRole).isValid())
- return true;
- break; }
+ case QEvent::QueryWhatsThis:
+ event->setAccepted(index.data(Qt::WhatsThisRole).isValid());
+ break;
case QEvent::WhatsThis: {
QHelpEvent *he = static_cast<QHelpEvent*>(event);
const int precision = inherits("QItemDelegate") ? 10 : 6; // keep in sync with DBL_DIG in qitemdelegate.cpp
- const QString whatsthis = d->textForRole(Qt::WhatsThisRole, index.data(Qt::WhatsThisRole), option.locale, precision);
- if (!whatsthis.isEmpty()) {
- QWhatsThis::showText(he->globalPos(), whatsthis, view);
- return true;
+ const QString whatsthis = index.isValid() ?
+ d->textForRole(Qt::WhatsThisRole, index.data(Qt::WhatsThisRole), option.locale, precision) :
+ QString();
+ QWhatsThis::showText(he->globalPos(), whatsthis, view);
+ event->setAccepted(!whatsthis.isEmpty());
+ break;
}
- break ; }
#endif
default:
break;
}
- return false;
+ return event->isAccepted();
}
/*!
diff --git a/src/widgets/itemviews/qabstractitemview.cpp b/src/widgets/itemviews/qabstractitemview.cpp
index b07faf8be4..0e54cf235f 100644
--- a/src/widgets/itemviews/qabstractitemview.cpp
+++ b/src/widgets/itemviews/qabstractitemview.cpp
@@ -77,13 +77,13 @@ QT_BEGIN_NAMESPACE
QAbstractItemViewPrivate::QAbstractItemViewPrivate()
: model(QAbstractItemModelPrivate::staticEmptyModel()),
- itemDelegate(0),
- selectionModel(0),
+ itemDelegate(nullptr),
+ selectionModel(nullptr),
ctrlDragSelectionFlag(QItemSelectionModel::NoUpdate),
noSelectionOnMousePress(false),
selectionMode(QAbstractItemView::ExtendedSelection),
selectionBehavior(QAbstractItemView::SelectItems),
- currentlyCommittingEditor(0),
+ currentlyCommittingEditor(nullptr),
pressedModifiers(Qt::NoModifier),
pressedPosition(QPoint(-1, -1)),
pressedAlreadySelected(false),
@@ -145,8 +145,8 @@ void QAbstractItemViewPrivate::init()
q->setAttribute(Qt::WA_InputMethodEnabled);
- verticalScrollMode = static_cast<QAbstractItemView::ScrollMode>(q->style()->styleHint(QStyle::SH_ItemView_ScrollMode, 0, q, 0));
- horizontalScrollMode = static_cast<QAbstractItemView::ScrollMode>(q->style()->styleHint(QStyle::SH_ItemView_ScrollMode, 0, q, 0));
+ verticalScrollMode = static_cast<QAbstractItemView::ScrollMode>(q->style()->styleHint(QStyle::SH_ItemView_ScrollMode, nullptr, q, nullptr));
+ horizontalScrollMode = static_cast<QAbstractItemView::ScrollMode>(q->style()->styleHint(QStyle::SH_ItemView_ScrollMode, nullptr, q, nullptr));
}
void QAbstractItemViewPrivate::setHoverIndex(const QPersistentModelIndex &index)
@@ -757,7 +757,7 @@ void QAbstractItemView::setModel(QAbstractItemModel *model)
QAbstractItemModel *QAbstractItemView::model() const
{
Q_D(const QAbstractItemView);
- return (d->model == QAbstractItemModelPrivate::staticEmptyModel() ? 0 : d->model);
+ return (d->model == QAbstractItemModelPrivate::staticEmptyModel() ? nullptr : d->model);
}
/*!
@@ -915,7 +915,7 @@ QVariant QAbstractItemView::inputMethodQuery(Qt::InputMethodQuery query) const
void QAbstractItemView::setItemDelegateForRow(int row, QAbstractItemDelegate *delegate)
{
Q_D(QAbstractItemView);
- if (QAbstractItemDelegate *rowDelegate = d->rowDelegates.value(row, 0)) {
+ if (QAbstractItemDelegate *rowDelegate = d->rowDelegates.value(row, nullptr)) {
if (d->delegateRefCount(rowDelegate) == 1) {
disconnect(rowDelegate, SIGNAL(closeEditor(QWidget*,QAbstractItemDelegate::EndEditHint)),
this, SLOT(closeEditor(QWidget*,QAbstractItemDelegate::EndEditHint)));
@@ -949,7 +949,7 @@ void QAbstractItemView::setItemDelegateForRow(int row, QAbstractItemDelegate *de
QAbstractItemDelegate *QAbstractItemView::itemDelegateForRow(int row) const
{
Q_D(const QAbstractItemView);
- return d->rowDelegates.value(row, 0);
+ return d->rowDelegates.value(row, nullptr);
}
/*!
@@ -975,7 +975,7 @@ QAbstractItemDelegate *QAbstractItemView::itemDelegateForRow(int row) const
void QAbstractItemView::setItemDelegateForColumn(int column, QAbstractItemDelegate *delegate)
{
Q_D(QAbstractItemView);
- if (QAbstractItemDelegate *columnDelegate = d->columnDelegates.value(column, 0)) {
+ if (QAbstractItemDelegate *columnDelegate = d->columnDelegates.value(column, nullptr)) {
if (d->delegateRefCount(columnDelegate) == 1) {
disconnect(columnDelegate, SIGNAL(closeEditor(QWidget*,QAbstractItemDelegate::EndEditHint)),
this, SLOT(closeEditor(QWidget*,QAbstractItemDelegate::EndEditHint)));
@@ -1009,7 +1009,7 @@ void QAbstractItemView::setItemDelegateForColumn(int column, QAbstractItemDelega
QAbstractItemDelegate *QAbstractItemView::itemDelegateForColumn(int column) const
{
Q_D(const QAbstractItemView);
- return d->columnDelegates.value(column, 0);
+ return d->columnDelegates.value(column, nullptr);
}
/*!
@@ -1084,7 +1084,7 @@ void QAbstractItemView::setCurrentIndex(const QModelIndex &index)
{
Q_D(QAbstractItemView);
if (d->selectionModel && (!index.isValid() || d->isIndexEnabled(index))) {
- QItemSelectionModel::SelectionFlags command = selectionCommand(index, 0);
+ QItemSelectionModel::SelectionFlags command = selectionCommand(index, nullptr);
d->selectionModel->setCurrentIndex(index, command);
d->currentIndexSet = true;
if ((command & QItemSelectionModel::Current) == 0)
@@ -1201,7 +1201,7 @@ void QAbstractItemView::edit(const QModelIndex &index)
Q_D(QAbstractItemView);
if (Q_UNLIKELY(!d->isIndexValid(index)))
qWarning("edit: index was invalid");
- if (Q_UNLIKELY(!edit(index, AllEditTriggers, 0)))
+ if (Q_UNLIKELY(!edit(index, AllEditTriggers, nullptr)))
qWarning("edit: editing failed");
}
@@ -1286,7 +1286,7 @@ QAbstractItemView::ScrollMode QAbstractItemView::verticalScrollMode() const
void QAbstractItemView::resetVerticalScrollMode()
{
- auto sm = static_cast<ScrollMode>(style()->styleHint(QStyle::SH_ItemView_ScrollMode, 0, this, 0));
+ auto sm = static_cast<ScrollMode>(style()->styleHint(QStyle::SH_ItemView_ScrollMode, nullptr, this, nullptr));
setVerticalScrollMode(sm);
d_func()->verticalScrollModeSet = false;
}
@@ -1323,7 +1323,7 @@ QAbstractItemView::ScrollMode QAbstractItemView::horizontalScrollMode() const
void QAbstractItemView::resetHorizontalScrollMode()
{
- auto sm = static_cast<ScrollMode>(style()->styleHint(QStyle::SH_ItemView_ScrollMode, 0, this, 0));
+ auto sm = static_cast<ScrollMode>(style()->styleHint(QStyle::SH_ItemView_ScrollMode, nullptr, this, nullptr));
setHorizontalScrollMode(sm);
d_func()->horizontalScrollModeSet = false;
}
@@ -1964,7 +1964,7 @@ void QAbstractItemView::mouseDoubleClickEvent(QMouseEvent *event)
QPersistentModelIndex persistent = index;
emit doubleClicked(persistent);
if ((event->button() == Qt::LeftButton) && !edit(persistent, DoubleClicked, event)
- && !style()->styleHint(QStyle::SH_ItemView_ActivateItemOnSingleClick, 0, this))
+ && !style()->styleHint(QStyle::SH_ItemView_ActivateItemOnSingleClick, nullptr, this))
emit activated(persistent);
d->pressedIndex = QModelIndex();
}
@@ -2388,7 +2388,7 @@ void QAbstractItemView::keyPressEvent(QKeyEvent *event)
setFocus();
QItemSelectionModel::SelectionFlags command = selectionCommand(newCurrent, event);
if (command != QItemSelectionModel::NoUpdate
- || style()->styleHint(QStyle::SH_ItemView_MovementWithoutUpdatingSelection, 0, this)) {
+ || style()->styleHint(QStyle::SH_ItemView_MovementWithoutUpdatingSelection, nullptr, this)) {
// note that we don't check if the new current index is enabled because moveCursor() makes sure it is
if (command & QItemSelectionModel::Current) {
d->selectionModel->setCurrentIndex(newCurrent, QItemSelectionModel::NoUpdate);
@@ -2654,7 +2654,7 @@ bool QAbstractItemView::edit(const QModelIndex &index, EditTrigger trigger, QEve
if (!d->isIndexValid(index))
return false;
- if (QWidget *w = (d->persistent.isEmpty() ? static_cast<QWidget*>(0) : d->editorForIndex(index).widget.data())) {
+ if (QWidget *w = (d->persistent.isEmpty() ? static_cast<QWidget*>(nullptr) : d->editorForIndex(index).widget.data())) {
if (w->focusPolicy() == Qt::NoFocus)
return false;
w->setFocus();
@@ -2692,7 +2692,7 @@ bool QAbstractItemView::edit(const QModelIndex &index, EditTrigger trigger, QEve
if (trigger == SelectedClicked)
d->delayedEditing.start(QApplication::doubleClickInterval(), this);
else
- d->openEditor(index, d->shouldForwardEvent(trigger, event) ? event : 0);
+ d->openEditor(index, d->shouldForwardEvent(trigger, event) ? event : nullptr);
return true;
}
@@ -2909,7 +2909,7 @@ void QAbstractItemView::commitData(QWidget *editor)
editor->removeEventFilter(delegate);
delegate->setModelData(editor, d->model, index);
editor->installEventFilter(delegate);
- d->currentlyCommittingEditor = 0;
+ d->currentlyCommittingEditor = nullptr;
}
/*!
@@ -3074,9 +3074,10 @@ void QAbstractItemView::keyboardSearch(const QString &search)
QSize QAbstractItemView::sizeHintForIndex(const QModelIndex &index) const
{
Q_D(const QAbstractItemView);
- if (!d->isIndexValid(index) || !d->itemDelegate)
+ if (!d->isIndexValid(index))
return QSize();
- return d->delegateForIndex(index)->sizeHint(d->viewOptionsV1(), index);
+ const auto delegate = d->delegateForIndex(index);
+ return delegate ? delegate->sizeHint(d->viewOptionsV1(), index) : QSize();
}
/*!
@@ -3260,7 +3261,7 @@ QWidget* QAbstractItemView::indexWidget(const QModelIndex &index) const
if (QWidget *editor = d->editorForIndex(index).widget.data())
return editor;
- return 0;
+ return nullptr;
}
/*!
@@ -3675,7 +3676,7 @@ void QAbstractItemView::currentChanged(const QModelIndex &current, const QModelI
if (d->autoScroll)
scrollTo(current);
update(current);
- edit(current, CurrentChanged, 0);
+ edit(current, CurrentChanged, nullptr);
if (current.row() == (d->model->rowCount(d->root) - 1))
d->fetchMore();
} else {
@@ -3739,7 +3740,7 @@ QStyleOptionViewItem QAbstractItemView::viewOptions() const
if (d->iconSize.isValid()) {
option.decorationSize = d->iconSize;
} else {
- int pm = style()->pixelMetric(QStyle::PM_SmallIconSize, 0, this);
+ int pm = style()->pixelMetric(QStyle::PM_SmallIconSize, nullptr, this);
option.decorationSize = QSize(pm, pm);
}
option.decorationPosition = QStyleOptionViewItem::Left;
@@ -3747,7 +3748,7 @@ QStyleOptionViewItem QAbstractItemView::viewOptions() const
option.displayAlignment = Qt::AlignLeft|Qt::AlignVCenter;
option.textElideMode = d->textElideMode;
option.rect = QRect();
- option.showDecorationSelected = style()->styleHint(QStyle::SH_ItemView_ShowDecorationSelected, 0, this);
+ option.showDecorationSelected = style()->styleHint(QStyle::SH_ItemView_ShowDecorationSelected, nullptr, this);
if (d->wrapItemText)
option.features = QStyleOptionViewItem::WrapText;
option.locale = locale();
@@ -4233,7 +4234,7 @@ QWidget *QAbstractItemViewPrivate::editor(const QModelIndex &index,
if (!w) {
QAbstractItemDelegate *delegate = delegateForIndex(index);
if (!delegate)
- return 0;
+ return nullptr;
w = delegate->createEditor(viewport, options, index);
if (w) {
w->installEventFilter(delegate);
diff --git a/src/widgets/itemviews/qcolumnview.cpp b/src/widgets/itemviews/qcolumnview.cpp
index a4eed2d885..4d0161025c 100644
--- a/src/widgets/itemviews/qcolumnview.cpp
+++ b/src/widgets/itemviews/qcolumnview.cpp
@@ -142,7 +142,7 @@ void QColumnView::setResizeGripsVisible(bool visible)
connect(grip, SIGNAL(gripMoved(int)), this, SLOT(_q_gripMoved(int)));
} else {
QWidget *widget = view->cornerWidget();
- view->setCornerWidget(0);
+ view->setCornerWidget(nullptr);
widget->deleteLater();
}
}
@@ -327,7 +327,7 @@ void QColumnView::scrollTo(const QModelIndex &index, ScrollHint hint)
}
#if QT_CONFIG(animation)
- if (const int animationDuration = style()->styleHint(QStyle::SH_Widget_Animation_Duration, 0, this)) {
+ if (const int animationDuration = style()->styleHint(QStyle::SH_Widget_Animation_Duration, nullptr, this)) {
d->currentAnimation.setDuration(animationDuration);
d->currentAnimation.setEndValue(newScrollbarValue);
d->currentAnimation.start();
@@ -638,7 +638,7 @@ void QColumnViewPrivate::_q_clicked(const QModelIndex &index)
{
Q_Q(QColumnView);
QModelIndex parent = index.parent();
- QAbstractItemView *columnClicked = 0;
+ QAbstractItemView *columnClicked = nullptr;
for (int column = 0; column < columns.count(); ++column) {
if (columns.at(column)->rootIndex() == parent) {
columnClicked = columns[column];
@@ -666,7 +666,7 @@ void QColumnViewPrivate::_q_clicked(const QModelIndex &index)
QAbstractItemView *QColumnViewPrivate::createColumn(const QModelIndex &index, bool show)
{
Q_Q(QColumnView);
- QAbstractItemView *view = 0;
+ QAbstractItemView *view = nullptr;
if (model->hasChildren(index)) {
view = q->createColumn(index);
q->connect(view, SIGNAL(clicked(QModelIndex)),
@@ -1045,8 +1045,8 @@ QColumnViewPrivate::QColumnViewPrivate()
: QAbstractItemViewPrivate()
,showResizeGrips(true)
,offset(0)
-,previewWidget(0)
-,previewColumn(0)
+,previewWidget(nullptr)
+,previewColumn(nullptr)
{
}
diff --git a/src/widgets/itemviews/qcolumnviewgrip.cpp b/src/widgets/itemviews/qcolumnviewgrip.cpp
index 4a4237805f..00cd7df20a 100644
--- a/src/widgets/itemviews/qcolumnviewgrip.cpp
+++ b/src/widgets/itemviews/qcolumnviewgrip.cpp
@@ -65,7 +65,7 @@ QT_BEGIN_NAMESPACE
Use setModel() to set the model.
*/
QColumnViewGrip::QColumnViewGrip(QWidget *parent)
-: QWidget(*new QColumnViewGripPrivate, parent, 0)
+ : QWidget(*new QColumnViewGripPrivate, parent, { })
{
#ifndef QT_NO_CURSOR
setCursor(Qt::SplitHCursor);
diff --git a/src/widgets/itemviews/qcolumnviewgrip_p.h b/src/widgets/itemviews/qcolumnviewgrip_p.h
index 4311edbeb4..13e4c764e8 100644
--- a/src/widgets/itemviews/qcolumnviewgrip_p.h
+++ b/src/widgets/itemviews/qcolumnviewgrip_p.h
@@ -73,7 +73,7 @@ public:
int moveGrip(int offset);
protected:
- QColumnViewGrip(QColumnViewGripPrivate &, QWidget *parent = nullptr, Qt::WindowFlags f = nullptr);
+ QColumnViewGrip(QColumnViewGripPrivate &, QWidget *parent = nullptr, Qt::WindowFlags f = { });
void paintEvent(QPaintEvent *event) override;
void mouseDoubleClickEvent(QMouseEvent *event) override;
void mouseMoveEvent(QMouseEvent *event) override;
diff --git a/src/widgets/itemviews/qdatawidgetmapper.cpp b/src/widgets/itemviews/qdatawidgetmapper.cpp
index 125ee73194..24039c42f6 100644
--- a/src/widgets/itemviews/qdatawidgetmapper.cpp
+++ b/src/widgets/itemviews/qdatawidgetmapper.cpp
@@ -56,7 +56,7 @@ public:
Q_DECLARE_PUBLIC(QDataWidgetMapper)
QDataWidgetMapperPrivate()
- : model(QAbstractItemModelPrivate::staticEmptyModel()), delegate(0),
+ : model(QAbstractItemModelPrivate::staticEmptyModel()), delegate(nullptr),
orientation(Qt::Horizontal), submitPolicy(QDataWidgetMapper::AutoSubmit)
{
}
@@ -226,7 +226,7 @@ void QDataWidgetMapperPrivate::_q_modelDestroyed()
{
Q_Q(QDataWidgetMapper);
- model = 0;
+ model = nullptr;
q->setModel(QAbstractItemModelPrivate::staticEmptyModel());
}
@@ -374,7 +374,7 @@ QAbstractItemModel *QDataWidgetMapper::model() const
{
Q_D(const QDataWidgetMapper);
return d->model == QAbstractItemModelPrivate::staticEmptyModel()
- ? static_cast<QAbstractItemModel *>(0)
+ ? static_cast<QAbstractItemModel *>(nullptr)
: d->model;
}
@@ -567,7 +567,7 @@ QWidget *QDataWidgetMapper::mappedWidgetAt(int section) const
return e.widget;
}
- return 0;
+ return nullptr;
}
/*!
diff --git a/src/widgets/itemviews/qdirmodel.cpp b/src/widgets/itemviews/qdirmodel.cpp
index 13a1bbd8eb..0d387d7def 100644
--- a/src/widgets/itemviews/qdirmodel.cpp
+++ b/src/widgets/itemviews/qdirmodel.cpp
@@ -39,6 +39,8 @@
#include "qdirmodel.h"
+#if QT_DEPRECATED_SINCE(5, 15)
+
#include <qfile.h>
#include <qfilesystemmodel.h>
#include <qurl.h>
@@ -73,7 +75,7 @@ class QDirModelPrivate : public QAbstractItemModelPrivate
public:
struct QDirNode
{
- QDirNode() : parent(0), populated(false), stat(false) {}
+ QDirNode() : parent(nullptr), populated(false), stat(false) {}
QDirNode *parent;
QFileInfo info;
QIcon icon; // cache the icon
@@ -236,7 +238,7 @@ QDirModel::QDirModel(const QStringList &nameFilters,
d->nameFilters = nameFilters.isEmpty() ? QStringList(QLatin1String("*")) : nameFilters;
d->filters = filters;
d->sort = sort;
- d->root.parent = 0;
+ d->root.parent = nullptr;
d->root.info = QFileInfo();
d->clear(&d->root);
}
@@ -291,7 +293,7 @@ QModelIndex QDirModel::index(int row, int column, const QModelIndex &parent) con
if (row >= p->children.count())
return QModelIndex();
// now get the internal pointer for the index
- QDirModelPrivate::QDirNode *n = d->node(row, d->indexValid(parent) ? p : 0);
+ QDirModelPrivate::QDirNode *n = d->node(row, d->indexValid(parent) ? p : nullptr);
Q_ASSERT(n);
return createIndex(row, column, n);
@@ -308,8 +310,8 @@ QModelIndex QDirModel::parent(const QModelIndex &child) const
if (!d->indexValid(child))
return QModelIndex();
QDirModelPrivate::QDirNode *node = d->node(child);
- QDirModelPrivate::QDirNode *par = (node ? node->parent : 0);
- if (par == 0) // parent is the root node
+ QDirModelPrivate::QDirNode *par = (node ? node->parent : nullptr);
+ if (par == nullptr) // parent is the root node
return QModelIndex();
// get the parent's row
@@ -1157,10 +1159,10 @@ void QDirModelPrivate::init()
filters = QDir::AllEntries | QDir::NoDotAndDotDot;
sort = QDir::Name;
nameFilters << QLatin1String("*");
- root.parent = 0;
+ root.parent = nullptr;
root.info = QFileInfo();
clear(&root);
- roleNames.insertMulti(QDirModel::FileIconRole, QByteArrayLiteral("fileIcon")); // == Qt::decoration
+ roleNames.insert(QDirModel::FileIconRole, QByteArrayLiteral("fileIcon")); // == Qt::decoration
roleNames.insert(QDirModel::FilePathRole, QByteArrayLiteral("filePath"));
roleNames.insert(QDirModel::FileNameRole, QByteArrayLiteral("fileName"));
}
@@ -1168,7 +1170,7 @@ void QDirModelPrivate::init()
QDirModelPrivate::QDirNode *QDirModelPrivate::node(int row, QDirNode *parent) const
{
if (row < 0)
- return 0;
+ return nullptr;
bool isDir = !parent || parent->info.isDir();
QDirNode *p = (parent ? parent : &root);
@@ -1177,7 +1179,7 @@ QDirModelPrivate::QDirNode *QDirModelPrivate::node(int row, QDirNode *parent) co
if (Q_UNLIKELY(row >= p->children.count())) {
qWarning("node: the row does not exist");
- return 0;
+ return nullptr;
}
return const_cast<QDirNode*>(&p->children.at(row));
@@ -1188,7 +1190,7 @@ QVector<QDirModelPrivate::QDirNode> QDirModelPrivate::children(QDirNode *parent,
Q_ASSERT(parent);
QFileInfoList infoList;
if (parent == &root) {
- parent = 0;
+ parent = nullptr;
infoList = QDir::drives();
} else if (parent->info.isDir()) {
//resolve directory links only if requested.
@@ -1331,7 +1333,7 @@ void QDirModelPrivate::appendChild(QDirModelPrivate::QDirNode *parent, const QSt
QDirModelPrivate::QDirNode node;
node.populated = false;
node.stat = shouldStat;
- node.parent = (parent == &root ? 0 : parent);
+ node.parent = (parent == &root ? nullptr : parent);
node.info = QFileInfo(path);
node.info.setCaching(true);
@@ -1372,3 +1374,5 @@ QFileInfo QDirModelPrivate::resolvedInfo(QFileInfo info)
QT_END_NAMESPACE
#include "moc_qdirmodel.cpp"
+
+#endif // QT_DEPRECATED_SINCE(5, 15)
diff --git a/src/widgets/itemviews/qdirmodel.h b/src/widgets/itemviews/qdirmodel.h
index ab91bbd763..665a622dbe 100644
--- a/src/widgets/itemviews/qdirmodel.h
+++ b/src/widgets/itemviews/qdirmodel.h
@@ -45,6 +45,8 @@
#include <QtCore/qdir.h>
#include <QtWidgets/qfileiconprovider.h>
+#if QT_DEPRECATED_SINCE(5, 15)
+
QT_REQUIRE_CONFIG(dirmodel);
QT_BEGIN_NAMESPACE
@@ -65,9 +67,10 @@ public:
FileNameRole
};
- QDirModel(const QStringList &nameFilters, QDir::Filters filters,
- QDir::SortFlags sort, QObject *parent = nullptr);
- explicit QDirModel(QObject *parent = nullptr);
+ QT_DEPRECATED_VERSION_X_5_15("Use QFileSystemModel") QDirModel(const QStringList &nameFilters,
+ QDir::Filters filters, QDir::SortFlags sort,
+ QObject *parent = nullptr);
+ QT_DEPRECATED_VERSION_X_5_15("Use QFileSystemModel") explicit QDirModel(QObject *parent = nullptr);
~QDirModel();
QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override;
@@ -144,4 +147,6 @@ private:
QT_END_NAMESPACE
+#endif // QT_DEPRECATED_SINCE(5, 15)
+
#endif // QDIRMODEL_H
diff --git a/src/widgets/itemviews/qheaderview.cpp b/src/widgets/itemviews/qheaderview.cpp
index d7bdf6aa4c..790f305463 100644
--- a/src/widgets/itemviews/qheaderview.cpp
+++ b/src/widgets/itemviews/qheaderview.cpp
@@ -1583,7 +1583,7 @@ int QHeaderView::minimumSectionSize() const
Q_D(const QHeaderView);
if (d->minimumSectionSize == -1) {
QSize strut = QApplication::globalStrut();
- int margin = 2 * style()->pixelMetric(QStyle::PM_HeaderMargin, 0, this);
+ int margin = 2 * style()->pixelMetric(QStyle::PM_HeaderMargin, nullptr, this);
if (d->orientation == Qt::Horizontal)
return qMax(strut.width(), (fontMetrics().maxWidth() + margin));
return qMax(strut.height(), (fontMetrics().height() + margin));
@@ -2883,12 +2883,12 @@ void QHeaderView::paintSection(QPainter *painter, const QRect &rect, int logical
opt.text = d->model->headerData(logicalIndex, d->orientation,
Qt::DisplayRole).toString();
- int margin = 2 * style()->pixelMetric(QStyle::PM_HeaderMargin, 0, this);
+ int margin = 2 * style()->pixelMetric(QStyle::PM_HeaderMargin, nullptr, this);
- const Qt::Alignment headerArrowAlignment = static_cast<Qt::Alignment>(style()->styleHint(QStyle::SH_Header_ArrowAlignment, 0, this));
+ const Qt::Alignment headerArrowAlignment = static_cast<Qt::Alignment>(style()->styleHint(QStyle::SH_Header_ArrowAlignment, nullptr, this));
const bool isHeaderArrowOnTheSide = headerArrowAlignment & Qt::AlignVCenter;
if (isSortIndicatorShown() && sortIndicatorSection() == logicalIndex && isHeaderArrowOnTheSide)
- margin += style()->pixelMetric(QStyle::PM_HeaderMarkSize, 0, this);
+ margin += style()->pixelMetric(QStyle::PM_HeaderMarkSize, nullptr, this);
const QVariant variant = d->model->headerData(logicalIndex, d->orientation,
Qt::DecorationRole);
@@ -2896,8 +2896,8 @@ void QHeaderView::paintSection(QPainter *painter, const QRect &rect, int logical
if (opt.icon.isNull())
opt.icon = qvariant_cast<QPixmap>(variant);
if (!opt.icon.isNull()) // see CT_HeaderSection
- margin += style()->pixelMetric(QStyle::PM_SmallIconSize, 0, this) +
- style()->pixelMetric(QStyle::PM_HeaderMargin, 0, this);
+ margin += style()->pixelMetric(QStyle::PM_SmallIconSize, nullptr, this) +
+ style()->pixelMetric(QStyle::PM_HeaderMargin, nullptr, this);
if (d->textElideMode != Qt::ElideNone) {
const QRect textRect = style()->subElementRect(QStyle::SE_HeaderLabel, &opt, this);
@@ -3275,7 +3275,7 @@ int QHeaderViewPrivate::sectionHandleAt(int position)
return -1;
int log = logicalIndex(visual);
int pos = q->sectionViewportPosition(log);
- int grip = q->style()->pixelMetric(QStyle::PM_HeaderGripMargin, 0, q);
+ int grip = q->style()->pixelMetric(QStyle::PM_HeaderGripMargin, nullptr, q);
bool atLeft = position < pos + grip;
bool atRight = (position > pos + q->sectionSize(log) - grip);
@@ -3814,10 +3814,10 @@ void QHeaderViewPrivate::updateDefaultSectionSizeFromStyle()
{
Q_Q(QHeaderView);
if (orientation == Qt::Horizontal) {
- defaultSectionSize = q->style()->pixelMetric(QStyle::PM_HeaderDefaultSectionSizeHorizontal, 0, q);
+ defaultSectionSize = q->style()->pixelMetric(QStyle::PM_HeaderDefaultSectionSizeHorizontal, nullptr, q);
} else {
defaultSectionSize = qMax(q->minimumSectionSize(),
- q->style()->pixelMetric(QStyle::PM_HeaderDefaultSectionSizeVertical, 0, q));
+ q->style()->pixelMetric(QStyle::PM_HeaderDefaultSectionSizeVertical, nullptr, q));
}
}
diff --git a/src/widgets/itemviews/qitemdelegate.cpp b/src/widgets/itemviews/qitemdelegate.cpp
index 460764f1b8..daea907963 100644
--- a/src/widgets/itemviews/qitemdelegate.cpp
+++ b/src/widgets/itemviews/qitemdelegate.cpp
@@ -77,7 +77,7 @@ class QItemDelegatePrivate : public QAbstractItemDelegatePrivate
Q_DECLARE_PUBLIC(QItemDelegate)
public:
- QItemDelegatePrivate() : f(0), clipPainting(true) {}
+ QItemDelegatePrivate() : f(nullptr), clipPainting(true) {}
inline const QItemEditorFactory *editorFactory() const
{ return f ? f : QItemEditorFactory::defaultFactory(); }
@@ -149,7 +149,7 @@ QRect QItemDelegatePrivate::textLayoutBounds(const QStyleOptionViewItem &option,
QStyle *style = w ? w->style() : QApplication::style();
const bool wrapText = option.features & QStyleOptionViewItem::WrapText;
// see QItemDelegate::drawDisplay
- const int textMargin = style->pixelMetric(QStyle::PM_FocusFrameHMargin, 0, w) + 1;
+ const int textMargin = style->pixelMetric(QStyle::PM_FocusFrameHMargin, nullptr, w) + 1;
switch (option.decorationPosition) {
case QStyleOptionViewItem::Left:
case QStyleOptionViewItem::Right:
@@ -502,9 +502,9 @@ QWidget *QItemDelegate::createEditor(QWidget *parent,
{
Q_D(const QItemDelegate);
if (!index.isValid())
- return 0;
+ return nullptr;
const QItemEditorFactory *factory = d->f;
- if (factory == 0)
+ if (factory == nullptr)
factory = QItemEditorFactory::defaultFactory();
QWidget *w = factory->createEditor(index.data(Qt::EditRole).userType(), parent);
if (w)
@@ -533,7 +533,7 @@ void QItemDelegate::setEditorData(QWidget *editor, const QModelIndex &index) con
if (!n.isEmpty()) {
if (!v.isValid())
- v = QVariant(editor->property(n).userType(), (const void *)0);
+ v = QVariant(editor->property(n).userType(), (const void *)nullptr);
editor->setProperty(n, v);
}
#endif
@@ -586,7 +586,7 @@ void QItemDelegate::updateEditorGeometry(QWidget *editor,
QPixmap pixmap = decoration(option, index.data(Qt::DecorationRole));
QString text = QItemDelegatePrivate::replaceNewLine(index.data(Qt::DisplayRole).toString());
QRect pixmapRect = QRect(QPoint(0, 0), option.decorationSize).intersected(pixmap.rect());
- QRect textRect = textRectangle(0, option.rect, option.font, text);
+ QRect textRect = textRectangle(nullptr, option.rect, option.font, text);
QRect checkRect = doCheck(option, textRect, index.data(Qt::CheckStateRole));
QStyleOptionViewItem opt = option;
opt.showDecorationSelected = true; // let the editor take up all available space
@@ -654,7 +654,7 @@ void QItemDelegate::drawDisplay(QPainter *painter, const QStyleOptionViewItem &o
const QWidget *widget = d->widget(option);
QStyle *style = widget ? widget->style() : QApplication::style();
- const int textMargin = style->pixelMetric(QStyle::PM_FocusFrameHMargin, 0, widget) + 1;
+ const int textMargin = style->pixelMetric(QStyle::PM_FocusFrameHMargin, nullptr, widget) + 1;
QRect textRect = rect.adjusted(textMargin, 0, -textMargin, 0); // remove width padding
const bool wrapText = opt.features & QStyleOptionViewItem::WrapText;
d->textOption.setWrapMode(wrapText ? QTextOption::WordWrap : QTextOption::ManualWrap);
@@ -841,7 +841,7 @@ void QItemDelegate::doLayout(const QStyleOptionViewItem &option,
const bool hasText = textRect->isValid();
const bool hasMargin = (hasText | hasPixmap | hasCheck);
const int frameHMargin = hasMargin ?
- style->pixelMetric(QStyle::PM_FocusFrameHMargin, 0, widget) + 1 : 0;
+ style->pixelMetric(QStyle::PM_FocusFrameHMargin, nullptr, widget) + 1 : 0;
const int textMargin = hasText ? frameHMargin : 0;
const int pixmapMargin = hasPixmap ? frameHMargin : 0;
const int checkMargin = hasCheck ? frameHMargin : 0;
@@ -1242,7 +1242,7 @@ QStyleOptionViewItem QItemDelegate::setOptions(const QModelIndex &index,
opt.palette.setBrush(QPalette::Text, qvariant_cast<QBrush>(value));
// disable style animations for checkboxes etc. within itemviews (QTBUG-30146)
- opt.styleObject = 0;
+ opt.styleObject = nullptr;
return opt;
}
diff --git a/src/widgets/itemviews/qitemeditorfactory.cpp b/src/widgets/itemviews/qitemeditorfactory.cpp
index 8ed2ee5f28..f874597d59 100644
--- a/src/widgets/itemviews/qitemeditorfactory.cpp
+++ b/src/widgets/itemviews/qitemeditorfactory.cpp
@@ -91,7 +91,7 @@ class QUIntSpinBox : public QSpinBox
Q_OBJECT
Q_PROPERTY(uint value READ uintValue WRITE setUIntValue NOTIFY uintValueChanged USER true)
public:
- explicit QUIntSpinBox(QWidget *parent = 0)
+ explicit QUIntSpinBox(QWidget *parent = nullptr)
: QSpinBox(parent)
{
connect(this, SIGNAL(valueChanged(int)), SIGNAL(uintValueChanged()));
@@ -176,7 +176,7 @@ QWidget *QItemEditorFactory::createEditor(int userType, QWidget *parent) const
QItemEditorCreatorBase *creator = creatorMap.value(userType, 0);
if (!creator) {
const QItemEditorFactory *dfactory = defaultFactory();
- return dfactory == this ? 0 : dfactory->createEditor(userType, parent);
+ return dfactory == this ? nullptr : dfactory->createEditor(userType, parent);
}
return creator->createWidget(parent);
}
@@ -295,8 +295,8 @@ QWidget *QDefaultItemEditorFactory::createEditor(int userType, QWidget *parent)
default: {
// the default editor is a lineedit
QExpandingLineEdit *le = new QExpandingLineEdit(parent);
- le->setFrame(le->style()->styleHint(QStyle::SH_ItemView_DrawDelegateFrame, 0, le));
- if (!le->style()->styleHint(QStyle::SH_ItemView_ShowDecorationSelected, 0, le))
+ le->setFrame(le->style()->styleHint(QStyle::SH_ItemView_DrawDelegateFrame, nullptr, le));
+ if (!le->style()->styleHint(QStyle::SH_ItemView_ShowDecorationSelected, nullptr, le))
le->setWidgetOwnsGeometry(true);
return le; }
#else
@@ -304,7 +304,7 @@ QWidget *QDefaultItemEditorFactory::createEditor(int userType, QWidget *parent)
break;
#endif
}
- return 0;
+ return nullptr;
}
QByteArray QDefaultItemEditorFactory::valuePropertyName(int userType) const
@@ -335,11 +335,11 @@ QByteArray QDefaultItemEditorFactory::valuePropertyName(int userType) const
}
}
-static QItemEditorFactory *q_default_factory = 0;
+static QItemEditorFactory *q_default_factory = nullptr;
struct QDefaultFactoryCleaner
{
inline QDefaultFactoryCleaner() {}
- ~QDefaultFactoryCleaner() { delete q_default_factory; q_default_factory = 0; }
+ ~QDefaultFactoryCleaner() { delete q_default_factory; q_default_factory = nullptr; }
};
/*!
diff --git a/src/widgets/itemviews/qlistview.cpp b/src/widgets/itemviews/qlistview.cpp
index 62fffc17df..ec01922746 100644
--- a/src/widgets/itemviews/qlistview.cpp
+++ b/src/widgets/itemviews/qlistview.cpp
@@ -935,8 +935,8 @@ QStyleOptionViewItem QListView::viewOptions() const
QStyleOptionViewItem option = QAbstractItemView::viewOptions();
if (!d->iconSize.isValid()) { // otherwise it was already set in abstractitemview
int pm = (d->viewMode == QListView::ListMode
- ? style()->pixelMetric(QStyle::PM_ListViewIconSize, 0, this)
- : style()->pixelMetric(QStyle::PM_IconViewIconSize, 0, this));
+ ? style()->pixelMetric(QStyle::PM_ListViewIconSize, nullptr, this)
+ : style()->pixelMetric(QStyle::PM_IconViewIconSize, nullptr, this));
option.decorationSize = QSize(pm, pm);
}
if (d->viewMode == QListView::IconMode) {
@@ -1690,7 +1690,7 @@ bool QListView::event(QEvent *e)
QListViewPrivate::QListViewPrivate()
: QAbstractItemViewPrivate(),
- commonListView(0),
+ commonListView(nullptr),
wrap(false),
space(0),
flow(QListView::TopToBottom),
@@ -1735,10 +1735,10 @@ void QListViewPrivate::prepareItemsLayout()
// Qt::ScrollBarAlwaysOn but scrollbar extent must be deduced if policy
// is Qt::ScrollBarAsNeeded
int verticalMargin = vbarpolicy==Qt::ScrollBarAsNeeded
- ? q->style()->pixelMetric(QStyle::PM_ScrollBarExtent, 0, vbar) + frameAroundContents
+ ? q->style()->pixelMetric(QStyle::PM_ScrollBarExtent, nullptr, vbar) + frameAroundContents
: 0;
int horizontalMargin = hbarpolicy==Qt::ScrollBarAsNeeded
- ? q->style()->pixelMetric(QStyle::PM_ScrollBarExtent, 0, hbar) + frameAroundContents
+ ? q->style()->pixelMetric(QStyle::PM_ScrollBarExtent, nullptr, hbar) + frameAroundContents
: 0;
layoutBounds.adjust(0, 0, -verticalMargin, -horizontalMargin);
@@ -3074,7 +3074,7 @@ void QIconModeViewBase::doDynamicLayout(const QListViewLayoutInfo &info)
moved.resize(items.count());
QRect rect(QPoint(), topLeft);
- QListViewItem *item = 0;
+ QListViewItem *item = nullptr;
for (int row = info.first; row <= info.last; ++row) {
item = &items[row];
if (isHidden(row)) {
@@ -3180,7 +3180,7 @@ QVector<QModelIndex> QIconModeViewBase::intersectingSet(const QRect &area) const
QVector<QModelIndex> res;
that->interSectingVector = &res;
that->tree.climbTree(area, &QIconModeViewBase::addLeaf, data);
- that->interSectingVector = 0;
+ that->interSectingVector = nullptr;
return res;
}
diff --git a/src/widgets/itemviews/qlistwidget.cpp b/src/widgets/itemviews/qlistwidget.cpp
index e7dcfac403..f71e0f2822 100644
--- a/src/widgets/itemviews/qlistwidget.cpp
+++ b/src/widgets/itemviews/qlistwidget.cpp
@@ -75,7 +75,7 @@ void QListModel::clear()
for (int i = 0; i < items.count(); ++i) {
if (items.at(i)) {
items.at(i)->d->theid = -1;
- items.at(i)->view = 0;
+ items.at(i)->view = nullptr;
delete items.at(i);
}
}
@@ -96,7 +96,7 @@ void QListModel::remove(QListWidgetItem *item)
Q_ASSERT(row != -1);
beginRemoveRows(QModelIndex(), row, row);
items.at(row)->d->theid = -1;
- items.at(row)->view = 0;
+ items.at(row)->view = nullptr;
items.removeAt(row);
endRemoveRows();
}
@@ -156,11 +156,11 @@ void QListModel::insert(int row, const QStringList &labels)
QListWidgetItem *QListModel::take(int row)
{
if (row < 0 || row >= items.count())
- return 0;
+ return nullptr;
beginRemoveRows(QModelIndex(), row, row);
items.at(row)->d->theid = -1;
- items.at(row)->view = 0;
+ items.at(row)->view = nullptr;
QListWidgetItem *item = items.takeAt(row);
endRemoveRows();
return item;
@@ -263,7 +263,7 @@ bool QListModel::insertRows(int row, int count, const QModelIndex &parent)
beginInsertRows(QModelIndex(), row, row + count - 1);
QListWidget *view = qobject_cast<QListWidget*>(QObject::parent());
- QListWidgetItem *itm = 0;
+ QListWidgetItem *itm = nullptr;
for (int r = row; r < row + count; ++r) {
itm = new QListWidgetItem;
@@ -282,10 +282,10 @@ bool QListModel::removeRows(int row, int count, const QModelIndex &parent)
return false;
beginRemoveRows(QModelIndex(), row, row + count - 1);
- QListWidgetItem *itm = 0;
+ QListWidgetItem *itm = nullptr;
for (int r = row; r < row + count; ++r) {
itm = items.takeAt(row);
- itm->view = 0;
+ itm->view = nullptr;
itm->d->theid = -1;
delete itm;
}
@@ -987,8 +987,9 @@ QDataStream &operator>>(QDataStream &in, QListWidgetItem &item)
\fn void QListWidgetItem::setSizeHint(const QSize &size)
\since 4.1
- Sets the size hint for the list item to be \a size. If no size hint is set,
- the item delegate will compute the size hint based on the item data.
+ Sets the size hint for the list item to be \a size.
+ If no size hint is set or \a size is invalid, the item
+ delegate will compute the size hint based on the item data.
*/
/*!
@@ -1119,6 +1120,8 @@ void QListWidgetItem::setFlags(Qt::ItemFlags aflags)
\since 4.2
Sets the background brush of the list item to the given \a brush.
+ Setting a default-constructed brush will let the view use the
+ default color from the style.
\sa background(), setForeground()
*/
@@ -1137,6 +1140,8 @@ void QListWidgetItem::setFlags(Qt::ItemFlags aflags)
\since 4.2
Sets the foreground brush of the list item to the given \a brush.
+ Setting a default-constructed brush will let the view use the
+ default color from the style.
\sa foreground(), setBackground()
*/
@@ -1215,7 +1220,7 @@ void QListWidgetPrivate::_q_emitCurrentItemChanged(const QModelIndex &current,
//persistentCurrent is invalid if something changed the model in response
//to the currentItemChanged signal emission and the item was removed
if (!persistentCurrent.isValid()) {
- currentItem = 0;
+ currentItem = nullptr;
}
emit q->currentTextChanged(currentItem ? currentItem->text() : QString());
@@ -1473,7 +1478,7 @@ QListWidgetItem *QListWidget::item(int row) const
{
Q_D(const QListWidget);
if (row < 0 || row >= d->model->rowCount())
- return 0;
+ return nullptr;
return d->listModel()->at(row);
}
@@ -1543,7 +1548,7 @@ QListWidgetItem *QListWidget::takeItem(int row)
{
Q_D(QListWidget);
if (row < 0 || row >= d->model->rowCount())
- return 0;
+ return nullptr;
return d->listModel()->take(row);
}
@@ -2059,7 +2064,7 @@ QListWidgetItem *QListWidget::itemFromIndex(const QModelIndex &index) const
Q_D(const QListWidget);
if (d->isIndexValid(index))
return d->listModel()->at(index.row());
- return 0;
+ return nullptr;
}
/*!
diff --git a/src/widgets/itemviews/qlistwidget.h b/src/widgets/itemviews/qlistwidget.h
index c102b144df..1319d658ab 100644
--- a/src/widgets/itemviews/qlistwidget.h
+++ b/src/widgets/itemviews/qlistwidget.h
@@ -127,7 +127,7 @@ public:
inline QBrush background() const
{ return qvariant_cast<QBrush>(data(Qt::BackgroundRole)); }
inline void setBackground(const QBrush &brush)
- { setData(Qt::BackgroundRole, brush); }
+ { setData(Qt::BackgroundRole, brush.style() != Qt::NoBrush ? QVariant(brush) : QVariant()); }
#if QT_DEPRECATED_SINCE(5, 13)
QT_DEPRECATED_X ("Use QListWidgetItem::foreground() instead")
@@ -141,7 +141,7 @@ public:
inline QBrush foreground() const
{ return qvariant_cast<QBrush>(data(Qt::ForegroundRole)); }
inline void setForeground(const QBrush &brush)
- { setData(Qt::ForegroundRole, brush); }
+ { setData(Qt::ForegroundRole, brush.style() != Qt::NoBrush ? QVariant(brush) : QVariant()); }
inline Qt::CheckState checkState() const
{ return static_cast<Qt::CheckState>(data(Qt::CheckStateRole).toInt()); }
@@ -151,7 +151,7 @@ public:
inline QSize sizeHint() const
{ return qvariant_cast<QSize>(data(Qt::SizeHintRole)); }
inline void setSizeHint(const QSize &size)
- { setData(Qt::SizeHintRole, size); }
+ { setData(Qt::SizeHintRole, size.isValid() ? QVariant(size) : QVariant()); }
virtual QVariant data(int role) const;
virtual void setData(int role, const QVariant &value);
diff --git a/src/widgets/itemviews/qstyleditemdelegate.cpp b/src/widgets/itemviews/qstyleditemdelegate.cpp
index 702e290da3..f42af2ea00 100644
--- a/src/widgets/itemviews/qstyleditemdelegate.cpp
+++ b/src/widgets/itemviews/qstyleditemdelegate.cpp
@@ -83,7 +83,7 @@ class QStyledItemDelegatePrivate : public QAbstractItemDelegatePrivate
Q_DECLARE_PUBLIC(QStyledItemDelegate)
public:
- QStyledItemDelegatePrivate() : factory(0) { }
+ QStyledItemDelegatePrivate() : factory(nullptr) { }
static const QWidget *widget(const QStyleOptionViewItem &option)
{
@@ -351,7 +351,7 @@ void QStyledItemDelegate::initStyleOption(QStyleOptionViewItem *option,
option->backgroundBrush = qvariant_cast<QBrush>(index.data(Qt::BackgroundRole));
// disable style animations for checkboxes etc. within itemviews (QTBUG-30146)
- option->styleObject = 0;
+ option->styleObject = nullptr;
}
/*!
@@ -426,7 +426,7 @@ QWidget *QStyledItemDelegate::createEditor(QWidget *parent,
{
Q_D(const QStyledItemDelegate);
if (!index.isValid())
- return 0;
+ return nullptr;
return d->editorFactory()->createEditor(index.data(Qt::EditRole).userType(), parent);
}
@@ -450,7 +450,7 @@ void QStyledItemDelegate::setEditorData(QWidget *editor, const QModelIndex &inde
if (!n.isEmpty()) {
if (!v.isValid())
- v = QVariant(editor->property(n).userType(), (const void *)0);
+ v = QVariant(editor->property(n).userType(), (const void *)nullptr);
editor->setProperty(n, v);
}
#endif
@@ -507,7 +507,7 @@ void QStyledItemDelegate::updateEditorGeometry(QWidget *editor,
//or it is in a QTableView
#if QT_CONFIG(tableview) && QT_CONFIG(lineedit)
if (qobject_cast<QExpandingLineEdit*>(editor) && !qobject_cast<const QTableView*>(widget))
- opt.showDecorationSelected = editor->style()->styleHint(QStyle::SH_ItemView_ShowDecorationSelected, 0, editor);
+ opt.showDecorationSelected = editor->style()->styleHint(QStyle::SH_ItemView_ShowDecorationSelected, nullptr, editor);
else
#endif
opt.showDecorationSelected = true;
diff --git a/src/widgets/itemviews/qtableview.cpp b/src/widgets/itemviews/qtableview.cpp
index 11c5be10fd..81fceba8dc 100644
--- a/src/widgets/itemviews/qtableview.cpp
+++ b/src/widgets/itemviews/qtableview.cpp
@@ -1431,7 +1431,7 @@ void QTableView::paintEvent(QPaintEvent *event)
const bool showGrid = d->showGrid;
const int gridSize = showGrid ? 1 : 0;
const int gridHint = style()->styleHint(QStyle::SH_Table_GridLineColor, &option, this);
- const QColor gridColor = static_cast<QRgb>(gridHint);
+ const QColor gridColor = QColor::fromRgba(static_cast<QRgb>(gridHint));
const QPen gridPen = QPen(gridColor, 0, d->gridStyle);
const QHeaderView *verticalHeader = d->verticalHeader;
const QHeaderView *horizontalHeader = d->horizontalHeader;
diff --git a/src/widgets/itemviews/qtablewidget.cpp b/src/widgets/itemviews/qtablewidget.cpp
index b1dbafa997..8f37ef4c3d 100644
--- a/src/widgets/itemviews/qtablewidget.cpp
+++ b/src/widgets/itemviews/qtablewidget.cpp
@@ -49,7 +49,7 @@ QT_BEGIN_NAMESPACE
QTableModel::QTableModel(int rows, int columns, QTableWidget *parent)
: QAbstractTableModel(parent),
- prototype(0),
+ prototype(nullptr),
tableItems(rows * columns, 0),
verticalHeaderItems(rows, 0),
horizontalHeaderItems(columns, 0)
@@ -104,18 +104,18 @@ bool QTableModel::removeRows(int row, int count, const QModelIndex &)
beginRemoveRows(QModelIndex(), row, row + count - 1);
int i = tableIndex(row, 0);
int n = count * columnCount();
- QTableWidgetItem *oldItem = 0;
+ QTableWidgetItem *oldItem = nullptr;
for (int j = i; j < n + i; ++j) {
oldItem = tableItems.at(j);
if (oldItem)
- oldItem->view = 0;
+ oldItem->view = nullptr;
delete oldItem;
}
tableItems.remove(qMax(i, 0), n);
for (int v = row; v < row + count; ++v) {
oldItem = verticalHeaderItems.at(v);
if (oldItem)
- oldItem->view = 0;
+ oldItem->view = nullptr;
delete oldItem;
}
verticalHeaderItems.remove(row, count);
@@ -129,13 +129,13 @@ bool QTableModel::removeColumns(int column, int count, const QModelIndex &)
return false;
beginRemoveColumns(QModelIndex(), column, column + count - 1);
- QTableWidgetItem *oldItem = 0;
+ QTableWidgetItem *oldItem = nullptr;
for (int row = rowCount() - 1; row >= 0; --row) {
int i = tableIndex(row, column);
for (int j = i; j < i + count; ++j) {
oldItem = tableItems.at(j);
if (oldItem)
- oldItem->view = 0;
+ oldItem->view = nullptr;
delete oldItem;
}
tableItems.remove(i, count);
@@ -143,7 +143,7 @@ bool QTableModel::removeColumns(int column, int count, const QModelIndex &)
for (int h=column; h<column+count; ++h) {
oldItem = horizontalHeaderItems.at(h);
if (oldItem)
- oldItem->view = 0;
+ oldItem->view = nullptr;
delete oldItem;
}
horizontalHeaderItems.remove(column, count);
@@ -162,7 +162,7 @@ void QTableModel::setItem(int row, int column, QTableWidgetItem *item)
// remove old
if (oldItem)
- oldItem->view = 0;
+ oldItem->view = nullptr;
delete tableItems.at(i);
QTableWidget *view = qobject_cast<QTableWidget*>(QObject::parent());
@@ -180,7 +180,7 @@ void QTableModel::setItem(int row, int column, QTableWidgetItem *item)
if (row < colItems.count())
colItems.remove(row);
int sortedRow;
- if (item == 0) {
+ if (item == nullptr) {
// move to after all non-0 (sortable) items
sortedRow = colItems.count();
} else {
@@ -222,7 +222,7 @@ QTableWidgetItem *QTableModel::takeItem(int row, int column)
long i = tableIndex(row, column);
QTableWidgetItem *itm = tableItems.value(i);
if (itm) {
- itm->view = 0;
+ itm->view = nullptr;
itm->d->id = -1;
tableItems[i] = 0;
const QModelIndex ind = index(row, column);
@@ -239,7 +239,7 @@ QTableWidgetItem *QTableModel::item(int row, int column) const
QTableWidgetItem *QTableModel::item(const QModelIndex &index) const
{
if (!isValid(index))
- return 0;
+ return nullptr;
return tableItems.at(tableIndex(index.row(), index.column()));
}
@@ -277,7 +277,7 @@ void QTableModel::setHorizontalHeaderItem(int section, QTableWidgetItem *item)
return;
if (oldItem)
- oldItem->view = 0;
+ oldItem->view = nullptr;
delete oldItem;
QTableWidget *view = qobject_cast<QTableWidget*>(QObject::parent());
@@ -299,7 +299,7 @@ void QTableModel::setVerticalHeaderItem(int section, QTableWidgetItem *item)
return;
if (oldItem)
- oldItem->view = 0;
+ oldItem->view = nullptr;
delete oldItem;
QTableWidget *view = qobject_cast<QTableWidget*>(QObject::parent());
@@ -315,10 +315,10 @@ void QTableModel::setVerticalHeaderItem(int section, QTableWidgetItem *item)
QTableWidgetItem *QTableModel::takeHorizontalHeaderItem(int section)
{
if (section < 0 || section >= horizontalHeaderItems.count())
- return 0;
+ return nullptr;
QTableWidgetItem *itm = horizontalHeaderItems.at(section);
if (itm) {
- itm->view = 0;
+ itm->view = nullptr;
itm->itemFlags &= ~ItemIsHeaderItem;
horizontalHeaderItems[section] = 0;
}
@@ -328,10 +328,10 @@ QTableWidgetItem *QTableModel::takeHorizontalHeaderItem(int section)
QTableWidgetItem *QTableModel::takeVerticalHeaderItem(int section)
{
if (section < 0 || section >= verticalHeaderItems.count())
- return 0;
+ return nullptr;
QTableWidgetItem *itm = verticalHeaderItems.at(section);
if (itm) {
- itm->view = 0;
+ itm->view = nullptr;
itm->itemFlags &= ~ItemIsHeaderItem;
verticalHeaderItems[section] = 0;
}
@@ -571,7 +571,7 @@ void QTableModel::ensureSorted(int column, Qt::SortOrder order,
sorting.reserve(count);
for (int row = start; row <= end; ++row) {
QTableWidgetItem *itm = item(row, column);
- if (itm == 0) {
+ if (itm == nullptr) {
// no more sortable items (all 0-items are
// at the end of the table when it is sorted)
break;
@@ -649,7 +649,7 @@ QVector<QTableWidgetItem*> QTableModel::columnItems(int column) const
items.reserve(rc);
for (int row = 0; row < rc; ++row) {
QTableWidgetItem *itm = item(row, column);
- if (itm == 0) {
+ if (itm == nullptr) {
// no more sortable items (all 0-items are
// at the end of the table when it is sorted)
break;
@@ -718,7 +718,7 @@ QVariant QTableModel::headerData(int section, Qt::Orientation orientation, int r
if (section < 0)
return QVariant();
- QTableWidgetItem *itm = 0;
+ QTableWidgetItem *itm = nullptr;
if (orientation == Qt::Horizontal && section < horizontalHeaderItems.count())
itm = horizontalHeaderItems.at(section);
else if (orientation == Qt::Vertical && section < verticalHeaderItems.count())
@@ -741,7 +741,7 @@ bool QTableModel::setHeaderData(int section, Qt::Orientation orientation,
(orientation == Qt::Vertical && verticalHeaderItems.size() <= section))
return false;
- QTableWidgetItem *itm = 0;
+ QTableWidgetItem *itm = nullptr;
if (orientation == Qt::Horizontal)
itm = horizontalHeaderItems.at(section);
else
@@ -764,14 +764,14 @@ void QTableModel::clear()
{
for (int j = 0; j < verticalHeaderItems.count(); ++j) {
if (verticalHeaderItems.at(j)) {
- verticalHeaderItems.at(j)->view = 0;
+ verticalHeaderItems.at(j)->view = nullptr;
delete verticalHeaderItems.at(j);
verticalHeaderItems[j] = 0;
}
}
for (int k = 0; k < horizontalHeaderItems.count(); ++k) {
if (horizontalHeaderItems.at(k)) {
- horizontalHeaderItems.at(k)->view = 0;
+ horizontalHeaderItems.at(k)->view = nullptr;
delete horizontalHeaderItems.at(k);
horizontalHeaderItems[k] = 0;
}
@@ -784,7 +784,7 @@ void QTableModel::clearContents()
beginResetModel();
for (int i = 0; i < tableItems.count(); ++i) {
if (tableItems.at(i)) {
- tableItems.at(i)->view = 0;
+ tableItems.at(i)->view = nullptr;
delete tableItems.at(i);
tableItems[i] = 0;
}
@@ -853,7 +853,7 @@ QMimeData *QTableModel::mimeData(const QModelIndexList &indexes) const
// cachedIndexes is a little hack to avoid copying from QModelIndexList to
// QList<QTreeWidgetItem*> and back again in the view
cachedIndexes = indexes;
- QMimeData *mimeData = (view ? view->mimeData(items) : 0);
+ QMimeData *mimeData = (view ? view->mimeData(items) : nullptr);
cachedIndexes.clear();
return mimeData;
}
@@ -1064,8 +1064,8 @@ QTableWidgetSelectionRange::~QTableWidgetSelectionRange()
\since 4.1
Sets the size hint for the table item to be \a size.
- If no size hint is set, the item delegate will compute the
- size hint based on the item data.
+ If no size hint is set or \a size is invalid, the item
+ delegate will compute the size hint based on the item data.
*/
/*!
@@ -1279,6 +1279,8 @@ void QTableWidgetItem::setFlags(Qt::ItemFlags aflags)
\since 4.2
Sets the item's background brush to the specified \a brush.
+ Setting a default-constructed brush will let the view use the
+ default color from the style.
\sa setForeground()
*/
@@ -1313,6 +1315,8 @@ void QTableWidgetItem::setFlags(Qt::ItemFlags aflags)
\since 4.2
Sets the item's foreground brush to the specified \a brush.
+ Setting a default-constructed brush will let the view use the
+ default color from the style.
\sa setBackground()
*/
@@ -2036,7 +2040,7 @@ QTableWidgetItem *QTableWidget::takeItem(int row, int column)
Q_D(QTableWidget);
QTableWidgetItem *item = d->tableModel()->takeItem(row, column);
if (item)
- item->view = 0;
+ item->view = nullptr;
return item;
}
@@ -2072,7 +2076,7 @@ QTableWidgetItem *QTableWidget::takeVerticalHeaderItem(int row)
Q_D(QTableWidget);
QTableWidgetItem *itm = d->tableModel()->takeVerticalHeaderItem(row);
if (itm)
- itm->view = 0;
+ itm->view = nullptr;
return itm;
}
@@ -2111,7 +2115,7 @@ QTableWidgetItem *QTableWidget::takeHorizontalHeaderItem(int column)
Q_D(QTableWidget);
QTableWidgetItem *itm = d->tableModel()->takeHorizontalHeaderItem(column);
if (itm)
- itm->view = 0;
+ itm->view = nullptr;
return itm;
}
@@ -2122,7 +2126,7 @@ void QTableWidget::setVerticalHeaderLabels(const QStringList &labels)
{
Q_D(QTableWidget);
QTableModel *model = d->tableModel();
- QTableWidgetItem *item = 0;
+ QTableWidgetItem *item = nullptr;
for (int i = 0; i < model->rowCount() && i < labels.count(); ++i) {
item = model->verticalHeaderItem(i);
if (!item) {
@@ -2140,7 +2144,7 @@ void QTableWidget::setHorizontalHeaderLabels(const QStringList &labels)
{
Q_D(QTableWidget);
QTableModel *model = d->tableModel();
- QTableWidgetItem *item = 0;
+ QTableWidgetItem *item = nullptr;
for (int i = 0; i < model->columnCount() && i < labels.count(); ++i) {
item = model->horizontalHeaderItem(i);
if (!item) {
diff --git a/src/widgets/itemviews/qtablewidget.h b/src/widgets/itemviews/qtablewidget.h
index 0d93a0a075..70e2046400 100644
--- a/src/widgets/itemviews/qtablewidget.h
+++ b/src/widgets/itemviews/qtablewidget.h
@@ -146,7 +146,7 @@ public:
inline QBrush background() const
{ return qvariant_cast<QBrush>(data(Qt::BackgroundRole)); }
inline void setBackground(const QBrush &brush)
- { setData(Qt::BackgroundRole, brush); }
+ { setData(Qt::BackgroundRole, brush.style() != Qt::NoBrush ? QVariant(brush) : QVariant()); }
#if QT_DEPRECATED_SINCE(5, 13)
QT_DEPRECATED_X ("Use QTableWidgetItem::foreground() instead")
@@ -160,7 +160,7 @@ public:
inline QBrush foreground() const
{ return qvariant_cast<QBrush>(data(Qt::ForegroundRole)); }
inline void setForeground(const QBrush &brush)
- { setData(Qt::ForegroundRole, brush); }
+ { setData(Qt::ForegroundRole, brush.style() != Qt::NoBrush ? QVariant(brush) : QVariant()); }
inline Qt::CheckState checkState() const
{ return static_cast<Qt::CheckState>(data(Qt::CheckStateRole).toInt()); }
@@ -170,7 +170,7 @@ public:
inline QSize sizeHint() const
{ return qvariant_cast<QSize>(data(Qt::SizeHintRole)); }
inline void setSizeHint(const QSize &size)
- { setData(Qt::SizeHintRole, size); }
+ { setData(Qt::SizeHintRole, size.isValid() ? QVariant(size) : QVariant()); }
virtual QVariant data(int role) const;
virtual void setData(int role, const QVariant &value);
diff --git a/src/widgets/itemviews/qtreeview.cpp b/src/widgets/itemviews/qtreeview.cpp
index 442369c2ec..9aba17be70 100644
--- a/src/widgets/itemviews/qtreeview.cpp
+++ b/src/widgets/itemviews/qtreeview.cpp
@@ -1517,7 +1517,7 @@ void QTreeView::drawTree(QPainter *painter, const QRegion &region) const
/// ### move to QObject :)
static inline bool ancestorOf(QObject *widget, QObject *other)
{
- for (QObject *parent = other; parent != 0; parent = parent->parent()) {
+ for (QObject *parent = other; parent != nullptr; parent = parent->parent()) {
if (parent == widget)
return true;
}
@@ -1888,7 +1888,7 @@ void QTreeView::mousePressEvent(QMouseEvent *event)
{
Q_D(QTreeView);
bool handled = false;
- if (style()->styleHint(QStyle::SH_ListViewExpand_SelectMouseType, 0, this) == QEvent::MouseButtonPress)
+ if (style()->styleHint(QStyle::SH_ListViewExpand_SelectMouseType, nullptr, this) == QEvent::MouseButtonPress)
handled = d->expandOrCollapseItemAtPos(event->pos());
if (!handled && d->itemDecorationAt(event->pos()) == -1)
QAbstractItemView::mousePressEvent(event);
@@ -1907,7 +1907,7 @@ void QTreeView::mouseReleaseEvent(QMouseEvent *event)
} else {
if (state() == QAbstractItemView::DragSelectingState || state() == QAbstractItemView::DraggingState)
setState(QAbstractItemView::NoState);
- if (style()->styleHint(QStyle::SH_ListViewExpand_SelectMouseType, 0, this) == QEvent::MouseButtonRelease)
+ if (style()->styleHint(QStyle::SH_ListViewExpand_SelectMouseType, nullptr, this) == QEvent::MouseButtonRelease)
d->expandOrCollapseItemAtPos(event->pos());
}
}
@@ -1944,7 +1944,7 @@ void QTreeView::mouseDoubleClickEvent(QMouseEvent *event)
if (edit(persistent, DoubleClicked, event) || state() != NoState)
return; // the double click triggered editing
- if (!style()->styleHint(QStyle::SH_ItemView_ActivateItemOnSingleClick, 0, this))
+ if (!style()->styleHint(QStyle::SH_ItemView_ActivateItemOnSingleClick, nullptr, this))
emit activated(persistent);
d->pressedIndex = QModelIndex();
@@ -2208,7 +2208,7 @@ QModelIndex QTreeView::moveCursor(CursorAction cursorAction, Qt::KeyboardModifie
d->collapse(vi, true);
d->moveCursorUpdatedView = true;
} else {
- bool descend = style()->styleHint(QStyle::SH_ItemView_ArrowKeysNavigateIntoChildren, 0, this);
+ bool descend = style()->styleHint(QStyle::SH_ItemView_ArrowKeysNavigateIntoChildren, nullptr, this);
if (descend) {
QModelIndex par = current.parent();
if (par.isValid() && par != rootIndex())
@@ -2244,7 +2244,7 @@ QModelIndex QTreeView::moveCursor(CursorAction cursorAction, Qt::KeyboardModifie
d->expand(vi, true);
d->moveCursorUpdatedView = true;
} else {
- bool descend = style()->styleHint(QStyle::SH_ItemView_ArrowKeysNavigateIntoChildren, 0, this);
+ bool descend = style()->styleHint(QStyle::SH_ItemView_ArrowKeysNavigateIntoChildren, nullptr, this);
if (descend) {
QModelIndex idx = d->modelIndex(d->below(vi));
if (idx.parent() == current)
@@ -3051,7 +3051,7 @@ void QTreeViewPrivate::initialize()
header->setDefaultAlignment(Qt::AlignLeft|Qt::AlignVCenter);
q->setHeader(header);
#if QT_CONFIG(animation)
- animationsEnabled = q->style()->styleHint(QStyle::SH_Widget_Animation_Duration, 0, q) > 0;
+ animationsEnabled = q->style()->styleHint(QStyle::SH_Widget_Animation_Duration, nullptr, q) > 0;
QObject::connect(&animatedOperation, SIGNAL(finished()), q, SLOT(_q_endAnimatedOperation()));
#endif // animation
}
@@ -3344,7 +3344,7 @@ void QTreeViewPrivate::layout(int i, bool recursiveExpanding, bool afterIsUninit
int hidden = 0;
int last = 0;
int children = 0;
- QTreeViewItem *item = 0;
+ QTreeViewItem *item = nullptr;
for (int j = first; j < first + count; ++j) {
current = model->index(j - first, 0, parent);
if (isRowHidden(current)) {
@@ -3955,7 +3955,7 @@ int QTreeViewPrivate::accessibleTree2Index(const QModelIndex &index) const
void QTreeViewPrivate::updateIndentationFromStyle()
{
Q_Q(const QTreeView);
- indent = q->style()->pixelMetric(QStyle::PM_TreeViewIndentation, 0, q);
+ indent = q->style()->pixelMetric(QStyle::PM_TreeViewIndentation, nullptr, q);
}
/*!
diff --git a/src/widgets/itemviews/qtreewidget.cpp b/src/widgets/itemviews/qtreewidget.cpp
index 6d0909108b..ddb31523fd 100644
--- a/src/widgets/itemviews/qtreewidget.cpp
+++ b/src/widgets/itemviews/qtreewidget.cpp
@@ -144,7 +144,7 @@ QTreeModel::~QTreeModel()
clear();
headerItem->view = nullptr;
delete headerItem;
- rootItem->view = 0;
+ rootItem->view = nullptr;
delete rootItem;
}
@@ -160,8 +160,8 @@ void QTreeModel::clear()
beginResetModel();
for (int i = 0; i < rootItem->childCount(); ++i) {
QTreeWidgetItem *item = rootItem->children.at(i);
- item->par = 0;
- item->view = 0;
+ item->par = nullptr;
+ item->view = nullptr;
delete item;
}
rootItem->children.clear();
@@ -214,7 +214,7 @@ void QTreeModel::setColumnCount(int columns)
QTreeWidgetItem *QTreeModel::item(const QModelIndex &index) const
{
if (!index.isValid())
- return 0;
+ return nullptr;
return static_cast<QTreeWidgetItem*>(index.internalPointer());
}
@@ -515,9 +515,9 @@ bool QTreeModel::removeRows(int row, int count, const QModelIndex &parent) {
for (int i = row + count - 1; i >= row; --i) {
QTreeWidgetItem *child = itm ? itm->takeChild(i) : rootItem->children.takeAt(i);
Q_ASSERT(child);
- child->view = 0;
+ child->view = nullptr;
delete child;
- child = 0;
+ child = nullptr;
}
blocker.unblock();
@@ -1285,6 +1285,8 @@ bool QTreeWidgetItem::isFirstColumnSpanned() const
Sets the background brush of the label in the given \a column to the
specified \a brush.
+ Setting a default-constructed brush will let the view use the
+ default color from the style.
\note If \l{Qt Style Sheets} are used on the same widget as setBackground(),
style sheets will take precedence if the settings conflict.
@@ -1314,6 +1316,8 @@ bool QTreeWidgetItem::isFirstColumnSpanned() const
Returns the brush used to render the foreground (e.g. text) of the
specified \a column.
+ Setting a default-constructed brush will let the view use the
+ default color from the style.
\sa background()
*/
@@ -1357,8 +1361,8 @@ bool QTreeWidgetItem::isFirstColumnSpanned() const
\since 4.1
Sets the size hint for the tree item in the given \a column to be \a size.
- If no size hint is set, the item delegate will compute the size hint based
- on the item data.
+ If no size hint is set or \a size is invalid, the item
+ delegate will compute the size hint based on the item data.
*/
/*!
@@ -1608,11 +1612,11 @@ QTreeWidgetItem::~QTreeWidgetItem()
}
} else if (model) {
if (this == model->headerItem) {
- model->headerItem = 0;
+ model->headerItem = nullptr;
} else {
int i = model->rootItem->children.indexOf(this);
if (i >= 0) {
- model->beginRemoveItems(0, i, 1);
+ model->beginRemoveItems(nullptr, i, 1);
// users _could_ do changes when connected to rowsAboutToBeRemoved,
// so we check again to make sure 'i' is valid
if (!model->rootItem->children.isEmpty() && model->rootItem->children.at(i) == this)
@@ -1626,9 +1630,9 @@ QTreeWidgetItem::~QTreeWidgetItem()
for (int i = 0; i < children.count(); ++i) {
QTreeWidgetItem *child = children.at(i);
// make sure the child does not try to remove itself from our children list
- child->par = 0;
+ child->par = nullptr;
// make sure the child does not try to remove itself from the top level list
- child->view = 0;
+ child->view = nullptr;
delete child;
}
@@ -1644,16 +1648,16 @@ QTreeWidgetItem::~QTreeWidgetItem()
*/
QTreeWidgetItem *QTreeWidgetItem::clone() const
{
- QTreeWidgetItem *copy = 0;
+ QTreeWidgetItem *copy = nullptr;
QStack<const QTreeWidgetItem*> stack;
QStack<QTreeWidgetItem*> parentStack;
stack.push(this);
parentStack.push(0);
- QTreeWidgetItem *root = 0;
- const QTreeWidgetItem *item = 0;
- QTreeWidgetItem *parent = 0;
+ QTreeWidgetItem *root = nullptr;
+ const QTreeWidgetItem *item = nullptr;
+ QTreeWidgetItem *parent = nullptr;
while (!stack.isEmpty()) {
// get current item, and copied parent
item = stack.pop();
@@ -1988,8 +1992,8 @@ void QTreeWidgetItem::write(QDataStream &out) const
\sa data(), flags()
*/
QTreeWidgetItem::QTreeWidgetItem(const QTreeWidgetItem &other)
- : rtti(Type), values(other.values), view(0),
- d(new QTreeWidgetItemPrivate(this)), par(0),
+ : rtti(Type), values(other.values), view(nullptr),
+ d(new QTreeWidgetItemPrivate(this)), par(nullptr),
itemFlags(other.itemFlags)
{
d->display = other.d->display;
@@ -2032,14 +2036,14 @@ void QTreeWidgetItem::addChild(QTreeWidgetItem *child)
*/
void QTreeWidgetItem::insertChild(int index, QTreeWidgetItem *child)
{
- if (index < 0 || index > children.count() || child == 0 || child->view != 0 || child->par != 0)
+ if (index < 0 || index > children.count() || child == nullptr || child->view != nullptr || child->par != nullptr)
return;
if (QTreeModel *model = treeModel()) {
const bool wasSkipSort = model->skipPendingSort;
model->skipPendingSort = true;
if (model->rootItem == this)
- child->par = 0;
+ child->par = nullptr;
else
child->par = this;
if (view->isSortingEnabled()) {
@@ -2099,12 +2103,12 @@ QTreeWidgetItem *QTreeWidgetItem::takeChild(int index)
if (model) model->beginRemoveItems(this, index, 1);
d->updateHiddenStatus(children.at(index), false);
QTreeWidgetItem *item = children.takeAt(index);
- item->par = 0;
+ item->par = nullptr;
QStack<QTreeWidgetItem*> stack;
stack.push(item);
while (!stack.isEmpty()) {
QTreeWidgetItem *i = stack.pop();
- i->view = 0;
+ i->view = nullptr;
for (int c = 0; c < i->children.count(); ++c)
stack.push(i->children.at(c));
}
@@ -2112,7 +2116,7 @@ QTreeWidgetItem *QTreeWidgetItem::takeChild(int index)
if (model) model->endRemoveRows();
return item;
}
- return 0;
+ return nullptr;
}
/*!
@@ -2159,7 +2163,7 @@ void QTreeWidgetItem::insertChildren(int index, const QList<QTreeWidgetItem*> &c
stack.push(child);
}
if (model && (model->rootItem == this))
- child->par = 0;
+ child->par = nullptr;
else
child->par = this;
}
@@ -2202,12 +2206,12 @@ QList<QTreeWidgetItem*> QTreeWidgetItem::takeChildren()
if (model) model->beginRemoveItems(this, 0, children.count());
for (int n = 0; n < children.count(); ++n) {
QTreeWidgetItem *item = children.at(n);
- item->par = 0;
+ item->par = nullptr;
QStack<QTreeWidgetItem*> stack;
stack.push(item);
while (!stack.isEmpty()) {
QTreeWidgetItem *i = stack.pop();
- i->view = 0;
+ i->view = nullptr;
for (int c = 0; c < i->children.count(); ++c)
stack.push(i->children.at(c));
}
@@ -3302,7 +3306,7 @@ QTreeWidgetItem *QTreeWidget::itemAbove(const QTreeWidgetItem *item) const
{
Q_D(const QTreeWidget);
if (item == d->treeModel()->headerItem)
- return 0;
+ return nullptr;
const QModelIndex index = d->index(item);
const QModelIndex above = indexAbove(index);
return d->item(above);
@@ -3317,7 +3321,7 @@ QTreeWidgetItem *QTreeWidget::itemBelow(const QTreeWidgetItem *item) const
{
Q_D(const QTreeWidget);
if (item == d->treeModel()->headerItem)
- return 0;
+ return nullptr;
const QModelIndex index = d->index(item);
const QModelIndex below = indexBelow(index);
return d->item(below);
@@ -3420,14 +3424,14 @@ QMimeData *QTreeWidget::mimeData(const QList<QTreeWidgetItem*> items) const
for (const auto *item : items) {
if (Q_UNLIKELY(!item)) {
qWarning("QTreeWidget::mimeData: Null-item passed");
- return 0;
+ return nullptr;
}
for (int c = 0; c < item->values.count(); ++c) {
const QModelIndex index = indexFromItem(item, c);
if (Q_UNLIKELY(!index.isValid())) {
qWarning() << "QTreeWidget::mimeData: No index associated with item :" << item;
- return 0;
+ return nullptr;
}
indexes << index;
}
diff --git a/src/widgets/itemviews/qtreewidget.h b/src/widgets/itemviews/qtreewidget.h
index bed77b336d..b9543fb954 100644
--- a/src/widgets/itemviews/qtreewidget.h
+++ b/src/widgets/itemviews/qtreewidget.h
@@ -146,7 +146,7 @@ public:
inline QBrush background(int column) const
{ return qvariant_cast<QBrush>(data(column, Qt::BackgroundRole)); }
inline void setBackground(int column, const QBrush &brush)
- { setData(column, Qt::BackgroundRole, brush); }
+ { setData(column, Qt::BackgroundRole, brush.style() != Qt::NoBrush ? QVariant(brush) : QVariant()); }
#if QT_DEPRECATED_SINCE(5, 13)
QT_DEPRECATED_X ("Use QTreeWidgetItem::foreground() instead")
@@ -160,7 +160,7 @@ public:
inline QBrush foreground(int column) const
{ return qvariant_cast<QBrush>(data(column, Qt::ForegroundRole)); }
inline void setForeground(int column, const QBrush &brush)
- { setData(column, Qt::ForegroundRole, brush); }
+ { setData(column, Qt::ForegroundRole, brush.style() != Qt::NoBrush ? QVariant(brush) : QVariant()); }
inline Qt::CheckState checkState(int column) const
{ return static_cast<Qt::CheckState>(data(column, Qt::CheckStateRole).toInt()); }
@@ -170,7 +170,7 @@ public:
inline QSize sizeHint(int column) const
{ return qvariant_cast<QSize>(data(column, Qt::SizeHintRole)); }
inline void setSizeHint(int column, const QSize &size)
- { setData(column, Qt::SizeHintRole, size); }
+ { setData(column, Qt::SizeHintRole, size.isValid() ? QVariant(size) : QVariant()); }
virtual QVariant data(int column, int role) const;
virtual void setData(int column, int role, const QVariant &value);
diff --git a/src/widgets/itemviews/qtreewidgetitemiterator.cpp b/src/widgets/itemviews/qtreewidgetitemiterator.cpp
index 14c19fcb9c..a24106d90e 100644
--- a/src/widgets/itemviews/qtreewidgetitemiterator.cpp
+++ b/src/widgets/itemviews/qtreewidgetitemiterator.cpp
@@ -90,7 +90,7 @@ QTreeWidgetItemIterator::QTreeWidgetItemIterator(const QTreeWidgetItemIterator &
*/
QTreeWidgetItemIterator::QTreeWidgetItemIterator(QTreeWidget *widget, IteratorFlags flags)
-: current(0), flags(flags)
+: current(nullptr), flags(flags)
{
Q_ASSERT(widget);
QTreeModel *model = qobject_cast<QTreeModel*>(widget->model());
@@ -266,7 +266,7 @@ bool QTreeWidgetItemIterator::matchesFlags(const QTreeWidgetItem *item) const
QTreeWidgetItem* QTreeWidgetItemIteratorPrivate::nextSibling(const QTreeWidgetItem* item) const
{
Q_ASSERT(item);
- QTreeWidgetItem *next = 0;
+ QTreeWidgetItem *next = nullptr;
if (QTreeWidgetItem *par = item->parent()) {
int i = par->indexOfChild(const_cast<QTreeWidgetItem*>(item));
next = par->child(i + 1);
@@ -280,9 +280,9 @@ QTreeWidgetItem* QTreeWidgetItemIteratorPrivate::nextSibling(const QTreeWidgetIt
QTreeWidgetItem *QTreeWidgetItemIteratorPrivate::next(const QTreeWidgetItem *current)
{
- if (!current) return 0;
+ if (!current) return nullptr;
- QTreeWidgetItem *next = 0;
+ QTreeWidgetItem *next = nullptr;
if (current->childCount()) {
// walk the child
m_parentIndex.push(m_currentIndex);
@@ -307,9 +307,9 @@ QTreeWidgetItem *QTreeWidgetItemIteratorPrivate::next(const QTreeWidgetItem *cur
QTreeWidgetItem *QTreeWidgetItemIteratorPrivate::previous(const QTreeWidgetItem *current)
{
- if (!current) return 0;
+ if (!current) return nullptr;
- QTreeWidgetItem *prev = 0;
+ QTreeWidgetItem *prev = nullptr;
// walk the previous sibling
QTreeWidgetItem *parent = current->parent();
prev = parent ? parent->child(m_currentIndex - 1)
@@ -347,7 +347,7 @@ void QTreeWidgetItemIteratorPrivate::ensureValidIterator(const QTreeWidgetItem *
// we need to adjust the iterator.
if (nextItem == itemToBeRemoved) {
QTreeWidgetItem *parent = nextItem;
- nextItem = 0;
+ nextItem = nullptr;
while (parent && !nextItem) {
nextItem = nextSibling(parent);
parent = parent->parent();
@@ -358,7 +358,7 @@ void QTreeWidgetItemIteratorPrivate::ensureValidIterator(const QTreeWidgetItem *
if (!(q->matchesFlags(nextItem))) ++(*q);
} else {
// set it to null.
- q->current = 0;
+ q->current = nullptr;
m_parentIndex.clear();
return;
}
diff --git a/src/widgets/kernel/qaction.cpp b/src/widgets/kernel/qaction.cpp
index 19ad65692b..64b0d69f6d 100644
--- a/src/widgets/kernel/qaction.cpp
+++ b/src/widgets/kernel/qaction.cpp
@@ -658,7 +658,7 @@ void QAction::setMenu(QMenu *menu)
{
Q_D(QAction);
if (d->menu)
- d->menu->d_func()->setOverrideMenuAction(0); //we reset the default action of any previous menu
+ d->menu->d_func()->setOverrideMenuAction(nullptr); //we reset the default action of any previous menu
d->menu = menu;
if (menu)
menu->d_func()->setOverrideMenuAction(this);
diff --git a/src/widgets/kernel/qaction.h b/src/widgets/kernel/qaction.h
index f7693f4dde..258a1ea0a0 100644
--- a/src/widgets/kernel/qaction.h
+++ b/src/widgets/kernel/qaction.h
@@ -63,7 +63,7 @@ class Q_WIDGETS_EXPORT QAction : public QObject
Q_DECLARE_PRIVATE(QAction)
Q_PROPERTY(bool checkable READ isCheckable WRITE setCheckable NOTIFY changed)
- Q_PROPERTY(bool checked READ isChecked WRITE setChecked DESIGNABLE isCheckable NOTIFY toggled)
+ Q_PROPERTY(bool checked READ isChecked WRITE setChecked NOTIFY toggled)
Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled NOTIFY changed)
Q_PROPERTY(QIcon icon READ icon WRITE setIcon NOTIFY changed)
Q_PROPERTY(QString text READ text WRITE setText NOTIFY changed)
diff --git a/src/widgets/kernel/qactiongroup.cpp b/src/widgets/kernel/qactiongroup.cpp
index 1d9213de0c..5dc12c48a4 100644
--- a/src/widgets/kernel/qactiongroup.cpp
+++ b/src/widgets/kernel/qactiongroup.cpp
@@ -81,7 +81,7 @@ void QActionGroupPrivate::_q_actionChanged()
current = action;
}
} else if (action == current) {
- current = 0;
+ current = nullptr;
}
}
}
@@ -271,11 +271,11 @@ void QActionGroup::removeAction(QAction *action)
Q_D(QActionGroup);
if (d->actions.removeAll(action)) {
if (action == d->current)
- d->current = 0;
+ d->current = nullptr;
QObject::disconnect(action, SIGNAL(triggered()), this, SLOT(_q_actionTriggered()));
QObject::disconnect(action, SIGNAL(changed()), this, SLOT(_q_actionChanged()));
QObject::disconnect(action, SIGNAL(hovered()), this, SLOT(_q_actionHovered()));
- action->d_func()->group = 0;
+ action->d_func()->group = nullptr;
}
}
diff --git a/src/widgets/kernel/qapplication.cpp b/src/widgets/kernel/qapplication.cpp
index dfa1bc23b1..57771b3e12 100644
--- a/src/widgets/kernel/qapplication.cpp
+++ b/src/widgets/kernel/qapplication.cpp
@@ -138,7 +138,7 @@ QT_BEGIN_NAMESPACE
Q_CORE_EXPORT void qt_call_post_routines();
Q_GUI_EXPORT bool qt_sendShortcutOverrideEvent(QObject *o, ulong timestamp, int k, Qt::KeyboardModifiers mods, const QString &text = QString(), bool autorep = false, ushort count = 1);
-QApplicationPrivate *QApplicationPrivate::self = 0;
+QApplicationPrivate *QApplicationPrivate::self = nullptr;
static void initSystemPalette()
{
@@ -158,7 +158,7 @@ static void initSystemPalette()
static void clearSystemPalette()
{
delete QApplicationPrivate::sys_pal;
- QApplicationPrivate::sys_pal = 0;
+ QApplicationPrivate::sys_pal = nullptr;
}
bool QApplicationPrivate::autoSipEnabled = true;
@@ -169,8 +169,8 @@ QApplicationPrivate::QApplicationPrivate(int &argc, char **argv, int flags)
application_type = QApplicationPrivate::Gui;
#ifndef QT_NO_GESTURES
- gestureManager = 0;
- gestureWidget = 0;
+ gestureManager = nullptr;
+ gestureWidget = nullptr;
#endif // QT_NO_GESTURES
if (!self)
@@ -180,7 +180,7 @@ QApplicationPrivate::QApplicationPrivate(int &argc, char **argv, int flags)
QApplicationPrivate::~QApplicationPrivate()
{
if (self == this)
- self = 0;
+ self = nullptr;
}
void QApplicationPrivate::createEventDispatcher()
@@ -357,7 +357,7 @@ QWidget *QApplication::topLevelAt(const QPoint &pos)
if (const QWidgetWindow *widgetWindow = qobject_cast<const QWidgetWindow *>(window))
return widgetWindow->widget();
}
- return 0;
+ return nullptr;
}
/*!
@@ -372,22 +372,22 @@ QWidget *QApplication::topLevelAt(const QPoint &pos)
void qt_init_tooltip_palette();
void qt_cleanup();
-QStyle *QApplicationPrivate::app_style = 0; // default application style
+QStyle *QApplicationPrivate::app_style = nullptr; // default application style
#ifndef QT_NO_STYLE_STYLESHEET
QString QApplicationPrivate::styleSheet; // default application stylesheet
#endif
-QPointer<QWidget> QApplicationPrivate::leaveAfterRelease = 0;
+QPointer<QWidget> QApplicationPrivate::leaveAfterRelease = nullptr;
-QPalette *QApplicationPrivate::sys_pal = 0; // default system palette
-QPalette *QApplicationPrivate::set_pal = 0; // default palette set by programmer
+QPalette *QApplicationPrivate::sys_pal = nullptr; // default system palette
+QPalette *QApplicationPrivate::set_pal = nullptr; // default palette set by programmer
-QFont *QApplicationPrivate::sys_font = 0; // default system font
-QFont *QApplicationPrivate::set_font = 0; // default font set by programmer
+QFont *QApplicationPrivate::sys_font = nullptr; // default system font
+QFont *QApplicationPrivate::set_font = nullptr; // default font set by programmer
-QWidget *QApplicationPrivate::main_widget = 0; // main application widget
-QWidget *QApplicationPrivate::focus_widget = 0; // has keyboard input focus
-QWidget *QApplicationPrivate::hidden_focus_widget = 0; // will get keyboard input focus after show()
-QWidget *QApplicationPrivate::active_window = 0; // toplevel with keyboard focus
+QWidget *QApplicationPrivate::main_widget = nullptr; // main application widget
+QWidget *QApplicationPrivate::focus_widget = nullptr; // has keyboard input focus
+QWidget *QApplicationPrivate::hidden_focus_widget = nullptr; // will get keyboard input focus after show()
+QWidget *QApplicationPrivate::active_window = nullptr; // toplevel with keyboard focus
#if QT_CONFIG(wheelevent)
QPointer<QWidget> QApplicationPrivate::wheel_widget;
#endif
@@ -419,9 +419,9 @@ Q_GLOBAL_STATIC(FontHash, app_fonts)
PaletteHash *qt_app_palettes_hash() { return app_palettes(); }
FontHash *qt_app_fonts_hash() { return app_fonts(); }
-QWidgetList *QApplicationPrivate::popupWidgets = 0; // has keyboard input focus
+QWidgetList *QApplicationPrivate::popupWidgets = nullptr; // has keyboard input focus
-QDesktopWidget *qt_desktopWidget = 0; // root window widgets
+QDesktopWidget *qt_desktopWidget = nullptr; // root window widgets
/*!
\internal
@@ -434,7 +434,7 @@ void QApplicationPrivate::process_cmdline()
if (!styleOverride.isEmpty()) {
if (app_style) {
delete app_style;
- app_style = 0;
+ app_style = nullptr;
}
}
@@ -473,7 +473,7 @@ void QApplicationPrivate::process_cmdline()
}
if(j < argc) {
- argv[j] = 0;
+ argv[j] = nullptr;
argc = j;
}
}
@@ -620,7 +620,7 @@ void QApplicationPrivate::initialize()
static void setPossiblePalette(const QPalette *palette, const char *className)
{
- if (palette == 0)
+ if (palette == nullptr)
return;
QApplicationPrivate::setPalette_helper(*palette, className, false);
}
@@ -746,7 +746,7 @@ QWidget *QApplication::activePopupWidget()
QWidget *QApplication::activeModalWidget()
{
QWidgetWindow *widgetWindow = qobject_cast<QWidgetWindow *>(modalWindow());
- return widgetWindow ? widgetWindow->widget() : 0;
+ return widgetWindow ? widgetWindow->widget() : nullptr;
}
/*!
@@ -769,12 +769,12 @@ QApplication::~QApplication()
QApplicationPrivate::is_app_running = false;
delete QWidgetPrivate::mapper;
- QWidgetPrivate::mapper = 0;
+ QWidgetPrivate::mapper = nullptr;
// delete all widgets
if (QWidgetPrivate::allWidgets) {
QWidgetSet *mySet = QWidgetPrivate::allWidgets;
- QWidgetPrivate::allWidgets = 0;
+ QWidgetPrivate::allWidgets = nullptr;
for (QWidgetSet::ConstIterator it = mySet->constBegin(), cend = mySet->constEnd(); it != cend; ++it) {
QWidget *w = *it;
if (!w->parent()) // window
@@ -784,23 +784,23 @@ QApplication::~QApplication()
}
delete qt_desktopWidget;
- qt_desktopWidget = 0;
+ qt_desktopWidget = nullptr;
delete QApplicationPrivate::app_pal;
- QApplicationPrivate::app_pal = 0;
+ QApplicationPrivate::app_pal = nullptr;
clearSystemPalette();
delete QApplicationPrivate::set_pal;
- QApplicationPrivate::set_pal = 0;
+ QApplicationPrivate::set_pal = nullptr;
app_palettes()->clear();
delete QApplicationPrivate::sys_font;
- QApplicationPrivate::sys_font = 0;
+ QApplicationPrivate::sys_font = nullptr;
delete QApplicationPrivate::set_font;
- QApplicationPrivate::set_font = 0;
+ QApplicationPrivate::set_font = nullptr;
app_fonts()->clear();
delete QApplicationPrivate::app_style;
- QApplicationPrivate::app_style = 0;
+ QApplicationPrivate::app_style = nullptr;
#if QT_CONFIG(draganddrop)
if (qt_is_gui_used)
@@ -846,7 +846,7 @@ void qt_cleanup()
QPixmapCache::clear();
QColormap::cleanup();
- QApplicationPrivate::active_window = 0; //### this should not be necessary
+ QApplicationPrivate::active_window = nullptr; //### this should not be necessary
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
#if defined(Q_OS_WIN) && !defined(Q_OS_WINRT)
if (displayDC) {
@@ -892,7 +892,7 @@ QWidget *QApplication::widgetAt(const QPoint &p)
QRegion newmask = (oldmask.isEmpty() ? QRegion(window->rect()) : oldmask)
- QRegion(wpoint.x(), wpoint.y(), 1, 1);
window->setMask(newmask);
- QWidget *recurse = 0;
+ QWidget *recurse = nullptr;
if (QApplication::topLevelAt(p) != window) // verify recursion will terminate
recurse = widgetAt(x, y);
if (oldmask.isEmpty())
@@ -925,7 +925,7 @@ bool QApplication::compressEvent(QEvent *event, QObject *receiver, QPostEventLis
|| event->type() == QEvent::LanguageChange)) {
for (QPostEventList::const_iterator it = postedEvents->constBegin(); it != postedEvents->constEnd(); ++it) {
const QPostEvent &cur = *it;
- if (cur.receiver != receiver || cur.event == 0 || cur.event->type() != event->type())
+ if (cur.receiver != receiver || cur.event == nullptr || cur.event->type() != event->type())
continue;
if (cur.event->type() == QEvent::LayoutRequest
|| cur.event->type() == QEvent::UpdateRequest) {
@@ -1020,7 +1020,7 @@ QStyle *QApplication::style()
return QApplicationPrivate::app_style;
if (!qobject_cast<QApplication *>(QCoreApplication::instance())) {
Q_ASSERT(!"No style available without QApplication!");
- return 0;
+ return nullptr;
}
if (!QApplicationPrivate::app_style) {
@@ -1048,7 +1048,7 @@ QStyle *QApplication::style()
}
if (!app_style) {
Q_ASSERT(!"No styles available!");
- return 0;
+ return nullptr;
}
}
// take ownership of the style
@@ -1202,7 +1202,7 @@ QStyle* QApplication::setStyle(const QString& style)
{
QStyle *s = QStyleFactory::create(style);
if (!s)
- return 0;
+ return nullptr;
setStyle(s);
return s;
@@ -1695,7 +1695,7 @@ void QApplicationPrivate::setFocusWidget(QWidget *focus, Qt::FocusReason reason)
return;
#endif
- hidden_focus_widget = 0;
+ hidden_focus_widget = nullptr;
if (focus != focus_widget) {
if (focus && focus->isHidden()) {
@@ -1893,7 +1893,7 @@ bool QApplication::event(QEvent *e)
#endif
} else if (e->type() == QEvent::Timer) {
QTimerEvent *te = static_cast<QTimerEvent*>(e);
- Q_ASSERT(te != 0);
+ Q_ASSERT(te != nullptr);
if (te->timerId() == d->toolTipWakeUp.timerId()) {
d->toolTipWakeUp.stop();
if (d->toolTipWidget) {
@@ -1905,14 +1905,14 @@ bool QApplication::event(QEvent *e)
while (w && !showToolTip) {
showToolTip = w->isActiveWindow();
w = w->parentWidget();
- w = w ? w->window() : 0;
+ w = w ? w->window() : nullptr;
}
if (showToolTip) {
QHelpEvent e(QEvent::ToolTip, d->toolTipPos, d->toolTipGlobalPos);
QCoreApplication::sendEvent(d->toolTipWidget, &e);
if (e.isAccepted()) {
QStyle *s = d->toolTipWidget->style();
- int sleepDelay = s->styleHint(QStyle::SH_ToolTip_FallAsleepDelay, 0, d->toolTipWidget, 0);
+ int sleepDelay = s->styleHint(QStyle::SH_ToolTip_FallAsleepDelay, nullptr, d->toolTipWidget, nullptr);
d->toolTipFallAsleep.start(sleepDelay, this);
}
}
@@ -1982,7 +1982,7 @@ void QApplicationPrivate::notifyLayoutDirectionChange()
*/
void QApplication::setActiveWindow(QWidget* act)
{
- QWidget* window = act?act->window():0;
+ QWidget* window = act?act->window():nullptr;
if (QApplicationPrivate::active_window == window)
return;
@@ -1998,7 +1998,7 @@ void QApplication::setActiveWindow(QWidget* act)
QWidgetList toBeDeactivated;
if (QApplicationPrivate::active_window) {
- if (style()->styleHint(QStyle::SH_Widget_ShareActivation, 0, QApplicationPrivate::active_window)) {
+ if (style()->styleHint(QStyle::SH_Widget_ShareActivation, nullptr, QApplicationPrivate::active_window)) {
const QWidgetList list = topLevelWidgets();
for (auto *w : list) {
if (w->isVisible() && w->isActiveWindow())
@@ -2020,7 +2020,7 @@ void QApplication::setActiveWindow(QWidget* act)
QApplicationPrivate::active_window = window;
if (QApplicationPrivate::active_window) {
- if (style()->styleHint(QStyle::SH_Widget_ShareActivation, 0, QApplicationPrivate::active_window)) {
+ if (style()->styleHint(QStyle::SH_Widget_ShareActivation, nullptr, QApplicationPrivate::active_window)) {
const QWidgetList list = topLevelWidgets();
for (auto *w : list) {
if (w->isVisible() && w->isActiveWindow())
@@ -2049,10 +2049,10 @@ void QApplication::setActiveWindow(QWidget* act)
sendSpontaneousEvent(w, &activationChange);
}
- if (QApplicationPrivate::popupWidgets == 0) { // !inPopupMode()
+ if (QApplicationPrivate::popupWidgets == nullptr) { // !inPopupMode()
// then focus events
if (!QApplicationPrivate::active_window && QApplicationPrivate::focus_widget) {
- QApplicationPrivate::setFocusWidget(0, Qt::ActiveWindowFocusReason);
+ QApplicationPrivate::setFocusWidget(nullptr, Qt::ActiveWindowFocusReason);
} else if (QApplicationPrivate::active_window) {
QWidget *w = QApplicationPrivate::active_window->focusWidget();
if (w && w->isVisible() /*&& w->focusPolicy() != QWidget::NoFocus*/)
@@ -2067,7 +2067,7 @@ void QApplication::setActiveWindow(QWidget* act)
if (!w && QApplicationPrivate::active_window->focusPolicy() != Qt::NoFocus)
QApplicationPrivate::setFocusWidget(QApplicationPrivate::active_window, Qt::ActiveWindowFocusReason);
else if (!QApplicationPrivate::active_window->isAncestorOf(w))
- QApplicationPrivate::setFocusWidget(0, Qt::ActiveWindowFocusReason);
+ QApplicationPrivate::setFocusWidget(nullptr, Qt::ActiveWindowFocusReason);
}
}
}
@@ -2095,7 +2095,7 @@ QWidget *qt_tlw_for_window(QWindow *wnd)
return tlw;
}
}
- return 0;
+ return nullptr;
}
void QApplicationPrivate::notifyActiveWindowChange(QWindow *previous)
@@ -2158,7 +2158,7 @@ QWidget *QApplicationPrivate::focusNextPrevChild_helper(QWidget *toplevel, bool
test = test->d_func()->focus_next;
}
- if (wrappingOccurred != 0)
+ if (wrappingOccurred != nullptr)
*wrappingOccurred = next ? focusWidgetAfterWindow : !focusWidgetAfterWindow;
if (w == f) {
@@ -2166,7 +2166,7 @@ QWidget *QApplicationPrivate::focusNextPrevChild_helper(QWidget *toplevel, bool
w->window()->setAttribute(Qt::WA_KeyboardFocusChange);
w->update();
}
- return 0;
+ return nullptr;
}
return w;
}
@@ -2248,7 +2248,7 @@ void QApplicationPrivate::dispatchEnterLeave(QWidget* enter, QWidget* leave, con
QEvent leaveEvent(QEvent::Leave);
for (int i = 0; i < leaveList.size(); ++i) {
auto *w = leaveList.at(i);
- if (!QApplication::activeModalWidget() || QApplicationPrivate::tryModalHelper(w, 0)) {
+ if (!QApplication::activeModalWidget() || QApplicationPrivate::tryModalHelper(w, nullptr)) {
QCoreApplication::sendEvent(w, &leaveEvent);
if (w->testAttribute(Qt::WA_Hover) &&
(!QApplication::activePopupWidget() || QApplication::activePopupWidget() == w->window())) {
@@ -2267,7 +2267,7 @@ void QApplicationPrivate::dispatchEnterLeave(QWidget* enter, QWidget* leave, con
const QPoint windowPos = qAsConst(enterList).back()->window()->mapFromGlobal(globalPos);
for (auto it = enterList.crbegin(), end = enterList.crend(); it != end; ++it) {
auto *w = *it;
- if (!QApplication::activeModalWidget() || QApplicationPrivate::tryModalHelper(w, 0)) {
+ if (!QApplication::activeModalWidget() || QApplicationPrivate::tryModalHelper(w, nullptr)) {
const QPointF localPos = w->mapFromGlobal(globalPos);
QEnterEvent enterEvent(localPos, windowPos, globalPosF);
QCoreApplication::sendEvent(w, &enterEvent);
@@ -2287,7 +2287,7 @@ void QApplicationPrivate::dispatchEnterLeave(QWidget* enter, QWidget* leave, con
const bool enterOnAlien = (enter && (isAlien(enter) || enter->testAttribute(Qt::WA_DontShowOnScreen)));
// Whenever we leave an alien widget on X11/QPA, we need to reset its nativeParentWidget()'s cursor.
// This is not required on Windows as the cursor is reset on every single mouse move.
- QWidget *parentOfLeavingCursor = 0;
+ QWidget *parentOfLeavingCursor = nullptr;
for (int i = 0; i < leaveList.size(); ++i) {
auto *w = leaveList.at(i);
if (!isAlien(w))
@@ -2353,7 +2353,7 @@ bool QApplicationPrivate::isBlockedByModal(QWidget *widget)
bool QApplicationPrivate::isWindowBlocked(QWindow *window, QWindow **blockingWindow) const
{
- QWindow *unused = 0;
+ QWindow *unused = nullptr;
if (Q_UNLIKELY(!window)) {
qWarning().nospace() << "window == 0 passed.";
return false;
@@ -2362,13 +2362,13 @@ bool QApplicationPrivate::isWindowBlocked(QWindow *window, QWindow **blockingWin
blockingWindow = &unused;
if (modalWindowList.isEmpty()) {
- *blockingWindow = 0;
+ *blockingWindow = nullptr;
return false;
}
QWidget *popupWidget = QApplication::activePopupWidget();
- QWindow *popupWindow = popupWidget ? popupWidget->windowHandle() : 0;
+ QWindow *popupWindow = popupWidget ? popupWidget->windowHandle() : nullptr;
if (popupWindow == window || (!popupWindow && QWindowPrivate::get(window)->isPopup())) {
- *blockingWindow = 0;
+ *blockingWindow = nullptr;
return false;
}
@@ -2378,7 +2378,7 @@ bool QApplicationPrivate::isWindowBlocked(QWindow *window, QWindow **blockingWin
// A window is not blocked by another modal window if the two are
// the same, or if the window is a child of the modal window.
if (window == modalWindow || modalWindow->isAncestorOf(window, QWindow::IncludeTransients)) {
- *blockingWindow = 0;
+ *blockingWindow = nullptr;
return false;
}
@@ -2389,7 +2389,7 @@ bool QApplicationPrivate::isWindowBlocked(QWindow *window, QWindow **blockingWin
// modalWindow's widget, this normally happens when waiting for a
// native dialog. use WindowModal if we are the child of a group
// leader; otherwise use ApplicationModal.
- QWidget *m = modalWidgetWindow ? modalWidgetWindow->widget() : 0;
+ QWidget *m = modalWidgetWindow ? modalWidgetWindow->widget() : nullptr;
while (m && !m->testAttribute(Qt::WA_GroupLeader)) {
m = m->parentWidget();
if (m)
@@ -2404,13 +2404,13 @@ bool QApplicationPrivate::isWindowBlocked(QWindow *window, QWindow **blockingWin
case Qt::ApplicationModal:
{
QWidgetWindow *widgetWindow = qobject_cast<QWidgetWindow *>(window);
- QWidget *groupLeaderForWidget = widgetWindow ? widgetWindow->widget() : 0;
+ QWidget *groupLeaderForWidget = widgetWindow ? widgetWindow->widget() : nullptr;
while (groupLeaderForWidget && !groupLeaderForWidget->testAttribute(Qt::WA_GroupLeader))
groupLeaderForWidget = groupLeaderForWidget->parentWidget();
if (groupLeaderForWidget) {
// if \a widget has WA_GroupLeader, it can only be blocked by ApplicationModal children
- QWidget *m = modalWidgetWindow ? modalWidgetWindow->widget() : 0;
+ QWidget *m = modalWidgetWindow ? modalWidgetWindow->widget() : nullptr;
while (m && m != groupLeaderForWidget && !m->testAttribute(Qt::WA_GroupLeader))
m = m->parentWidget();
if (m == groupLeaderForWidget) {
@@ -2450,7 +2450,7 @@ bool QApplicationPrivate::isWindowBlocked(QWindow *window, QWindow **blockingWin
break;
}
}
- *blockingWindow = 0;
+ *blockingWindow = nullptr;
return false;
}
@@ -2474,7 +2474,7 @@ bool QApplicationPrivate::tryModalHelper(QWidget *widget, QWidget **rettop)
bool qt_try_modal(QWidget *widget, QEvent::Type type)
{
- QWidget * top = 0;
+ QWidget * top = nullptr;
if (QApplicationPrivate::tryModalHelper(widget, &top))
return true;
@@ -2499,7 +2499,7 @@ bool qt_try_modal(QWidget *widget, QEvent::Type type)
break;
}
- if (block_event && top && top->parentWidget() == 0)
+ if (block_event && top && top->parentWidget() == nullptr)
top->raise();
return !block_event;
@@ -2523,11 +2523,11 @@ QWidget *QApplicationPrivate::pickMouseReceiver(QWidget *candidate, const QPoint
QWidget *mouseGrabber = QWidget::mouseGrabber();
if (((type == QEvent::MouseMove && buttons) || (type == QEvent::MouseButtonRelease))
&& !buttonDown && !mouseGrabber) {
- return 0;
+ return nullptr;
}
if (alienWidget && alienWidget->internalWinId())
- alienWidget = 0;
+ alienWidget = nullptr;
QWidget *receiver = candidate;
@@ -2560,7 +2560,7 @@ bool QApplicationPrivate::sendMouseEvent(QWidget *receiver, QMouseEvent *event,
Q_ASSERT(buttonDown);
if (alienWidget && !isAlien(alienWidget))
- alienWidget = 0;
+ alienWidget = nullptr;
QPointer<QWidget> receiverGuard = receiver;
QPointer<QWidget> nativeGuard = nativeWidget;
@@ -2575,7 +2575,7 @@ bool QApplicationPrivate::sendMouseEvent(QWidget *receiver, QMouseEvent *event,
// leaveAfterRelease has not been updated.
// This happens e.g. when modal dialog or popup is shown as a response to button click.
if (leaveAfterRelease && !*buttonDown && !event->buttons())
- leaveAfterRelease = 0;
+ leaveAfterRelease = nullptr;
if (*buttonDown) {
if (!graphicsWidget) {
@@ -2584,7 +2584,7 @@ bool QApplicationPrivate::sendMouseEvent(QWidget *receiver, QMouseEvent *event,
if ((alienWidget || !receiver->internalWinId()) && !leaveAfterRelease && !QWidget::mouseGrabber())
leaveAfterRelease = *buttonDown;
if (event->type() == QEvent::MouseButtonRelease && !event->buttons())
- *buttonDown = 0;
+ *buttonDown = nullptr;
}
} else if (lastMouseReceiver && widgetUnderMouse) {
// Dispatch enter/leave if we move:
@@ -2612,7 +2612,7 @@ bool QApplicationPrivate::sendMouseEvent(QWidget *receiver, QMouseEvent *event,
// We need this quard in case someone opens a modal dialog / popup. If that's the case
// leaveAfterRelease is set to null, but we shall not update lastMouseReceiver.
- const bool wasLeaveAfterRelease = leaveAfterRelease != 0;
+ const bool wasLeaveAfterRelease = leaveAfterRelease != nullptr;
bool result = true;
// This code is used for sending the synthetic enter/leave events for cases where it is needed
// due to other events causing the widget under the mouse to change. However in those cases
@@ -2630,18 +2630,18 @@ bool QApplicationPrivate::sendMouseEvent(QWidget *receiver, QMouseEvent *event,
// Dispatch enter/leave if:
// 1) the mouse grabber is an alien widget
// 2) the button is released on an alien widget
- QWidget *enter = 0;
+ QWidget *enter = nullptr;
if (nativeGuard)
enter = alienGuard ? alienWidget : nativeWidget;
else // The receiver is typically deleted on mouse release with drag'n'drop.
enter = QApplication::widgetAt(event->globalPos());
dispatchEnterLeave(enter, leaveAfterRelease, event->screenPos());
- leaveAfterRelease = 0;
+ leaveAfterRelease = nullptr;
lastMouseReceiver = enter;
} else if (!wasLeaveAfterRelease) {
if (activePopupWidget) {
if (!QWidget::mouseGrabber())
- lastMouseReceiver = alienGuard ? alienWidget : (nativeGuard ? nativeWidget : 0);
+ lastMouseReceiver = alienGuard ? alienWidget : (nativeGuard ? nativeWidget : nullptr);
} else {
lastMouseReceiver = receiverGuard ? receiver : QApplication::widgetAt(event->globalPos());
}
@@ -2696,7 +2696,7 @@ void QApplicationPrivate::sendSyntheticEnterLeave(QWidget *widget)
return; // Mouse cursor not inside the widget or any of its children.
if (widget->data->in_destructor && qt_button_down == widget)
- qt_button_down = 0;
+ qt_button_down = nullptr;
// A mouse move is not actually sent, but we utilize the sendMouseEvent() call to send the
// enter/leave events as appropriate
@@ -3048,9 +3048,9 @@ bool QApplication::notify(QObject *receiver, QEvent *e)
key->accept();
else
key->ignore();
- QWidget *w = isWidget ? static_cast<QWidget *>(receiver) : 0;
+ QWidget *w = isWidget ? static_cast<QWidget *>(receiver) : nullptr;
#if QT_CONFIG(graphicsview)
- QGraphicsWidget *gw = isGraphicsWidget ? static_cast<QGraphicsWidget *>(receiver) : 0;
+ QGraphicsWidget *gw = isGraphicsWidget ? static_cast<QGraphicsWidget *>(receiver) : nullptr;
#endif
res = d->notify_helper(receiver, e);
@@ -3112,7 +3112,7 @@ bool QApplication::notify(QObject *receiver, QEvent *e)
d->toolTipPos = relpos;
d->toolTipGlobalPos = mouse->globalPos();
QStyle *s = d->toolTipWidget->style();
- int wakeDelay = s->styleHint(QStyle::SH_ToolTip_WakeUpDelay, 0, d->toolTipWidget, 0);
+ int wakeDelay = s->styleHint(QStyle::SH_ToolTip_WakeUpDelay, nullptr, d->toolTipWidget, nullptr);
d->toolTipWakeUp.start(d->toolTipFallAsleep.isActive() ? 20 : wakeDelay, this);
}
}
@@ -3442,7 +3442,7 @@ QT_WARNING_POP
&& !isProxyWidget
#endif
)
- QDragManager::self()->setCurrentTarget(0, e->type() == QEvent::Drop);
+ QDragManager::self()->setCurrentTarget(nullptr, e->type() == QEvent::Drop);
}
break;
#endif
@@ -3473,7 +3473,7 @@ QT_WARNING_POP
eventAccepted = touchEvent->isAccepted();
if (p.isNull()) {
// widget was deleted
- widget = 0;
+ widget = nullptr;
} else {
widget->setAttribute(Qt::WA_WState_AcceptedTouchBeginEvent, res && eventAccepted);
}
@@ -3660,7 +3660,7 @@ bool QApplicationPrivate::notify_helper(QObject *receiver, QEvent * e)
// send to all application event filters
if (threadRequiresCoreApplication()
- && receiver->d_func()->threadData->thread.loadAcquire() == mainThread()
+ && receiver->d_func()->threadData.loadRelaxed()->thread.loadAcquire() == mainThread()
&& sendThroughApplicationEventFilters(receiver, e)) {
filtered = true;
return filtered;
@@ -3698,7 +3698,7 @@ bool QApplicationPrivate::notify_helper(QObject *receiver, QEvent * e)
bool QApplicationPrivate::inPopupMode()
{
- return QApplicationPrivate::popupWidgets != 0;
+ return QApplicationPrivate::popupWidgets != nullptr;
}
static void ungrabKeyboardForPopup(QWidget *popup)
@@ -3742,13 +3742,13 @@ void QApplicationPrivate::closePopup(QWidget *popup)
popupWidgets->removeAll(popup);
if (popup == qt_popup_down) {
- qt_button_down = 0;
- qt_popup_down = 0;
+ qt_button_down = nullptr;
+ qt_popup_down = nullptr;
}
if (QApplicationPrivate::popupWidgets->count() == 0) { // this was the last popup
delete QApplicationPrivate::popupWidgets;
- QApplicationPrivate::popupWidgets = 0;
+ QApplicationPrivate::popupWidgets = nullptr;
if (popupGrabOk) {
popupGrabOk = false;
@@ -4116,7 +4116,7 @@ void QApplicationPrivate::giveFocusAccordingToFocusPolicy(QWidget *widget, QEven
{
const bool setFocusOnRelease = QGuiApplication::styleHints()->setFocusOnTouchRelease();
Qt::FocusPolicy focusPolicy = Qt::ClickFocus;
- static QPointer<QWidget> focusedWidgetOnTouchBegin = 0;
+ static QPointer<QWidget> focusedWidgetOnTouchBegin = nullptr;
switch (event->type()) {
case QEvent::MouseButtonPress:
@@ -4223,7 +4223,7 @@ QWidget *QApplicationPrivate::findClosestTouchPointTarget(QTouchDevice *device,
{
const QPointF screenPos = touchPoint.screenPos();
int closestTouchPointId = -1;
- QObject *closestTarget = 0;
+ QObject *closestTarget = nullptr;
qreal closestDistance = qreal(0.);
QHash<ActiveTouchPointsKey, ActiveTouchPointsValue>::const_iterator it = activeTouchPoints.constBegin(),
ite = activeTouchPoints.constEnd();
@@ -4309,7 +4309,7 @@ bool QApplicationPrivate::translateRawTouchEvent(QWidget *window,
if (!target)
continue;
}
- Q_ASSERT(target.data() != 0);
+ Q_ASSERT(target.data() != nullptr);
QWidget *targetWidget = static_cast<QWidget *>(target.data());
@@ -4335,7 +4335,7 @@ bool QApplicationPrivate::translateRawTouchEvent(QWidget *window,
const QHash<QWidget *, StatesAndTouchPoints>::ConstIterator end = widgetsNeedingEvents.constEnd();
for (; it != end; ++it) {
const QPointer<QWidget> widget = it.key();
- if (!QApplicationPrivate::tryModalHelper(widget, 0))
+ if (!QApplicationPrivate::tryModalHelper(widget, nullptr))
continue;
QEvent::Type eventType;
@@ -4462,7 +4462,7 @@ QGestureManager* QGestureManager::instance(InstanceCreation ic)
{
QApplicationPrivate *qAppPriv = QApplicationPrivate::instance();
if (!qAppPriv)
- return 0;
+ return nullptr;
if (!qAppPriv->gestureManager && ic == ForceCreation)
qAppPriv->gestureManager = new QGestureManager(qApp);
return qAppPriv->gestureManager;
diff --git a/src/widgets/kernel/qboxlayout.cpp b/src/widgets/kernel/qboxlayout.cpp
index 76d8533271..7b09adfbf0 100644
--- a/src/widgets/kernel/qboxlayout.cpp
+++ b/src/widgets/kernel/qboxlayout.cpp
@@ -278,7 +278,7 @@ void QBoxLayoutPrivate::setupGeom()
int fixedSpacing = q->spacing();
int previousNonEmptyIndex = -1;
- QStyle *style = 0;
+ QStyle *style = nullptr;
if (fixedSpacing < 0) {
if (QWidget *parentWidget = q->parentWidget())
style = parentWidget->style();
@@ -318,7 +318,7 @@ void QBoxLayoutPrivate::setupGeom()
if (style) {
spacing = style->combinedLayoutSpacing(actual1, actual2,
horz(dir) ? Qt::Horizontal : Qt::Vertical,
- 0, q->parentWidget());
+ nullptr, q->parentWidget());
if (spacing < 0)
spacing = 0;
}
@@ -433,10 +433,10 @@ QLayoutItem* QBoxLayoutPrivate::replaceAt(int index, QLayoutItem *item)
{
Q_Q(QBoxLayout);
if (!item)
- return 0;
+ return nullptr;
QBoxLayoutItem *b = list.value(index);
if (!b)
- return 0;
+ return nullptr;
QLayoutItem *r = b->item;
b->item = item;
@@ -551,7 +551,7 @@ QLayoutItem* QBoxLayoutPrivate::replaceAt(int index, QLayoutItem *item)
\sa direction()
*/
QBoxLayout::QBoxLayout(Direction dir, QWidget *parent)
- : QLayout(*new QBoxLayoutPrivate, 0, parent)
+ : QLayout(*new QBoxLayoutPrivate, nullptr, parent)
{
Q_D(QBoxLayout);
d->dir = dir;
@@ -684,7 +684,7 @@ int QBoxLayout::minimumHeightForWidth(int w) const
Q_D(const QBoxLayout);
(void) heightForWidth(w);
int top, bottom;
- d->effectiveMargins(0, &top, 0, &bottom);
+ d->effectiveMargins(nullptr, &top, nullptr, &bottom);
return d->hasHfw ? (d->hfwMinHeight + top + bottom) : -1;
}
@@ -713,7 +713,7 @@ int QBoxLayout::count() const
QLayoutItem *QBoxLayout::itemAt(int index) const
{
Q_D(const QBoxLayout);
- return index >= 0 && index < d->list.count() ? d->list.at(index)->item : 0;
+ return index >= 0 && index < d->list.count() ? d->list.at(index)->item : nullptr;
}
/*!
@@ -723,16 +723,16 @@ QLayoutItem *QBoxLayout::takeAt(int index)
{
Q_D(QBoxLayout);
if (index < 0 || index >= d->list.count())
- return 0;
+ return nullptr;
QBoxLayoutItem *b = d->list.takeAt(index);
QLayoutItem *item = b->item;
- b->item = 0;
+ b->item = nullptr;
delete b;
if (QLayout *l = item->layout()) {
// sanity check in case the user passed something weird to QObject::setParent()
if (l->parent() == this)
- l->setParent(0);
+ l->setParent(nullptr);
}
invalidate();
@@ -1173,7 +1173,7 @@ void QBoxLayout::setDirection(Direction direction)
if (box->magic) {
QSpacerItem *sp = box->item->spacerItem();
if (sp) {
- if (sp->expandingDirections() == Qt::Orientations(0) /*No Direction*/) {
+ if (sp->expandingDirections() == Qt::Orientations{} /*No Direction*/) {
//spacing or strut
QSize s = sp->sizeHint();
sp->changeSize(s.height(), s.width(),
diff --git a/src/widgets/kernel/qdesktopwidget.cpp b/src/widgets/kernel/qdesktopwidget.cpp
index 9e90adec46..9f98af86e3 100644
--- a/src/widgets/kernel/qdesktopwidget.cpp
+++ b/src/widgets/kernel/qdesktopwidget.cpp
@@ -205,7 +205,7 @@ QT_WARNING_POP
}
QDesktopWidget::QDesktopWidget()
- : QWidget(*new QDesktopWidgetPrivate, 0, Qt::Desktop)
+ : QWidget(*new QDesktopWidgetPrivate, nullptr, Qt::Desktop)
{
Q_D(QDesktopWidget);
setObjectName(QLatin1String("desktop"));
diff --git a/src/widgets/kernel/qformlayout.cpp b/src/widgets/kernel/qformlayout.cpp
index 6f7527c013..4ffa226d7f 100644
--- a/src/widgets/kernel/qformlayout.cpp
+++ b/src/widgets/kernel/qformlayout.cpp
@@ -199,18 +199,17 @@ public:
ItemMatrix m_matrix;
QList<QFormLayoutItem *> m_things;
- int layoutWidth; // the last width that we called setupVerticalLayoutData on (for vLayouts)
+ int layoutWidth = -1; // the last width that we called setupVerticalLayoutData on (for vLayouts)
- int hfw_width; // the last width we calculated HFW for
- int hfw_height; // what that height was
- int hfw_minheight; // what that minheight was
+ int hfw_width = -1; // the last width we calculated HFW for
+ int hfw_height = -1; // what that height was
- int hfw_sh_height; // the hfw for sh_width
- int hfw_sh_minheight; // the minhfw for sh_width
+ int hfw_sh_height = -1; // the hfw for sh_width
+ int hfw_sh_minheight = -1; // the minhfw for sh_width
- int min_width; // the width that gets turned into minSize (from updateSizes)
- int sh_width; // the width that gets turned into prefSize (from updateSizes)
- int thresh_width; // the width that we start splitting label/field pairs at (from updateSizes)
+ int min_width = -1; // the width that gets turned into minSize (from updateSizes)
+ int sh_width = -1; // the width that gets turned into prefSize (from updateSizes)
+ int thresh_width = QLAYOUTSIZE_MAX; // the width that we start splitting label/field pairs at (from updateSizes)
QSize minSize;
QSize prefSize;
int formMaxWidth;
@@ -222,17 +221,15 @@ public:
QVector<QLayoutStruct> hfwLayouts;
- int hSpacing;
- int vSpacing;
+ int hSpacing = -1;
+ int vSpacing = -1;
QLayoutItem* replaceAt(int index, QLayoutItem*) override;
};
QFormLayoutPrivate::QFormLayoutPrivate()
: fieldGrowthPolicy(DefaultFieldGrowthPolicy),
rowWrapPolicy(DefaultRowWrapPolicy), has_hfw(false), dirty(true), sizesDirty(true),
- expandVertical(0), expandHorizontal(0), labelAlignment(0), formAlignment(0),
- layoutWidth(-1), hfw_width(-1), hfw_sh_height(-1), min_width(-1),
- sh_width(-1), thresh_width(QLAYOUTSIZE_MAX), hSpacing(-1), vSpacing(-1)
+ expandVertical(0), expandHorizontal(0)
{
}
@@ -298,11 +295,11 @@ void QFormLayoutPrivate::updateSizes()
bool expandH = false;
bool expandV = false;
- QFormLayoutItem *prevLbl = 0;
- QFormLayoutItem *prevFld = 0;
+ QFormLayoutItem *prevLbl = nullptr;
+ QFormLayoutItem *prevFld = nullptr;
QWidget *parent = q->parentWidget();
- QStyle *style = parent ? parent->style() : 0;
+ QStyle *style = parent ? parent->style() : nullptr;
int userVSpacing = q->verticalSpacing();
int userHSpacing = wrapAllRows ? 0 : q->horizontalSpacing();
@@ -367,9 +364,9 @@ void QFormLayoutPrivate::updateSizes()
QSizePolicy::ControlTypes fldtoptypes =
QSizePolicy::ControlTypes(fldtop ? fldtop->controlTypes() : QSizePolicy::DefaultType);
if (label && lbltop)
- label->vSpace = style->combinedLayoutSpacing(lbltoptypes, lbltypes, Qt::Vertical, 0, parent);
+ label->vSpace = style->combinedLayoutSpacing(lbltoptypes, lbltypes, Qt::Vertical, nullptr, parent);
if (field && fldtop)
- field->vSpace = style->combinedLayoutSpacing(fldtoptypes, fldtypes, Qt::Vertical, 0, parent);
+ field->vSpace = style->combinedLayoutSpacing(fldtoptypes, fldtypes, Qt::Vertical, nullptr, parent);
} else {
// Side by side.. we have to also consider the spacings to empty cells, which can strangely be more than
// non empty cells..
@@ -383,21 +380,21 @@ void QFormLayoutPrivate::updateSizes()
// To be compatible to QGridLayout, we have to compare solitary labels & fields with both predecessors
if (label) {
if (!field) {
- int lblspacing = style->combinedLayoutSpacing(lbltoptypes, lbltypes, Qt::Vertical, 0, parent);
- int fldspacing = style->combinedLayoutSpacing(fldtoptypes, lbltypes, Qt::Vertical, 0, parent);
+ int lblspacing = style->combinedLayoutSpacing(lbltoptypes, lbltypes, Qt::Vertical, nullptr, parent);
+ int fldspacing = style->combinedLayoutSpacing(fldtoptypes, lbltypes, Qt::Vertical, nullptr, parent);
label->vSpace = qMax(lblspacing, fldspacing);
} else
- label->vSpace = style->combinedLayoutSpacing(lbltoptypes, lbltypes, Qt::Vertical, 0, parent);
+ label->vSpace = style->combinedLayoutSpacing(lbltoptypes, lbltypes, Qt::Vertical, nullptr, parent);
}
if (field) {
// check spacing against both the previous label and field
if (!label) {
- int lblspacing = style->combinedLayoutSpacing(lbltoptypes, fldtypes, Qt::Vertical, 0, parent);
- int fldspacing = style->combinedLayoutSpacing(fldtoptypes, fldtypes, Qt::Vertical, 0, parent);
+ int lblspacing = style->combinedLayoutSpacing(lbltoptypes, fldtypes, Qt::Vertical, nullptr, parent);
+ int fldspacing = style->combinedLayoutSpacing(fldtoptypes, fldtypes, Qt::Vertical, nullptr, parent);
field->vSpace = qMax(lblspacing, fldspacing);
} else
- field->vSpace = style->combinedLayoutSpacing(fldtoptypes, fldtypes, Qt::Vertical, 0, parent);
+ field->vSpace = style->combinedLayoutSpacing(fldtoptypes, fldtypes, Qt::Vertical, nullptr, parent);
}
}
}
@@ -406,7 +403,7 @@ void QFormLayoutPrivate::updateSizes()
// hard-coded the left and right control types so that all the rows have the same
// inter-column spacing (otherwise the right column isn't always left aligned)
if (userHSpacing < 0 && !wrapAllRows && (label || !field->fullRow) && field)
- field->sbsHSpace = style->combinedLayoutSpacing(QSizePolicy::Label, QSizePolicy::LineEdit, Qt::Horizontal, 0, parent);
+ field->sbsHSpace = style->combinedLayoutSpacing(QSizePolicy::Label, QSizePolicy::LineEdit, Qt::Horizontal, nullptr, parent);
}
// Now update our min/sizehint widths
@@ -481,7 +478,6 @@ void QFormLayoutPrivate::recalcHFW(int w)
} else {
hfw_width = w;
hfw_height = qMin(QLAYOUTSIZE_MAX, h);
- hfw_minheight = qMin(QLAYOUTSIZE_MAX, mh);
}
}
@@ -598,13 +594,13 @@ static inline int spacingHelper(QWidget* parent, QStyle *style, int userVSpacing
QSizePolicy::ControlTypes(item1 ? item1->controlTypes() : QSizePolicy::DefaultType);
int spacing2 = 0;
- spacing = style->combinedLayoutSpacing(itemtypes, prevItem1->controlTypes(), Qt::Vertical, 0, parent);
+ spacing = style->combinedLayoutSpacing(itemtypes, prevItem1->controlTypes(), Qt::Vertical, nullptr, parent);
// At most of one of item2 and prevItem2 will be nonnull
if (item2)
- spacing2 = style->combinedLayoutSpacing(item2->controlTypes(), prevItem1->controlTypes(), Qt::Vertical, 0, parent);
+ spacing2 = style->combinedLayoutSpacing(item2->controlTypes(), prevItem1->controlTypes(), Qt::Vertical, nullptr, parent);
else if (prevItem2)
- spacing2 = style->combinedLayoutSpacing(itemtypes, prevItem2->controlTypes(), Qt::Vertical, 0, parent);
+ spacing2 = style->combinedLayoutSpacing(itemtypes, prevItem2->controlTypes(), Qt::Vertical, nullptr, parent);
spacing = qMax(spacing, spacing2);
}
@@ -652,7 +648,7 @@ void QFormLayoutPrivate::setupVerticalLayoutData(int width)
vLayouts.clear();
vLayouts.resize((2 * rr) + 2); // a max, some may be unused
- QStyle *style = 0;
+ QStyle *style = nullptr;
int userVSpacing = q->verticalSpacing();
@@ -680,8 +676,8 @@ void QFormLayoutPrivate::setupVerticalLayoutData(int width)
maxLabelWidth = width;
}
- QFormLayoutItem *prevItem1 = 0;
- QFormLayoutItem *prevItem2 = 0;
+ QFormLayoutItem *prevItem1 = nullptr;
+ QFormLayoutItem *prevItem2 = nullptr;
bool prevRowSplit = false;
for (int i = 0; i < rr; ++i) {
@@ -715,13 +711,13 @@ void QFormLayoutPrivate::setupVerticalLayoutData(int width)
initLayoutStruct(vLayouts[vidx], label);
if (vidx > 1)
- vLayouts[vidx - 1].spacing = spacingHelper(q->parentWidget(), style, userVSpacing, splitSideBySide || prevRowSplit, label, 0, prevItem1, prevItem2);
+ vLayouts[vidx - 1].spacing = spacingHelper(q->parentWidget(), style, userVSpacing, splitSideBySide || prevRowSplit, label, nullptr, prevItem1, prevItem2);
label->vLayoutIndex = vidx;
label->sideBySide = false;
prevItem1 = label;
- prevItem2 = 0;
+ prevItem2 = nullptr;
if (vLayouts[vidx].stretch > 0)
addTopBottomStretch = false;
@@ -733,13 +729,13 @@ void QFormLayoutPrivate::setupVerticalLayoutData(int width)
initLayoutStruct(vLayouts[vidx], field);
if (vidx > 1)
- vLayouts[vidx - 1].spacing = spacingHelper(q->parentWidget(), style, userVSpacing, splitSideBySide || prevRowSplit, field, 0, prevItem1, prevItem2);
+ vLayouts[vidx - 1].spacing = spacingHelper(q->parentWidget(), style, userVSpacing, splitSideBySide || prevRowSplit, field, nullptr, prevItem1, prevItem2);
field->vLayoutIndex = vidx;
field->sideBySide = false;
prevItem1 = field;
- prevItem2 = 0;
+ prevItem2 = nullptr;
if (vLayouts[vidx].stretch > 0)
addTopBottomStretch = false;
@@ -762,7 +758,7 @@ void QFormLayoutPrivate::setupVerticalLayoutData(int width)
if (label->expandingDirections() & Qt::Vertical)
expanding = true;
- label->sideBySide = (field != 0);
+ label->sideBySide = (field != nullptr);
label->vLayoutIndex = vidx;
stretch1 = label->vStretch();
}
@@ -794,7 +790,7 @@ void QFormLayoutPrivate::setupVerticalLayoutData(int width)
prevItem2 = field;
} else {
prevItem1 = field;
- prevItem2 = 0;
+ prevItem2 = nullptr;
}
prevRowSplit = false;
@@ -995,12 +991,12 @@ QLayoutItem* QFormLayoutPrivate::replaceAt(int index, QLayoutItem *newitem)
{
Q_Q(QFormLayout);
if (!newitem)
- return 0;
+ return nullptr;
const int storageIndex = storageIndexFromLayoutItem(m_matrix, m_things.value(index));
if (Q_UNLIKELY(storageIndex == -1)) {
// ### Qt6 - fix warning too when this class becomes public
qWarning("QFormLayoutPrivate::replaceAt: Invalid index %d", index);
- return 0;
+ return nullptr;
}
int row, col;
@@ -1196,7 +1192,7 @@ QLayoutItem* QFormLayoutPrivate::replaceAt(int index, QLayoutItem *newitem)
\sa QWidget::setLayout()
*/
QFormLayout::QFormLayout(QWidget *parent)
- : QLayout(*new QFormLayoutPrivate, 0, parent)
+ : QLayout(*new QFormLayoutPrivate, nullptr, parent)
{
}
@@ -1332,7 +1328,7 @@ void QFormLayout::insertRow(int row, const QString &labelText, QWidget *field)
if (field && !d->checkWidget(field))
return;
- QLabel *label = 0;
+ QLabel *label = nullptr;
if (!labelText.isEmpty()) {
label = new QLabel(labelText);
#ifndef QT_NO_SHORTCUT
@@ -1354,7 +1350,7 @@ void QFormLayout::insertRow(int row, const QString &labelText, QLayout *field)
if (field && !d->checkLayout(field))
return;
- insertRow(row, labelText.isEmpty() ? 0 : new QLabel(labelText), field);
+ insertRow(row, labelText.isEmpty() ? nullptr : new QLabel(labelText), field);
}
/*!
@@ -1657,7 +1653,7 @@ QLayoutItem *QFormLayout::itemAt(int index) const
Q_D(const QFormLayout);
if (QFormLayoutItem *formItem = d->m_things.value(index))
return formItem->item;
- return 0;
+ return nullptr;
}
/*!
@@ -1670,7 +1666,7 @@ QLayoutItem *QFormLayout::takeAt(int index)
const int storageIndex = storageIndexFromLayoutItem(d->m_matrix, d->m_things.value(index));
if (Q_UNLIKELY(storageIndex == -1)) {
qWarning("QFormLayout::takeAt: Invalid index %d", index);
- return 0;
+ return nullptr;
}
int row, col;
@@ -1696,7 +1692,7 @@ Qt::Orientations QFormLayout::expandingDirections() const
QFormLayoutPrivate *e = const_cast<QFormLayoutPrivate *>(d);
e->updateSizes();
- Qt::Orientations o = 0;
+ Qt::Orientations o;
if (e->expandHorizontal)
o = Qt::Horizontal;
if (e->expandVertical)
@@ -1835,7 +1831,7 @@ QLayoutItem *QFormLayout::itemAt(int row, ItemRole role) const
{
Q_D(const QFormLayout);
if (uint(row) >= uint(d->m_matrix.rowCount()))
- return 0;
+ return nullptr;
switch (role) {
case SpanningRole:
if (QFormLayoutItem *item = d->m_matrix(row, 1))
@@ -1848,7 +1844,7 @@ QLayoutItem *QFormLayout::itemAt(int row, ItemRole role) const
return item->item;
break;
}
- return 0;
+ return nullptr;
}
/*!
@@ -1932,7 +1928,7 @@ QWidget *QFormLayout::labelForField(QWidget *field) const
if (QFormLayoutItem *label = d->m_matrix(row, LabelRole))
return label->widget();
}
- return 0;
+ return nullptr;
}
/*!
@@ -1951,7 +1947,7 @@ QWidget *QFormLayout::labelForField(QLayout *field) const
if (QFormLayoutItem *label = d->m_matrix(row, LabelRole))
return label->widget();
}
- return 0;
+ return nullptr;
}
/*!
@@ -2326,7 +2322,7 @@ void QFormLayout::resetRowWrapPolicy()
void QFormLayout::resetFormAlignment()
{
Q_D(QFormLayout);
- d->formAlignment = 0;
+ d->formAlignment = { };
}
/*!
@@ -2336,7 +2332,7 @@ void QFormLayout::resetFormAlignment()
void QFormLayout::resetLabelAlignment()
{
Q_D(QFormLayout);
- d->labelAlignment = 0;
+ d->labelAlignment = { };
}
#if 0
diff --git a/src/widgets/kernel/qgesture.cpp b/src/widgets/kernel/qgesture.cpp
index fc715687c6..84dbed7043 100644
--- a/src/widgets/kernel/qgesture.cpp
+++ b/src/widgets/kernel/qgesture.cpp
@@ -879,7 +879,7 @@ int QTapAndHoldGesturePrivate::Timeout = 700; // in ms
Creates new QGestureEvent containing a list of \a gestures.
*/
QGestureEvent::QGestureEvent(const QList<QGesture *> &gestures)
- : QEvent(QEvent::Gesture), m_gestures(gestures), m_widget(0)
+ : QEvent(QEvent::Gesture), m_gestures(gestures), m_widget(nullptr)
{
}
@@ -907,7 +907,7 @@ QGesture *QGestureEvent::gesture(Qt::GestureType type) const
for (int i = 0; i < m_gestures.size(); ++i)
if (m_gestures.at(i)->gestureType() == type)
return m_gestures.at(i);
- return 0;
+ return nullptr;
}
/*!
diff --git a/src/widgets/kernel/qgesture_p.h b/src/widgets/kernel/qgesture_p.h
index cbf8d60892..057302bda1 100644
--- a/src/widgets/kernel/qgesture_p.h
+++ b/src/widgets/kernel/qgesture_p.h
@@ -111,8 +111,7 @@ class QPinchGesturePrivate : public QGesturePrivate
public:
QPinchGesturePrivate()
- : totalChangeFlags(nullptr), changeFlags(nullptr),
- totalScaleFactor(1), lastScaleFactor(1), scaleFactor(1),
+ : totalScaleFactor(1), lastScaleFactor(1), scaleFactor(1),
totalRotationAngle(0), lastRotationAngle(0), rotationAngle(0),
isNewSequence(true)
{
diff --git a/src/widgets/kernel/qgesturemanager.cpp b/src/widgets/kernel/qgesturemanager.cpp
index d0c6b882b5..5604391059 100644
--- a/src/widgets/kernel/qgesturemanager.cpp
+++ b/src/widgets/kernel/qgesturemanager.cpp
@@ -188,7 +188,7 @@ QGesture *QGestureManager::getState(QObject *object, QGestureRecognizer *recogni
// from the destructor.
if (object->isWidgetType()) {
if (static_cast<QWidget *>(object)->d_func()->data.in_destructor)
- return 0;
+ return nullptr;
} else if (QGesture *g = qobject_cast<QGesture *>(object)) {
return g;
#if QT_CONFIG(graphicsview)
@@ -196,7 +196,7 @@ QGesture *QGestureManager::getState(QObject *object, QGestureRecognizer *recogni
Q_ASSERT(qobject_cast<QGraphicsObject *>(object));
QGraphicsObject *graphicsObject = static_cast<QGraphicsObject *>(object);
if (graphicsObject->QGraphicsItem::d_func()->inDestructor)
- return 0;
+ return nullptr;
#endif
}
@@ -210,7 +210,7 @@ QGesture *QGestureManager::getState(QObject *object, QGestureRecognizer *recogni
Q_ASSERT(recognizer);
QGesture *state = recognizer->create(object);
if (!state)
- return 0;
+ return nullptr;
state->setParent(this);
if (state->gestureType() == Qt::CustomGesture) {
// if the recognizer didn't fill in the gesture type, then this
@@ -454,13 +454,13 @@ void QGestureManager::cancelGesturesForChildren(QGesture *original)
// sort them per target widget by cherry picking from almostCanceledGestures and delivering
QSet<QGesture *> almostCanceledGestures = cancelledGestures;
while (!almostCanceledGestures.isEmpty()) {
- QWidget *target = 0;
+ QWidget *target = nullptr;
QSet<QGesture*> gestures;
iter = almostCanceledGestures.begin();
// sort per target widget
while (iter != almostCanceledGestures.end()) {
QWidget *widget = m_gestureTargets.value(*iter);
- if (target == 0)
+ if (target == nullptr)
target = widget;
if (target == widget) {
gestures << *iter;
@@ -508,7 +508,7 @@ bool QGestureManager::filterEvent(QWidget *receiver, QEvent *event)
}
}
// find all gesture contexts for the widget tree
- w = w->isWindow() ? 0 : w->parentWidget();
+ w = w->isWindow() ? nullptr : w->parentWidget();
while (w)
{
for (ContextIterator it = w->d_func()->gestureContext.constBegin(),
@@ -587,7 +587,7 @@ void QGestureManager::getGestureTargets(const QSet<QGesture*> &gestures,
// sort gestures by types
foreach (QGesture *gesture, gestures) {
- QWidget *receiver = m_gestureTargets.value(gesture, 0);
+ QWidget *receiver = m_gestureTargets.value(gesture, nullptr);
Q_ASSERT(receiver);
if (receiver)
gestureByTypes[gesture->gestureType()].insert(receiver, gesture);
@@ -611,7 +611,7 @@ void QGestureManager::getGestureTargets(const QSet<QGesture*> &gestures,
}
}
if (w->isWindow()) {
- w = 0;
+ w = nullptr;
break;
}
w = w->parentWidget();
@@ -637,7 +637,7 @@ void QGestureManager::deliverEvents(const QSet<QGesture *> &gestures,
for (QSet<QGesture *>::const_iterator it = gestures.begin(),
e = gestures.end(); it != e; ++it) {
QGesture *gesture = *it;
- QWidget *target = m_gestureTargets.value(gesture, 0);
+ QWidget *target = m_gestureTargets.value(gesture, nullptr);
if (!target) {
// the gesture has just started and doesn't have a target yet.
Q_ASSERT(gesture->state() == Qt::GestureStarted);
diff --git a/src/widgets/kernel/qgridlayout.cpp b/src/widgets/kernel/qgridlayout.cpp
index 4f2b505e32..b4ac263c2b 100644
--- a/src/widgets/kernel/qgridlayout.cpp
+++ b/src/widgets/kernel/qgridlayout.cpp
@@ -84,7 +84,7 @@ public:
Qt::Alignment alignment() const { return item_->alignment(); }
QLayoutItem *item() { return item_; }
void setItem(QLayoutItem *newitem) { item_ = newitem; }
- QLayoutItem *takeItem() { QLayoutItem *i = item_; item_ = 0; return i; }
+ QLayoutItem *takeItem() { QLayoutItem *i = item_; item_ = nullptr; return i; }
int hStretch() { return item_->widget() ?
item_->widget()->sizePolicy().horizontalStretch() : 0; }
@@ -152,7 +152,7 @@ public:
if (index < things.count())
return things.at(index)->item();
else
- return 0;
+ return nullptr;
}
inline QLayoutItem *takeAt(int index) {
Q_Q(QGridLayout);
@@ -162,19 +162,19 @@ public:
if (QLayout *l = item->layout()) {
// sanity check in case the user passed something weird to QObject::setParent()
if (l->parent() == q)
- l->setParent(0);
+ l->setParent(nullptr);
}
delete b;
return item;
}
}
- return 0;
+ return nullptr;
}
QLayoutItem* replaceAt(int index, QLayoutItem *newitem) override
{
if (!newitem)
- return 0;
- QLayoutItem *item = 0;
+ return nullptr;
+ QLayoutItem *item = nullptr;
QGridBox *b = things.value(index);
if (b) {
item = b->takeItem();
@@ -342,7 +342,7 @@ QGridLayoutPrivate::QGridLayoutPrivate()
setDirty();
rr = cc = 0;
nextR = nextC = 0;
- hfwData = 0;
+ hfwData = nullptr;
hReversed = false;
vReversed = false;
horizontalSpacing = -1;
@@ -429,7 +429,7 @@ int QGridLayoutPrivate::minimumHeightForWidth(int w, int hSpacing, int vSpacing)
if (!has_hfw)
return -1;
int top, bottom;
- effectiveMargins(0, &top, 0, &bottom);
+ effectiveMargins(nullptr, &top, nullptr, &bottom);
return hfw_minheight + top + bottom;
}
@@ -521,7 +521,7 @@ void QGridLayoutPrivate::setSize(int r, int c)
if (hfwData && (int)hfwData->size() < r) {
delete hfwData;
- hfwData = 0;
+ hfwData = nullptr;
hfw_width = -1;
}
rr = r;
@@ -710,14 +710,14 @@ void QGridLayoutPrivate::setupSpacings(QVector<QLayoutStruct> &chain,
qSwap(numRows, numColumns);
}
- QStyle *style = 0;
+ QStyle *style = nullptr;
if (fixedSpacing < 0) {
if (QWidget *parentWidget = q->parentWidget())
style = parentWidget->style();
}
for (int c = 0; c < numColumns; ++c) {
- QGridBox *previousBox = 0;
+ QGridBox *previousBox = nullptr;
int previousRow = -1; // previous *non-empty* row
for (int r = 0; r < numRows; ++r) {
@@ -741,7 +741,7 @@ void QGridLayoutPrivate::setupSpacings(QVector<QLayoutStruct> &chain,
if (style)
spacing = style->combinedLayoutSpacing(controlTypes1, controlTypes2,
- orientation, 0, q->parentWidget());
+ orientation, nullptr, q->parentWidget());
} else {
if (orientation == Qt::Vertical) {
QGridBox *sibling = vReversed ? previousBox : box;
@@ -1075,7 +1075,7 @@ QRect QGridLayoutPrivate::cellRect(int row, int col) const
new items are inserted.
*/
QGridLayout::QGridLayout(QWidget *parent)
- : QLayout(*new QGridLayoutPrivate, 0, parent)
+ : QLayout(*new QGridLayoutPrivate, nullptr, parent)
{
Q_D(QGridLayout);
d->expand(1, 1);
@@ -1089,7 +1089,7 @@ QGridLayout::QGridLayout(QWidget *parent)
will not be performed before this is inserted into another layout.
*/
QGridLayout::QGridLayout()
- : QLayout(*new QGridLayoutPrivate, 0, 0)
+ : QLayout(*new QGridLayoutPrivate, nullptr, nullptr)
{
Q_D(QGridLayout);
d->expand(1, 1);
diff --git a/src/widgets/kernel/qlayout.cpp b/src/widgets/kernel/qlayout.cpp
index 3ce81a390b..d4ff9083f1 100644
--- a/src/widgets/kernel/qlayout.cpp
+++ b/src/widgets/kernel/qlayout.cpp
@@ -130,7 +130,7 @@ QLayout::QLayout(QWidget *parent)
management will work.
*/
QLayout::QLayout()
- : QObject(*new QLayoutPrivate, 0)
+ : QObject(*new QLayoutPrivate, nullptr)
{
}
@@ -149,14 +149,14 @@ QLayout::QLayout(QLayoutPrivate &dd, QLayout *lay, QWidget *w)
" already has a layout",
qUtf16Printable(QObject::objectName()), w->metaObject()->className(),
qUtf16Printable(w->objectName()));
- setParent(0);
+ setParent(nullptr);
} else {
d->topLevel = true;
w->d_func()->layout = this;
QT_TRY {
invalidate();
} QT_CATCH(...) {
- w->d_func()->layout = 0;
+ w->d_func()->layout = nullptr;
QT_RETHROW;
}
}
@@ -166,7 +166,7 @@ QLayout::QLayout(QLayoutPrivate &dd, QLayout *lay, QWidget *w)
QLayoutPrivate::QLayoutPrivate()
: QObjectPrivate(), insideSpacing(-1), userLeftMargin(-1), userTopMargin(-1), userRightMargin(-1),
userBottomMargin(-1), topLevel(false), enabled(true), activated(true), autoNewChild(false),
- constraint(QLayout::SetDefaultConstraint), menubar(0)
+ constraint(QLayout::SetDefaultConstraint), menubar(nullptr)
{
}
@@ -181,7 +181,7 @@ void QLayoutPrivate::getMargin(int *result, int userMargin, QStyle::PixelMetric
} else if (!topLevel) {
*result = 0;
} else if (QWidget *pw = q->parentWidget()) {
- *result = pw->style()->pixelMetric(pm, 0, pw);
+ *result = pw->style()->pixelMetric(pm, nullptr, pw);
} else {
*result = 0;
}
@@ -189,8 +189,8 @@ void QLayoutPrivate::getMargin(int *result, int userMargin, QStyle::PixelMetric
// Static item factory functions that allow for hooking things in Designer
-QLayoutPrivate::QWidgetItemFactoryMethod QLayoutPrivate::widgetItemFactoryMethod = 0;
-QLayoutPrivate::QSpacerItemFactoryMethod QLayoutPrivate::spacerItemFactoryMethod = 0;
+QLayoutPrivate::QWidgetItemFactoryMethod QLayoutPrivate::widgetItemFactoryMethod = nullptr;
+QLayoutPrivate::QSpacerItemFactoryMethod QLayoutPrivate::spacerItemFactoryMethod = nullptr;
QWidgetItem *QLayoutPrivate::createWidgetItem(const QLayout *layout, QWidget *widget)
{
@@ -583,18 +583,18 @@ static bool removeWidgetRecursively(QLayoutItem *li, QObject *w)
}
-void QLayoutPrivate::doResize(const QSize &r)
+void QLayoutPrivate::doResize()
{
Q_Q(QLayout);
- int mbh = menuBarHeightForWidth(menubar, r.width());
QWidget *mw = q->parentWidget();
QRect rect = mw->testAttribute(Qt::WA_LayoutOnEntireRect) ? mw->rect() : mw->contentsRect();
+ const int mbh = menuBarHeightForWidth(menubar, rect.width());
const int mbTop = rect.top();
rect.setTop(mbTop + mbh);
q->setGeometry(rect);
#if QT_CONFIG(menubar)
if (menubar)
- menubar->setGeometry(rect.left(), mbTop, r.width(), mbh);
+ menubar->setGeometry(rect.left(), mbTop, rect.width(), mbh);
#endif
}
@@ -613,12 +613,10 @@ void QLayout::widgetEvent(QEvent *e)
switch (e->type()) {
case QEvent::Resize:
- if (d->activated) {
- QResizeEvent *r = (QResizeEvent *)e;
- d->doResize(r->size());
- } else {
+ if (d->activated)
+ d->doResize();
+ else
activate();
- }
break;
case QEvent::ChildRemoved:
{
@@ -626,7 +624,7 @@ void QLayout::widgetEvent(QEvent *e)
if (c->child()->isWidgetType()) {
#if QT_CONFIG(menubar)
if (c->child() == d->menubar)
- d->menubar = 0;
+ d->menubar = nullptr;
#endif
removeWidgetRecursively(this, c->child());
}
@@ -766,7 +764,7 @@ QLayout::~QLayout()
{
Q_D(QLayout);
if (d->topLevel && parent() && parent()->isWidgetType() && parentWidget()->layout() == this)
- parentWidget()->d_func()->layout = 0;
+ parentWidget()->d_func()->layout = nullptr;
else if (QLayout *parentLayout = qobject_cast<QLayout *>(parent()))
parentLayout->removeItem(this);
}
@@ -921,7 +919,7 @@ void QLayout::addChildWidget(QWidget *w)
qWarning("QLayout::addChildWidget: %s \"%ls\" in wrong parent; moved to correct parent",
w->metaObject()->className(), qUtf16Printable(w->objectName()));
#endif
- pw = 0;
+ pw = nullptr;
}
bool needShow = mw && mw->isVisible() && !(w->isHidden() && w->testAttribute(Qt::WA_WState_ExplicitShowHide));
if (!pw && mw)
@@ -1116,7 +1114,7 @@ bool QLayout::activate()
break;
}
- d->doResize(mw->size());
+ d->doResize();
if (md->extra) {
md->extra->explicitMinSize = explMin;
@@ -1155,12 +1153,12 @@ QLayoutItem *QLayout::replaceWidget(QWidget *from, QWidget *to, Qt::FindChildOpt
{
Q_D(QLayout);
if (!from || !to)
- return 0;
+ return nullptr;
if (from == to) // Do not return a QLayoutItem for \a from, since ownership still
return nullptr; // belongs to the layout (since nothing was changed)
int index = -1;
- QLayoutItem *item = 0;
+ QLayoutItem *item = nullptr;
for (int u = 0; u < count(); ++u) {
item = itemAt(u);
if (!item)
@@ -1178,7 +1176,7 @@ QLayoutItem *QLayout::replaceWidget(QWidget *from, QWidget *to, Qt::FindChildOpt
}
}
if (index == -1)
- return 0;
+ return nullptr;
addChildWidget(to);
QLayoutItem *newitem = new QWidgetItem(to);
@@ -1339,7 +1337,7 @@ QRect QLayout::alignmentRect(const QRect &r) const
returned by QLayoutItems that have an alignment.
*/
QLayout *that = const_cast<QLayout *>(this);
- that->setAlignment(0);
+ that->setAlignment({ });
QSize ms = that->maximumSize();
that->setAlignment(a);
diff --git a/src/widgets/kernel/qlayout_p.h b/src/widgets/kernel/qlayout_p.h
index 8e1d773355..2b19af48be 100644
--- a/src/widgets/kernel/qlayout_p.h
+++ b/src/widgets/kernel/qlayout_p.h
@@ -73,7 +73,7 @@ public:
QLayoutPrivate();
void getMargin(int *result, int userMargin, QStyle::PixelMetric pm) const;
- void doResize(const QSize &);
+ void doResize();
void reparentChildWidgets(QWidget *mw);
bool checkWidget(QWidget *widget) const;
bool checkLayout(QLayout *otherLayout) const;
diff --git a/src/widgets/kernel/qlayoutengine.cpp b/src/widgets/kernel/qlayoutengine.cpp
index 19a47075a6..83bbd69b55 100644
--- a/src/widgets/kernel/qlayoutengine.cpp
+++ b/src/widgets/kernel/qlayoutengine.cpp
@@ -376,7 +376,11 @@ Q_WIDGETS_EXPORT QSize qSmartMinSize(const QSize &sizeHint, const QSize &minSize
Q_WIDGETS_EXPORT QSize qSmartMinSize(const QWidgetItem *i)
{
+#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
QWidget *w = const_cast<QWidgetItem *>(i)->widget();
+#else
+ QWidget *w = i->widget();
+#endif
return qSmartMinSize(w->sizeHint(), w->minimumSizeHint(),
w->minimumSize(), w->maximumSize(),
w->sizePolicy());
@@ -414,8 +418,11 @@ Q_WIDGETS_EXPORT QSize qSmartMaxSize(const QSize &sizeHint,
Q_WIDGETS_EXPORT QSize qSmartMaxSize(const QWidgetItem *i, Qt::Alignment align)
{
- QWidget *w = const_cast<QWidgetItem*>(i)->widget();
-
+#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
+ QWidget *w = const_cast<QWidgetItem *>(i)->widget();
+#else
+ QWidget *w = i->widget();
+#endif
return qSmartMaxSize(w->sizeHint().expandedTo(w->minimumSizeHint()), w->minimumSize(), w->maximumSize(),
w->sizePolicy(), align);
}
@@ -433,7 +440,7 @@ Q_WIDGETS_EXPORT int qSmartSpacing(const QLayout *layout, QStyle::PixelMetric pm
return -1;
} else if (parent->isWidgetType()) {
QWidget *pw = static_cast<QWidget *>(parent);
- return pw->style()->pixelMetric(pm, 0, pw);
+ return pw->style()->pixelMetric(pm, nullptr, pw);
} else {
return static_cast<QLayout *>(parent)->spacing();
}
diff --git a/src/widgets/kernel/qlayoutengine_p.h b/src/widgets/kernel/qlayoutengine_p.h
index 948c2424e6..2999bae646 100644
--- a/src/widgets/kernel/qlayoutengine_p.h
+++ b/src/widgets/kernel/qlayoutengine_p.h
@@ -105,9 +105,9 @@ Q_WIDGETS_EXPORT QSize qSmartMinSize(const QWidgetItem *i);
Q_WIDGETS_EXPORT QSize qSmartMinSize(const QWidget *w);
Q_WIDGETS_EXPORT QSize qSmartMaxSize(const QSize &sizeHint,
const QSize &minSize, const QSize &maxSize,
- const QSizePolicy &sizePolicy, Qt::Alignment align = nullptr);
-Q_WIDGETS_EXPORT QSize qSmartMaxSize(const QWidgetItem *i, Qt::Alignment align = nullptr);
-Q_WIDGETS_EXPORT QSize qSmartMaxSize(const QWidget *w, Qt::Alignment align = nullptr);
+ const QSizePolicy &sizePolicy, Qt::Alignment align = { });
+Q_WIDGETS_EXPORT QSize qSmartMaxSize(const QWidgetItem *i, Qt::Alignment align = { });
+Q_WIDGETS_EXPORT QSize qSmartMaxSize(const QWidget *w, Qt::Alignment align = { });
Q_WIDGETS_EXPORT int qSmartSpacing(const QLayout *layout, QStyle::PixelMetric pm);
diff --git a/src/widgets/kernel/qlayoutitem.cpp b/src/widgets/kernel/qlayoutitem.cpp
index 0aab0bb06d..af5750771d 100644
--- a/src/widgets/kernel/qlayoutitem.cpp
+++ b/src/widgets/kernel/qlayoutitem.cpp
@@ -291,14 +291,12 @@ void QSpacerItem::changeSize(int w, int h, QSizePolicy::Policy hPolicy,
/*!
Destructor.
*/
-QWidgetItem::~QWidgetItem() {}
+QWidgetItem::~QWidgetItem() = default;
/*!
Destroys the QLayoutItem.
*/
-QLayoutItem::~QLayoutItem()
-{
-}
+QLayoutItem::~QLayoutItem() = default;
/*!
Invalidates any cached information in this layout item.
@@ -362,7 +360,11 @@ QSpacerItem * QSpacerItem::spacerItem()
\sa layout(), spacerItem()
*/
+#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
QWidget *QLayoutItem::widget()
+#else
+QWidget *QLayoutItem::widget() const
+#endif
{
return nullptr;
}
@@ -370,7 +372,11 @@ QWidget *QLayoutItem::widget()
/*!
Returns the widget managed by this item.
*/
+#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
QWidget *QWidgetItem::widget()
+#else
+QWidget *QWidgetItem::widget() const
+#endif
{
return wid;
}
@@ -591,7 +597,7 @@ Qt::Orientations QSpacerItem::expandingDirections() const
Qt::Orientations QWidgetItem::expandingDirections() const
{
if (isEmpty())
- return Qt::Orientations(0);
+ return {};
Qt::Orientations e = wid->sizePolicy().expandingDirections();
/*
@@ -772,7 +778,7 @@ QWidgetItemV2::QWidgetItemV2(QWidget *widget)
q_cachedMaximumSize(Dirty, Dirty),
q_firstCachedHfw(0),
q_hfwCacheSize(0),
- d(0)
+ d(nullptr)
{
QWidgetPrivate *wd = wid->d_func();
if (!wd->widgetItem)
@@ -784,7 +790,7 @@ QWidgetItemV2::~QWidgetItemV2()
if (wid) {
auto *wd = static_cast<QWidgetPrivate *>(QObjectPrivate::get(wid));
if (wd->widgetItem == this)
- wd->widgetItem = 0;
+ wd->widgetItem = nullptr;
}
}
diff --git a/src/widgets/kernel/qlayoutitem.h b/src/widgets/kernel/qlayoutitem.h
index 059ff2d470..8553e20adc 100644
--- a/src/widgets/kernel/qlayoutitem.h
+++ b/src/widgets/kernel/qlayoutitem.h
@@ -74,7 +74,11 @@ public:
virtual int minimumHeightForWidth(int) const;
virtual void invalidate();
+#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
virtual QWidget *widget();
+#else
+ virtual QWidget *widget() const;
+#endif
virtual QLayout *layout();
virtual QSpacerItem *spacerItem();
@@ -133,7 +137,11 @@ public:
bool isEmpty() const override;
void setGeometry(const QRect&) override;
QRect geometry() const override;
+#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
QWidget *widget() override;
+#else
+ QWidget *widget() const override;
+#endif
bool hasHeightForWidth() const override;
int heightForWidth(int) const override;
diff --git a/src/widgets/kernel/qmacgesturerecognizer.cpp b/src/widgets/kernel/qmacgesturerecognizer.cpp
index d39b93e320..aac115a2cf 100644
--- a/src/widgets/kernel/qmacgesturerecognizer.cpp
+++ b/src/widgets/kernel/qmacgesturerecognizer.cpp
@@ -149,8 +149,8 @@ QMacPinchGestureRecognizer::recognize(QGesture *gesture, QObject *obj, QEvent *e
void QMacPinchGestureRecognizer::reset(QGesture *gesture)
{
QPinchGesture *g = static_cast<QPinchGesture *>(gesture);
- g->setChangeFlags(0);
- g->setTotalChangeFlags(0);
+ g->setChangeFlags({});
+ g->setTotalChangeFlags({});
g->setScaleFactor(1.0f);
g->setTotalScaleFactor(1.0f);
g->setLastScaleFactor(1.0f);
diff --git a/src/widgets/kernel/qopenglwidget.cpp b/src/widgets/kernel/qopenglwidget.cpp
index bc5ca21b97..90622fd21e 100644
--- a/src/widgets/kernel/qopenglwidget.cpp
+++ b/src/widgets/kernel/qopenglwidget.cpp
@@ -555,16 +555,16 @@ class QOpenGLWidgetPrivate : public QWidgetPrivate
Q_DECLARE_PUBLIC(QOpenGLWidget)
public:
QOpenGLWidgetPrivate()
- : context(0),
- fbo(0),
- resolvedFbo(0),
- surface(0),
+ : context(nullptr),
+ fbo(nullptr),
+ resolvedFbo(nullptr),
+ surface(nullptr),
initialized(false),
fakeHidden(false),
inBackingStorePaint(false),
hasBeenComposed(false),
flushPending(false),
- paintDevice(0),
+ paintDevice(nullptr),
updateBehavior(QOpenGLWidget::NoPartialUpdate),
requestedSamples(0),
inPaintGL(false),
@@ -704,11 +704,11 @@ void QOpenGLWidgetPrivate::reset()
q->makeCurrent();
delete paintDevice;
- paintDevice = 0;
+ paintDevice = nullptr;
delete fbo;
- fbo = 0;
+ fbo = nullptr;
delete resolvedFbo;
- resolvedFbo = 0;
+ resolvedFbo = nullptr;
if (initialized)
q->doneCurrent();
@@ -717,9 +717,9 @@ void QOpenGLWidgetPrivate::reset()
// the context's aboutToBeDestroyed() may still call makeCurrent()
// to perform some cleanup.
delete context;
- context = 0;
+ context = nullptr;
delete surface;
- surface = 0;
+ surface = nullptr;
initialized = fakeHidden = inBackingStorePaint = false;
}
@@ -732,9 +732,9 @@ void QOpenGLWidgetPrivate::recreateFbo()
context->makeCurrent(surface);
delete fbo;
- fbo = 0;
+ fbo = nullptr;
delete resolvedFbo;
- resolvedFbo = 0;
+ resolvedFbo = nullptr;
int samples = requestedSamples;
QOpenGLExtensions *extfuncs = static_cast<QOpenGLExtensions *>(context->functions());
@@ -1421,7 +1421,7 @@ QPaintEngine *QOpenGLWidget::paintEngine() const
return QWidget::paintEngine();
if (!d->initialized)
- return 0;
+ return nullptr;
return d->paintDevice->paintEngine();
}
diff --git a/src/widgets/kernel/qshortcut.cpp b/src/widgets/kernel/qshortcut.cpp
index eec65c8625..d469279ea5 100644
--- a/src/widgets/kernel/qshortcut.cpp
+++ b/src/widgets/kernel/qshortcut.cpp
@@ -419,6 +419,76 @@ static bool correctActionContext(Qt::ShortcutContext context, QAction *a, QWidge
\sa activated()
*/
+/*!
+ \fn template<typename Functor>
+ QShortcut(const QKeySequence &key, QWidget *parent,
+ Functor functor,
+ Qt::ShortcutContext shortcutContext = Qt::WindowShortcut);
+ \since 5.15
+ \overload
+
+ This is a QShortcut convenience constructor which connects the shortcut's
+ \l{QShortcut::activated()}{activated()} signal to the \a functor.
+*/
+/*!
+ \fn template<typename Functor>
+ QShortcut(const QKeySequence &key, QWidget *parent,
+ const QObject *context, Functor functor,
+ Qt::ShortcutContext shortcutContext = Qt::WindowShortcut);
+ \since 5.15
+ \overload
+
+ This is a QShortcut convenience constructor which connects the shortcut's
+ \l{QShortcut::activated()}{activated()} signal to the \a functor.
+
+ The \a functor can be a pointer to a member function of the \a context object.
+
+ If the \a context object is destroyed, the \a functor will not be called.
+*/
+/*!
+ \fn template<typename Functor, typename FunctorAmbiguous>
+ QShortcut(const QKeySequence &key, QWidget *parent,
+ const QObject *context1, Functor functor,
+ FunctorAmbiguous functorAmbiguous,
+ Qt::ShortcutContext shortcutContext = Qt::WindowShortcut);
+ \since 5.15
+ \overload
+
+ This is a QShortcut convenience constructor which connects the shortcut's
+ \l{QShortcut::activated()}{activated()} signal to the \a functor and
+ \l{QShortcut::activatedAmbiguously()}{activatedAmbiguously()}
+ signal to the \a FunctorAmbiguous.
+
+ The \a functor and \a FunctorAmbiguous can be a pointer to a member
+ function of the \a context object.
+
+ If the \a context object is destroyed, the \a functor and
+ \a FunctorAmbiguous will not be called.
+*/
+/*!
+ \fn template<typename Functor, typename FunctorAmbiguous>
+ QShortcut(const QKeySequence &key, QWidget *parent,
+ const QObject *context1, Functor functor,
+ const QObject *context2, FunctorAmbiguous functorAmbiguous,
+ Qt::ShortcutContext shortcutContext = Qt::WindowShortcut);
+ \since 5.15
+ \overload
+
+ This is a QShortcut convenience constructor which connects the shortcut's
+ \l{QShortcut::activated()}{activated()} signal to the \a functor and
+ \l{QShortcut::activatedAmbiguously()}{activatedAmbiguously()}
+ signal to the \a FunctorAmbiguous.
+
+ The \a functor can be a pointer to a member function of the
+ \a context1 object.
+ The \a FunctorAmbiguous can be a pointer to a member function of the
+ \a context2 object.
+
+ If the \a context1 object is destroyed, the \a functor will not be called.
+ If the \a context2 object is destroyed, the \a FunctorAmbiguous
+ will not be called.
+*/
+
/*
\internal
Private data accessed through d-pointer.
@@ -479,13 +549,13 @@ QShortcut::QShortcut(QWidget *parent)
*/
QShortcut::QShortcut(const QKeySequence &key, QWidget *parent,
const char *member, const char *ambiguousMember,
- Qt::ShortcutContext context)
+ Qt::ShortcutContext shortcutContext)
: QShortcut(parent)
{
QAPP_CHECK("QShortcut");
Q_D(QShortcut);
- d->sc_context = context;
+ d->sc_context = shortcutContext;
d->sc_sequence = key;
d->redoGrab(QGuiApplicationPrivate::instance()->shortcutMap);
if (member)
diff --git a/src/widgets/kernel/qshortcut.h b/src/widgets/kernel/qshortcut.h
index 6dcf4971b2..4f9c5ba0f7 100644
--- a/src/widgets/kernel/qshortcut.h
+++ b/src/widgets/kernel/qshortcut.h
@@ -61,9 +61,65 @@ class Q_WIDGETS_EXPORT QShortcut : public QObject
Q_PROPERTY(Qt::ShortcutContext context READ context WRITE setContext)
public:
explicit QShortcut(QWidget *parent);
- QShortcut(const QKeySequence& key, QWidget *parent,
+ QShortcut(const QKeySequence &key, QWidget *parent,
const char *member = nullptr, const char *ambiguousMember = nullptr,
- Qt::ShortcutContext context = Qt::WindowShortcut);
+ Qt::ShortcutContext shortcutContext = Qt::WindowShortcut);
+#ifdef Q_CLANG_QDOC
+ template<typename Functor>
+ QShortcut(const QKeySequence &key, QWidget *parent,
+ Functor functor,
+ Qt::ShortcutContext shortcutContext = Qt::WindowShortcut);
+ template<typename Functor>
+ QShortcut(const QKeySequence &key, QWidget *parent,
+ const QObject *context, Functor functor,
+ Qt::ShortcutContext shortcutContext = Qt::WindowShortcut);
+ template<typename Functor, typename FunctorAmbiguous>
+ QShortcut(const QKeySequence &key, QWidget *parent,
+ const QObject *context1, Functor functor,
+ FunctorAmbiguous functorAmbiguous,
+ Qt::ShortcutContext shortcutContext = Qt::WindowShortcut);
+ template<typename Functor, typename FunctorAmbiguous>
+ QShortcut(const QKeySequence &key, QWidget *parent,
+ const QObject *context1, Functor functor,
+ const QObject *context2, FunctorAmbiguous functorAmbiguous,
+ Qt::ShortcutContext shortcutContext = Qt::WindowShortcut);
+#else
+ template<typename Func1>
+ QShortcut(const QKeySequence &key, QWidget *parent,
+ Func1 slot1,
+ Qt::ShortcutContext context = Qt::WindowShortcut)
+ : QShortcut(key, parent, static_cast<const char*>(nullptr), static_cast<const char*>(nullptr), context)
+ {
+ connect(this, &QShortcut::activated, std::move(slot1));
+ }
+ template<class Obj1, typename Func1>
+ QShortcut(const QKeySequence &key, QWidget *parent,
+ const Obj1 *object1, Func1 slot1,
+ Qt::ShortcutContext context = Qt::WindowShortcut)
+ : QShortcut(key, parent, static_cast<const char*>(nullptr), static_cast<const char*>(nullptr), context)
+ {
+ connect(this, &QShortcut::activated, object1, std::move(slot1));
+ }
+ template<class Obj1, typename Func1, typename Func2>
+ QShortcut(const QKeySequence &key, QWidget *parent,
+ const Obj1 *object1, Func1 slot1, Func2 slot2,
+ Qt::ShortcutContext context = Qt::WindowShortcut)
+ : QShortcut(key, parent, static_cast<const char*>(nullptr), static_cast<const char*>(nullptr), context)
+ {
+ connect(this, &QShortcut::activated, object1, std::move(slot1));
+ connect(this, &QShortcut::activatedAmbiguously, object1, std::move(slot2));
+ }
+ template<class Obj1, typename Func1, class Obj2, typename Func2>
+ QShortcut(const QKeySequence &key, QWidget *parent,
+ const Obj1 *object1, Func1 slot1,
+ const Obj2 *object2, Func2 slot2,
+ Qt::ShortcutContext context = Qt::WindowShortcut)
+ : QShortcut(key, parent, static_cast<const char*>(nullptr), static_cast<const char*>(nullptr), context)
+ {
+ connect(this, &QShortcut::activated, object1, std::move(slot1));
+ connect(this, &QShortcut::activatedAmbiguously, object2, std::move(slot2));
+ }
+#endif
~QShortcut();
void setKey(const QKeySequence& key);
diff --git a/src/widgets/kernel/qstackedlayout.cpp b/src/widgets/kernel/qstackedlayout.cpp
index 0412dc188d..f87fe96cc0 100644
--- a/src/widgets/kernel/qstackedlayout.cpp
+++ b/src/widgets/kernel/qstackedlayout.cpp
@@ -61,11 +61,11 @@ QLayoutItem* QStackedLayoutPrivate::replaceAt(int idx, QLayoutItem *newitem)
{
Q_Q(QStackedLayout);
if (idx < 0 || idx >= list.size() || !newitem)
- return 0;
+ return nullptr;
QWidget *wdg = newitem->widget();
if (Q_UNLIKELY(!wdg)) {
qWarning("QStackedLayout::replaceAt: Only widgets can be added");
- return 0;
+ return nullptr;
}
QLayoutItem *orgitem = list.at(idx);
list.replace(idx, newitem);
@@ -154,7 +154,7 @@ QLayoutItem* QStackedLayoutPrivate::replaceAt(int idx, QLayoutItem *newitem)
\sa addWidget(), insertWidget()
*/
QStackedLayout::QStackedLayout()
- : QLayout(*new QStackedLayoutPrivate, 0, 0)
+ : QLayout(*new QStackedLayoutPrivate, nullptr, nullptr)
{
}
@@ -165,7 +165,7 @@ QStackedLayout::QStackedLayout()
manage the geometry of its children.
*/
QStackedLayout::QStackedLayout(QWidget *parent)
- : QLayout(*new QStackedLayoutPrivate, 0, parent)
+ : QLayout(*new QStackedLayoutPrivate, nullptr, parent)
{
}
@@ -174,7 +174,7 @@ QStackedLayout::QStackedLayout(QWidget *parent)
the given \a parentLayout.
*/
QStackedLayout::QStackedLayout(QLayout *parentLayout)
- : QLayout(*new QStackedLayoutPrivate, parentLayout, 0)
+ : QLayout(*new QStackedLayoutPrivate, parentLayout, nullptr)
{
}
@@ -264,7 +264,7 @@ QLayoutItem *QStackedLayout::takeAt(int index)
{
Q_D(QStackedLayout);
if (index <0 || index >= d->list.size())
- return 0;
+ return nullptr;
QLayoutItem *item = d->list.takeAt(index);
if (index == d->index) {
d->index = -1;
@@ -307,7 +307,7 @@ void QStackedLayout::setCurrentIndex(int index)
parent->setUpdatesEnabled(false);
}
- QPointer<QWidget> fw = parent ? parent->window()->focusWidget() : 0;
+ QPointer<QWidget> fw = parent ? parent->window()->focusWidget() : nullptr;
const bool focusWasOnOldPage = fw && (prev && prev->isAncestorOf(fw));
if (prev) {
diff --git a/src/widgets/kernel/qstandardgestures.cpp b/src/widgets/kernel/qstandardgestures.cpp
index 8a95b12d89..a5c204d59d 100644
--- a/src/widgets/kernel/qstandardgestures.cpp
+++ b/src/widgets/kernel/qstandardgestures.cpp
@@ -183,7 +183,7 @@ QGestureRecognizer::Result QPinchGestureRecognizer::recognize(QGesture *state,
}
case QEvent::TouchUpdate: {
const QTouchEvent *ev = static_cast<const QTouchEvent *>(event);
- d->changeFlags = 0;
+ d->changeFlags = { };
if (ev->touchPoints().size() == 2) {
QTouchEvent::TouchPoint p1 = ev->touchPoints().at(0);
QTouchEvent::TouchPoint p2 = ev->touchPoints().at(1);
@@ -256,7 +256,7 @@ void QPinchGestureRecognizer::reset(QGesture *state)
QPinchGesture *pinch = static_cast<QPinchGesture *>(state);
QPinchGesturePrivate *d = pinch->d_func();
- d->totalChangeFlags = d->changeFlags = 0;
+ d->totalChangeFlags = d->changeFlags = { };
d->startCenterPoint = d->lastCenterPoint = d->centerPoint = QPointF();
d->totalScaleFactor = d->lastScaleFactor = d->scaleFactor = 1;
diff --git a/src/widgets/kernel/qtestsupport_widgets.h b/src/widgets/kernel/qtestsupport_widgets.h
index ca1406b0b2..2b37a9e858 100644
--- a/src/widgets/kernel/qtestsupport_widgets.h
+++ b/src/widgets/kernel/qtestsupport_widgets.h
@@ -40,7 +40,7 @@
#ifndef QTESTSUPPORT_WIDGETS_H
#define QTESTSUPPORT_WIDGETS_H
-#include "qtwidgetsglobal.h"
+#include <QtWidgets/qtwidgetsglobal.h>
QT_BEGIN_NAMESPACE
diff --git a/src/widgets/kernel/qtooltip.cpp b/src/widgets/kernel/qtooltip.cpp
index 1ec3612457..33dd3e59b6 100644
--- a/src/widgets/kernel/qtooltip.cpp
+++ b/src/widgets/kernel/qtooltip.cpp
@@ -154,7 +154,7 @@ public slots:
*/
void styleSheetParentDestroyed() {
setProperty("_q_stylesheet_parent", QVariant());
- styleSheetParent = 0;
+ styleSheetParent = nullptr;
}
private:
@@ -166,11 +166,11 @@ private:
QRect rect;
};
-QTipLabel *QTipLabel::instance = 0;
+QTipLabel *QTipLabel::instance = nullptr;
QTipLabel::QTipLabel(const QString &text, const QPoint &pos, QWidget *w, int msecDisplayTime)
#ifndef QT_NO_STYLE_STYLESHEET
- : QLabel(w, Qt::ToolTip | Qt::BypassGraphicsProxyWidget), styleSheetParent(0), widget(0)
+ : QLabel(w, Qt::ToolTip | Qt::BypassGraphicsProxyWidget), styleSheetParent(nullptr), widget(nullptr)
#else
: QLabel(w, Qt::ToolTip | Qt::BypassGraphicsProxyWidget), widget(0)
#endif
@@ -181,12 +181,12 @@ QTipLabel::QTipLabel(const QString &text, const QPoint &pos, QWidget *w, int mse
setBackgroundRole(QPalette::ToolTipBase);
setPalette(QToolTip::palette());
ensurePolished();
- setMargin(1 + style()->pixelMetric(QStyle::PM_ToolTipLabelFrameWidth, 0, this));
+ setMargin(1 + style()->pixelMetric(QStyle::PM_ToolTipLabelFrameWidth, nullptr, this));
setFrameStyle(QFrame::NoFrame);
setAlignment(Qt::AlignLeft);
setIndent(1);
qApp->installEventFilter(this);
- setWindowOpacity(style()->styleHint(QStyle::SH_ToolTipLabel_Opacity, 0, this) / 255.0);
+ setWindowOpacity(style()->styleHint(QStyle::SH_ToolTipLabel_Opacity, nullptr, this) / 255.0);
setMouseTracking(true);
fadingOut = false;
reuseTip(text, msecDisplayTime, pos);
@@ -207,7 +207,7 @@ void QTipLabel::reuseTip(const QString &text, int msecDisplayTime, const QPoint
if (styleSheetParent){
disconnect(styleSheetParent, SIGNAL(destroyed()),
QTipLabel::instance, SLOT(styleSheetParentDestroyed()));
- styleSheetParent = 0;
+ styleSheetParent = nullptr;
}
#endif
@@ -281,7 +281,7 @@ void QTipLabel::mouseMoveEvent(QMouseEvent *e)
QTipLabel::~QTipLabel()
{
- instance = 0;
+ instance = nullptr;
}
void QTipLabel::hideTip()
@@ -560,7 +560,7 @@ void QToolTip::showText(const QPoint &pos, const QString &text, QWidget *w)
*/
bool QToolTip::isVisible()
{
- return (QTipLabel::instance != 0 && QTipLabel::instance->isVisible());
+ return (QTipLabel::instance != nullptr && QTipLabel::instance->isVisible());
}
/*!
diff --git a/src/widgets/kernel/qwhatsthis.cpp b/src/widgets/kernel/qwhatsthis.cpp
index 228ca4d38a..8a632a395a 100644
--- a/src/widgets/kernel/qwhatsthis.cpp
+++ b/src/widgets/kernel/qwhatsthis.cpp
@@ -163,7 +163,7 @@ private:
QPixmap background;
};
-QWhatsThat *QWhatsThat::instance = 0;
+QWhatsThat *QWhatsThat::instance = nullptr;
// shadowWidth not const, for XP drop-shadow-fu turns it to 0
static int shadowWidth = 6; // also used as '5' and '6' and even '8' below
@@ -193,7 +193,7 @@ QWhatsThat::QWhatsThat(const QString& txt, QWidget* parent, QWidget *showTextFor
setCursor(Qt::ArrowCursor);
#endif
QRect r;
- doc = 0;
+ doc = nullptr;
ensurePolished(); // Ensures style sheet font before size calc
if (Qt::mightBeRichText(text)) {
doc = new QTextDocument();
@@ -229,7 +229,7 @@ QWhatsThat::QWhatsThat(const QString& txt, QWidget* parent, QWidget *showTextFor
QWhatsThat::~QWhatsThat()
{
- instance = 0;
+ instance = nullptr;
if (doc)
delete doc;
}
@@ -383,7 +383,7 @@ void QWhatsThisPrivate::notifyToplevels(QEvent *e)
QCoreApplication::sendEvent(w, e);
}
-QWhatsThisPrivate *QWhatsThisPrivate::instance = 0;
+QWhatsThisPrivate *QWhatsThisPrivate::instance = nullptr;
QWhatsThisPrivate::QWhatsThisPrivate()
: leaveOnMouseRelease(false)
@@ -423,7 +423,7 @@ QWhatsThisPrivate::~QWhatsThisPrivate()
QAccessibleEvent event(this, QAccessible::ContextHelpEnd);
QAccessible::updateAccessibility(&event);
#endif
- instance = 0;
+ instance = nullptr;
}
bool QWhatsThisPrivate::eventFilter(QObject *o, QEvent *e)
@@ -497,7 +497,7 @@ class QWhatsThisAction: public QAction
Q_OBJECT
public:
- explicit QWhatsThisAction(QObject* parent = 0);
+ explicit QWhatsThisAction(QObject* parent = nullptr);
private slots:
void actionTriggered();
@@ -553,7 +553,7 @@ void QWhatsThis::enterWhatsThisMode()
*/
bool QWhatsThis::inWhatsThisMode()
{
- return (QWhatsThisPrivate::instance != 0);
+ return (QWhatsThisPrivate::instance != nullptr);
}
/*!
@@ -577,7 +577,7 @@ void QWhatsThisPrivate::say(QWidget * widget, const QString &text, int x, int y)
if (text.size() == 0)
return;
// make a fresh widget, and set it up
- QWhatsThat *whatsThat = new QWhatsThat(text, 0, widget);
+ QWhatsThat *whatsThat = new QWhatsThat(text, nullptr, widget);
// okay, now to find a suitable location
int scr = (widget ?
diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp
index dcc694efe4..767a1d2a8a 100644
--- a/src/widgets/kernel/qwidget.cpp
+++ b/src/widgets/kernel/qwidget.cpp
@@ -132,16 +132,16 @@ extern QDesktopWidget *qt_desktopWidget; // qapplication.cpp
QWidgetPrivate::QWidgetPrivate(int version)
: QObjectPrivate(version)
- , focus_next(0)
- , focus_prev(0)
- , focus_child(0)
- , layout(0)
- , needsFlush(0)
- , redirectDev(0)
- , widgetItem(0)
- , extraPaintEngine(0)
- , polished(0)
- , graphicsEffect(0)
+ , focus_next(nullptr)
+ , focus_prev(nullptr)
+ , focus_child(nullptr)
+ , layout(nullptr)
+ , needsFlush(nullptr)
+ , redirectDev(nullptr)
+ , widgetItem(nullptr)
+ , extraPaintEngine(nullptr)
+ , polished(nullptr)
+ , graphicsEffect(nullptr)
#if !defined(QT_NO_IM)
, imHints(Qt::ImhNone)
#endif
@@ -159,7 +159,7 @@ QWidgetPrivate::QWidgetPrivate(int version)
, topLayoutItemMargin(0)
, rightLayoutItemMargin(0)
, bottomLayoutItemMargin(0)
- , hd(0)
+ , hd(nullptr)
, size_policy(QSizePolicy::Preferred, QSizePolicy::Preferred)
, fg_role(QPalette::NoRole)
, bg_role(QPalette::NoRole)
@@ -214,7 +214,7 @@ QWidgetPrivate::QWidgetPrivate(int version)
QWidgetPrivate::~QWidgetPrivate()
{
if (widgetItem)
- widgetItem->wid = 0;
+ widgetItem->wid = nullptr;
if (extra)
deleteExtra();
@@ -396,7 +396,7 @@ void QWidget::setAutoFillBackground(bool enabled)
If it is \nullptr (the default), the new widget will be a window.
If not, it will be a child of \e parent, and be constrained by
\e parent's geometry (unless you specify Qt::Window as window flag).
- \li \c{Qt::WindowFlags f = 0} (where available) sets the window flags;
+ \li \c{Qt::WindowFlags f = { }} (where available) sets the window flags;
the default is suitable for almost all widgets, but to get, for
example, a window without a window system frame, you must use
special flags.
@@ -819,8 +819,8 @@ void QWidget::setAutoFillBackground(bool enabled)
*/
-QWidgetMapper *QWidgetPrivate::mapper = 0; // widget with wid
-QWidgetSet *QWidgetPrivate::allWidgets = 0; // widgets with no wid
+QWidgetMapper *QWidgetPrivate::mapper = nullptr; // widget with wid
+QWidgetSet *QWidgetPrivate::allWidgets = nullptr; // widgets with no wid
/*****************************************************************************
@@ -890,7 +890,7 @@ struct QWidgetExceptionCleaner
\sa windowFlags
*/
QWidget::QWidget(QWidget *parent, Qt::WindowFlags f)
- : QObject(*new QWidgetPrivate, 0), QPaintDevice()
+ : QObject(*new QWidgetPrivate, nullptr), QPaintDevice()
{
QT_TRY {
d_func()->init(parent, f);
@@ -904,7 +904,7 @@ QWidget::QWidget(QWidget *parent, Qt::WindowFlags f)
/*! \internal
*/
QWidget::QWidget(QWidgetPrivate &dd, QWidget* parent, Qt::WindowFlags f)
- : QObject(dd, 0), QPaintDevice()
+ : QObject(dd, nullptr), QPaintDevice()
{
Q_D(QWidget);
QT_TRY {
@@ -996,7 +996,7 @@ void QWidgetPrivate::init(QWidget *parentWidget, Qt::WindowFlags f)
if (parentWidget && parentWidget->windowType() == Qt::Desktop) {
const QDesktopScreenWidget *sw = qobject_cast<const QDesktopScreenWidget *>(parentWidget);
targetScreen = sw ? sw->screenNumber() : 0;
- parentWidget = 0;
+ parentWidget = nullptr;
}
q->data = &data;
@@ -1072,7 +1072,7 @@ void QWidgetPrivate::init(QWidget *parentWidget, Qt::WindowFlags f)
QCoreApplication::sendEvent(q, &e);
QCoreApplication::postEvent(q, new QEvent(QEvent::PolishRequest));
- extraPaintEngine = 0;
+ extraPaintEngine = nullptr;
}
void QWidgetPrivate::createRecursively()
@@ -1307,9 +1307,9 @@ void QWidgetPrivate::create()
if (nativeParent->windowHandle()) {
if (flags & Qt::Window) {
win->setTransientParent(nativeParent->window()->windowHandle());
- win->setParent(0);
+ win->setParent(nullptr);
} else {
- win->setTransientParent(0);
+ win->setTransientParent(nullptr);
win->setParent(nativeParent->windowHandle());
}
}
@@ -1442,7 +1442,7 @@ QWidget::~QWidget()
// delete layout while we still are a valid widget
delete d->layout;
- d->layout = 0;
+ d->layout = nullptr;
// Remove myself from focus list
Q_ASSERT(d->focus_next->d_func()->focus_prev == this);
@@ -1451,7 +1451,7 @@ QWidget::~QWidget()
if (d->focus_next != this) {
d->focus_next->d_func()->focus_prev = d->focus_prev;
d->focus_prev->d_func()->focus_next = d->focus_next;
- d->focus_next = d->focus_prev = 0;
+ d->focus_next = d->focus_prev = nullptr;
}
@@ -1493,7 +1493,7 @@ QWidget::~QWidget()
}
delete d->needsFlush;
- d->needsFlush = 0;
+ d->needsFlush = nullptr;
// The next 20 lines are duplicated from QObject, but required here
// since QWidget deletes is children itself
@@ -1520,7 +1520,7 @@ QWidget::~QWidget()
if (QAbstractDeclarativeData::destroyed)
QAbstractDeclarativeData::destroyed(d->declarativeData, this);
}
- d->declarativeData = 0; // don't activate again in ~QObject
+ d->declarativeData = nullptr; // don't activate again in ~QObject
d->wasDeleted = false;
}
@@ -1564,7 +1564,7 @@ void QWidgetPrivate::setWinId(WId id) // set widget identifier
// will have the same windowid (the root window id) as the
// qt_desktopWidget. We should not add the second desktop widget
// to the mapper.
- bool userDesktopWidget = qt_desktopWidget != 0 && qt_desktopWidget != q && q->windowType() == Qt::Desktop;
+ bool userDesktopWidget = qt_desktopWidget != nullptr && qt_desktopWidget != q && q->windowType() == Qt::Desktop;
if (mapper && data.winid && !userDesktopWidget) {
mapper->remove(data.winid);
}
@@ -1589,19 +1589,19 @@ void QWidgetPrivate::createTLExtra()
if (!extra->topextra) {
extra->topextra = qt_make_unique<QTLWExtra>();
QTLWExtra* x = extra->topextra.get();
- x->backingStore = 0;
- x->sharedPainter = 0;
+ x->backingStore = nullptr;
+ x->sharedPainter = nullptr;
x->incw = x->inch = 0;
x->basew = x->baseh = 0;
x->frameStrut.setCoords(0, 0, 0, 0);
x->normalGeometry = QRect(0,0,-1,-1);
- x->savedFlags = 0;
+ x->savedFlags = { };
x->opacity = 255;
x->posIncludesFrame = 0;
x->sizeAdjusted = false;
x->inTopLevelResize = false;
x->embedded = 0;
- x->window = 0;
+ x->window = nullptr;
x->initialScreenIndex = -1;
#ifdef QWIDGET_EXTRA_DEBUG
@@ -1620,9 +1620,9 @@ void QWidgetPrivate::createExtra()
{
if (!extra) { // if not exists
extra = qt_make_unique<QWExtra>();
- extra->glContext = 0;
+ extra->glContext = nullptr;
#if QT_CONFIG(graphicsview)
- extra->proxyWidget = 0;
+ extra->proxyWidget = nullptr;
#endif
extra->minw = 0;
extra->minh = 0;
@@ -1681,7 +1681,7 @@ static void deleteBackingStore(QWidgetPrivate *d)
QTLWExtra *topData = d->topData();
delete topData->backingStore;
- topData->backingStore = 0;
+ topData->backingStore = nullptr;
}
void QWidgetPrivate::deleteTLSysExtra()
@@ -1705,7 +1705,7 @@ void QWidgetPrivate::deleteTLSysExtra()
extra->topextra->window->destroy();
}
delete extra->topextra->window;
- extra->topextra->window = 0;
+ extra->topextra->window = nullptr;
}
}
@@ -1805,7 +1805,7 @@ void QWidgetPrivate::paintOnScreen(const QRegion &rgn)
if (toBePainted.isEmpty())
return; // Nothing to repaint.
- drawWidget(q, toBePainted, QPoint(), QWidgetPrivate::DrawAsRoot | QWidgetPrivate::DrawPaintOnScreen, 0);
+ drawWidget(q, toBePainted, QPoint(), QWidgetPrivate::DrawAsRoot | QWidgetPrivate::DrawPaintOnScreen, nullptr);
if (Q_UNLIKELY(q->paintingActive()))
qWarning("QWidget::repaint: It is dangerous to leave painters active on a widget outside of the PaintEvent");
@@ -2302,10 +2302,10 @@ void QWidgetPrivate::deactivateWidgetCleanup()
Q_Q(QWidget);
// If this was the active application window, reset it
if (QApplication::activeWindow() == q)
- QApplication::setActiveWindow(0);
+ QApplication::setActiveWindow(nullptr);
// If the is the active mouse press widget, reset it
if (q == qt_button_down)
- qt_button_down = 0;
+ qt_button_down = nullptr;
}
@@ -2563,7 +2563,7 @@ void QWidget::setStyleSheet(const QString& styleSheet)
if (testAttribute(Qt::WA_SetStyle)) {
d->setStyle_helper(new QStyleSheetStyle(d->extra->style), true);
} else {
- d->setStyle_helper(new QStyleSheetStyle(0), true);
+ d->setStyle_helper(new QStyleSheetStyle(nullptr), true);
}
}
@@ -2606,7 +2606,7 @@ QStyle *QWidget::style() const
void QWidget::setStyle(QStyle *style)
{
Q_D(QWidget);
- setAttribute(Qt::WA_SetStyle, style != 0);
+ setAttribute(Qt::WA_SetStyle, style != nullptr);
d->createExtra();
#ifndef QT_NO_STYLE_STYLESHEET
if (QStyleSheetStyle *styleSheetStyle = qt_styleSheet(style)) {
@@ -2686,7 +2686,7 @@ void QWidgetPrivate::inheritStyle()
QStyle *origStyle = proxy ? proxy->base : extraStyle;
QWidget *parent = q->parentWidget();
- QStyle *parentStyle = (parent && parent->d_func()->extra) ? (QStyle*)parent->d_func()->extra->style : 0;
+ QStyle *parentStyle = (parent && parent->d_func()->extra) ? (QStyle*)parent->d_func()->extra->style : nullptr;
// If we have stylesheet on app or parent has stylesheet style, we need
// to be running a proxy
if (!qApp->styleSheet().isEmpty() || qt_styleSheet(parentStyle)) {
@@ -2709,7 +2709,7 @@ void QWidgetPrivate::inheritStyle()
// In such a case we need to start following the application style (i.e revert
// the propagation behavior of QStyleSheetStyle)
if (!q->testAttribute(Qt::WA_SetStyle))
- origStyle = 0;
+ origStyle = nullptr;
setStyle_helper(origStyle, true);
#endif // QT_NO_STYLE_STYLESHEET
@@ -3085,7 +3085,7 @@ bool QWidget::isEnabledTo(const QWidget *ancestor) const
*/
void QWidget::addAction(QAction *action)
{
- insertAction(0, action);
+ insertAction(nullptr, action);
}
/*!
@@ -3100,7 +3100,7 @@ void QWidget::addActions(QList<QAction*> actions)
#endif
{
for(int i = 0; i < actions.count(); i++)
- insertAction(0, actions.at(i));
+ insertAction(nullptr, actions.at(i));
}
/*!
@@ -3125,7 +3125,7 @@ void QWidget::insertAction(QAction *before, QAction *action)
int pos = d->actions.indexOf(before);
if (pos < 0) {
- before = 0;
+ before = nullptr;
pos = d->actions.size();
}
d->actions.insert(pos, action);
@@ -4606,7 +4606,7 @@ void QWidgetPrivate::updateFont(const QFont &font)
Q_Q(QWidget);
#ifndef QT_NO_STYLE_STYLESHEET
const QStyleSheetStyle* cssStyle;
- cssStyle = extra ? qt_styleSheet(extra->style) : 0;
+ cssStyle = extra ? qt_styleSheet(extra->style) : nullptr;
const bool useStyleSheetPropagationInWidgetStyles =
QCoreApplication::testAttribute(Qt::AA_UseStyleSheetPropagationInWidgetStyles);
#endif
@@ -4842,7 +4842,7 @@ void qt_qpa_set_cursor(QWidget *w, bool force)
if (!w->testAttribute(Qt::WA_WState_Created))
return;
- static QPointer<QWidget> lastUnderMouse = 0;
+ static QPointer<QWidget> lastUnderMouse = nullptr;
if (force) {
lastUnderMouse = w;
} else if (lastUnderMouse) {
@@ -5119,7 +5119,7 @@ void QWidget::setGraphicsEffect(QGraphicsEffect *effect)
if (d->graphicsEffect) {
d->invalidateBackingStore(rect());
delete d->graphicsEffect;
- d->graphicsEffect = 0;
+ d->graphicsEffect = nullptr;
}
if (effect) {
@@ -5313,7 +5313,7 @@ void QWidgetPrivate::drawWidget(QPaintDevice *pdev, const QRegion &rgn, const QP
setSystemClip(sharedPainter->paintEngine(), 1, QRegion());
sharedPainter->restore();
}
- sourced->context = 0;
+ sourced->context = nullptr;
if (repaintManager)
repaintManager->markNeedsFlush(q, rgn, offset);
@@ -5431,7 +5431,7 @@ void QWidgetPrivate::drawWidget(QPaintDevice *pdev, const QRegion &rgn, const QP
if (!sharedPainter)
paintEngine->d_func()->systemRect = QRect();
else
- paintEngine->d_func()->currentClipDevice = 0;
+ paintEngine->d_func()->currentClipDevice = nullptr;
setSystemClip(pdev->paintEngine(), 1, QRegion());
}
@@ -5492,7 +5492,7 @@ void QWidgetPrivate::render(QPaintDevice *target, const QPoint &targetOffset,
if (paintRegion.isEmpty())
return;
- QPainter *oldSharedPainter = inRenderWithPainter ? sharedPainter() : 0;
+ QPainter *oldSharedPainter = inRenderWithPainter ? sharedPainter() : nullptr;
// Use the target's shared painter if set (typically set when doing
// "other->render(widget);" in the widget's paintEvent.
@@ -5553,7 +5553,7 @@ void QWidgetPrivate::paintSiblingsRecursive(QPaintDevice *pdev, const QObjectLis
const QPoint &offset, DrawWidgetFlags flags
, QPainter *sharedPainter, QWidgetRepaintManager *repaintManager)
{
- QWidget *w = 0;
+ QWidget *w = nullptr;
QRect boundingRect;
bool dirtyBoundingRect = true;
const bool exludeOpaqueChildren = (flags & DontDrawOpaqueChildren);
@@ -5847,7 +5847,7 @@ QString qt_setWindowTitle_helperHelper(const QString &title, const QWidget *widg
if (count%2) { // odd number of [*] -> replace last one
int lastIndex = cap.lastIndexOf(placeHolder, index - 1);
if (widget->isWindowModified()
- && widget->style()->styleHint(QStyle::SH_TitleBar_ModifyNotification, 0, widget))
+ && widget->style()->styleHint(QStyle::SH_TitleBar_ModifyNotification, nullptr, widget))
cap.replace(lastIndex, 3, QWidget::tr("*"));
else
cap.remove(lastIndex, 3);
@@ -6299,7 +6299,7 @@ void QWidget::setFocus(Qt::FocusReason reason)
return;
#if QT_CONFIG(graphicsview)
- QWidget *previousProxyFocus = 0;
+ QWidget *previousProxyFocus = nullptr;
if (const auto &topData = window()->d_func()->extra) {
if (topData->proxyWidget && topData->proxyWidget->hasFocus()) {
previousProxyFocus = topData->proxyWidget->widget()->focusWidget();
@@ -6439,12 +6439,12 @@ void QWidgetPrivate::updateFocusChild()
if (q->isHidden()) {
while (w && w->isHidden()) {
w->d_func()->focus_child = q;
- w = w->isWindow() ? 0 : w->parentWidget();
+ w = w->isWindow() ? nullptr : w->parentWidget();
}
} else {
while (w) {
w->d_func()->focus_child = q;
- w = w->isWindow() ? 0 : w->parentWidget();
+ w = w->isWindow() ? nullptr : w->parentWidget();
}
}
@@ -6490,7 +6490,7 @@ void QWidget::clearFocus()
while (w) {
// Just like setFocus(), we update (clear) the focus_child of our parents
if (w->d_func()->focus_child == this)
- w->d_func()->focus_child = 0;
+ w->d_func()->focus_child = nullptr;
w = w->parentWidget();
}
@@ -6511,7 +6511,7 @@ void QWidget::clearFocus()
if (hasFocus()) {
// Update proxy state
- QApplicationPrivate::setFocusWidget(0, Qt::OtherFocusReason);
+ QApplicationPrivate::setFocusWidget(nullptr, Qt::OtherFocusReason);
#ifndef QT_NO_ACCESSIBILITY
QAccessibleEvent event(this, QAccessible::Focus);
QAccessible::updateAccessibility(&event);
@@ -6588,10 +6588,10 @@ bool QWidget::focusNextPrevChild(bool next)
*/
if (wrappingOccurred) {
QWindow *window = windowHandle();
- if (window != 0) {
+ if (window != nullptr) {
QWindowPrivate *winp = qt_window_private(window);
- if (winp->platformWindow != 0) {
+ if (winp->platformWindow != nullptr) {
QFocusEvent event(QEvent::FocusIn, reason);
event.ignore();
winp->platformWindow->windowEvent(&event);
@@ -6669,7 +6669,7 @@ bool QWidget::isActiveWindow() const
}
#endif
- if(style()->styleHint(QStyle::SH_Widget_ShareActivation, 0, this)) {
+ if (style()->styleHint(QStyle::SH_Widget_ShareActivation, nullptr, this)) {
if(tlw->windowType() == Qt::Tool &&
!tlw->isModal() &&
(!tlw->parentWidget() || tlw->parentWidget()->isActiveWindow()))
@@ -6825,9 +6825,9 @@ void QWidgetPrivate::reparentFocusWidgets(QWidget * oldtlw)
focus_child->clearFocus();
// separate the focus chain into new (children of myself) and old (the rest)
- QWidget *firstOld = 0;
+ QWidget *firstOld = nullptr;
//QWidget *firstNew = q; //invariant
- QWidget *o = 0; // last in the old list
+ QWidget *o = nullptr; // last in the old list
QWidget *n = q; // last in the new list
bool prevWasNew = true;
@@ -7835,7 +7835,7 @@ void QWidgetPrivate::show_helper()
#endif
if (QApplicationPrivate::hidden_focus_widget == q) {
- QApplicationPrivate::hidden_focus_widget = 0;
+ QApplicationPrivate::hidden_focus_widget = nullptr;
q->setFocus(Qt::OtherFocusReason);
}
@@ -7934,7 +7934,7 @@ void QWidgetPrivate::hide_helper()
bool isEmbedded = false;
#if QT_CONFIG(graphicsview)
- isEmbedded = q->isWindow() && !bypassGraphicsProxyWidget(q) && nearestGraphicsProxyWidget(q->parentWidget()) != 0;
+ isEmbedded = q->isWindow() && !bypassGraphicsProxyWidget(q) && nearestGraphicsProxyWidget(q->parentWidget()) != nullptr;
#else
Q_UNUSED(isEmbedded);
#endif
@@ -8127,7 +8127,7 @@ void QWidgetPrivate::setVisible(bool visible)
QCoreApplication::sendEvent(q, &showToParentEvent);
} else { // hide
if (QApplicationPrivate::hidden_focus_widget == q)
- QApplicationPrivate::hidden_focus_widget = 0;
+ QApplicationPrivate::hidden_focus_widget = nullptr;
// hw: The test on getOpaqueRegion() needs to be more intelligent
// currently it doesn't work if the widget is hidden (the region will
@@ -8837,7 +8837,7 @@ bool QWidget::event(QEvent *event)
case Qt::ActionsContextMenu:
if (d->actions.count()) {
QMenu::exec(d->actions, static_cast<QContextMenuEvent *>(event)->globalPos(),
- 0, this);
+ nullptr, this);
break;
}
Q_FALLTHROUGH();
@@ -10029,9 +10029,9 @@ QLayout *QWidget::takeLayout()
Q_D(QWidget);
QLayout *l = layout();
if (!l)
- return 0;
- d->layout = 0;
- l->setParent(0);
+ return nullptr;
+ d->layout = nullptr;
+ l->setParent(nullptr);
return l;
}
@@ -10153,10 +10153,10 @@ QWidget *QWidget::childAt(const QPoint &p) const
QWidget *QWidgetPrivate::childAt_helper(const QPoint &p, bool ignoreChildrenInDestructor) const
{
if (children.isEmpty())
- return 0;
+ return nullptr;
if (!pointInsideRectAndMask(p))
- return 0;
+ return nullptr;
return childAtRecursiveHelper(p, ignoreChildrenInDestructor);
}
@@ -10184,7 +10184,7 @@ QWidget *QWidgetPrivate::childAtRecursiveHelper(const QPoint &p, bool ignoreChil
// We have found our target; namely the child at position 'p'.
return child;
}
- return 0;
+ return nullptr;
}
void QWidgetPrivate::updateGeometry_helper(bool forceUpdate)
@@ -10397,7 +10397,7 @@ void QWidget::setParent(QWidget *parent, Qt::WindowFlags f)
if (f & Qt::Window) // Frame geometry likely changes, refresh.
d->data.fstrut_dirty = true;
- QWidget *desktopWidget = 0;
+ QWidget *desktopWidget = nullptr;
if (parent && parent->windowType() == Qt::Desktop)
desktopWidget = parent;
bool newParent = (parent != parentWidget()) || !wasCreated || desktopWidget;
@@ -10425,7 +10425,7 @@ void QWidget::setParent(QWidget *parent, Qt::WindowFlags f)
d->setParent_sys(parent, f);
if (desktopWidget)
- parent = 0;
+ parent = nullptr;
#ifndef QT_NO_OPENGL
if (d->textureChildSeen && parent) {
@@ -10539,7 +10539,7 @@ void QWidgetPrivate::setParent_sys(QWidget *newparent, Qt::WindowFlags f)
// programmer specified desktop widget
const QDesktopScreenWidget *sw = qobject_cast<const QDesktopScreenWidget *>(newparent);
targetScreen = sw ? sw->screenNumber() : 0;
- newparent = 0;
+ newparent = nullptr;
}
setWinId(0);
@@ -10549,19 +10549,19 @@ void QWidgetPrivate::setParent_sys(QWidget *newparent, Qt::WindowFlags f)
if (q->windowHandle()) {
q->windowHandle()->setFlags(f);
QWidget *parentWithWindow =
- newparent ? (newparent->windowHandle() ? newparent : newparent->nativeParentWidget()) : 0;
+ newparent ? (newparent->windowHandle() ? newparent : newparent->nativeParentWidget()) : nullptr;
if (parentWithWindow) {
QWidget *topLevel = parentWithWindow->window();
if ((f & Qt::Window) && topLevel && topLevel->windowHandle()) {
q->windowHandle()->setTransientParent(topLevel->windowHandle());
- q->windowHandle()->setParent(0);
+ q->windowHandle()->setParent(nullptr);
} else {
- q->windowHandle()->setTransientParent(0);
+ q->windowHandle()->setTransientParent(nullptr);
q->windowHandle()->setParent(parentWithWindow->windowHandle());
}
} else {
- q->windowHandle()->setTransientParent(0);
- q->windowHandle()->setParent(0);
+ q->windowHandle()->setTransientParent(nullptr);
+ q->windowHandle()->setParent(nullptr);
}
}
}
@@ -10592,7 +10592,7 @@ void QWidgetPrivate::setParent_sys(QWidget *newparent, Qt::WindowFlags f)
continue;
QWidgetWindow *childWW = qobject_cast<QWidgetWindow *>(childWindow);
- QWidget *childWidget = childWW ? childWW->widget() : 0;
+ QWidget *childWidget = childWW ? childWW->widget() : nullptr;
if (!childWW || (childWidget && childWidget->testAttribute(Qt::WA_NativeWindow)))
childWindow->setParent(newParentWindow);
}
@@ -11998,7 +11998,7 @@ QOpenGLContext *QWidgetPrivate::shareContext() const
return 0;
#else
if (!extra || !extra->topextra || !extra->topextra->window)
- return 0;
+ return nullptr;
if (!extra->topextra->shareContext) {
auto ctx = qt_make_unique<QOpenGLContext>();
@@ -12057,7 +12057,7 @@ QGraphicsProxyWidget *QWidget::graphicsProxyWidget() const
if (d->extra) {
return d->extra->proxyWidget;
}
- return 0;
+ return nullptr;
}
#endif
@@ -12118,7 +12118,7 @@ void QWidget::destroy(bool destroyWindow, bool destroySubWindows)
qApp->d_func()->closePopup(this);
if (this == QApplicationPrivate::active_window)
- QApplication::setActiveWindow(0);
+ QApplication::setActiveWindow(nullptr);
if (QWidget::mouseGrabber() == this)
releaseMouse();
if (QWidget::keyboardGrabber() == this)
@@ -12182,7 +12182,7 @@ QPaintEngine *QWidget::paintEngine() const
const_cast<QWidgetPrivate *>(d_func())->noPaintOnScreen = 1;
#endif
- return 0; //##### @@@
+ return nullptr; //##### @@@
}
// Do not call QWindow::mapToGlobal() until QPlatformWindow is properly showing.
@@ -12269,10 +12269,10 @@ QPoint QWidget::mapFromGlobal(const QPoint &pos) const
return t.transform.inverted().map(windowLocal);
}
-QWidget *qt_pressGrab = 0;
-QWidget *qt_mouseGrb = 0;
+QWidget *qt_pressGrab = nullptr;
+QWidget *qt_mouseGrb = nullptr;
static bool mouseGrabWithCursor = false;
-static QWidget *keyboardGrb = 0;
+static QWidget *keyboardGrb = nullptr;
static inline QWindow *grabberWindow(const QWidget *w)
{
@@ -12284,7 +12284,7 @@ static inline QWindow *grabberWindow(const QWidget *w)
}
#ifndef QT_NO_CURSOR
-static void grabMouseForWidget(QWidget *widget, const QCursor *cursor = 0)
+static void grabMouseForWidget(QWidget *widget, const QCursor *cursor = nullptr)
#else
static void grabMouseForWidget(QWidget *widget)
#endif
@@ -12304,7 +12304,7 @@ static void grabMouseForWidget(QWidget *widget)
}
qt_mouseGrb = widget;
- qt_pressGrab = 0;
+ qt_pressGrab = nullptr;
}
static void releaseMouseGrabOfWidget(QWidget *widget)
@@ -12320,7 +12320,7 @@ static void releaseMouseGrabOfWidget(QWidget *widget)
window->setMouseGrabEnabled(false);
}
}
- qt_mouseGrb = 0;
+ qt_mouseGrb = nullptr;
}
/*!
@@ -12449,7 +12449,7 @@ void QWidget::releaseKeyboard()
if (keyboardGrb == this) {
if (QWindow *window = grabberWindow(this))
window->setKeyboardGrabEnabled(false);
- keyboardGrb = 0;
+ keyboardGrb = nullptr;
}
}
@@ -12526,8 +12526,8 @@ void QWidget::activateWindow()
*/
int QWidget::metric(PaintDeviceMetric m) const
{
- QWindow *topLevelWindow = 0;
- QScreen *screen = 0;
+ QWindow *topLevelWindow = nullptr;
+ QScreen *screen = nullptr;
if (QWidget *topLevel = window()) {
topLevelWindow = topLevel->windowHandle();
if (topLevelWindow)
@@ -12613,14 +12613,14 @@ QPainter *QWidget::sharedPainter() const
{
// Someone sent a paint event directly to the widget
if (!d_func()->redirectDev)
- return 0;
+ return nullptr;
QPainter *sp = d_func()->sharedPainter();
if (!sp || !sp->isActive())
- return 0;
+ return nullptr;
if (sp->paintEngine()->paintDevice() != d_func()->redirectDev)
- return 0;
+ return nullptr;
return sp;
}
diff --git a/src/widgets/kernel/qwidget.h b/src/widgets/kernel/qwidget.h
index 83a6e6d4b3..415a738eb4 100644
--- a/src/widgets/kernel/qwidget.h
+++ b/src/widgets/kernel/qwidget.h
@@ -175,11 +175,11 @@ class Q_WIDGETS_EXPORT QWidget : public QObject, public QPaintDevice
Q_PROPERTY(QSize sizeHint READ sizeHint)
Q_PROPERTY(QSize minimumSizeHint READ minimumSizeHint)
Q_PROPERTY(bool acceptDrops READ acceptDrops WRITE setAcceptDrops)
- Q_PROPERTY(QString windowTitle READ windowTitle WRITE setWindowTitle NOTIFY windowTitleChanged DESIGNABLE isWindow)
- Q_PROPERTY(QIcon windowIcon READ windowIcon WRITE setWindowIcon NOTIFY windowIconChanged DESIGNABLE isWindow)
- Q_PROPERTY(QString windowIconText READ windowIconText WRITE setWindowIconText NOTIFY windowIconTextChanged DESIGNABLE isWindow) // deprecated
- Q_PROPERTY(double windowOpacity READ windowOpacity WRITE setWindowOpacity DESIGNABLE isWindow)
- Q_PROPERTY(bool windowModified READ isWindowModified WRITE setWindowModified DESIGNABLE isWindow)
+ Q_PROPERTY(QString windowTitle READ windowTitle WRITE setWindowTitle NOTIFY windowTitleChanged)
+ Q_PROPERTY(QIcon windowIcon READ windowIcon WRITE setWindowIcon NOTIFY windowIconChanged)
+ Q_PROPERTY(QString windowIconText READ windowIconText WRITE setWindowIconText NOTIFY windowIconTextChanged) // deprecated
+ Q_PROPERTY(double windowOpacity READ windowOpacity WRITE setWindowOpacity)
+ Q_PROPERTY(bool windowModified READ isWindowModified WRITE setWindowModified)
#ifndef QT_NO_TOOLTIP
Q_PROPERTY(QString toolTip READ toolTip WRITE setToolTip)
Q_PROPERTY(int toolTipDuration READ toolTipDuration WRITE setToolTipDuration)
@@ -201,7 +201,7 @@ class Q_WIDGETS_EXPORT QWidget : public QObject, public QPaintDevice
Q_PROPERTY(QString styleSheet READ styleSheet WRITE setStyleSheet)
#endif
Q_PROPERTY(QLocale locale READ locale WRITE setLocale RESET unsetLocale)
- Q_PROPERTY(QString windowFilePath READ windowFilePath WRITE setWindowFilePath DESIGNABLE isWindow)
+ Q_PROPERTY(QString windowFilePath READ windowFilePath WRITE setWindowFilePath)
Q_PROPERTY(Qt::InputMethodHints inputMethodHints READ inputMethodHints WRITE setInputMethodHints)
public:
diff --git a/src/widgets/kernel/qwidget_p.h b/src/widgets/kernel/qwidget_p.h
index 698928b0b0..6915782cb3 100644
--- a/src/widgets/kernel/qwidget_p.h
+++ b/src/widgets/kernel/qwidget_p.h
@@ -420,7 +420,7 @@ public:
void setVisible(bool);
void setEnabled_helper(bool);
- static void adjustFlags(Qt::WindowFlags &flags, QWidget *w = 0);
+ static void adjustFlags(Qt::WindowFlags &flags, QWidget *w = nullptr);
void updateFrameStrut();
QRect frameStrut() const;
@@ -592,7 +592,7 @@ public:
Q_Q(QWidget);
return q->testAttribute(Qt::WA_AlwaysStackOnTop)
? QPlatformTextureList::StacksOnTop
- : QPlatformTextureList::Flags(nullptr);
+ : QPlatformTextureList::Flags();
}
virtual QImage grabFramebuffer() { return QImage(); }
virtual void beginBackingStorePainting() { }
diff --git a/src/widgets/kernel/qwidgetaction.cpp b/src/widgets/kernel/qwidgetaction.cpp
index 6eebaca42c..9649e51b92 100644
--- a/src/widgets/kernel/qwidgetaction.cpp
+++ b/src/widgets/kernel/qwidgetaction.cpp
@@ -146,7 +146,7 @@ void QWidgetAction::setDefaultWidget(QWidget *widget)
setVisible(!(widget->isHidden() && widget->testAttribute(Qt::WA_WState_ExplicitShowHide)));
d->defaultWidget->hide();
- d->defaultWidget->setParent(0);
+ d->defaultWidget->setParent(nullptr);
d->defaultWidgetInUse = false;
if (!isEnabled())
d->defaultWidget->setEnabled(false);
@@ -177,7 +177,7 @@ QWidget *QWidgetAction::requestWidget(QWidget *parent)
QWidget *w = createWidget(parent);
if (!w) {
if (d->defaultWidgetInUse || !d->defaultWidget)
- return 0;
+ return nullptr;
d->defaultWidget->setParent(parent);
d->defaultWidgetInUse = true;
return d->defaultWidget;
@@ -203,7 +203,7 @@ void QWidgetAction::releaseWidget(QWidget *widget)
if (widget == d->defaultWidget) {
d->defaultWidget->hide();
- d->defaultWidget->setParent(0);
+ d->defaultWidget->setParent(nullptr);
d->defaultWidgetInUse = false;
return;
}
@@ -251,7 +251,7 @@ bool QWidgetAction::eventFilter(QObject *obj, QEvent *event)
QWidget *QWidgetAction::createWidget(QWidget *parent)
{
Q_UNUSED(parent)
- return 0;
+ return nullptr;
}
/*!
diff --git a/src/widgets/kernel/qwidgetrepaintmanager.cpp b/src/widgets/kernel/qwidgetrepaintmanager.cpp
index c3211e275f..135a1527ac 100644
--- a/src/widgets/kernel/qwidgetrepaintmanager.cpp
+++ b/src/widgets/kernel/qwidgetrepaintmanager.cpp
@@ -695,7 +695,7 @@ static QPlatformTextureList *widgetTexturesFor(QWidget *tlw, QWidget *widget)
return qt_dummy_platformTextureList();
}
- return 0;
+ return nullptr;
}
#else
@@ -788,7 +788,7 @@ bool QWidgetRepaintManager::syncAllowed()
QTLWExtra *tlwExtra = tlw->d_func()->maybeTopData();
if (textureListWatcher && !textureListWatcher->isLocked()) {
textureListWatcher->deleteLater();
- textureListWatcher = 0;
+ textureListWatcher = nullptr;
} else if (!tlwExtra->widgetTextures.empty()) {
bool skipSync = false;
for (const auto &tl : tlwExtra->widgetTextures) {
@@ -822,7 +822,7 @@ void QWidgetRepaintManager::paintAndFlush()
if (hasStaticContents() && !store->size().isEmpty() ) {
// Repaint existing dirty area and newly visible area.
const QRect clipRect(0, 0, surfaceGeometry.width(), surfaceGeometry.height());
- const QRegion staticRegion(staticContents(0, clipRect));
+ const QRegion staticRegion(staticContents(nullptr, clipRect));
QRegion newVisible(0, 0, tlwRect.width(), tlwRect.height());
newVisible -= staticRegion;
dirty += newVisible;
@@ -1008,13 +1008,13 @@ void QWidgetRepaintManager::paintAndFlush()
QPoint offset;
if (w != tlw)
offset += w->mapTo(tlw, QPoint());
- wd->drawWidget(store->paintDevice(), toBePainted, offset, flags, 0, this);
+ wd->drawWidget(store->paintDevice(), toBePainted, offset, flags, nullptr, this);
}
// Paint the rest with composition.
if (repaintAllWidgets || !dirtyCopy.isEmpty()) {
QWidgetPrivate::DrawWidgetFlags flags = QWidgetPrivate::DrawAsRoot | QWidgetPrivate::DrawRecursive;
- tlw->d_func()->drawWidget(store->paintDevice(), dirtyCopy, QPoint(), flags, 0, this);
+ tlw->d_func()->drawWidget(store->paintDevice(), dirtyCopy, QPoint(), flags, nullptr, this);
}
store->endPaint();
@@ -1108,7 +1108,7 @@ void QWidgetRepaintManager::flush()
for (QWidget *w : qExchange(needsFlushWidgets, {})) {
QWidgetPrivate *wd = w->d_func();
Q_ASSERT(wd->needsFlush);
- QPlatformTextureList *widgetTexturesForNative = wd->textureChildSeen ? widgetTexturesFor(tlw, w) : 0;
+ QPlatformTextureList *widgetTexturesForNative = wd->textureChildSeen ? widgetTexturesFor(tlw, w) : nullptr;
flush(w, *wd->needsFlush, widgetTexturesForNative);
*wd->needsFlush = QRegion();
}
@@ -1284,7 +1284,7 @@ QRegion QWidgetRepaintManager::staticContents(QWidget *parent, const QRect &with
wd->clipToEffectiveMask(visible);
if (visible.isEmpty())
continue;
- wd->subtractOpaqueSiblings(visible, 0, /*alsoNonOpaque=*/true);
+ wd->subtractOpaqueSiblings(visible, nullptr, /*alsoNonOpaque=*/true);
visible.translate(offset);
region += visible;
@@ -1331,7 +1331,7 @@ void QWidgetPrivate::invalidateBackingStore_resizeHelper(const QPoint &oldPos, c
if (!staticContents || graphicsEffect) {
QRegion staticChildren;
- QWidgetRepaintManager *bs = 0;
+ QWidgetRepaintManager *bs = nullptr;
if (offset.isNull() && (bs = maybeRepaintManager()))
staticChildren = bs->staticContents(q, oldWidgetRect);
const bool hasStaticChildren = !staticChildren.isEmpty();
diff --git a/src/widgets/kernel/qwidgetsvariant.cpp b/src/widgets/kernel/qwidgetsvariant.cpp
index 02b4ea20a7..41600d2143 100644
--- a/src/widgets/kernel/qwidgetsvariant.cpp
+++ b/src/widgets/kernel/qwidgetsvariant.cpp
@@ -125,12 +125,12 @@ static const QVariant::Handler widgets_handler = {
clear,
isNull,
#ifndef QT_NO_DATASTREAM
- 0,
- 0,
+ nullptr,
+ nullptr,
#endif
compare,
convert,
- 0,
+ nullptr,
#if !defined(QT_NO_DEBUG_STREAM)
streamDebug
#else
diff --git a/src/widgets/kernel/qwidgetwindow.cpp b/src/widgets/kernel/qwidgetwindow.cpp
index 596343c52f..904067afda 100644
--- a/src/widgets/kernel/qwidgetwindow.cpp
+++ b/src/widgets/kernel/qwidgetwindow.cpp
@@ -57,10 +57,10 @@ QT_BEGIN_NAMESPACE
Q_WIDGETS_EXPORT extern bool qt_tab_all_widgets();
-Q_WIDGETS_EXPORT QWidget *qt_button_down = 0; // widget got last button-down
+Q_WIDGETS_EXPORT QWidget *qt_button_down = nullptr; // widget got last button-down
// popup control
-QWidget *qt_popup_down = 0; // popup that contains the pressed widget
+QWidget *qt_popup_down = nullptr; // popup that contains the pressed widget
extern int openPopupCount;
bool qt_replay_popup_mouse_event = false;
extern bool qt_try_modal(QWidget *widget, QEvent::Type type);
@@ -156,7 +156,7 @@ QOpenGLContext *QWidgetWindowPrivate::shareContext() const
#endif // opengl
QWidgetWindow::QWidgetWindow(QWidget *widget)
- : QWindow(*new QWidgetWindowPrivate(), 0)
+ : QWindow(*new QWidgetWindowPrivate(), nullptr)
, m_widget(widget)
{
updateObjectName();
@@ -179,7 +179,7 @@ QAccessibleInterface *QWidgetWindow::accessibleRoot() const
{
if (m_widget)
return QAccessible::queryAccessibleInterface(m_widget);
- return 0;
+ return nullptr;
}
#endif
@@ -374,7 +374,7 @@ bool QWidgetWindow::event(QEvent *event)
#endif // QT_NO_CONTEXTMENU
case QEvent::WindowBlocked:
- qt_button_down = 0;
+ qt_button_down = nullptr;
break;
case QEvent::UpdateRequest:
@@ -393,7 +393,7 @@ bool QWidgetWindow::event(QEvent *event)
return QWindow::event(event);
}
-QPointer<QWidget> qt_last_mouse_receiver = 0;
+QPointer<QWidget> qt_last_mouse_receiver = nullptr;
void QWidgetWindow::handleEnterLeaveEvent(QEvent *event)
{
@@ -406,7 +406,7 @@ void QWidgetWindow::handleEnterLeaveEvent(QEvent *event)
return;
#endif
if (event->type() == QEvent::Leave) {
- QWidget *enter = 0;
+ QWidget *enter = nullptr;
// Check from window system event queue if the next queued enter targets a window
// in the same window hierarchy (e.g. enter a child of this window). If so,
// remove the enter event from queue and handle both in single dispatch.
@@ -484,13 +484,13 @@ QWidget *QWidgetWindow::getFocusWidget(FocusWidgets fw)
void QWidgetWindow::handleFocusInEvent(QFocusEvent *e)
{
- QWidget *focusWidget = 0;
+ QWidget *focusWidget = nullptr;
if (e->reason() == Qt::BacktabFocusReason)
focusWidget = getFocusWidget(LastFocusWidget);
else if (e->reason() == Qt::TabFocusReason)
focusWidget = getFocusWidget(FirstFocusWidget);
- if (focusWidget != 0)
+ if (focusWidget != nullptr)
focusWidget->setFocus();
}
@@ -513,8 +513,8 @@ void QWidgetWindow::handleMouseEvent(QMouseEvent *event)
QWidget *popupChild = activePopupWidget->childAt(mapped);
if (activePopupWidget != qt_popup_down) {
- qt_button_down = 0;
- qt_popup_down = 0;
+ qt_button_down = nullptr;
+ qt_popup_down = nullptr;
}
switch (event->type()) {
@@ -589,7 +589,7 @@ void QWidgetWindow::handleMouseEvent(QMouseEvent *event)
&& qt_replay_popup_mouse_event
&& QGuiApplicationPrivate::platformIntegration()->styleHint(QPlatformIntegration::ReplayMousePressOutsidePopup).toBool()) {
if (m_widget->windowType() != Qt::Popup)
- qt_button_down = 0;
+ qt_button_down = nullptr;
if (event->type() == QEvent::MouseButtonPress) {
// the popup disappeared, replay the mouse press event
QWidget *w = QApplication::widgetAt(event->globalPos());
@@ -636,8 +636,8 @@ void QWidgetWindow::handleMouseEvent(QMouseEvent *event)
#endif
if (releaseAfter) {
- qt_button_down = 0;
- qt_popup_down = 0;
+ qt_button_down = nullptr;
+ qt_popup_down = nullptr;
}
return;
}
@@ -1050,7 +1050,7 @@ bool QWidgetWindow::nativeEvent(const QByteArray &eventType, void *message, long
#if QT_CONFIG(tabletevent)
void QWidgetWindow::handleTabletEvent(QTabletEvent *event)
{
- static QPointer<QWidget> qt_tablet_target = 0;
+ static QPointer<QWidget> qt_tablet_target = nullptr;
QWidget *widget = qt_tablet_target;
@@ -1076,7 +1076,7 @@ void QWidgetWindow::handleTabletEvent(QTabletEvent *event)
}
if (event->type() == QEvent::TabletRelease && event->buttons() == Qt::NoButton)
- qt_tablet_target = 0;
+ qt_tablet_target = nullptr;
}
#endif // QT_CONFIG(tabletevent)
@@ -1084,7 +1084,7 @@ void QWidgetWindow::handleTabletEvent(QTabletEvent *event)
void QWidgetWindow::handleGestureEvent(QNativeGestureEvent *e)
{
// copy-pasted code to find correct widget follows:
- QObject *receiver = 0;
+ QObject *receiver = nullptr;
if (QApplicationPrivate::inPopupMode()) {
QWidget *popup = QApplication::activePopupWidget();
QWidget *popupFocusWidget = popup->focusWidget();
diff --git a/src/widgets/kernel/qwindowcontainer.cpp b/src/widgets/kernel/qwindowcontainer.cpp
index fd8581edbb..b4d889fdfa 100644
--- a/src/widgets/kernel/qwindowcontainer.cpp
+++ b/src/widgets/kernel/qwindowcontainer.cpp
@@ -58,8 +58,8 @@ public:
Q_DECLARE_PUBLIC(QWindowContainer)
QWindowContainerPrivate()
- : window(0)
- , oldFocusWindow(0)
+ : window(nullptr)
+ , oldFocusWindow(nullptr)
, usesNativeWidgets(false)
{
}
@@ -70,7 +70,7 @@ public:
QWindowContainer *wc = qobject_cast<QWindowContainer *>(w);
if (wc)
return wc->d_func();
- return 0;
+ return nullptr;
}
void updateGeometry() {
@@ -90,7 +90,7 @@ public:
void updateUsesNativeWidgets()
{
- if (window->parent() == 0)
+ if (window->parent() == nullptr)
return;
Q_Q(QWindowContainer);
if (q->internalWinId()) {
@@ -295,7 +295,7 @@ bool QWindowContainer::event(QEvent *e)
case QEvent::ChildRemoved: {
QChildEvent *ce = static_cast<QChildEvent *>(e);
if (ce->child() == d->window)
- d->window = 0;
+ d->window = nullptr;
break;
}
// The only thing we are interested in is making sure our sizes stay
diff --git a/src/widgets/kernel/qwindowcontainer_p.h b/src/widgets/kernel/qwindowcontainer_p.h
index c6de168c10..72474077aa 100644
--- a/src/widgets/kernel/qwindowcontainer_p.h
+++ b/src/widgets/kernel/qwindowcontainer_p.h
@@ -64,7 +64,7 @@ class Q_WIDGETS_EXPORT QWindowContainer : public QWidget
Q_DECLARE_PRIVATE(QWindowContainer)
public:
- explicit QWindowContainer(QWindow *embeddedWindow, QWidget *parent = nullptr, Qt::WindowFlags f = nullptr);
+ explicit QWindowContainer(QWindow *embeddedWindow, QWidget *parent = nullptr, Qt::WindowFlags f = { });
~QWindowContainer();
QWindow *containedWindow() const;
diff --git a/src/widgets/kernel/win.pri b/src/widgets/kernel/win.pri
index 3b3170beb1..eede987b4c 100644
--- a/src/widgets/kernel/win.pri
+++ b/src/widgets/kernel/win.pri
@@ -1,7 +1,6 @@
# Qt/Windows only configuration file
# --------------------------------------------------------------------
-INCLUDEPATH += ../3rdparty/wintab
!winrt {
LIBS_PRIVATE *= -luxtheme -ldwmapi
QMAKE_USE_PRIVATE += shell32
diff --git a/src/widgets/statemachine/qguistatemachine.cpp b/src/widgets/statemachine/qguistatemachine.cpp
index 42691d6b77..b310da5781 100644
--- a/src/widgets/statemachine/qguistatemachine.cpp
+++ b/src/widgets/statemachine/qguistatemachine.cpp
@@ -456,7 +456,7 @@ const QStateMachinePrivate::Handler qt_gui_statemachine_handler = {
cloneEvent
};
-static const QStateMachinePrivate::Handler *qt_guistatemachine_last_handler = 0;
+static const QStateMachinePrivate::Handler *qt_guistatemachine_last_handler = nullptr;
void qRegisterGuiStateMachine()
{
qt_guistatemachine_last_handler = QStateMachinePrivate::handler;
diff --git a/src/widgets/styles/qcommonstyle.cpp b/src/widgets/styles/qcommonstyle.cpp
index 09d65f0346..03081658bb 100644
--- a/src/widgets/styles/qcommonstyle.cpp
+++ b/src/widgets/styles/qcommonstyle.cpp
@@ -123,7 +123,7 @@ QT_BEGIN_NAMESPACE
static QWindow *qt_getWindow(const QWidget *widget)
{
- return widget ? widget->window()->windowHandle() : 0;
+ return widget ? widget->window()->windowHandle() : nullptr;
}
/*!
@@ -353,7 +353,7 @@ void QCommonStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, Q
p->fillRect(mid_h, opt->rect.y(), 1, bef_v - opt->rect.y(), brush);
break; }
case PE_FrameStatusBarItem:
- qDrawShadeRect(p, opt->rect, opt->palette, true, 1, 0, 0);
+ qDrawShadeRect(p, opt->rect, opt->palette, true, 1, 0, nullptr);
break;
case PE_IndicatorHeaderArrow:
if (const QStyleOptionHeader *header = qstyleoption_cast<const QStyleOptionHeader *>(opt)) {
@@ -450,7 +450,7 @@ void QCommonStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, Q
#endif // QT_CONFIG(tabbar)
case PE_FrameTabWidget:
case PE_FrameWindow:
- qDrawWinPanel(p, opt->rect, opt->palette, false, 0);
+ qDrawWinPanel(p, opt->rect, opt->palette, false, nullptr);
break;
case PE_FrameLineEdit:
proxy()->drawPrimitive(PE_Frame, opt, p, widget);
@@ -493,17 +493,17 @@ void QCommonStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, Q
x -= 2;
if (opt->rect.height() > 4) {
qDrawShadePanel(p, x, 2, 3, opt->rect.height() - 4,
- opt->palette, false, 1, 0);
+ opt->palette, false, 1, nullptr);
qDrawShadePanel(p, x+3, 2, 3, opt->rect.height() - 4,
- opt->palette, false, 1, 0);
+ opt->palette, false, 1, nullptr);
}
} else {
if (opt->rect.width() > 4) {
int y = opt->rect.height() / 3;
qDrawShadePanel(p, 2, y, opt->rect.width() - 4, 3,
- opt->palette, false, 1, 0);
+ opt->palette, false, 1, nullptr);
qDrawShadePanel(p, 2, y+3, opt->rect.width() - 4, 3,
- opt->palette, false, 1, 0);
+ opt->palette, false, 1, nullptr);
}
}
p->restore();
@@ -818,7 +818,7 @@ void QCommonStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, Q
#if QT_CONFIG(toolbutton)
static void drawArrow(const QStyle *style, const QStyleOptionToolButton *toolbutton,
- const QRect &rect, QPainter *painter, const QWidget *widget = 0)
+ const QRect &rect, QPainter *painter, const QWidget *widget = nullptr)
{
QStyle::PrimitiveElement pe;
switch (toolbutton->arrowType) {
@@ -1016,7 +1016,7 @@ QSize QCommonStylePrivate::viewItemSize(const QStyleOptionViewItem *option, int
void QCommonStylePrivate::viewItemDrawText(QPainter *p, const QStyleOptionViewItem *option, const QRect &rect) const
{
const QWidget *widget = option->widget;
- const int textMargin = proxyStyle->pixelMetric(QStyle::PM_FocusFrameHMargin, 0, widget) + 1;
+ const int textMargin = proxyStyle->pixelMetric(QStyle::PM_FocusFrameHMargin, nullptr, widget) + 1;
QRect textRect = rect.adjusted(textMargin, 0, -textMargin, 0); // remove width padding
const bool wrapText = option->features & QStyleOptionViewItem::WrapText;
@@ -2931,8 +2931,8 @@ QRect QCommonStyle::subElementRect(SubElement sr, const QStyleOption *opt,
case SE_TabBarScrollLeftButton: {
const bool vertical = opt->rect.width() < opt->rect.height();
const Qt::LayoutDirection ld = widget->layoutDirection();
- const int buttonWidth = qMax(proxy()->pixelMetric(QStyle::PM_TabBarScrollButtonWidth, 0, widget), QApplication::globalStrut().width());
- const int buttonOverlap = proxy()->pixelMetric(QStyle::PM_TabBar_ScrollButtonOverlap, 0, widget);
+ const int buttonWidth = qMax(proxy()->pixelMetric(QStyle::PM_TabBarScrollButtonWidth, nullptr, widget), QApplication::globalStrut().width());
+ const int buttonOverlap = proxy()->pixelMetric(QStyle::PM_TabBar_ScrollButtonOverlap, nullptr, widget);
r = vertical ? QRect(0, opt->rect.height() - (buttonWidth * 2) + buttonOverlap, opt->rect.width(), buttonWidth)
: QStyle::visualRect(ld, opt->rect, QRect(opt->rect.width() - (buttonWidth * 2) + buttonOverlap, 0, buttonWidth, opt->rect.height()));
@@ -2940,7 +2940,7 @@ QRect QCommonStyle::subElementRect(SubElement sr, const QStyleOption *opt,
case SE_TabBarScrollRightButton: {
const bool vertical = opt->rect.width() < opt->rect.height();
const Qt::LayoutDirection ld = widget->layoutDirection();
- const int buttonWidth = qMax(proxy()->pixelMetric(QStyle::PM_TabBarScrollButtonWidth, 0, widget), QApplication::globalStrut().width());
+ const int buttonWidth = qMax(proxy()->pixelMetric(QStyle::PM_TabBarScrollButtonWidth, nullptr, widget), QApplication::globalStrut().width());
r = vertical ? QRect(0, opt->rect.height() - buttonWidth, opt->rect.width(), buttonWidth)
: QStyle::visualRect(ld, opt->rect, QRect(opt->rect.width() - buttonWidth, 0, buttonWidth, opt->rect.height()));
@@ -3030,8 +3030,8 @@ QRect QCommonStyle::subElementRect(SubElement sr, const QStyleOption *opt,
const QStyleOptionDockWidget *dwOpt
= qstyleoption_cast<const QStyleOptionDockWidget*>(opt);
- bool canClose = dwOpt == 0 ? true : dwOpt->closable;
- bool canFloat = dwOpt == 0 ? false : dwOpt->floatable;
+ bool canClose = dwOpt == nullptr ? true : dwOpt->closable;
+ bool canFloat = dwOpt == nullptr ? false : dwOpt->floatable;
const bool verticalTitleBar = dwOpt && dwOpt->verticalTitleBar;
@@ -3134,7 +3134,7 @@ QRect QCommonStyle::subElementRect(SubElement sr, const QStyleOption *opt,
d->viewItemLayout(vopt, &d->checkRect, &d->decorationRect, &d->displayRect, false);
if (d->cachedOption) {
delete d->cachedOption;
- d->cachedOption = 0;
+ d->cachedOption = nullptr;
}
d->cachedOption = new QStyleOptionViewItem(*vopt);
}
@@ -5143,7 +5143,7 @@ int QCommonStyle::styleHint(StyleHint sh, const QStyleOption *opt, const QWidget
case SH_Table_GridLineColor:
if (opt)
- ret = opt->palette.color(QPalette::Mid).rgb();
+ ret = opt->palette.color(QPalette::Mid).rgba();
else
ret = -1;
break;
diff --git a/src/widgets/styles/qcommonstyle_p.h b/src/widgets/styles/qcommonstyle_p.h
index 4860dfe4c9..6223a26a54 100644
--- a/src/widgets/styles/qcommonstyle_p.h
+++ b/src/widgets/styles/qcommonstyle_p.h
@@ -122,7 +122,7 @@ public:
mutable QIcon tabBarcloseButtonIcon;
#if QT_CONFIG(tabbar)
- void tabLayout(const QStyleOptionTab *opt, const QWidget *widget, QRect *textRect, QRect *pixmapRect) const;
+ virtual void tabLayout(const QStyleOptionTab *opt, const QWidget *widget, QRect *textRect, QRect *pixmapRect) const;
#endif
int animationFps;
diff --git a/src/widgets/styles/qfusionstyle.cpp b/src/widgets/styles/qfusionstyle.cpp
index 3bffd7873f..03d083bbf1 100644
--- a/src/widgets/styles/qfusionstyle.cpp
+++ b/src/widgets/styles/qfusionstyle.cpp
@@ -1590,7 +1590,7 @@ void QFusionStyle::drawControl(ControlElement element, const QStyleOption *optio
(option->styleObject && option->styleObject->property("_q_isComboBoxPopupItem").toBool()))
ignoreCheckMark = true; //ignore the checkmarks provided by the QComboMenuDelegate
- if (!ignoreCheckMark) {
+ if (!ignoreCheckMark || menuItem->state & (State_On | State_Off)) {
// Check, using qreal and QRectF to avoid error accumulation
const qreal boxMargin = dpiScaled(3.5, option);
const qreal boxWidth = checkcol - 2 * boxMargin;
@@ -1601,7 +1601,7 @@ void QFusionStyle::drawControl(ControlElement element, const QStyleOption *optio
if (checkable) {
if (menuItem->checkType & QStyleOptionMenuItem::Exclusive) {
// Radio button
- if (checked || sunken) {
+ if (menuItem->state & State_On || checked || sunken) {
painter->setRenderHint(QPainter::Antialiasing);
painter->setPen(Qt::NoPen);
@@ -1617,8 +1617,10 @@ void QFusionStyle::drawControl(ControlElement element, const QStyleOption *optio
QStyleOptionButton box;
box.QStyleOption::operator=(*option);
box.rect = checkRect;
- if (checked)
+ if (checked || menuItem->state & State_On)
box.state |= State_On;
+ else
+ box.state |= State_Off;
proxy()->drawPrimitive(PE_IndicatorCheckBox, &box, painter, widget);
}
}
@@ -3684,7 +3686,7 @@ int QFusionStyle::styleHint(StyleHint hint, const QStyleOption *option, const QW
return 0;
case SH_Table_GridLineColor:
- return option ? option->palette.window().color().darker(120).rgb() : 0;
+ return option ? option->palette.window().color().darker(120).rgba() : 0;
case SH_MessageBox_TextInteractionFlags:
return Qt::TextSelectableByMouse | Qt::LinksAccessibleByMouse;
diff --git a/src/widgets/styles/qproxystyle.cpp b/src/widgets/styles/qproxystyle.cpp
index 5739678932..cfaa5a2011 100644
--- a/src/widgets/styles/qproxystyle.cpp
+++ b/src/widgets/styles/qproxystyle.cpp
@@ -90,7 +90,7 @@ void QProxyStylePrivate::ensureBaseStyle() const
if (qstrcmp(baseStyle->metaObject()->className(),
q->metaObject()->className()) == 0) {
delete baseStyle;
- baseStyle = 0;
+ baseStyle = nullptr;
}
}
}
diff --git a/src/widgets/styles/qstyle.cpp b/src/widgets/styles/qstyle.cpp
index 6cbed34c3a..d2f5ac76f9 100644
--- a/src/widgets/styles/qstyle.cpp
+++ b/src/widgets/styles/qstyle.cpp
@@ -1835,7 +1835,7 @@ void QStyle::drawItemPixmap(QPainter *painter, const QRect &rect, int alignment,
\value SH_LineEdit_PasswordMaskDelay Determines the delay before visible character is masked
with password character, in milliseconds. This enum value was added in Qt 5.4.
- \value SH_Table_GridLineColor The RGB value of the grid for a table.
+ \value SH_Table_GridLineColor The RGBA value of the grid for a table.
\value SH_UnderlineShortcut Whether shortcuts are underlined.
diff --git a/src/widgets/styles/qstylefactory.cpp b/src/widgets/styles/qstylefactory.cpp
index b0ce5e52cf..2c4f6f83a1 100644
--- a/src/widgets/styles/qstylefactory.cpp
+++ b/src/widgets/styles/qstylefactory.cpp
@@ -88,7 +88,7 @@ Q_GLOBAL_STATIC_WITH_ARGS(QFactoryLoader, loader,
*/
QStyle *QStyleFactory::create(const QString& key)
{
- QStyle *ret = 0;
+ QStyle *ret = nullptr;
QString style = key.toLower();
#if QT_CONFIG(style_windows)
if (style == QLatin1String("windows"))
diff --git a/src/widgets/styles/qstylehelper.cpp b/src/widgets/styles/qstylehelper.cpp
index 9477ca86da..61a59b03c1 100644
--- a/src/widgets/styles/qstylehelper.cpp
+++ b/src/widgets/styles/qstylehelper.cpp
@@ -132,7 +132,7 @@ bool isInstanceOf(QObject *obj, QAccessible::Role role)
bool hasAncestor(QObject *obj, QAccessible::Role role)
{
bool found = false;
- QObject *parent = obj ? obj->parent() : 0;
+ QObject *parent = obj ? obj->parent() : nullptr;
while (parent && !found) {
if (isInstanceOf(parent, role))
found = true;
diff --git a/src/widgets/styles/qstyleoption.cpp b/src/widgets/styles/qstyleoption.cpp
index 01cadd9a86..1af839c841 100644
--- a/src/widgets/styles/qstyleoption.cpp
+++ b/src/widgets/styles/qstyleoption.cpp
@@ -151,7 +151,7 @@ QT_BEGIN_NAMESPACE
QStyleOption::QStyleOption(int version, int type)
: version(version), type(type), state(QStyle::State_None),
- direction(QGuiApplication::layoutDirection()), fontMetrics(QFont()), styleObject(0)
+ direction(QGuiApplication::layoutDirection()), fontMetrics(QFont()), styleObject(nullptr)
{
}
@@ -2909,7 +2909,7 @@ QStyleOptionRubberBand::QStyleOptionRubberBand(int version)
*/
QStyleOptionTitleBar::QStyleOptionTitleBar()
- : QStyleOptionComplex(Version, SO_TitleBar), titleBarState(0), titleBarFlags(0)
+ : QStyleOptionComplex(Version, SO_TitleBar), titleBarState(0)
{
}
@@ -2954,7 +2954,7 @@ QStyleOptionTitleBar::QStyleOptionTitleBar()
\internal
*/
QStyleOptionTitleBar::QStyleOptionTitleBar(int version)
- : QStyleOptionComplex(version, SO_TitleBar), titleBarState(0), titleBarFlags(0)
+ : QStyleOptionComplex(version, SO_TitleBar), titleBarState(0)
{
}
@@ -3085,7 +3085,7 @@ QStyleOptionViewItem::QStyleOptionViewItem()
: QStyleOption(Version, SO_ViewItem),
displayAlignment(Qt::AlignLeft), decorationAlignment(Qt::AlignLeft),
textElideMode(Qt::ElideMiddle), decorationPosition(Left),
- showDecorationSelected(false), features(None), widget(0),
+ showDecorationSelected(false), features(None), widget(nullptr),
checkState(Qt::Unchecked), viewItemPosition(QStyleOptionViewItem::Invalid)
{
}
@@ -3097,7 +3097,7 @@ QStyleOptionViewItem::QStyleOptionViewItem(int version)
: QStyleOption(version, SO_ViewItem),
displayAlignment(Qt::AlignLeft), decorationAlignment(Qt::AlignLeft),
textElideMode(Qt::ElideMiddle), decorationPosition(Left),
- showDecorationSelected(false), features(None), widget(0),
+ showDecorationSelected(false), features(None), widget(nullptr),
checkState(Qt::Unchecked), viewItemPosition(QStyleOptionViewItem::Invalid)
{
}
diff --git a/src/widgets/styles/qstylesheetstyle.cpp b/src/widgets/styles/qstylesheetstyle.cpp
index 98c85684ae..7e8c9a6050 100644
--- a/src/widgets/styles/qstylesheetstyle.cpp
+++ b/src/widgets/styles/qstylesheetstyle.cpp
@@ -133,7 +133,7 @@ public:
};
-static QStyleSheetStyleCaches *styleSheetCaches = 0;
+static QStyleSheetStyleCaches *styleSheetCaches = nullptr;
/* RECURSION_GUARD:
* the QStyleSheetStyle is a proxy. If used with others proxy style, we may end up with something like:
@@ -144,16 +144,16 @@ static QStyleSheetStyleCaches *styleSheetCaches = 0;
* The first instance of QStyleSheetStyle will set globalStyleSheetStyle to itself. The second one
* will notice the globalStyleSheetStyle is not istelf and call its base style directly.
*/
-static const QStyleSheetStyle *globalStyleSheetStyle = 0;
+static const QStyleSheetStyle *globalStyleSheetStyle = nullptr;
class QStyleSheetStyleRecursionGuard
{
public:
QStyleSheetStyleRecursionGuard(const QStyleSheetStyle *that)
- : guarded(globalStyleSheetStyle == 0)
+ : guarded(globalStyleSheetStyle == nullptr)
{
if (guarded) globalStyleSheetStyle = that;
}
- ~QStyleSheetStyleRecursionGuard() { if (guarded) globalStyleSheetStyle = 0; }
+ ~QStyleSheetStyleRecursionGuard() { if (guarded) globalStyleSheetStyle = nullptr; }
bool guarded;
};
#define RECURSION_GUARD(RETURN) \
@@ -371,7 +371,7 @@ struct QStyleSheetBackgroundData : public QSharedData
struct QStyleSheetBorderData : public QSharedData
{
- QStyleSheetBorderData() : bi(0)
+ QStyleSheetBorderData() : bi(nullptr)
{
for (int i = 0; i < 4; i++) {
borders[i] = 0;
@@ -379,7 +379,7 @@ struct QStyleSheetBorderData : public QSharedData
}
}
- QStyleSheetBorderData(int *b, QBrush *c, QCss::BorderStyle *s, QSize *r) : bi(0)
+ QStyleSheetBorderData(int *b, QBrush *c, QCss::BorderStyle *s, QSize *r) : bi(nullptr)
{
for (int i = 0; i < 4; i++) {
borders[i] = b[i];
@@ -396,7 +396,7 @@ struct QStyleSheetBorderData : public QSharedData
const QStyleSheetBorderImageData *borderImage() const
{ return bi; }
- bool hasBorderImage() const { return bi!=0; }
+ bool hasBorderImage() const { return bi!=nullptr; }
QSharedDataPointer<QStyleSheetBorderImageData> bi;
@@ -413,7 +413,7 @@ struct QStyleSheetBorderData : public QSharedData
if (!radii[i].isEmpty())
return false;
}
- if (bi != 0 && bi->pixmap.hasAlpha())
+ if (bi != nullptr && bi->pixmap.hasAlpha())
return false;
return true;
}
@@ -479,7 +479,7 @@ struct QStyleSheetGeometryData : public QSharedData
struct QStyleSheetPositionData : public QSharedData
{
- QStyleSheetPositionData(int l, int t, int r, int b, Origin o, Qt::Alignment p, QCss::PositionMode m, Qt::Alignment a = 0)
+ QStyleSheetPositionData(int l, int t, int r, int b, Origin o, Qt::Alignment p, QCss::PositionMode m, Qt::Alignment a = { })
: left(l), top(t), bottom(b), right(r), origin(o), position(p), mode(m), textAlignment(a) { }
int left, top, bottom, right;
@@ -502,7 +502,7 @@ struct QStyleSheetImageData : public QSharedData
class QRenderRule
{
public:
- QRenderRule() : features(0), hasFont(false), pal(0), b(0), bg(0), bd(0), ou(0), geo(0), p(0), img(0), clipset(0) { }
+ QRenderRule() : features(0), hasFont(false), pal(nullptr), b(nullptr), bg(nullptr), bd(nullptr), ou(nullptr), geo(nullptr), p(nullptr), img(nullptr), clipset(0) { }
QRenderRule(const QVector<QCss::Declaration> &, const QObject *);
QRect borderRect(const QRect &r) const;
@@ -534,21 +534,22 @@ public:
const QStyleSheetOutlineData *outline() const { return ou; }
const QStyleSheetGeometryData *geometry() const { return geo; }
const QStyleSheetPositionData *position() const { return p; }
+ const QStyleSheetImageData *icon() const { return iconPtr; }
bool hasModification() const;
- bool hasPalette() const { return pal != 0; }
- bool hasBackground() const { return bg != 0 && (!bg->pixmap.isNull() || bg->brush.style() != Qt::NoBrush); }
+ bool hasPalette() const { return pal != nullptr; }
+ bool hasBackground() const { return bg != nullptr && (!bg->pixmap.isNull() || bg->brush.style() != Qt::NoBrush); }
bool hasGradientBackground() const { return bg && bg->brush.style() >= Qt::LinearGradientPattern
&& bg->brush.style() <= Qt::ConicalGradientPattern; }
bool hasNativeBorder() const {
- return bd == 0
+ return bd == nullptr
|| (!bd->hasBorderImage() && bd->styles[0] == BorderStyle_Native);
}
bool hasNativeOutline() const {
- return (ou == 0
+ return (ou == nullptr
|| (!ou->hasBorderImage() && ou->styles[0] == BorderStyle_Native));
}
@@ -562,13 +563,14 @@ public:
return features & StyleFeature_BackgroundColor;
}
- bool hasBox() const { return b != 0; }
- bool hasBorder() const { return bd != 0; }
- bool hasOutline() const { return ou != 0; }
- bool hasPosition() const { return p != 0; }
- bool hasGeometry() const { return geo != 0; }
+ bool hasBox() const { return b != nullptr; }
+ bool hasBorder() const { return bd != nullptr; }
+ bool hasOutline() const { return ou != nullptr; }
+ bool hasPosition() const { return p != nullptr; }
+ bool hasGeometry() const { return geo != nullptr; }
bool hasDrawable() const { return !hasNativeBorder() || hasBackground() || hasImage(); }
- bool hasImage() const { return img != 0; }
+ bool hasImage() const { return img != nullptr; }
+ bool hasIcon() const { return iconPtr != nullptr; }
QSize minimumContentsSize() const
{ return geo ? QSize(geo->minWidth, geo->minHeight) : QSize(0, 0); }
@@ -628,6 +630,7 @@ public:
QSharedDataPointer<QStyleSheetGeometryData> geo;
QSharedDataPointer<QStyleSheetPositionData> p;
QSharedDataPointer<QStyleSheetImageData> img;
+ QSharedDataPointer<QStyleSheetImageData> iconPtr;
int clipset;
QPainterPath clipPath;
@@ -907,7 +910,7 @@ static QStyle::StandardPixmap subControlIcon(int pe)
}
QRenderRule::QRenderRule(const QVector<Declaration> &declarations, const QObject *object)
-: features(0), hasFont(false), pal(0), b(0), bg(0), bd(0), ou(0), geo(0), p(0), img(0), clipset(0)
+: features(0), hasFont(false), pal(nullptr), b(nullptr), bg(nullptr), bd(nullptr), ou(nullptr), geo(nullptr), p(nullptr), img(nullptr), clipset(0)
{
QPalette palette = QGuiApplication::palette(); // ###: ideally widget's palette
ValueExtractor v(declarations, palette);
@@ -919,9 +922,9 @@ QRenderRule::QRenderRule(const QVector<Declaration> &declarations, const QObject
int left = 0, top = 0, right = 0, bottom = 0;
Origin origin = Origin_Unknown;
- Qt::Alignment position = 0;
+ Qt::Alignment position;
QCss::PositionMode mode = PositionMode_Unknown;
- Qt::Alignment textAlignment = 0;
+ Qt::Alignment textAlignment;
if (v.extractPosition(&left, &top, &right, &bottom, &origin, &position, &mode, &textAlignment))
p = new QStyleSheetPositionData(left, top, right, bottom, origin, position, mode, textAlignment);
@@ -969,11 +972,16 @@ QRenderRule::QRenderRule(const QVector<Declaration> &declarations, const QObject
if (v.extractPalette(&fg, &sfg, &sbg, &abg))
pal = new QStyleSheetPaletteData(fg, sfg, sbg, abg);
- QIcon icon;
+ QIcon imgIcon;
alignment = Qt::AlignCenter;
+ QSize imgSize;
+ if (v.extractImage(&imgIcon, &alignment, &imgSize))
+ img = new QStyleSheetImageData(imgIcon, alignment, imgSize);
+
+ QIcon icon;
QSize size;
- if (v.extractImage(&icon, &alignment, &size))
- img = new QStyleSheetImageData(icon, alignment, size);
+ if (v.extractIcon(&icon, &size))
+ iconPtr = new QStyleSheetImageData(icon, Qt::AlignCenter, size);
int adj = -255;
hasFont = v.extractFont(&font, &adj);
@@ -1126,11 +1134,11 @@ QSize QRenderRule::boxSize(const QSize &cs, int flags) const
void QRenderRule::fixupBorder(int nativeWidth)
{
- if (bd == 0)
+ if (bd == nullptr)
return;
if (!bd->hasBorderImage() || bd->bi->pixmap.isNull()) {
- bd->bi = 0;
+ bd->bi = nullptr;
// ignore the color, border of edges that have none border-style
QBrush color = pal ? pal->foreground : QBrush();
const bool hasRadius = bd->radii[0].isValid() || bd->radii[1].isValid()
@@ -1507,7 +1515,7 @@ public:
do {
result += QString::fromLatin1(metaObject->className()).replace(QLatin1Char(':'), QLatin1Char('-'));
metaObject = metaObject->superClass();
- } while (metaObject != 0);
+ } while (metaObject != nullptr);
return result;
}
QString attribute(NodePtr node, const QString& name) const override
@@ -1531,7 +1539,7 @@ public:
return className;
} else if (name == QLatin1String("style")) {
QWidget *w = qobject_cast<QWidget *>(obj);
- QStyleSheetStyle *proxy = w ? qt_styleSheet(w->style()) : 0;
+ QStyleSheetStyle *proxy = w ? qt_styleSheet(w->style()) : nullptr;
if (proxy) {
QString styleName = QString::fromLatin1(proxy->baseStyle()->metaObject()->className());
cache[name] = styleName;
@@ -1567,7 +1575,7 @@ public:
if (uc == e && !*c)
return true;
metaObject = metaObject->superClass();
- } while (metaObject != 0);
+ } while (metaObject != nullptr);
return false;
}
bool hasAttributes(NodePtr) const override
@@ -1575,11 +1583,11 @@ public:
QStringList nodeIds(NodePtr node) const override
{ return isNullNode(node) ? QStringList() : QStringList(OBJECT_PTR(node)->objectName()); }
bool isNullNode(NodePtr node) const override
- { return node.ptr == 0; }
+ { return node.ptr == nullptr; }
NodePtr parentNode(NodePtr node) const override
- { NodePtr n; n.ptr = isNullNode(node) ? 0 : parentObject(OBJECT_PTR(node)); return n; }
+ { NodePtr n; n.ptr = isNullNode(node) ? nullptr : parentObject(OBJECT_PTR(node)); return n; }
NodePtr previousSiblingNode(NodePtr) const override
- { NodePtr n; n.ptr = 0; return n; }
+ { NodePtr n; n.ptr = nullptr; return n; }
NodePtr duplicateNode(NodePtr node) const override
{ return node; }
void freeNode(NodePtr) const override
@@ -1692,22 +1700,22 @@ int QStyleSheetStyle::nativeFrameWidth(const QWidget *w)
#if QT_CONFIG(spinbox)
if (qobject_cast<const QAbstractSpinBox *>(w))
- return base->pixelMetric(QStyle::PM_SpinBoxFrameWidth, 0, w);
+ return base->pixelMetric(QStyle::PM_SpinBoxFrameWidth, nullptr, w);
#endif
#if QT_CONFIG(combobox)
if (qobject_cast<const QComboBox *>(w))
- return base->pixelMetric(QStyle::PM_ComboBoxFrameWidth, 0, w);
+ return base->pixelMetric(QStyle::PM_ComboBoxFrameWidth, nullptr, w);
#endif
#if QT_CONFIG(menu)
if (qobject_cast<const QMenu *>(w))
- return base->pixelMetric(QStyle::PM_MenuPanelWidth, 0, w);
+ return base->pixelMetric(QStyle::PM_MenuPanelWidth, nullptr, w);
#endif
#if QT_CONFIG(menubar)
if (qobject_cast<const QMenuBar *>(w))
- return base->pixelMetric(QStyle::PM_MenuBarPanelWidth, 0, w);
+ return base->pixelMetric(QStyle::PM_MenuBarPanelWidth, nullptr, w);
#endif
#ifndef QT_NO_FRAME
if (const QFrame *frame = qobject_cast<const QFrame *>(w)) {
@@ -1717,9 +1725,9 @@ int QStyleSheetStyle::nativeFrameWidth(const QWidget *w)
#endif
if (qstrcmp(w->metaObject()->className(), "QTipLabel") == 0)
- return base->pixelMetric(QStyle::PM_ToolTipLabelFrameWidth, 0, w);
+ return base->pixelMetric(QStyle::PM_ToolTipLabelFrameWidth, nullptr, w);
- return base->pixelMetric(QStyle::PM_DefaultFrameWidth, 0, w);
+ return base->pixelMetric(QStyle::PM_DefaultFrameWidth, nullptr, w);
}
static quint64 pseudoClass(QStyle::State state)
@@ -2223,7 +2231,7 @@ static Qt::Alignment defaultPosition(int pe)
return Qt::AlignRight | Qt::AlignVCenter;
default:
- return 0;
+ return { };
}
}
@@ -2235,21 +2243,21 @@ QSize QStyleSheetStyle::defaultSize(const QWidget *w, QSize sz, const QRect& rec
case PseudoElement_Indicator:
case PseudoElement_MenuCheckMark:
if (sz.width() == -1)
- sz.setWidth(base->pixelMetric(PM_IndicatorWidth, 0, w));
+ sz.setWidth(base->pixelMetric(PM_IndicatorWidth, nullptr, w));
if (sz.height() == -1)
- sz.setHeight(base->pixelMetric(PM_IndicatorHeight, 0, w));
+ sz.setHeight(base->pixelMetric(PM_IndicatorHeight, nullptr, w));
break;
case PseudoElement_ExclusiveIndicator:
case PseudoElement_GroupBoxIndicator:
if (sz.width() == -1)
- sz.setWidth(base->pixelMetric(PM_ExclusiveIndicatorWidth, 0, w));
+ sz.setWidth(base->pixelMetric(PM_ExclusiveIndicatorWidth, nullptr, w));
if (sz.height() == -1)
- sz.setHeight(base->pixelMetric(PM_ExclusiveIndicatorHeight, 0, w));
+ sz.setHeight(base->pixelMetric(PM_ExclusiveIndicatorHeight, nullptr, w));
break;
case PseudoElement_PushButtonMenuIndicator: {
- int pm = base->pixelMetric(PM_MenuButtonIndicator, 0, w);
+ int pm = base->pixelMetric(PM_MenuButtonIndicator, nullptr, w);
if (sz.width() == -1)
sz.setWidth(pm);
if (sz.height() == -1)
@@ -2283,12 +2291,12 @@ QSize QStyleSheetStyle::defaultSize(const QWidget *w, QSize sz, const QRect& rec
case PseudoElement_ToolButtonMenu:
if (sz.width() == -1)
- sz.setWidth(base->pixelMetric(PM_MenuButtonIndicator, 0, w));
+ sz.setWidth(base->pixelMetric(PM_MenuButtonIndicator, nullptr, w));
break;
case PseudoElement_HeaderViewUpArrow:
case PseudoElement_HeaderViewDownArrow: {
- int pm = base->pixelMetric(PM_HeaderMargin, 0, w);
+ int pm = base->pixelMetric(PM_HeaderMargin, nullptr, w);
if (sz.width() == -1)
sz.setWidth(pm);
if (sz.height() == 1)
@@ -2301,7 +2309,7 @@ QSize QStyleSheetStyle::defaultSize(const QWidget *w, QSize sz, const QRect& rec
case PseudoElement_ScrollBarAddLine:
case PseudoElement_ScrollBarSubLine:
case PseudoElement_ScrollBarSlider: {
- int pm = pixelMetric(QStyle::PM_ScrollBarExtent, 0, w);
+ int pm = pixelMetric(QStyle::PM_ScrollBarExtent, nullptr, w);
if (sz.width() == -1)
sz.setWidth(pm);
if (sz.height() == -1)
@@ -2311,7 +2319,7 @@ QSize QStyleSheetStyle::defaultSize(const QWidget *w, QSize sz, const QRect& rec
case PseudoElement_DockWidgetCloseButton:
case PseudoElement_DockWidgetFloatButton: {
- int iconSize = pixelMetric(PM_SmallIconSize, 0, w);
+ int iconSize = pixelMetric(PM_SmallIconSize, nullptr, w);
return QSize(iconSize, iconSize);
}
@@ -2948,7 +2956,7 @@ void QStyleSheetStyle::unpolish(QWidget *w)
setGeometry(w);
w->setAttribute(Qt::WA_StyleSheetTarget, false);
w->setAttribute(Qt::WA_StyleSheet, false);
- QObject::disconnect(w, 0, this, 0);
+ QObject::disconnect(w, nullptr, this, nullptr);
#if QT_CONFIG(scrollarea)
if (QAbstractScrollArea *sa = qobject_cast<QAbstractScrollArea *>(w)) {
QObject::disconnect(sa->horizontalScrollBar(), SIGNAL(valueChanged(int)),
@@ -3333,7 +3341,7 @@ void QStyleSheetStyle::drawComplexControl(ComplexControl cc, const QStyleOptionC
layout = subControlLayout(QLatin1String("mNX"));
QStyleOptionComplex optCopy(*opt);
- optCopy.subControls = 0;
+ optCopy.subControls = { };
for (int i = 0; i < layout.count(); i++) {
int layoutButton = layout[i].toInt();
if (layoutButton < PseudoElement_MdiCloseButton
@@ -3387,7 +3395,7 @@ void QStyleSheetStyle::drawComplexControl(ComplexControl cc, const QStyleOptionC
tb->icon.paint(p, ir);
} else {
int iconSize = pixelMetric(PM_SmallIconSize, tb, w);
- pm = standardIcon(SP_TitleBarMenuButton, 0, w).pixmap(iconSize, iconSize);
+ pm = standardIcon(SP_TitleBarMenuButton, nullptr, w).pixmap(iconSize, iconSize);
drawItemPixmap(p, ir, Qt::AlignCenter, pm);
}
}
@@ -3399,9 +3407,9 @@ void QStyleSheetStyle::drawComplexControl(ComplexControl cc, const QStyleOptionC
QSize sz = subSubRule.contentsRect(ir).size();
if ((tb->titleBarFlags & Qt::WindowType_Mask) == Qt::Tool)
- pm = standardIcon(SP_DockWidgetCloseButton, 0, w).pixmap(sz);
+ pm = standardIcon(SP_DockWidgetCloseButton, nullptr, w).pixmap(sz);
else
- pm = standardIcon(SP_TitleBarCloseButton, 0, w).pixmap(sz);
+ pm = standardIcon(SP_TitleBarCloseButton, nullptr, w).pixmap(sz);
drawItemPixmap(p, ir, Qt::AlignCenter, pm);
}
@@ -3422,7 +3430,7 @@ void QStyleSheetStyle::drawComplexControl(ComplexControl cc, const QStyleOptionC
continue;
QRenderRule subSubRule = renderRule(w, opt, pe);
subSubRule.drawRule(p, ir);
- pm = standardIcon(subControlIcon(pe), 0, w).pixmap(subSubRule.contentsRect(ir).size());
+ pm = standardIcon(subControlIcon(pe), nullptr, w).pixmap(subSubRule.contentsRect(ir).size());
drawItemPixmap(p, ir, Qt::AlignCenter, pm);
}
@@ -3522,15 +3530,25 @@ void QStyleSheetStyle::drawControl(ControlElement ce, const QStyleOption *opt, Q
if (rule.hasFont)
p->setFont(rule.font.resolve(p->font()));
- if (rule.hasPosition() && rule.position()->textAlignment != 0) {
- Qt::Alignment textAlignment = rule.position()->textAlignment;
- QRect textRect = button->rect;
+ if (rule.hasPosition() || rule.hasIcon()) {
uint tf = Qt::TextShowMnemonic;
+ QRect textRect = button->rect;
+
+ const uint horizontalAlignMask = Qt::AlignHCenter | Qt::AlignLeft | Qt::AlignRight;
const uint verticalAlignMask = Qt::AlignVCenter | Qt::AlignTop | Qt::AlignLeft;
- tf |= (textAlignment & verticalAlignMask) ? (textAlignment & verticalAlignMask) : Qt::AlignVCenter;
- if (!styleHint(SH_UnderlineShortcut, button, w))
- tf |= Qt::TextHideMnemonic;
- if (!button->icon.isNull()) {
+
+ if (rule.hasPosition() && rule.position()->textAlignment != 0) {
+ Qt::Alignment textAlignment = rule.position()->textAlignment;
+ tf |= (textAlignment & verticalAlignMask) ? (textAlignment & verticalAlignMask) : Qt::AlignVCenter;
+ tf |= (textAlignment & horizontalAlignMask) ? (textAlignment & horizontalAlignMask) : Qt::AlignHCenter;
+ if (!styleHint(SH_UnderlineShortcut, button, w))
+ tf |= Qt::TextHideMnemonic;
+ } else {
+ tf |= Qt::AlignVCenter | Qt::AlignHCenter;
+ }
+
+ QIcon icon = rule.hasIcon() ? rule.icon()->icon : button->icon;
+ if (!icon.isNull()) {
//Group both icon and text
QRect iconRect;
QIcon::Mode mode = button->state & State_Enabled ? QIcon::Normal : QIcon::Disabled;
@@ -3540,7 +3558,7 @@ void QStyleSheetStyle::drawControl(ControlElement ce, const QStyleOption *opt, Q
if (button->state & State_On)
state = QIcon::On;
- QPixmap pixmap = button->icon.pixmap(button->iconSize, mode, state);
+ QPixmap pixmap = icon.pixmap(button->iconSize, mode, state);
int pixmapWidth = pixmap.width() / pixmap.devicePixelRatio();
int pixmapHeight = pixmap.height() / pixmap.devicePixelRatio();
int labelWidth = pixmapWidth;
@@ -3551,10 +3569,10 @@ void QStyleSheetStyle::drawControl(ControlElement ce, const QStyleOption *opt, Q
labelWidth += (textWidth + iconSpacing);
//Determine label alignment:
- if (textAlignment & Qt::AlignLeft) { /*left*/
+ if (tf & Qt::AlignLeft) { /*left*/
iconRect = QRect(textRect.x(), textRect.y() + (textRect.height() - labelHeight) / 2,
pixmapWidth, pixmapHeight);
- } else if (textAlignment & Qt::AlignHCenter) { /* center */
+ } else if (tf & Qt::AlignHCenter) { /* center */
iconRect = QRect(textRect.x() + (textRect.width() - labelWidth) / 2,
textRect.y() + (textRect.height() - labelHeight) / 2,
pixmapWidth, pixmapHeight);
@@ -3566,7 +3584,9 @@ void QStyleSheetStyle::drawControl(ControlElement ce, const QStyleOption *opt, Q
iconRect = visualRect(button->direction, textRect, iconRect);
- tf |= Qt::AlignLeft; //left align, we adjust the text-rect instead
+ // Left align, adjust the text-rect according to the icon instead
+ tf &= ~horizontalAlignMask;
+ tf |= Qt::AlignLeft;
if (button->direction == Qt::RightToLeft)
textRect.setRight(iconRect.left() - iconSpacing);
@@ -3577,9 +3597,8 @@ void QStyleSheetStyle::drawControl(ControlElement ce, const QStyleOption *opt, Q
iconRect.translate(pixelMetric(PM_ButtonShiftHorizontal, opt, w),
pixelMetric(PM_ButtonShiftVertical, opt, w));
p->drawPixmap(iconRect, pixmap);
- } else {
- tf |= textAlignment;
}
+
if (button->state & (State_On | State_Sunken))
textRect.translate(pixelMetric(PM_ButtonShiftHorizontal, opt, w),
pixelMetric(PM_ButtonShiftVertical, opt, w));
@@ -4227,7 +4246,7 @@ void QStyleSheetStyle::drawControl(ControlElement ce, const QStyleOption *opt, Q
}
r = subRule.contentsRect(r);
- Qt::Alignment alignment = 0;
+ Qt::Alignment alignment;
if (subRule.hasPosition())
alignment = subRule.position()->textAlignment;
if (alignment == 0)
@@ -4265,7 +4284,7 @@ void QStyleSheetStyle::drawControl(ControlElement ce, const QStyleOption *opt, Q
if (pe1 != PseudoElement_None) {
QRenderRule subRule = renderRule(w, opt, pe1);
- if (subRule.bg != 0 || subRule.hasDrawable()) {
+ if (subRule.bg != nullptr || subRule.hasDrawable()) {
//We test subRule.bg directly because hasBackground() would return false for background:none.
//But we still don't want the default drawning in that case (example for QScrollBar::add-page) (task 198926)
subRule.drawRule(p, opt->rect);
@@ -5073,7 +5092,7 @@ QSize QStyleSheetStyle::sizeFromContents(ContentsType ct, const QStyleOption *op
case CT_GroupBox:
case CT_LineEdit:
#if QT_CONFIG(spinbox)
- if (qobject_cast<QAbstractSpinBox *>(w ? w->parentWidget() : 0))
+ if (qobject_cast<QAbstractSpinBox *>(w ? w->parentWidget() : nullptr))
return csz; // we only care about the size hint of the line edit
#endif
if (rule.hasBox() || !rule.hasNativeBorder()) {
@@ -5714,7 +5733,7 @@ QRect QStyleSheetStyle::subControlRect(ComplexControl cc, const QStyleOptionComp
QRenderRule subRule = renderRule(w, opt, PseudoElement_SliderGroove);
if (!subRule.hasDrawable())
break;
- subRule.img = 0;
+ subRule.img = nullptr;
QRect gr = positionRect(w, rule, subRule, PseudoElement_SliderGroove, opt->rect, opt->direction);
switch (sc) {
case SC_SliderGroove:
@@ -5724,8 +5743,8 @@ QRect QStyleSheetStyle::subControlRect(ComplexControl cc, const QStyleOptionComp
QRect cr = subRule.contentsRect(gr);
QRenderRule subRule2 = renderRule(w, opt, PseudoElement_SliderHandle);
int len = horizontal ? subRule2.size().width() : subRule2.size().height();
- subRule2.img = 0;
- subRule2.geo = 0;
+ subRule2.img = nullptr;
+ subRule2.geo = nullptr;
cr = positionRect(w, subRule2, PseudoElement_SliderHandle, cr, opt->direction);
int thickness = horizontal ? cr.height() : cr.width();
int sliderPos = sliderPositionFromValue(slider->minimum, slider->maximum, slider->sliderPosition,
@@ -5833,7 +5852,7 @@ QRect QStyleSheetStyle::subElementRect(SubElement se, const QStyleOption *opt, c
QRect ir = subElementRect(isRadio ? SE_RadioButtonIndicator : SE_CheckBoxIndicator,
opt, w);
ir = visualRect(opt->direction, opt->rect, ir);
- int spacing = pixelMetric(isRadio ? PM_RadioButtonLabelSpacing : PM_CheckBoxLabelSpacing, 0, w);
+ int spacing = pixelMetric(isRadio ? PM_RadioButtonLabelSpacing : PM_CheckBoxLabelSpacing, nullptr, w);
QRect cr = rule.contentsRect(opt->rect);
ir.setRect(ir.left() + ir.width() + spacing, cr.y(),
cr.width() - ir.width() - spacing, cr.height());
diff --git a/src/widgets/util/qcolormap.cpp b/src/widgets/util/qcolormap.cpp
index 6dacc97261..57e61690e9 100644
--- a/src/widgets/util/qcolormap.cpp
+++ b/src/widgets/util/qcolormap.cpp
@@ -59,7 +59,7 @@ public:
int numcolors;
};
-static QColormapPrivate *screenMap = 0;
+static QColormapPrivate *screenMap = nullptr;
void QColormap::initialize()
{
@@ -83,7 +83,7 @@ void QColormap::initialize()
void QColormap::cleanup()
{
delete screenMap;
- screenMap = 0;
+ screenMap = nullptr;
}
QColormap QColormap::instance(int /*screen*/)
diff --git a/src/widgets/util/qcompleter.cpp b/src/widgets/util/qcompleter.cpp
index 7b69eff30c..72fa557790 100644
--- a/src/widgets/util/qcompleter.cpp
+++ b/src/widgets/util/qcompleter.cpp
@@ -473,7 +473,7 @@ QMatchData QCompletionEngine::filterHistory()
if (curParts.count() <= 1 || c->proxy->showAll || !source)
return QMatchData();
-#if QT_CONFIG(dirmodel)
+#if QT_CONFIG(dirmodel) && QT_DEPRECATED_SINCE(5, 15)
const bool isDirModel = (qobject_cast<QDirModel *>(source) != nullptr);
#else
const bool isDirModel = false;
@@ -903,7 +903,7 @@ void QCompleterPrivate::_q_complete(QModelIndex index, bool highlighted)
QModelIndex si = proxy->mapToSource(index);
si = si.sibling(si.row(), column); // for clicked()
completion = q->pathFromIndex(si);
-#if QT_CONFIG(dirmodel)
+#if QT_CONFIG(dirmodel) && QT_DEPRECATED_SINCE(5, 15)
// add a trailing separator in inline
if (mode == QCompleter::InlineCompletion) {
if (qobject_cast<QDirModel *>(proxy->sourceModel()) && QFileInfo(completion).isDir())
@@ -1125,7 +1125,7 @@ void QCompleter::setModel(QAbstractItemModel *model)
setPopup(d->popup); // set the model and make new connections
if (oldModel && oldModel->QObject::parent() == this)
delete oldModel;
-#if QT_CONFIG(dirmodel)
+#if QT_CONFIG(dirmodel) && QT_DEPRECATED_SINCE(5, 15)
if (qobject_cast<QDirModel *>(model)) {
#if defined(Q_OS_WIN)
setCaseSensitivity(Qt::CaseInsensitive);
@@ -1262,7 +1262,7 @@ Qt::MatchFlags QCompleter::filterMode() const
void QCompleter::setPopup(QAbstractItemView *popup)
{
Q_D(QCompleter);
- Q_ASSERT(popup != 0);
+ Q_ASSERT(popup != nullptr);
if (d->popup) {
QObject::disconnect(d->popup->selectionModel(), nullptr, this, nullptr);
QObject::disconnect(d->popup, nullptr, this, nullptr);
@@ -1846,7 +1846,7 @@ QString QCompleter::pathFromIndex(const QModelIndex& index) const
return QString();
bool isDirModel = false;
bool isFsModel = false;
-#if QT_CONFIG(dirmodel)
+#if QT_CONFIG(dirmodel) && QT_DEPRECATED_SINCE(5, 15)
isDirModel = qobject_cast<QDirModel *>(d->proxy->sourceModel()) != nullptr;
#endif
#if QT_CONFIG(filesystemmodel)
@@ -1895,7 +1895,7 @@ QStringList QCompleter::splitPath(const QString& path) const
{
bool isDirModel = false;
bool isFsModel = false;
-#if QT_CONFIG(dirmodel)
+#if QT_CONFIG(dirmodel) && QT_DEPRECATED_SINCE(5, 15)
Q_D(const QCompleter);
isDirModel = qobject_cast<QDirModel *>(d->proxy->sourceModel()) != nullptr;
#endif
diff --git a/src/widgets/util/qflickgesture.cpp b/src/widgets/util/qflickgesture.cpp
index 14a30ce7cf..064be873b9 100644
--- a/src/widgets/util/qflickgesture.cpp
+++ b/src/widgets/util/qflickgesture.cpp
@@ -114,19 +114,19 @@ static QMouseEvent *copyMouseEvent(QEvent *e)
}
#endif // QT_CONFIG(graphicsview)
default:
- return 0;
+ return nullptr;
}
}
class PressDelayHandler : public QObject
{
private:
- PressDelayHandler(QObject *parent = 0)
+ PressDelayHandler(QObject *parent = nullptr)
: QObject(parent)
, pressDelayTimer(0)
, sendingEvent(false)
, mouseButton(Qt::NoButton)
- , mouseTarget(0)
+ , mouseTarget(nullptr)
, mouseEventSource(Qt::MouseEventNotSynthesized)
{ }
@@ -138,7 +138,7 @@ public:
static PressDelayHandler *instance()
{
- static PressDelayHandler *inst = 0;
+ static PressDelayHandler *inst = nullptr;
if (!inst)
inst = new PressDelayHandler(QCoreApplication::instance());
return inst;
@@ -192,10 +192,10 @@ public:
result = true; // consume this event
} else if (mouseTarget && scrollerIsActive) {
// we grabbed the mouse expicitly when the scroller became active, so undo that now
- sendMouseEvent(0, UngrabMouseBefore);
+ sendMouseEvent(nullptr, UngrabMouseBefore);
}
- pressDelayEvent.reset(0);
- mouseTarget = 0;
+ pressDelayEvent.reset(nullptr);
+ mouseTarget = nullptr;
return result;
}
@@ -208,9 +208,9 @@ public:
killTimer(pressDelayTimer);
pressDelayTimer = 0;
}
- pressDelayEvent.reset(0);
+ pressDelayEvent.reset(nullptr);
}
- mouseTarget = 0;
+ mouseTarget = nullptr;
}
void scrollerBecameActive()
@@ -222,8 +222,8 @@ public:
killTimer(pressDelayTimer);
pressDelayTimer = 0;
}
- pressDelayEvent.reset(0);
- mouseTarget = 0;
+ pressDelayEvent.reset(nullptr);
+ mouseTarget = nullptr;
} else if (mouseTarget) {
// we did send a press, so we need to fake a release now
@@ -261,7 +261,7 @@ protected:
qFGDebug() << "QFG: timer event: re-sending mouse press to " << mouseTarget;
sendMouseEvent(pressDelayEvent.data(), UngrabMouseBefore);
}
- pressDelayEvent.reset(0);
+ pressDelayEvent.reset(nullptr);
if (pressDelayTimer) {
killTimer(pressDelayTimer);
@@ -276,7 +276,7 @@ protected:
sendingEvent = true;
#if QT_CONFIG(graphicsview)
- QGraphicsItem *grabber = 0;
+ QGraphicsItem *grabber = nullptr;
if (mouseTarget->parentWidget()) {
if (QGraphicsView *gv = qobject_cast<QGraphicsView *>(mouseTarget->parentWidget())) {
if (gv->scene())
@@ -350,7 +350,7 @@ QFlickGesture::QFlickGesture(QObject *receiver, Qt::MouseButton button, QObject
{
d_func()->q_ptr = this;
d_func()->receiver = receiver;
- d_func()->receiverScroller = (receiver && QScroller::hasScroller(receiver)) ? QScroller::scroller(receiver) : 0;
+ d_func()->receiverScroller = (receiver && QScroller::hasScroller(receiver)) ? QScroller::scroller(receiver) : nullptr;
d_func()->button = button;
}
@@ -358,7 +358,7 @@ QFlickGesture::~QFlickGesture()
{ }
QFlickGesturePrivate::QFlickGesturePrivate()
- : receiverScroller(0), button(Qt::NoButton), macIgnoreWheel(false)
+ : receiverScroller(nullptr), button(Qt::NoButton), macIgnoreWheel(false)
{ }
@@ -420,11 +420,11 @@ QGestureRecognizer::Result QFlickGestureRecognizer::recognize(QGesture *state,
return Ignore;
}
- const QMouseEvent *me = 0;
+ const QMouseEvent *me = nullptr;
#if QT_CONFIG(graphicsview)
- const QGraphicsSceneMouseEvent *gsme = 0;
+ const QGraphicsSceneMouseEvent *gsme = nullptr;
#endif
- const QTouchEvent *te = 0;
+ const QTouchEvent *te = nullptr;
QPoint globalPos;
// qFGDebug() << "FlickGesture "<<state<<"watched:"<<watched<<"receiver"<<d->receiver<<"event"<<event->type()<<"button"<<button;
@@ -610,7 +610,7 @@ QGestureRecognizer::Result QFlickGestureRecognizer::recognize(QGesture *state,
}
// depending on the scroller state return the gesture state
- Result result(0);
+ Result result;
bool scrollerIsActive = (scroller->state() == QScroller::Dragging ||
scroller->state() == QScroller::Scrolling);
diff --git a/src/widgets/util/qscroller.cpp b/src/widgets/util/qscroller.cpp
index df05bbf71c..fec373d45c 100644
--- a/src/widgets/util/qscroller.cpp
+++ b/src/widgets/util/qscroller.cpp
@@ -300,7 +300,7 @@ QScroller *QScroller::scroller(QObject *target)
{
if (!target) {
qWarning("QScroller::scroller() was called with a null target.");
- return 0;
+ return nullptr;
}
if (qt_allScrollers()->contains(target))
@@ -476,7 +476,7 @@ void QScroller::ungrabGesture(QObject *target)
QGestureRecognizer::unregisterRecognizer(sp->recognizerType);
// do not delete the recognizer. The QGestureManager is doing this.
- sp->recognizer = 0;
+ sp->recognizer = nullptr;
}
#endif // QT_NO_GESTURES
@@ -502,7 +502,7 @@ QScroller::~QScroller()
#ifndef QT_NO_GESTURES
QGestureRecognizer::unregisterRecognizer(d->recognizerType);
// do not delete the recognizer. The QGestureManager is doing this.
- d->recognizer = 0;
+ d->recognizer = nullptr;
#endif
qt_allScrollers()->remove(d->target);
qt_activeScrollers()->removeOne(this);
@@ -879,7 +879,7 @@ void QScroller::setSnapPositionsY(qreal first, qreal interval)
QScrollerPrivate::QScrollerPrivate(QScroller *q, QObject *_target)
: target(_target)
#ifndef QT_NO_GESTURES
- , recognizer(0)
+ , recognizer(nullptr)
, recognizerType(Qt::CustomGesture)
#endif
, state(QScroller::Inactive)
@@ -900,7 +900,7 @@ QScrollerPrivate::QScrollerPrivate(QScroller *q, QObject *_target)
void QScrollerPrivate::init()
{
- setDpiFromWidget(0);
+ setDpiFromWidget(nullptr);
monotonicTimer.start();
}
diff --git a/src/widgets/util/qscrollerproperties.cpp b/src/widgets/util/qscrollerproperties.cpp
index df6b899fe4..0306f54faa 100644
--- a/src/widgets/util/qscrollerproperties.cpp
+++ b/src/widgets/util/qscrollerproperties.cpp
@@ -46,8 +46,8 @@
QT_BEGIN_NAMESPACE
-static QScrollerPropertiesPrivate *userDefaults = 0;
-static QScrollerPropertiesPrivate *systemDefaults = 0;
+static QScrollerPropertiesPrivate *userDefaults = nullptr;
+static QScrollerPropertiesPrivate *systemDefaults = nullptr;
QScrollerPropertiesPrivate *QScrollerPropertiesPrivate::defaults()
{
@@ -200,7 +200,7 @@ void QScrollerProperties::setDefaultScrollerProperties(const QScrollerProperties
void QScrollerProperties::unsetDefaultScrollerProperties()
{
delete userDefaults;
- userDefaults = 0;
+ userDefaults = nullptr;
}
/*!
diff --git a/src/widgets/util/qsystemtrayicon.cpp b/src/widgets/util/qsystemtrayicon.cpp
index fd18888870..ee52139913 100644
--- a/src/widgets/util/qsystemtrayicon.cpp
+++ b/src/widgets/util/qsystemtrayicon.cpp
@@ -367,8 +367,6 @@ bool QSystemTrayIcon::event(QEvent *e)
This signal is emitted when the message displayed using showMessage()
was clicked by the user.
- Currently this signal is not sent on \macos.
-
\note We follow Microsoft Windows behavior, so the
signal is also emitted when the user clicks on a tray icon with
a balloon message displayed.
@@ -455,7 +453,7 @@ void QSystemTrayIconPrivate::_q_emitActivated(QPlatformSystemTrayIcon::Activatio
}
//////////////////////////////////////////////////////////////////////
-static QBalloonTip *theSolitaryBalloonTip = 0;
+static QBalloonTip *theSolitaryBalloonTip = nullptr;
void QBalloonTip::showBalloon(const QIcon &icon, const QString &title,
const QString &message, QSystemTrayIcon *trayIcon,
@@ -477,7 +475,7 @@ void QBalloonTip::hideBalloon()
return;
theSolitaryBalloonTip->hide();
delete theSolitaryBalloonTip;
- theSolitaryBalloonTip = 0;
+ theSolitaryBalloonTip = nullptr;
}
void QBalloonTip::updateBalloonPosition(const QPoint& pos)
@@ -495,7 +493,7 @@ bool QBalloonTip::isBalloonVisible()
QBalloonTip::QBalloonTip(const QIcon &icon, const QString &title,
const QString &message, QSystemTrayIcon *ti)
- : QWidget(0, Qt::ToolTip),
+ : QWidget(nullptr, Qt::ToolTip),
trayIcon(ti),
timerId(-1),
showArrow(true)
@@ -585,7 +583,7 @@ QBalloonTip::QBalloonTip(const QIcon &icon, const QString &title,
QBalloonTip::~QBalloonTip()
{
- theSolitaryBalloonTip = 0;
+ theSolitaryBalloonTip = nullptr;
}
void QBalloonTip::paintEvent(QPaintEvent *)
diff --git a/src/widgets/util/qsystemtrayicon_x11.cpp b/src/widgets/util/qsystemtrayicon_x11.cpp
index 0c7bb94a91..86c11f98ed 100644
--- a/src/widgets/util/qsystemtrayicon_x11.cpp
+++ b/src/widgets/util/qsystemtrayicon_x11.cpp
@@ -97,7 +97,7 @@ private:
};
QSystemTrayIconSys::QSystemTrayIconSys(QSystemTrayIcon *qIn)
- : QWidget(0, Qt::Window | Qt::FramelessWindowHint | Qt::BypassWindowManagerHint)
+ : QWidget(nullptr, Qt::Window | Qt::FramelessWindowHint | Qt::BypassWindowManagerHint)
, q(qIn)
{
setObjectName(QStringLiteral("QSystemTrayIconSys"));
@@ -218,7 +218,7 @@ private:
////////////////////////////////////////////////////////////////////////////
QSystemTrayIconPrivate::QSystemTrayIconPrivate()
- : sys(0),
+ : sys(nullptr),
qpa_sys(QGuiApplicationPrivate::platformTheme()->createPlatformSystemTrayIcon()),
visible(false),
trayWatcher(nullptr)
diff --git a/src/widgets/util/qundogroup.cpp b/src/widgets/util/qundogroup.cpp
index 9bd63d4232..ae439743bc 100644
--- a/src/widgets/util/qundogroup.cpp
+++ b/src/widgets/util/qundogroup.cpp
@@ -47,7 +47,7 @@ class QUndoGroupPrivate : public QObjectPrivate
{
Q_DECLARE_PUBLIC(QUndoGroup)
public:
- QUndoGroupPrivate() : active(0) {}
+ QUndoGroupPrivate() : active(nullptr) {}
QUndoStack *active;
QList<QUndoStack*> stack_list;
@@ -113,7 +113,7 @@ QUndoGroup::~QUndoGroup()
QList<QUndoStack *>::iterator it = d->stack_list.begin();
QList<QUndoStack *>::iterator end = d->stack_list.end();
while (it != end) {
- (*it)->d_func()->group = 0;
+ (*it)->d_func()->group = nullptr;
++it;
}
}
@@ -154,8 +154,8 @@ void QUndoGroup::removeStack(QUndoStack *stack)
if (d->stack_list.removeAll(stack) == 0)
return;
if (stack == d->active)
- setActiveStack(0);
- stack->d_func()->group = 0;
+ setActiveStack(nullptr);
+ stack->d_func()->group = nullptr;
}
/*!
@@ -190,7 +190,7 @@ void QUndoGroup::setActiveStack(QUndoStack *stack)
if (d->active == stack)
return;
- if (d->active != 0) {
+ if (d->active != nullptr) {
disconnect(d->active, SIGNAL(canUndoChanged(bool)),
this, SIGNAL(canUndoChanged(bool)));
disconnect(d->active, SIGNAL(undoTextChanged(QString)),
@@ -207,7 +207,7 @@ void QUndoGroup::setActiveStack(QUndoStack *stack)
d->active = stack;
- if (d->active == 0) {
+ if (d->active == nullptr) {
emit canUndoChanged(false);
emit undoTextChanged(QString());
emit canRedoChanged(false);
@@ -265,7 +265,7 @@ QUndoStack *QUndoGroup::activeStack() const
void QUndoGroup::undo()
{
Q_D(QUndoGroup);
- if (d->active != 0)
+ if (d->active != nullptr)
d->active->undo();
}
@@ -282,7 +282,7 @@ void QUndoGroup::undo()
void QUndoGroup::redo()
{
Q_D(QUndoGroup);
- if (d->active != 0)
+ if (d->active != nullptr)
d->active->redo();
}
@@ -298,7 +298,7 @@ void QUndoGroup::redo()
bool QUndoGroup::canUndo() const
{
Q_D(const QUndoGroup);
- return d->active != 0 && d->active->canUndo();
+ return d->active != nullptr && d->active->canUndo();
}
/*!
@@ -313,7 +313,7 @@ bool QUndoGroup::canUndo() const
bool QUndoGroup::canRedo() const
{
Q_D(const QUndoGroup);
- return d->active != 0 && d->active->canRedo();
+ return d->active != nullptr && d->active->canRedo();
}
/*!
@@ -328,7 +328,7 @@ bool QUndoGroup::canRedo() const
QString QUndoGroup::undoText() const
{
Q_D(const QUndoGroup);
- return d->active == 0 ? QString() : d->active->undoText();
+ return d->active == nullptr ? QString() : d->active->undoText();
}
/*!
@@ -343,7 +343,7 @@ QString QUndoGroup::undoText() const
QString QUndoGroup::redoText() const
{
Q_D(const QUndoGroup);
- return d->active == 0 ? QString() : d->active->redoText();
+ return d->active == nullptr ? QString() : d->active->redoText();
}
/*!
@@ -358,7 +358,7 @@ QString QUndoGroup::redoText() const
bool QUndoGroup::isClean() const
{
Q_D(const QUndoGroup);
- return d->active == 0 || d->active->isClean();
+ return d->active == nullptr || d->active->isClean();
}
#ifndef QT_NO_ACTION
diff --git a/src/widgets/util/qundostack.cpp b/src/widgets/util/qundostack.cpp
index 8788c42252..f188b8298a 100644
--- a/src/widgets/util/qundostack.cpp
+++ b/src/widgets/util/qundostack.cpp
@@ -128,7 +128,7 @@ QUndoCommand::QUndoCommand(const QString &text, QUndoCommand *parent)
QUndoCommand::QUndoCommand(QUndoCommand *parent)
{
d = new QUndoCommandPrivate;
- if (parent != 0)
+ if (parent != nullptr)
parent->d->child_list.append(this);
}
@@ -336,7 +336,7 @@ int QUndoCommand::childCount() const
const QUndoCommand *QUndoCommand::child(int index) const
{
if (index < 0 || index >= d->child_list.count())
- return 0;
+ return nullptr;
return d->child_list.at(index);
}
@@ -559,7 +559,7 @@ QUndoStack::~QUndoStack()
{
#if QT_CONFIG(undogroup)
Q_D(QUndoStack);
- if (d->group != 0)
+ if (d->group != nullptr)
d->group->removeStack(this);
#endif
clear();
@@ -640,7 +640,7 @@ void QUndoStack::push(QUndoCommand *cmd)
bool macro = !d->macro_stack.isEmpty();
- QUndoCommand *cur = 0;
+ QUndoCommand *cur = nullptr;
if (macro) {
QUndoCommand *macro_cmd = d->macro_stack.constLast();
if (!macro_cmd->d->child_list.isEmpty())
@@ -654,7 +654,7 @@ void QUndoStack::push(QUndoCommand *cmd)
d->clean_index = -1; // we've deleted the clean state
}
- bool try_merge = cur != 0
+ bool try_merge = cur != nullptr
&& cur->id() != -1
&& cur->id() == cmd->id()
&& (macro || d->index != d->clean_index);
@@ -1225,7 +1225,7 @@ const QUndoCommand *QUndoStack::command(int index) const
Q_D(const QUndoStack);
if (index < 0 || index >= d->command_list.count())
- return 0;
+ return nullptr;
return d->command_list.at(index);
}
@@ -1305,11 +1305,11 @@ void QUndoStack::setActive(bool active)
#else
Q_D(QUndoStack);
- if (d->group != 0) {
+ if (d->group != nullptr) {
if (active)
d->group->setActiveStack(this);
else if (d->group->activeStack() == this)
- d->group->setActiveStack(0);
+ d->group->setActiveStack(nullptr);
}
#endif
}
@@ -1320,7 +1320,7 @@ bool QUndoStack::isActive() const
return true;
#else
Q_D(const QUndoStack);
- return d->group == 0 || d->group->activeStack() == this;
+ return d->group == nullptr || d->group->activeStack() == this;
#endif
}
diff --git a/src/widgets/util/qundoview.cpp b/src/widgets/util/qundoview.cpp
index f59d87fb9d..9ca83a1da2 100644
--- a/src/widgets/util/qundoview.cpp
+++ b/src/widgets/util/qundoview.cpp
@@ -54,7 +54,7 @@ class QUndoModel : public QAbstractItemModel
{
Q_OBJECT
public:
- QUndoModel(QObject *parent = 0);
+ QUndoModel(QObject *parent = nullptr);
QUndoStack *stack() const;
@@ -92,7 +92,7 @@ private:
QUndoModel::QUndoModel(QObject *parent)
: QAbstractItemModel(parent)
{
- m_stack = 0;
+ m_stack = nullptr;
m_sel_model = new QItemSelectionModel(this, this);
connect(m_sel_model, SIGNAL(currentChanged(QModelIndex,QModelIndex)),
this, SLOT(setStackCurrentIndex(QModelIndex)));
@@ -114,13 +114,13 @@ void QUndoModel::setStack(QUndoStack *stack)
if (m_stack == stack)
return;
- if (m_stack != 0) {
+ if (m_stack != nullptr) {
disconnect(m_stack, SIGNAL(cleanChanged(bool)), this, SLOT(stackChanged()));
disconnect(m_stack, SIGNAL(indexChanged(int)), this, SLOT(stackChanged()));
disconnect(m_stack, SIGNAL(destroyed(QObject*)), this, SLOT(stackDestroyed(QObject*)));
}
m_stack = stack;
- if (m_stack != 0) {
+ if (m_stack != nullptr) {
connect(m_stack, SIGNAL(cleanChanged(bool)), this, SLOT(stackChanged()));
connect(m_stack, SIGNAL(indexChanged(int)), this, SLOT(stackChanged()));
connect(m_stack, SIGNAL(destroyed(QObject*)), this, SLOT(stackDestroyed(QObject*)));
@@ -133,7 +133,7 @@ void QUndoModel::stackDestroyed(QObject *obj)
{
if (obj != m_stack)
return;
- m_stack = 0;
+ m_stack = nullptr;
stackChanged();
}
@@ -147,7 +147,7 @@ void QUndoModel::stackChanged()
void QUndoModel::setStackCurrentIndex(const QModelIndex &index)
{
- if (m_stack == 0)
+ if (m_stack == nullptr)
return;
if (index == selectedIndex())
@@ -161,12 +161,12 @@ void QUndoModel::setStackCurrentIndex(const QModelIndex &index)
QModelIndex QUndoModel::selectedIndex() const
{
- return m_stack == 0 ? QModelIndex() : createIndex(m_stack->index(), 0);
+ return m_stack == nullptr ? QModelIndex() : createIndex(m_stack->index(), 0);
}
QModelIndex QUndoModel::index(int row, int column, const QModelIndex &parent) const
{
- if (m_stack == 0)
+ if (m_stack == nullptr)
return QModelIndex();
if (parent.isValid())
@@ -188,7 +188,7 @@ QModelIndex QUndoModel::parent(const QModelIndex&) const
int QUndoModel::rowCount(const QModelIndex &parent) const
{
- if (m_stack == 0)
+ if (m_stack == nullptr)
return 0;
if (parent.isValid())
@@ -204,7 +204,7 @@ int QUndoModel::columnCount(const QModelIndex&) const
QVariant QUndoModel::data(const QModelIndex &index, int role) const
{
- if (m_stack == 0)
+ if (m_stack == nullptr)
return QVariant();
if (index.column() != 0)
@@ -274,9 +274,9 @@ class QUndoViewPrivate : public QListViewPrivate
public:
QUndoViewPrivate() :
#if QT_CONFIG(undogroup)
- group(0),
+ group(nullptr),
#endif
- model(0) {}
+ model(nullptr) {}
#if QT_CONFIG(undogroup)
QPointer<QUndoGroup> group;
@@ -370,7 +370,7 @@ void QUndoView::setStack(QUndoStack *stack)
{
Q_D(QUndoView);
#if QT_CONFIG(undogroup)
- setGroup(0);
+ setGroup(nullptr);
#endif
d->model->setStack(stack);
}
@@ -393,19 +393,19 @@ void QUndoView::setGroup(QUndoGroup *group)
if (d->group == group)
return;
- if (d->group != 0) {
+ if (d->group != nullptr) {
disconnect(d->group, SIGNAL(activeStackChanged(QUndoStack*)),
d->model, SLOT(setStack(QUndoStack*)));
}
d->group = group;
- if (d->group != 0) {
+ if (d->group != nullptr) {
connect(d->group, SIGNAL(activeStackChanged(QUndoStack*)),
d->model, SLOT(setStack(QUndoStack*)));
d->model->setStack(d->group->activeStack());
} else {
- d->model->setStack(0);
+ d->model->setStack(nullptr);
}
}
diff --git a/src/widgets/widgets.pro b/src/widgets/widgets.pro
index 6f807e1696..2d5ba05d40 100644
--- a/src/widgets/widgets.pro
+++ b/src/widgets/widgets.pro
@@ -45,3 +45,5 @@ testcocoon {
MODULE_PLUGIN_TYPES += \
styles
load(qt_module)
+
+CONFIG += metatypes install_metatypes
diff --git a/src/widgets/widgets/qabstractbutton.cpp b/src/widgets/widgets/qabstractbutton.cpp
index d956d2ba23..022f41738c 100644
--- a/src/widgets/widgets/qabstractbutton.cpp
+++ b/src/widgets/widgets/qabstractbutton.cpp
@@ -177,7 +177,7 @@ QAbstractButtonPrivate::QAbstractButtonPrivate(QSizePolicy::ControlType type)
checkable(false), checked(false), autoRepeat(false), autoExclusive(false),
down(false), blockRefresh(false), pressed(false),
#if QT_CONFIG(buttongroup)
- group(0),
+ group(nullptr),
#endif
autoRepeatDelay(AUTO_REPEAT_DELAY),
autoRepeatInterval(AUTO_REPEAT_INTERVAL),
@@ -217,14 +217,14 @@ QAbstractButton *QAbstractButtonPrivate::queryCheckedButton() const
Q_Q(const QAbstractButton);
QList<QAbstractButton *> buttonList = queryButtonList();
if (!autoExclusive || buttonList.count() == 1) // no group
- return 0;
+ return nullptr;
for (int i = 0; i < buttonList.count(); ++i) {
QAbstractButton *b = buttonList.at(i);
if (b->d_func()->checked && b != q)
return b;
}
- return checked ? const_cast<QAbstractButton *>(q) : 0;
+ return checked ? const_cast<QAbstractButton *>(q) : nullptr;
}
void QAbstractButtonPrivate::notifyChecked()
@@ -257,7 +257,7 @@ void QAbstractButtonPrivate::moveFocus(int key)
if (!fb || !buttonList.contains(fb))
return;
- QAbstractButton *candidate = 0;
+ QAbstractButton *candidate = nullptr;
int bestScore = -1;
QRect target = f->rect().translated(f->mapToGlobal(QPoint(0,0)));
QPoint goal = target.center();
@@ -468,7 +468,7 @@ void QAbstractButtonPrivate::emitToggled(bool checked)
Constructs an abstract button with a \a parent.
*/
QAbstractButton::QAbstractButton(QWidget *parent)
- : QWidget(*new QAbstractButtonPrivate, parent, 0)
+ : QWidget(*new QAbstractButtonPrivate, parent, { })
{
Q_D(QAbstractButton);
d->init();
@@ -490,7 +490,7 @@ QAbstractButton::QAbstractButton(QWidget *parent)
/*! \internal
*/
QAbstractButton::QAbstractButton(QAbstractButtonPrivate &dd, QWidget *parent)
- : QWidget(dd, parent, 0)
+ : QWidget(dd, parent, { })
{
Q_D(QAbstractButton);
d->init();
@@ -1272,7 +1272,7 @@ QSize QAbstractButton::iconSize() const
Q_D(const QAbstractButton);
if (d->iconSize.isValid())
return d->iconSize;
- int e = style()->pixelMetric(QStyle::PM_ButtonIconSize, 0, this);
+ int e = style()->pixelMetric(QStyle::PM_ButtonIconSize, nullptr, this);
return QSize(e, e);
}
diff --git a/src/widgets/widgets/qabstractbutton.h b/src/widgets/widgets/qabstractbutton.h
index e8dee142f2..50c94654f3 100644
--- a/src/widgets/widgets/qabstractbutton.h
+++ b/src/widgets/widgets/qabstractbutton.h
@@ -64,7 +64,7 @@ class Q_WIDGETS_EXPORT QAbstractButton : public QWidget
Q_PROPERTY(QKeySequence shortcut READ shortcut WRITE setShortcut)
#endif
Q_PROPERTY(bool checkable READ isCheckable WRITE setCheckable)
- Q_PROPERTY(bool checked READ isChecked WRITE setChecked DESIGNABLE isCheckable NOTIFY toggled USER true)
+ Q_PROPERTY(bool checked READ isChecked WRITE setChecked NOTIFY toggled USER true)
Q_PROPERTY(bool autoRepeat READ autoRepeat WRITE setAutoRepeat)
Q_PROPERTY(bool autoExclusive READ autoExclusive WRITE setAutoExclusive)
Q_PROPERTY(int autoRepeatDelay READ autoRepeatDelay WRITE setAutoRepeatDelay)
diff --git a/src/widgets/widgets/qabstractscrollarea.cpp b/src/widgets/widgets/qabstractscrollarea.cpp
index d2372a7be9..320b3bf7ef 100644
--- a/src/widgets/widgets/qabstractscrollarea.cpp
+++ b/src/widgets/widgets/qabstractscrollarea.cpp
@@ -161,10 +161,10 @@ QT_BEGIN_NAMESPACE
*/
QAbstractScrollAreaPrivate::QAbstractScrollAreaPrivate()
- :hbar(0), vbar(0), vbarpolicy(Qt::ScrollBarAsNeeded), hbarpolicy(Qt::ScrollBarAsNeeded),
+ :hbar(nullptr), vbar(nullptr), vbarpolicy(Qt::ScrollBarAsNeeded), hbarpolicy(Qt::ScrollBarAsNeeded),
shownOnce(false), inResize(false), sizeAdjustPolicy(QAbstractScrollArea::AdjustIgnored),
- viewport(0), cornerWidget(0), left(0), top(0), right(0), bottom(0),
- xoffset(0), yoffset(0), viewportFilter(0)
+ viewport(nullptr), cornerWidget(nullptr), left(0), top(0), right(0), bottom(0),
+ xoffset(0), yoffset(0), viewportFilter(nullptr)
{
}
@@ -329,12 +329,12 @@ void QAbstractScrollAreaPrivate::layoutChildren()
void QAbstractScrollAreaPrivate::layoutChildren_helper(bool *needHorizontalScrollbar, bool *needVerticalScrollbar)
{
Q_Q(QAbstractScrollArea);
- bool htransient = hbar->style()->styleHint(QStyle::SH_ScrollBar_Transient, 0, hbar);
+ bool htransient = hbar->style()->styleHint(QStyle::SH_ScrollBar_Transient, nullptr, hbar);
bool needh = *needHorizontalScrollbar || ((hbarpolicy != Qt::ScrollBarAlwaysOff) && ((hbarpolicy == Qt::ScrollBarAlwaysOn && !htransient)
|| ((hbarpolicy == Qt::ScrollBarAsNeeded || htransient)
&& hbar->minimum() < hbar->maximum() && !hbar->sizeHint().isEmpty())));
- bool vtransient = vbar->style()->styleHint(QStyle::SH_ScrollBar_Transient, 0, vbar);
+ bool vtransient = vbar->style()->styleHint(QStyle::SH_ScrollBar_Transient, nullptr, vbar);
bool needv = *needVerticalScrollbar || ((vbarpolicy != Qt::ScrollBarAlwaysOff) && ((vbarpolicy == Qt::ScrollBarAlwaysOn && !vtransient)
|| ((vbarpolicy == Qt::ScrollBarAsNeeded || vtransient)
&& vbar->minimum() < vbar->maximum() && !vbar->sizeHint().isEmpty())));
@@ -352,7 +352,7 @@ void QAbstractScrollAreaPrivate::layoutChildren_helper(bool *needHorizontalScrol
const QRect widgetRect = q->rect();
- const bool hasCornerWidget = (cornerWidget != 0);
+ const bool hasCornerWidget = (cornerWidget != nullptr);
QPoint cornerOffset((needv && vscrollOverlap == 0) ? vsbExt : 0, (needh && hscrollOverlap == 0) ? hsbExt : 0);
QRect controlsRect;
@@ -794,7 +794,7 @@ void QAbstractScrollArea::addScrollBarWidget(QWidget *widget, Qt::Alignment alig
{
Q_D(QAbstractScrollArea);
- if (widget == 0)
+ if (widget == nullptr)
return;
const Qt::Orientation scrollBarOrientation
@@ -894,8 +894,8 @@ bool QAbstractScrollArea::eventFilter(QObject *o, QEvent *e)
if (d->hbarpolicy == Qt::ScrollBarAsNeeded && d->vbarpolicy == Qt::ScrollBarAsNeeded) {
QScrollBar *sbar = static_cast<QScrollBar*>(o);
QScrollBar *sibling = sbar == d->hbar ? d->vbar : d->hbar;
- if (sbar->style()->styleHint(QStyle::SH_ScrollBar_Transient, 0, sbar) &&
- sibling->style()->styleHint(QStyle::SH_ScrollBar_Transient, 0, sibling))
+ if (sbar->style()->styleHint(QStyle::SH_ScrollBar_Transient, nullptr, sbar) &&
+ sibling->style()->styleHint(QStyle::SH_ScrollBar_Transient, nullptr, sibling))
d->setScrollBarTransient(sibling, e->type() == QEvent::HoverLeave);
}
}
@@ -1389,10 +1389,10 @@ bool QAbstractScrollAreaPrivate::canStartScrollingAt( const QPoint &startPos )
void QAbstractScrollAreaPrivate::flashScrollBars()
{
- bool htransient = hbar->style()->styleHint(QStyle::SH_ScrollBar_Transient, 0, hbar);
+ bool htransient = hbar->style()->styleHint(QStyle::SH_ScrollBar_Transient, nullptr, hbar);
if ((hbarpolicy != Qt::ScrollBarAlwaysOff) && (hbarpolicy == Qt::ScrollBarAsNeeded || htransient))
hbar->d_func()->flash();
- bool vtransient = vbar->style()->styleHint(QStyle::SH_ScrollBar_Transient, 0, vbar);
+ bool vtransient = vbar->style()->styleHint(QStyle::SH_ScrollBar_Transient, nullptr, vbar);
if ((vbarpolicy != Qt::ScrollBarAlwaysOff) && (vbarpolicy == Qt::ScrollBarAsNeeded || vtransient))
vbar->d_func()->flash();
}
diff --git a/src/widgets/widgets/qabstractslider.cpp b/src/widgets/widgets/qabstractslider.cpp
index dc325ab871..a0611565b8 100644
--- a/src/widgets/widgets/qabstractslider.cpp
+++ b/src/widgets/widgets/qabstractslider.cpp
@@ -273,13 +273,13 @@ void QAbstractSliderPrivate::setSteps(int single, int page)
\l value of 0.
*/
QAbstractSlider::QAbstractSlider(QWidget *parent)
- :QWidget(*new QAbstractSliderPrivate, parent, 0)
+ :QWidget(*new QAbstractSliderPrivate, parent, { })
{
}
/*! \internal */
QAbstractSlider::QAbstractSlider(QAbstractSliderPrivate &dd, QWidget *parent)
- :QWidget(dd, parent, 0)
+ :QWidget(dd, parent, { })
{
}
diff --git a/src/widgets/widgets/qabstractspinbox.cpp b/src/widgets/widgets/qabstractspinbox.cpp
index fc19e0793e..6a0d2f5019 100644
--- a/src/widgets/widgets/qabstractspinbox.cpp
+++ b/src/widgets/widgets/qabstractspinbox.cpp
@@ -147,7 +147,7 @@ QT_BEGIN_NAMESPACE
*/
QAbstractSpinBox::QAbstractSpinBox(QWidget *parent)
- : QWidget(*new QAbstractSpinBoxPrivate, parent, 0)
+ : QWidget(*new QAbstractSpinBoxPrivate, parent, { })
{
Q_D(QAbstractSpinBox);
d->init();
@@ -157,7 +157,7 @@ QAbstractSpinBox::QAbstractSpinBox(QWidget *parent)
\internal
*/
QAbstractSpinBox::QAbstractSpinBox(QAbstractSpinBoxPrivate &dd, QWidget *parent)
- : QWidget(dd, parent, 0)
+ : QWidget(dd, parent, { })
{
Q_D(QAbstractSpinBox);
d->init();
@@ -848,9 +848,9 @@ void QAbstractSpinBox::changeEvent(QEvent *event)
switch (event->type()) {
case QEvent::StyleChange:
- d->spinClickTimerInterval = style()->styleHint(QStyle::SH_SpinBox_ClickAutoRepeatRate, 0, this);
+ d->spinClickTimerInterval = style()->styleHint(QStyle::SH_SpinBox_ClickAutoRepeatRate, nullptr, this);
d->spinClickThresholdTimerInterval =
- style()->styleHint(QStyle::SH_SpinBox_ClickAutoRepeatThreshold, 0, this);
+ style()->styleHint(QStyle::SH_SpinBox_ClickAutoRepeatThreshold, nullptr, this);
if (d->edit)
d->edit->setFrame(!style()->styleHint(QStyle::SH_SpinBox_ButtonsInsideFrame, nullptr, this));
d->stepModifier = static_cast<Qt::KeyboardModifier>(style()->styleHint(QStyle::SH_SpinBox_StepModifier, nullptr, this));
@@ -1043,7 +1043,7 @@ void QAbstractSpinBox::keyPressEvent(QKeyEvent *event)
steps *= 10;
if (!up)
steps *= -1;
- if (style()->styleHint(QStyle::SH_SpinBox_AnimateButton, 0, this)) {
+ if (style()->styleHint(QStyle::SH_SpinBox_AnimateButton, nullptr, this)) {
d->buttonState = (Keyboard | (up ? Up : Down));
}
if (d->spinClickTimerId == -1)
@@ -1421,14 +1421,14 @@ void QAbstractSpinBox::mouseReleaseEvent(QMouseEvent *event)
*/
QAbstractSpinBoxPrivate::QAbstractSpinBoxPrivate()
- : edit(0), type(QVariant::Invalid), spinClickTimerId(-1),
+ : edit(nullptr), type(QVariant::Invalid), spinClickTimerId(-1),
spinClickTimerInterval(100), spinClickThresholdTimerId(-1), spinClickThresholdTimerInterval(-1),
effectiveSpinRepeatRate(1), buttonState(None), cachedText(QLatin1String("\x01")),
cachedState(QValidator::Invalid), pendingEmit(false), readOnly(false), wrapping(false),
ignoreCursorPositionChanged(false), frame(true), accelerate(false), keyboardTracking(true),
cleared(false), ignoreUpdateEdit(false), correctionMode(QAbstractSpinBox::CorrectToPreviousValue),
stepModifier(Qt::ControlModifier), acceleration(0), hoverControl(QStyle::SC_None),
- buttonSymbols(QAbstractSpinBox::UpDownArrows), validator(0), showGroupSeparator(0),
+ buttonSymbols(QAbstractSpinBox::UpDownArrows), validator(nullptr), showGroupSeparator(0),
wheelDeltaRemainder(0)
{
}
diff --git a/src/widgets/widgets/qbuttongroup.cpp b/src/widgets/widgets/qbuttongroup.cpp
index 669faa92c7..c3fd37d8e9 100644
--- a/src/widgets/widgets/qbuttongroup.cpp
+++ b/src/widgets/widgets/qbuttongroup.cpp
@@ -47,7 +47,7 @@ QT_BEGIN_NAMESPACE
void QButtonGroupPrivate::detectCheckedButton()
{
QAbstractButton *previous = checkedButton;
- checkedButton = 0;
+ checkedButton = nullptr;
if (exclusive)
return;
for (int i = 0; i < buttonList.count(); i++) {
@@ -119,7 +119,7 @@ QButtonGroup::~QButtonGroup()
{
Q_D(QButtonGroup);
for (int i = 0; i < d->buttonList.count(); ++i)
- d->buttonList.at(i)->d_func()->group = 0;
+ d->buttonList.at(i)->d_func()->group = nullptr;
}
/*!
@@ -273,7 +273,7 @@ void QButtonGroup::removeButton(QAbstractButton *button)
d->detectCheckedButton();
}
if (button->d_func()->group == this) {
- button->d_func()->group = 0;
+ button->d_func()->group = nullptr;
d->buttonList.removeAll(button);
d->mapping.remove(button);
}
diff --git a/src/widgets/widgets/qcalendarwidget.cpp b/src/widgets/widgets/qcalendarwidget.cpp
index 8593001f8b..fe1133c6c7 100644
--- a/src/widgets/widgets/qcalendarwidget.cpp
+++ b/src/widgets/widgets/qcalendarwidget.cpp
@@ -559,7 +559,7 @@ void QCalendarDateValidator::setFormat(const QString &format)
separator += nextChar;
quoting = false;
} else {
- QCalendarDateSectionValidator *validator = 0;
+ QCalendarDateSectionValidator *validator = nullptr;
if (nextChar == QLatin1Char('d')) {
offset = qMin(4, countRepeat(format, pos));
validator = &m_dayValidator;
@@ -640,9 +640,9 @@ class QCalendarTextNavigator: public QObject
{
Q_OBJECT
public:
- QCalendarTextNavigator(QObject *parent = 0)
- : QObject(parent), m_dateText(0), m_dateFrame(0), m_dateValidator(0),
- m_widget(0), m_editDelay(1500), m_date(QDate::currentDate()) {}
+ QCalendarTextNavigator(QObject *parent = nullptr)
+ : QObject(parent), m_dateText(nullptr), m_dateFrame(nullptr), m_dateValidator(nullptr),
+ m_widget(nullptr), m_editDelay(1500), m_date(QDate::currentDate()) {}
QWidget *widget() const;
void setWidget(QWidget *widget);
@@ -752,9 +752,9 @@ void QCalendarTextNavigator::removeDateLabel()
m_dateFrame->hide();
m_dateFrame->deleteLater();
delete m_dateValidator;
- m_dateFrame = 0;
- m_dateText = 0;
- m_dateValidator = 0;
+ m_dateFrame = nullptr;
+ m_dateText = nullptr;
+ m_dateValidator = nullptr;
}
bool QCalendarTextNavigator::eventFilter(QObject *o, QEvent *e)
@@ -858,7 +858,7 @@ class QCalendarModel : public QAbstractTableModel
{
Q_OBJECT
public:
- QCalendarModel(QObject *parent = 0);
+ QCalendarModel(QObject *parent = nullptr);
int rowCount(const QModelIndex &) const override
{ return RowCount + m_firstRow; }
@@ -951,7 +951,7 @@ class QCalendarView : public QTableView
{
Q_OBJECT
public:
- QCalendarView(QWidget *parent = 0);
+ QCalendarView(QWidget *parent = nullptr);
void internalUpdate() { updateGeometries(); }
void setReadOnly(bool enable);
@@ -1207,9 +1207,9 @@ Qt::ItemFlags QCalendarModel::flags(const QModelIndex &index) const
if (!date.isValid())
return QAbstractTableModel::flags(index);
if (date < m_minimumDate)
- return 0;
+ return { };
if (date > m_maximumDate)
- return 0;
+ return { };
return QAbstractTableModel::flags(index);
}
@@ -1599,7 +1599,7 @@ class QCalendarDelegate : public QItemDelegate
{
Q_OBJECT
public:
- QCalendarDelegate(QCalendarWidgetPrivate *w, QObject *parent = 0)
+ QCalendarDelegate(QCalendarWidgetPrivate *w, QObject *parent = nullptr)
: QItemDelegate(parent), calendarWidgetPrivate(w)
{ }
virtual void paint(QPainter *painter, const QStyleOptionViewItem &option,
@@ -1734,11 +1734,11 @@ void QCalendarDelegate::paintCell(QPainter *painter, const QRect &rect, QDate da
QCalendarWidgetPrivate::QCalendarWidgetPrivate()
: QWidgetPrivate()
{
- m_model = 0;
- m_view = 0;
- m_delegate = 0;
- m_selection = 0;
- m_navigator = 0;
+ m_model = nullptr;
+ m_view = nullptr;
+ m_delegate = nullptr;
+ m_selection = nullptr;
+ m_navigator = nullptr;
m_dateEditEnabled = false;
navBarVisible = true;
oldFocusPolicy = Qt::StrongFocus;
@@ -1748,7 +1748,7 @@ void QCalendarWidgetPrivate::setNavigatorEnabled(bool enable)
{
Q_Q(QCalendarWidget);
- bool navigatorEnabled = (m_navigator->widget() != 0);
+ bool navigatorEnabled = (m_navigator->widget() != nullptr);
if (enable == navigatorEnabled)
return;
@@ -1760,7 +1760,7 @@ void QCalendarWidgetPrivate::setNavigatorEnabled(bool enable)
q, SLOT(_q_editingFinished()));
m_view->installEventFilter(m_navigator);
} else {
- m_navigator->setWidget(0);
+ m_navigator->setWidget(nullptr);
q->disconnect(m_navigator, SIGNAL(dateChanged(QDate)),
q, SLOT(_q_slotChangeDate(QDate)));
q->disconnect(m_navigator, SIGNAL(editingFinished()),
@@ -1847,8 +1847,8 @@ void QCalendarWidgetPrivate::createNavigationBar(QWidget *widget)
void QCalendarWidgetPrivate::updateButtonIcons()
{
Q_Q(QCalendarWidget);
- prevMonth->setIcon(q->style()->standardIcon(q->isRightToLeft() ? QStyle::SP_ArrowRight : QStyle::SP_ArrowLeft, 0, q));
- nextMonth->setIcon(q->style()->standardIcon(q->isRightToLeft() ? QStyle::SP_ArrowLeft : QStyle::SP_ArrowRight, 0, q));
+ prevMonth->setIcon(q->style()->standardIcon(q->isRightToLeft() ? QStyle::SP_ArrowRight : QStyle::SP_ArrowLeft, nullptr, q));
+ nextMonth->setIcon(q->style()->standardIcon(q->isRightToLeft() ? QStyle::SP_ArrowLeft : QStyle::SP_ArrowRight, nullptr, q));
}
void QCalendarWidgetPrivate::updateMonthMenu()
@@ -2135,7 +2135,7 @@ void QCalendarWidgetPrivate::_q_editingFinished()
\sa setCurrentPage()
*/
QCalendarWidget::QCalendarWidget(QWidget *parent)
- : QWidget(*new QCalendarWidgetPrivate, parent, 0)
+ : QWidget(*new QCalendarWidgetPrivate, parent, { })
{
Q_D(QCalendarWidget);
diff --git a/src/widgets/widgets/qcombobox.cpp b/src/widgets/widgets/qcombobox.cpp
index 9a0e969e1c..4cfa5554e4 100644
--- a/src/widgets/widgets/qcombobox.cpp
+++ b/src/widgets/widgets/qcombobox.cpp
@@ -91,30 +91,11 @@ QT_BEGIN_NAMESPACE
QComboBoxPrivate::QComboBoxPrivate()
: QWidgetPrivate(),
- model(0),
- lineEdit(0),
- container(0),
- insertPolicy(QComboBox::InsertAtBottom),
- sizeAdjustPolicy(QComboBox::AdjustToContentsOnFirstShow),
- minimumContentsLength(0),
shownOnce(false),
autoCompletion(true),
duplicatesEnabled(false),
frame(true),
- maxVisibleItems(10),
- maxCount(INT_MAX),
- modelColumn(0),
- inserting(false),
- arrowState(QStyle::State_None),
- hoverControl(QStyle::SC_None),
- autoCompletionCaseSensitivity(Qt::CaseInsensitive),
- indexBeforeChange(-1)
-#ifdef Q_OS_MAC
- , m_platformMenu(0)
-#endif
-#if QT_CONFIG(completer)
- , completer(0)
-#endif
+ inserting(false)
{
}
@@ -148,7 +129,15 @@ QStyleOptionMenuItem QComboMenuDelegate::getStyleOption(const QStyleOptionViewIt
if (option.state & QStyle::State_Selected)
menuOption.state |= QStyle::State_Selected;
menuOption.checkType = QStyleOptionMenuItem::NonExclusive;
- menuOption.checked = mCombo->currentIndex() == index.row();
+ // a valid checkstate means that the model has checkable items
+ const QVariant checkState = index.data(Qt::CheckStateRole);
+ if (!checkState.isValid()) {
+ menuOption.checked = mCombo->currentIndex() == index.row();
+ } else {
+ menuOption.checked = qvariant_cast<int>(checkState) == Qt::Checked;
+ menuOption.state |= qvariant_cast<int>(checkState) == Qt::Checked
+ ? QStyle::State_On : QStyle::State_Off;
+ }
if (QComboBoxDelegate::isSeparator(index))
menuOption.menuItemType = QStyleOptionMenuItem::Separator;
else
@@ -198,6 +187,55 @@ QStyleOptionMenuItem QComboMenuDelegate::getStyleOption(const QStyleOptionViewIt
return menuOption;
}
+bool QComboMenuDelegate::editorEvent(QEvent *event, QAbstractItemModel *model,
+ const QStyleOptionViewItem &option, const QModelIndex &index)
+{
+ Q_ASSERT(event);
+ Q_ASSERT(model);
+
+ // make sure that the item is checkable
+ Qt::ItemFlags flags = model->flags(index);
+ if (!(flags & Qt::ItemIsUserCheckable) || !(option.state & QStyle::State_Enabled)
+ || !(flags & Qt::ItemIsEnabled))
+ return false;
+
+ // make sure that we have a check state
+ const QVariant checkState = index.data(Qt::CheckStateRole);
+ if (!checkState.isValid())
+ return false;
+
+ // make sure that we have the right event type
+ if ((event->type() == QEvent::MouseButtonRelease)
+ || (event->type() == QEvent::MouseButtonDblClick)
+ || (event->type() == QEvent::MouseButtonPress)) {
+ QMouseEvent *me = static_cast<QMouseEvent*>(event);
+ if (me->button() != Qt::LeftButton)
+ return false;
+
+ if ((event->type() == QEvent::MouseButtonPress)
+ || (event->type() == QEvent::MouseButtonDblClick)) {
+ pressedIndex = index.row();
+ return false;
+ }
+
+ if (index.row() != pressedIndex)
+ return false;
+ pressedIndex = -1;
+
+ } else if (event->type() == QEvent::KeyPress) {
+ if (static_cast<QKeyEvent*>(event)->key() != Qt::Key_Space
+ && static_cast<QKeyEvent*>(event)->key() != Qt::Key_Select)
+ return false;
+ } else {
+ return false;
+ }
+
+ // we don't support user-tristate items in QComboBox (not implemented in any style)
+ Qt::CheckState newState = (static_cast<Qt::CheckState>(checkState.toInt()) == Qt::Checked)
+ ? Qt::Unchecked : Qt::Checked;
+ return model->setData(index, newState, Qt::CheckStateRole);
+}
+
#if QT_CONFIG(completer)
void QComboBoxPrivate::_q_completerActivated(const QModelIndex &index)
{
@@ -368,6 +406,8 @@ QSize QComboBoxPrivate::recomputeSizeHint(QSize &sh) const
}
if (minimumContentsLength > 0)
sh.setWidth(qMax(sh.width(), minimumContentsLength * fm.horizontalAdvance(QLatin1Char('X')) + (hasIcon ? iconSize.width() + 4 : 0)));
+ if (!placeholderText.isEmpty())
+ sh.setWidth(qMax(sh.width(), fm.boundingRect(placeholderText).width()));
// height
@@ -445,12 +485,8 @@ void QComboBoxPrivateContainer::paintEvent(QPaintEvent *e)
QFrame::paintEvent(e);
}
-void QComboBoxPrivateContainer::leaveEvent(QEvent *)
-{
-}
-
QComboBoxPrivateContainer::QComboBoxPrivateContainer(QAbstractItemView *itemView, QComboBox *parent)
- : QFrame(parent, Qt::Popup), combo(parent), view(0), top(0), bottom(0), maybeIgnoreMouseButtonRelease(false)
+ : QFrame(parent, Qt::Popup), combo(parent)
{
// we need the combobox and itemview
Q_ASSERT(parent);
@@ -555,7 +591,7 @@ void QComboBoxPrivateContainer::updateScrollers()
*/
void QComboBoxPrivateContainer::viewDestroyed()
{
- view = 0;
+ view = nullptr;
setItemView(new QComboBoxListView());
}
@@ -589,7 +625,7 @@ void QComboBoxPrivateContainer::setItemView(QAbstractItemView *itemView)
if (isAncestorOf(view))
delete view;
- view = 0;
+ view = nullptr;
}
// setup the item view
@@ -929,7 +965,7 @@ QStyleOptionComboBox QComboBoxPrivateContainer::comboStyleOption() const
model QStandardItemModel.
*/
QComboBox::QComboBox(QWidget *parent)
- : QWidget(*new QComboBoxPrivate(), parent, 0)
+ : QWidget(*new QComboBoxPrivate(), parent, { })
{
Q_D(QComboBox);
d->init();
@@ -939,7 +975,7 @@ QComboBox::QComboBox(QWidget *parent)
\internal
*/
QComboBox::QComboBox(QComboBoxPrivate &dd, QWidget *parent)
- : QWidget(dd, parent, 0)
+ : QWidget(dd, parent, { })
{
Q_D(QComboBox);
d->init();
@@ -1110,8 +1146,9 @@ void QComboBoxPrivate::_q_rowsInserted(const QModelIndex &parent, int start, int
q->updateGeometry();
}
- // set current index if combo was previously empty
- if (start == 0 && (end - start + 1) == q->count() && !currentIndex.isValid()) {
+ // set current index if combo was previously empty and there is no placeholderText
+ if (start == 0 && (end - start + 1) == q->count() && !currentIndex.isValid() &&
+ placeholderText.isEmpty()) {
q->setCurrentIndex(0);
// need to emit changed if model updated index "silently"
} else if (currentIndex.row() != indexBeforeChange) {
@@ -1214,10 +1251,9 @@ void QComboBox::initStyleOption(QStyleOptionComboBox *option) const
} else {
option->activeSubControls = d->hoverControl;
}
- if (d->currentIndex.isValid()) {
- option->currentText = currentText();
+ option->currentText = currentText();
+ if (d->currentIndex.isValid())
option->currentIcon = d->itemIcon(d->currentIndex);
- }
option->iconSize = iconSize();
if (d->container && d->container->isVisible())
option->state |= QStyle::State_On;
@@ -1566,7 +1602,7 @@ void QComboBox::setAutoCompletion(bool enable)
d->lineEdit->setCompleter(d->completer);
d->completer->setWidget(this);
} else {
- d->lineEdit->setCompleter(0);
+ d->lineEdit->setCompleter(nullptr);
}
}
@@ -1755,7 +1791,7 @@ QSize QComboBox::iconSize() const
if (d->iconSize.isValid())
return d->iconSize;
- int iconWidth = style()->pixelMetric(QStyle::PM_SmallIconSize, 0, this);
+ int iconWidth = style()->pixelMetric(QStyle::PM_SmallIconSize, nullptr, this);
return QSize(iconWidth, iconWidth);
}
@@ -1772,6 +1808,45 @@ void QComboBox::setIconSize(const QSize &size)
}
/*!
+ \property QComboBox::placeholderText
+ \brief Sets a \a placeholderText text shown when no valid index is set
+
+ The \a placeholderText will be shown when an invalid index is set. The
+ text is not accessible in the dropdown list. When this function is called
+ before items are added the placeholder text will be shown, otherwise you
+ have to call setCurrentIndex(-1) programmatically if you want to show the
+ placeholder text.
+ Set an empty placeholder text to reset the setting.
+
+ When the QComboBox is editable, use QLineEdit::setPlaceholderText()
+ instead.
+
+ \since 5.15
+*/
+void QComboBox::setPlaceholderText(const QString &placeholderText)
+{
+ Q_D(QComboBox);
+ if (placeholderText == d->placeholderText)
+ return;
+
+ d->placeholderText = placeholderText;
+ if (currentIndex() == -1) {
+ if (d->placeholderText.isEmpty() && currentIndex() == -1)
+ setCurrentIndex(0);
+ else
+ update();
+ } else {
+ updateGeometry();
+ }
+}
+
+QString QComboBox::placeholderText() const
+{
+ Q_D(const QComboBox);
+ return d->placeholderText;
+}
+
+/*!
\property QComboBox::editable
\brief whether the combo box can be edited by the user
@@ -1786,7 +1861,7 @@ void QComboBox::setIconSize(const QSize &size)
bool QComboBox::isEditable() const
{
Q_D(const QComboBox);
- return d->lineEdit != 0;
+ return d->lineEdit != nullptr;
}
/*! \internal
@@ -1842,7 +1917,7 @@ void QComboBox::setEditable(bool editable)
setAttribute(Qt::WA_InputMethodEnabled, false);
d->lineEdit->hide();
d->lineEdit->deleteLater();
- d->lineEdit = 0;
+ d->lineEdit = nullptr;
}
d->updateDelegate();
@@ -1891,6 +1966,8 @@ void QComboBox::setLineEdit(QLineEdit *edit)
d->lineEdit->setFocusProxy(this);
d->lineEdit->setAttribute(Qt::WA_MacShowFocusRect, false);
#if QT_DEPRECATED_SINCE(5, 13)
+QT_WARNING_PUSH
+QT_WARNING_DISABLE_DEPRECATED
#if QT_CONFIG(completer)
setAutoCompletion(d->autoCompletion);
@@ -1907,6 +1984,7 @@ void QComboBox::setLineEdit(QLineEdit *edit)
}
#endif
#endif
+QT_WARNING_POP
#endif
setAttribute(Qt::WA_InputMethodEnabled);
@@ -1955,7 +2033,7 @@ void QComboBox::setValidator(const QValidator *v)
const QValidator *QComboBox::validator() const
{
Q_D(const QComboBox);
- return d->lineEdit ? d->lineEdit->validator() : 0;
+ return d->lineEdit ? d->lineEdit->validator() : nullptr;
}
#endif // QT_NO_VALIDATOR
@@ -1999,7 +2077,7 @@ void QComboBox::setCompleter(QCompleter *c)
QCompleter *QComboBox::completer() const
{
Q_D(const QComboBox);
- return d->lineEdit ? d->lineEdit->completer() : 0;
+ return d->lineEdit ? d->lineEdit->completer() : nullptr;
}
#endif // QT_CONFIG(completer)
@@ -2249,7 +2327,7 @@ QString QComboBox::currentText() const
else if (d->currentIndex.isValid())
return d->itemText(d->currentIndex);
else
- return QString();
+ return d->placeholderText;
}
/*!
@@ -2886,7 +2964,7 @@ void QComboBox::hidePopup()
QSignalBlocker containerBlocker(d->container);
// Flash selected/triggered item (if any).
if (style()->styleHint(QStyle::SH_Menu_FlashTriggeredItem)) {
- QItemSelectionModel *selectionModel = view() ? view()->selectionModel() : 0;
+ QItemSelectionModel *selectionModel = view() ? view()->selectionModel() : nullptr;
if (selectionModel && selectionModel->hasSelection()) {
QEventLoop eventLoop;
const QItemSelection selection = selectionModel->selection();
@@ -3079,6 +3157,9 @@ void QComboBox::paintEvent(QPaintEvent *)
initStyleOption(&opt);
painter.drawComplexControl(QStyle::CC_ComboBox, opt);
+ if (currentIndex() < 0)
+ opt.palette.setBrush(QPalette::ButtonText, opt.palette.brush(QPalette::ButtonText).color().lighter());
+
// draw the icon and text
painter.drawControl(QStyle::CE_ComboBoxLabel, opt);
}
diff --git a/src/widgets/widgets/qcombobox.h b/src/widgets/widgets/qcombobox.h
index 286772c091..4f89d7f542 100644
--- a/src/widgets/widgets/qcombobox.h
+++ b/src/widgets/widgets/qcombobox.h
@@ -71,6 +71,7 @@ class Q_WIDGETS_EXPORT QComboBox : public QWidget
Q_PROPERTY(SizeAdjustPolicy sizeAdjustPolicy READ sizeAdjustPolicy WRITE setSizeAdjustPolicy)
Q_PROPERTY(int minimumContentsLength READ minimumContentsLength WRITE setMinimumContentsLength)
Q_PROPERTY(QSize iconSize READ iconSize WRITE setIconSize)
+ Q_PROPERTY(QString placeholderText READ placeholderText WRITE setPlaceholderText)
#if QT_CONFIG(completer)
#if QT_DEPRECATED_SINCE(5, 13)
@@ -148,6 +149,9 @@ public:
QSize iconSize() const;
void setIconSize(const QSize &size);
+ void setPlaceholderText(const QString &placeholderText);
+ QString placeholderText() const;
+
bool isEditable() const;
void setEditable(bool editable);
void setLineEdit(QLineEdit *edit);
diff --git a/src/widgets/widgets/qcombobox_p.h b/src/widgets/widgets/qcombobox_p.h
index 5967776a61..7a3fcf6e0f 100644
--- a/src/widgets/widgets/qcombobox_p.h
+++ b/src/widgets/widgets/qcombobox_p.h
@@ -79,7 +79,6 @@ QT_REQUIRE_CONFIG(combobox);
QT_BEGIN_NAMESPACE
-class QAction;
class QPlatformMenu;
class QComboBoxListView : public QListView
@@ -131,9 +130,6 @@ private:
QComboBox *combo;
};
-
-class QStandardItemModel;
-
class Q_AUTOTEST_EXPORT QComboBoxPrivateScroller : public QWidget
{
Q_OBJECT
@@ -212,7 +208,7 @@ Q_SIGNALS:
private:
QAbstractSlider::SliderAction sliderAction;
QBasicTimer timer;
- bool fast;
+ bool fast = false;
};
class Q_WIDGETS_EXPORT QComboBoxPrivateContainer : public QFrame
@@ -246,7 +242,6 @@ protected:
void showEvent(QShowEvent *e) override;
void hideEvent(QHideEvent *e) override;
void timerEvent(QTimerEvent *timerEvent) override;
- void leaveEvent(QEvent *e) override;
void resizeEvent(QResizeEvent *e) override;
void paintEvent(QPaintEvent *e) override;
QStyleOptionComboBox comboStyleOption() const;
@@ -257,20 +252,23 @@ Q_SIGNALS:
private:
QComboBox *combo;
- QAbstractItemView *view;
- QComboBoxPrivateScroller *top;
- QComboBoxPrivateScroller *bottom;
- bool maybeIgnoreMouseButtonRelease;
+ QAbstractItemView *view = nullptr;
+ QComboBoxPrivateScroller *top = nullptr;
+ QComboBoxPrivateScroller *bottom = nullptr;
QElapsedTimer popupTimer;
+ bool maybeIgnoreMouseButtonRelease = false;
friend class QComboBox;
friend class QComboBoxPrivate;
};
class Q_AUTOTEST_EXPORT QComboMenuDelegate : public QAbstractItemDelegate
-{ Q_OBJECT
+{
+ Q_OBJECT
public:
- QComboMenuDelegate(QObject *parent, QComboBox *cmb) : QAbstractItemDelegate(parent), mCombo(cmb) {}
+ QComboMenuDelegate(QObject *parent, QComboBox *cmb)
+ : QAbstractItemDelegate(parent), mCombo(cmb), pressedIndex(-1)
+ {}
protected:
void paint(QPainter *painter,
@@ -286,11 +284,14 @@ protected:
return mCombo->style()->sizeFromContents(
QStyle::CT_MenuItem, &opt, option.rect.size(), mCombo);
}
+ bool editorEvent(QEvent *event, QAbstractItemModel *model,
+ const QStyleOptionViewItem &option, const QModelIndex &index) override;
private:
QStyleOptionMenuItem getStyleOption(const QStyleOptionViewItem &option,
const QModelIndex &index) const;
QComboBox *mCombo;
+ int pressedIndex;
};
// ### Qt6: QStyledItemDelegate ?
@@ -355,8 +356,8 @@ public:
void _q_complete();
void _q_itemSelected(const QModelIndex &item);
bool contains(const QString &text, int role);
- void emitActivated(const QModelIndex&);
- void _q_emitHighlighted(const QModelIndex&);
+ void emitActivated(const QModelIndex &index);
+ void _q_emitHighlighted(const QModelIndex &index);
void _q_emitCurrentIndexChanged(const QModelIndex &index);
void _q_modelDestroyed();
void _q_modelReset();
@@ -366,8 +367,8 @@ public:
void _q_resetButton();
void _q_dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight);
void _q_updateIndexBeforeChange();
- void _q_rowsInserted(const QModelIndex & parent, int start, int end);
- void _q_rowsRemoved(const QModelIndex & parent, int start, int end);
+ void _q_rowsInserted(const QModelIndex &parent, int start, int end);
+ void _q_rowsRemoved(const QModelIndex &parent, int start, int end);
void updateArrow(QStyle::StateFlag state);
bool updateHoverControl(const QPoint &pos);
QRect popupGeometry(int screen = -1) const;
@@ -402,39 +403,38 @@ public:
};
#endif
- QAbstractItemModel *model;
- QLineEdit *lineEdit;
- QComboBoxPrivateContainer *container;
- QComboBox::InsertPolicy insertPolicy;
- QComboBox::SizeAdjustPolicy sizeAdjustPolicy;
- int minimumContentsLength;
- QSize iconSize;
- uint shownOnce : 1;
- uint autoCompletion : 1;
- uint duplicatesEnabled : 1;
- uint frame : 1;
- uint padding : 26;
- int maxVisibleItems;
- int maxCount;
- int modelColumn;
- bool inserting;
- mutable QSize minimumSizeHint;
- mutable QSize sizeHint;
- QStyle::StateFlag arrowState;
- QStyle::SubControl hoverControl;
- QRect hoverRect;
- QPersistentModelIndex currentIndex;
- QPersistentModelIndex root;
- Qt::CaseSensitivity autoCompletionCaseSensitivity;
- int indexBeforeChange;
+ QAbstractItemModel *model = nullptr;
+ QLineEdit *lineEdit = nullptr;
+ QComboBoxPrivateContainer *container = nullptr;
#ifdef Q_OS_MAC
- QPlatformMenu *m_platformMenu;
+ QPlatformMenu *m_platformMenu = nullptr;
#endif
#if QT_CONFIG(completer)
QPointer<QCompleter> completer;
#endif
- static QPalette viewContainerPalette(QComboBox *cmb)
- { return cmb->d_func()->viewContainer()->palette(); }
+ QPersistentModelIndex currentIndex;
+ QPersistentModelIndex root;
+ QString placeholderText;
+ QRect hoverRect;
+ QSize iconSize;
+ mutable QSize minimumSizeHint;
+ mutable QSize sizeHint;
+ QComboBox::InsertPolicy insertPolicy = QComboBox::InsertAtBottom;
+ QComboBox::SizeAdjustPolicy sizeAdjustPolicy = QComboBox::AdjustToContentsOnFirstShow;
+ QStyle::StateFlag arrowState = QStyle::State_None;
+ QStyle::SubControl hoverControl = QStyle::SC_None;
+ Qt::CaseSensitivity autoCompletionCaseSensitivity = Qt::CaseInsensitive;
+ int minimumContentsLength = 0;
+ int indexBeforeChange = -1;
+ int maxVisibleItems = 10;
+ int maxCount = std::numeric_limits<int>::max();
+ int modelColumn = 0;
+ int placeholderIndex = -1;
+ bool shownOnce : 1;
+ bool autoCompletion : 1;
+ bool duplicatesEnabled : 1;
+ bool frame : 1;
+ bool inserting : 1;
};
QT_END_NAMESPACE
diff --git a/src/widgets/widgets/qdatetimeedit.cpp b/src/widgets/widgets/qdatetimeedit.cpp
index 9189319364..5c123b45a5 100644
--- a/src/widgets/widgets/qdatetimeedit.cpp
+++ b/src/widgets/widgets/qdatetimeedit.cpp
@@ -794,7 +794,7 @@ QCalendarWidget *QDateTimeEdit::calendarWidget() const
{
Q_D(const QDateTimeEdit);
if (!d->calendarPopup || !(d->sections & QDateTimeParser::DateSectionMask))
- return 0;
+ return nullptr;
if (!d->monthCalendar) {
const_cast<QDateTimeEditPrivate*>(d)->initCalendarPopup();
}
@@ -1251,7 +1251,7 @@ void QDateTimeEdit::focusInEvent(QFocusEvent *event)
{
Q_D(QDateTimeEdit);
QAbstractSpinBox::focusInEvent(event);
- QString *frm = 0;
+ QString *frm = nullptr;
const int oldPos = d->edit->cursorPosition();
if (!d->formatExplicitlySet) {
if (d->displayFormat == d->defaultTimeFormat) {
@@ -1446,12 +1446,12 @@ QDateTimeEdit::StepEnabled QDateTimeEdit::stepEnabled() const
{
Q_D(const QDateTimeEdit);
if (d->readOnly)
- return StepEnabled(0);
+ return {};
if (d->specialValue()) {
- return (d->minimum == d->maximum ? StepEnabled(0) : StepEnabled(StepUpEnabled));
+ return (d->minimum == d->maximum ? StepEnabled{} : StepEnabled(StepUpEnabled));
}
- QAbstractSpinBox::StepEnabled ret = 0;
+ QAbstractSpinBox::StepEnabled ret = { };
#ifdef QT_KEYPAD_NAVIGATION
if (QApplicationPrivate::keypadNavigationEnabled() && !hasEditFocus()) {
@@ -1486,7 +1486,7 @@ QDateTimeEdit::StepEnabled QDateTimeEdit::stepEnabled() const
switch (d->sectionType(d->currentSectionIndex)) {
case QDateTimeParser::NoSection:
case QDateTimeParser::FirstSection:
- case QDateTimeParser::LastSection: return 0;
+ case QDateTimeParser::LastSection: return { };
default: break;
}
if (d->wrapping)
@@ -1689,17 +1689,16 @@ QDateTimeEditPrivate::QDateTimeEditPrivate()
cacheGuard = false;
fixday = true;
type = QVariant::DateTime;
- sections = 0;
+ sections = { };
cachedDay = -1;
currentSectionIndex = FirstSectionIndex;
first.pos = 0;
- sections = 0;
calendarPopup = false;
minimum = QDATETIMEEDIT_COMPAT_DATE_MIN.startOfDay();
maximum = QDATETIMEEDIT_DATE_MAX.endOfDay();
arrowState = QStyle::State_None;
- monthCalendar = 0;
+ monthCalendar = nullptr;
readLocaleSettings();
#ifdef QT_KEYPAD_NAVIGATION
@@ -2286,7 +2285,7 @@ QDateTimeEdit::Section QDateTimeEditPrivate::convertToPublic(QDateTimeParser::Se
QDateTimeEdit::Sections QDateTimeEditPrivate::convertSections(QDateTimeParser::Sections s)
{
- QDateTimeEdit::Sections ret = 0;
+ QDateTimeEdit::Sections ret;
if (s & QDateTimeParser::MSecSection)
ret |= QDateTimeEdit::MSecSection;
if (s & QDateTimeParser::SecondSection)
diff --git a/src/widgets/widgets/qdialogbuttonbox.cpp b/src/widgets/widgets/qdialogbuttonbox.cpp
index 28f6cdc7bd..9867cb5540 100644
--- a/src/widgets/widgets/qdialogbuttonbox.cpp
+++ b/src/widgets/widgets/qdialogbuttonbox.cpp
@@ -178,15 +178,15 @@ public:
};
QDialogButtonBoxPrivate::QDialogButtonBoxPrivate(Qt::Orientation orient)
- : orientation(orient), buttonLayout(0), internalRemove(false), center(false)
+ : orientation(orient), buttonLayout(nullptr), internalRemove(false), center(false)
{
}
void QDialogButtonBoxPrivate::initLayout()
{
Q_Q(QDialogButtonBox);
- layoutPolicy = QDialogButtonBox::ButtonLayout(q->style()->styleHint(QStyle::SH_DialogButtonLayout, 0, q));
- bool createNewLayout = buttonLayout == 0
+ layoutPolicy = QDialogButtonBox::ButtonLayout(q->style()->styleHint(QStyle::SH_DialogButtonLayout, nullptr, q));
+ bool createNewLayout = buttonLayout == nullptr
|| (orientation == Qt::Horizontal && qobject_cast<QVBoxLayout *>(buttonLayout) != 0)
|| (orientation == Qt::Vertical && qobject_cast<QHBoxLayout *>(buttonLayout) != 0);
if (createNewLayout) {
@@ -329,8 +329,8 @@ void QDialogButtonBoxPrivate::layoutButtons()
++currentLayout;
}
- QWidget *lastWidget = 0;
- q->setFocusProxy(0);
+ QWidget *lastWidget = nullptr;
+ q->setFocusProxy(nullptr);
for (int i = 0; i < buttonLayout->count(); ++i) {
QLayoutItem *item = buttonLayout->itemAt(i);
if (QWidget *widget = item->widget()) {
@@ -408,13 +408,13 @@ QPushButton *QDialogButtonBoxPrivate::createButton(QDialogButtonBox::StandardBut
icon = QStyle::SP_RestoreDefaultsButton;
break;
case QDialogButtonBox::NoButton:
- return 0;
+ return nullptr;
;
}
QPushButton *button = new QPushButton(QGuiApplicationPrivate::platformTheme()->standardButtonText(sbutton), q);
QStyle *style = q->style();
- if (style->styleHint(QStyle::SH_DialogButtonBox_ButtonsHaveIcons, 0, q) && icon != 0)
- button->setIcon(style->standardIcon(QStyle::StandardPixmap(icon), 0, q));
+ if (style->styleHint(QStyle::SH_DialogButtonBox_ButtonsHaveIcons, nullptr, q) && icon != 0)
+ button->setIcon(style->standardIcon(QStyle::StandardPixmap(icon), nullptr, q));
if (style != QApplication::style()) // Propagate style
button->setStyle(style);
standardButtonHash.insert(button, sbutton);
@@ -482,7 +482,7 @@ QDialogButtonBox::QDialogButtonBox(QWidget *parent)
\sa orientation, addButton()
*/
QDialogButtonBox::QDialogButtonBox(Qt::Orientation orientation, QWidget *parent)
- : QWidget(*new QDialogButtonBoxPrivate(orientation), parent, 0)
+ : QWidget(*new QDialogButtonBoxPrivate(orientation), parent, { })
{
d_func()->initLayout();
}
@@ -743,7 +743,7 @@ void QDialogButtonBox::removeButton(QAbstractButton *button)
}
}
if (!d->internalRemove)
- button->setParent(0);
+ button->setParent(nullptr);
}
/*!
@@ -781,7 +781,7 @@ QPushButton *QDialogButtonBox::addButton(const QString &text, ButtonRole role)
Q_D(QDialogButtonBox);
if (Q_UNLIKELY(role <= InvalidRole || role >= NRoles)) {
qWarning("QDialogButtonBox::addButton: Invalid ButtonRole, button not added");
- return 0;
+ return nullptr;
}
QPushButton *button = new QPushButton(text, this);
d->addButton(button, role);
@@ -963,7 +963,7 @@ bool QDialogButtonBox::event(QEvent *event)
QList<QAbstractButton *> acceptRoleList = d->buttonLists[AcceptRole];
QPushButton *firstAcceptButton = acceptRoleList.isEmpty() ? 0 : qobject_cast<QPushButton *>(acceptRoleList.at(0));
bool hasDefault = false;
- QWidget *dialog = 0;
+ QWidget *dialog = nullptr;
QWidget *p = this;
while (p && !p->isWindow()) {
p = p->parentWidget();
diff --git a/src/widgets/widgets/qdockarealayout.cpp b/src/widgets/widgets/qdockarealayout.cpp
index 5900326087..87f4519dd6 100644
--- a/src/widgets/widgets/qdockarealayout.cpp
+++ b/src/widgets/widgets/qdockarealayout.cpp
@@ -85,27 +85,27 @@ QPlaceHolderItem::QPlaceHolderItem(QWidget *w)
*/
QDockAreaLayoutItem::QDockAreaLayoutItem(QLayoutItem *_widgetItem)
- : widgetItem(_widgetItem), subinfo(0), placeHolderItem(0), pos(0), size(-1), flags(NoFlags)
+ : widgetItem(_widgetItem), subinfo(nullptr), placeHolderItem(nullptr), pos(0), size(-1), flags(NoFlags)
{
}
QDockAreaLayoutItem::QDockAreaLayoutItem(QDockAreaLayoutInfo *_subinfo)
- : widgetItem(0), subinfo(_subinfo), placeHolderItem(0), pos(0), size(-1), flags(NoFlags)
+ : widgetItem(nullptr), subinfo(_subinfo), placeHolderItem(nullptr), pos(0), size(-1), flags(NoFlags)
{
}
QDockAreaLayoutItem::QDockAreaLayoutItem(QPlaceHolderItem *_placeHolderItem)
- : widgetItem(0), subinfo(0), placeHolderItem(_placeHolderItem), pos(0), size(-1), flags(NoFlags)
+ : widgetItem(nullptr), subinfo(nullptr), placeHolderItem(_placeHolderItem), pos(0), size(-1), flags(NoFlags)
{
}
QDockAreaLayoutItem::QDockAreaLayoutItem(const QDockAreaLayoutItem &other)
- : widgetItem(other.widgetItem), subinfo(0), placeHolderItem(0), pos(other.pos),
+ : widgetItem(other.widgetItem), subinfo(nullptr), placeHolderItem(nullptr), pos(other.pos),
size(other.size), flags(other.flags)
{
- if (other.subinfo != 0)
+ if (other.subinfo != nullptr)
subinfo = new QDockAreaLayoutInfo(*other.subinfo);
- else if (other.placeHolderItem != 0)
+ else if (other.placeHolderItem != nullptr)
placeHolderItem = new QPlaceHolderItem(*other.placeHolderItem);
}
@@ -117,16 +117,16 @@ QDockAreaLayoutItem::~QDockAreaLayoutItem()
bool QDockAreaLayoutItem::skip() const
{
- if (placeHolderItem != 0)
+ if (placeHolderItem != nullptr)
return true;
if (flags & GapItem)
return false;
- if (widgetItem != 0)
+ if (widgetItem != nullptr)
return widgetItem->isEmpty();
- if (subinfo != 0) {
+ if (subinfo != nullptr) {
for (int i = 0; i < subinfo->item_list.count(); ++i) {
if (!subinfo->item_list.at(i).skip())
return false;
@@ -140,7 +140,7 @@ QSize QDockAreaLayoutItem::minimumSize() const
{
if (widgetItem)
return widgetItem->minimumSize().grownBy(widgetItem->widget()->contentsMargins());
- if (subinfo != 0)
+ if (subinfo != nullptr)
return subinfo->minimumSize();
return QSize(0, 0);
}
@@ -149,7 +149,7 @@ QSize QDockAreaLayoutItem::maximumSize() const
{
if (widgetItem)
return widgetItem->maximumSize().grownBy(widgetItem->widget()->contentsMargins());
- if (subinfo != 0)
+ if (subinfo != nullptr)
return subinfo->maximumSize();
return QSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX);
}
@@ -161,22 +161,22 @@ bool QDockAreaLayoutItem::hasFixedSize(Qt::Orientation o) const
bool QDockAreaLayoutItem::expansive(Qt::Orientation o) const
{
- if ((flags & GapItem) || placeHolderItem != 0)
+ if ((flags & GapItem) || placeHolderItem != nullptr)
return false;
- if (widgetItem != 0)
+ if (widgetItem != nullptr)
return ((widgetItem->expandingDirections() & o) == o);
- if (subinfo != 0)
+ if (subinfo != nullptr)
return subinfo->expansive(o);
return false;
}
QSize QDockAreaLayoutItem::sizeHint() const
{
- if (placeHolderItem != 0)
+ if (placeHolderItem != nullptr)
return QSize(0, 0);
if (widgetItem)
return widgetItem->sizeHint().grownBy(widgetItem->widget()->contentsMargins());
- if (subinfo != 0)
+ if (subinfo != nullptr)
return subinfo->sizeHint();
return QSize(-1, -1);
}
@@ -185,14 +185,14 @@ QDockAreaLayoutItem
&QDockAreaLayoutItem::operator = (const QDockAreaLayoutItem &other)
{
widgetItem = other.widgetItem;
- if (other.subinfo == 0)
- subinfo = 0;
+ if (other.subinfo == nullptr)
+ subinfo = nullptr;
else
subinfo = new QDockAreaLayoutInfo(*other.subinfo);
delete placeHolderItem;
- if (other.placeHolderItem == 0)
- placeHolderItem = 0;
+ if (other.placeHolderItem == nullptr)
+ placeHolderItem = nullptr;
else
placeHolderItem = new QPlaceHolderItem(*other.placeHolderItem);
@@ -210,7 +210,7 @@ QDockAreaLayoutItem
#if QT_CONFIG(tabbar)
static quintptr tabId(const QDockAreaLayoutItem &item)
{
- if (item.widgetItem == 0)
+ if (item.widgetItem == nullptr)
return 0;
return reinterpret_cast<quintptr>(item.widgetItem->widget());
}
@@ -219,9 +219,9 @@ static quintptr tabId(const QDockAreaLayoutItem &item)
static const int zero = 0;
QDockAreaLayoutInfo::QDockAreaLayoutInfo()
- : sep(&zero), dockPos(QInternal::LeftDock), o(Qt::Horizontal), mainWindow(0)
+ : sep(&zero), dockPos(QInternal::LeftDock), o(Qt::Horizontal), mainWindow(nullptr)
#if QT_CONFIG(tabbar)
- , tabbed(false), tabBar(0), tabBarShape(QTabBar::RoundedSouth)
+ , tabbed(false), tabBar(nullptr), tabBarShape(QTabBar::RoundedSouth)
#endif
{
}
@@ -231,7 +231,7 @@ QDockAreaLayoutInfo::QDockAreaLayoutInfo(const int *_sep, QInternal::DockPositio
QMainWindow *window)
: sep(_sep), dockPos(_dockPos), o(_o), mainWindow(window)
#if QT_CONFIG(tabbar)
- , tabbed(false), tabBar(0), tabBarShape(static_cast<QTabBar::Shape>(tbshape))
+ , tabbed(false), tabBar(nullptr), tabBarShape(static_cast<QTabBar::Shape>(tbshape))
#endif
{
#if !QT_CONFIG(tabbar)
@@ -250,7 +250,7 @@ void QDockAreaLayoutInfo::clear()
rect = QRect();
#if QT_CONFIG(tabbar)
tabbed = false;
- tabBar = 0;
+ tabBar = nullptr;
#endif
}
@@ -403,7 +403,7 @@ QSize QDockAreaLayoutInfo::sizeHint() const
int a = 0, b = 0;
int min_perp = 0;
int max_perp = QWIDGETSIZE_MAX;
- const QDockAreaLayoutItem *previous = 0;
+ const QDockAreaLayoutItem *previous = nullptr;
for (int i = 0; i < item_list.size(); ++i) {
const QDockAreaLayoutItem &item = item_list.at(i);
if (item.skip())
@@ -552,7 +552,7 @@ void QDockAreaLayoutInfo::fitItems()
int max_size = realMaxSize(*this);
int last_index = -1;
- const QDockAreaLayoutItem *previous = 0;
+ const QDockAreaLayoutItem *previous = nullptr;
for (int i = 0; i < item_list.size(); ++i) {
QDockAreaLayoutItem &item = item_list[i];
if (item.skip())
@@ -633,7 +633,7 @@ void QDockAreaLayoutInfo::fitItems()
item.size = ls.size;
item.pos = ls.pos;
- if (item.subinfo != 0) {
+ if (item.subinfo != nullptr) {
item.subinfo->rect = itemRect(i);
item.subinfo->fitItems();
}
@@ -771,7 +771,7 @@ QList<int> QDockAreaLayoutInfo::gapIndex(const QPoint& _pos,
if (item.pos + item.size < pos)
continue;
- if (item.subinfo != 0
+ if (item.subinfo != nullptr
#if QT_CONFIG(tabbar)
&& !item.subinfo->tabbed
#endif
@@ -967,7 +967,7 @@ int QDockAreaLayoutInfo::separatorMove(int index, int delta)
const int separatorSpace = item.hasFixedSize(o) ? 0 : *sep;
item.size = ls.size - separatorSpace;
item.pos = ls.pos;
- if (item.subinfo != 0) {
+ if (item.subinfo != nullptr) {
item.subinfo->rect = itemRect(i);
item.subinfo->fitItems();
}
@@ -979,7 +979,7 @@ int QDockAreaLayoutInfo::separatorMove(int index, int delta)
void QDockAreaLayoutInfo::unnest(int index)
{
QDockAreaLayoutItem &item = item_list[index];
- if (item.subinfo == 0)
+ if (item.subinfo == nullptr)
return;
if (item.subinfo->item_list.count() > 1)
return;
@@ -988,14 +988,14 @@ void QDockAreaLayoutInfo::unnest(int index)
item_list.removeAt(index);
} else if (item.subinfo->item_list.count() == 1) {
QDockAreaLayoutItem &child = item.subinfo->item_list.first();
- if (child.widgetItem != 0) {
+ if (child.widgetItem != nullptr) {
item.widgetItem = child.widgetItem;
delete item.subinfo;
- item.subinfo = 0;
- } else if (child.subinfo != 0) {
+ item.subinfo = nullptr;
+ } else if (child.subinfo != nullptr) {
QDockAreaLayoutInfo *tmp = item.subinfo;
item.subinfo = child.subinfo;
- child.subinfo = 0;
+ child.subinfo = nullptr;
tmp->item_list.clear();
delete tmp;
}
@@ -1009,7 +1009,7 @@ void QDockAreaLayoutInfo::remove(const QList<int> &path)
if (path.count() > 1) {
const int index = path.first();
QDockAreaLayoutItem &item = item_list[index];
- Q_ASSERT(item.subinfo != 0);
+ Q_ASSERT(item.subinfo != nullptr);
item.subinfo->remove(path.mid(1));
unnest(index);
} else {
@@ -1028,13 +1028,13 @@ QLayoutItem *QDockAreaLayoutInfo::plug(const QList<int> &path)
if (path.count() > 1) {
QDockAreaLayoutItem &item = item_list[index];
- Q_ASSERT(item.subinfo != 0);
+ Q_ASSERT(item.subinfo != nullptr);
return item.subinfo->plug(path.mid(1));
}
QDockAreaLayoutItem &item = item_list[index];
- Q_ASSERT(item.widgetItem != 0);
+ Q_ASSERT(item.widgetItem != nullptr);
Q_ASSERT(item.flags & QDockAreaLayoutItem::GapItem);
item.flags &= ~QDockAreaLayoutItem::GapItem;
return item.widgetItem;
@@ -1047,7 +1047,7 @@ QLayoutItem *QDockAreaLayoutInfo::unplug(const QList<int> &path)
const int index = path.first();
if (path.count() > 1) {
QDockAreaLayoutItem &item = item_list[index];
- Q_ASSERT(item.subinfo != 0);
+ Q_ASSERT(item.subinfo != nullptr);
return item.subinfo->unplug(path.mid(1));
}
@@ -1078,7 +1078,7 @@ QLayoutItem *QDockAreaLayoutInfo::unplug(const QList<int> &path)
quintptr QDockAreaLayoutInfo::currentTabId() const
{
- if (!tabbed || tabBar == 0)
+ if (!tabbed || tabBar == nullptr)
return 0;
int index = tabBar->currentIndex();
@@ -1095,7 +1095,7 @@ void QDockAreaLayoutInfo::setCurrentTab(QWidget *widget)
void QDockAreaLayoutInfo::setCurrentTabId(quintptr id)
{
- if (!tabbed || tabBar == 0)
+ if (!tabbed || tabBar == nullptr)
return;
for (int i = 0; i < tabBar->count(); ++i) {
@@ -1114,7 +1114,7 @@ static QRect dockedGeometry(QWidget *widget)
QDockWidgetLayout *layout
= qobject_cast<QDockWidgetLayout*>(widget->layout());
- if(layout != 0 && layout->nativeWindowDeco())
+ if (layout && layout->nativeWindowDeco())
titleHeight = layout->titleHeight();
QRect result = widget->geometry();
@@ -1138,7 +1138,7 @@ bool QDockAreaLayoutInfo::insertGap(const QList<int> &path, QLayoutItem *dockWid
if (path.count() > 1) {
QDockAreaLayoutItem &item = item_list[index];
- if (item.subinfo == 0
+ if (item.subinfo == nullptr
#if QT_CONFIG(tabbar)
|| (item.subinfo->tabbed && !insert_tabbed)
#endif
@@ -1149,7 +1149,7 @@ bool QDockAreaLayoutInfo::insertGap(const QList<int> &path, QLayoutItem *dockWid
QDockAreaLayoutInfo *subinfo = item.subinfo;
QLayoutItem *widgetItem = item.widgetItem;
QPlaceHolderItem *placeHolderItem = item.placeHolderItem;
- QRect r = subinfo == 0 ? widgetItem ? dockedGeometry(widgetItem->widget()) : placeHolderItem->topLevelRect : subinfo->rect;
+ QRect r = subinfo == nullptr ? widgetItem ? dockedGeometry(widgetItem->widget()) : placeHolderItem->topLevelRect : subinfo->rect;
Qt::Orientation opposite = o == Qt::Horizontal ? Qt::Vertical : Qt::Horizontal;
#if !QT_CONFIG(tabbar)
@@ -1160,11 +1160,11 @@ bool QDockAreaLayoutInfo::insertGap(const QList<int> &path, QLayoutItem *dockWid
//item become a new top-level
item.subinfo = new_info;
- item.widgetItem = 0;
- item.placeHolderItem = 0;
+ item.widgetItem = nullptr;
+ item.placeHolderItem = nullptr;
QDockAreaLayoutItem new_item
- = widgetItem == 0
+ = widgetItem == nullptr
? QDockAreaLayoutItem(subinfo)
: widgetItem ? QDockAreaLayoutItem(widgetItem) : QDockAreaLayoutItem(placeHolderItem);
new_item.size = pick(opposite, r.size());
@@ -1265,16 +1265,16 @@ QDockAreaLayoutInfo *QDockAreaLayoutInfo::info(QWidget *widget)
return this;
#endif
- if (item.widgetItem != 0 && item.widgetItem->widget() == widget)
+ if (item.widgetItem != nullptr && item.widgetItem->widget() == widget)
return this;
- if (item.subinfo != 0) {
+ if (item.subinfo != nullptr) {
if (QDockAreaLayoutInfo *result = item.subinfo->info(widget))
return result;
}
}
- return 0;
+ return nullptr;
}
QDockAreaLayoutInfo *QDockAreaLayoutInfo::info(const QList<int> &path)
@@ -1284,7 +1284,7 @@ QDockAreaLayoutInfo *QDockAreaLayoutInfo::info(const QList<int> &path)
index = -index - 1;
if (index >= item_list.count())
return this;
- if (path.count() == 1 || item_list[index].subinfo == 0)
+ if (path.count() == 1 || item_list[index].subinfo == nullptr)
return this;
return item_list[index].subinfo->info(path.mid(1));
}
@@ -1341,7 +1341,7 @@ QRect QDockAreaLayoutInfo::itemRect(const QList<int> &path) const
const int index = path.first();
if (path.count() > 1) {
const QDockAreaLayoutItem &item = item_list.at(index);
- Q_ASSERT(item.subinfo != 0);
+ Q_ASSERT(item.subinfo != nullptr);
return item.subinfo->itemRect(path.mid(1));
}
@@ -1374,7 +1374,7 @@ QRect QDockAreaLayoutInfo::separatorRect(const QList<int> &path) const
const int index = path.first();
if (path.count() > 1) {
const QDockAreaLayoutItem &item = item_list.at(index);
- Q_ASSERT(item.subinfo != 0);
+ Q_ASSERT(item.subinfo != nullptr);
return item.subinfo->separatorRect(path.mid(1));
}
return separatorRect(index);
@@ -1395,7 +1395,7 @@ QList<int> QDockAreaLayoutInfo::findSeparator(const QPoint &_pos) const
continue;
if (item.pos + item.size > pos) {
- if (item.subinfo != 0) {
+ if (item.subinfo != nullptr) {
QList<int> result = item.subinfo->findSeparator(_pos);
if (!result.isEmpty()) {
result.prepend(i);
@@ -1428,7 +1428,7 @@ QList<int> QDockAreaLayoutInfo::indexOfPlaceHolder(const QString &objectName) co
for (int i = 0; i < item_list.size(); ++i) {
const QDockAreaLayoutItem &item = item_list.at(i);
- if (item.subinfo != 0) {
+ if (item.subinfo != nullptr) {
QList<int> result = item.subinfo->indexOfPlaceHolder(objectName);
if (!result.isEmpty()) {
result.prepend(i);
@@ -1437,7 +1437,7 @@ QList<int> QDockAreaLayoutInfo::indexOfPlaceHolder(const QString &objectName) co
continue;
}
- if (item.placeHolderItem != 0 && item.placeHolderItem->objectName == objectName) {
+ if (item.placeHolderItem != nullptr && item.placeHolderItem->objectName == objectName) {
QList<int> result;
result << i;
return result;
@@ -1452,10 +1452,10 @@ QList<int> QDockAreaLayoutInfo::indexOf(QWidget *widget) const
for (int i = 0; i < item_list.size(); ++i) {
const QDockAreaLayoutItem &item = item_list.at(i);
- if (item.placeHolderItem != 0)
+ if (item.placeHolderItem != nullptr)
continue;
- if (item.subinfo != 0) {
+ if (item.subinfo != nullptr) {
QList<int> result = item.subinfo->indexOf(widget);
if (!result.isEmpty()) {
result.prepend(i);
@@ -1477,7 +1477,7 @@ QList<int> QDockAreaLayoutInfo::indexOf(QWidget *widget) const
QMainWindowLayout *QDockAreaLayoutInfo::mainWindowLayout() const
{
QMainWindowLayout *result = qt_mainwindow_layout(mainWindow);
- Q_ASSERT(result != 0);
+ Q_ASSERT(result != nullptr);
return result;
}
@@ -1536,7 +1536,7 @@ QDockWidget *QDockAreaLayoutInfo::apply(bool animate)
if (item.flags & QDockAreaLayoutItem::GapItem)
continue;
- if (item.subinfo != 0) {
+ if (item.subinfo != nullptr) {
item.subinfo->apply(animate);
continue;
}
@@ -1681,7 +1681,7 @@ void QDockAreaLayoutInfo::tab(int index, QLayoutItem *dockWidgetItem)
= new QDockAreaLayoutInfo(sep, dockPos, o, tabBarShape, mainWindow);
item_list[index].subinfo = new_info;
new_info->item_list.append(QDockAreaLayoutItem(item_list.at(index).widgetItem));
- item_list[index].widgetItem = 0;
+ item_list[index].widgetItem = nullptr;
new_info->item_list.append(QDockAreaLayoutItem(dockWidgetItem));
new_info->tabbed = true;
new_info->updateTabBar();
@@ -1703,7 +1703,7 @@ void QDockAreaLayoutInfo::split(int index, Qt::Orientation orientation,
= new QDockAreaLayoutInfo(sep, dockPos, orientation, tabBarShape, mainWindow);
item_list[index].subinfo = new_info;
new_info->item_list.append(QDockAreaLayoutItem(item_list.at(index).widgetItem));
- item_list[index].widgetItem = 0;
+ item_list[index].widgetItem = nullptr;
new_info->item_list.append(QDockAreaLayoutItem(dockWidgetItem));
}
}
@@ -1714,7 +1714,7 @@ QDockAreaLayoutItem &QDockAreaLayoutInfo::item(const QList<int> &path)
const int index = path.first();
if (path.count() > 1) {
const QDockAreaLayoutItem &item = item_list[index];
- Q_ASSERT(item.subinfo != 0);
+ Q_ASSERT(item.subinfo != nullptr);
return item.subinfo->item(path.mid(1));
}
return item_list[index];
@@ -1724,7 +1724,7 @@ QLayoutItem *QDockAreaLayoutInfo::itemAt(int *x, int index) const
{
for (int i = 0; i < item_list.count(); ++i) {
const QDockAreaLayoutItem &item = item_list.at(i);
- if (item.placeHolderItem != 0)
+ if (item.placeHolderItem != nullptr)
continue;
if (item.subinfo) {
if (QLayoutItem *ret = item.subinfo->itemAt(x, index))
@@ -1734,14 +1734,14 @@ QLayoutItem *QDockAreaLayoutInfo::itemAt(int *x, int index) const
return item.widgetItem;
}
}
- return 0;
+ return nullptr;
}
QLayoutItem *QDockAreaLayoutInfo::takeAt(int *x, int index)
{
for (int i = 0; i < item_list.count(); ++i) {
QDockAreaLayoutItem &item = item_list[i];
- if (item.placeHolderItem != 0)
+ if (item.placeHolderItem != nullptr)
continue;
else if (item.subinfo) {
if (QLayoutItem *ret = item.subinfo->takeAt(x, index)) {
@@ -1752,14 +1752,14 @@ QLayoutItem *QDockAreaLayoutInfo::takeAt(int *x, int index)
if ((*x)++ == index) {
item.placeHolderItem = new QPlaceHolderItem(item.widgetItem->widget());
QLayoutItem *ret = item.widgetItem;
- item.widgetItem = 0;
+ item.widgetItem = nullptr;
if (item.size != -1)
item.flags |= QDockAreaLayoutItem::KeepSize;
return ret;
}
}
}
- return 0;
+ return nullptr;
}
void QDockAreaLayoutInfo::deleteAllLayoutItems()
@@ -1770,7 +1770,7 @@ void QDockAreaLayoutInfo::deleteAllLayoutItems()
item.subinfo->deleteAllLayoutItems();
} else {
delete item.widgetItem;
- item.widgetItem = 0;
+ item.widgetItem = nullptr;
}
}
}
@@ -1801,7 +1801,7 @@ void QDockAreaLayoutInfo::saveState(QDataStream &stream) const
for (int i = 0; i < item_list.count(); ++i) {
const QDockAreaLayoutItem &item = item_list.at(i);
- if (item.widgetItem != 0) {
+ if (item.widgetItem != nullptr) {
stream << (uchar) WidgetMarker;
QWidget *w = item.widgetItem->widget();
QString name = w->objectName();
@@ -1825,7 +1825,7 @@ void QDockAreaLayoutInfo::saveState(QDataStream &stream) const
stream << item.pos << item.size << pick(o, item.minimumSize())
<< pick(o, item.maximumSize());
}
- } else if (item.placeHolderItem != 0) {
+ } else if (item.placeHolderItem != nullptr) {
stream << (uchar) WidgetMarker;
stream << item.placeHolderItem->objectName;
uchar flags = 0;
@@ -1840,7 +1840,7 @@ void QDockAreaLayoutInfo::saveState(QDataStream &stream) const
} else {
stream << item.pos << item.size << (int)0 << (int)0;
}
- } else if (item.subinfo != 0) {
+ } else if (item.subinfo != nullptr) {
stream << (uchar) SequenceMarker << item.pos << item.size << pick(o, item.minimumSize()) << pick(o, item.maximumSize());
item.subinfo->saveState(stream);
}
@@ -1894,7 +1894,7 @@ bool QDockAreaLayoutInfo::restoreState(QDataStream &stream, QList<QDockWidget*>
continue;
}
- QDockWidget *widget = 0;
+ QDockWidget *widget = nullptr;
for (int j = 0; j < widgets.count(); ++j) {
if (widgets.at(j)->objectName() == name) {
widget = widgets.takeAt(j);
@@ -1902,7 +1902,7 @@ bool QDockAreaLayoutInfo::restoreState(QDataStream &stream, QList<QDockWidget*>
}
}
- if (widget == 0) {
+ if (widget == nullptr) {
QPlaceHolderItem *placeHolder = new QPlaceHolderItem;
QDockAreaLayoutItem item(placeHolder);
@@ -2081,7 +2081,7 @@ bool QDockAreaLayoutInfo::updateTabBar() const
QDockAreaLayoutInfo *that = const_cast<QDockAreaLayoutInfo*>(this);
- if (that->tabBar == 0) {
+ if (that->tabBar == nullptr) {
that->tabBar = mainWindowLayout()->getTabBar();
that->tabBar->setShape(static_cast<QTabBar::Shape>(tabBarShape));
that->tabBar->setDrawBase(true);
@@ -2101,7 +2101,7 @@ bool QDockAreaLayoutInfo::updateTabBar() const
gap = true;
continue;
}
- if (item.widgetItem == 0)
+ if (item.widgetItem == nullptr)
continue;
QDockWidget *dw = qobject_cast<QDockWidget*>(item.widgetItem->widget());
@@ -2155,12 +2155,12 @@ void QDockAreaLayoutInfo::setTabBarShape(int shape)
if (shape == tabBarShape)
return;
tabBarShape = shape;
- if (tabBar != 0)
+ if (tabBar != nullptr)
tabBar->setShape(static_cast<QTabBar::Shape>(shape));
for (int i = 0; i < item_list.count(); ++i) {
QDockAreaLayoutItem &item = item_list[i];
- if (item.subinfo != 0)
+ if (item.subinfo != nullptr)
item.subinfo->setTabBarShape(shape);
}
}
@@ -2192,7 +2192,7 @@ QSet<QTabBar*> QDockAreaLayoutInfo::usedTabBars() const
for (int i = 0; i < item_list.count(); ++i) {
const QDockAreaLayoutItem &item = item_list.at(i);
- if (item.subinfo != 0)
+ if (item.subinfo != nullptr)
result += item.subinfo->usedTabBars();
}
@@ -2212,7 +2212,7 @@ QSet<QWidget*> QDockAreaLayoutInfo::usedSeparatorWidgets() const
for (int i = 0; i < item_list.count(); ++i) {
const QDockAreaLayoutItem &item = item_list.at(i);
- if (item.subinfo != 0)
+ if (item.subinfo != nullptr)
result += item.subinfo->usedSeparatorWidgets();
}
@@ -2277,7 +2277,7 @@ void QDockAreaLayoutInfo::moveTab(int from, int to)
QDockAreaLayout::QDockAreaLayout(QMainWindow *win) : fallbackToSizeHints(true)
{
mainWindow = win;
- sep = win->style()->pixelMetric(QStyle::PM_DockWidgetSeparatorExtent, 0, win);
+ sep = win->style()->pixelMetric(QStyle::PM_DockWidgetSeparatorExtent, nullptr, win);
#if QT_CONFIG(tabbar)
const int tabShape = QTabBar::RoundedSouth;
#else
@@ -2291,7 +2291,7 @@ QDockAreaLayout::QDockAreaLayout(QMainWindow *win) : fallbackToSizeHints(true)
= QDockAreaLayoutInfo(&sep, QInternal::TopDock, Qt::Horizontal, tabShape, win);
docks[QInternal::BottomDock]
= QDockAreaLayoutInfo(&sep, QInternal::BottomDock, Qt::Horizontal, tabShape, win);
- centralWidgetItem = 0;
+ centralWidgetItem = nullptr;
corners[Qt::TopLeftCorner] = Qt::TopDockWidgetArea;
@@ -2491,7 +2491,7 @@ QDockAreaLayoutInfo *QDockAreaLayout::info(QWidget *widget)
return result;
}
- return 0;
+ return nullptr;
}
QDockAreaLayoutInfo *QDockAreaLayout::info(const QList<int> &path)
@@ -2623,7 +2623,7 @@ void QDockAreaLayout::getGrid(QVector<QLayoutStruct> *_ver_struct_list,
QSize center_hint(0, 0);
QSize center_min(0, 0);
QSize center_max(0, 0);
- const bool have_central = centralWidgetItem != 0 && !centralWidgetItem->isEmpty();
+ const bool have_central = centralWidgetItem != nullptr && !centralWidgetItem->isEmpty();
if (have_central) {
center_hint = centralWidgetRect.size();
if (!center_hint.isValid())
@@ -2670,7 +2670,7 @@ void QDockAreaLayout::getGrid(QVector<QLayoutStruct> *_ver_struct_list,
QSize bottom_max = docks[QInternal::BottomDock].maximumSize();
bottom_hint = bottom_hint.boundedTo(bottom_max).expandedTo(bottom_min);
- if (_ver_struct_list != 0) {
+ if (_ver_struct_list != nullptr) {
QVector<QLayoutStruct> &ver_struct_list = *_ver_struct_list;
ver_struct_list.resize(3);
@@ -2732,7 +2732,7 @@ void QDockAreaLayout::getGrid(QVector<QLayoutStruct> *_ver_struct_list,
ver_struct_list[1].maximumSize = QWIDGETSIZE_MAX;
}
- if (_hor_struct_list != 0) {
+ if (_hor_struct_list != nullptr) {
QVector<QLayoutStruct> &hor_struct_list = *_hor_struct_list;
hor_struct_list.resize(3);
@@ -2803,7 +2803,7 @@ void QDockAreaLayout::setGrid(QVector<QLayoutStruct> *ver_struct_list,
if (!docks[QInternal::TopDock].isEmpty()) {
QRect r = docks[QInternal::TopDock].rect;
- if (hor_struct_list != 0) {
+ if (hor_struct_list != nullptr) {
r.setLeft(corners[Qt::TopLeftCorner] == Qt::TopDockWidgetArea
|| docks[QInternal::LeftDock].isEmpty()
? rect.left() : hor_struct_list->at(1).pos);
@@ -2811,7 +2811,7 @@ void QDockAreaLayout::setGrid(QVector<QLayoutStruct> *ver_struct_list,
|| docks[QInternal::RightDock].isEmpty()
? rect.right() : hor_struct_list->at(2).pos - sep - 1);
}
- if (ver_struct_list != 0) {
+ if (ver_struct_list != nullptr) {
r.setTop(rect.top());
r.setBottom(ver_struct_list->at(1).pos - sep - 1);
}
@@ -2823,7 +2823,7 @@ void QDockAreaLayout::setGrid(QVector<QLayoutStruct> *ver_struct_list,
if (!docks[QInternal::BottomDock].isEmpty()) {
QRect r = docks[QInternal::BottomDock].rect;
- if (hor_struct_list != 0) {
+ if (hor_struct_list != nullptr) {
r.setLeft(corners[Qt::BottomLeftCorner] == Qt::BottomDockWidgetArea
|| docks[QInternal::LeftDock].isEmpty()
? rect.left() : hor_struct_list->at(1).pos);
@@ -2831,7 +2831,7 @@ void QDockAreaLayout::setGrid(QVector<QLayoutStruct> *ver_struct_list,
|| docks[QInternal::RightDock].isEmpty()
? rect.right() : hor_struct_list->at(2).pos - sep - 1);
}
- if (ver_struct_list != 0) {
+ if (ver_struct_list != nullptr) {
r.setTop(ver_struct_list->at(2).pos);
r.setBottom(rect.bottom());
}
@@ -2843,11 +2843,11 @@ void QDockAreaLayout::setGrid(QVector<QLayoutStruct> *ver_struct_list,
if (!docks[QInternal::LeftDock].isEmpty()) {
QRect r = docks[QInternal::LeftDock].rect;
- if (hor_struct_list != 0) {
+ if (hor_struct_list != nullptr) {
r.setLeft(rect.left());
r.setRight(hor_struct_list->at(1).pos - sep - 1);
}
- if (ver_struct_list != 0) {
+ if (ver_struct_list != nullptr) {
r.setTop(corners[Qt::TopLeftCorner] == Qt::LeftDockWidgetArea
|| docks[QInternal::TopDock].isEmpty()
? rect.top() : ver_struct_list->at(1).pos);
@@ -2863,11 +2863,11 @@ void QDockAreaLayout::setGrid(QVector<QLayoutStruct> *ver_struct_list,
if (!docks[QInternal::RightDock].isEmpty()) {
QRect r = docks[QInternal::RightDock].rect;
- if (hor_struct_list != 0) {
+ if (hor_struct_list != nullptr) {
r.setLeft(hor_struct_list->at(2).pos);
r.setRight(rect.right());
}
- if (ver_struct_list != 0) {
+ if (ver_struct_list != nullptr) {
r.setTop(corners[Qt::TopRightCorner] == Qt::RightDockWidgetArea
|| docks[QInternal::TopDock].isEmpty()
? rect.top() : ver_struct_list->at(1).pos);
@@ -2881,11 +2881,11 @@ void QDockAreaLayout::setGrid(QVector<QLayoutStruct> *ver_struct_list,
// center ---------------------------------------------------
- if (hor_struct_list != 0) {
+ if (hor_struct_list != nullptr) {
centralWidgetRect.setLeft(hor_struct_list->at(1).pos);
centralWidgetRect.setWidth(hor_struct_list->at(1).size);
}
- if (ver_struct_list != 0) {
+ if (ver_struct_list != nullptr) {
centralWidgetRect.setTop(ver_struct_list->at(1).pos);
centralWidgetRect.setHeight(ver_struct_list->at(1).size);
}
@@ -2919,7 +2919,7 @@ QSize QDockAreaLayout::sizeHint() const
int top_sep = 0;
int bottom_sep = 0;
- if (centralWidgetItem != 0) {
+ if (centralWidgetItem != nullptr) {
left_sep = docks[QInternal::LeftDock].isEmpty() ? 0 : sep;
right_sep = docks[QInternal::RightDock].isEmpty() ? 0 : sep;
top_sep = docks[QInternal::TopDock].isEmpty() ? 0 : sep;
@@ -2930,7 +2930,7 @@ QSize QDockAreaLayout::sizeHint() const
QSize right = docks[QInternal::RightDock].sizeHint() + QSize(right_sep, 0);
QSize top = docks[QInternal::TopDock].sizeHint() + QSize(0, top_sep);
QSize bottom = docks[QInternal::BottomDock].sizeHint() + QSize(0, bottom_sep);
- QSize center = centralWidgetItem == 0 ? QSize(0, 0) : centralWidgetItem->sizeHint();
+ QSize center = centralWidgetItem == nullptr ? QSize(0, 0) : centralWidgetItem->sizeHint();
int row1 = top.width();
int row2 = left.width() + center.width() + right.width();
@@ -2969,7 +2969,7 @@ QSize QDockAreaLayout::minimumSize() const
int top_sep = 0;
int bottom_sep = 0;
- if (centralWidgetItem != 0) {
+ if (centralWidgetItem != nullptr) {
left_sep = docks[QInternal::LeftDock].isEmpty() ? 0 : sep;
right_sep = docks[QInternal::RightDock].isEmpty() ? 0 : sep;
top_sep = docks[QInternal::TopDock].isEmpty() ? 0 : sep;
@@ -2980,7 +2980,7 @@ QSize QDockAreaLayout::minimumSize() const
QSize right = docks[QInternal::RightDock].minimumSize() + QSize(right_sep, 0);
QSize top = docks[QInternal::TopDock].minimumSize() + QSize(0, top_sep);
QSize bottom = docks[QInternal::BottomDock].minimumSize() + QSize(0, bottom_sep);
- QSize center = centralWidgetItem == 0 ? QSize(0, 0) : centralWidgetItem->minimumSize();
+ QSize center = centralWidgetItem == nullptr ? QSize(0, 0) : centralWidgetItem->minimumSize();
int row1 = top.width();
int row2 = left.width() + center.width() + right.width();
@@ -3040,7 +3040,7 @@ QRect QDockAreaLayout::constrainedRect(QRect rect, QWidget* widget)
bool QDockAreaLayout::restoreDockWidget(QDockWidget *dockWidget)
{
- QDockAreaLayoutItem *item = 0;
+ QDockAreaLayoutItem *item = nullptr;
const auto groups =
mainWindow->findChildren<QDockWidgetGroupWindow *>(QString(), Qt::FindDirectChildrenOnly);
for (QDockWidgetGroupWindow *dwgw : groups) {
@@ -3059,7 +3059,7 @@ bool QDockAreaLayout::restoreDockWidget(QDockWidget *dockWidget)
}
QPlaceHolderItem *placeHolder = item->placeHolderItem;
- Q_ASSERT(placeHolder != 0);
+ Q_ASSERT(placeHolder != nullptr);
item->widgetItem = new QDockWidgetItem(dockWidget);
@@ -3069,7 +3069,7 @@ bool QDockAreaLayout::restoreDockWidget(QDockWidget *dockWidget)
}
dockWidget->setVisible(!placeHolder->hidden);
- item->placeHolderItem = 0;
+ item->placeHolderItem = nullptr;
delete placeHolder;
return true;
@@ -3116,7 +3116,7 @@ void QDockAreaLayout::tabifyDockWidget(QDockWidget *first, QDockWidget *second)
return;
QDockAreaLayoutInfo *info = this->info(path);
- Q_ASSERT(info != 0);
+ Q_ASSERT(info != nullptr);
info->tab(path.last(), new QDockWidgetItem(second));
removePlaceHolder(second->objectName());
@@ -3181,7 +3181,7 @@ void QDockAreaLayout::splitDockWidget(QDockWidget *after,
return;
QDockAreaLayoutInfo *info = this->info(path);
- Q_ASSERT(info != 0);
+ Q_ASSERT(info != nullptr);
info->split(path.last(), orientation, new QDockWidgetItem(dockWidget));
removePlaceHolder(dockWidget->objectName());
@@ -3193,7 +3193,7 @@ void QDockAreaLayout::apply(bool animate)
for (int i = 0; i < QInternal::DockCount; ++i)
docks[i].apply(animate);
- if (centralWidgetItem != 0 && !centralWidgetItem->isEmpty()) {
+ if (centralWidgetItem != nullptr && !centralWidgetItem->isEmpty()) {
widgetAnimator.animate(centralWidgetItem->widget(), centralWidgetRect,
animate);
}
@@ -3255,9 +3255,9 @@ int QDockAreaLayout::separatorMove(const QList<int> &separator, const QPoint &or
QVector<QLayoutStruct> list;
if (index == QInternal::LeftDock || index == QInternal::RightDock)
- getGrid(0, &list);
+ getGrid(nullptr, &list);
else
- getGrid(&list, 0);
+ getGrid(&list, nullptr);
int sep_index = index == QInternal::LeftDock || index == QInternal::TopDock
? 0 : 1;
@@ -3271,9 +3271,9 @@ int QDockAreaLayout::separatorMove(const QList<int> &separator, const QPoint &or
fallbackToSizeHints = false;
if (index == QInternal::LeftDock || index == QInternal::RightDock)
- setGrid(0, &list);
+ setGrid(nullptr, &list);
else
- setGrid(&list, 0);
+ setGrid(&list, nullptr);
apply(false);
@@ -3330,7 +3330,7 @@ void QDockAreaLayout::updateSeparatorWidgets() const
QLayoutItem *QDockAreaLayout::itemAt(int *x, int index) const
{
- Q_ASSERT(x != 0);
+ Q_ASSERT(x != nullptr);
for (int i = 0; i < QInternal::DockCount; ++i) {
const QDockAreaLayoutInfo &dock = docks[i];
@@ -3341,12 +3341,12 @@ QLayoutItem *QDockAreaLayout::itemAt(int *x, int index) const
if (centralWidgetItem && (*x)++ == index)
return centralWidgetItem;
- return 0;
+ return nullptr;
}
QLayoutItem *QDockAreaLayout::takeAt(int *x, int index)
{
- Q_ASSERT(x != 0);
+ Q_ASSERT(x != nullptr);
for (int i = 0; i < QInternal::DockCount; ++i) {
QDockAreaLayoutInfo &dock = docks[i];
@@ -3356,11 +3356,11 @@ QLayoutItem *QDockAreaLayout::takeAt(int *x, int index)
if (centralWidgetItem && (*x)++ == index) {
QLayoutItem *ret = centralWidgetItem;
- centralWidgetItem = 0;
+ centralWidgetItem = nullptr;
return ret;
}
- return 0;
+ return nullptr;
}
void QDockAreaLayout::deleteAllLayoutItems()
@@ -3399,7 +3399,7 @@ QSet<QWidget*> QDockAreaLayout::usedSeparatorWidgets() const
QRect QDockAreaLayout::gapRect(const QList<int> &path) const
{
const QDockAreaLayoutInfo *info = this->info(path);
- if (info == 0)
+ if (info == nullptr)
return QRect();
int index = path.last();
if (index < 0 || index >= info->item_list.count())
@@ -3419,7 +3419,7 @@ void QDockAreaLayout::keepSize(QDockWidget *w)
void QDockAreaLayout::styleChangedEvent()
{
- sep = mainWindow->style()->pixelMetric(QStyle::PM_DockWidgetSeparatorExtent, 0, mainWindow);
+ sep = mainWindow->style()->pixelMetric(QStyle::PM_DockWidgetSeparatorExtent, nullptr, mainWindow);
if (isValid())
fitLayout();
}
diff --git a/src/widgets/widgets/qdockwidget.cpp b/src/widgets/widgets/qdockwidget.cpp
index 05ec3aface..299e5da8d3 100644
--- a/src/widgets/widgets/qdockwidget.cpp
+++ b/src/widgets/widgets/qdockwidget.cpp
@@ -197,7 +197,7 @@ QSize QDockWidgetTitleButton::sizeHint() const
{
ensurePolished();
- int size = 2*style()->pixelMetric(QStyle::PM_DockWidgetTitleBarButtonMargin, 0, this);
+ int size = 2*style()->pixelMetric(QStyle::PM_DockWidgetTitleBarButtonMargin, nullptr, this);
if (!icon().isNull()) {
const QSize sz = icon().actualSize(dockButtonIconSize());
size += qMax(sz.width(), sz.height());
@@ -226,7 +226,7 @@ void QDockWidgetTitleButton::paintEvent(QPaintEvent *)
opt.init(this);
opt.state |= QStyle::State_AutoRaise;
- if (style()->styleHint(QStyle::SH_DockWidget_ButtonsHaveFrame, 0, this))
+ if (style()->styleHint(QStyle::SH_DockWidget_ButtonsHaveFrame, nullptr, this))
{
if (isEnabled() && underMouse() && !isChecked() && !isDown())
opt.state |= QStyle::State_Raised;
@@ -238,8 +238,8 @@ void QDockWidgetTitleButton::paintEvent(QPaintEvent *)
}
opt.icon = icon();
- opt.subControls = 0;
- opt.activeSubControls = 0;
+ opt.subControls = { };
+ opt.activeSubControls = { };
opt.features = QStyleOptionToolButton::None;
opt.arrowType = Qt::NoArrow;
opt.iconSize = dockButtonIconSize();
@@ -311,12 +311,12 @@ QLayoutItem *QDockWidgetLayout::itemAt(int index) const
int cnt = 0;
for (int i = 0; i < item_list.count(); ++i) {
QLayoutItem *item = item_list.at(i);
- if (item == 0)
+ if (item == nullptr)
continue;
if (index == cnt++)
return item;
}
- return 0;
+ return nullptr;
}
QLayoutItem *QDockWidgetLayout::takeAt(int index)
@@ -324,7 +324,7 @@ QLayoutItem *QDockWidgetLayout::takeAt(int index)
int j = 0;
for (int i = 0; i < item_list.count(); ++i) {
QLayoutItem *item = item_list.at(i);
- if (item == 0)
+ if (item == nullptr)
continue;
if (index == j) {
item_list[i] = 0;
@@ -333,7 +333,7 @@ QLayoutItem *QDockWidgetLayout::takeAt(int index)
}
++j;
}
- return 0;
+ return nullptr;
}
int QDockWidgetLayout::count() const
@@ -362,7 +362,7 @@ QSize QDockWidgetLayout::sizeFromContent(const QSize &content, bool floating) co
const bool nativeDeco = nativeWindowDeco(floating);
int fw = floating && !nativeDeco
- ? w->style()->pixelMetric(QStyle::PM_DockWidgetFrameWidth, 0, w)
+ ? w->style()->pixelMetric(QStyle::PM_DockWidgetFrameWidth, nullptr, w)
: 0;
const int th = titleHeight();
@@ -394,7 +394,7 @@ QSize QDockWidgetLayout::sizeFromContent(const QSize &content, bool floating) co
uint explicitMin = 0;
uint explicitMax = 0;
- if (w->d_func()->extra != 0) {
+ if (w->d_func()->extra != nullptr) {
explicitMin = w->d_func()->extra->explicitMinSize;
explicitMax = w->d_func()->extra->explicitMaxSize;
}
@@ -448,7 +448,7 @@ QSize QDockWidgetLayout::minimumSize() const
QWidget *QDockWidgetLayout::widgetForRole(Role r) const
{
QLayoutItem *item = item_list.at(r);
- return item == 0 ? 0 : item->widget();
+ return item == nullptr ? nullptr : item->widget();
}
QLayoutItem *QDockWidgetLayout::itemForRole(Role r) const
@@ -459,12 +459,12 @@ QLayoutItem *QDockWidgetLayout::itemForRole(Role r) const
void QDockWidgetLayout::setWidgetForRole(Role r, QWidget *w)
{
QWidget *old = widgetForRole(r);
- if (old != 0) {
+ if (old != nullptr) {
old->hide();
removeWidget(old);
}
- if (w != 0) {
+ if (w != nullptr) {
addChildWidget(w);
item_list[r] = new QWidgetItemV2(w);
w->show();
@@ -505,8 +505,8 @@ int QDockWidgetLayout::minimumTitleWidth() const
int titleHeight = this->titleHeight();
- int mw = q->style()->pixelMetric(QStyle::PM_DockWidgetTitleMargin, 0, q);
- int fw = q->style()->pixelMetric(QStyle::PM_DockWidgetFrameWidth, 0, q);
+ int mw = q->style()->pixelMetric(QStyle::PM_DockWidgetTitleMargin, nullptr, q);
+ int fw = q->style()->pixelMetric(QStyle::PM_DockWidgetFrameWidth, nullptr, q);
return pick(verticalTitleBar, closeSize)
+ pick(verticalTitleBar, floatSize)
@@ -531,7 +531,7 @@ int QDockWidgetLayout::titleHeight() const
perp(verticalTitleBar, floatSize));
QFontMetrics titleFontMetrics = q->fontMetrics();
- int mw = q->style()->pixelMetric(QStyle::PM_DockWidgetTitleMargin, 0, q);
+ int mw = q->style()->pixelMetric(QStyle::PM_DockWidgetTitleMargin, nullptr, q);
return qMax(buttonHeight + 2, titleFontMetrics.height() + 2*mw);
}
@@ -543,7 +543,7 @@ void QDockWidgetLayout::setGeometry(const QRect &geometry)
bool nativeDeco = nativeWindowDeco();
int fw = q->isFloating() && !nativeDeco
- ? q->style()->pixelMetric(QStyle::PM_DockWidgetFrameWidth, 0, q)
+ ? q->style()->pixelMetric(QStyle::PM_DockWidgetFrameWidth, nullptr, q)
: 0;
if (nativeDeco) {
@@ -730,7 +730,7 @@ void QDockWidgetPrivate::updateButtons()
QStyleOptionDockWidget opt;
q->initStyleOption(&opt);
- bool customTitleBar = dwLayout->widgetForRole(QDockWidgetLayout::TitleBar) != 0;
+ bool customTitleBar = dwLayout->widgetForRole(QDockWidgetLayout::TitleBar) != nullptr;
bool nativeDeco = dwLayout->nativeWindowDeco();
bool hideButtons = nativeDeco || customTitleBar;
@@ -777,18 +777,18 @@ void QDockWidgetPrivate::initDrag(const QPoint &pos, bool nca)
{
Q_Q(QDockWidget);
- if (state != 0)
+ if (state != nullptr)
return;
QMainWindowLayout *layout = qt_mainwindow_layout_from_dock(q);
- Q_ASSERT(layout != 0);
- if (layout->pluggingWidget != 0) // the main window is animating a docking operation
+ Q_ASSERT(layout != nullptr);
+ if (layout->pluggingWidget != nullptr) // the main window is animating a docking operation
return;
state = new QDockWidgetPrivate::DragState;
state->pressPos = pos;
state->dragging = false;
- state->widgetItem = 0;
+ state->widgetItem = nullptr;
state->ownWidgetItem = false;
state->nca = nca;
state->ctrlDrag = false;
@@ -804,14 +804,14 @@ void QDockWidgetPrivate::startDrag(bool group)
{
Q_Q(QDockWidget);
- if (state == 0 || state->dragging)
+ if (state == nullptr || state->dragging)
return;
QMainWindowLayout *layout = qt_mainwindow_layout_from_dock(q);
- Q_ASSERT(layout != 0);
+ Q_ASSERT(layout != nullptr);
state->widgetItem = layout->unplug(q, group);
- if (state->widgetItem == 0) {
+ if (state->widgetItem == nullptr) {
/* I have a QMainWindow parent, but I was never inserted with
QMainWindow::addDockWidget, so the QMainWindowLayout has no
widget item for me. :( I have to create it myself, and then
@@ -838,7 +838,7 @@ void QDockWidgetPrivate::startDrag(bool group)
void QDockWidgetPrivate::endDrag(bool abort)
{
Q_Q(QDockWidget);
- Q_ASSERT(state != 0);
+ Q_ASSERT(state != nullptr);
q->releaseMouse();
@@ -881,7 +881,7 @@ void QDockWidgetPrivate::endDrag(bool abort)
}
}
delete state;
- state = 0;
+ state = nullptr;
}
void QDockWidgetPrivate::setResizerActive(bool active)
@@ -900,7 +900,7 @@ bool QDockWidgetPrivate::isAnimating() const
Q_Q(const QDockWidget);
QMainWindowLayout *mainWinLayout = qt_mainwindow_layout_from_dock(q);
- if (mainWinLayout == 0)
+ if (mainWinLayout == nullptr)
return false;
return (const void*)mainWinLayout->pluggingWidget == (const void*)q;
@@ -925,7 +925,7 @@ bool QDockWidgetPrivate::mousePressEvent(QMouseEvent *event)
// is not (but allow moving if the window is floating)
(!hasFeature(this, QDockWidget::DockWidgetMovable) && !q->isFloating()) ||
(qobject_cast<QMainWindow*>(parent) == 0 && !floatingTab) ||
- isAnimating() || state != 0) {
+ isAnimating() || state != nullptr) {
return false;
}
@@ -972,7 +972,7 @@ bool QDockWidgetPrivate::mouseMoveEvent(QMouseEvent *event)
QMainWindowLayout *mwlayout = qt_mainwindow_layout_from_dock(q);
if (!dwlayout->nativeWindowDeco()) {
if (!state->dragging
- && mwlayout->pluggingWidget == 0
+ && mwlayout->pluggingWidget == nullptr
&& (event->pos() - state->pressPos).manhattanLength()
> QApplication::startDragDistance()) {
startDrag();
@@ -1019,7 +1019,7 @@ void QDockWidgetPrivate::nonClientAreaMouseEvent(QMouseEvent *event)
{
Q_Q(QDockWidget);
- int fw = q->style()->pixelMetric(QStyle::PM_DockWidgetFrameWidth, 0, q);
+ int fw = q->style()->pixelMetric(QStyle::PM_DockWidgetFrameWidth, nullptr, q);
QWidget *tl = q->topLevelWidget();
QRect geo = tl->geometry();
@@ -1035,21 +1035,21 @@ void QDockWidgetPrivate::nonClientAreaMouseEvent(QMouseEvent *event)
case QEvent::NonClientAreaMouseButtonPress:
if (!titleRect.contains(event->globalPos()))
break;
- if (state != 0)
+ if (state != nullptr)
break;
if (qobject_cast<QMainWindow*>(parent) == 0 && qobject_cast<QDockWidgetGroupWindow*>(parent) == 0)
break;
if (isAnimating())
break;
initDrag(event->pos(), true);
- if (state == 0)
+ if (state == nullptr)
break;
state->ctrlDrag = (event->modifiers() & Qt::ControlModifier) ||
(!hasFeature(this, QDockWidget::DockWidgetMovable) && q->isFloating());
startDrag();
break;
case QEvent::NonClientAreaMouseMove:
- if (state == 0 || !state->dragging)
+ if (state == nullptr || !state->dragging)
break;
#ifndef Q_OS_MAC
@@ -1085,7 +1085,7 @@ void QDockWidgetPrivate::moveEvent(QMoveEvent *event)
{
Q_Q(QDockWidget);
- if (state == 0 || !state->dragging || !state->nca)
+ if (state == nullptr || !state->dragging || !state->nca)
return;
if (!q->isWindow() && qobject_cast<QDockWidgetGroupWindow*>(parent) == 0)
@@ -1098,7 +1098,7 @@ void QDockWidgetPrivate::moveEvent(QMoveEvent *event)
return;
QMainWindowLayout *layout = qt_mainwindow_layout_from_dock(q);
- Q_ASSERT(layout != 0);
+ Q_ASSERT(layout != nullptr);
QPoint globalMousePos = event->pos() + state->pressPos;
layout->hover(state->widgetItem, globalMousePos);
@@ -1384,7 +1384,7 @@ void QDockWidget::setFloating(bool floating)
Q_D(QDockWidget);
// the initial click of a double-click may have started a drag...
- if (d->state != 0)
+ if (d->state != nullptr)
d->endDrag(true);
QRect r = d->undockedGeometry;
@@ -1479,7 +1479,7 @@ void QDockWidget::paintEvent(QPaintEvent *event)
QDockWidgetLayout *layout
= qobject_cast<QDockWidgetLayout*>(this->layout());
- bool customTitleBar = layout->widgetForRole(QDockWidgetLayout::TitleBar) != 0;
+ bool customTitleBar = layout->widgetForRole(QDockWidgetLayout::TitleBar) != nullptr;
bool nativeDeco = layout->nativeWindowDeco();
if (!nativeDeco && !customTitleBar) {
@@ -1516,7 +1516,7 @@ bool QDockWidget::event(QEvent *event)
switch (event->type()) {
#ifndef QT_NO_ACTION
case QEvent::Hide:
- if (layout != 0)
+ if (layout != nullptr)
layout->keepSize(this);
d->toggleViewAction->setChecked(false);
emit visibilityChanged(false);
@@ -1542,12 +1542,12 @@ bool QDockWidget::event(QEvent *event)
break;
case QEvent::ZOrderChange: {
bool onTop = false;
- if (win != 0) {
+ if (win != nullptr) {
const QObjectList &siblings = win->children();
onTop = siblings.count() > 0 && siblings.last() == (QObject*)this;
}
#if QT_CONFIG(tabbar)
- if (!isFloating() && layout != 0 && onTop)
+ if (!isFloating() && layout != nullptr && onTop)
layout->raise(this);
#endif
break;
@@ -1591,7 +1591,7 @@ bool QDockWidget::event(QEvent *event)
break;
case QEvent::Resize:
// if the mainwindow is plugging us, we don't want to update undocked geometry
- if (isFloating() && layout != 0 && layout->pluggingWidget != this)
+ if (isFloating() && layout != nullptr && layout->pluggingWidget != this)
d->undockedGeometry = geometry();
// Usually the window won't get resized while it's being moved, but it can happen,
@@ -1609,11 +1609,14 @@ bool QDockWidget::event(QEvent *event)
#ifndef QT_NO_ACTION
/*!
- Returns a checkable action that can be used to show or close this
- dock widget.
+ Returns a checkable action that can be added to menus and toolbars so that
+ the user can show or close this dock widget.
The action's text is set to the dock widget's window title.
+ \note The action can not be used to programmatically show or hide the dock
+ widget. Use the \l visible property for that.
+
\sa QAction::text, QWidget::windowTitle
*/
QAction * QDockWidget::toggleViewAction() const
diff --git a/src/widgets/widgets/qdockwidget_p.h b/src/widgets/widgets/qdockwidget_p.h
index bc6ac86c45..e663ec4c2d 100644
--- a/src/widgets/widgets/qdockwidget_p.h
+++ b/src/widgets/widgets/qdockwidget_p.h
@@ -201,7 +201,11 @@ inline QLayoutItem *QDockWidgetItem::dockWidgetChildItem() const
inline QDockWidgetLayout *QDockWidgetItem::dockWidgetLayout() const
{
+#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
QWidget *w = const_cast<QDockWidgetItem*>(this)->widget();
+#else
+ QWidget *w = widget();
+#endif
if (w != nullptr)
return qobject_cast<QDockWidgetLayout*>(w->layout());
return nullptr;
diff --git a/src/widgets/widgets/qeffects.cpp b/src/widgets/widgets/qeffects.cpp
index 7069ef0368..ee4095cb36 100644
--- a/src/widgets/widgets/qeffects.cpp
+++ b/src/widgets/widgets/qeffects.cpp
@@ -65,7 +65,7 @@ class QAlphaWidget: public QWidget, private QEffects
{
Q_OBJECT
public:
- QAlphaWidget(QWidget* w, Qt::WindowFlags f = 0);
+ QAlphaWidget(QWidget* w, Qt::WindowFlags f = { });
~QAlphaWidget();
void run(int time);
@@ -93,7 +93,7 @@ private:
QElapsedTimer checkTime;
};
-static QAlphaWidget* q_blend = 0;
+static QAlphaWidget* q_blend = nullptr;
/*
Constructs a QAlphaWidget.
@@ -285,7 +285,7 @@ void QAlphaWidget::render()
lower();
}
}
- q_blend = 0;
+ q_blend = nullptr;
deleteLater();
} else {
alphaBlend();
@@ -377,13 +377,13 @@ private:
QPixmap pm;
};
-static QRollEffect* q_roll = 0;
+static QRollEffect* q_roll = nullptr;
/*
Construct a QRollEffect widget.
*/
QRollEffect::QRollEffect(QWidget* w, Qt::WindowFlags f, DirFlags orient)
- : QWidget(0, f), orientation(orient)
+ : QWidget(nullptr, f), orientation(orient)
{
#ifndef Q_OS_WIN
setEnabled(false);
@@ -550,7 +550,7 @@ void QRollEffect::scroll()
lower();
}
}
- q_roll = 0;
+ q_roll = nullptr;
deleteLater();
}
}
@@ -563,7 +563,7 @@ void qScrollEffect(QWidget* w, QEffects::DirFlags orient, int time)
{
if (q_roll) {
q_roll->deleteLater();
- q_roll = 0;
+ q_roll = nullptr;
}
if (!w)
@@ -585,7 +585,7 @@ void qFadeEffect(QWidget* w, int time)
{
if (q_blend) {
q_blend->deleteLater();
- q_blend = 0;
+ q_blend = nullptr;
}
if (!w)
diff --git a/src/widgets/widgets/qfocusframe.cpp b/src/widgets/widgets/qfocusframe.cpp
index 0992becdf0..4d64c24db3 100644
--- a/src/widgets/widgets/qfocusframe.cpp
+++ b/src/widgets/widgets/qfocusframe.cpp
@@ -55,8 +55,8 @@ class QFocusFramePrivate : public QWidgetPrivate
bool showFrameAboveWidget;
public:
QFocusFramePrivate() {
- widget = 0;
- frameParent = 0;
+ widget = nullptr;
+ frameParent = nullptr;
sendChildEvents = false;
showFrameAboveWidget = false;
}
@@ -154,12 +154,12 @@ void QFocusFrame::initStyleOption(QStyleOption *option) const
*/
QFocusFrame::QFocusFrame(QWidget *parent)
- : QWidget(*new QFocusFramePrivate, parent, 0)
+ : QWidget(*new QFocusFramePrivate, parent, { })
{
setAttribute(Qt::WA_TransparentForMouseEvents);
setFocusPolicy(Qt::NoFocus);
setAttribute(Qt::WA_NoChildEventsForParent, true);
- setAttribute(Qt::WA_AcceptDrops, style()->styleHint(QStyle::SH_FocusFrame_AboveWidget, 0, this));
+ setAttribute(Qt::WA_AcceptDrops, style()->styleHint(QStyle::SH_FocusFrame_AboveWidget, nullptr, this));
}
/*!
@@ -184,7 +184,7 @@ QFocusFrame::setWidget(QWidget *widget)
{
Q_D(QFocusFrame);
- if (style()->styleHint(QStyle::SH_FocusFrame_AboveWidget, 0, this))
+ if (style()->styleHint(QStyle::SH_FocusFrame_AboveWidget, nullptr, this))
d->showFrameAboveWidget = true;
else
d->showFrameAboveWidget = false;
@@ -205,7 +205,7 @@ QFocusFrame::setWidget(QWidget *widget)
d->widget = widget;
d->widget->installEventFilter(this);
QWidget *p = widget->parentWidget();
- QWidget *prev = 0;
+ QWidget *prev = nullptr;
if (d->showFrameAboveWidget) {
// Find the right parent for the focus frame.
while (p) {
@@ -231,7 +231,7 @@ QFocusFrame::setWidget(QWidget *widget)
}
d->update();
} else {
- d->widget = 0;
+ d->widget = nullptr;
hide();
}
}
@@ -290,7 +290,7 @@ QFocusFrame::eventFilter(QObject *o, QEvent *e)
case QEvent::ParentChange:
if (d->showFrameAboveWidget) {
QWidget *w = d->widget;
- setWidget(0);
+ setWidget(nullptr);
setWidget(w);
} else {
d->update();
@@ -304,13 +304,13 @@ QFocusFrame::eventFilter(QObject *o, QEvent *e)
setPalette(d->widget->palette());
break;
case QEvent::ZOrderChange:
- if (style()->styleHint(QStyle::SH_FocusFrame_AboveWidget, 0, this))
+ if (style()->styleHint(QStyle::SH_FocusFrame_AboveWidget, nullptr, this))
raise();
else
stackUnder(d->widget);
break;
case QEvent::Destroy:
- setWidget(0);
+ setWidget(nullptr);
break;
default:
break;
diff --git a/src/widgets/widgets/qgroupbox.cpp b/src/widgets/widgets/qgroupbox.cpp
index eec794562a..048fe42948 100644
--- a/src/widgets/widgets/qgroupbox.cpp
+++ b/src/widgets/widgets/qgroupbox.cpp
@@ -178,7 +178,7 @@ void QGroupBoxPrivate::click()
*/
QGroupBox::QGroupBox(QWidget *parent)
- : QWidget(*new QGroupBoxPrivate, parent, 0)
+ : QWidget(*new QGroupBoxPrivate, parent, { })
{
Q_D(QGroupBox);
d->init();
@@ -424,8 +424,8 @@ void QGroupBoxPrivate::_q_fixFocus(Qt::FocusReason reason)
Q_Q(QGroupBox);
QWidget *fw = q->focusWidget();
if (!fw || fw == q) {
- QWidget * best = 0;
- QWidget * candidate = 0;
+ QWidget * best = nullptr;
+ QWidget * candidate = nullptr;
QWidget * w = q;
while ((w = w->nextInFocusChain()) != q) {
if (q->isAncestorOf(w) && (w->focusPolicy() & Qt::TabFocus) == Qt::TabFocus && w->isVisibleTo(q)) {
diff --git a/src/widgets/widgets/qgroupbox.h b/src/widgets/widgets/qgroupbox.h
index deaeba4656..bd8394b43b 100644
--- a/src/widgets/widgets/qgroupbox.h
+++ b/src/widgets/widgets/qgroupbox.h
@@ -57,7 +57,7 @@ class Q_WIDGETS_EXPORT QGroupBox : public QWidget
Q_PROPERTY(Qt::Alignment alignment READ alignment WRITE setAlignment)
Q_PROPERTY(bool flat READ isFlat WRITE setFlat)
Q_PROPERTY(bool checkable READ isCheckable WRITE setCheckable)
- Q_PROPERTY(bool checked READ isChecked WRITE setChecked DESIGNABLE isCheckable NOTIFY toggled USER true)
+ Q_PROPERTY(bool checked READ isChecked WRITE setChecked NOTIFY toggled USER true)
public:
explicit QGroupBox(QWidget *parent = nullptr);
explicit QGroupBox(const QString &title, QWidget *parent = nullptr);
diff --git a/src/widgets/widgets/qkeysequenceedit.cpp b/src/widgets/widgets/qkeysequenceedit.cpp
index 6f2a6b2d5a..b63b0b4d72 100644
--- a/src/widgets/widgets/qkeysequenceedit.cpp
+++ b/src/widgets/widgets/qkeysequenceedit.cpp
@@ -131,7 +131,7 @@ void QKeySequenceEditPrivate::finishEditing()
Constructs a QKeySequenceEdit widget with the given \a parent.
*/
QKeySequenceEdit::QKeySequenceEdit(QWidget *parent)
- : QKeySequenceEdit(*new QKeySequenceEditPrivate, parent, 0)
+ : QKeySequenceEdit(*new QKeySequenceEditPrivate, parent, { })
{
}
diff --git a/src/widgets/widgets/qlcdnumber.cpp b/src/widgets/widgets/qlcdnumber.cpp
index 282714843c..3ddada4514 100644
--- a/src/widgets/widgets/qlcdnumber.cpp
+++ b/src/widgets/widgets/qlcdnumber.cpp
@@ -51,7 +51,7 @@ class QLCDNumberPrivate : public QFramePrivate
public:
void init();
void internalSetString(const QString& s);
- void drawString(const QString& s, QPainter &, QBitArray * = 0, bool = true);
+ void drawString(const QString& s, QPainter &, QBitArray * = nullptr, bool = true);
//void drawString(const QString &, QPainter &, QBitArray * = 0) const;
void drawDigit(const QPoint &, QPainter &, int, char, char = ' ');
void drawSegment(const QPoint &, char, QPainter &, int, bool = false);
@@ -212,7 +212,7 @@ static QString double2string(double num, int base, int ndigits, bool *oflow)
*oflow = true;
return s;
}
- s = int2string((int)num, base, ndigits, 0);
+ s = int2string((int)num, base, ndigits, nullptr);
} else { // decimal base
int nd = ndigits;
do {
@@ -706,7 +706,7 @@ void QLCDNumber::paintEvent(QPaintEvent *)
if (d->smallPoint)
d->drawString(d->digitStr, p, &d->points, false);
else
- d->drawString(d->digitStr, p, 0, false);
+ d->drawString(d->digitStr, p, nullptr, false);
}
diff --git a/src/widgets/widgets/qlineedit.cpp b/src/widgets/widgets/qlineedit.cpp
index 658315028a..19a95be0ff 100644
--- a/src/widgets/widgets/qlineedit.cpp
+++ b/src/widgets/widgets/qlineedit.cpp
@@ -274,7 +274,7 @@ QLineEdit::QLineEdit(QWidget* parent)
\sa text(), setMaxLength()
*/
QLineEdit::QLineEdit(const QString& contents, QWidget* parent)
- : QWidget(*new QLineEditPrivate, parent, 0)
+ : QWidget(*new QLineEditPrivate, parent, { })
{
Q_D(QLineEdit);
d->init(contents);
@@ -446,7 +446,7 @@ void QLineEdit::addAction(QAction *action, ActionPosition position)
{
Q_D(QLineEdit);
QWidget::addAction(action);
- d->addAction(action, 0, position);
+ d->addAction(action, nullptr, position);
}
/*!
@@ -640,15 +640,15 @@ void QLineEdit::setCompleter(QCompleter *c)
if (c == d->control->completer())
return;
if (d->control->completer()) {
- disconnect(d->control->completer(), 0, this, 0);
- d->control->completer()->setWidget(0);
+ disconnect(d->control->completer(), nullptr, this, nullptr);
+ d->control->completer()->setWidget(nullptr);
if (d->control->completer()->parent() == this)
delete d->control->completer();
}
d->control->setCompleter(c);
if (!c)
return;
- if (c->widget() == 0)
+ if (c->widget() == nullptr)
c->setWidget(this);
if (hasFocus()) {
QObject::connect(d->control->completer(), SIGNAL(activated(QString)),
@@ -683,7 +683,7 @@ QSize QLineEdit::sizeHint() const
Q_D(const QLineEdit);
ensurePolished();
QFontMetrics fm(font());
- const int iconSize = style()->pixelMetric(QStyle::PM_SmallIconSize, 0, this);
+ const int iconSize = style()->pixelMetric(QStyle::PM_SmallIconSize, nullptr, this);
const QMargins tm = d->effectiveTextMargins();
int h = qMax(fm.height(), qMax(14, iconSize - 2)) + 2 * QLineEditPrivate::verticalMargin
+ tm.top() + tm.bottom()
@@ -1214,8 +1214,8 @@ QMargins QLineEdit::textMargins() const
\row \li \c a \li ASCII alphabetic character permitted but not required.
\row \li \c N \li ASCII alphanumeric character required. A-Z, a-z, 0-9.
\row \li \c n \li ASCII alphanumeric character permitted but not required.
- \row \li \c X \li Any character required.
- \row \li \c x \li Any character permitted but not required.
+ \row \li \c X \li Any non-blank character required.
+ \row \li \c x \li Any non-blank character permitted but not required.
\row \li \c 9 \li ASCII digit required. 0-9.
\row \li \c 0 \li ASCII digit permitted but not required.
\row \li \c D \li ASCII digit required. 1-9.
@@ -1951,7 +1951,7 @@ void QLineEdit::focusOutEvent(QFocusEvent *e)
#endif
#if QT_CONFIG(completer)
if (d->control->completer()) {
- QObject::disconnect(d->control->completer(), 0, this, 0);
+ QObject::disconnect(d->control->completer(), nullptr, this, nullptr);
}
#endif
QWidget::focusOutEvent(e);
@@ -2190,7 +2190,7 @@ QMenu *QLineEdit::createStandardContextMenu()
Q_D(QLineEdit);
QMenu *popup = new QMenu(this);
popup->setObjectName(QLatin1String("qt_edit_menu"));
- QAction *action = 0;
+ QAction *action = nullptr;
if (!isReadOnly()) {
action = popup->addAction(QLineEdit::tr("&Undo") + ACCEL_KEY(QKeySequence::Undo));
diff --git a/src/widgets/widgets/qlineedit_p.cpp b/src/widgets/widgets/qlineedit_p.cpp
index d2b5f87906..feb34ef403 100644
--- a/src/widgets/widgets/qlineedit_p.cpp
+++ b/src/widgets/widgets/qlineedit_p.cpp
@@ -487,7 +487,7 @@ QLineEditPrivate::SideWidgetParameters QLineEditPrivate::sideWidgetParameters()
{
Q_Q(const QLineEdit);
SideWidgetParameters result;
- result.iconSize = q->style()->pixelMetric(QStyle::PM_SmallIconSize, 0, q);
+ result.iconSize = q->style()->pixelMetric(QStyle::PM_SmallIconSize, nullptr, q);
result.margin = result.iconSize / 4;
result.widgetWidth = result.iconSize + 6;
result.widgetHeight = result.iconSize + 2;
@@ -566,12 +566,12 @@ QWidget *QLineEditPrivate::addAction(QAction *newAction, QAction *before, QLineE
{
Q_Q(QLineEdit);
if (!newAction)
- return 0;
+ return nullptr;
if (!hasSideWidgets()) { // initial setup.
QObject::connect(q, SIGNAL(textChanged(QString)), q, SLOT(_q_textChanged(QString)));
lastTextSize = q->text().size();
}
- QWidget *w = 0;
+ QWidget *w = nullptr;
// Store flags about QWidgetAction here since removeAction() may be called from ~QAction,
// in which a qobject_cast<> no longer works.
#if QT_CONFIG(action)
diff --git a/src/widgets/widgets/qlineedit_p.h b/src/widgets/widgets/qlineedit_p.h
index a11fea6bbe..5ae402b992 100644
--- a/src/widgets/widgets/qlineedit_p.h
+++ b/src/widgets/widgets/qlineedit_p.h
@@ -151,7 +151,7 @@ public:
};
QLineEditPrivate()
- : control(0), frame(1), contextMenuEnabled(1), cursorVisible(0),
+ : control(nullptr), frame(1), contextMenuEnabled(1), cursorVisible(0),
dragEnabled(0), clickCausedFocus(0), edited(0), hscroll(0), vscroll(0),
alignment(Qt::AlignLeading | Qt::AlignVCenter),
textMargins{0, 0, 0, 0},
diff --git a/src/widgets/widgets/qmaccocoaviewcontainer_mac.mm b/src/widgets/widgets/qmaccocoaviewcontainer_mac.mm
index 88baf0410b..f261314c64 100644
--- a/src/widgets/widgets/qmaccocoaviewcontainer_mac.mm
+++ b/src/widgets/widgets/qmaccocoaviewcontainer_mac.mm
@@ -138,7 +138,7 @@ QMacCocoaViewContainerPrivate::~QMacCocoaViewContainerPrivate()
*/
QMacCocoaViewContainer::QMacCocoaViewContainer(NSView *view, QWidget *parent)
- : QWidget(*new QMacCocoaViewContainerPrivate, parent, 0)
+ : QWidget(*new QMacCocoaViewContainerPrivate, parent, {})
{
// Ensures that we have a QWindow, even if we're not a top level widget
setAttribute(Qt::WA_NativeWindow);
diff --git a/src/widgets/widgets/qmainwindow.cpp b/src/widgets/widgets/qmainwindow.cpp
index 16ed699137..7f0f3342b6 100644
--- a/src/widgets/widgets/qmainwindow.cpp
+++ b/src/widgets/widgets/qmainwindow.cpp
@@ -78,7 +78,7 @@ class QMainWindowPrivate : public QWidgetPrivate
Q_DECLARE_PUBLIC(QMainWindow)
public:
inline QMainWindowPrivate()
- : layout(0), explicitIconSize(false), toolButtonStyle(Qt::ToolButtonIconOnly)
+ : layout(nullptr), explicitIconSize(false), toolButtonStyle(Qt::ToolButtonIconOnly)
#ifdef Q_OS_OSX
, useUnifiedToolBar(false)
#endif
@@ -94,7 +94,7 @@ public:
static inline QMainWindowLayout *mainWindowLayout(const QMainWindow *mainWindow)
{
- return mainWindow ? mainWindow->d_func()->layout : static_cast<QMainWindowLayout *>(0);
+ return mainWindow ? mainWindow->d_func()->layout : static_cast<QMainWindowLayout *>(nullptr);
}
};
@@ -152,10 +152,10 @@ void QMainWindowPrivate::init()
topLayout->addItem(layout, 1, 1);
#else
- layout = new QMainWindowLayout(q, 0);
+ layout = new QMainWindowLayout(q, nullptr);
#endif
- const int metric = q->style()->pixelMetric(QStyle::PM_ToolBarIconSize, 0, q);
+ const int metric = q->style()->pixelMetric(QStyle::PM_ToolBarIconSize, nullptr, q);
iconSize = QSize(metric, metric);
q->setAttribute(Qt::WA_Hover);
}
@@ -452,7 +452,7 @@ void QMainWindow::setIconSize(const QSize &iconSize)
Q_D(QMainWindow);
QSize sz = iconSize;
if (!sz.isValid()) {
- const int metric = style()->pixelMetric(QStyle::PM_ToolBarIconSize, 0, this);
+ const int metric = style()->pixelMetric(QStyle::PM_ToolBarIconSize, nullptr, this);
sz = QSize(metric, metric);
}
if (d->iconSize != sz) {
@@ -652,8 +652,8 @@ QWidget *QMainWindow::takeCentralWidget()
Q_D(QMainWindow);
QWidget *oldcentralwidget = d->layout->centralWidget();
if (oldcentralwidget) {
- oldcentralwidget->setParent(0);
- d->layout->setCentralWidget(0);
+ oldcentralwidget->setParent(nullptr);
+ d->layout->setCentralWidget(nullptr);
}
return oldcentralwidget;
}
@@ -1478,7 +1478,7 @@ void QMainWindow::contextMenuEvent(QContextMenuEvent *event)
QMenu *QMainWindow::createPopupMenu()
{
Q_D(QMainWindow);
- QMenu *menu = 0;
+ QMenu *menu = nullptr;
#if QT_CONFIG(dockwidget)
QList<QDockWidget *> dockwidgets = findChildren<QDockWidget *>();
if (dockwidgets.size()) {
diff --git a/src/widgets/widgets/qmainwindowlayout.cpp b/src/widgets/widgets/qmainwindowlayout.cpp
index 0fb3a86cf8..30562d8270 100644
--- a/src/widgets/widgets/qmainwindowlayout.cpp
+++ b/src/widgets/widgets/qmainwindowlayout.cpp
@@ -101,14 +101,14 @@ static void dumpLayout(QTextStream &qout, const QDockAreaLayoutItem &item, QStri
<< " gap:" << (item.flags & QDockAreaLayoutItem::GapItem)
<< " keepSize:" << (item.flags & QDockAreaLayoutItem::KeepSize) << '\n';
indent += QLatin1String(" ");
- if (item.widgetItem != 0) {
+ if (item.widgetItem != nullptr) {
qout << indent << "widget: "
<< item.widgetItem->widget()->metaObject()->className()
<< " \"" << item.widgetItem->widget()->windowTitle() << "\"\n";
- } else if (item.subinfo != 0) {
+ } else if (item.subinfo != nullptr) {
qout << indent << "subinfo:\n";
dumpLayout(qout, *item.subinfo, indent + QLatin1String(" "));
- } else if (item.placeHolderItem != 0) {
+ } else if (item.placeHolderItem != nullptr) {
QRect r = item.placeHolderItem->topLevelRect;
qout << indent << "placeHolder: "
<< "pos: " << item.pos << " size:" << item.size
@@ -272,7 +272,7 @@ public:
int frameWidth() const
{
return nativeWindowDeco() ? 0 :
- parentWidget()->style()->pixelMetric(QStyle::PM_DockWidgetFrameWidth, 0, parentWidget());
+ parentWidget()->style()->pixelMetric(QStyle::PM_DockWidgetFrameWidth, nullptr, parentWidget());
}
QDockWidgetGroupWindow *groupWindow() const
@@ -727,7 +727,7 @@ void QMainWindowLayoutState::deleteCentralWidgetItem()
{
#if QT_CONFIG(dockwidget)
delete dockAreaLayout.centralWidgetItem;
- dockAreaLayout.centralWidgetItem = 0;
+ dockAreaLayout.centralWidgetItem = nullptr;
#else
delete centralWidgetItem;
centralWidgetItem = 0;
@@ -749,7 +749,7 @@ QLayoutItem *QMainWindowLayoutState::itemAt(int index, int *x) const
return centralWidgetItem;
#endif
- return 0;
+ return nullptr;
}
QLayoutItem *QMainWindowLayoutState::takeAt(int index, int *x)
@@ -770,7 +770,7 @@ QLayoutItem *QMainWindowLayoutState::takeAt(int index, int *x)
}
#endif
- return 0;
+ return nullptr;
}
QList<int> QMainWindowLayoutState::indexOf(QWidget *widget) const
@@ -803,7 +803,7 @@ QList<int> QMainWindowLayoutState::indexOf(QWidget *widget) const
bool QMainWindowLayoutState::contains(QWidget *widget) const
{
#if QT_CONFIG(dockwidget)
- if (dockAreaLayout.centralWidgetItem != 0 && dockAreaLayout.centralWidgetItem->widget() == widget)
+ if (dockAreaLayout.centralWidgetItem != nullptr && dockAreaLayout.centralWidgetItem->widget() == widget)
return true;
if (!dockAreaLayout.indexOf(widget).isEmpty())
return true;
@@ -821,11 +821,11 @@ bool QMainWindowLayoutState::contains(QWidget *widget) const
void QMainWindowLayoutState::setCentralWidget(QWidget *widget)
{
- QLayoutItem *item = 0;
+ QLayoutItem *item = nullptr;
//make sure we remove the widget
deleteCentralWidgetItem();
- if (widget != 0)
+ if (widget != nullptr)
item = new QWidgetItemV2(widget);
#if QT_CONFIG(dockwidget)
@@ -837,7 +837,7 @@ void QMainWindowLayoutState::setCentralWidget(QWidget *widget)
QWidget *QMainWindowLayoutState::centralWidget() const
{
- QLayoutItem *item = 0;
+ QLayoutItem *item = nullptr;
#if QT_CONFIG(dockwidget)
item = dockAreaLayout.centralWidgetItem;
@@ -845,9 +845,9 @@ QWidget *QMainWindowLayoutState::centralWidget() const
item = centralWidgetItem;
#endif
- if (item != 0)
+ if (item != nullptr)
return item->widget();
- return 0;
+ return nullptr;
}
QList<int> QMainWindowLayoutState::gapIndex(QWidget *widget,
@@ -978,7 +978,7 @@ QLayoutItem *QMainWindowLayoutState::item(const QList<int> &path)
return dockAreaLayout.item(path.mid(1)).widgetItem;
#endif // QT_CONFIG(dockwidget)
- return 0;
+ return nullptr;
}
QRect QMainWindowLayoutState::itemRect(const QList<int> &path) const
@@ -1029,7 +1029,7 @@ QLayoutItem *QMainWindowLayoutState::plug(const QList<int> &path)
return dockAreaLayout.plug(path.mid(1));
#endif // QT_CONFIG(dockwidget)
- return 0;
+ return nullptr;
}
QLayoutItem *QMainWindowLayoutState::unplug(const QList<int> &path, QMainWindowLayoutState *other)
@@ -1040,7 +1040,7 @@ QLayoutItem *QMainWindowLayoutState::unplug(const QList<int> &path, QMainWindowL
Q_UNUSED(other);
#else
if (i == 0)
- return toolBarAreaLayout.unplug(path.mid(1), other ? &other->toolBarAreaLayout : 0);
+ return toolBarAreaLayout.unplug(path.mid(1), other ? &other->toolBarAreaLayout : nullptr);
#endif
#if QT_CONFIG(dockwidget)
@@ -1048,7 +1048,7 @@ QLayoutItem *QMainWindowLayoutState::unplug(const QList<int> &path, QMainWindowL
return dockAreaLayout.unplug(path.mid(1));
#endif // QT_CONFIG(dockwidget)
- return 0;
+ return nullptr;
}
void QMainWindowLayoutState::saveState(QDataStream &stream) const
@@ -1198,7 +1198,7 @@ bool QMainWindowLayoutState::restoreState(QDataStream &_stream,
continue;
}
QDockAreaLayoutInfo *info = dockAreaLayout.info(oldPath);
- if (info == 0) {
+ if (info == nullptr) {
continue;
}
info->item_list.append(QDockAreaLayoutItem(new QDockWidgetItem(w)));
@@ -1249,7 +1249,7 @@ bool QMainWindowLayoutState::restoreState(QDataStream &_stream,
if (oldPath.isEmpty()) {
continue;
}
- toolBarAreaLayout.docks[oldPath.at(0)].insertToolBar(0, w);
+ toolBarAreaLayout.docks[oldPath.at(0)].insertToolBar(nullptr, w);
}
}
}
@@ -1755,7 +1755,7 @@ void QMainWindowTabBar::mouseReleaseEvent(QMouseEvent *e)
if (dockPriv->state && dockPriv->state->dragging) {
dockPriv->endDrag();
}
- draggingDock = 0;
+ draggingDock = nullptr;
}
QTabBar::mouseReleaseEvent(e);
}
@@ -1780,7 +1780,7 @@ bool QMainWindowTabBar::event(QEvent *e)
QTabBar *QMainWindowLayout::getTabBar()
{
- QTabBar *result = 0;
+ QTabBar *result = nullptr;
if (!unusedTabBars.isEmpty()) {
result = unusedTabBars.takeLast();
} else {
@@ -1800,7 +1800,7 @@ QTabBar *QMainWindowLayout::getTabBar()
// Allocates a new separator widget if needed
QWidget *QMainWindowLayout::getSeparatorWidget()
{
- QWidget *result = 0;
+ QWidget *result = nullptr;
if (!unusedSeparatorWidgets.isEmpty()) {
result = unusedSeparatorWidgets.takeLast();
} else {
@@ -1829,16 +1829,16 @@ QDockAreaLayoutInfo *QMainWindowLayout::dockInfo(QWidget *widget)
if (info)
return info;
}
- return 0;
+ return nullptr;
}
void QMainWindowLayout::tabChanged()
{
QTabBar *tb = qobject_cast<QTabBar*>(sender());
- if (tb == 0)
+ if (tb == nullptr)
return;
QDockAreaLayoutInfo *info = dockInfo(tb);
- if (info == 0)
+ if (info == nullptr)
return;
QDockWidget *activated = info->apply(false);
@@ -1866,7 +1866,7 @@ void QMainWindowLayout::tabMoved(int from, int to)
void QMainWindowLayout::raise(QDockWidget *widget)
{
QDockAreaLayoutInfo *info = dockInfo(widget);
- if (info == 0)
+ if (info == nullptr)
return;
if (!info->tabbed)
return;
@@ -1897,7 +1897,7 @@ QLayoutItem *QMainWindowLayout::itemAt(int index) const
if (statusbar && x++ == index)
return statusbar;
- return 0;
+ return nullptr;
}
QLayoutItem *QMainWindowLayout::takeAt(int index)
@@ -1909,7 +1909,7 @@ QLayoutItem *QMainWindowLayout::takeAt(int index)
if (QWidget *w = ret->widget()) {
widgetAnimator.abort(w);
if (w == pluggingWidget)
- pluggingWidget = 0;
+ pluggingWidget = nullptr;
}
if (savedState.isValid() ) {
@@ -1934,11 +1934,11 @@ QLayoutItem *QMainWindowLayout::takeAt(int index)
if (statusbar && x++ == index) {
QLayoutItem *ret = statusbar;
- statusbar = 0;
+ statusbar = nullptr;
return ret;
}
- return 0;
+ return nullptr;
}
void QMainWindowLayout::setGeometry(const QRect &_r)
@@ -2033,7 +2033,7 @@ static void fixToolBarOrientation(QLayoutItem *item, int dockPos)
{
#if QT_CONFIG(toolbar)
QToolBar *toolBar = qobject_cast<QToolBar*>(item->widget());
- if (toolBar == 0)
+ if (toolBar == nullptr)
return;
QRect oldGeo = toolBar->geometry();
@@ -2146,7 +2146,7 @@ bool QMainWindowLayout::plug(QLayoutItem *widgetItem)
if (layout->nativeWindowDeco()) {
globalRect.adjust(0, layout->titleHeight(), 0, 0);
} else {
- int fw = widget->style()->pixelMetric(QStyle::PM_DockWidgetFrameWidth, 0, widget);
+ int fw = widget->style()->pixelMetric(QStyle::PM_DockWidgetFrameWidth, nullptr, widget);
globalRect.adjust(-fw, -fw, fw, fw);
}
}
@@ -2214,7 +2214,7 @@ void QMainWindowLayout::animationFinished(QWidget *widget)
QDockAreaLayoutItem &item = dstParentInfo->item_list[idx];
Q_ASSERT(item.widgetItem->widget() == dwgw);
delete item.widgetItem;
- item.widgetItem = 0;
+ item.widgetItem = nullptr;
item.subinfo = new QDockAreaLayoutInfo(std::move(*srcInfo));
*srcInfo = QDockAreaLayoutInfo();
item.subinfo->reparentWidgets(currentHoveredFloat ? currentHoveredFloat.data()
@@ -2238,7 +2238,7 @@ void QMainWindowLayout::animationFinished(QWidget *widget)
savedState.clear();
currentGapPos.clear();
- pluggingWidget = 0;
+ pluggingWidget = nullptr;
#if QT_CONFIG(dockwidget)
setCurrentHoveredFloat(nullptr);
#endif
@@ -2283,16 +2283,16 @@ void QMainWindowLayout::restore(bool keepSavedState)
if (!keepSavedState)
savedState.clear();
currentGapPos.clear();
- pluggingWidget = 0;
+ pluggingWidget = nullptr;
updateGapIndicator();
}
QMainWindowLayout::QMainWindowLayout(QMainWindow *mainwindow, QLayout *parentLayout)
- : QLayout(parentLayout ? static_cast<QWidget *>(0) : mainwindow)
+ : QLayout(parentLayout ? static_cast<QWidget *>(nullptr) : mainwindow)
, layoutState(mainwindow)
, savedState(mainwindow)
, dockOptions(QMainWindow::AnimatedDocks | QMainWindow::AllowTabbedDocks)
- , statusbar(0)
+ , statusbar(nullptr)
#if QT_CONFIG(dockwidget)
#if QT_CONFIG(tabbar)
, _documentMode(false)
@@ -2303,14 +2303,14 @@ QMainWindowLayout::QMainWindowLayout(QMainWindow *mainwindow, QLayout *parentLay
#endif
#endif // QT_CONFIG(dockwidget)
, widgetAnimator(this)
- , pluggingWidget(0)
+ , pluggingWidget(nullptr)
{
if (parentLayout)
setParent(parentLayout);
#if QT_CONFIG(dockwidget)
#if QT_CONFIG(tabbar)
- sep = mainwindow->style()->pixelMetric(QStyle::PM_DockWidgetSeparatorExtent, 0, mainwindow);
+ sep = mainwindow->style()->pixelMetric(QStyle::PM_DockWidgetSeparatorExtent, nullptr, mainwindow);
#endif
#if QT_CONFIG(tabwidget)
@@ -2318,7 +2318,7 @@ QMainWindowLayout::QMainWindowLayout(QMainWindow *mainwindow, QLayout *parentLay
tabPositions[i] = QTabWidget::South;
#endif
#endif // QT_CONFIG(dockwidget)
- pluggingWidget = 0;
+ pluggingWidget = nullptr;
setObjectName(mainwindow->objectName() + QLatin1String("_layout"));
}
@@ -2354,7 +2354,7 @@ void QMainWindowLayout::setStatusBar(QStatusBar *sb)
if (sb)
addChildWidget(sb);
delete statusbar;
- statusbar = sb ? new QWidgetItemV2(sb) : 0;
+ statusbar = sb ? new QWidgetItemV2(sb) : nullptr;
invalidate();
}
#endif // QT_CONFIG(statusbar)
@@ -2366,7 +2366,7 @@ QWidget *QMainWindowLayout::centralWidget() const
void QMainWindowLayout::setCentralWidget(QWidget *widget)
{
- if (widget != 0)
+ if (widget != nullptr)
addChildWidget(widget);
layoutState.setCentralWidget(widget);
if (savedState.isValid()) {
@@ -2453,7 +2453,7 @@ QLayoutItem *QMainWindowLayout::unplug(QWidget *widget, bool group)
#endif
QList<int> path = layoutState.indexOf(widget);
if (path.isEmpty())
- return 0;
+ return nullptr;
QLayoutItem *item = layoutState.item(path);
if (widget->isWindow())
@@ -2561,7 +2561,7 @@ static QTabBar::Shape tabwidgetPositionToTabBarShape(QWidget *w)
void QMainWindowLayout::hover(QLayoutItem *widgetItem, const QPoint &mousePos)
{
if (!parentWidget()->isVisible() || parentWidget()->isMinimized()
- || pluggingWidget != 0 || widgetItem == 0)
+ || pluggingWidget != nullptr || widgetItem == nullptr)
return;
QWidget *widget = widgetItem->widget();
diff --git a/src/widgets/widgets/qmainwindowlayout_p.h b/src/widgets/widgets/qmainwindowlayout_p.h
index 967b713096..ebed47da30 100644
--- a/src/widgets/widgets/qmainwindowlayout_p.h
+++ b/src/widgets/widgets/qmainwindowlayout_p.h
@@ -334,7 +334,7 @@ class QDockWidgetGroupWindow : public QWidget
{
Q_OBJECT
public:
- explicit QDockWidgetGroupWindow(QWidget* parent = nullptr, Qt::WindowFlags f = nullptr)
+ explicit QDockWidgetGroupWindow(QWidget* parent = nullptr, Qt::WindowFlags f = { })
: QWidget(parent, f) {}
QDockAreaLayoutInfo *layoutInfo() const;
#if QT_CONFIG(tabbar)
diff --git a/src/widgets/widgets/qmdiarea.cpp b/src/widgets/widgets/qmdiarea.cpp
index 6e3de1b1ff..3272ac440b 100644
--- a/src/widgets/widgets/qmdiarea.cpp
+++ b/src/widgets/widgets/qmdiarea.cpp
@@ -245,7 +245,7 @@ static inline bool useScrollBar(const QRect &childrenRect, const QSize &maxViewp
static inline QMdiArea *mdiAreaParent(QWidget *widget)
{
if (!widget)
- return 0;
+ return nullptr;
QWidget *parent = widget->parentWidget();
while (parent) {
@@ -253,7 +253,7 @@ static inline QMdiArea *mdiAreaParent(QWidget *widget)
return area;
parent = parent->parentWidget();
}
- return 0;
+ return nullptr;
}
#if QT_CONFIG(tabwidget)
@@ -352,7 +352,7 @@ void SimpleCascader::rearrange(QList<QWidget *> &widgets, const QRect &domain) c
int titleBarHeight = widgets.at(0)->style()->pixelMetric(QStyle::PM_TitleBarHeight, &options, widgets.at(0));
const QFontMetrics fontMetrics = QFontMetrics(QApplication::font("QMdiSubWindowTitleBar"));
const int dy = qMax(titleBarHeight - (titleBarHeight - fontMetrics.height()) / 2, 1)
- + widgets.at(0)->style()->pixelMetric(QStyle::PM_FocusFrameVMargin, 0, widgets.at(0));
+ + widgets.at(0)->style()->pixelMetric(QStyle::PM_FocusFrameVMargin, nullptr, widgets.at(0));
const int n = widgets.size();
const int nrows = qMax((domain.height() - (topOffset + bottomOffset)) / dy, 1);
@@ -648,7 +648,7 @@ void QMdiAreaTabBar::contextMenuEvent(QContextMenuEvent *event)
QMdiSubWindow *QMdiAreaTabBar::subWindowFromIndex(int index) const
{
if (index < 0 || index >= count())
- return 0;
+ return nullptr;
QMdiArea *mdiArea = qobject_cast<QMdiArea *>(parentWidget());
Q_ASSERT(mdiArea);
@@ -667,15 +667,15 @@ QMdiSubWindow *QMdiAreaTabBar::subWindowFromIndex(int index) const
\internal
*/
QMdiAreaPrivate::QMdiAreaPrivate()
- : cascader(0),
- regularTiler(0),
- iconTiler(0),
- placer(0),
+ : cascader(nullptr),
+ regularTiler(nullptr),
+ iconTiler(nullptr),
+ placer(nullptr),
#if QT_CONFIG(rubberband)
- rubberBand(0),
+ rubberBand(nullptr),
#endif
#if QT_CONFIG(tabbar)
- tabBar(0),
+ tabBar(nullptr),
#endif
activationOrder(QMdiArea::CreationOrder),
viewMode(QMdiArea::SubWindowView),
@@ -1070,7 +1070,7 @@ void QMdiAreaPrivate::emitWindowActivated(QMdiSubWindow *activeWindow)
Q_ASSERT(aboutToBecomeActive == activeWindow);
active = activeWindow;
- aboutToBecomeActive = 0;
+ aboutToBecomeActive = nullptr;
Q_ASSERT(active->d_func()->isActive);
#if QT_CONFIG(tabbar)
@@ -1093,20 +1093,20 @@ void QMdiAreaPrivate::resetActiveWindow(QMdiSubWindow *deactivatedWindow)
if (deactivatedWindow) {
if (deactivatedWindow != active)
return;
- active = 0;
+ active = nullptr;
if ((aboutToBecomeActive || isActivated || lastWindowAboutToBeDestroyed())
&& !isExplicitlyDeactivated(deactivatedWindow) && !q->window()->isMinimized()) {
return;
}
- emit q->subWindowActivated(0);
+ emit q->subWindowActivated(nullptr);
return;
}
if (aboutToBecomeActive)
return;
- active = 0;
- emit q->subWindowActivated(0);
+ active = nullptr;
+ emit q->subWindowActivated(nullptr);
}
/*!
@@ -1171,7 +1171,7 @@ void QMdiAreaPrivate::updateScrollBars()
QSize hbarExtent = hbar->sizeHint();
QSize vbarExtent = vbar->sizeHint();
- if (q->style()->styleHint(QStyle::SH_ScrollView_FrameOnlyAroundContents, 0, q)) {
+ if (q->style()->styleHint(QStyle::SH_ScrollView_FrameOnlyAroundContents, nullptr, q)) {
const int doubleFrameWidth = frameWidth * 2;
if (hbarpolicy == Qt::ScrollBarAlwaysOn)
maxSize.rheight() -= doubleFrameWidth;
@@ -1232,7 +1232,7 @@ void QMdiAreaPrivate::internalRaise(QMdiSubWindow *mdiChild) const
if (!sanityCheck(mdiChild, "QMdiArea::internalRaise") || childWindows.size() < 2)
return;
- QMdiSubWindow *stackUnderChild = 0;
+ QMdiSubWindow *stackUnderChild = nullptr;
if (!windowStaysOnTop(mdiChild)) {
const auto children = viewport->children(); // take a copy, as raising/stacking under changes the order
for (QObject *object : children) {
@@ -1282,8 +1282,8 @@ QRect QMdiAreaPrivate::resizeToMinimumTileSize(const QSize &minSubWindowSize, in
minAreaHeight += hbar->height();
if (vbar->isVisible())
minAreaWidth += vbar->width();
- if (q->style()->styleHint(QStyle::SH_ScrollView_FrameOnlyAroundContents, 0, q)) {
- const int frame = q->style()->pixelMetric(QStyle::PM_DefaultFrameWidth, 0, q);
+ if (q->style()->styleHint(QStyle::SH_ScrollView_FrameOnlyAroundContents, nullptr, q)) {
+ const int frame = q->style()->pixelMetric(QStyle::PM_DefaultFrameWidth, nullptr, q);
minAreaWidth += 2 * frame;
minAreaHeight += 2 * frame;
}
@@ -1427,7 +1427,7 @@ void QMdiAreaPrivate::disconnectSubWindow(QObject *subWindow)
return;
Q_Q(QMdiArea);
- QObject::disconnect(subWindow, 0, q, 0);
+ QObject::disconnect(subWindow, nullptr, q, nullptr);
subWindow->removeEventFilter(q);
}
@@ -1438,11 +1438,11 @@ QMdiSubWindow *QMdiAreaPrivate::nextVisibleSubWindow(int increaseFactor, QMdiAre
int removedIndex, int fromIndex) const
{
if (childWindows.isEmpty())
- return 0;
+ return nullptr;
Q_Q(const QMdiArea);
const QList<QMdiSubWindow *> subWindows = q->subWindowList(order);
- QMdiSubWindow *current = 0;
+ QMdiSubWindow *current = nullptr;
if (removedIndex < 0) {
if (fromIndex >= 0 && fromIndex < subWindows.size())
@@ -1482,7 +1482,7 @@ QMdiSubWindow *QMdiAreaPrivate::nextVisibleSubWindow(int increaseFactor, QMdiAre
if (!subWindows.at(index)->isHidden())
return subWindows.at(index);
- return 0;
+ return nullptr;
}
/*!
@@ -1603,7 +1603,7 @@ void QMdiAreaPrivate::setViewMode(QMdiArea::ViewMode mode)
{ // SubWindowView
#if QT_CONFIG(tabbar)
delete tabBar;
- tabBar = 0;
+ tabBar = nullptr;
#endif // QT_CONFIG(tabbar)
viewMode = mode;
@@ -1704,7 +1704,7 @@ QMdiArea::QMdiArea(QWidget *parent)
setFrameStyle(QFrame::NoFrame);
setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
- setViewport(0);
+ setViewport(nullptr);
setFocusPolicy(Qt::NoFocus);
QApplication::instance()->installEventFilter(this);
}
@@ -1716,16 +1716,16 @@ QMdiArea::~QMdiArea()
{
Q_D(QMdiArea);
delete d->cascader;
- d->cascader = 0;
+ d->cascader = nullptr;
delete d->regularTiler;
- d->regularTiler = 0;
+ d->regularTiler = nullptr;
delete d->iconTiler;
- d->iconTiler = 0;
+ d->iconTiler = nullptr;
delete d->placer;
- d->placer = 0;
+ d->placer = nullptr;
}
/*!
@@ -1760,8 +1760,8 @@ QSize QMdiArea::sizeHint() const
QSize QMdiArea::minimumSizeHint() const
{
Q_D(const QMdiArea);
- QSize size(style()->pixelMetric(QStyle::PM_MdiSubWindowMinimizedWidth, 0, this),
- style()->pixelMetric(QStyle::PM_TitleBarHeight, 0, this));
+ QSize size(style()->pixelMetric(QStyle::PM_MdiSubWindowMinimizedWidth, nullptr, this),
+ style()->pixelMetric(QStyle::PM_TitleBarHeight, nullptr, this));
size = size.expandedTo(QAbstractScrollArea::minimumSizeHint());
if (!d->scrollBarsEnabled()) {
for (QMdiSubWindow *child : d->childWindows) {
@@ -1965,7 +1965,7 @@ QMdiSubWindow *QMdiArea::addSubWindow(QWidget *widget, Qt::WindowFlags windowFla
{
if (Q_UNLIKELY(!widget)) {
qWarning("QMdiArea::addSubWindow: null pointer to widget");
- return 0;
+ return nullptr;
}
Q_D(QMdiArea);
@@ -2027,7 +2027,7 @@ void QMdiArea::removeSubWindow(QWidget *widget)
d->childWindows.removeAll(child);
d->indicesToActivatedChildren.removeAll(index);
d->updateActiveWindow(index, d->active == child);
- child->setParent(0);
+ child->setParent(nullptr);
return;
}
@@ -2036,7 +2036,7 @@ void QMdiArea::removeSubWindow(QWidget *widget)
if (!sanityCheck(child, "QMdiArea::removeSubWindow"))
continue;
if (child->widget() == widget) {
- child->setWidget(0);
+ child->setWidget(nullptr);
Q_ASSERT(!child->widget());
found = true;
break;
diff --git a/src/widgets/widgets/qmdisubwindow.cpp b/src/widgets/widgets/qmdisubwindow.cpp
index d58a1d06db..84568c35db 100644
--- a/src/widgets/widgets/qmdisubwindow.cpp
+++ b/src/widgets/widgets/qmdisubwindow.cpp
@@ -253,7 +253,7 @@ static inline ControlElement<T> *ptr(QWidget *widget)
&& strcmp(widget->metaObject()->className(), T::staticMetaObject.className()) == 0) {
return static_cast<ControlElement<T> *>(widget);
}
- return 0;
+ return nullptr;
}
QString QMdiSubWindowPrivate::originalWindowTitle()
@@ -364,7 +364,7 @@ class ControlLabel : public QWidget
{
Q_OBJECT
public:
- ControlLabel(QMdiSubWindow *subWindow, QWidget *parent = 0);
+ ControlLabel(QMdiSubWindow *subWindow, QWidget *parent = nullptr);
QSize sizeHint() const override;
@@ -481,8 +481,8 @@ void ControlLabel::updateWindowIcon()
{
QIcon menuIcon = windowIcon();
if (menuIcon.isNull())
- menuIcon = style()->standardIcon(QStyle::SP_TitleBarMenuButton, 0, parentWidget());
- const int iconSize = style()->pixelMetric(QStyle::PM_TitleBarButtonIconSize, 0, parentWidget());
+ menuIcon = style()->standardIcon(QStyle::SP_TitleBarMenuButton, nullptr, parentWidget());
+ const int iconSize = style()->pixelMetric(QStyle::PM_TitleBarButtonIconSize, nullptr, parentWidget());
label = menuIcon.pixmap(iconSize);
update();
}
@@ -496,7 +496,7 @@ class ControllerWidget : public QWidget
{
Q_OBJECT
public:
- ControllerWidget(QMdiSubWindow *subWindow, QWidget *parent = 0);
+ ControllerWidget(QMdiSubWindow *subWindow, QWidget *parent = nullptr);
QSize sizeHint() const override;
void setControlVisible(QMdiSubWindowPrivate::WindowStateAction action, bool visible);
inline bool hasVisibleControls() const
@@ -542,7 +542,7 @@ ControllerWidget::ControllerWidget(QMdiSubWindow *subWindow, QWidget *parent)
activeControl(QStyle::SC_None),
hoverControl(QStyle::SC_None),
visibleControls(QStyle::SC_None),
- mdiArea(0)
+ mdiArea(nullptr)
{
if (subWindow->parentWidget())
mdiArea = qobject_cast<QMdiArea *>(subWindow->parentWidget()->parentWidget());
@@ -697,10 +697,10 @@ void ControllerWidget::initStyleOption(QStyleOptionComplex *option) const
*/
ControlContainer::ControlContainer(QMdiSubWindow *mdiChild)
: QObject(mdiChild),
- previousLeft(0),
- previousRight(0),
+ previousLeft(nullptr),
+ previousRight(nullptr),
#if QT_CONFIG(menubar)
- m_menuBar(0),
+ m_menuBar(nullptr),
#endif
mdiChild(mdiChild)
{
@@ -725,9 +725,9 @@ ControlContainer::~ControlContainer()
removeButtonsFromMenuBar();
#endif
delete m_menuLabel;
- m_menuLabel = 0;
+ m_menuLabel = nullptr;
delete m_controllerWidget;
- m_controllerWidget = 0;
+ m_controllerWidget = nullptr;
}
#if QT_CONFIG(menubar)
@@ -741,12 +741,12 @@ QMenuBar *QMdiSubWindowPrivate::menuBar() const
#else
Q_Q(const QMdiSubWindow);
if (!q->isMaximized() || drawTitleBarWhenMaximized() || isChildOfTabbedQMdiArea(q))
- return 0;
+ return nullptr;
if (QMainWindow *mainWindow = qobject_cast<QMainWindow *>(q->window()))
return mainWindow->menuBar();
- return 0;
+ return nullptr;
#endif
}
@@ -790,50 +790,50 @@ void ControlContainer::removeButtonsFromMenuBar(QMenuBar *menuBar)
{
if (menuBar && menuBar != m_menuBar) {
// m_menubar was deleted while sub-window was maximized
- previousRight = 0;
- previousLeft = 0;
+ previousRight = nullptr;
+ previousLeft = nullptr;
m_menuBar = menuBar;
}
if (!m_menuBar || !mdiChild || qt_widget_private(mdiChild->window())->data.in_destructor)
return;
- QMdiSubWindow *child = 0;
+ QMdiSubWindow *child = nullptr;
if (m_controllerWidget) {
QWidget *currentRight = m_menuBar->cornerWidget(Qt::TopRightCorner);
if (currentRight == m_controllerWidget) {
if (ControlElement<ControllerWidget> *ce = ptr<ControllerWidget>(previousRight)) {
if (!ce->mdiChild || !ce->mdiChild->isMaximized())
- previousRight = 0;
+ previousRight = nullptr;
else
child = ce->mdiChild;
}
m_menuBar->setCornerWidget(previousRight, Qt::TopRightCorner);
if (previousRight) {
previousRight->show();
- previousRight = 0;
+ previousRight = nullptr;
}
}
m_controllerWidget->hide();
- m_controllerWidget->setParent(0);
+ m_controllerWidget->setParent(nullptr);
}
if (m_menuLabel) {
QWidget *currentLeft = m_menuBar->cornerWidget(Qt::TopLeftCorner);
if (currentLeft == m_menuLabel) {
if (ControlElement<ControlLabel> *ce = ptr<ControlLabel>(previousLeft)) {
if (!ce->mdiChild || !ce->mdiChild->isMaximized())
- previousLeft = 0;
+ previousLeft = nullptr;
else if (!child)
child = mdiChild;
}
m_menuBar->setCornerWidget(previousLeft, Qt::TopLeftCorner);
if (previousLeft) {
previousLeft->show();
- previousLeft = 0;
+ previousLeft = nullptr;
}
}
m_menuLabel->hide();
- m_menuLabel->setParent(0);
+ m_menuLabel->setParent(nullptr);
}
m_menuBar->update();
if (child)
@@ -854,14 +854,14 @@ void ControlContainer::updateWindowIcon(const QIcon &windowIcon)
\internal
*/
QMdiSubWindowPrivate::QMdiSubWindowPrivate()
- : baseWidget(0),
- restoreFocusWidget(0),
- controlContainer(0),
+ : baseWidget(nullptr),
+ restoreFocusWidget(nullptr),
+ controlContainer(nullptr),
#if QT_CONFIG(sizegrip)
- sizeGrip(0),
+ sizeGrip(nullptr),
#endif
#if QT_CONFIG(rubberband)
- rubberBand(0),
+ rubberBand(nullptr),
#endif
userMinimumSize(0,0),
resizeEnabled(true),
@@ -926,7 +926,7 @@ void QMdiSubWindowPrivate::_q_enterInteractiveMode()
pressPos = QPoint(q->width() / 2, titleBarHeight() - 1);
} else if (actions[ResizeAction] && actions[ResizeAction] == action) {
currentOperation = q->isLeftToRight() ? BottomRightResize : BottomLeftResize;
- int offset = q->style()->pixelMetric(QStyle::PM_MdiSubWindowFrameWidth, 0, q) / 2;
+ int offset = q->style()->pixelMetric(QStyle::PM_MdiSubWindowFrameWidth, nullptr, q) / 2;
int x = q->isLeftToRight() ? q->width() - offset : offset;
pressPos = QPoint(x, q->height() - offset);
} else {
@@ -1009,8 +1009,8 @@ void QMdiSubWindowPrivate::removeBaseWidget()
lastChildWindowTitle.clear();
// QTBUG-47993: parent widget can be reset before this call
if (baseWidget->parentWidget() == q)
- baseWidget->setParent(0);
- baseWidget = 0;
+ baseWidget->setParent(nullptr);
+ baseWidget = nullptr;
isWidgetHiddenByUs = false;
}
@@ -1047,19 +1047,19 @@ void QMdiSubWindowPrivate::createSystemMenu()
systemMenu->installEventFilter(q);
const QStyle *style = q->style();
addToSystemMenu(RestoreAction, QMdiSubWindow::tr("&Restore"), SLOT(showNormal()));
- actions[RestoreAction]->setIcon(style->standardIcon(QStyle::SP_TitleBarNormalButton, 0, q));
+ actions[RestoreAction]->setIcon(style->standardIcon(QStyle::SP_TitleBarNormalButton, nullptr, q));
actions[RestoreAction]->setEnabled(false);
addToSystemMenu(MoveAction, QMdiSubWindow::tr("&Move"), SLOT(_q_enterInteractiveMode()));
addToSystemMenu(ResizeAction, QMdiSubWindow::tr("&Size"), SLOT(_q_enterInteractiveMode()));
addToSystemMenu(MinimizeAction, QMdiSubWindow::tr("Mi&nimize"), SLOT(showMinimized()));
- actions[MinimizeAction]->setIcon(style->standardIcon(QStyle::SP_TitleBarMinButton, 0, q));
+ actions[MinimizeAction]->setIcon(style->standardIcon(QStyle::SP_TitleBarMinButton, nullptr, q));
addToSystemMenu(MaximizeAction, QMdiSubWindow::tr("Ma&ximize"), SLOT(showMaximized()));
- actions[MaximizeAction]->setIcon(style->standardIcon(QStyle::SP_TitleBarMaxButton, 0, q));
+ actions[MaximizeAction]->setIcon(style->standardIcon(QStyle::SP_TitleBarMaxButton, nullptr, q));
addToSystemMenu(StayOnTopAction, QMdiSubWindow::tr("Stay on &Top"), SLOT(_q_updateStaysOnTopHint()));
actions[StayOnTopAction]->setCheckable(true);
systemMenu->addSeparator();
addToSystemMenu(CloseAction, QMdiSubWindow::tr("&Close"), SLOT(close()));
- actions[CloseAction]->setIcon(style->standardIcon(QStyle::SP_TitleBarCloseButton, 0, q));
+ actions[CloseAction]->setIcon(style->standardIcon(QStyle::SP_TitleBarCloseButton, nullptr, q));
#if !defined(QT_NO_SHORTCUT)
actions[CloseAction]->setShortcuts(QKeySequence::Close);
#endif
@@ -1461,7 +1461,7 @@ void QMdiSubWindowPrivate::setActive(bool activate, bool changeFocus)
ensureWindowState(Qt::WindowActive);
}
- int frameWidth = q->style()->pixelMetric(QStyle::PM_MdiSubWindowFrameWidth, 0, q);
+ int frameWidth = q->style()->pixelMetric(QStyle::PM_MdiSubWindowFrameWidth, nullptr, q);
int titleBarHeight = this->titleBarHeight();
QRegion windowDecoration = QRegion(0, 0, q->width(), q->height());
windowDecoration -= QRegion(frameWidth, titleBarHeight, q->width() - 2 * frameWidth,
@@ -1543,7 +1543,7 @@ QRegion QMdiSubWindowPrivate::getRegion(Operation operation) const
int width = q->width();
int height = q->height();
int titleBarHeight = this->titleBarHeight();
- int frameWidth = q->style()->pixelMetric(QStyle::PM_MdiSubWindowFrameWidth, 0, q);
+ int frameWidth = q->style()->pixelMetric(QStyle::PM_MdiSubWindowFrameWidth, nullptr, q);
int cornerConst = titleBarHeight - frameWidth;
int titleBarConst = 2 * titleBarHeight;
@@ -1738,7 +1738,7 @@ void QMdiSubWindowPrivate::sizeParameters(int *margin, int *minWidth) const
if (q->isMaximized() && !drawTitleBarWhenMaximized())
*margin = 0;
else
- *margin = q->style()->pixelMetric(QStyle::PM_MdiSubWindowFrameWidth, 0, q);
+ *margin = q->style()->pixelMetric(QStyle::PM_MdiSubWindowFrameWidth, nullptr, q);
QStyleOptionTitleBar opt = this->titleBarOptions();
int tempWidth = 0;
@@ -1767,7 +1767,7 @@ bool QMdiSubWindowPrivate::drawTitleBarWhenMaximized() const
if (isChildOfTabbedQMdiArea(q))
return false;
- if (q->style()->styleHint(QStyle::SH_Workspace_FillSpaceOnMaximize, 0, q))
+ if (q->style()->styleHint(QStyle::SH_Workspace_FillSpaceOnMaximize, nullptr, q))
return true;
#if !QT_CONFIG(menubar) || !QT_CONFIG(mainwindow)
Q_UNUSED(isChildOfQMdiSubWindow);
@@ -1833,7 +1833,7 @@ void QMdiSubWindowPrivate::removeButtonsFromMenuBar()
if (!controlContainer || isChildOfTabbedQMdiArea(q))
return;
- QMenuBar *currentMenuBar = 0;
+ QMenuBar *currentMenuBar = nullptr;
#if QT_CONFIG(mainwindow)
if (QMainWindow *mainWindow = qobject_cast<QMainWindow *>(q->window())) {
// NB! We can't use menuBar() here because that one will actually create
@@ -1863,7 +1863,7 @@ void QMdiSubWindowPrivate::updateWindowTitle(bool isRequestFromChild)
return;
}
- QWidget *titleWidget = 0;
+ QWidget *titleWidget = nullptr;
if (isRequestFromChild)
titleWidget = baseWidget;
else
@@ -2131,7 +2131,7 @@ QSize QMdiSubWindowPrivate::iconSize() const
Q_Q(const QMdiSubWindow);
if (!parent || q->windowFlags() & Qt::FramelessWindowHint)
return QSize(-1, -1);
- return QSize(q->style()->pixelMetric(QStyle::PM_MdiSubWindowMinimizedWidth, 0, q), titleBarHeight());
+ return QSize(q->style()->pixelMetric(QStyle::PM_MdiSubWindowMinimizedWidth, nullptr, q), titleBarHeight());
}
#if QT_CONFIG(sizegrip)
@@ -2212,7 +2212,7 @@ void QMdiSubWindowPrivate::updateInternalWindowTitle()
\sa QMdiArea::addSubWindow()
*/
QMdiSubWindow::QMdiSubWindow(QWidget *parent, Qt::WindowFlags flags)
- : QWidget(*new QMdiSubWindowPrivate, parent, 0)
+ : QWidget(*new QMdiSubWindowPrivate, parent, { })
{
Q_D(QMdiSubWindow);
#if QT_CONFIG(menu)
@@ -2233,7 +2233,7 @@ QMdiSubWindow::QMdiSubWindow(QWidget *parent, Qt::WindowFlags flags)
// We don't want the menu icon by default on mac.
#ifndef Q_OS_MAC
if (windowIcon().isNull())
- d->menuIcon = style()->standardIcon(QStyle::SP_TitleBarMenuButton, 0, this);
+ d->menuIcon = style()->standardIcon(QStyle::SP_TitleBarMenuButton, nullptr, this);
else
d->menuIcon = windowIcon();
#endif
@@ -2340,7 +2340,7 @@ QWidget *QMdiSubWindow::maximizedButtonsWidget() const
&& !isChildOfTabbedQMdiArea(this)) {
return d->controlContainer->controllerWidget();
}
- return 0;
+ return nullptr;
}
/*!
@@ -2353,7 +2353,7 @@ QWidget *QMdiSubWindow::maximizedSystemMenuIconWidget() const
&& !isChildOfTabbedQMdiArea(this)) {
return d->controlContainer->systemMenuLabel();
}
- return 0;
+ return nullptr;
}
/*!
@@ -2476,7 +2476,7 @@ void QMdiSubWindow::setSystemMenu(QMenu *systemMenu)
if (d->systemMenu) {
delete d->systemMenu;
- d->systemMenu = 0;
+ d->systemMenu = nullptr;
}
if (!systemMenu)
@@ -2860,7 +2860,7 @@ bool QMdiSubWindow::event(QEvent *event)
case QEvent::WindowIconChange:
d->menuIcon = windowIcon();
if (d->menuIcon.isNull())
- d->menuIcon = style()->standardIcon(QStyle::SP_TitleBarMenuButton, 0, this);
+ d->menuIcon = style()->standardIcon(QStyle::SP_TitleBarMenuButton, nullptr, this);
if (d->controlContainer)
d->controlContainer->updateWindowIcon(d->menuIcon);
if (!maximizedSystemMenuIconWidget())
@@ -3135,7 +3135,7 @@ void QMdiSubWindow::paintEvent(QPaintEvent *paintEvent)
if (isMinimized() && !d->hasBorder(d->cachedStyleOptions))
return;
- frameOptions.lineWidth = style()->pixelMetric(QStyle::PM_MdiSubWindowFrameWidth, 0, this);
+ frameOptions.lineWidth = style()->pixelMetric(QStyle::PM_MdiSubWindowFrameWidth, nullptr, this);
// ### Ensure that we do not require setting the cliprect for 4.4
if (!isMinimized() && !d->hasBorder(d->cachedStyleOptions))
@@ -3510,7 +3510,7 @@ QSize QMdiSubWindow::minimumSizeHint() const
if (d->sizeGrip && d->sizeGrip->isVisibleTo(const_cast<QMdiSubWindow *>(this)))
sizeGripHeight = d->sizeGrip->height();
else if (parent() && isMacStyle(style()) && !d->sizeGrip)
- sizeGripHeight = style()->pixelMetric(QStyle::PM_SizeGripSize, 0, this);
+ sizeGripHeight = style()->pixelMetric(QStyle::PM_SizeGripSize, nullptr, this);
minHeight = qMax(minHeight, decorationHeight + sizeGripHeight);
#endif
diff --git a/src/widgets/widgets/qmenu.cpp b/src/widgets/widgets/qmenu.cpp
index 57ef7905d9..8ba5b98fa9 100644
--- a/src/widgets/widgets/qmenu.cpp
+++ b/src/widgets/widgets/qmenu.cpp
@@ -83,7 +83,7 @@
QT_BEGIN_NAMESPACE
-QMenu *QMenuPrivate::mouseDown = 0;
+QMenu *QMenuPrivate::mouseDown = nullptr;
/* QMenu code */
// internal class used for the torn off popup
@@ -96,7 +96,7 @@ class QTornOffMenu : public QMenu
public:
QTornOffMenuPrivate(QMenu *p) : causedMenu(p), initialized(false) {
tornoff = 1;
- causedPopup.widget = 0;
+ causedPopup.widget = nullptr;
causedPopup.action = p->d_func()->causedPopup.action;
causedStack = p->d_func()->calcCausedStack();
}
@@ -106,11 +106,11 @@ class QTornOffMenu : public QMenu
QSize size = menuSize;
const QPoint p = (!initialized) ? causedMenu->pos() : q->pos();
QRect screen = popupGeometry(QDesktopWidgetPrivate::screenNumber(p));
- const int desktopFrame = q->style()->pixelMetric(QStyle::PM_MenuDesktopFrameWidth, 0, q);
- const int titleBarHeight = q->style()->pixelMetric(QStyle::PM_TitleBarHeight, 0, q);
+ const int desktopFrame = q->style()->pixelMetric(QStyle::PM_MenuDesktopFrameWidth, nullptr, q);
+ const int titleBarHeight = q->style()->pixelMetric(QStyle::PM_TitleBarHeight, nullptr, q);
if (scroll && (size.height() > screen.height() - titleBarHeight || size.width() > screen.width())) {
- const int fw = q->style()->pixelMetric(QStyle::PM_MenuPanelWidth, 0, q);
- const int hmargin = q->style()->pixelMetric(QStyle::PM_MenuHMargin, 0, q);
+ const int fw = q->style()->pixelMetric(QStyle::PM_MenuPanelWidth, nullptr, q);
+ const int hmargin = q->style()->pixelMetric(QStyle::PM_MenuHMargin, nullptr, q);
scroll->scrollFlags |= uint(QMenuPrivate::QMenuScroller::ScrollDown);
size.setWidth(qMin(actionRects.at(getLastVisibleAction()).right() + fw + hmargin + rightmargin + 1, screen.width()));
size.setHeight(screen.height() - desktopFrame * 2 - titleBarHeight);
@@ -202,15 +202,15 @@ void QMenuPrivate::init()
if (!tornPopup.isNull())
tornPopup->updateWindowTitle();
});
- q->setMouseTracking(q->style()->styleHint(QStyle::SH_Menu_MouseTracking, 0, q));
- if (q->style()->styleHint(QStyle::SH_Menu_Scrollable, 0, q)) {
+ q->setMouseTracking(q->style()->styleHint(QStyle::SH_Menu_MouseTracking, nullptr, q));
+ if (q->style()->styleHint(QStyle::SH_Menu_Scrollable, nullptr, q)) {
scroll = new QMenuPrivate::QMenuScroller;
scroll->scrollFlags = QMenuPrivate::QMenuScroller::ScrollNone;
}
sloppyState.initialize(q);
delayState.initialize(q);
- mousePopupDelay = q->style()->styleHint(QStyle::SH_Menu_SubMenuPopupDelay, 0, q);
+ mousePopupDelay = q->style()->styleHint(QStyle::SH_Menu_SubMenuPopupDelay, nullptr, q);
}
QPlatformMenu *QMenuPrivate::createPlatformMenu()
@@ -262,7 +262,7 @@ void QMenuPrivate::copyActionToPlatformItem(const QAction *action, QPlatformMenu
item->setIconSize(w->style()->pixelMetric(QStyle::PM_SmallIconSize, &opt, w));
} else {
QStyleOption opt;
- item->setIconSize(QApplication::style()->pixelMetric(QStyle::PM_SmallIconSize, &opt, 0));
+ item->setIconSize(QApplication::style()->pixelMetric(QStyle::PM_SmallIconSize, &opt, nullptr));
}
} else {
item->setIcon(QIcon());
@@ -283,7 +283,7 @@ void QMenuPrivate::copyActionToPlatformItem(const QAction *action, QPlatformMenu
action->menu()->setPlatformMenu(platformMenu->createSubMenu());
item->setMenu(action->menu()->platformMenu());
} else {
- item->setMenu(0);
+ item->setMenu(nullptr);
}
}
@@ -304,7 +304,7 @@ QPlatformMenuItem * QMenuPrivate::insertActionInPlatformMenu(const QAction *acti
int QMenuPrivate::scrollerHeight() const
{
Q_Q(const QMenu);
- return qMax(QApplication::globalStrut().height(), q->style()->pixelMetric(QStyle::PM_MenuScrollerHeight, 0, q));
+ return qMax(QApplication::globalStrut().height(), q->style()->pixelMetric(QStyle::PM_MenuScrollerHeight, nullptr, q));
}
// Windows and KDE allow menus to cover the taskbar, while GNOME and macOS
@@ -541,9 +541,9 @@ void QMenuPrivate::hideUpToMenuBar()
while(caused) {
#if QT_CONFIG(menubar)
if (QMenuBar *mb = qobject_cast<QMenuBar*>(caused)) {
- mb->d_func()->setCurrentAction(0);
+ mb->d_func()->setCurrentAction(nullptr);
mb->d_func()->setKeyboardMode(false);
- caused = 0;
+ caused = nullptr;
} else
#endif
if (QMenu *m = qobject_cast<QMenu*>(caused)) {
@@ -551,12 +551,12 @@ void QMenuPrivate::hideUpToMenuBar()
if (!m->d_func()->tornoff)
hideMenu(m);
if (!fadeMenus) // Mac doesn't clear the action until after hidden.
- m->d_func()->setCurrentAction(0);
- } else { caused = 0;
+ m->d_func()->setCurrentAction(nullptr);
+ } else { caused = nullptr;
}
}
}
- setCurrentAction(0);
+ setCurrentAction(nullptr);
}
void QMenuPrivate::hideMenu(QMenu *menu)
@@ -573,7 +573,7 @@ void QMenuPrivate::hideMenu(QMenu *menu)
QEventLoop eventLoop;
QAction *activeAction = currentAction;
- menu->setActiveAction(0);
+ menu->setActiveAction(nullptr);
QTimer::singleShot(60, &eventLoop, SLOT(quit()));
eventLoop.exec();
@@ -587,10 +587,10 @@ void QMenuPrivate::hideMenu(QMenu *menu)
blocker.unblock();
#endif // QT_CONFIG(effects)
if (activeMenu == menu)
- activeMenu = 0;
- menu->d_func()->causedPopup.action = 0;
+ activeMenu = nullptr;
+ menu->d_func()->causedPopup.action = nullptr;
menu->close();
- menu->d_func()->causedPopup.widget = 0;
+ menu->d_func()->causedPopup.widget = nullptr;
}
void QMenuPrivate::popupAction(QAction *action, int delay, bool activateFirst)
@@ -617,7 +617,7 @@ void QMenuPrivate::setSyncAction()
Q_Q(QMenu);
QAction *current = currentAction;
if(current && (!current->isEnabled() || current->menu() || current->isSeparator()))
- current = 0;
+ current = nullptr;
for(QWidget *caused = q; caused;) {
if (QMenu *m = qobject_cast<QMenu*>(caused)) {
caused = m->d_func()->causedPopup.widget;
@@ -645,7 +645,7 @@ void QMenuPrivate::setFirstActionActive()
}
QAction *act = actions.at(i);
if (!act->isSeparator() &&
- (q->style()->styleHint(QStyle::SH_Menu_AllowActiveAndDisabled, 0, q)
+ (q->style()->styleHint(QStyle::SH_Menu_AllowActiveAndDisabled, nullptr, q)
|| act->isEnabled())) {
setCurrentAction(act);
break;
@@ -661,7 +661,7 @@ void QMenuPrivate::setCurrentAction(QAction *action, int popup, SelectionReason
if (action
&& (action->isSeparator()
- || (!action->isEnabled() && !q->style()->styleHint(QStyle::SH_Menu_AllowActiveAndDisabled, 0, q))))
+ || (!action->isEnabled() && !q->style()->styleHint(QStyle::SH_Menu_AllowActiveAndDisabled, nullptr, q))))
action = nullptr;
// Reselect the currently active action in case mouse moved over other menu items when
@@ -718,8 +718,8 @@ void QMenuPrivate::setCurrentAction(QAction *action, int popup, SelectionReason
if (popup == -1) {
#if QT_CONFIG(effects)
// kill any running effect
- qFadeEffect(0);
- qScrollEffect(0);
+ qFadeEffect(nullptr);
+ qScrollEffect(nullptr);
#endif
hideMenu(hideActiveMenu);
} else if (!currentAction || !currentAction->menu()) {
@@ -869,13 +869,13 @@ QWidget *QMenuPrivate::topCausedWidget() const
QAction *QMenuPrivate::actionAt(QPoint p) const
{
if (!rect().contains(p)) //sanity check
- return 0;
+ return nullptr;
for(int i = 0; i < actionRects.count(); i++) {
if (actionRects.at(i).contains(p))
return actions.at(i);
}
- return 0;
+ return nullptr;
}
void QMenuPrivate::setOverrideMenuAction(QAction *a)
@@ -978,7 +978,7 @@ QMenuPrivate::ScrollerTearOffItem::ScrollerTearOffItem(QMenuPrivate::ScrollerTea
: QWidget(parent, f), menuPrivate(mPrivate), scrollType(type)
{
if (parent)
- setMouseTracking(parent->style()->styleHint(QStyle::SH_Menu_MouseTracking, 0, parent));
+ setMouseTracking(parent->style()->styleHint(QStyle::SH_Menu_MouseTracking, nullptr, parent));
}
void QMenuPrivate::ScrollerTearOffItem::paintEvent(QPaintEvent *e)
@@ -993,7 +993,7 @@ void QMenuPrivate::ScrollerTearOffItem::paintEvent(QPaintEvent *e)
menuPrivate->drawScroller(&p, scrollType, QRect(0, 0, width(), menuPrivate->scrollerHeight()));
//paint the tear off
if (scrollType == QMenuPrivate::ScrollerTearOffItem::ScrollUp) {
- QRect rect(0, 0, width(), parent->style()->pixelMetric(QStyle::PM_MenuTearoffHeight, 0, parent));
+ QRect rect(0, 0, width(), parent->style()->pixelMetric(QStyle::PM_MenuTearoffHeight, nullptr, parent));
if (menuPrivate->scroll && menuPrivate->scroll->scrollFlags & QMenuPrivate::QMenuScroller::ScrollUp)
rect.translate(0, menuPrivate->scrollerHeight());
menuPrivate->drawTearOff(&p, rect);
@@ -1068,8 +1068,8 @@ void QMenuPrivate::scrollMenu(QAction *action, QMenuScroller::ScrollLocation loc
int newOffset = 0;
const int topScroll = (scroll->scrollFlags & QMenuScroller::ScrollUp) ? scrollerHeight() : 0;
const int botScroll = (scroll->scrollFlags & QMenuScroller::ScrollDown) ? scrollerHeight() : 0;
- const int vmargin = q->style()->pixelMetric(QStyle::PM_MenuVMargin, 0, q);
- const int fw = q->style()->pixelMetric(QStyle::PM_MenuPanelWidth, 0, q);
+ const int vmargin = q->style()->pixelMetric(QStyle::PM_MenuVMargin, nullptr, q);
+ const int fw = q->style()->pixelMetric(QStyle::PM_MenuPanelWidth, nullptr, q);
if (location == QMenuScroller::ScrollTop) {
for(int i = 0, saccum = 0; i < actions.count(); i++) {
@@ -1110,7 +1110,7 @@ void QMenuPrivate::scrollMenu(QAction *action, QMenuScroller::ScrollLocation loc
if (!(newScrollFlags & QMenuScroller::ScrollDown) && (scroll->scrollFlags & QMenuScroller::ScrollDown)) {
newOffset = q->height() - (saccum - newOffset) - fw*2 - vmargin - topmargin - bottommargin; //last item at bottom
if (tearoff)
- newOffset -= q->style()->pixelMetric(QStyle::PM_MenuTearoffHeight, 0, q);
+ newOffset -= q->style()->pixelMetric(QStyle::PM_MenuTearoffHeight, nullptr, q);
}
if (!(newScrollFlags & QMenuScroller::ScrollUp) && (scroll->scrollFlags & QMenuScroller::ScrollUp)) {
@@ -1121,7 +1121,7 @@ void QMenuPrivate::scrollMenu(QAction *action, QMenuScroller::ScrollLocation loc
newOffset -= vmargin;
QRect screen = popupGeometry();
- const int desktopFrame = q->style()->pixelMetric(QStyle::PM_MenuDesktopFrameWidth, 0, q);
+ const int desktopFrame = q->style()->pixelMetric(QStyle::PM_MenuDesktopFrameWidth, nullptr, q);
if (q->height() < screen.height()-(desktopFrame*2)-1) {
QRect geom = q->geometry();
if (newOffset > scroll->scrollOffset && (scroll->scrollFlags & newScrollFlags & QMenuScroller::ScrollUp)) { //scroll up
@@ -1183,7 +1183,7 @@ void QMenuPrivate::scrollMenu(QMenuScroller::ScrollLocation location, bool activ
if (actionRects.at(i).isNull())
continue;
if (!act->isSeparator() &&
- (q->style()->styleHint(QStyle::SH_Menu_AllowActiveAndDisabled, 0, q)
+ (q->style()->styleHint(QStyle::SH_Menu_AllowActiveAndDisabled, nullptr, q)
|| act->isEnabled())) {
if(scroll->scrollFlags & QMenuPrivate::QMenuScroller::ScrollDown)
scrollMenu(act, QMenuPrivate::QMenuScroller::ScrollBottom, active);
@@ -1198,7 +1198,7 @@ void QMenuPrivate::scrollMenu(QMenuScroller::ScrollLocation location, bool activ
if (actionRects.at(i).isNull())
continue;
if (!act->isSeparator() &&
- (q->style()->styleHint(QStyle::SH_Menu_AllowActiveAndDisabled, 0, q)
+ (q->style()->styleHint(QStyle::SH_Menu_AllowActiveAndDisabled, nullptr, q)
|| act->isEnabled())) {
if(scroll->scrollFlags & QMenuPrivate::QMenuScroller::ScrollUp)
scrollMenu(act, QMenuPrivate::QMenuScroller::ScrollTop, active);
@@ -1219,8 +1219,8 @@ void QMenuPrivate::scrollMenu(QMenuScroller::ScrollDirection direction, bool pag
updateActionRects();
const int topScroll = (scroll->scrollFlags & QMenuScroller::ScrollUp) ? scrollerHeight() : 0;
const int botScroll = (scroll->scrollFlags & QMenuScroller::ScrollDown) ? scrollerHeight() : 0;
- const int vmargin = q->style()->pixelMetric(QStyle::PM_MenuVMargin, 0, q);
- const int fw = q->style()->pixelMetric(QStyle::PM_MenuPanelWidth, 0, q);
+ const int vmargin = q->style()->pixelMetric(QStyle::PM_MenuVMargin, nullptr, q);
+ const int fw = q->style()->pixelMetric(QStyle::PM_MenuPanelWidth, nullptr, q);
const int offset = topScroll ? topScroll-vmargin : 0;
if (direction == QMenuScroller::ScrollUp) {
for(int i = 0, saccum = 0; i < actions.count(); i++) {
@@ -1301,7 +1301,7 @@ bool QMenuPrivate::mouseEventTaken(QMouseEvent *e)
tearRect.translate(0, scrollerHeight());
q->update(tearRect);
if (tearRect.contains(pos) && hasMouseMoved(e->globalPos())) {
- setCurrentAction(0);
+ setCurrentAction(nullptr);
tearoffHighlighted = 1;
if (e->type() == QEvent::MouseButtonRelease) {
if (!tornPopup)
@@ -1320,7 +1320,7 @@ bool QMenuPrivate::mouseEventTaken(QMouseEvent *e)
for(QWidget *caused = causedPopup.widget; caused;) {
bool passOnEvent = false;
- QWidget *next_widget = 0;
+ QWidget *next_widget = nullptr;
QPoint cpos = caused->mapFromGlobal(e->globalPos());
#if QT_CONFIG(menubar)
if (QMenuBar *mb = qobject_cast<QMenuBar*>(caused)) {
@@ -1441,7 +1441,7 @@ void QMenuPrivate::activateAction(QAction *action, QAction::ActionEvent action_e
#endif
action->showStatusText(topCausedWidget());
} else {
- actionAboutToTrigger = 0;
+ actionAboutToTrigger = nullptr;
}
}
@@ -2260,7 +2260,7 @@ QAction *QMenu::actionAt(const QPoint &pt) const
{
if (QAction *ret = d_func()->actionAt(pt))
return ret;
- return 0;
+ return nullptr;
}
/*!
@@ -2382,7 +2382,7 @@ void QMenu::popup(const QPoint &p, QAction *atAction)
const QSize menuSizeHint(sizeHint());
QSize size = menuSizeHint;
- const int desktopFrame = style()->pixelMetric(QStyle::PM_MenuDesktopFrameWidth, 0, this);
+ const int desktopFrame = style()->pixelMetric(QStyle::PM_MenuDesktopFrameWidth, nullptr, this);
bool adjustToDesktop = !window()->testAttribute(Qt::WA_DontShowOnScreen);
// if the screens have very different geometries and the menu is too big, we have to recalculate
@@ -2426,7 +2426,7 @@ void QMenu::popup(const QPoint &p, QAction *atAction)
pos.setY(newY);
if (d->scroll && d->scroll->scrollFlags != QMenuPrivate::QMenuScroller::ScrollNone
- && !style()->styleHint(QStyle::SH_Menu_FillScreenWithScroll, 0, this)) {
+ && !style()->styleHint(QStyle::SH_Menu_FillScreenWithScroll, nullptr, this)) {
int below_height = above_height + d->scroll->scrollOffset;
for (int i2 = i; i2 < d->actionRects.count(); i2++)
below_height += d->actionRects.at(i2).height();
@@ -2485,7 +2485,7 @@ void QMenu::popup(const QPoint &p, QAction *atAction)
}
}
}
- const int subMenuOffset = style()->pixelMetric(QStyle::PM_SubMenuOverlap, 0, this);
+ const int subMenuOffset = style()->pixelMetric(QStyle::PM_SubMenuOverlap, nullptr, this);
QMenu *caused = qobject_cast<QMenu*>(d_func()->causedPopup.widget);
if (caused && caused->geometry().width() + menuSizeHint.width() + subMenuOffset < screen.width()) {
QRect parentActionRect(caused->d_func()->actionRect(caused->d_func()->currentAction));
@@ -2555,8 +2555,8 @@ void QMenu::popup(const QPoint &p, QAction *atAction)
qScrollEffect(this, hGuess | vGuess);
} else {
// kill any running effect
- qFadeEffect(0);
- qScrollEffect(0);
+ qFadeEffect(nullptr);
+ qScrollEffect(nullptr);
show();
}
@@ -2692,22 +2692,22 @@ void QMenu::hideEvent(QHideEvent *)
emit aboutToHide();
if (d->eventLoop)
d->eventLoop->exit();
- d->setCurrentAction(0);
+ d->setCurrentAction(nullptr);
#ifndef QT_NO_ACCESSIBILITY
QAccessibleEvent event(this, QAccessible::PopupMenuEnd);
QAccessible::updateAccessibility(&event);
#endif
#if QT_CONFIG(menubar)
if (QMenuBar *mb = qobject_cast<QMenuBar*>(d->causedPopup.widget))
- mb->d_func()->setCurrentAction(0);
+ mb->d_func()->setCurrentAction(nullptr);
#endif
if (QMenuPrivate::mouseDown == this)
QMenuPrivate::mouseDown = nullptr;
d->hasHadMouse = false;
if (d->activeMenu)
d->hideMenu(d->activeMenu);
- d->causedPopup.widget = 0;
- d->causedPopup.action = 0;
+ d->causedPopup.widget = nullptr;
+ d->causedPopup.action = nullptr;
if (d->scroll)
d->scroll->scrollTimer.stop(); //make sure the timer stops
}
@@ -2731,9 +2731,9 @@ void QMenu::paintEvent(QPaintEvent *e)
style()->drawPrimitive(QStyle::PE_PanelMenu, &menuOpt, &p, this);
//calculate the scroll up / down rect
- const int fw = style()->pixelMetric(QStyle::PM_MenuPanelWidth, 0, this);
- const int hmargin = style()->pixelMetric(QStyle::PM_MenuHMargin,0, this);
- const int vmargin = style()->pixelMetric(QStyle::PM_MenuVMargin, 0, this);
+ const int fw = style()->pixelMetric(QStyle::PM_MenuPanelWidth, nullptr, this);
+ const int hmargin = style()->pixelMetric(QStyle::PM_MenuHMargin,nullptr, this);
+ const int vmargin = style()->pixelMetric(QStyle::PM_MenuVMargin, nullptr, this);
QRect scrollUpRect, scrollDownRect;
const int leftmargin = fw + hmargin + d->leftmargin;
@@ -2753,7 +2753,7 @@ void QMenu::paintEvent(QPaintEvent *e)
QRect tearOffRect;
if (d->tearoff) {
tearOffRect.setRect(leftmargin, topmargin, contentWidth,
- style()->pixelMetric(QStyle::PM_MenuTearoffHeight, 0, this));
+ style()->pixelMetric(QStyle::PM_MenuTearoffHeight, nullptr, this));
if (d->scroll && d->scroll->scrollFlags & QMenuPrivate::QMenuScroller::ScrollUp)
tearOffRect.translate(0, d->scrollerHeight());
}
@@ -2873,7 +2873,7 @@ void QMenu::mousePressEvent(QMouseEvent *e)
&& QRect(d->noReplayFor->mapToGlobal(QPoint()), d->noReplayFor->size()).contains(e->globalPos()))
setAttribute(Qt::WA_NoMouseReplay);
if (d->eventLoop) // synchronous operation
- d->syncAction = 0;
+ d->syncAction = nullptr;
d->hideUpToMenuBar();
return;
}
@@ -2923,12 +2923,12 @@ void QMenu::changeEvent(QEvent *e)
if (e->type() == QEvent::StyleChange || e->type() == QEvent::FontChange ||
e->type() == QEvent::LayoutDirectionChange) {
d->itemsDirty = 1;
- setMouseTracking(style()->styleHint(QStyle::SH_Menu_MouseTracking, 0, this));
+ setMouseTracking(style()->styleHint(QStyle::SH_Menu_MouseTracking, nullptr, this));
if (isVisible())
resize(sizeHint());
- if (!style()->styleHint(QStyle::SH_Menu_Scrollable, 0, this)) {
+ if (!style()->styleHint(QStyle::SH_Menu_Scrollable, nullptr, this)) {
delete d->scroll;
- d->scroll = 0;
+ d->scroll = nullptr;
} else if (!d->scroll) {
d->scroll = new QMenuPrivate::QMenuScroller;
d->scroll->scrollFlags = QMenuPrivate::QMenuScroller::ScrollNone;
@@ -3097,7 +3097,7 @@ void QMenu::keyPressEvent(QKeyEvent *e)
case Qt::Key_Up:
case Qt::Key_Down: {
key_consumed = true;
- QAction *nextAction = 0;
+ QAction *nextAction = nullptr;
QMenuPrivate::QMenuScroller::ScrollLocation scroll_loc = QMenuPrivate::QMenuScroller::ScrollStay;
if (!d->currentAction) {
if(key == Qt::Key_Down) {
@@ -3106,7 +3106,7 @@ void QMenu::keyPressEvent(QKeyEvent *e)
if (d->actionRects.at(i).isNull())
continue;
if (!act->isSeparator() &&
- (style()->styleHint(QStyle::SH_Menu_AllowActiveAndDisabled, 0, this)
+ (style()->styleHint(QStyle::SH_Menu_AllowActiveAndDisabled, nullptr, this)
|| act->isEnabled())) {
nextAction = act;
break;
@@ -3118,7 +3118,7 @@ void QMenu::keyPressEvent(QKeyEvent *e)
if (d->actionRects.at(i).isNull())
continue;
if (!act->isSeparator() &&
- (style()->styleHint(QStyle::SH_Menu_AllowActiveAndDisabled, 0, this)
+ (style()->styleHint(QStyle::SH_Menu_AllowActiveAndDisabled, nullptr, this)
|| act->isEnabled())) {
nextAction = act;
break;
@@ -3132,7 +3132,7 @@ void QMenu::keyPressEvent(QKeyEvent *e)
if (key == Qt::Key_Up) {
for(int next_i = i-1; true; next_i--) {
if (next_i == -1) {
- if(!style()->styleHint(QStyle::SH_Menu_SelectionWrap, 0, this))
+ if (!style()->styleHint(QStyle::SH_Menu_SelectionWrap, nullptr, this))
break;
if (d->scroll)
scroll_loc = QMenuPrivate::QMenuScroller::ScrollBottom;
@@ -3145,13 +3145,13 @@ void QMenu::keyPressEvent(QKeyEvent *e)
continue;
if (next->isSeparator() ||
(!next->isEnabled() &&
- !style()->styleHint(QStyle::SH_Menu_AllowActiveAndDisabled, 0, this)))
+ !style()->styleHint(QStyle::SH_Menu_AllowActiveAndDisabled, nullptr, this)))
continue;
nextAction = next;
if (d->scroll && (d->scroll->scrollFlags & QMenuPrivate::QMenuScroller::ScrollUp)) {
int topVisible = d->scrollerHeight();
if (d->tearoff)
- topVisible += style()->pixelMetric(QStyle::PM_MenuTearoffHeight, 0, this);
+ topVisible += style()->pixelMetric(QStyle::PM_MenuTearoffHeight, nullptr, this);
if (((y + d->scroll->scrollOffset) - topVisible) <= d->actionRects.at(next_i).height())
scroll_loc = QMenuPrivate::QMenuScroller::ScrollTop;
}
@@ -3163,7 +3163,7 @@ void QMenu::keyPressEvent(QKeyEvent *e)
y += d->actionRects.at(i).height();
for(int next_i = i+1; true; next_i++) {
if (next_i == d->actionRects.count()) {
- if(!style()->styleHint(QStyle::SH_Menu_SelectionWrap, 0, this))
+ if (!style()->styleHint(QStyle::SH_Menu_SelectionWrap, nullptr, this))
break;
if (d->scroll)
scroll_loc = QMenuPrivate::QMenuScroller::ScrollTop;
@@ -3176,7 +3176,7 @@ void QMenu::keyPressEvent(QKeyEvent *e)
continue;
if (next->isSeparator() ||
(!next->isEnabled() &&
- !style()->styleHint(QStyle::SH_Menu_AllowActiveAndDisabled, 0, this)))
+ !style()->styleHint(QStyle::SH_Menu_AllowActiveAndDisabled, nullptr, this)))
continue;
nextAction = next;
if (d->scroll && (d->scroll->scrollFlags & QMenuPrivate::QMenuScroller::ScrollDown)) {
@@ -3184,7 +3184,7 @@ void QMenu::keyPressEvent(QKeyEvent *e)
if (d->scroll->scrollFlags & QMenuPrivate::QMenuScroller::ScrollUp)
bottomVisible -= d->scrollerHeight();
if (d->tearoff)
- bottomVisible -= style()->pixelMetric(QStyle::PM_MenuTearoffHeight, 0, this);
+ bottomVisible -= style()->pixelMetric(QStyle::PM_MenuTearoffHeight, nullptr, this);
if ((y + d->scroll->scrollOffset + d->actionRects.at(next_i).height()) > bottomVisible)
scroll_loc = QMenuPrivate::QMenuScroller::ScrollBottom;
}
@@ -3214,7 +3214,7 @@ void QMenu::keyPressEvent(QKeyEvent *e)
Q_FALLTHROUGH();
case Qt::Key_Left: {
if (d->currentAction && !d->scroll) {
- QAction *nextAction = 0;
+ QAction *nextAction = nullptr;
if (key == Qt::Key_Left) {
QRect actionR = d->actionRect(d->currentAction);
for(int x = actionR.left()-1; !nextAction && x >= 0; x--)
@@ -3243,7 +3243,7 @@ void QMenu::keyPressEvent(QKeyEvent *e)
break;
key_consumed = true;
- if (style()->styleHint(QStyle::SH_MenuBar_AltKeyNavigation, 0, this))
+ if (style()->styleHint(QStyle::SH_MenuBar_AltKeyNavigation, nullptr, this))
{
d->hideMenu(this);
#if QT_CONFIG(menubar)
@@ -3255,7 +3255,7 @@ void QMenu::keyPressEvent(QKeyEvent *e)
break;
case Qt::Key_Space:
- if (!style()->styleHint(QStyle::SH_Menu_SpaceActivatesItem, 0, this))
+ if (!style()->styleHint(QStyle::SH_Menu_SpaceActivatesItem, nullptr, this))
break;
// for motif, fall through
Q_FALLTHROUGH();
@@ -3321,8 +3321,8 @@ void QMenu::keyPressEvent(QKeyEvent *e)
if ((!e->modifiers() || e->modifiers() == Qt::AltModifier || e->modifiers() == Qt::ShiftModifier) &&
e->text().length()==1) {
bool activateAction = false;
- QAction *nextAction = 0;
- if (style()->styleHint(QStyle::SH_Menu_KeyboardSearch, 0, this) && !e->modifiers()) {
+ QAction *nextAction = nullptr;
+ if (style()->styleHint(QStyle::SH_Menu_KeyboardSearch, nullptr, this) && !e->modifiers()) {
int best_match_count = 0;
d->searchBufferTimer.start(2000, this);
d->searchBuffer += e->text();
@@ -3345,7 +3345,7 @@ void QMenu::keyPressEvent(QKeyEvent *e)
#ifndef QT_NO_SHORTCUT
else {
int clashCount = 0;
- QAction *first = 0, *currentSelected = 0, *firstAfterCurrent = 0;
+ QAction *first = nullptr, *currentSelected = nullptr, *firstAfterCurrent = nullptr;
QChar c = e->text().at(0).toUpper();
for(int i = 0; i < d->actions.size(); ++i) {
if (d->actionRects.at(i).isNull())
@@ -3434,7 +3434,7 @@ void QMenu::mouseMoveEvent(QMouseEvent *e)
QMenuPrivate::mouseDown = this;
if (d->activeMenu)
- d->activeMenu->d_func()->setCurrentAction(0);
+ d->activeMenu->d_func()->setCurrentAction(nullptr);
QMenuSloppyState::MouseEventResult sloppyEventResult = d->sloppyState.processMouseEvent(e->localPos(), action, d->currentAction);
if (sloppyEventResult == QMenuSloppyState::EventShouldBePropagated) {
@@ -3464,7 +3464,7 @@ void QMenu::leaveEvent(QEvent *)
Q_D(QMenu);
d->hasReceievedEnter = false;
if (!d->activeMenu && d->currentAction)
- setActiveAction(0);
+ setActiveAction(nullptr);
}
/*!
@@ -3527,7 +3527,7 @@ void QMenu::actionEvent(QActionEvent *e)
} else if (e->type() == QEvent::ActionRemoved) {
e->action()->disconnect(this);
if (e->action() == d->currentAction)
- d->currentAction = 0;
+ d->currentAction = nullptr;
if (QWidgetAction *wa = qobject_cast<QWidgetAction *>(e->action())) {
if (QWidget *widget = d->widgetItems.value(wa)) {
#ifdef Q_OS_OSX
@@ -3603,7 +3603,7 @@ void QMenu::internalDelayedPopup()
#endif
screen = d->popupGeometry(QDesktopWidgetPrivate::screenNumber(pos()));
- int subMenuOffset = style()->pixelMetric(QStyle::PM_SubMenuOverlap, 0, this);
+ int subMenuOffset = style()->pixelMetric(QStyle::PM_SubMenuOverlap, nullptr, this);
const QRect actionRect(d->actionRect(d->currentAction));
QPoint subMenuPos(mapToGlobal(QPoint(actionRect.right() + subMenuOffset + 1, actionRect.top())));
if (subMenuPos.x() > screen.right())
diff --git a/src/widgets/widgets/qmenubar.cpp b/src/widgets/widgets/qmenubar.cpp
index 7a751597bc..ccd91ebee1 100644
--- a/src/widgets/widgets/qmenubar.cpp
+++ b/src/widgets/widgets/qmenubar.cpp
@@ -90,7 +90,7 @@ QMenuBarExtension::QMenuBarExtension(QWidget *parent)
#if QT_CONFIG(menu)
setPopupMode(QToolButton::InstantPopup);
#endif
- setIcon(style()->standardIcon(QStyle::SP_ToolBarHorizontalExtensionButton, 0, parentWidget()));
+ setIcon(style()->standardIcon(QStyle::SP_ToolBarHorizontalExtensionButton, nullptr, parentWidget()));
}
void QMenuBarExtension::paintEvent(QPaintEvent *)
@@ -106,7 +106,7 @@ void QMenuBarExtension::paintEvent(QPaintEvent *)
QSize QMenuBarExtension::sizeHint() const
{
- int ext = style()->pixelMetric(QStyle::PM_ToolBarExtensionExtent, 0, parentWidget());
+ int ext = style()->pixelMetric(QStyle::PM_ToolBarExtensionExtent, nullptr, parentWidget());
return QSize(ext, ext);
}
@@ -120,14 +120,14 @@ QAction *QMenuBarPrivate::actionAt(QPoint p) const
if(actionRect(actions.at(i)).contains(p))
return actions.at(i);
}
- return 0;
+ return nullptr;
}
QRect QMenuBarPrivate::menuRect(bool extVisible) const
{
Q_Q(const QMenuBar);
- int hmargin = q->style()->pixelMetric(QStyle::PM_MenuBarPanelWidth, 0, q);
+ int hmargin = q->style()->pixelMetric(QStyle::PM_MenuBarPanelWidth, nullptr, q);
QRect result = q->rect();
result.adjust(hmargin, 0, -hmargin, 0);
@@ -167,13 +167,13 @@ void QMenuBarPrivate::updateGeometries()
Q_Q(QMenuBar);
if(!itemsDirty)
return;
- int q_width = q->width()-(q->style()->pixelMetric(QStyle::PM_MenuBarPanelWidth, 0, q)*2);
+ int q_width = q->width()-(q->style()->pixelMetric(QStyle::PM_MenuBarPanelWidth, nullptr, q)*2);
int q_start = -1;
if(leftWidget || rightWidget) {
- int vmargin = q->style()->pixelMetric(QStyle::PM_MenuBarVMargin, 0, q)
- + q->style()->pixelMetric(QStyle::PM_MenuBarPanelWidth, 0, q);
- int hmargin = q->style()->pixelMetric(QStyle::PM_MenuBarHMargin, 0, q)
- + q->style()->pixelMetric(QStyle::PM_MenuBarPanelWidth, 0, q);
+ int vmargin = q->style()->pixelMetric(QStyle::PM_MenuBarVMargin, nullptr, q)
+ + q->style()->pixelMetric(QStyle::PM_MenuBarPanelWidth, nullptr, q);
+ int hmargin = q->style()->pixelMetric(QStyle::PM_MenuBarHMargin, nullptr, q)
+ + q->style()->pixelMetric(QStyle::PM_MenuBarPanelWidth, nullptr, q);
if (leftWidget && leftWidget->isVisible()) {
QSize sz = leftWidget->sizeHint();
q_width -= sz.width();
@@ -198,7 +198,7 @@ void QMenuBarPrivate::updateGeometries()
}
#endif
calcActionRects(q_width, q_start);
- currentAction = 0;
+ currentAction = nullptr;
#ifndef QT_NO_SHORTCUT
if(itemsDirty) {
for(int j = 0; j < shortcutIndexMap.size(); ++j)
@@ -246,7 +246,7 @@ void QMenuBarPrivate::updateGeometries()
pop->clear();
pop->addActions(hiddenActions);
- int vmargin = q->style()->pixelMetric(QStyle::PM_MenuBarVMargin, 0, q);
+ int vmargin = q->style()->pixelMetric(QStyle::PM_MenuBarVMargin, nullptr, q);
int x = q->isRightToLeft()
? menuRect.left() - extension->sizeHint().width() + 1
: menuRect.right();
@@ -285,8 +285,8 @@ void QMenuBarPrivate::focusFirstAction()
void QMenuBarPrivate::setKeyboardMode(bool b)
{
Q_Q(QMenuBar);
- if (b && !q->style()->styleHint(QStyle::SH_MenuBar_AltKeyNavigation, 0, q)) {
- setCurrentAction(0);
+ if (b && !q->style()->styleHint(QStyle::SH_MenuBar_AltKeyNavigation, nullptr, q)) {
+ setCurrentAction(nullptr);
return;
}
keyboardState = b;
@@ -298,11 +298,11 @@ void QMenuBarPrivate::setKeyboardMode(bool b)
q->setFocus(Qt::MenuBarFocusReason);
} else {
if(!popupState)
- setCurrentAction(0);
+ setCurrentAction(nullptr);
if(keyboardFocusWidget) {
if (QApplication::focusWidget() == q)
keyboardFocusWidget->setFocus(Qt::MenuBarFocusReason);
- keyboardFocusWidget = 0;
+ keyboardFocusWidget = nullptr;
}
}
q->update();
@@ -324,15 +324,10 @@ void QMenuBarPrivate::popupAction(QAction *action, bool activateFirst)
QPoint pos(q->mapToGlobal(QPoint(adjustedActionRect.left(), adjustedActionRect.bottom() + 1)));
QSize popup_size = activeMenu->sizeHint();
//we put the popup menu on the screen containing the bottom-center of the action rect
- QScreen *popupScreen = q->window()->windowHandle()->screen();
- QPoint bottomMiddlePos = pos + QPoint(adjustedActionRect.width() / 2, 0);
- const auto &siblings = popupScreen->virtualSiblings();
- for (QScreen *sibling : siblings) {
- if (sibling->geometry().contains(bottomMiddlePos)) {
- popupScreen = sibling;
- break;
- }
- }
+ QScreen *menubarScreen = q->window()->windowHandle()->screen();
+ QScreen *popupScreen = menubarScreen->virtualSiblingAt(pos + QPoint(adjustedActionRect.width() / 2, 0));
+ if (!popupScreen)
+ popupScreen = menubarScreen;
QRect screenRect = popupScreen->geometry();
pos = QPoint(qMax(pos.x(), screenRect.x()), qMax(pos.y(), screenRect.y()));
const bool fitUp = (pos.y() - popup_size.height() >= screenRect.top());
@@ -377,9 +372,9 @@ void QMenuBarPrivate::setCurrentAction(QAction *action, bool popup, bool activat
doChildEffects = (popup && !activeMenu);
Q_Q(QMenuBar);
- QWidget *fw = 0;
+ QWidget *fw = nullptr;
if(QMenu *menu = activeMenu) {
- activeMenu = 0;
+ activeMenu = nullptr;
if (popup) {
fw = q->window()->focusWidget();
q->setFocus(Qt::NoFocusReason);
@@ -424,14 +419,14 @@ void QMenuBarPrivate::calcActionRects(int max_width, int start) const
const QStyle *style = q->style();
- const int itemSpacing = style->pixelMetric(QStyle::PM_MenuBarItemSpacing, 0, q);
+ const int itemSpacing = style->pixelMetric(QStyle::PM_MenuBarItemSpacing, nullptr, q);
int max_item_height = 0, separator = -1, separator_start = 0, separator_len = 0;
//calculate size
const QFontMetrics fm = q->fontMetrics();
- const int hmargin = style->pixelMetric(QStyle::PM_MenuBarHMargin, 0, q),
- vmargin = style->pixelMetric(QStyle::PM_MenuBarVMargin, 0, q),
- icone = style->pixelMetric(QStyle::PM_SmallIconSize, 0, q);
+ const int hmargin = style->pixelMetric(QStyle::PM_MenuBarHMargin, nullptr, q),
+ vmargin = style->pixelMetric(QStyle::PM_MenuBarVMargin, nullptr, q),
+ icone = style->pixelMetric(QStyle::PM_SmallIconSize, nullptr, q);
for(int i = 0; i < actions.count(); i++) {
QAction *action = actions.at(i);
if(!action->isVisible())
@@ -441,7 +436,7 @@ void QMenuBarPrivate::calcActionRects(int max_width, int start) const
//calc what I think the size is..
if(action->isSeparator()) {
- if (style->styleHint(QStyle::SH_DrawMenuBarSeparator, 0, q))
+ if (style->styleHint(QStyle::SH_DrawMenuBarSeparator, nullptr, q))
separator = i;
continue; //we don't really position these!
} else {
@@ -475,7 +470,7 @@ void QMenuBarPrivate::calcActionRects(int max_width, int start) const
}
//calculate position
- const int fw = q->style()->pixelMetric(QStyle::PM_MenuBarPanelWidth, 0, q);
+ const int fw = q->style()->pixelMetric(QStyle::PM_MenuBarPanelWidth, nullptr, q);
int x = fw + ((start == -1) ? hmargin : start) + itemSpacing;
int y = fw + vmargin;
for(int i = 0; i < actions.count(); i++) {
@@ -708,7 +703,7 @@ void QMenuBarPrivate::init()
q->hide();
q->setBackgroundRole(QPalette::Button);
handleReparent();
- q->setMouseTracking(q->style()->styleHint(QStyle::SH_MenuBar_MouseTracking, 0, q));
+ q->setMouseTracking(q->style()->styleHint(QStyle::SH_MenuBar_MouseTracking, nullptr, q));
extension = new QMenuBarExtension(q);
extension->setFocusPolicy(Qt::NoFocus);
@@ -720,7 +715,7 @@ QAction *QMenuBarPrivate::getNextAction(const int _start, const int increment) c
{
Q_Q(const QMenuBar);
const_cast<QMenuBarPrivate*>(this)->updateGeometries();
- bool allowActiveAndDisabled = q->style()->styleHint(QStyle::SH_Menu_AllowActiveAndDisabled, 0, q);
+ bool allowActiveAndDisabled = q->style()->styleHint(QStyle::SH_Menu_AllowActiveAndDisabled, nullptr, q);
const int start = (_start == -1 && increment == -1) ? actions.count() : _start;
const int end = increment == -1 ? 0 : actions.count() - 1;
@@ -734,13 +729,13 @@ QAction *QMenuBarPrivate::getNextAction(const int _start, const int increment) c
if (_start != -1) //let's try from the beginning or the end
return getNextAction(-1, increment);
- return 0;
+ return nullptr;
}
/*!
Constructs a menu bar with parent \a parent.
*/
-QMenuBar::QMenuBar(QWidget *parent) : QWidget(*new QMenuBarPrivate, parent, 0)
+QMenuBar::QMenuBar(QWidget *parent) : QWidget(*new QMenuBarPrivate, parent, { })
{
Q_D(QMenuBar);
d->init();
@@ -754,7 +749,7 @@ QMenuBar::~QMenuBar()
{
Q_D(QMenuBar);
delete d->platformMenuBar;
- d->platformMenuBar = 0;
+ d->platformMenuBar = nullptr;
}
/*!
@@ -1007,7 +1002,7 @@ void QMenuBar::paintEvent(QPaintEvent *e)
style()->drawControl(QStyle::CE_MenuBarItem, &opt, &p, this);
}
//draw border
- if(int fw = style()->pixelMetric(QStyle::PM_MenuBarPanelWidth, 0, this)) {
+ if (int fw = style()->pixelMetric(QStyle::PM_MenuBarPanelWidth, nullptr, this)) {
QRegion borderReg;
borderReg += QRect(0, 0, fw, height()); //left
borderReg += QRect(width()-fw, 0, fw, height()); //right
@@ -1060,7 +1055,7 @@ void QMenuBar::mousePressEvent(QMouseEvent *e)
QAction *action = d->actionAt(e->pos());
if (!action || !d->isVisible(action) || !action->isEnabled()) {
- d->setCurrentAction(0);
+ d->setCurrentAction(nullptr);
#if QT_CONFIG(whatsthis)
if (QWhatsThis::inWhatsThisMode())
QWhatsThis::showText(e->globalPos(), d->whatsThis, this);
@@ -1070,7 +1065,7 @@ void QMenuBar::mousePressEvent(QMouseEvent *e)
if(d->currentAction == action && d->popupState) {
if(QMenu *menu = d->activeMenu) {
- d->activeMenu = 0;
+ d->activeMenu = nullptr;
menu->setAttribute(Qt::WA_NoMouseReplay);
menu->hide();
}
@@ -1130,7 +1125,7 @@ void QMenuBar::keyPressEvent(QKeyEvent *e)
case Qt::Key_Enter:
case Qt::Key_Space:
case Qt::Key_Return: {
- if(!style()->styleHint(QStyle::SH_MenuBar_AltKeyNavigation, 0, this) || !d->currentAction)
+ if (!style()->styleHint(QStyle::SH_MenuBar_AltKeyNavigation, nullptr, this) || !d->currentAction)
break;
if(d->currentAction->menu()) {
d->popupAction(d->currentAction, true);
@@ -1159,7 +1154,7 @@ void QMenuBar::keyPressEvent(QKeyEvent *e)
#ifndef QT_NO_SHORTCUT
if (!key_consumed && e->matches(QKeySequence::Cancel)) {
- d->setCurrentAction(0);
+ d->setCurrentAction(nullptr);
d->setKeyboardMode(false);
key_consumed = true;
}
@@ -1169,7 +1164,7 @@ void QMenuBar::keyPressEvent(QKeyEvent *e)
(!e->modifiers() ||
(e->modifiers()&(Qt::MetaModifier|Qt::AltModifier))) && e->text().length()==1 && !d->popupState) {
int clashCount = 0;
- QAction *first = 0, *currentSelected = 0, *firstAfterCurrent = 0;
+ QAction *first = nullptr, *currentSelected = nullptr, *firstAfterCurrent = nullptr;
{
const QChar c = e->text().at(0).toUpper();
for(int i = 0; i < d->actions.size(); ++i) {
@@ -1193,7 +1188,7 @@ void QMenuBar::keyPressEvent(QKeyEvent *e)
}
}
}
- QAction *next_action = 0;
+ QAction *next_action = nullptr;
if(clashCount >= 1) {
if(clashCount == 1 || !d->currentAction || (currentSelected && !firstAfterCurrent))
next_action = first;
@@ -1239,14 +1234,14 @@ void QMenuBar::leaveEvent(QEvent *)
{
Q_D(QMenuBar);
if((!hasFocus() && !d->popupState) ||
- (d->currentAction && d->currentAction->menu() == 0))
- d->setCurrentAction(0);
+ (d->currentAction && d->currentAction->menu() == nullptr))
+ d->setCurrentAction(nullptr);
}
QPlatformMenu *QMenuBarPrivate::getPlatformMenu(const QAction *action)
{
if (!action || !action->menu())
- return 0;
+ return nullptr;
QPlatformMenu *platformMenu = action->menu()->platformMenu();
if (!platformMenu && platformMenuBar) {
@@ -1359,7 +1354,7 @@ void QMenuBar::focusOutEvent(QFocusEvent *)
{
Q_D(QMenuBar);
if(!d->popupState) {
- d->setCurrentAction(0);
+ d->setCurrentAction(nullptr);
d->setKeyboardMode(false);
}
}
@@ -1372,7 +1367,7 @@ void QMenuBar::timerEvent (QTimerEvent *e)
Q_D(QMenuBar);
if (e->timerId() == d->autoReleaseTimer.timerId()) {
d->autoReleaseTimer.stop();
- d->setCurrentAction(0);
+ d->setCurrentAction(nullptr);
}
QWidget::timerEvent(e);
}
@@ -1426,7 +1421,7 @@ void QMenuBarPrivate::handleReparent()
newWindow->createWinId();
platformMenuBar->handleReparent(newWindow->windowHandle());
} else {
- platformMenuBar->handleReparent(0);
+ platformMenuBar->handleReparent(nullptr);
}
}
}
@@ -1439,7 +1434,7 @@ void QMenuBar::changeEvent(QEvent *e)
Q_D(QMenuBar);
if(e->type() == QEvent::StyleChange) {
d->itemsDirty = true;
- setMouseTracking(style()->styleHint(QStyle::SH_MenuBar_MouseTracking, 0, this));
+ setMouseTracking(style()->styleHint(QStyle::SH_MenuBar_MouseTracking, nullptr, this));
if(parentWidget())
resize(parentWidget()->width(), heightForWidth(parentWidget()->width()));
d->updateGeometries();
@@ -1548,7 +1543,7 @@ bool QMenuBar::eventFilter(QObject *object, QEvent *event)
d->platformMenuBar->handleReparent(handle);
}
- if (style()->styleHint(QStyle::SH_MenuBar_AltKeyNavigation, 0, this)) {
+ if (style()->styleHint(QStyle::SH_MenuBar_AltKeyNavigation, nullptr, this)) {
if (d->altPressed) {
switch (event->type()) {
case QEvent::KeyPress:
@@ -1624,10 +1619,10 @@ QSize QMenuBar::minimumSizeHint() const
ensurePolished();
QSize ret(0, 0);
const_cast<QMenuBarPrivate*>(d)->updateGeometries();
- const int hmargin = style()->pixelMetric(QStyle::PM_MenuBarHMargin, 0, this);
- const int vmargin = style()->pixelMetric(QStyle::PM_MenuBarVMargin, 0, this);
- int fw = style()->pixelMetric(QStyle::PM_MenuBarPanelWidth, 0, this);
- int spaceBelowMenuBar = style()->styleHint(QStyle::SH_MainWindow_SpaceBelowMenuBar, 0, this);
+ const int hmargin = style()->pixelMetric(QStyle::PM_MenuBarHMargin, nullptr, this);
+ const int vmargin = style()->pixelMetric(QStyle::PM_MenuBarVMargin, nullptr, this);
+ int fw = style()->pixelMetric(QStyle::PM_MenuBarPanelWidth, nullptr, this);
+ int spaceBelowMenuBar = style()->styleHint(QStyle::SH_MainWindow_SpaceBelowMenuBar, nullptr, this);
if(as_gui_menubar) {
int w = parentWidget() ? parentWidget()->width() : QDesktopWidgetPrivate::width();
d->calcActionRects(w - (2 * fw), 0);
@@ -1676,10 +1671,10 @@ QSize QMenuBar::sizeHint() const
ensurePolished();
QSize ret(0, 0);
const_cast<QMenuBarPrivate*>(d)->updateGeometries();
- const int hmargin = style()->pixelMetric(QStyle::PM_MenuBarHMargin, 0, this);
- const int vmargin = style()->pixelMetric(QStyle::PM_MenuBarVMargin, 0, this);
- int fw = style()->pixelMetric(QStyle::PM_MenuBarPanelWidth, 0, this);
- int spaceBelowMenuBar = style()->styleHint(QStyle::SH_MainWindow_SpaceBelowMenuBar, 0, this);
+ const int hmargin = style()->pixelMetric(QStyle::PM_MenuBarHMargin, nullptr, this);
+ const int vmargin = style()->pixelMetric(QStyle::PM_MenuBarVMargin, nullptr, this);
+ int fw = style()->pixelMetric(QStyle::PM_MenuBarPanelWidth, nullptr, this);
+ int spaceBelowMenuBar = style()->styleHint(QStyle::SH_MainWindow_SpaceBelowMenuBar, nullptr, this);
if(as_gui_menubar) {
const int w = parentWidget() ? parentWidget()->width() : QDesktopWidgetPrivate::width();
d->calcActionRects(w - (2 * fw), 0);
@@ -1728,9 +1723,9 @@ int QMenuBar::heightForWidth(int) const
const_cast<QMenuBarPrivate*>(d)->updateGeometries();
int height = 0;
- const int vmargin = style()->pixelMetric(QStyle::PM_MenuBarVMargin, 0, this);
- int fw = style()->pixelMetric(QStyle::PM_MenuBarPanelWidth, 0, this);
- int spaceBelowMenuBar = style()->styleHint(QStyle::SH_MainWindow_SpaceBelowMenuBar, 0, this);
+ const int vmargin = style()->pixelMetric(QStyle::PM_MenuBarVMargin, nullptr, this);
+ int fw = style()->pixelMetric(QStyle::PM_MenuBarPanelWidth, nullptr, this);
+ int spaceBelowMenuBar = style()->styleHint(QStyle::SH_MainWindow_SpaceBelowMenuBar, nullptr, this);
if(as_gui_menubar) {
for (int i = 0; i < d->actionRects.count(); ++i)
height = qMax(height, d->actionRects.at(i).height());
@@ -1776,7 +1771,7 @@ void QMenuBarPrivate::_q_internalShortcutActivated(int id)
activateAction(act, QAction::Trigger);
//100 is the same as the default value in QPushButton::animateClick
autoReleaseTimer.start(100, q);
- } else if (act && q->style()->styleHint(QStyle::SH_MenuBar_AltKeyNavigation, 0, q)) {
+ } else if (act && q->style()->styleHint(QStyle::SH_MenuBar_AltKeyNavigation, nullptr, q)) {
// When we open a menu using a shortcut, we should end up in keyboard state
setKeyboardMode(true);
}
@@ -1842,7 +1837,7 @@ void QMenuBar::setCornerWidget(QWidget *w, Qt::Corner corner)
QWidget *QMenuBar::cornerWidget(Qt::Corner corner) const
{
Q_D(const QMenuBar);
- QWidget *w = 0;
+ QWidget *w = nullptr;
switch(corner) {
case Qt::TopLeftCorner:
w = d->leftWidget;
@@ -1881,7 +1876,7 @@ void QMenuBar::setNativeMenuBar(bool nativeMenuBar)
if (nativeMenuBar != bool(d->platformMenuBar)) {
if (!nativeMenuBar) {
delete d->platformMenuBar;
- d->platformMenuBar = 0;
+ d->platformMenuBar = nullptr;
} else {
if (!d->platformMenuBar)
d->platformMenuBar = QGuiApplicationPrivate::platformTheme()->createPlatformMenuBar();
diff --git a/src/widgets/widgets/qplaintextedit.cpp b/src/widgets/widgets/qplaintextedit.cpp
index e8da720b58..0bfaa767c6 100644
--- a/src/widgets/widgets/qplaintextedit.cpp
+++ b/src/widgets/widgets/qplaintextedit.cpp
@@ -81,7 +81,7 @@ class QPlainTextDocumentLayoutPrivate : public QAbstractTextDocumentLayoutPrivat
Q_DECLARE_PUBLIC(QPlainTextDocumentLayout)
public:
QPlainTextDocumentLayoutPrivate() {
- mainViewPrivate = 0;
+ mainViewPrivate = nullptr;
width = 0;
maximumWidth = 0;
maximumWidthBlockNumber = 0;
@@ -755,7 +755,7 @@ void QPlainTextEditPrivate::updateViewport()
}
QPlainTextEditPrivate::QPlainTextEditPrivate()
- : control(0),
+ : control(nullptr),
tabChangesFocus(false),
lineWrap(QPlainTextEdit::WidgetWidth),
wordWrap(QTextOption::WrapAtWordBoundaryOrAnywhere),
@@ -1302,7 +1302,7 @@ QPlainTextEdit::~QPlainTextEdit()
Q_D(QPlainTextEdit);
if (d->documentLayoutPtr) {
if (d->documentLayoutPtr->priv()->mainViewPrivate == d)
- d->documentLayoutPtr->priv()->mainViewPrivate = 0;
+ d->documentLayoutPtr->priv()->mainViewPrivate = nullptr;
}
}
@@ -1321,7 +1321,7 @@ QPlainTextEdit::~QPlainTextEdit()
void QPlainTextEdit::setDocument(QTextDocument *document)
{
Q_D(QPlainTextEdit);
- QPlainTextDocumentLayout *documentLayout = 0;
+ QPlainTextDocumentLayout *documentLayout = nullptr;
if (!document) {
document = new QTextDocument(d->control);
@@ -1891,7 +1891,7 @@ void QPlainTextEditPrivate::relayoutDocument()
int width = viewport->width();
- if (documentLayout->priv()->mainViewPrivate == 0
+ if (documentLayout->priv()->mainViewPrivate == nullptr
|| documentLayout->priv()->mainViewPrivate == this
|| width > documentLayout->textWidth()) {
documentLayout->priv()->mainViewPrivate = this;
diff --git a/src/widgets/widgets/qprogressbar.cpp b/src/widgets/widgets/qprogressbar.cpp
index 56253b8e44..04241fda09 100644
--- a/src/widgets/widgets/qprogressbar.cpp
+++ b/src/widgets/widgets/qprogressbar.cpp
@@ -234,7 +234,7 @@ bool QProgressBarPrivate::repaintRequired() const
*/
QProgressBar::QProgressBar(QWidget *parent)
- : QWidget(*(new QProgressBarPrivate), parent, 0)
+ : QWidget(*(new QProgressBarPrivate), parent, { })
{
d_func()->init();
}
diff --git a/src/widgets/widgets/qpushbutton.cpp b/src/widgets/widgets/qpushbutton.cpp
index f48b5706f7..b0d3ba51f9 100644
--- a/src/widgets/widgets/qpushbutton.cpp
+++ b/src/widgets/widgets/qpushbutton.cpp
@@ -297,7 +297,7 @@ QDialog *QPushButtonPrivate::dialogParent() const
if (const QDialog *dialog = qobject_cast<const QDialog *>(p))
return const_cast<QDialog *>(dialog);
}
- return 0;
+ return nullptr;
}
#endif
@@ -353,7 +353,7 @@ bool QPushButton::autoDefault() const
{
Q_D(const QPushButton);
if(d->autoDefault == QPushButtonPrivate::Auto)
- return ( d->dialogParent() != 0 );
+ return ( d->dialogParent() != nullptr );
return d->autoDefault;
}
@@ -496,7 +496,7 @@ void QPushButton::focusOutEvent(QFocusEvent *e)
#if QT_CONFIG(dialog)
QDialog *dlg = qobject_cast<QDialog*>(window());
if (dlg)
- dlg->d_func()->setDefault(0);
+ dlg->d_func()->setDefault(nullptr);
else
d->defaultButton = false;
#endif
diff --git a/src/widgets/widgets/qscrollarea.cpp b/src/widgets/widgets/qscrollarea.cpp
index 68aa545082..ce08e3439a 100644
--- a/src/widgets/widgets/qscrollarea.cpp
+++ b/src/widgets/widgets/qscrollarea.cpp
@@ -259,7 +259,7 @@ void QScrollArea::setWidget(QWidget *widget)
return;
delete d->widget;
- d->widget = 0;
+ d->widget = nullptr;
d->hbar->setValue(0);
d->vbar->setValue(0);
if (widget->parentWidget() != d->viewport)
@@ -285,9 +285,9 @@ QWidget *QScrollArea::takeWidget()
{
Q_D(QScrollArea);
QWidget *w = d->widget;
- d->widget = 0;
+ d->widget = nullptr;
if (w)
- w->setParent(0);
+ w->setParent(nullptr);
return w;
}
diff --git a/src/widgets/widgets/qscrollarea_p.h b/src/widgets/widgets/qscrollarea_p.h
index 2bdf9ed596..26335285a4 100644
--- a/src/widgets/widgets/qscrollarea_p.h
+++ b/src/widgets/widgets/qscrollarea_p.h
@@ -65,7 +65,7 @@ class QScrollAreaPrivate: public QAbstractScrollAreaPrivate
Q_DECLARE_PUBLIC(QScrollArea)
public:
- QScrollAreaPrivate(): resizable(false), alignment(nullptr){}
+ QScrollAreaPrivate(): resizable(false) {}
void updateScrollBars();
void updateWidgetPosition();
QPointer<QWidget> widget;
diff --git a/src/widgets/widgets/qscrollbar.cpp b/src/widgets/widgets/qscrollbar.cpp
index 08d771a27a..34ea017279 100644
--- a/src/widgets/widgets/qscrollbar.cpp
+++ b/src/widgets/widgets/qscrollbar.cpp
@@ -224,7 +224,7 @@ void QScrollBarPrivate::setTransient(bool value)
if (transient != value) {
transient = value;
if (q->isVisible()) {
- if (q->style()->styleHint(QStyle::SH_ScrollBar_Transient, 0, q))
+ if (q->style()->styleHint(QStyle::SH_ScrollBar_Transient, nullptr, q))
q->update();
} else if (!transient) {
q->show();
@@ -235,7 +235,7 @@ void QScrollBarPrivate::setTransient(bool value)
void QScrollBarPrivate::flash()
{
Q_Q(QScrollBar);
- if (!flashed && q->style()->styleHint(QStyle::SH_ScrollBar_Transient, 0, q)) {
+ if (!flashed && q->style()->styleHint(QStyle::SH_ScrollBar_Transient, nullptr, q)) {
flashed = true;
if (!q->isVisible())
q->show();
@@ -319,7 +319,7 @@ void QScrollBar::initStyleOption(QStyleOptionSlider *option) const
option->upsideDown = d->invertedAppearance;
if (d->orientation == Qt::Horizontal)
option->state |= QStyle::State_Horizontal;
- if ((d->flashed || !d->transient) && style()->styleHint(QStyle::SH_ScrollBar_Transient, 0, this))
+ if ((d->flashed || !d->transient) && style()->styleHint(QStyle::SH_ScrollBar_Transient, nullptr, this))
option->state |= QStyle::State_On;
}
@@ -376,7 +376,7 @@ void QScrollBarPrivate::init()
invertedControls = true;
pressedControl = hoverControl = QStyle::SC_None;
pointerOutsidePressedControl = false;
- transient = q->style()->styleHint(QStyle::SH_ScrollBar_Transient, 0, q);
+ transient = q->style()->styleHint(QStyle::SH_ScrollBar_Transient, nullptr, q);
flashed = false;
flashTimer = 0;
q->setFocusPolicy(Qt::NoFocus);
@@ -392,7 +392,7 @@ void QScrollBarPrivate::init()
/*! \reimp */
void QScrollBar::contextMenuEvent(QContextMenuEvent *event)
{
- if (!style()->styleHint(QStyle::SH_ScrollBar_ContextMenu, 0, this)) {
+ if (!style()->styleHint(QStyle::SH_ScrollBar_ContextMenu, nullptr, this)) {
QAbstractSlider::contextMenuEvent(event);
return ;
}
@@ -412,7 +412,7 @@ void QScrollBar::contextMenuEvent(QContextMenuEvent *event)
QAction *actScrollDn = menu->addAction(horiz ? tr("Scroll right") : tr("Scroll down"));
QAction *actionSelected = menu->exec(event->globalPos());
delete menu;
- if (actionSelected == 0)
+ if (actionSelected == nullptr)
/* do nothing */ ;
else if (actionSelected == actScrollHere)
setValue(d_func()->pixelPosToRangeValue(horiz ? event->pos().x() : event->pos().y()));
@@ -472,11 +472,11 @@ bool QScrollBar::event(QEvent *event)
d_func()->updateHoverControl(he->pos());
break;
case QEvent::StyleChange:
- d_func()->setTransient(style()->styleHint(QStyle::SH_ScrollBar_Transient, 0, this));
+ d_func()->setTransient(style()->styleHint(QStyle::SH_ScrollBar_Transient, nullptr, this));
break;
case QEvent::Timer:
if (static_cast<QTimerEvent *>(event)->timerId() == d->flashTimer) {
- if (d->flashed && style()->styleHint(QStyle::SH_ScrollBar_Transient, 0, this)) {
+ if (d->flashed && style()->styleHint(QStyle::SH_ScrollBar_Transient, nullptr, this)) {
d->flashed = false;
update();
}
@@ -545,7 +545,7 @@ void QScrollBar::mousePressEvent(QMouseEvent *e)
d->stopRepeatAction();
bool midButtonAbsPos = style()->styleHint(QStyle::SH_ScrollBar_MiddleClickAbsolutePosition,
- 0, this);
+ nullptr, this);
QStyleOptionSlider opt;
initStyleOption(&opt);
diff --git a/src/widgets/widgets/qsizegrip.cpp b/src/widgets/widgets/qsizegrip.cpp
index 835af9c7b8..2a4b4a0ad4 100644
--- a/src/widgets/widgets/qsizegrip.cpp
+++ b/src/widgets/widgets/qsizegrip.cpp
@@ -128,7 +128,7 @@ QSizeGripPrivate::QSizeGripPrivate()
: dxMax(0)
, dyMax(0)
, gotMousePress(false)
- , tlw(0)
+ , tlw(nullptr)
, m_platformSizeGrip(false)
{
}
@@ -195,7 +195,7 @@ Qt::Corner QSizeGripPrivate::corner() const
parent.
*/
QSizeGrip::QSizeGrip(QWidget * parent)
- : QWidget(*new QSizeGripPrivate, parent, 0)
+ : QWidget(*new QSizeGripPrivate, parent, { })
{
Q_D(QSizeGrip);
d->init();
diff --git a/src/widgets/widgets/qsplashscreen.cpp b/src/widgets/widgets/qsplashscreen.cpp
index e39ef6d1cd..70f05033ea 100644
--- a/src/widgets/widgets/qsplashscreen.cpp
+++ b/src/widgets/widgets/qsplashscreen.cpp
@@ -123,6 +123,11 @@ public:
wish to do your own drawing you can get a pointer to the pixmap
used in the splash screen with pixmap(). Alternatively, you can
subclass QSplashScreen and reimplement drawContents().
+
+ In case of having multiple screens, it is also possible to show the
+ splash screen on a different screen than the primary one. For example:
+
+ \snippet qsplashscreen/main.cpp 2
*/
/*!
@@ -132,13 +137,30 @@ public:
perhaps Qt::WindowStaysOnTopHint.
*/
QSplashScreen::QSplashScreen(const QPixmap &pixmap, Qt::WindowFlags f)
- : QWidget(*(new QSplashScreenPrivate()), 0, Qt::SplashScreen | Qt::FramelessWindowHint | f)
+ : QWidget(*(new QSplashScreenPrivate()), nullptr, Qt::SplashScreen | Qt::FramelessWindowHint | f)
{
setPixmap(pixmap); // Does an implicit repaint
}
/*!
\overload
+ \since 5.15
+
+ This function allows you to specify the screen for your splashscreen. The
+ typical use for this constructor is if you have multiple screens and
+ prefer to have the splash screen on a different screen than your primary
+ one. In that case pass the proper \a screen.
+*/
+QSplashScreen::QSplashScreen(QScreen *screen, const QPixmap &pixmap, Qt::WindowFlags f)
+ : QWidget(*(new QSplashScreenPrivate()), nullptr, Qt::SplashScreen | Qt::FramelessWindowHint | f)
+{
+ d_func()->setPixmap(pixmap, screen);
+}
+
+#if QT_DEPRECATED_SINCE(5, 15)
+/*!
+ \overload
+ \obsolete
This function allows you to specify a parent for your splashscreen. The
typical use for this constructor is if you have a multiple screens and
@@ -152,6 +174,7 @@ QSplashScreen::QSplashScreen(QWidget *parent, const QPixmap &pixmap, Qt::WindowF
// is still 0 here due to QWidget's special handling.
d_func()->setPixmap(pixmap, QSplashScreenPrivate::screenFor(parent));
}
+#endif
/*!
Destructor.
@@ -248,14 +271,14 @@ inline static bool waitForWindowExposed(QWindow *window, int timeout = 1000)
if (remaining <= 0)
break;
QCoreApplication::processEvents(QEventLoop::AllEvents, remaining);
- QCoreApplication::sendPostedEvents(0, QEvent::DeferredDelete);
+ QCoreApplication::sendPostedEvents(nullptr, QEvent::DeferredDelete);
#if defined(Q_OS_WINRT)
WaitForSingleObjectEx(GetCurrentThread(), TimeOutMs, false);
#elif defined(Q_OS_WIN)
Sleep(uint(TimeOutMs));
#else
struct timespec ts = { TimeOutMs / 1000, (TimeOutMs % 1000) * 1000 * 1000 };
- nanosleep(&ts, NULL);
+ nanosleep(&ts, nullptr);
#endif
}
return window->isExposed();
@@ -286,26 +309,35 @@ void QSplashScreen::setPixmap(const QPixmap &pixmap)
}
// In setPixmap(), resize and try to position on a screen according to:
-// 1) If a QDesktopScreenWidget is found in the parent hierarchy, use that (see docs on
+// 1) If the screen for the given widget is available, use that
+// 2) If a QDesktopScreenWidget is found in the parent hierarchy, use that (see docs on
// QSplashScreen(QWidget *, QPixmap).
-// 2) If a widget with associated QWindow is found, use that
-// 3) When nothing can be found, try to center it over the cursor
+// 3) If a widget with associated QWindow is found, use that
+// 4) When nothing can be found, try to center it over the cursor
+#if QT_DEPRECATED_SINCE(5, 15)
static inline int screenNumberOf(const QDesktopScreenWidget *dsw)
{
auto desktopWidgetPrivate =
static_cast<QDesktopWidgetPrivate *>(qt_widget_private(QApplication::desktop()));
return desktopWidgetPrivate->screens.indexOf(const_cast<QDesktopScreenWidget *>(dsw));
}
+#endif
const QScreen *QSplashScreenPrivate::screenFor(const QWidget *w)
{
+ if (w && w->screen())
+ return w->screen();
+
for (const QWidget *p = w; p !=nullptr ; p = p->parentWidget()) {
+#if QT_DEPRECATED_SINCE(5, 15)
if (auto dsw = qobject_cast<const QDesktopScreenWidget *>(p))
return QGuiApplication::screens().value(screenNumberOf(dsw));
+#endif
if (QWindow *window = p->windowHandle())
return window->screen();
}
+
#if QT_CONFIG(cursor)
// Note: We could rely on QPlatformWindow::initialGeometry() to center it
// over the cursor, but not all platforms (namely Android) use that.
diff --git a/src/widgets/widgets/qsplashscreen.h b/src/widgets/widgets/qsplashscreen.h
index 8bdf4e7749..1877493fcf 100644
--- a/src/widgets/widgets/qsplashscreen.h
+++ b/src/widgets/widgets/qsplashscreen.h
@@ -55,7 +55,11 @@ class Q_WIDGETS_EXPORT QSplashScreen : public QWidget
Q_OBJECT
public:
explicit QSplashScreen(const QPixmap &pixmap = QPixmap(), Qt::WindowFlags f = Qt::WindowFlags());
+ QSplashScreen(QScreen *screen, const QPixmap &pixmap = QPixmap(), Qt::WindowFlags f = Qt::WindowFlags());
+#if QT_DEPRECATED_SINCE(5, 15)
+ QT_DEPRECATED_VERSION_X_5_15("Use the constructor taking a QScreen *")
QSplashScreen(QWidget *parent, const QPixmap &pixmap = QPixmap(), Qt::WindowFlags f = Qt::WindowFlags());
+#endif
virtual ~QSplashScreen();
void setPixmap(const QPixmap &pixmap);
diff --git a/src/widgets/widgets/qsplitter.cpp b/src/widgets/widgets/qsplitter.cpp
index e7a4889996..090aa5cc8b 100644
--- a/src/widgets/widgets/qsplitter.cpp
+++ b/src/widgets/widgets/qsplitter.cpp
@@ -119,7 +119,7 @@ QSplitterPrivate::~QSplitterPrivate()
\a parent.
*/
QSplitterHandle::QSplitterHandle(Qt::Orientation orientation, QSplitter *parent)
- : QWidget(*new QSplitterHandlePrivate, parent, 0)
+ : QWidget(*new QSplitterHandlePrivate, parent, { })
{
Q_D(QSplitterHandle);
d->s = parent;
@@ -1494,7 +1494,7 @@ int QSplitter::closestLegalPosition(int pos, int index)
bool QSplitter::opaqueResize() const
{
Q_D(const QSplitter);
- return d->opaqueResizeSet ? d->opaque : style()->styleHint(QStyle::SH_Splitter_OpaqueResize, 0, this);
+ return d->opaqueResizeSet ? d->opaque : style()->styleHint(QStyle::SH_Splitter_OpaqueResize, nullptr, this);
}
@@ -1639,7 +1639,7 @@ int QSplitter::handleWidth() const
if (d->handleWidth >= 0) {
return d->handleWidth;
} else {
- return style()->pixelMetric(QStyle::PM_SplitterWidth, 0, this);
+ return style()->pixelMetric(QStyle::PM_SplitterWidth, nullptr, this);
}
}
diff --git a/src/widgets/widgets/qstackedwidget.cpp b/src/widgets/widgets/qstackedwidget.cpp
index f863964c58..a565d4ab4c 100644
--- a/src/widgets/widgets/qstackedwidget.cpp
+++ b/src/widgets/widgets/qstackedwidget.cpp
@@ -49,7 +49,7 @@ class QStackedWidgetPrivate : public QFramePrivate
{
Q_DECLARE_PUBLIC(QStackedWidget)
public:
- QStackedWidgetPrivate():layout(0){}
+ QStackedWidgetPrivate():layout(nullptr){}
QStackedLayout *layout;
bool blockChildAdd;
};
diff --git a/src/widgets/widgets/qstatusbar.cpp b/src/widgets/widgets/qstatusbar.cpp
index 39f0f11daf..4a1fef8b65 100644
--- a/src/widgets/widgets/qstatusbar.cpp
+++ b/src/widgets/widgets/qstatusbar.cpp
@@ -226,14 +226,14 @@ QRect QStatusBarPrivate::messageRect() const
\sa setSizeGripEnabled()
*/
QStatusBar::QStatusBar(QWidget * parent)
- : QWidget(*new QStatusBarPrivate, parent, 0)
+ : QWidget(*new QStatusBarPrivate, parent, { })
{
Q_D(QStatusBar);
- d->box = 0;
- d->timer = 0;
+ d->box = nullptr;
+ d->timer = nullptr;
#if QT_CONFIG(sizegrip)
- d->resizer = 0;
+ d->resizer = nullptr;
setSizeGripEnabled(true); // causes reformat()
#else
reformat();
@@ -451,7 +451,7 @@ void QStatusBar::setSizeGripEnabled(bool enabled)
d->showSizeGrip = true;
} else {
delete d->resizer;
- d->resizer = 0;
+ d->resizer = nullptr;
d->showSizeGrip = false;
}
reformat();
@@ -497,7 +497,7 @@ void QStatusBar::reformat()
int i;
QStatusBarPrivate::SBItem* item;
- for (i=0,item=0; i<d->items.size(); ++i) {
+ for (i=0,item=nullptr; i<d->items.size(); ++i) {
item = d->items.at(i);
if (!item || item->p)
break;
@@ -508,7 +508,7 @@ void QStatusBar::reformat()
l->addStretch(0);
- for (item=0; i<d->items.size(); ++i) {
+ for (item=nullptr; i<d->items.size(); ++i) {
item = d->items.at(i);
if (!item)
break;
@@ -556,7 +556,7 @@ void QStatusBar::showMessage(const QString &message, int timeout)
d->timer->start(timeout);
} else if (d->timer) {
delete d->timer;
- d->timer = 0;
+ d->timer = nullptr;
}
if (d->tempItem == message)
return;
@@ -578,7 +578,7 @@ void QStatusBar::clearMessage()
return;
if (d->timer) {
qDeleteInEventHandler(d->timer);
- d->timer = 0;
+ d->timer = nullptr;
}
d->tempItem.clear();
hideOrShow();
@@ -617,7 +617,7 @@ void QStatusBar::hideOrShow()
Q_D(QStatusBar);
bool haveMessage = !d->tempItem.isEmpty();
- QStatusBarPrivate::SBItem* item = 0;
+ QStatusBarPrivate::SBItem* item = nullptr;
for (int i=0; i<d->items.size(); ++i) {
item = d->items.at(i);
if (!item || item->p)
@@ -711,7 +711,7 @@ bool QStatusBar::event(QEvent *e)
// Calculate new strut height and call reformat() if it has changed
int maxH = fontMetrics().height();
- QStatusBarPrivate::SBItem* item = 0;
+ QStatusBarPrivate::SBItem* item = nullptr;
for (int i=0; i<d->items.size(); ++i) {
item = d->items.at(i);
if (!item)
@@ -731,7 +731,7 @@ bool QStatusBar::event(QEvent *e)
update();
}
if (e->type() == QEvent::ChildRemoved) {
- QStatusBarPrivate::SBItem* item = 0;
+ QStatusBarPrivate::SBItem* item = nullptr;
for (int i=0; i<d->items.size(); ++i) {
item = d->items.at(i);
if (!item)
diff --git a/src/widgets/widgets/qtabbar.cpp b/src/widgets/widgets/qtabbar.cpp
index 7e1794efef..4e75cca704 100644
--- a/src/widgets/widgets/qtabbar.cpp
+++ b/src/widgets/widgets/qtabbar.cpp
@@ -76,7 +76,7 @@ class CloseButton : public QAbstractButton
Q_OBJECT
public:
- explicit CloseButton(QWidget *parent = 0);
+ explicit CloseButton(QWidget *parent = nullptr);
QSize sizeHint() const override;
QSize minimumSizeHint() const override
@@ -424,18 +424,18 @@ void QTabBarPrivate::init()
rightB->setAccessibleName(QTabBar::tr("Scroll Right"));
#endif
q->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
- elideMode = Qt::TextElideMode(q->style()->styleHint(QStyle::SH_TabBar_ElideMode, 0, q));
- useScrollButtons = !q->style()->styleHint(QStyle::SH_TabBar_PreferNoArrows, 0, q);
+ elideMode = Qt::TextElideMode(q->style()->styleHint(QStyle::SH_TabBar_ElideMode, nullptr, q));
+ useScrollButtons = !q->style()->styleHint(QStyle::SH_TabBar_PreferNoArrows, nullptr, q);
}
QTabBarPrivate::Tab *QTabBarPrivate::at(int index)
{
- return validIndex(index)?&tabList[index]:0;
+ return validIndex(index)?&tabList[index]:nullptr;
}
const QTabBarPrivate::Tab *QTabBarPrivate::at(int index) const
{
- return validIndex(index)?&tabList[index]:0;
+ return validIndex(index)?&tabList[index]:nullptr;
}
int QTabBarPrivate::indexAtPos(const QPoint &p) const
@@ -460,7 +460,7 @@ void QTabBarPrivate::layoutTabs()
bool vertTabs = verticalTabs(shape);
int tabChainIndex = 0;
- Qt::Alignment tabAlignment = Qt::Alignment(q->style()->styleHint(QStyle::SH_TabBar_Alignment, 0, q));
+ Qt::Alignment tabAlignment = Qt::Alignment(q->style()->styleHint(QStyle::SH_TabBar_Alignment, nullptr, q));
QVector<QLayoutStruct> tabChain(tabList.count() + 2);
// We put an empty item at the front and back and set its expansive attribute
@@ -787,7 +787,7 @@ void QTabBarPrivate::_q_closeTab()
Q_Q(QTabBar);
QObject *object = q->sender();
int tabToClose = -1;
- QTabBar::ButtonPosition closeSide = (QTabBar::ButtonPosition)q->style()->styleHint(QStyle::SH_TabBar_CloseButtonPosition, 0, q);
+ QTabBar::ButtonPosition closeSide = (QTabBar::ButtonPosition)q->style()->styleHint(QStyle::SH_TabBar_CloseButtonPosition, nullptr, q);
for (int i = 0; i < tabList.count(); ++i) {
if (closeSide == QTabBar::LeftSide) {
if (tabList.at(i).leftWidget == object) {
@@ -859,7 +859,7 @@ void QTabBarPrivate::refresh()
Creates a new tab bar with the given \a parent.
*/
QTabBar::QTabBar(QWidget* parent)
- :QWidget(*new QTabBarPrivate, parent, 0)
+ :QWidget(*new QTabBarPrivate, parent, { })
{
Q_D(QTabBar);
d->init();
@@ -984,7 +984,7 @@ int QTabBar::insertTab(int index, const QIcon& icon, const QString &text)
if (d->closeButtonOnTabs) {
QStyleOptionTab opt;
initStyleOption(&opt, index);
- ButtonPosition closeSide = (ButtonPosition)style()->styleHint(QStyle::SH_TabBar_CloseButtonPosition, 0, this);
+ ButtonPosition closeSide = (ButtonPosition)style()->styleHint(QStyle::SH_TabBar_CloseButtonPosition, nullptr, this);
QAbstractButton *closeButton = new CloseButton(this);
connect(closeButton, SIGNAL(clicked()), this, SLOT(_q_closeTab()));
setTabButton(index, closeSide, closeButton);
@@ -1019,12 +1019,12 @@ void QTabBar::removeTab(int index)
if (d->tabList[index].leftWidget) {
d->tabList[index].leftWidget->hide();
d->tabList[index].leftWidget->deleteLater();
- d->tabList[index].leftWidget = 0;
+ d->tabList[index].leftWidget = nullptr;
}
if (d->tabList[index].rightWidget) {
d->tabList[index].rightWidget->hide();
d->tabList[index].rightWidget->deleteLater();
- d->tabList[index].rightWidget = 0;
+ d->tabList[index].rightWidget = nullptr;
}
int newIndex = d->tabList[index].lastTab;
@@ -1395,7 +1395,7 @@ QSize QTabBar::iconSize() const
Q_D(const QTabBar);
if (d->iconSize.isValid())
return d->iconSize;
- int iconExtent = style()->pixelMetric(QStyle::PM_TabBarIconSize, 0, this);
+ int iconExtent = style()->pixelMetric(QStyle::PM_TabBarIconSize, nullptr, this);
return QSize(iconExtent, iconExtent);
}
@@ -1797,7 +1797,7 @@ void QTabBar::paintEvent(QPaintEvent *)
if (!d->dragInProgress)
p.drawControl(QStyle::CE_TabBarTab, tab);
else {
- int taboverlap = style()->pixelMetric(QStyle::PM_TabBarTabOverlap, 0, this);
+ int taboverlap = style()->pixelMetric(QStyle::PM_TabBarTabOverlap, nullptr, this);
if (verticalTabs(d->shape))
d->movingTab->setGeometry(tab.rect.adjusted(0, -taboverlap, 0, taboverlap));
else
@@ -2065,7 +2065,7 @@ void QTabBarPrivate::setupMovableTab()
if (!movingTab)
movingTab = new QMovableTabWidget(q);
- int taboverlap = q->style()->pixelMetric(QStyle::PM_TabBarTabOverlap, 0 ,q);
+ int taboverlap = q->style()->pixelMetric(QStyle::PM_TabBarTabOverlap, nullptr ,q);
QRect grabRect = q->tabRect(pressedIndex);
if (verticalTabs(shape))
grabRect.adjust(0, -taboverlap, 0, taboverlap);
@@ -2221,9 +2221,9 @@ void QTabBar::changeEvent(QEvent *event)
switch (event->type()) {
case QEvent::StyleChange:
if (!d->elideModeSetByUser)
- d->elideMode = Qt::TextElideMode(style()->styleHint(QStyle::SH_TabBar_ElideMode, 0, this));
+ d->elideMode = Qt::TextElideMode(style()->styleHint(QStyle::SH_TabBar_ElideMode, nullptr, this));
if (!d->useScrollButtonsSetByUser)
- d->useScrollButtons = !style()->styleHint(QStyle::SH_TabBar_PreferNoArrows, 0, this);
+ d->useScrollButtons = !style()->styleHint(QStyle::SH_TabBar_PreferNoArrows, nullptr, this);
Q_FALLTHROUGH();
case QEvent::FontChange:
d->textSizes.clear();
@@ -2333,16 +2333,16 @@ void QTabBar::setTabsClosable(bool closable)
if (d->closeButtonOnTabs == closable)
return;
d->closeButtonOnTabs = closable;
- ButtonPosition closeSide = (ButtonPosition)style()->styleHint(QStyle::SH_TabBar_CloseButtonPosition, 0, this);
+ ButtonPosition closeSide = (ButtonPosition)style()->styleHint(QStyle::SH_TabBar_CloseButtonPosition, nullptr, this);
if (!closable) {
for (int i = 0; i < d->tabList.count(); ++i) {
if (closeSide == LeftSide && d->tabList[i].leftWidget) {
d->tabList[i].leftWidget->deleteLater();
- d->tabList[i].leftWidget = 0;
+ d->tabList[i].leftWidget = nullptr;
}
if (closeSide == RightSide && d->tabList[i].rightWidget) {
d->tabList[i].rightWidget->deleteLater();
- d->tabList[i].rightWidget = 0;
+ d->tabList[i].rightWidget = nullptr;
}
}
} else {
@@ -2637,8 +2637,8 @@ CloseButton::CloseButton(QWidget *parent)
QSize CloseButton::sizeHint() const
{
ensurePolished();
- int width = style()->pixelMetric(QStyle::PM_TabCloseIndicatorWidth, 0, this);
- int height = style()->pixelMetric(QStyle::PM_TabCloseIndicatorHeight, 0, this);
+ int width = style()->pixelMetric(QStyle::PM_TabCloseIndicatorWidth, nullptr, this);
+ int height = style()->pixelMetric(QStyle::PM_TabCloseIndicatorHeight, nullptr, this);
return QSize(width, height);
}
@@ -2671,7 +2671,7 @@ void CloseButton::paintEvent(QPaintEvent *)
if (const QTabBar *tb = qobject_cast<const QTabBar *>(parent())) {
int index = tb->currentIndex();
- QTabBar::ButtonPosition position = (QTabBar::ButtonPosition)style()->styleHint(QStyle::SH_TabBar_CloseButtonPosition, 0, tb);
+ QTabBar::ButtonPosition position = (QTabBar::ButtonPosition)style()->styleHint(QStyle::SH_TabBar_CloseButtonPosition, nullptr, tb);
if (tb->tabButton(index, position) == this)
opt.state |= QStyle::State_Selected;
}
diff --git a/src/widgets/widgets/qtabbar_p.h b/src/widgets/widgets/qtabbar_p.h
index 5552c43548..6f77579108 100644
--- a/src/widgets/widgets/qtabbar_p.h
+++ b/src/widgets/widgets/qtabbar_p.h
@@ -105,9 +105,9 @@ public:
struct Tab {
inline Tab(const QIcon &ico, const QString &txt)
: enabled(true) , shortcutId(0), text(txt), icon(ico),
- leftWidget(0), rightWidget(0), lastTab(-1), dragOffset(0)
+ leftWidget(nullptr), rightWidget(nullptr), lastTab(-1), dragOffset(0)
#if QT_CONFIG(animation)
- , animation(0)
+ , animation(nullptr)
#endif // animation
{}
bool operator==(const Tab &other) const { return &other == this; }
diff --git a/src/widgets/widgets/qtabwidget.cpp b/src/widgets/widgets/qtabwidget.cpp
index 4d7b39ae01..28c91a89e7 100644
--- a/src/widgets/widgets/qtabwidget.cpp
+++ b/src/widgets/widgets/qtabwidget.cpp
@@ -215,9 +215,9 @@ public:
};
QTabWidgetPrivate::QTabWidgetPrivate()
- : tabs(0), stack(0), dirty(true),
+ : tabs(nullptr), stack(nullptr), dirty(true),
pos(QTabWidget::North), shape(QTabWidget::Rounded),
- leftCornerWidget(0), rightCornerWidget(0)
+ leftCornerWidget(nullptr), rightCornerWidget(nullptr)
{}
QTabWidgetPrivate::~QTabWidgetPrivate()
@@ -249,7 +249,7 @@ void QTabWidgetPrivate::init()
q->setFocusPolicy(Qt::TabFocus);
q->setFocusProxy(tabs);
q->setTabPosition(static_cast<QTabWidget::TabPosition> (q->style()->styleHint(
- QStyle::SH_TabWidget_DefaultTabPosition, 0, q )));
+ QStyle::SH_TabWidget_DefaultTabPosition, nullptr, q )));
}
@@ -280,7 +280,7 @@ void QTabWidgetPrivate::initBasicStyleOption(QStyleOptionTabWidgetFrame *option)
if (q->documentMode())
option->lineWidth = 0;
else
- option->lineWidth = q->style()->pixelMetric(QStyle::PM_DefaultFrameWidth, 0, q);
+ option->lineWidth = q->style()->pixelMetric(QStyle::PM_DefaultFrameWidth, nullptr, q);
switch (pos) {
case QTabWidget::North:
@@ -319,7 +319,7 @@ void QTabWidget::initStyleOption(QStyleOptionTabWidgetFrame *option) const
Q_D(const QTabWidget);
d->initBasicStyleOption(option);
- int exth = style()->pixelMetric(QStyle::PM_TabBarBaseHeight, 0, this);
+ int exth = style()->pixelMetric(QStyle::PM_TabBarBaseHeight, nullptr, this);
QSize t(0, d->stack->frameWidth());
if (d->tabs->isVisibleTo(const_cast<QTabWidget *>(this))) {
t = d->tabs->sizeHint();
@@ -359,7 +359,7 @@ void QTabWidget::initStyleOption(QStyleOptionTabWidgetFrame *option) const
Constructs a tabbed widget with parent \a parent.
*/
QTabWidget::QTabWidget(QWidget *parent)
- : QWidget(*new QTabWidgetPrivate, parent, 0)
+ : QWidget(*new QTabWidgetPrivate, parent, { })
{
Q_D(QTabWidget);
d->init();
diff --git a/src/widgets/widgets/qtextedit.cpp b/src/widgets/widgets/qtextedit.cpp
index dd2ea3f18f..10de7d0b9e 100644
--- a/src/widgets/widgets/qtextedit.cpp
+++ b/src/widgets/widgets/qtextedit.cpp
@@ -117,7 +117,7 @@ public:
};
QTextEditPrivate::QTextEditPrivate()
- : control(0),
+ : control(nullptr),
autoFormatting(QTextEdit::AutoNone), tabChangesFocus(false),
lineWrap(QTextEdit::WidgetWidth), lineWrapColumnOrWidth(0),
wordWrap(QTextOption::WrapAtWordBoundaryOrAnywhere), clickCausedFocus(0),
diff --git a/src/widgets/widgets/qtoolbar.cpp b/src/widgets/widgets/qtoolbar.cpp
index 58e9c4fd87..b4e90c7d71 100644
--- a/src/widgets/widgets/qtoolbar.cpp
+++ b/src/widgets/widgets/qtoolbar.cpp
@@ -91,7 +91,7 @@ void QToolBarPrivate::init()
q->setAttribute(Qt::WA_X11NetWmWindowTypeToolBar);
QStyle *style = q->style();
- int e = style->pixelMetric(QStyle::PM_ToolBarIconSize, 0, q);
+ int e = style->pixelMetric(QStyle::PM_ToolBarIconSize, nullptr, q);
iconSize = QSize(e, e);
layout = new QToolBarLayout(q);
@@ -99,7 +99,7 @@ void QToolBarPrivate::init()
toggleViewAction = new QAction(q);
toggleViewAction->setCheckable(true);
- q->setMovable(q->style()->styleHint(QStyle::SH_ToolBar_Movable, 0, q ));
+ q->setMovable(q->style()->styleHint(QStyle::SH_ToolBar_Movable, nullptr, q ));
QObject::connect(toggleViewAction, SIGNAL(triggered(bool)), q, SLOT(_q_toggleView(bool)));
}
@@ -173,21 +173,21 @@ void QToolBarPrivate::initDrag(const QPoint &pos)
{
Q_Q(QToolBar);
- if (state != 0)
+ if (state != nullptr)
return;
QMainWindow *win = qobject_cast<QMainWindow*>(parent);
- Q_ASSERT(win != 0);
+ Q_ASSERT(win != nullptr);
QMainWindowLayout *layout = qt_mainwindow_layout(win);
- Q_ASSERT(layout != 0);
- if (layout->pluggingWidget != 0) // the main window is animating a docking operation
+ Q_ASSERT(layout != nullptr);
+ if (layout->pluggingWidget != nullptr) // the main window is animating a docking operation
return;
state = new DragState;
state->pressPos = pos;
state->dragging = false;
state->moving = false;
- state->widgetItem = 0;
+ state->widgetItem = nullptr;
if (q->isRightToLeft())
state->pressPos = QPoint(q->width() - state->pressPos.x(), state->pressPos.y());
@@ -197,19 +197,19 @@ void QToolBarPrivate::startDrag(bool moving)
{
Q_Q(QToolBar);
- Q_ASSERT(state != 0);
+ Q_ASSERT(state != nullptr);
if ((moving && state->moving) || state->dragging)
return;
QMainWindow *win = qobject_cast<QMainWindow*>(parent);
- Q_ASSERT(win != 0);
+ Q_ASSERT(win != nullptr);
QMainWindowLayout *layout = qt_mainwindow_layout(win);
- Q_ASSERT(layout != 0);
+ Q_ASSERT(layout != nullptr);
if (!moving) {
state->widgetItem = layout->unplug(q);
- Q_ASSERT(state->widgetItem != 0);
+ Q_ASSERT(state->widgetItem != nullptr);
}
state->dragging = !moving;
state->moving = moving;
@@ -218,13 +218,13 @@ void QToolBarPrivate::startDrag(bool moving)
void QToolBarPrivate::endDrag()
{
Q_Q(QToolBar);
- Q_ASSERT(state != 0);
+ Q_ASSERT(state != nullptr);
q->releaseMouse();
if (state->dragging) {
QMainWindowLayout *layout = qt_mainwindow_layout(qobject_cast<QMainWindow *>(q->parentWidget()));
- Q_ASSERT(layout != 0);
+ Q_ASSERT(layout != nullptr);
if (!layout->plug(state->widgetItem)) {
if (q->isFloatable()) {
@@ -239,7 +239,7 @@ void QToolBarPrivate::endDrag()
}
delete state;
- state = 0;
+ state = nullptr;
}
bool QToolBarPrivate::mousePressEvent(QMouseEvent *event)
@@ -278,7 +278,7 @@ bool QToolBarPrivate::mousePressEvent(QMouseEvent *event)
bool QToolBarPrivate::mouseReleaseEvent(QMouseEvent*)
{
- if (state != 0) {
+ if (state != nullptr) {
endDrag();
return true;
} else {
@@ -310,13 +310,13 @@ bool QToolBarPrivate::mouseMoveEvent(QMouseEvent *event)
}
QMainWindow *win = qobject_cast<QMainWindow*>(parent);
- if (win == 0)
+ if (win == nullptr)
return true;
QMainWindowLayout *layout = qt_mainwindow_layout(win);
- Q_ASSERT(layout != 0);
+ Q_ASSERT(layout != nullptr);
- if (layout->pluggingWidget == 0
+ if (layout->pluggingWidget == nullptr
&& (event->pos() - state->pressPos).manhattanLength() > QApplication::startDragDistance()) {
const bool wasDragging = state->dragging;
const bool moving = !q->isWindow() && (orientation == Qt::Vertical ?
@@ -503,7 +503,7 @@ void QToolBarPrivate::plug(const QRect &r)
Constructs a QToolBar with the given \a parent.
*/
QToolBar::QToolBar(QWidget *parent)
- : QWidget(*new QToolBarPrivate, parent, 0)
+ : QWidget(*new QToolBarPrivate, parent, { })
{
Q_D(QToolBar);
d->init();
@@ -673,16 +673,16 @@ void QToolBar::setIconSize(const QSize &iconSize)
if (mw && mw->layout()) {
QLayout *layout = mw->layout();
int i = 0;
- QLayoutItem *item = 0;
+ QLayoutItem *item = nullptr;
do {
item = layout->itemAt(i++);
if (item && (item->widget() == this))
sz = mw->iconSize();
- } while (!sz.isValid() && item != 0);
+ } while (!sz.isValid() && item != nullptr);
}
}
if (!sz.isValid()) {
- const int metric = style()->pixelMetric(QStyle::PM_ToolBarIconSize, 0, this);
+ const int metric = style()->pixelMetric(QStyle::PM_ToolBarIconSize, nullptr, this);
sz = QSize(metric, metric);
}
if (d->iconSize != sz) {
@@ -945,7 +945,7 @@ QAction *QToolBar::actionAt(const QPoint &p) const
QWidget *widget = childAt(p);
int index = d->layout->indexOf(widget);
if (index == -1)
- return 0;
+ return nullptr;
QLayoutItem *item = d->layout->itemAt(index);
return static_cast<QToolBarItem*>(item)->action;
}
@@ -966,7 +966,7 @@ void QToolBar::actionEvent(QActionEvent *event)
switch (event->type()) {
case QEvent::ActionAdded: {
- Q_ASSERT_X(widgetAction == 0 || d->layout->indexOf(widgetAction) == -1,
+ Q_ASSERT_X(widgetAction == nullptr || d->layout->indexOf(widgetAction) == -1,
"QToolBar", "widgets cannot be inserted multiple times");
// reparent the action to this toolbar if it has been created
@@ -974,7 +974,7 @@ void QToolBar::actionEvent(QActionEvent *event)
// preserve Qt 4.1.x behavior. The widget is already
// reparented to us due to the createWidget call inside
// createItem()
- if (widgetAction != 0 && widgetAction->d_func()->autoCreated)
+ if (widgetAction != nullptr && widgetAction->d_func()->autoCreated)
widgetAction->setParent(this);
int index = d->layout->count();
@@ -1059,18 +1059,18 @@ void QToolBar::paintEvent(QPaintEvent *)
*/
static bool waitForPopup(QToolBar *tb, QWidget *popup)
{
- if (popup == 0 || popup->isHidden())
+ if (popup == nullptr || popup->isHidden())
return false;
QWidget *w = popup;
- while (w != 0) {
+ while (w != nullptr) {
if (w == tb)
return true;
w = w->parentWidget();
}
QMenu *menu = qobject_cast<QMenu*>(popup);
- if (menu == 0)
+ if (menu == nullptr)
return false;
QAction *action = menu->menuAction();
@@ -1161,7 +1161,7 @@ bool QToolBar::event(QEvent *event)
return true;
break;
case QEvent::Leave:
- if (d->state != 0 && d->state->dragging) {
+ if (d->state != nullptr && d->state->dragging) {
#ifdef Q_OS_WIN
// This is a workaround for loosing the mouse on Vista.
QPoint pos = QCursor::pos();
@@ -1213,7 +1213,7 @@ QWidget *QToolBar::widgetForAction(QAction *action) const
int index = d->layout->indexOf(action);
if (index == -1)
- return 0;
+ return nullptr;
return d->layout->itemAt(index)->widget();
}
@@ -1233,7 +1233,7 @@ void QToolBar::initStyleOption(QStyleOptionToolBar *option) const
option->initFrom(this);
if (orientation() == Qt::Horizontal)
option->state |= QStyle::State_Horizontal;
- option->lineWidth = style()->pixelMetric(QStyle::PM_ToolBarFrameWidth, 0, this);
+ option->lineWidth = style()->pixelMetric(QStyle::PM_ToolBarFrameWidth, nullptr, this);
option->features = d->layout->movable()
? QStyleOptionToolBar::Movable
: QStyleOptionToolBar::None;
@@ -1247,7 +1247,7 @@ void QToolBar::initStyleOption(QStyleOptionToolBar *option) const
return;
QMainWindowLayout *layout = qt_mainwindow_layout(mainWindow);
- Q_ASSERT_X(layout != 0, "QToolBar::initStyleOption()",
+ Q_ASSERT_X(layout != nullptr, "QToolBar::initStyleOption()",
"QMainWindow->layout() != QMainWindowLayout");
layout->getStyleOptionInfo(option, const_cast<QToolBar *>(this));
diff --git a/src/widgets/widgets/qtoolbar.h b/src/widgets/widgets/qtoolbar.h
index 0c434e8d1d..6aaf59cafd 100644
--- a/src/widgets/widgets/qtoolbar.h
+++ b/src/widgets/widgets/qtoolbar.h
@@ -59,15 +59,9 @@ class Q_WIDGETS_EXPORT QToolBar : public QWidget
{
Q_OBJECT
- Q_PROPERTY(bool movable READ isMovable WRITE setMovable
- DESIGNABLE (qobject_cast<QMainWindow *>(parentWidget()) != 0)
- NOTIFY movableChanged)
- Q_PROPERTY(Qt::ToolBarAreas allowedAreas READ allowedAreas WRITE setAllowedAreas
- DESIGNABLE (qobject_cast<QMainWindow *>(parentWidget()) != 0)
- NOTIFY allowedAreasChanged)
- Q_PROPERTY(Qt::Orientation orientation READ orientation WRITE setOrientation
- DESIGNABLE (qobject_cast<QMainWindow *>(parentWidget()) == 0)
- NOTIFY orientationChanged)
+ Q_PROPERTY(bool movable READ isMovable WRITE setMovable NOTIFY movableChanged)
+ Q_PROPERTY(Qt::ToolBarAreas allowedAreas READ allowedAreas WRITE setAllowedAreas NOTIFY allowedAreasChanged)
+ Q_PROPERTY(Qt::Orientation orientation READ orientation WRITE setOrientation NOTIFY orientationChanged)
Q_PROPERTY(QSize iconSize READ iconSize WRITE setIconSize NOTIFY iconSizeChanged)
Q_PROPERTY(Qt::ToolButtonStyle toolButtonStyle READ toolButtonStyle WRITE setToolButtonStyle
NOTIFY toolButtonStyleChanged)
diff --git a/src/widgets/widgets/qtoolbararealayout.cpp b/src/widgets/widgets/qtoolbararealayout.cpp
index adc329131c..493c094cc1 100644
--- a/src/widgets/widgets/qtoolbararealayout.cpp
+++ b/src/widgets/widgets/qtoolbararealayout.cpp
@@ -91,7 +91,7 @@ bool QToolBarAreaLayoutItem::skip() const
{
if (gap)
return false;
- return widgetItem == 0 || widgetItem->isEmpty();
+ return widgetItem == nullptr || widgetItem->isEmpty();
}
/******************************************************************************
@@ -302,7 +302,7 @@ QLayoutItem *QToolBarAreaLayoutInfo::insertToolBar(QToolBar *before, QToolBar *t
void QToolBarAreaLayoutInfo::insertItem(QToolBar *before, QLayoutItem *item)
{
- if (before == 0) {
+ if (before == nullptr) {
if (lines.isEmpty())
lines.append(QToolBarAreaLayoutLine(o));
lines.last().toolBarItems.append(item);
@@ -330,7 +330,7 @@ void QToolBarAreaLayoutInfo::removeToolBar(QToolBar *toolBar)
QToolBarAreaLayoutItem &item = line.toolBarItems[k];
if (item.widgetItem->widget() == toolBar) {
delete item.widgetItem;
- item.widgetItem = 0;
+ item.widgetItem = nullptr;
line.toolBarItems.removeAt(k);
if (line.toolBarItems.isEmpty() && j < lines.count() - 1)
@@ -344,7 +344,7 @@ void QToolBarAreaLayoutInfo::removeToolBar(QToolBar *toolBar)
void QToolBarAreaLayoutInfo::insertToolBarBreak(QToolBar *before)
{
- if (before == 0) {
+ if (before == nullptr) {
if (!lines.isEmpty() && lines.constLast().toolBarItems.isEmpty())
return;
lines.append(QToolBarAreaLayoutLine(o));
@@ -729,7 +729,7 @@ QRect QToolBarAreaLayout::rectHint(const QRect &r) const
QLayoutItem *QToolBarAreaLayout::itemAt(int *x, int index) const
{
- Q_ASSERT(x != 0);
+ Q_ASSERT(x != nullptr);
for (int i = 0; i < QInternal::DockCount; ++i) {
const QToolBarAreaLayoutInfo &dock = docks[i];
@@ -744,12 +744,12 @@ QLayoutItem *QToolBarAreaLayout::itemAt(int *x, int index) const
}
}
- return 0;
+ return nullptr;
}
QLayoutItem *QToolBarAreaLayout::takeAt(int *x, int index)
{
- Q_ASSERT(x != 0);
+ Q_ASSERT(x != nullptr);
for (int i = 0; i < QInternal::DockCount; ++i) {
QToolBarAreaLayoutInfo &dock = docks[i];
@@ -768,7 +768,7 @@ QLayoutItem *QToolBarAreaLayout::takeAt(int *x, int index)
}
}
- return 0;
+ return nullptr;
}
void QToolBarAreaLayout::deleteAllLayoutItems()
@@ -783,7 +783,7 @@ void QToolBarAreaLayout::deleteAllLayoutItems()
QToolBarAreaLayoutItem &item = line.toolBarItems[k];
if (!item.gap)
delete item.widgetItem;
- item.widgetItem = 0;
+ item.widgetItem = nullptr;
}
}
}
@@ -811,7 +811,7 @@ QLayoutItem *QToolBarAreaLayout::insertToolBar(QToolBar *before, QToolBar *toolB
{
QInternal::DockPosition pos = findToolBar(before);
if (pos == QInternal::DockCount)
- return 0;
+ return nullptr;
return docks[pos].insertToolBar(before, toolBar);
}
@@ -826,7 +826,7 @@ void QToolBarAreaLayout::removeToolBar(QToolBar *toolBar)
QLayoutItem *QToolBarAreaLayout::addToolBar(QInternal::DockPosition pos, QToolBar *toolBar)
{
- return docks[pos].insertToolBar(0, toolBar);
+ return docks[pos].insertToolBar(nullptr, toolBar);
}
void QToolBarAreaLayout::insertToolBarBreak(QToolBar *before)
@@ -847,7 +847,7 @@ void QToolBarAreaLayout::removeToolBarBreak(QToolBar *before)
void QToolBarAreaLayout::addToolBarBreak(QInternal::DockPosition pos)
{
- docks[pos].insertToolBarBreak(0);
+ docks[pos].insertToolBarBreak(nullptr);
}
void QToolBarAreaLayout::moveToolBar(QToolBar *toolbar, int p)
@@ -878,7 +878,7 @@ void QToolBarAreaLayout::insertItem(QToolBar *before, QLayoutItem *item)
void QToolBarAreaLayout::apply(bool animate)
{
QMainWindowLayout *layout = qt_mainwindow_layout(mainWindow);
- Q_ASSERT(layout != 0);
+ Q_ASSERT(layout != nullptr);
Qt::LayoutDirection dir = mainWindow->layoutDirection();
@@ -1117,13 +1117,13 @@ QToolBarAreaLayoutItem *QToolBarAreaLayout::item(const QList<int> &path)
Q_ASSERT(path.count() == 3);
if (path.at(0) < 0 || path.at(0) >= QInternal::DockCount)
- return 0;
+ return nullptr;
QToolBarAreaLayoutInfo &info = docks[path.at(0)];
if (path.at(1) < 0 || path.at(1) >= info.lines.count())
- return 0;
+ return nullptr;
QToolBarAreaLayoutLine &line = info.lines[path.at(1)];
if (path.at(2) < 0 || path.at(2) >= line.toolBarItems.count())
- return 0;
+ return nullptr;
return &(line.toolBarItems[path.at(2)]);
}
@@ -1143,10 +1143,10 @@ QLayoutItem *QToolBarAreaLayout::plug(const QList<int> &path)
QToolBarAreaLayoutItem *item = this->item(path);
if (Q_UNLIKELY(!item)) {
qWarning() << "No item at" << path;
- return 0;
+ return nullptr;
}
Q_ASSERT(item->gap);
- Q_ASSERT(item->widgetItem != 0);
+ Q_ASSERT(item->widgetItem != nullptr);
item->gap = false;
return item->widgetItem;
}
@@ -1352,14 +1352,14 @@ bool QToolBarAreaLayout::restoreState(QDataStream &stream, const QList<QToolBar*
rect = unpackRect(geom0, geom1, &floating);
}
- QToolBar *toolBar = 0;
+ QToolBar *toolBar = nullptr;
for (int x = 0; x < toolBars.count(); ++x) {
if (toolBars.at(x)->objectName() == objectName) {
toolBar = toolBars.takeAt(x);
break;
}
}
- if (toolBar == 0) {
+ if (toolBar == nullptr) {
continue;
}
diff --git a/src/widgets/widgets/qtoolbarlayout.cpp b/src/widgets/widgets/qtoolbarlayout.cpp
index 961a261e8f..89c7f32b28 100644
--- a/src/widgets/widgets/qtoolbarlayout.cpp
+++ b/src/widgets/widgets/qtoolbarlayout.cpp
@@ -69,13 +69,13 @@ extern QMainWindowLayout *qt_mainwindow_layout(const QMainWindow *window);
*/
QToolBarItem::QToolBarItem(QWidget *widget)
- : QWidgetItem(widget), action(0), customWidget(false)
+ : QWidgetItem(widget), action(nullptr), customWidget(false)
{
}
bool QToolBarItem::isEmpty() const
{
- return action == 0 || !action->isVisible();
+ return action == nullptr || !action->isVisible();
}
/******************************************************************************
@@ -84,7 +84,7 @@ bool QToolBarItem::isEmpty() const
QToolBarLayout::QToolBarLayout(QWidget *parent)
: QLayout(parent), expanded(false), animating(false), dirty(true),
- expanding(false), empty(true), expandFlag(false), popupMenu(0)
+ expanding(false), empty(true), expandFlag(false), popupMenu(nullptr)
{
QToolBar *tb = qobject_cast<QToolBar*>(parent);
if (!tb)
@@ -132,15 +132,15 @@ bool QToolBarLayout::hasExpandFlag() const
void QToolBarLayout::setUsePopupMenu(bool set)
{
- if (!dirty && ((popupMenu == 0) == set))
+ if (!dirty && ((popupMenu == nullptr) == set))
invalidate();
if (!set) {
QObject::connect(extension, SIGNAL(clicked(bool)),
this, SLOT(setExpanded(bool)), Qt::UniqueConnection);
extension->setPopupMode(QToolButton::DelayedPopup);
- extension->setMenu(0);
+ extension->setMenu(nullptr);
delete popupMenu;
- popupMenu = 0;
+ popupMenu = nullptr;
} else {
QObject::disconnect(extension, SIGNAL(clicked(bool)),
this, SLOT(setExpanded(bool)));
@@ -169,21 +169,21 @@ void QToolBarLayout::addItem(QLayoutItem*)
QLayoutItem *QToolBarLayout::itemAt(int index) const
{
if (index < 0 || index >= items.count())
- return 0;
+ return nullptr;
return items.at(index);
}
QLayoutItem *QToolBarLayout::takeAt(int index)
{
if (index < 0 || index >= items.count())
- return 0;
+ return nullptr;
QToolBarItem *item = items.takeAt(index);
if (popupMenu)
popupMenu->removeAction(item->action);
QWidgetAction *widgetAction = qobject_cast<QWidgetAction*>(item->action);
- if (widgetAction != 0 && item->customWidget) {
+ if (widgetAction != nullptr && item->customWidget) {
widgetAction->releaseWidget(item->widget());
} else {
// destroy the QToolButton/QToolBarSeparator
@@ -240,9 +240,9 @@ Qt::Orientations QToolBarLayout::expandingDirections() const
updateGeomArray();
QToolBar *tb = qobject_cast<QToolBar*>(parentWidget());
if (!tb)
- return Qt::Orientations(0);
+ return {};
Qt::Orientation o = tb->orientation();
- return expanding ? Qt::Orientations(o) : Qt::Orientations(0);
+ return expanding ? Qt::Orientations(o) : Qt::Orientations{};
}
bool QToolBarLayout::movable() const
@@ -251,7 +251,7 @@ bool QToolBarLayout::movable() const
if (!tb)
return false;
QMainWindow *win = qobject_cast<QMainWindow*>(tb->parentWidget());
- return tb->isMovable() && win != 0;
+ return tb->isMovable() && win != nullptr;
}
void QToolBarLayout::updateGeomArray() const
@@ -343,7 +343,7 @@ void QToolBarLayout::updateGeomArray() const
static bool defaultWidgetAction(QToolBarItem *item)
{
QWidgetAction *a = qobject_cast<QWidgetAction*>(item->action);
- return a != 0 && a->defaultWidget() == item->widget();
+ return a != nullptr && a->defaultWidget() == item->widget();
}
void QToolBarLayout::updateMacBorderMetrics()
@@ -568,7 +568,7 @@ bool QToolBarLayout::layoutActions(const QSize &size)
// widgets into the menu. If only custom widget actions are chopped off, the popup menu
// is empty. So we show the little extension button to show something is chopped off,
// but we make it disabled.
- extension->setEnabled(popupMenu == 0 || !extensionMenuContainsOnlyWidgetActions);
+ extension->setEnabled(popupMenu == nullptr || !extensionMenuContainsOnlyWidgetActions);
// we have to do the show/hide here, because it triggers more calls to setGeometry :(
for (int i = 0; i < showWidgets.count(); ++i)
@@ -615,7 +615,7 @@ QSize QToolBarLayout::expandedSize(const QSize &size) const
++rows; // we want to expand to at least two rows
int space = total_w/rows + spacing + extensionExtent;
space = qMax(space, min_w - pick(o, margins) - handleExtent);
- if (win != 0)
+ if (win != nullptr)
space = qMin(space, pick(o, win->size()) - pick(o, margins) - handleExtent);
int w = 0;
@@ -651,7 +651,7 @@ QSize QToolBarLayout::expandedSize(const QSize &size) const
w += pick(Qt::Horizontal, margins) + handleExtent + spacing + extensionExtent;
w = qMax(w, min_w);
- if (win != 0)
+ if (win != nullptr)
w = qMin(w, pick(o, win->size()));
h += pick(Qt::Vertical, margins) - spacing; //there is no spacing before the first row
@@ -710,14 +710,14 @@ QToolBarItem *QToolBarLayout::createItem(QAction *action)
{
bool customWidget = false;
bool standardButtonWidget = false;
- QWidget *widget = 0;
+ QWidget *widget = nullptr;
QToolBar *tb = qobject_cast<QToolBar*>(parentWidget());
if (!tb)
- return (QToolBarItem *)0;
+ return (QToolBarItem *)nullptr;
if (QWidgetAction *widgetAction = qobject_cast<QWidgetAction *>(action)) {
widget = widgetAction->requestWidget(tb);
- if (widget != 0) {
+ if (widget != nullptr) {
widget->setAttribute(Qt::WA_LayoutUsesWidgetRect);
customWidget = true;
}
diff --git a/src/widgets/widgets/qtoolbox.cpp b/src/widgets/widgets/qtoolbox.cpp
index 4d7f543a99..4767394842 100644
--- a/src/widgets/widgets/qtoolbox.cpp
+++ b/src/widgets/widgets/qtoolbox.cpp
@@ -111,7 +111,7 @@ public:
typedef std::vector<std::unique_ptr<Page>> PageList;
inline QToolBoxPrivate()
- : currentPage(0)
+ : currentPage(nullptr)
{
}
void _q_buttonClicked();
@@ -157,7 +157,7 @@ const QToolBoxPrivate::Page *QToolBoxPrivate::page(int index) const
void QToolBoxPrivate::updateTabs()
{
- QToolBoxButton *lastButton = currentPage ? currentPage->button : 0;
+ QToolBoxButton *lastButton = currentPage ? currentPage->button : nullptr;
bool after = false;
int index = 0;
for (const auto &page : pageList) {
@@ -184,7 +184,7 @@ QSize QToolBoxButton::sizeHint() const
{
QSize iconSize(8, 8);
if (!icon().isNull()) {
- int icone = style()->pixelMetric(QStyle::PM_SmallIconSize, 0, parentWidget() /* QToolBox */);
+ int icone = style()->pixelMetric(QStyle::PM_SmallIconSize, nullptr, parentWidget() /* QToolBox */);
iconSize += QSize(icone + 2, icone);
}
QSize textSize = fontMetrics().size(Qt::TextShowMnemonic, text()) + QSize(0, 8);
@@ -197,7 +197,7 @@ QSize QToolBoxButton::minimumSizeHint() const
{
if (icon().isNull())
return QSize();
- int icone = style()->pixelMetric(QStyle::PM_SmallIconSize, 0, parentWidget() /* QToolBox */);
+ int icone = style()->pixelMetric(QStyle::PM_SmallIconSize, nullptr, parentWidget() /* QToolBox */);
return QSize(icone + 8, icone + 8);
}
@@ -378,7 +378,7 @@ int QToolBox::insertItem(int index, QWidget *widget, const QIcon &icon, const QS
QWidget *current = d->currentPage->widget;
int oldindex = indexOf(current);
if (index <= oldindex) {
- d->currentPage = 0; // trigger change
+ d->currentPage = nullptr; // trigger change
setCurrentIndex(oldindex);
}
}
@@ -472,10 +472,10 @@ void QToolBoxPrivate::_q_widgetDestroyed(QObject *object)
pageList.erase(std::remove_if(pageList.begin(), pageList.end(), pageEquals(c)), pageList.end());
if (pageList.empty()) {
- currentPage = 0;
+ currentPage = nullptr;
emit q->currentChanged(-1);
} else if (removeCurrent) {
- currentPage = 0;
+ currentPage = nullptr;
q->setCurrentIndex(0);
}
}
@@ -562,7 +562,7 @@ QWidget *QToolBox::widget(int index) const
int QToolBox::indexOf(QWidget *widget) const
{
Q_D(const QToolBox);
- const QToolBoxPrivate::Page *c = (widget ? d->page(widget) : 0);
+ const QToolBoxPrivate::Page *c = (widget ? d->page(widget) : nullptr);
if (!c)
return -1;
const auto it = std::find_if(d->pageList.cbegin(), d->pageList.cend(), pageEquals(c));
diff --git a/src/widgets/widgets/qtoolbutton.cpp b/src/widgets/widgets/qtoolbutton.cpp
index b00b219386..263fe5d8ce 100644
--- a/src/widgets/widgets/qtoolbutton.cpp
+++ b/src/widgets/widgets/qtoolbutton.cpp
@@ -202,7 +202,7 @@ QToolButton::QToolButton(QWidget * parent)
void QToolButtonPrivate::init()
{
Q_Q(QToolButton);
- defaultAction = 0;
+ defaultAction = nullptr;
#if QT_CONFIG(toolbar)
if (qobject_cast<QToolBar*>(parent))
autoRaise = true;
@@ -227,7 +227,7 @@ void QToolButtonPrivate::init()
#endif
setLayoutItemMargins(QStyle::SE_ToolButtonLayoutItem);
- delay = q->style()->styleHint(QStyle::SH_ToolButton_PopupDelay, 0, q);
+ delay = q->style()->styleHint(QStyle::SH_ToolButton_PopupDelay, nullptr, q);
}
/*!
@@ -477,10 +477,10 @@ void QToolButton::actionEvent(QActionEvent *event)
break;
case QEvent::ActionRemoved:
if (d->defaultAction == action)
- d->defaultAction = 0;
+ d->defaultAction = nullptr;
#if QT_CONFIG(menu)
if (action == d->menuAction)
- d->menuAction = 0;
+ d->menuAction = nullptr;
#endif
action->disconnect(this);
break;
@@ -583,7 +583,7 @@ void QToolButton::changeEvent(QEvent *e)
|| e->type() == QEvent::MacSizeChange
#endif
) {
- d->delay = style()->styleHint(QStyle::SH_ToolButton_PopupDelay, 0, this);
+ d->delay = style()->styleHint(QStyle::SH_ToolButton_PopupDelay, nullptr, this);
d->setLayoutItemMargins(QStyle::SE_ToolButtonLayoutItem);
}
#endif
@@ -649,7 +649,7 @@ void QToolButton::setMenu(QMenu* menu)
{
Q_D(QToolButton);
- if (d->menuAction == (menu ? menu->menuAction() : 0))
+ if (d->menuAction == (menu ? menu->menuAction() : nullptr))
return;
if (d->menuAction)
@@ -659,7 +659,7 @@ void QToolButton::setMenu(QMenu* menu)
d->menuAction = menu->menuAction();
addAction(d->menuAction);
} else {
- d->menuAction = 0;
+ d->menuAction = nullptr;
}
// changing the menu set may change the size hint, so reset it
diff --git a/src/widgets/widgets/qwidgetanimator.cpp b/src/widgets/widgets/qwidgetanimator.cpp
index 486d65d92c..cec6ba1dea 100644
--- a/src/widgets/widgets/qwidgetanimator.cpp
+++ b/src/widgets/widgets/qwidgetanimator.cpp
@@ -99,7 +99,7 @@ void QWidgetAnimator::animate(QWidget *widget, const QRect &_final_geometry, boo
#if QT_CONFIG(animation)
//If the QStyle has animations, animate
- if (const int animationDuration = widget->style()->styleHint(QStyle::SH_Widget_Animation_Duration, 0, widget)) {
+ if (const int animationDuration = widget->style()->styleHint(QStyle::SH_Widget_Animation_Duration, nullptr, widget)) {
AnimationMap::const_iterator it = m_animation_map.constFind(widget);
if (it != m_animation_map.constEnd() && (*it)->endValue().toRect() == final_geometry)
return;
diff --git a/src/widgets/widgets/qwidgetlinecontrol.cpp b/src/widgets/widgets/qwidgetlinecontrol.cpp
index 9cdae4f28f..9dd61c2c6a 100644
--- a/src/widgets/widgets/qwidgetlinecontrol.cpp
+++ b/src/widgets/widgets/qwidgetlinecontrol.cpp
@@ -964,7 +964,7 @@ void QWidgetLineControl::parseInputMask(const QString &maskFields)
if (maskFields.isEmpty() || delimiter == 0) {
if (m_maskData) {
delete [] m_maskData;
- m_maskData = 0;
+ m_maskData = nullptr;
m_maxLength = 32767;
internalSetText(QString(), -1, false);
}
@@ -1090,7 +1090,7 @@ bool QWidgetLineControl::isValidInput(QChar key, QChar mask) const
return true;
break;
case 'X':
- if (key.isPrint())
+ if (key.isPrint() && key != m_blank)
return true;
break;
case 'x':
diff --git a/src/widgets/widgets/qwidgettextcontrol.cpp b/src/widgets/widgets/qwidgettextcontrol.cpp
index 83e2315c36..bb28db7fac 100644
--- a/src/widgets/widgets/qwidgettextcontrol.cpp
+++ b/src/widgets/widgets/qwidgettextcontrol.cpp
@@ -125,7 +125,7 @@ static QTextLine currentTextLine(const QTextCursor &cursor)
}
QWidgetTextControlPrivate::QWidgetTextControlPrivate()
- : doc(0), cursorOn(false), cursorVisible(false), cursorIsFocusIndicator(false),
+ : doc(nullptr), cursorOn(false), cursorVisible(false), cursorIsFocusIndicator(false),
#ifndef Q_OS_ANDROID
interactionFlags(Qt::TextEditorInteraction),
#else
@@ -683,7 +683,7 @@ void QWidgetTextControlPrivate::_q_contentsChanged(int from, int charsRemoved, i
// always report the right number of removed chars, but in lack of the real string use spaces
QString oldText = QString(charsRemoved, QLatin1Char(' '));
- QAccessibleEvent *ev = 0;
+ QAccessibleEvent *ev = nullptr;
if (charsRemoved == 0) {
ev = new QAccessibleTextInsertEvent(q->parent(), from, newText);
} else if (charsAdded == 0) {
@@ -906,12 +906,12 @@ void QWidgetTextControl::setDocument(QTextDocument *document)
d->doc->disconnect(this);
d->doc->documentLayout()->disconnect(this);
- d->doc->documentLayout()->setPaintDevice(0);
+ d->doc->documentLayout()->setPaintDevice(nullptr);
if (d->doc->parent() == this)
delete d->doc;
- d->doc = 0;
+ d->doc = nullptr;
d->setContent(Qt::RichText, QString(), document);
}
@@ -2308,7 +2308,7 @@ QMenu *QWidgetTextControl::createStandardContextMenu(const QPointF &pos, QWidget
d->linkToCopy = anchorAt(pos);
if (d->linkToCopy.isEmpty() && !showTextSelectionActions)
- return 0;
+ return nullptr;
QMenu *menu = new QMenu(parent);
QAction *a;
@@ -2662,7 +2662,7 @@ void QWidgetTextControl::print(QPagedPaintDevice *printer) const
Q_D(const QWidgetTextControl);
if (!printer)
return;
- QTextDocument *tempDoc = 0;
+ QTextDocument *tempDoc = nullptr;
const QTextDocument *doc = d->doc;
if (QPagedPaintDevicePrivate::get(printer)->printSelectionOnly) {
if (!d->cursor.hasSelection())
diff --git a/src/widgets/widgets/qwidgettextcontrol_p.h b/src/widgets/widgets/qwidgettextcontrol_p.h
index 59bf5466e6..1f06aa0b97 100644
--- a/src/widgets/widgets/qwidgettextcontrol_p.h
+++ b/src/widgets/widgets/qwidgettextcontrol_p.h
@@ -116,12 +116,12 @@ public:
void setCurrentCharFormat(const QTextCharFormat &format);
QTextCharFormat currentCharFormat() const;
- bool find(const QString &exp, QTextDocument::FindFlags options = nullptr);
+ bool find(const QString &exp, QTextDocument::FindFlags options = { });
#ifndef QT_NO_REGEXP
- bool find(const QRegExp &exp, QTextDocument::FindFlags options = nullptr);
+ bool find(const QRegExp &exp, QTextDocument::FindFlags options = { });
#endif
#if QT_CONFIG(regularexpression)
- bool find(const QRegularExpression &exp, QTextDocument::FindFlags options = nullptr);
+ bool find(const QRegularExpression &exp, QTextDocument::FindFlags options = { });
#endif
QString toPlainText() const;
diff --git a/src/xml/dom/dom.pri b/src/xml/dom/dom.pri
index d86071e84e..36b6087ede 100644
--- a/src/xml/dom/dom.pri
+++ b/src/xml/dom/dom.pri
@@ -1,2 +1,5 @@
-HEADERS += $$PWD/qdom.h
-SOURCES += $$PWD/qdom.cpp
+HEADERS += $$PWD/qdom.h \
+ $$PWD/qdom_p.h \
+ $$PWD/qdomhelpers_p.h
+SOURCES += $$PWD/qdom.cpp \
+ $$PWD/qdomhelpers.cpp
diff --git a/src/xml/dom/qdom.cpp b/src/xml/dom/qdom.cpp
index 04151c3f31..81f33b0693 100644
--- a/src/xml/dom/qdom.cpp
+++ b/src/xml/dom/qdom.cpp
@@ -39,15 +39,15 @@
#include <qplatformdefs.h>
#include <qdom.h>
+#include "qdom_p.h"
+#include "qdomhelpers_p.h"
#include "private/qxmlutils_p.h"
#ifndef QT_NO_DOM
#include <qatomic.h>
#include <qbuffer.h>
-#include <qhash.h>
#include <qiodevice.h>
-#include <qlist.h>
#if QT_CONFIG(regularexpression)
#include <qregularexpression.h>
#endif
@@ -56,11 +56,10 @@
#endif
#include <qtextstream.h>
#include <qxml.h>
-#include "private/qxml_p.h"
#include <qvariant.h>
-#include <qmap.h>
#include <qshareddata.h>
#include <qdebug.h>
+#include <qxmlstream.h>
#include <stdio.h>
QT_BEGIN_NAMESPACE
@@ -119,510 +118,6 @@ static void qt_split_namespace(QString& prefix, QString& name, const QString& qN
/**************************************************************
*
- * Private class declerations
- *
- **************************************************************/
-
-class QDomImplementationPrivate
-{
-public:
- inline QDomImplementationPrivate() {}
-
- QDomImplementationPrivate* clone();
- QAtomicInt ref;
- static QDomImplementation::InvalidDataPolicy invalidDataPolicy;
-};
-
-class QDomNodePrivate
-{
-public:
- QDomNodePrivate(QDomDocumentPrivate*, QDomNodePrivate* parent = nullptr);
- QDomNodePrivate(QDomNodePrivate* n, bool deep);
- virtual ~QDomNodePrivate();
-
- QString nodeName() const { return name; }
- QString nodeValue() const { return value; }
- virtual void setNodeValue(const QString& v) { value = v; }
-
- QDomDocumentPrivate* ownerDocument();
- void setOwnerDocument(QDomDocumentPrivate* doc);
-
- virtual QDomNodePrivate* insertBefore(QDomNodePrivate* newChild, QDomNodePrivate* refChild);
- virtual QDomNodePrivate* insertAfter(QDomNodePrivate* newChild, QDomNodePrivate* refChild);
- virtual QDomNodePrivate* replaceChild(QDomNodePrivate* newChild, QDomNodePrivate* oldChild);
- virtual QDomNodePrivate* removeChild(QDomNodePrivate* oldChild);
- virtual QDomNodePrivate* appendChild(QDomNodePrivate* newChild);
-
- QDomNodePrivate* namedItem(const QString& name);
-
- virtual QDomNodePrivate* cloneNode(bool deep = true);
- virtual void normalize();
- virtual void clear();
-
- inline QDomNodePrivate* parent() const { return hasParent ? ownerNode : nullptr; }
- inline void setParent(QDomNodePrivate *p) { ownerNode = p; hasParent = true; }
-
- void setNoParent() {
- ownerNode = hasParent ? (QDomNodePrivate*)ownerDocument() : nullptr;
- hasParent = false;
- }
-
- // Dynamic cast
- bool isAttr() const { return nodeType() == QDomNode::AttributeNode; }
- bool isCDATASection() const { return nodeType() == QDomNode::CDATASectionNode; }
- bool isDocumentFragment() const { return nodeType() == QDomNode::DocumentFragmentNode; }
- bool isDocument() const { return nodeType() == QDomNode::DocumentNode; }
- bool isDocumentType() const { return nodeType() == QDomNode::DocumentTypeNode; }
- bool isElement() const { return nodeType() == QDomNode::ElementNode; }
- bool isEntityReference() const { return nodeType() == QDomNode::EntityReferenceNode; }
- bool isText() const { const QDomNode::NodeType nt = nodeType();
- return (nt == QDomNode::TextNode)
- || (nt == QDomNode::CDATASectionNode); }
- bool isEntity() const { return nodeType() == QDomNode::EntityNode; }
- bool isNotation() const { return nodeType() == QDomNode::NotationNode; }
- bool isProcessingInstruction() const { return nodeType() == QDomNode::ProcessingInstructionNode; }
- bool isCharacterData() const { const QDomNode::NodeType nt = nodeType();
- return (nt == QDomNode::CharacterDataNode)
- || (nt == QDomNode::TextNode)
- || (nt == QDomNode::CommentNode); }
- bool isComment() const { return nodeType() == QDomNode::CommentNode; }
-
- virtual QDomNode::NodeType nodeType() const { return QDomNode::BaseNode; }
-
- virtual void save(QTextStream&, int, int) const;
-
- void setLocation(int lineNumber, int columnNumber);
-
- // Variables
- QAtomicInt ref;
- QDomNodePrivate* prev;
- QDomNodePrivate* next;
- QDomNodePrivate* ownerNode; // either the node's parent or the node's owner document
- QDomNodePrivate* first;
- QDomNodePrivate* last;
-
- QString name; // this is the local name if prefix != null
- QString value;
- QString prefix; // set this only for ElementNode and AttributeNode
- QString namespaceURI; // set this only for ElementNode and AttributeNode
- bool createdWithDom1Interface : 1;
- bool hasParent : 1;
-
- int lineNumber;
- int columnNumber;
-};
-
-class QDomNodeListPrivate
-{
-public:
- QDomNodeListPrivate(QDomNodePrivate*);
- QDomNodeListPrivate(QDomNodePrivate*, const QString& );
- QDomNodeListPrivate(QDomNodePrivate*, const QString&, const QString& );
- ~QDomNodeListPrivate();
-
- bool operator== (const QDomNodeListPrivate&) const;
- bool operator!= (const QDomNodeListPrivate&) const;
-
- void createList();
- QDomNodePrivate* item(int index);
- int length() const;
-
- QAtomicInt ref;
- /*
- This list contains the children of this node.
- */
- QDomNodePrivate* node_impl;
- QString tagname;
- QString nsURI;
- QList<QDomNodePrivate*> list;
- long timestamp;
-};
-
-class QDomNamedNodeMapPrivate
-{
-public:
- QDomNamedNodeMapPrivate(QDomNodePrivate*);
- ~QDomNamedNodeMapPrivate();
-
- QDomNodePrivate* namedItem(const QString& name) const;
- QDomNodePrivate* namedItemNS(const QString& nsURI, const QString& localName) const;
- QDomNodePrivate* setNamedItem(QDomNodePrivate* arg);
- QDomNodePrivate* setNamedItemNS(QDomNodePrivate* arg);
- QDomNodePrivate* removeNamedItem(const QString& name);
- QDomNodePrivate* item(int index) const;
- int length() const;
- bool contains(const QString& name) const;
- bool containsNS(const QString& nsURI, const QString & localName) const;
-
- /**
- * Remove all children from the map.
- */
- void clearMap();
- bool isReadOnly() { return readonly; }
- void setReadOnly(bool r) { readonly = r; }
- bool isAppendToParent() { return appendToParent; }
- /**
- * If true, then the node will redirect insert/remove calls
- * to its parent by calling QDomNodePrivate::appendChild or removeChild.
- * In addition the map won't increase or decrease the reference count
- * of the nodes it contains.
- *
- * By default this value is false and the map will handle reference counting
- * by itself.
- */
- void setAppendToParent(bool b) { appendToParent = b; }
-
- /**
- * Creates a copy of the map. It is a deep copy
- * that means that all children are cloned.
- */
- QDomNamedNodeMapPrivate* clone(QDomNodePrivate* parent);
-
- // Variables
- QAtomicInt ref;
- QHash<QString, QDomNodePrivate *> map;
- QDomNodePrivate* parent;
- bool readonly;
- bool appendToParent;
-};
-
-class QDomDocumentTypePrivate : public QDomNodePrivate
-{
-public:
- QDomDocumentTypePrivate(QDomDocumentPrivate*, QDomNodePrivate* parent = nullptr);
- QDomDocumentTypePrivate(QDomDocumentTypePrivate* n, bool deep);
- ~QDomDocumentTypePrivate();
- void init();
-
- // Reimplemented from QDomNodePrivate
- QDomNodePrivate* cloneNode(bool deep = true) override;
- QDomNodePrivate* insertBefore(QDomNodePrivate* newChild, QDomNodePrivate* refChild) override;
- QDomNodePrivate* insertAfter(QDomNodePrivate* newChild, QDomNodePrivate* refChild) override;
- QDomNodePrivate* replaceChild(QDomNodePrivate* newChild, QDomNodePrivate* oldChild) override;
- QDomNodePrivate* removeChild(QDomNodePrivate* oldChild) override;
- QDomNodePrivate* appendChild(QDomNodePrivate* newChild) override;
-
- QDomNode::NodeType nodeType() const override { return QDomNode::DocumentTypeNode; }
-
- void save(QTextStream& s, int, int) const override;
-
- // Variables
- QDomNamedNodeMapPrivate* entities;
- QDomNamedNodeMapPrivate* notations;
- QString publicId;
- QString systemId;
- QString internalSubset;
-};
-
-class QDomDocumentFragmentPrivate : public QDomNodePrivate
-{
-public:
- QDomDocumentFragmentPrivate(QDomDocumentPrivate*, QDomNodePrivate* parent = nullptr);
- QDomDocumentFragmentPrivate(QDomNodePrivate* n, bool deep);
-
- // Reimplemented from QDomNodePrivate
- virtual QDomNodePrivate* cloneNode(bool deep = true) override;
- QDomNode::NodeType nodeType() const override { return QDomNode::DocumentFragmentNode; }
-};
-
-class QDomCharacterDataPrivate : public QDomNodePrivate
-{
-public:
- QDomCharacterDataPrivate(QDomDocumentPrivate*, QDomNodePrivate* parent, const QString& data);
- QDomCharacterDataPrivate(QDomCharacterDataPrivate* n, bool deep);
-
- int dataLength() const;
- QString substringData(unsigned long offset, unsigned long count) const;
- void appendData(const QString& arg);
- void insertData(unsigned long offset, const QString& arg);
- void deleteData(unsigned long offset, unsigned long count);
- void replaceData(unsigned long offset, unsigned long count, const QString& arg);
-
- // Reimplemented from QDomNodePrivate
- QDomNode::NodeType nodeType() const override { return QDomNode::CharacterDataNode; }
- QDomNodePrivate* cloneNode(bool deep = true) override;
-};
-
-class QDomTextPrivate : public QDomCharacterDataPrivate
-{
-public:
- QDomTextPrivate(QDomDocumentPrivate*, QDomNodePrivate* parent, const QString& val);
- QDomTextPrivate(QDomTextPrivate* n, bool deep);
-
- QDomTextPrivate* splitText(int offset);
-
- // Reimplemented from QDomNodePrivate
- QDomNodePrivate* cloneNode(bool deep = true) override;
- QDomNode::NodeType nodeType() const override { return QDomNode::TextNode; }
- virtual void save(QTextStream& s, int, int) const override;
-};
-
-class QDomAttrPrivate : public QDomNodePrivate
-{
-public:
- QDomAttrPrivate(QDomDocumentPrivate*, QDomNodePrivate*, const QString& name);
- QDomAttrPrivate(QDomDocumentPrivate*, QDomNodePrivate*, const QString& nsURI, const QString& qName);
- QDomAttrPrivate(QDomAttrPrivate* n, bool deep);
-
- bool specified() const;
-
- // Reimplemented from QDomNodePrivate
- void setNodeValue(const QString& v) override;
- QDomNodePrivate* cloneNode(bool deep = true) override;
- QDomNode::NodeType nodeType() const override { return QDomNode::AttributeNode; }
- virtual void save(QTextStream& s, int, int) const override;
-
- // Variables
- bool m_specified;
-};
-
-class QDomElementPrivate : public QDomNodePrivate
-{
-public:
- QDomElementPrivate(QDomDocumentPrivate*, QDomNodePrivate* parent, const QString& name);
- QDomElementPrivate(QDomDocumentPrivate*, QDomNodePrivate* parent, const QString& nsURI, const QString& qName);
- QDomElementPrivate(QDomElementPrivate* n, bool deep);
- ~QDomElementPrivate();
-
- QString attribute(const QString& name, const QString& defValue) const;
- QString attributeNS(const QString& nsURI, const QString& localName, const QString& defValue) const;
- void setAttribute(const QString& name, const QString& value);
- void setAttributeNS(const QString& nsURI, const QString& qName, const QString& newValue);
- void removeAttribute(const QString& name);
- QDomAttrPrivate* attributeNode(const QString& name);
- QDomAttrPrivate* attributeNodeNS(const QString& nsURI, const QString& localName);
- QDomAttrPrivate* setAttributeNode(QDomAttrPrivate* newAttr);
- QDomAttrPrivate* setAttributeNodeNS(QDomAttrPrivate* newAttr);
- QDomAttrPrivate* removeAttributeNode(QDomAttrPrivate* oldAttr);
- bool hasAttribute(const QString& name);
- bool hasAttributeNS(const QString& nsURI, const QString& localName);
-
- QString text();
-
- // Reimplemented from QDomNodePrivate
- QDomNamedNodeMapPrivate* attributes() { return m_attr; }
- bool hasAttributes() { return (m_attr->length() > 0); }
- QDomNode::NodeType nodeType() const override { return QDomNode::ElementNode; }
- QDomNodePrivate* cloneNode(bool deep = true) override;
- virtual void save(QTextStream& s, int, int) const override;
-
- // Variables
- QDomNamedNodeMapPrivate* m_attr;
-};
-
-
-class QDomCommentPrivate : public QDomCharacterDataPrivate
-{
-public:
- QDomCommentPrivate(QDomDocumentPrivate*, QDomNodePrivate* parent, const QString& val);
- QDomCommentPrivate(QDomCommentPrivate* n, bool deep);
-
- // Reimplemented from QDomNodePrivate
- QDomNodePrivate* cloneNode(bool deep = true) override;
- QDomNode::NodeType nodeType() const override { return QDomNode::CommentNode; }
- virtual void save(QTextStream& s, int, int) const override;
-};
-
-class QDomCDATASectionPrivate : public QDomTextPrivate
-{
-public:
- QDomCDATASectionPrivate(QDomDocumentPrivate*, QDomNodePrivate* parent, const QString& val);
- QDomCDATASectionPrivate(QDomCDATASectionPrivate* n, bool deep);
-
- // Reimplemented from QDomNodePrivate
- QDomNodePrivate* cloneNode(bool deep = true) override;
- QDomNode::NodeType nodeType() const override { return QDomNode::CDATASectionNode; }
- virtual void save(QTextStream& s, int, int) const override;
-};
-
-class QDomNotationPrivate : public QDomNodePrivate
-{
-public:
- QDomNotationPrivate(QDomDocumentPrivate*, QDomNodePrivate* parent, const QString& name,
- const QString& pub, const QString& sys);
- QDomNotationPrivate(QDomNotationPrivate* n, bool deep);
-
- // Reimplemented from QDomNodePrivate
- QDomNodePrivate* cloneNode(bool deep = true) override;
- QDomNode::NodeType nodeType() const override { return QDomNode::NotationNode; }
- virtual void save(QTextStream& s, int, int) const override;
-
- // Variables
- QString m_sys;
- QString m_pub;
-};
-
-class QDomEntityPrivate : public QDomNodePrivate
-{
-public:
- QDomEntityPrivate(QDomDocumentPrivate*, QDomNodePrivate* parent, const QString& name,
- const QString& pub, const QString& sys, const QString& notation);
- QDomEntityPrivate(QDomEntityPrivate* n, bool deep);
-
- // Reimplemented from QDomNodePrivate
- QDomNodePrivate* cloneNode(bool deep = true) override;
- QDomNode::NodeType nodeType() const override { return QDomNode::EntityNode; }
- virtual void save(QTextStream& s, int, int) const override;
-
- // Variables
- QString m_sys;
- QString m_pub;
- QString m_notationName;
-};
-
-class QDomEntityReferencePrivate : public QDomNodePrivate
-{
-public:
- QDomEntityReferencePrivate(QDomDocumentPrivate*, QDomNodePrivate* parent, const QString& name);
- QDomEntityReferencePrivate(QDomNodePrivate* n, bool deep);
-
- // Reimplemented from QDomNodePrivate
- QDomNodePrivate* cloneNode(bool deep = true) override;
- QDomNode::NodeType nodeType() const override { return QDomNode::EntityReferenceNode; }
- virtual void save(QTextStream& s, int, int) const override;
-};
-
-class QDomProcessingInstructionPrivate : public QDomNodePrivate
-{
-public:
- QDomProcessingInstructionPrivate(QDomDocumentPrivate*, QDomNodePrivate* parent, const QString& target,
- const QString& data);
- QDomProcessingInstructionPrivate(QDomProcessingInstructionPrivate* n, bool deep);
-
- // Reimplemented from QDomNodePrivate
- QDomNodePrivate* cloneNode(bool deep = true) override;
- QDomNode::NodeType nodeType() const override { return QDomNode::ProcessingInstructionNode; }
- virtual void save(QTextStream& s, int, int) const override;
-};
-
-class QDomDocumentPrivate : public QDomNodePrivate
-{
-public:
- QDomDocumentPrivate();
- QDomDocumentPrivate(const QString& name);
- QDomDocumentPrivate(QDomDocumentTypePrivate* dt);
- QDomDocumentPrivate(QDomDocumentPrivate* n, bool deep);
- ~QDomDocumentPrivate();
-
- bool setContent(QXmlInputSource *source, bool namespaceProcessing, QString *errorMsg, int *errorLine, int *errorColumn);
- bool setContent(QXmlInputSource *source, QXmlReader *reader, QXmlSimpleReader *simpleReader, QString *errorMsg, int *errorLine, int *errorColumn);
-
- // Attributes
- QDomDocumentTypePrivate* doctype() { return type.data(); }
- QDomImplementationPrivate* implementation() { return impl.data(); }
- QDomElementPrivate* documentElement();
-
- // Factories
- QDomElementPrivate* createElement(const QString& tagName);
- QDomElementPrivate* createElementNS(const QString& nsURI, const QString& qName);
- QDomDocumentFragmentPrivate* createDocumentFragment();
- QDomTextPrivate* createTextNode(const QString& data);
- QDomCommentPrivate* createComment(const QString& data);
- QDomCDATASectionPrivate* createCDATASection(const QString& data);
- QDomProcessingInstructionPrivate* createProcessingInstruction(const QString& target, const QString& data);
- QDomAttrPrivate* createAttribute(const QString& name);
- QDomAttrPrivate* createAttributeNS(const QString& nsURI, const QString& qName);
- QDomEntityReferencePrivate* createEntityReference(const QString& name);
-
- QDomNodePrivate* importNode(QDomNodePrivate* importedNode, bool deep);
-
- // Reimplemented from QDomNodePrivate
- QDomNodePrivate* cloneNode(bool deep = true) override;
- QDomNode::NodeType nodeType() const override { return QDomNode::DocumentNode; }
- void clear() override;
-
- // Variables
- QExplicitlySharedDataPointer<QDomImplementationPrivate> impl;
- QExplicitlySharedDataPointer<QDomDocumentTypePrivate> type;
-
- void saveDocument(QTextStream& stream, const int indent, QDomNode::EncodingPolicy encUsed) const;
-
- /* \internal
- Counter for the QDomNodeListPrivate timestamps.
-
- This is a cache optimization, that might in some cases be effective. The
- dilemma is that QDomNode::childNodes() returns a list, but the
- implementation stores the children in a linked list. Hence, in order to
- get the children out through childNodes(), a list must be populated each
- time, which is O(N).
-
- DOM has the requirement of node references being live, see DOM Core
- Level 3, 1.1.1 The DOM Structure Model, which means that changes to the
- underlying documents must be reflected in node lists.
-
- This mechanism, nodeListTime, is a caching optimization that reduces the
- amount of times the node list is rebuilt, by only doing so when the
- document actually changes. However, a change to anywhere in any document
- invalidate all lists, since no dependency tracking is done.
-
- It functions by that all modifying functions(insertBefore() and so on)
- increment the count; each QDomNodeListPrivate copies nodeListTime on
- construction, and compares its own value to nodeListTime in order to
- determine whether it needs to rebuild.
-
- This is reentrant. The nodeListTime may overflow, but that's ok since we
- check for equalness, not whether nodeListTime is smaller than the list's
- stored timestamp.
- */
- long nodeListTime;
-};
-
-/**************************************************************
- *
- * QDomHandler
- *
- **************************************************************/
-
-class QDomHandler : public QXmlDefaultHandler
-{
-public:
- QDomHandler(QDomDocumentPrivate* d, QXmlSimpleReader *reader, bool namespaceProcessing);
- ~QDomHandler();
-
- // content handler
- bool endDocument() override;
- bool startElement(const QString& nsURI, const QString& localName, const QString& qName, const QXmlAttributes& atts) override;
- bool endElement(const QString& nsURI, const QString& localName, const QString& qName) override;
- bool characters(const QString& ch) override;
- bool processingInstruction(const QString& target, const QString& data) override;
- bool skippedEntity(const QString& name) override;
-
- // error handler
- bool fatalError(const QXmlParseException& exception) override;
-
- // lexical handler
- bool startCDATA() override;
- bool endCDATA() override;
- bool startEntity(const QString &) override;
- bool endEntity(const QString &) override;
- bool startDTD(const QString& name, const QString& publicId, const QString& systemId) override;
- bool comment(const QString& ch) override;
-
- // decl handler
- bool externalEntityDecl(const QString &name, const QString &publicId, const QString &systemId) override ;
-
- // DTD handler
- bool notationDecl(const QString & name, const QString & publicId, const QString & systemId) override;
- bool unparsedEntityDecl(const QString &name, const QString &publicId, const QString &systemId, const QString &notationName) override ;
-
- void setDocumentLocator(QXmlLocator *locator) override;
-
- QString errorMsg;
- int errorLine;
- int errorColumn;
-
-private:
- QDomDocumentPrivate *doc;
- QDomNodePrivate *node;
- QString entityName;
- bool cdata;
- bool nsProcessing;
- QXmlLocator *locator;
- QXmlSimpleReader *reader;
-};
-
-/**************************************************************
- *
* Functions for verifying legal data
*
**************************************************************/
@@ -3154,7 +2649,7 @@ QDomNodePrivate* QDomNamedNodeMapPrivate::item(int index) const
{
if (index >= length() || index < 0)
return nullptr;
- return *(map.constBegin() + index);
+ return *std::next(map.cbegin(), index);
}
int QDomNamedNodeMapPrivate::length() const
@@ -6229,11 +5724,39 @@ bool QDomDocumentPrivate::setContent(QXmlInputSource *source, QXmlReader *reader
if (!reader->parse(source)) {
if (errorMsg)
- *errorMsg = hnd.errorMsg;
+ *errorMsg = std::get<0>(hnd.errorInfo());
+ if (errorLine)
+ *errorLine = std::get<1>(hnd.errorInfo());
+ if (errorColumn)
+ *errorColumn = std::get<2>(hnd.errorInfo());
+ return false;
+ }
+
+ return true;
+}
+
+bool QDomDocumentPrivate::setContent(QXmlStreamReader *reader, bool namespaceProcessing,
+ QString *errorMsg, int *errorLine, int *errorColumn)
+{
+ clear();
+ impl = new QDomImplementationPrivate;
+ type = new QDomDocumentTypePrivate(this, this);
+ type->ref.deref();
+
+ if (!reader) {
+ qWarning("Failed to set content, XML reader is not initialized");
+ return false;
+ }
+
+ QDomParser domParser(this, reader, namespaceProcessing);
+
+ if (!domParser.parse()) {
+ if (errorMsg)
+ *errorMsg = std::get<0>(domParser.errorInfo());
if (errorLine)
- *errorLine = hnd.errorLine;
+ *errorLine = std::get<1>(domParser.errorInfo());
if (errorColumn)
- *errorColumn = hnd.errorColumn;
+ *errorColumn = std::get<2>(domParser.errorInfo());
return false;
}
@@ -6659,9 +6182,16 @@ bool QDomDocument::setContent(const QString& text, bool namespaceProcessing, QSt
{
if (!impl)
impl = new QDomDocumentPrivate();
+
+#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
QXmlInputSource source;
source.setData(text);
return IMPL->setContent(&source, namespaceProcessing, errorMsg, errorLine, errorColumn);
+#else
+ QXmlStreamReader streamReader(text);
+ streamReader.setNamespaceProcessing(namespaceProcessing);
+ return IMPL->setContent(&streamReader, namespaceProcessing, errorMsg, errorLine, errorColumn);
+#endif
}
/*!
@@ -6721,10 +6251,17 @@ bool QDomDocument::setContent(const QByteArray &data, bool namespaceProcessing,
{
if (!impl)
impl = new QDomDocumentPrivate();
+
+#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
QBuffer buf;
buf.setData(data);
QXmlInputSource source(&buf);
return IMPL->setContent(&source, namespaceProcessing, errorMsg, errorLine, errorColumn);
+#else
+ QXmlStreamReader streamReader(data);
+ streamReader.setNamespaceProcessing(namespaceProcessing);
+ return IMPL->setContent(&streamReader, namespaceProcessing, errorMsg, errorLine, errorColumn);
+#endif
}
/*!
@@ -6737,8 +6274,15 @@ bool QDomDocument::setContent(QIODevice* dev, bool namespaceProcessing, QString
{
if (!impl)
impl = new QDomDocumentPrivate();
+
+#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
QXmlInputSource source(dev);
return IMPL->setContent(&source, namespaceProcessing, errorMsg, errorLine, errorColumn);
+#else
+ QXmlStreamReader streamReader(dev);
+ streamReader.setNamespaceProcessing(namespaceProcessing);
+ return IMPL->setContent(&streamReader, namespaceProcessing, errorMsg, errorLine, errorColumn);
+#endif
}
/*!
@@ -6821,6 +6365,33 @@ bool QDomDocument::setContent(QXmlInputSource *source, QXmlReader *reader, QStri
}
/*!
+ \overload
+ \since 5.15
+
+ This function reads the XML document from the QXmlStreamReader \a reader
+ and parses it. Returns \c true if the content was successfully parsed;
+ otherwise returns \c false.
+
+ If \a namespaceProcessing is \c true, the parser recognizes namespaces in the XML
+ file and sets the prefix name, local name and namespace URI to appropriate values.
+ If \a namespaceProcessing is \c false, the parser does no namespace processing when
+ it reads the XML file.
+
+ If a parse error occurs, the error message is placed in \c{*}\a{errorMsg}, the line
+ number in \c{*}\a{errorLine} and the column number in \c{*}\a{errorColumn} (unless
+ the associated pointer is set to 0).
+
+ \sa QXmlStreamReader
+*/
+bool QDomDocument::setContent(QXmlStreamReader *reader, bool namespaceProcessing, QString *errorMsg,
+ int *errorLine, int *errorColumn)
+{
+ if (!impl)
+ impl = new QDomDocumentPrivate();
+ return IMPL->setContent(reader, namespaceProcessing, errorMsg, errorLine, errorColumn);
+}
+
+/*!
Converts the parsed document back to its textual representation.
This function uses \a indent as the amount of space to indent
@@ -7356,200 +6927,6 @@ QDomComment QDomNode::toComment() const
return QDomComment();
}
-/**************************************************************
- *
- * QDomHandler
- *
- **************************************************************/
-
-QDomHandler::QDomHandler(QDomDocumentPrivate* adoc, QXmlSimpleReader* areader, bool namespaceProcessing)
- : errorLine(0), errorColumn(0), doc(adoc), node(adoc), cdata(false),
- nsProcessing(namespaceProcessing), locator(nullptr), reader(areader)
-{
-}
-
-QDomHandler::~QDomHandler()
-{
-}
-
-bool QDomHandler::endDocument()
-{
- // ### is this really necessary? (rms)
- if (node != doc)
- return false;
- return true;
-}
-
-bool QDomHandler::startDTD(const QString& name, const QString& publicId, const QString& systemId)
-{
- doc->doctype()->name = name;
- doc->doctype()->publicId = publicId;
- doc->doctype()->systemId = systemId;
- return true;
-}
-
-bool QDomHandler::startElement(const QString& nsURI, const QString&, const QString& qName, const QXmlAttributes& atts)
-{
- // tag name
- QDomNodePrivate* n;
- if (nsProcessing) {
- n = doc->createElementNS(nsURI, qName);
- } else {
- n = doc->createElement(qName);
- }
-
- if (!n)
- return false;
-
- n->setLocation(locator->lineNumber(), locator->columnNumber());
-
- node->appendChild(n);
- node = n;
-
- // attributes
- for (int i=0; i<atts.length(); i++)
- {
- if (nsProcessing) {
- ((QDomElementPrivate*)node)->setAttributeNS(atts.uri(i), atts.qName(i), atts.value(i));
- } else {
- ((QDomElementPrivate*)node)->setAttribute(atts.qName(i), atts.value(i));
- }
- }
-
- return true;
-}
-
-bool QDomHandler::endElement(const QString&, const QString&, const QString&)
-{
- if (!node || node == doc)
- return false;
- node = node->parent();
-
- return true;
-}
-
-bool QDomHandler::characters(const QString& ch)
-{
- // No text as child of some document
- if (node == doc)
- return false;
-
- QScopedPointer<QDomNodePrivate> n;
- if (cdata) {
- n.reset(doc->createCDATASection(ch));
- } else if (!entityName.isEmpty()) {
- QScopedPointer<QDomEntityPrivate> e(new QDomEntityPrivate(doc, nullptr, entityName,
- QString(), QString(), QString()));
- e->value = ch;
- e->ref.deref();
- doc->doctype()->appendChild(e.data());
- e.take();
- n.reset(doc->createEntityReference(entityName));
- } else {
- n.reset(doc->createTextNode(ch));
- }
- n->setLocation(locator->lineNumber(), locator->columnNumber());
- node->appendChild(n.data());
- n.take();
-
- return true;
-}
-
-bool QDomHandler::processingInstruction(const QString& target, const QString& data)
-{
- QDomNodePrivate *n;
- n = doc->createProcessingInstruction(target, data);
- if (n) {
- n->setLocation(locator->lineNumber(), locator->columnNumber());
- node->appendChild(n);
- return true;
- }
- else
- return false;
-}
-
-bool QDomHandler::skippedEntity(const QString& name)
-{
- // we can only handle inserting entity references into content
- if (reader && !reader->d_ptr->skipped_entity_in_content)
- return true;
-
- QDomNodePrivate *n = doc->createEntityReference(name);
- n->setLocation(locator->lineNumber(), locator->columnNumber());
- node->appendChild(n);
- return true;
-}
-
-bool QDomHandler::fatalError(const QXmlParseException& exception)
-{
- errorMsg = exception.message();
- errorLine = exception.lineNumber();
- errorColumn = exception.columnNumber();
- return QXmlDefaultHandler::fatalError(exception);
-}
-
-bool QDomHandler::startCDATA()
-{
- cdata = true;
- return true;
-}
-
-bool QDomHandler::endCDATA()
-{
- cdata = false;
- return true;
-}
-
-bool QDomHandler::startEntity(const QString &name)
-{
- entityName = name;
- return true;
-}
-
-bool QDomHandler::endEntity(const QString &)
-{
- entityName.clear();
- return true;
-}
-
-bool QDomHandler::comment(const QString& ch)
-{
- QDomNodePrivate *n;
- n = doc->createComment(ch);
- n->setLocation(locator->lineNumber(), locator->columnNumber());
- node->appendChild(n);
- return true;
-}
-
-bool QDomHandler::unparsedEntityDecl(const QString &name, const QString &publicId, const QString &systemId, const QString &notationName)
-{
- QDomEntityPrivate* e = new QDomEntityPrivate(doc, nullptr, name,
- publicId, systemId, notationName);
- // keep the refcount balanced: appendChild() does a ref anyway.
- e->ref.deref();
- doc->doctype()->appendChild(e);
- return true;
-}
-
-bool QDomHandler::externalEntityDecl(const QString &name, const QString &publicId, const QString &systemId)
-{
- return unparsedEntityDecl(name, publicId, systemId, QString());
-}
-
-bool QDomHandler::notationDecl(const QString & name, const QString & publicId, const QString & systemId)
-{
- QDomNotationPrivate* n = new QDomNotationPrivate(doc, nullptr, name, publicId, systemId);
- // keep the refcount balanced: appendChild() does a ref anyway.
- n->ref.deref();
- doc->doctype()->appendChild(n);
- return true;
-}
-
-void QDomHandler::setDocumentLocator(QXmlLocator *locator)
-{
- this->locator = locator;
-}
-
QT_END_NAMESPACE
#endif // QT_NO_DOM
diff --git a/src/xml/dom/qdom.h b/src/xml/dom/qdom.h
index 0a7db7dcd7..1b00a14179 100644
--- a/src/xml/dom/qdom.h
+++ b/src/xml/dom/qdom.h
@@ -91,6 +91,7 @@ class QDomNode;
class QDomEntity;
class QDomNotation;
class QDomCharacterData;
+class QXmlStreamReader;
class Q_XML_EXPORT QDomImplementation
{
@@ -343,6 +344,8 @@ public:
bool setContent(const QString& text, QString *errorMsg=nullptr, int *errorLine=nullptr, int *errorColumn=nullptr );
bool setContent(QIODevice* dev, QString *errorMsg=nullptr, int *errorLine=nullptr, int *errorColumn=nullptr );
bool setContent(QXmlInputSource *source, QXmlReader *reader, QString *errorMsg=nullptr, int *errorLine=nullptr, int *errorColumn=nullptr );
+ bool setContent(QXmlStreamReader *reader, bool namespaceProcessing, QString *errorMsg = nullptr,
+ int *errorLine = nullptr, int *errorColumn = nullptr);
// Qt extensions
QString toString(int = 1) const;
diff --git a/src/xml/dom/qdom_p.h b/src/xml/dom/qdom_p.h
new file mode 100644
index 0000000000..d197e999f1
--- /dev/null
+++ b/src/xml/dom/qdom_p.h
@@ -0,0 +1,535 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtXml module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef QDOM_P_H
+#define QDOM_P_H
+
+#include "qdom.h"
+
+#include <qglobal.h>
+#include <qhash.h>
+#include <qstring.h>
+#include <qlist.h>
+#include <qxml.h>
+
+QT_BEGIN_NAMESPACE
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience of
+// qxml.cpp and qdom.cpp. This header file may change from version to version without
+// notice, or even be removed.
+//
+// We mean it.
+//
+
+/**************************************************************
+ *
+ * Private class declerations
+ *
+ **************************************************************/
+
+class QDomImplementationPrivate
+{
+public:
+ inline QDomImplementationPrivate() {}
+
+ QDomImplementationPrivate *clone();
+ QAtomicInt ref;
+ static QDomImplementation::InvalidDataPolicy invalidDataPolicy;
+};
+
+class QDomNodePrivate
+{
+public:
+ QDomNodePrivate(QDomDocumentPrivate *, QDomNodePrivate *parent = nullptr);
+ QDomNodePrivate(QDomNodePrivate *n, bool deep);
+ virtual ~QDomNodePrivate();
+
+ QString nodeName() const { return name; }
+ QString nodeValue() const { return value; }
+ virtual void setNodeValue(const QString &v) { value = v; }
+
+ QDomDocumentPrivate *ownerDocument();
+ void setOwnerDocument(QDomDocumentPrivate *doc);
+
+ virtual QDomNodePrivate *insertBefore(QDomNodePrivate *newChild, QDomNodePrivate *refChild);
+ virtual QDomNodePrivate *insertAfter(QDomNodePrivate *newChild, QDomNodePrivate *refChild);
+ virtual QDomNodePrivate *replaceChild(QDomNodePrivate *newChild, QDomNodePrivate *oldChild);
+ virtual QDomNodePrivate *removeChild(QDomNodePrivate *oldChild);
+ virtual QDomNodePrivate *appendChild(QDomNodePrivate *newChild);
+
+ QDomNodePrivate *namedItem(const QString &name);
+
+ virtual QDomNodePrivate *cloneNode(bool deep = true);
+ virtual void normalize();
+ virtual void clear();
+
+ inline QDomNodePrivate *parent() const { return hasParent ? ownerNode : nullptr; }
+ inline void setParent(QDomNodePrivate *p)
+ {
+ ownerNode = p;
+ hasParent = true;
+ }
+
+ void setNoParent()
+ {
+ ownerNode = hasParent ? (QDomNodePrivate *)ownerDocument() : nullptr;
+ hasParent = false;
+ }
+
+ // Dynamic cast
+ bool isAttr() const { return nodeType() == QDomNode::AttributeNode; }
+ bool isCDATASection() const { return nodeType() == QDomNode::CDATASectionNode; }
+ bool isDocumentFragment() const { return nodeType() == QDomNode::DocumentFragmentNode; }
+ bool isDocument() const { return nodeType() == QDomNode::DocumentNode; }
+ bool isDocumentType() const { return nodeType() == QDomNode::DocumentTypeNode; }
+ bool isElement() const { return nodeType() == QDomNode::ElementNode; }
+ bool isEntityReference() const { return nodeType() == QDomNode::EntityReferenceNode; }
+ bool isText() const
+ {
+ const QDomNode::NodeType nt = nodeType();
+ return (nt == QDomNode::TextNode) || (nt == QDomNode::CDATASectionNode);
+ }
+ bool isEntity() const { return nodeType() == QDomNode::EntityNode; }
+ bool isNotation() const { return nodeType() == QDomNode::NotationNode; }
+ bool isProcessingInstruction() const
+ {
+ return nodeType() == QDomNode::ProcessingInstructionNode;
+ }
+ bool isCharacterData() const
+ {
+ const QDomNode::NodeType nt = nodeType();
+ return (nt == QDomNode::CharacterDataNode) || (nt == QDomNode::TextNode)
+ || (nt == QDomNode::CommentNode);
+ }
+ bool isComment() const { return nodeType() == QDomNode::CommentNode; }
+
+ virtual QDomNode::NodeType nodeType() const { return QDomNode::BaseNode; }
+
+ virtual void save(QTextStream &, int, int) const;
+
+ void setLocation(int lineNumber, int columnNumber);
+
+ // Variables
+ QAtomicInt ref;
+ QDomNodePrivate *prev;
+ QDomNodePrivate *next;
+ QDomNodePrivate *ownerNode; // either the node's parent or the node's owner document
+ QDomNodePrivate *first;
+ QDomNodePrivate *last;
+
+ QString name; // this is the local name if prefix != null
+ QString value;
+ QString prefix; // set this only for ElementNode and AttributeNode
+ QString namespaceURI; // set this only for ElementNode and AttributeNode
+ bool createdWithDom1Interface : 1;
+ bool hasParent : 1;
+
+ int lineNumber;
+ int columnNumber;
+};
+
+class QDomNodeListPrivate
+{
+public:
+ QDomNodeListPrivate(QDomNodePrivate *);
+ QDomNodeListPrivate(QDomNodePrivate *, const QString &);
+ QDomNodeListPrivate(QDomNodePrivate *, const QString &, const QString &);
+ ~QDomNodeListPrivate();
+
+ bool operator==(const QDomNodeListPrivate &) const;
+ bool operator!=(const QDomNodeListPrivate &) const;
+
+ void createList();
+ QDomNodePrivate *item(int index);
+ int length() const;
+
+ QAtomicInt ref;
+ /*
+ This list contains the children of this node.
+ */
+ QDomNodePrivate *node_impl;
+ QString tagname;
+ QString nsURI;
+ QList<QDomNodePrivate *> list;
+ long timestamp;
+};
+
+class QDomNamedNodeMapPrivate
+{
+public:
+ QDomNamedNodeMapPrivate(QDomNodePrivate *);
+ ~QDomNamedNodeMapPrivate();
+
+ QDomNodePrivate *namedItem(const QString &name) const;
+ QDomNodePrivate *namedItemNS(const QString &nsURI, const QString &localName) const;
+ QDomNodePrivate *setNamedItem(QDomNodePrivate *arg);
+ QDomNodePrivate *setNamedItemNS(QDomNodePrivate *arg);
+ QDomNodePrivate *removeNamedItem(const QString &name);
+ QDomNodePrivate *item(int index) const;
+ int length() const;
+ bool contains(const QString &name) const;
+ bool containsNS(const QString &nsURI, const QString &localName) const;
+
+ /**
+ * Remove all children from the map.
+ */
+ void clearMap();
+ bool isReadOnly() { return readonly; }
+ void setReadOnly(bool r) { readonly = r; }
+ bool isAppendToParent() { return appendToParent; }
+ /**
+ * If true, then the node will redirect insert/remove calls
+ * to its parent by calling QDomNodePrivate::appendChild or removeChild.
+ * In addition the map won't increase or decrease the reference count
+ * of the nodes it contains.
+ *
+ * By default this value is false and the map will handle reference counting
+ * by itself.
+ */
+ void setAppendToParent(bool b) { appendToParent = b; }
+
+ /**
+ * Creates a copy of the map. It is a deep copy
+ * that means that all children are cloned.
+ */
+ QDomNamedNodeMapPrivate *clone(QDomNodePrivate *parent);
+
+ // Variables
+ QAtomicInt ref;
+ QHash<QString, QDomNodePrivate *> map;
+ QDomNodePrivate *parent;
+ bool readonly;
+ bool appendToParent;
+};
+
+class QDomDocumentTypePrivate : public QDomNodePrivate
+{
+public:
+ QDomDocumentTypePrivate(QDomDocumentPrivate *, QDomNodePrivate *parent = nullptr);
+ QDomDocumentTypePrivate(QDomDocumentTypePrivate *n, bool deep);
+ ~QDomDocumentTypePrivate();
+ void init();
+
+ // Reimplemented from QDomNodePrivate
+ QDomNodePrivate *cloneNode(bool deep = true) override;
+ QDomNodePrivate *insertBefore(QDomNodePrivate *newChild, QDomNodePrivate *refChild) override;
+ QDomNodePrivate *insertAfter(QDomNodePrivate *newChild, QDomNodePrivate *refChild) override;
+ QDomNodePrivate *replaceChild(QDomNodePrivate *newChild, QDomNodePrivate *oldChild) override;
+ QDomNodePrivate *removeChild(QDomNodePrivate *oldChild) override;
+ QDomNodePrivate *appendChild(QDomNodePrivate *newChild) override;
+
+ QDomNode::NodeType nodeType() const override { return QDomNode::DocumentTypeNode; }
+
+ void save(QTextStream &s, int, int) const override;
+
+ // Variables
+ QDomNamedNodeMapPrivate *entities;
+ QDomNamedNodeMapPrivate *notations;
+ QString publicId;
+ QString systemId;
+ QString internalSubset;
+};
+
+class QDomDocumentFragmentPrivate : public QDomNodePrivate
+{
+public:
+ QDomDocumentFragmentPrivate(QDomDocumentPrivate *, QDomNodePrivate *parent = nullptr);
+ QDomDocumentFragmentPrivate(QDomNodePrivate *n, bool deep);
+
+ // Reimplemented from QDomNodePrivate
+ virtual QDomNodePrivate *cloneNode(bool deep = true) override;
+ QDomNode::NodeType nodeType() const override { return QDomNode::DocumentFragmentNode; }
+};
+
+class QDomCharacterDataPrivate : public QDomNodePrivate
+{
+public:
+ QDomCharacterDataPrivate(QDomDocumentPrivate *, QDomNodePrivate *parent, const QString &data);
+ QDomCharacterDataPrivate(QDomCharacterDataPrivate *n, bool deep);
+
+ int dataLength() const;
+ QString substringData(unsigned long offset, unsigned long count) const;
+ void appendData(const QString &arg);
+ void insertData(unsigned long offset, const QString &arg);
+ void deleteData(unsigned long offset, unsigned long count);
+ void replaceData(unsigned long offset, unsigned long count, const QString &arg);
+
+ // Reimplemented from QDomNodePrivate
+ QDomNode::NodeType nodeType() const override { return QDomNode::CharacterDataNode; }
+ QDomNodePrivate *cloneNode(bool deep = true) override;
+};
+
+class QDomTextPrivate : public QDomCharacterDataPrivate
+{
+public:
+ QDomTextPrivate(QDomDocumentPrivate *, QDomNodePrivate *parent, const QString &val);
+ QDomTextPrivate(QDomTextPrivate *n, bool deep);
+
+ QDomTextPrivate *splitText(int offset);
+
+ // Reimplemented from QDomNodePrivate
+ QDomNodePrivate *cloneNode(bool deep = true) override;
+ QDomNode::NodeType nodeType() const override { return QDomNode::TextNode; }
+ virtual void save(QTextStream &s, int, int) const override;
+};
+
+class QDomAttrPrivate : public QDomNodePrivate
+{
+public:
+ QDomAttrPrivate(QDomDocumentPrivate *, QDomNodePrivate *, const QString &name);
+ QDomAttrPrivate(QDomDocumentPrivate *, QDomNodePrivate *, const QString &nsURI,
+ const QString &qName);
+ QDomAttrPrivate(QDomAttrPrivate *n, bool deep);
+
+ bool specified() const;
+
+ // Reimplemented from QDomNodePrivate
+ void setNodeValue(const QString &v) override;
+ QDomNodePrivate *cloneNode(bool deep = true) override;
+ QDomNode::NodeType nodeType() const override { return QDomNode::AttributeNode; }
+ virtual void save(QTextStream &s, int, int) const override;
+
+ // Variables
+ bool m_specified;
+};
+
+class QDomElementPrivate : public QDomNodePrivate
+{
+public:
+ QDomElementPrivate(QDomDocumentPrivate *, QDomNodePrivate *parent, const QString &name);
+ QDomElementPrivate(QDomDocumentPrivate *, QDomNodePrivate *parent, const QString &nsURI,
+ const QString &qName);
+ QDomElementPrivate(QDomElementPrivate *n, bool deep);
+ ~QDomElementPrivate();
+
+ QString attribute(const QString &name, const QString &defValue) const;
+ QString attributeNS(const QString &nsURI, const QString &localName,
+ const QString &defValue) const;
+ void setAttribute(const QString &name, const QString &value);
+ void setAttributeNS(const QString &nsURI, const QString &qName, const QString &newValue);
+ void removeAttribute(const QString &name);
+ QDomAttrPrivate *attributeNode(const QString &name);
+ QDomAttrPrivate *attributeNodeNS(const QString &nsURI, const QString &localName);
+ QDomAttrPrivate *setAttributeNode(QDomAttrPrivate *newAttr);
+ QDomAttrPrivate *setAttributeNodeNS(QDomAttrPrivate *newAttr);
+ QDomAttrPrivate *removeAttributeNode(QDomAttrPrivate *oldAttr);
+ bool hasAttribute(const QString &name);
+ bool hasAttributeNS(const QString &nsURI, const QString &localName);
+
+ QString text();
+
+ // Reimplemented from QDomNodePrivate
+ QDomNamedNodeMapPrivate *attributes() { return m_attr; }
+ bool hasAttributes() { return (m_attr->length() > 0); }
+ QDomNode::NodeType nodeType() const override { return QDomNode::ElementNode; }
+ QDomNodePrivate *cloneNode(bool deep = true) override;
+ virtual void save(QTextStream &s, int, int) const override;
+
+ // Variables
+ QDomNamedNodeMapPrivate *m_attr;
+};
+
+class QDomCommentPrivate : public QDomCharacterDataPrivate
+{
+public:
+ QDomCommentPrivate(QDomDocumentPrivate *, QDomNodePrivate *parent, const QString &val);
+ QDomCommentPrivate(QDomCommentPrivate *n, bool deep);
+
+ // Reimplemented from QDomNodePrivate
+ QDomNodePrivate *cloneNode(bool deep = true) override;
+ QDomNode::NodeType nodeType() const override { return QDomNode::CommentNode; }
+ virtual void save(QTextStream &s, int, int) const override;
+};
+
+class QDomCDATASectionPrivate : public QDomTextPrivate
+{
+public:
+ QDomCDATASectionPrivate(QDomDocumentPrivate *, QDomNodePrivate *parent, const QString &val);
+ QDomCDATASectionPrivate(QDomCDATASectionPrivate *n, bool deep);
+
+ // Reimplemented from QDomNodePrivate
+ QDomNodePrivate *cloneNode(bool deep = true) override;
+ QDomNode::NodeType nodeType() const override { return QDomNode::CDATASectionNode; }
+ virtual void save(QTextStream &s, int, int) const override;
+};
+
+class QDomNotationPrivate : public QDomNodePrivate
+{
+public:
+ QDomNotationPrivate(QDomDocumentPrivate *, QDomNodePrivate *parent, const QString &name,
+ const QString &pub, const QString &sys);
+ QDomNotationPrivate(QDomNotationPrivate *n, bool deep);
+
+ // Reimplemented from QDomNodePrivate
+ QDomNodePrivate *cloneNode(bool deep = true) override;
+ QDomNode::NodeType nodeType() const override { return QDomNode::NotationNode; }
+ virtual void save(QTextStream &s, int, int) const override;
+
+ // Variables
+ QString m_sys;
+ QString m_pub;
+};
+
+class QDomEntityPrivate : public QDomNodePrivate
+{
+public:
+ QDomEntityPrivate(QDomDocumentPrivate *, QDomNodePrivate *parent, const QString &name,
+ const QString &pub, const QString &sys, const QString &notation);
+ QDomEntityPrivate(QDomEntityPrivate *n, bool deep);
+
+ // Reimplemented from QDomNodePrivate
+ QDomNodePrivate *cloneNode(bool deep = true) override;
+ QDomNode::NodeType nodeType() const override { return QDomNode::EntityNode; }
+ virtual void save(QTextStream &s, int, int) const override;
+
+ // Variables
+ QString m_sys;
+ QString m_pub;
+ QString m_notationName;
+};
+
+class QDomEntityReferencePrivate : public QDomNodePrivate
+{
+public:
+ QDomEntityReferencePrivate(QDomDocumentPrivate *, QDomNodePrivate *parent, const QString &name);
+ QDomEntityReferencePrivate(QDomNodePrivate *n, bool deep);
+
+ // Reimplemented from QDomNodePrivate
+ QDomNodePrivate *cloneNode(bool deep = true) override;
+ QDomNode::NodeType nodeType() const override { return QDomNode::EntityReferenceNode; }
+ virtual void save(QTextStream &s, int, int) const override;
+};
+
+class QDomProcessingInstructionPrivate : public QDomNodePrivate
+{
+public:
+ QDomProcessingInstructionPrivate(QDomDocumentPrivate *, QDomNodePrivate *parent,
+ const QString &target, const QString &data);
+ QDomProcessingInstructionPrivate(QDomProcessingInstructionPrivate *n, bool deep);
+
+ // Reimplemented from QDomNodePrivate
+ QDomNodePrivate *cloneNode(bool deep = true) override;
+ QDomNode::NodeType nodeType() const override { return QDomNode::ProcessingInstructionNode; }
+ virtual void save(QTextStream &s, int, int) const override;
+};
+
+class QDomDocumentPrivate : public QDomNodePrivate
+{
+public:
+ QDomDocumentPrivate();
+ QDomDocumentPrivate(const QString &name);
+ QDomDocumentPrivate(QDomDocumentTypePrivate *dt);
+ QDomDocumentPrivate(QDomDocumentPrivate *n, bool deep);
+ ~QDomDocumentPrivate();
+
+ bool setContent(QXmlInputSource *source, bool namespaceProcessing, QString *errorMsg,
+ int *errorLine, int *errorColumn);
+ bool setContent(QXmlInputSource *source, QXmlReader *reader, QXmlSimpleReader *simpleReader,
+ QString *errorMsg, int *errorLine, int *errorColumn);
+ bool setContent(QXmlStreamReader *reader, bool namespaceProcessing, QString *errorMsg,
+ int *errorLine, int *errorColumn);
+
+ // Attributes
+ QDomDocumentTypePrivate *doctype() { return type.data(); }
+ QDomImplementationPrivate *implementation() { return impl.data(); }
+ QDomElementPrivate *documentElement();
+
+ // Factories
+ QDomElementPrivate *createElement(const QString &tagName);
+ QDomElementPrivate *createElementNS(const QString &nsURI, const QString &qName);
+ QDomDocumentFragmentPrivate *createDocumentFragment();
+ QDomTextPrivate *createTextNode(const QString &data);
+ QDomCommentPrivate *createComment(const QString &data);
+ QDomCDATASectionPrivate *createCDATASection(const QString &data);
+ QDomProcessingInstructionPrivate *createProcessingInstruction(const QString &target,
+ const QString &data);
+ QDomAttrPrivate *createAttribute(const QString &name);
+ QDomAttrPrivate *createAttributeNS(const QString &nsURI, const QString &qName);
+ QDomEntityReferencePrivate *createEntityReference(const QString &name);
+
+ QDomNodePrivate *importNode(QDomNodePrivate *importedNode, bool deep);
+
+ // Reimplemented from QDomNodePrivate
+ QDomNodePrivate *cloneNode(bool deep = true) override;
+ QDomNode::NodeType nodeType() const override { return QDomNode::DocumentNode; }
+ void clear() override;
+
+ // Variables
+ QExplicitlySharedDataPointer<QDomImplementationPrivate> impl;
+ QExplicitlySharedDataPointer<QDomDocumentTypePrivate> type;
+
+ void saveDocument(QTextStream &stream, const int indent,
+ QDomNode::EncodingPolicy encUsed) const;
+
+ /* \internal
+ Counter for the QDomNodeListPrivate timestamps.
+
+ This is a cache optimization, that might in some cases be effective. The
+ dilemma is that QDomNode::childNodes() returns a list, but the
+ implementation stores the children in a linked list. Hence, in order to
+ get the children out through childNodes(), a list must be populated each
+ time, which is O(N).
+
+ DOM has the requirement of node references being live, see DOM Core
+ Level 3, 1.1.1 The DOM Structure Model, which means that changes to the
+ underlying documents must be reflected in node lists.
+
+ This mechanism, nodeListTime, is a caching optimization that reduces the
+ amount of times the node list is rebuilt, by only doing so when the
+ document actually changes. However, a change to anywhere in any document
+ invalidate all lists, since no dependency tracking is done.
+
+ It functions by that all modifying functions(insertBefore() and so on)
+ increment the count; each QDomNodeListPrivate copies nodeListTime on
+ construction, and compares its own value to nodeListTime in order to
+ determine whether it needs to rebuild.
+
+ This is reentrant. The nodeListTime may overflow, but that's ok since we
+ check for equalness, not whether nodeListTime is smaller than the list's
+ stored timestamp.
+ */
+ long nodeListTime;
+};
+
+QT_END_NAMESPACE
+
+#endif // QDOMHELPERS_P_H
diff --git a/src/xml/dom/qdomhelpers.cpp b/src/xml/dom/qdomhelpers.cpp
new file mode 100644
index 0000000000..9399ad3b9b
--- /dev/null
+++ b/src/xml/dom/qdomhelpers.cpp
@@ -0,0 +1,643 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtXml module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qdomhelpers_p.h"
+#include "qdom_p.h"
+#include "qxmlstream.h"
+#include "private/qxml_p.h"
+
+QT_BEGIN_NAMESPACE
+
+/**************************************************************
+ *
+ * QDomHandler
+ *
+ **************************************************************/
+
+QDomHandler::QDomHandler(QDomDocumentPrivate *adoc, QXmlSimpleReader *areader,
+ bool namespaceProcessing)
+ : cdata(false), reader(areader), domBuilder(adoc, &locator, namespaceProcessing)
+{
+}
+
+QDomHandler::~QDomHandler() {}
+
+bool QDomHandler::endDocument()
+{
+ return domBuilder.endDocument();
+}
+
+bool QDomHandler::startDTD(const QString &name, const QString &publicId, const QString &systemId)
+{
+ return domBuilder.startDTD(name, publicId, systemId);
+}
+
+bool QDomHandler::startElement(const QString &nsURI, const QString &, const QString &qName,
+ const QXmlAttributes &atts)
+{
+ return domBuilder.startElement(nsURI, qName, atts);
+}
+
+bool QDomHandler::endElement(const QString &, const QString &, const QString &)
+{
+ return domBuilder.endElement();
+}
+
+bool QDomHandler::characters(const QString &ch)
+{
+ return domBuilder.characters(ch, cdata);
+}
+
+bool QDomHandler::processingInstruction(const QString &target, const QString &data)
+{
+ return domBuilder.processingInstruction(target, data);
+}
+
+bool QDomHandler::skippedEntity(const QString &name)
+{
+ // we can only handle inserting entity references into content
+ if (reader && !reader->d_ptr->skipped_entity_in_content)
+ return true;
+
+ return domBuilder.skippedEntity(name);
+}
+
+bool QDomHandler::fatalError(const QXmlParseException &exception)
+{
+ domBuilder.errorMsg = exception.message();
+ domBuilder.errorLine = exception.lineNumber();
+ domBuilder.errorColumn = exception.columnNumber();
+ return QXmlDefaultHandler::fatalError(exception);
+}
+
+bool QDomHandler::startCDATA()
+{
+ cdata = true;
+ return true;
+}
+
+bool QDomHandler::endCDATA()
+{
+ cdata = false;
+ return true;
+}
+
+bool QDomHandler::startEntity(const QString &name)
+{
+ return domBuilder.startEntity(name);
+}
+
+bool QDomHandler::endEntity(const QString &)
+{
+ return domBuilder.endEntity();
+}
+
+bool QDomHandler::comment(const QString &ch)
+{
+ return domBuilder.comment(ch);
+}
+
+bool QDomHandler::unparsedEntityDecl(const QString &name, const QString &publicId,
+ const QString &systemId, const QString &notationName)
+{
+ return domBuilder.unparsedEntityDecl(name, publicId, systemId, notationName);
+}
+
+bool QDomHandler::externalEntityDecl(const QString &name, const QString &publicId,
+ const QString &systemId)
+{
+ return unparsedEntityDecl(name, publicId, systemId, QString());
+}
+
+bool QDomHandler::notationDecl(const QString &name, const QString &publicId,
+ const QString &systemId)
+{
+ return domBuilder.notationDecl(name, publicId, systemId);
+}
+
+void QDomHandler::setDocumentLocator(QXmlLocator *locator)
+{
+ this->locator.setLocator(locator);
+}
+
+QDomBuilder::ErrorInfo QDomHandler::errorInfo() const
+{
+ return domBuilder.error();
+}
+
+/**************************************************************
+ *
+ * QXmlDocumentLocators
+ *
+ **************************************************************/
+
+int QDomDocumentLocator::column() const
+{
+ Q_ASSERT(reader);
+ return static_cast<int>(reader->columnNumber());
+}
+
+int QDomDocumentLocator::line() const
+{
+ Q_ASSERT(reader);
+ return static_cast<int>(reader->lineNumber());
+}
+
+void QSAXDocumentLocator::setLocator(QXmlLocator *l)
+{
+ locator = l;
+}
+
+int QSAXDocumentLocator::column() const
+{
+ if (!locator)
+ return 0;
+
+ return static_cast<int>(locator->columnNumber());
+}
+
+int QSAXDocumentLocator::line() const
+{
+ if (!locator)
+ return 0;
+
+ return static_cast<int>(locator->lineNumber());
+}
+
+/**************************************************************
+ *
+ * QDomBuilder
+ *
+ **************************************************************/
+
+QDomBuilder::QDomBuilder(QDomDocumentPrivate *d, QXmlDocumentLocator *l, bool namespaceProcessing)
+ : errorLine(0),
+ errorColumn(0),
+ doc(d),
+ node(d),
+ locator(l),
+ nsProcessing(namespaceProcessing)
+{
+}
+
+QDomBuilder::~QDomBuilder() {}
+
+bool QDomBuilder::endDocument()
+{
+ // ### is this really necessary? (rms)
+ if (node != doc)
+ return false;
+ return true;
+}
+
+bool QDomBuilder::startDTD(const QString &name, const QString &publicId, const QString &systemId)
+{
+ doc->doctype()->name = name;
+ doc->doctype()->publicId = publicId;
+ doc->doctype()->systemId = systemId;
+ return true;
+}
+
+bool QDomBuilder::startElement(const QString &nsURI, const QString &qName,
+ const QXmlAttributes &atts)
+{
+ // tag name
+ QDomNodePrivate *n;
+ if (nsProcessing) {
+ n = doc->createElementNS(nsURI, qName);
+ } else {
+ n = doc->createElement(qName);
+ }
+
+ if (!n)
+ return false;
+
+ n->setLocation(locator->line(), locator->column());
+
+ node->appendChild(n);
+ node = n;
+
+ // attributes
+ for (int i = 0; i < atts.length(); i++) {
+ auto domElement = static_cast<QDomElementPrivate *>(node);
+ if (nsProcessing)
+ domElement->setAttributeNS(atts.uri(i), atts.qName(i), atts.value(i));
+ else
+ domElement->setAttribute(atts.qName(i), atts.value(i));
+ }
+
+ return true;
+}
+
+inline QString stringRefToString(const QStringRef &stringRef)
+{
+ // Calling QStringRef::toString() on a NULL QStringRef in some cases returns
+ // an empty string (i.e. QString("")) instead of a NULL string (i.e. QString()).
+ // QDom implementation differentiates between NULL and empty strings, so
+ // we need this as workaround to keep the current behavior unchanged.
+ return stringRef.isNull() ? QString() : stringRef.toString();
+}
+
+bool QDomBuilder::startElement(const QString &nsURI, const QString &qName,
+ const QXmlStreamAttributes &atts)
+{
+ QDomNodePrivate *n =
+ nsProcessing ? doc->createElementNS(nsURI, qName) : doc->createElement(qName);
+ if (!n)
+ return false;
+
+ n->setLocation(locator->line(), locator->column());
+
+ node->appendChild(n);
+ node = n;
+
+ // attributes
+ for (const auto &attr : atts) {
+ auto domElement = static_cast<QDomElementPrivate *>(node);
+ if (nsProcessing) {
+ domElement->setAttributeNS(stringRefToString(attr.namespaceUri()),
+ stringRefToString(attr.qualifiedName()),
+ stringRefToString(attr.value()));
+ } else {
+ domElement->setAttribute(stringRefToString(attr.qualifiedName()),
+ stringRefToString(attr.value()));
+ }
+ }
+
+ return true;
+}
+
+bool QDomBuilder::endElement()
+{
+ if (!node || node == doc)
+ return false;
+ node = node->parent();
+
+ return true;
+}
+
+bool QDomBuilder::characters(const QString &characters, bool cdata)
+{
+ // No text as child of some document
+ if (node == doc)
+ return false;
+
+ QScopedPointer<QDomNodePrivate> n;
+ if (cdata) {
+ n.reset(doc->createCDATASection(characters));
+ } else if (!entityName.isEmpty()) {
+ QScopedPointer<QDomEntityPrivate> e(
+ new QDomEntityPrivate(doc, nullptr, entityName, QString(), QString(), QString()));
+ e->value = characters;
+ e->ref.deref();
+ doc->doctype()->appendChild(e.data());
+ e.take();
+ n.reset(doc->createEntityReference(entityName));
+ } else {
+ n.reset(doc->createTextNode(characters));
+ }
+ n->setLocation(locator->line(), locator->column());
+ node->appendChild(n.data());
+ n.take();
+
+ return true;
+}
+
+bool QDomBuilder::processingInstruction(const QString &target, const QString &data)
+{
+ QDomNodePrivate *n;
+ n = doc->createProcessingInstruction(target, data);
+ if (n) {
+ n->setLocation(locator->line(), locator->column());
+ node->appendChild(n);
+ return true;
+ } else
+ return false;
+}
+
+bool QDomBuilder::skippedEntity(const QString &name)
+{
+ QDomNodePrivate *n = doc->createEntityReference(name);
+ n->setLocation(locator->line(), locator->column());
+ node->appendChild(n);
+ return true;
+}
+
+void QDomBuilder::fatalError(const QString &message)
+{
+ errorMsg = message;
+ errorLine = static_cast<int>(locator->line());
+ errorColumn = static_cast<int>(locator->column());
+}
+
+QDomBuilder::ErrorInfo QDomBuilder::error() const
+{
+ return ErrorInfo(errorMsg, errorLine, errorColumn);
+}
+
+bool QDomBuilder::startEntity(const QString &name)
+{
+ entityName = name;
+ return true;
+}
+
+bool QDomBuilder::endEntity()
+{
+ entityName.clear();
+ return true;
+}
+
+bool QDomBuilder::comment(const QString &characters)
+{
+ QDomNodePrivate *n;
+ n = doc->createComment(characters);
+ n->setLocation(locator->line(), locator->column());
+ node->appendChild(n);
+ return true;
+}
+
+bool QDomBuilder::unparsedEntityDecl(const QString &name, const QString &publicId,
+ const QString &systemId, const QString &notationName)
+{
+ QDomEntityPrivate *e =
+ new QDomEntityPrivate(doc, nullptr, name, publicId, systemId, notationName);
+ // keep the refcount balanced: appendChild() does a ref anyway.
+ e->ref.deref();
+ doc->doctype()->appendChild(e);
+ return true;
+}
+
+bool QDomBuilder::externalEntityDecl(const QString &name, const QString &publicId,
+ const QString &systemId)
+{
+ return unparsedEntityDecl(name, publicId, systemId, QString());
+}
+
+bool QDomBuilder::notationDecl(const QString &name, const QString &publicId,
+ const QString &systemId)
+{
+ QDomNotationPrivate *n = new QDomNotationPrivate(doc, nullptr, name, publicId, systemId);
+ // keep the refcount balanced: appendChild() does a ref anyway.
+ n->ref.deref();
+ doc->doctype()->appendChild(n);
+ return true;
+}
+
+/**************************************************************
+ *
+ * QDomParser
+ *
+ **************************************************************/
+
+QDomParser::QDomParser(QDomDocumentPrivate *d, QXmlStreamReader *r, bool namespaceProcessing)
+ : reader(r), locator(r), domBuilder(d, &locator, namespaceProcessing)
+{
+}
+
+bool QDomParser::parse()
+{
+ return parseProlog() && parseBody();
+}
+
+QDomBuilder::ErrorInfo QDomParser::errorInfo() const
+{
+ return domBuilder.error();
+}
+
+bool QDomParser::parseProlog()
+{
+ Q_ASSERT(reader);
+
+ bool foundDtd = false;
+
+ while (!reader->atEnd()) {
+ reader->readNext();
+
+ if (reader->hasError()) {
+ domBuilder.fatalError(reader->errorString());
+ return false;
+ }
+
+ switch (reader->tokenType()) {
+ case QXmlStreamReader::StartDocument:
+ if (!reader->documentVersion().isEmpty()) {
+ QString value(QLatin1String("version='"));
+ value += reader->documentVersion();
+ value += QLatin1Char('\'');
+ if (!reader->documentEncoding().isEmpty()) {
+ value += QLatin1String(" encoding='");
+ value += reader->documentEncoding();
+ value += QLatin1Char('\'');
+ }
+ if (reader->isStandaloneDocument()) {
+ value += QLatin1String(" standalone='yes'");
+ } else {
+ // TODO: Add standalone='no', if 'standalone' is specified. With the current
+ // QXmlStreamReader there is no way to figure out if it was specified or not.
+ // QXmlStreamReader needs to be modified for handling that case correctly.
+ }
+
+ if (!domBuilder.processingInstruction(QLatin1String("xml"), value)) {
+ domBuilder.fatalError(
+ QDomParser::tr("Error occurred while processing XML declaration"));
+ return false;
+ }
+ }
+ break;
+ case QXmlStreamReader::DTD:
+ if (foundDtd) {
+ domBuilder.fatalError(QDomParser::tr("Multiple DTD sections are not allowed"));
+ return false;
+ }
+ foundDtd = true;
+
+ if (!domBuilder.startDTD(stringRefToString(reader->dtdName()),
+ stringRefToString(reader->dtdPublicId()),
+ stringRefToString(reader->dtdSystemId()))) {
+ domBuilder.fatalError(
+ QDomParser::tr("Error occurred while processing document type declaration"));
+ return false;
+ }
+ if (!parseMarkupDecl())
+ return false;
+ break;
+ case QXmlStreamReader::Comment:
+ if (!domBuilder.comment(reader->text().toString())) {
+ domBuilder.fatalError(QDomParser::tr("Error occurred while processing comment"));
+ return false;
+ }
+ break;
+ case QXmlStreamReader::ProcessingInstruction:
+ if (!domBuilder.processingInstruction(reader->processingInstructionTarget().toString(),
+ reader->processingInstructionData().toString())) {
+ domBuilder.fatalError(
+ QDomParser::tr("Error occurred while processing a processing instruction"));
+ return false;
+ }
+ break;
+ default:
+ // If the token is none of the above, prolog processing is done.
+ return true;
+ }
+ }
+
+ return true;
+}
+
+bool QDomParser::parseBody()
+{
+ Q_ASSERT(reader);
+
+ std::stack<QStringRef> tagStack;
+ while (!reader->atEnd() && !reader->hasError()) {
+ switch (reader->tokenType()) {
+ case QXmlStreamReader::StartElement:
+ tagStack.push(reader->qualifiedName());
+ if (!domBuilder.startElement(stringRefToString(reader->namespaceUri()),
+ stringRefToString(reader->qualifiedName()),
+ reader->attributes())) {
+ domBuilder.fatalError(
+ QDomParser::tr("Error occurred while processing a start element"));
+ return false;
+ }
+ break;
+ case QXmlStreamReader::EndElement:
+ if (tagStack.empty() || reader->qualifiedName() != tagStack.top()) {
+ domBuilder.fatalError(
+ QDomParser::tr("Unexpected end element '%1'").arg(reader->name()));
+ return false;
+ }
+ tagStack.pop();
+ if (!domBuilder.endElement()) {
+ domBuilder.fatalError(
+ QDomParser::tr("Error occurred while processing an end element"));
+ return false;
+ }
+ break;
+ case QXmlStreamReader::Characters:
+ if (!reader->isWhitespace()) { // Skip the content consisting of only whitespaces
+ if (!reader->text().toString().trimmed().isEmpty()) {
+ if (!domBuilder.characters(reader->text().toString(), reader->isCDATA())) {
+ domBuilder.fatalError(QDomParser::tr(
+ "Error occurred while processing the element content"));
+ return false;
+ }
+ }
+ }
+ break;
+ case QXmlStreamReader::Comment:
+ if (!domBuilder.comment(reader->text().toString())) {
+ domBuilder.fatalError(QDomParser::tr("Error occurred while processing comments"));
+ return false;
+ }
+ break;
+ case QXmlStreamReader::ProcessingInstruction:
+ if (!domBuilder.processingInstruction(reader->processingInstructionTarget().toString(),
+ reader->processingInstructionData().toString())) {
+ domBuilder.fatalError(
+ QDomParser::tr("Error occurred while processing a processing instruction"));
+ return false;
+ }
+ break;
+ case QXmlStreamReader::EntityReference:
+ if (!domBuilder.skippedEntity(reader->name().toString())) {
+ domBuilder.fatalError(
+ QDomParser::tr("Error occurred while processing an entity reference"));
+ return false;
+ }
+ break;
+ default:
+ domBuilder.fatalError(QDomParser::tr("Unexpected token"));
+ return false;
+ }
+
+ reader->readNext();
+ }
+
+ if (reader->hasError()) {
+ domBuilder.fatalError(reader->errorString());
+ reader->readNext();
+ return false;
+ }
+
+ if (!tagStack.empty()) {
+ domBuilder.fatalError(QDomParser::tr("Tag mismatch"));
+ return false;
+ }
+
+ return true;
+}
+
+bool QDomParser::parseMarkupDecl()
+{
+ Q_ASSERT(reader);
+
+ const auto entities = reader->entityDeclarations();
+ for (const auto &entityDecl : entities) {
+ // Entity declarations are created only for Extrenal Entities. Internal Entities
+ // are parsed, and QXmlStreamReader handles the parsing itself and returns the
+ // parsed result. So we don't need to do anything for the Internal Entities.
+ if (!entityDecl.publicId().isEmpty() || !entityDecl.systemId().isEmpty()) {
+ // External Entity
+ if (!domBuilder.unparsedEntityDecl(stringRefToString(entityDecl.name()),
+ stringRefToString(entityDecl.publicId()),
+ stringRefToString(entityDecl.systemId()),
+ stringRefToString(entityDecl.notationName()))) {
+ domBuilder.fatalError(
+ QDomParser::tr("Error occurred while processing entity declaration"));
+ return false;
+ }
+ }
+ }
+
+ const auto notations = reader->notationDeclarations();
+ for (const auto &notationDecl : notations) {
+ if (!domBuilder.notationDecl(stringRefToString(notationDecl.name()),
+ stringRefToString(notationDecl.publicId()),
+ stringRefToString(notationDecl.systemId()))) {
+ domBuilder.fatalError(
+ QDomParser::tr("Error occurred while processing notation declaration"));
+ return false;
+ }
+ }
+
+ return true;
+}
+
+QT_END_NAMESPACE
diff --git a/src/xml/dom/qdomhelpers_p.h b/src/xml/dom/qdomhelpers_p.h
new file mode 100644
index 0000000000..f5efd8a42d
--- /dev/null
+++ b/src/xml/dom/qdomhelpers_p.h
@@ -0,0 +1,235 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtXml module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef QDOMHELPERS_P_H
+#define QDOMHELPERS_P_H
+
+#include <qcoreapplication.h>
+#include <qglobal.h>
+#include <qxml.h>
+
+QT_BEGIN_NAMESPACE
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience of
+// qxml.cpp and qdom.cpp. This header file may change from version to version without
+// notice, or even be removed.
+//
+// We mean it.
+//
+
+class QDomDocumentPrivate;
+class QDomNodePrivate;
+class QXmlStreamReader;
+class QXmlStreamAttributes;
+
+/**************************************************************
+ *
+ * QXmlDocumentLocators
+ *
+ **************************************************************/
+
+/* TODO: QXmlDocumentLocator can be removed when the SAX-based
+ * implementation is removed. Right now it is needed for QDomBuilder
+ * to work with both QXmlStreamReader and QXmlInputSource (SAX)
+ * based implementations.
+ */
+class QXmlDocumentLocator
+{
+public:
+ virtual ~QXmlDocumentLocator() = default;
+ virtual int column() const = 0;
+ virtual int line() const = 0;
+};
+
+class QDomDocumentLocator : public QXmlDocumentLocator
+{
+public:
+ QDomDocumentLocator(QXmlStreamReader *r) : reader(r) {}
+ ~QDomDocumentLocator() override = default;
+
+ int column() const override;
+ int line() const override;
+
+private:
+ QXmlStreamReader *reader;
+};
+
+class QSAXDocumentLocator : public QXmlDocumentLocator
+{
+public:
+ ~QSAXDocumentLocator() override = default;
+
+ int column() const override;
+ int line() const override;
+
+ void setLocator(QXmlLocator *l);
+
+private:
+ QXmlLocator *locator = nullptr;
+};
+
+/**************************************************************
+ *
+ * QDomBuilder
+ *
+ **************************************************************/
+
+class QDomBuilder
+{
+public:
+ QDomBuilder(QDomDocumentPrivate *d, QXmlDocumentLocator *l, bool namespaceProcessing);
+ ~QDomBuilder();
+
+ bool endDocument();
+ bool startElement(const QString &nsURI, const QString &qName, const QXmlAttributes &atts);
+ bool startElement(const QString &nsURI, const QString &qName, const QXmlStreamAttributes &atts);
+ bool endElement();
+ bool characters(const QString &characters, bool cdata = false);
+ bool processingInstruction(const QString &target, const QString &data);
+ bool skippedEntity(const QString &name);
+ bool startEntity(const QString &name);
+ bool endEntity();
+ bool startDTD(const QString &name, const QString &publicId, const QString &systemId);
+ bool comment(const QString &characters);
+ bool externalEntityDecl(const QString &name, const QString &publicId, const QString &systemId);
+ bool notationDecl(const QString &name, const QString &publicId, const QString &systemId);
+ bool unparsedEntityDecl(const QString &name, const QString &publicId, const QString &systemId,
+ const QString &notationName);
+
+ void fatalError(const QString &message);
+
+ using ErrorInfo = std::tuple<QString, int, int>;
+ ErrorInfo error() const;
+
+ QString errorMsg;
+ int errorLine;
+ int errorColumn;
+
+private:
+ QDomDocumentPrivate *doc;
+ QDomNodePrivate *node;
+ QXmlDocumentLocator *locator;
+ QString entityName;
+ bool nsProcessing;
+};
+
+/**************************************************************
+ *
+ * QDomHandler
+ *
+ **************************************************************/
+
+class QDomHandler : public QXmlDefaultHandler
+{
+public:
+ QDomHandler(QDomDocumentPrivate *d, QXmlSimpleReader *reader, bool namespaceProcessing);
+ ~QDomHandler() override;
+
+ // content handler
+ bool endDocument() override;
+ bool startElement(const QString &nsURI, const QString &localName, const QString &qName,
+ const QXmlAttributes &atts) override;
+ bool endElement(const QString &nsURI, const QString &localName, const QString &qName) override;
+ bool characters(const QString &ch) override;
+ bool processingInstruction(const QString &target, const QString &data) override;
+ bool skippedEntity(const QString &name) override;
+
+ // error handler
+ bool fatalError(const QXmlParseException &exception) override;
+
+ // lexical handler
+ bool startCDATA() override;
+ bool endCDATA() override;
+ bool startEntity(const QString &) override;
+ bool endEntity(const QString &) override;
+ bool startDTD(const QString &name, const QString &publicId, const QString &systemId) override;
+ bool comment(const QString &ch) override;
+
+ // decl handler
+ bool externalEntityDecl(const QString &name, const QString &publicId,
+ const QString &systemId) override;
+
+ // DTD handler
+ bool notationDecl(const QString &name, const QString &publicId,
+ const QString &systemId) override;
+ bool unparsedEntityDecl(const QString &name, const QString &publicId, const QString &systemId,
+ const QString &notationName) override;
+
+ void setDocumentLocator(QXmlLocator *locator) override;
+
+ QDomBuilder::ErrorInfo errorInfo() const;
+
+private:
+ bool cdata;
+ QXmlSimpleReader *reader;
+ QSAXDocumentLocator locator;
+ QDomBuilder domBuilder;
+};
+
+/**************************************************************
+ *
+ * QDomParser
+ *
+ **************************************************************/
+
+class QDomParser
+{
+ Q_DECLARE_TR_FUNCTIONS(QDomParser)
+public:
+ QDomParser(QDomDocumentPrivate *d, QXmlStreamReader *r, bool namespaceProcessing);
+
+ bool parse();
+ QDomBuilder::ErrorInfo errorInfo() const;
+
+private:
+ bool parseProlog();
+ bool parseBody();
+ bool parseMarkupDecl();
+
+ QXmlStreamReader *reader;
+ QDomDocumentLocator locator;
+ QDomBuilder domBuilder;
+};
+
+QT_END_NAMESPACE
+
+#endif // QDOMHELPERS_P_H