qtbindings 4.8.6.3 → 4.8.6.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/COPYING.LIB.txt +510 -510
- data/COPYING.txt +286 -286
- data/KNOWN_ISSUES.txt +17 -17
- data/bin/rbqtapi +0 -0
- data/bin/rbrcc +0 -0
- data/bin/rbuic4 +0 -0
- data/bin/smokeapi +0 -0
- data/bin/smokedeptool +0 -0
- data/examples/designer/calculatorbuilder/calculatorbuilder.qrc +5 -5
- data/examples/designer/calculatorbuilder/calculatorform.rb +60 -60
- data/examples/designer/calculatorbuilder/calculatorform.ui +299 -299
- data/examples/designer/calculatorbuilder/main.rb +34 -34
- data/examples/designer/calculatorbuilder/makefile +2 -2
- data/examples/designer/calculatorform/calculatorform.rb +46 -46
- data/examples/designer/calculatorform/calculatorform.ui +277 -277
- data/examples/designer/calculatorform/main.rb +32 -32
- data/examples/designer/calculatorform/makefile +3 -3
- data/examples/desktop/screenshot/main.rb +32 -32
- data/examples/desktop/screenshot/screenshot.rb +157 -157
- data/examples/desktop/systray/images/bad.svg +64 -64
- data/examples/desktop/systray/images/heart.svg +55 -55
- data/examples/desktop/systray/images/trash.svg +58 -58
- data/examples/desktop/systray/main.rb +41 -41
- data/examples/desktop/systray/makefile +2 -2
- data/examples/desktop/systray/systray.qrc +7 -7
- data/examples/desktop/systray/window.rb +219 -219
- data/examples/dialogs/complexwizard/complexwizard.rb +140 -140
- data/examples/dialogs/complexwizard/licensewizard.rb +294 -294
- data/examples/dialogs/complexwizard/main.rb +31 -31
- data/examples/dialogs/configdialog/configdialog.rb +109 -109
- data/examples/dialogs/configdialog/main.rb +31 -31
- data/examples/dialogs/configdialog/pages.rb +140 -140
- data/examples/dialogs/extension/finddialog.rb +89 -89
- data/examples/dialogs/extension/main.rb +31 -31
- data/examples/dialogs/findfiles/main.rb +32 -32
- data/examples/dialogs/findfiles/window.rb +177 -177
- data/examples/dialogs/simplewizard/classwizard.rb +374 -374
- data/examples/dialogs/simplewizard/main.rb +31 -31
- data/examples/dialogs/simplewizard/simplewizard.rb +110 -110
- data/examples/dialogs/standarddialogs/dialog.rb +340 -340
- data/examples/dialogs/standarddialogs/main.rb +31 -31
- data/examples/dialogs/tabdialog/main.rb +38 -38
- data/examples/dialogs/tabdialog/tabdialog.rb +178 -178
- data/examples/draganddrop/draggableicons/dragwidget.rb +125 -125
- data/examples/draganddrop/draggableicons/main.rb +41 -41
- data/examples/draganddrop/draggabletext/draglabel.rb +51 -51
- data/examples/draganddrop/draggabletext/dragwidget.rb +94 -94
- data/examples/draganddrop/draggabletext/main.rb +33 -33
- data/examples/draganddrop/draggabletext/words.txt +41 -41
- data/examples/draganddrop/dropsite/dropsitewidget.rb +99 -99
- data/examples/draganddrop/dropsite/dropsitewindow.rb +114 -114
- data/examples/draganddrop/dropsite/main.rb +33 -33
- data/examples/draganddrop/fridgemagnets/draglabel.rb +78 -78
- data/examples/draganddrop/fridgemagnets/dragwidget.rb +130 -130
- data/examples/draganddrop/fridgemagnets/main.rb +33 -33
- data/examples/draganddrop/fridgemagnets/words.txt +48 -48
- data/examples/draganddrop/puzzle/main.rb +33 -33
- data/examples/draganddrop/puzzle/mainwindow.rb +136 -136
- data/examples/draganddrop/puzzle/pieceslist.rb +95 -95
- data/examples/draganddrop/puzzle/puzzlewidget.rb +190 -190
- data/examples/graphicsview/collidingmice/main.rb +53 -53
- data/examples/graphicsview/collidingmice/makefile +2 -2
- data/examples/graphicsview/collidingmice/mice.qrc +5 -5
- data/examples/graphicsview/collidingmice/mouse.rb +176 -176
- data/examples/graphicsview/dragdroprobot/coloritem.rb +86 -86
- data/examples/graphicsview/dragdroprobot/main.rb +57 -57
- data/examples/graphicsview/dragdroprobot/makefile +2 -2
- data/examples/graphicsview/dragdroprobot/robot.qrc +5 -5
- data/examples/graphicsview/dragdroprobot/robot.rb +246 -246
- data/examples/itemviews/chart/chart.qrc +5 -5
- data/examples/itemviews/chart/main.rb +33 -33
- data/examples/itemviews/chart/mainwindow.rb +151 -151
- data/examples/itemviews/chart/makefile +2 -2
- data/examples/itemviews/chart/mydata.cht +8 -8
- data/examples/itemviews/chart/pieview.rb +516 -516
- data/examples/itemviews/chart/qtdata.cht +14 -14
- data/examples/itemviews/dirview/main.rb +39 -39
- data/examples/itemviews/pixelator/imagemodel.rb +51 -51
- data/examples/itemviews/pixelator/images.qrc +5 -5
- data/examples/itemviews/pixelator/main.rb +34 -34
- data/examples/itemviews/pixelator/mainwindow.rb +218 -218
- data/examples/itemviews/pixelator/makefile +3 -3
- data/examples/itemviews/pixelator/pixeldelegate.rb +67 -67
- data/examples/itemviews/puzzle/main.rb +36 -36
- data/examples/itemviews/puzzle/mainwindow.rb +143 -143
- data/examples/itemviews/puzzle/piecesmodel.rb +174 -174
- data/examples/itemviews/puzzle/puzzlewidget.rb +192 -192
- data/examples/itemviews/simpledommodel/domitem.rb +62 -62
- data/examples/itemviews/simpledommodel/dommodel.rb +139 -139
- data/examples/itemviews/simpledommodel/main.rb +33 -33
- data/examples/itemviews/simpledommodel/mainwindow.rb +66 -66
- data/examples/itemviews/simpletreemodel/default.txt +40 -40
- data/examples/itemviews/simpletreemodel/main.rb +41 -41
- data/examples/itemviews/simpletreemodel/makefile +2 -2
- data/examples/itemviews/simpletreemodel/simpletreemodel.qrc +5 -5
- data/examples/itemviews/simpletreemodel/treeitem.rb +67 -67
- data/examples/itemviews/simpletreemodel/treemodel.rb +164 -164
- data/examples/itemviews/sortingmodel/default.txt +40 -40
- data/examples/itemviews/sortingmodel/main.rb +53 -53
- data/examples/itemviews/sortingmodel/treeitem.rb +73 -73
- data/examples/itemviews/sortingmodel/treemodel.rb +166 -166
- data/examples/itemviews/spinboxdelegate/main.rb +47 -47
- data/examples/itemviews/spinboxdelegate/spinboxdelegate.rb +62 -62
- data/examples/killerfilter/killerfilter.rb +55 -55
- data/examples/layouts/basiclayouts/dialog.rb +110 -110
- data/examples/layouts/basiclayouts/main.rb +31 -31
- data/examples/layouts/borderlayout/borderlayout.rb +190 -190
- data/examples/layouts/borderlayout/main.rb +32 -32
- data/examples/layouts/borderlayout/window.rb +52 -52
- data/examples/layouts/flowlayouts/flowlayout.rb +108 -108
- data/examples/layouts/flowlayouts/main.rb +32 -32
- data/examples/layouts/flowlayouts/window.rb +43 -43
- data/examples/mainwindows/application/main.rb +32 -32
- data/examples/mainwindows/application/mainwindow.rb +285 -285
- data/examples/mainwindows/dockwidgets/main.rb +32 -32
- data/examples/mainwindows/dockwidgets/mainwindow.rb +302 -302
- data/examples/mainwindows/mdi/main.rb +32 -32
- data/examples/mainwindows/mdi/mainwindow.rb +363 -363
- data/examples/mainwindows/mdi/mdichild.rb +152 -152
- data/examples/mainwindows/menus/main.rb +32 -32
- data/examples/mainwindows/menus/mainwindow.rb +327 -327
- data/examples/mainwindows/recentfiles/main.rb +32 -32
- data/examples/mainwindows/recentfiles/mainwindow.rb +258 -258
- data/examples/mainwindows/sdi/main.rb +32 -32
- data/examples/mainwindows/sdi/mainwindow.rb +335 -335
- data/examples/network/broadcastreceiver/main.rb +32 -32
- data/examples/network/broadcastreceiver/receiver.rb +64 -64
- data/examples/network/broadcastsender/main.rb +32 -32
- data/examples/network/broadcastsender/sender.rb +72 -72
- data/examples/network/fortuneclient/client.rb +149 -149
- data/examples/network/fortuneclient/main.rb +32 -32
- data/examples/network/fortuneserver/main.rb +32 -32
- data/examples/network/fortuneserver/server.rb +88 -88
- data/examples/network/ftp/ftpwindow.rb +259 -259
- data/examples/network/ftp/main.rb +32 -32
- data/examples/network/http/httpwindow.rb +187 -187
- data/examples/network/http/main.rb +32 -32
- data/examples/network/loopback/dialog.rb +163 -163
- data/examples/network/loopback/main.rb +32 -32
- data/examples/opengl/grabber/glwidget.rb +265 -265
- data/examples/opengl/grabber/main.rb +32 -32
- data/examples/opengl/grabber/mainwindow.rb +189 -189
- data/examples/opengl/hellogl/glwidget.rb +226 -226
- data/examples/opengl/hellogl/main.rb +32 -32
- data/examples/opengl/hellogl/window.rb +66 -66
- data/examples/opengl/textures/glwidget.rb +151 -151
- data/examples/opengl/textures/main.rb +32 -32
- data/examples/opengl/textures/window.rb +77 -77
- data/examples/painting/basicdrawing/main.rb +32 -32
- data/examples/painting/basicdrawing/renderarea.rb +166 -166
- data/examples/painting/basicdrawing/window.rb +215 -215
- data/examples/painting/concentriccircles/circlewidget.rb +88 -88
- data/examples/painting/concentriccircles/main.rb +32 -32
- data/examples/painting/concentriccircles/window.rb +72 -72
- data/examples/painting/fontsampler/main.rb +32 -32
- data/examples/painting/fontsampler/mainwindow.rb +369 -369
- data/examples/painting/fontsampler/mainwindowbase.ui +136 -136
- data/examples/painting/fontsampler/makefile +8 -8
- data/examples/painting/fontsampler/previewdialog.rb +257 -257
- data/examples/painting/fontsampler/previewdialogbase.ui +224 -224
- data/examples/painting/fontsampler/previewlabel.rb +43 -43
- data/examples/painting/imagecomposition/imagecomposer.rb +152 -152
- data/examples/painting/imagecomposition/imagecomposition.qrc +6 -6
- data/examples/painting/imagecomposition/main.rb +33 -33
- data/examples/painting/imagecomposition/makefile +2 -2
- data/examples/painting/painterpaths/main.rb +32 -32
- data/examples/painting/painterpaths/renderarea.rb +97 -97
- data/examples/painting/painterpaths/window.rb +247 -247
- data/examples/painting/svgviewer/files/bubbles.svg +212 -212
- data/examples/painting/svgviewer/files/cubic.svg +77 -77
- data/examples/painting/svgviewer/files/spheres.svg +79 -79
- data/examples/painting/svgviewer/main.rb +38 -38
- data/examples/painting/svgviewer/mainwindow.rb +99 -99
- data/examples/painting/svgviewer/makefile +2 -2
- data/examples/painting/svgviewer/svgview.rb +156 -156
- data/examples/painting/svgviewer/svgviewer.qrc +6 -6
- data/examples/painting/svgviewer/svgwindow.rb +87 -87
- data/examples/painting/transformations/main.rb +32 -32
- data/examples/painting/transformations/renderarea.rb +127 -127
- data/examples/painting/transformations/window.rb +153 -153
- data/examples/passivepopup/passivepopup.rb +38 -38
- data/examples/qdbus/chat/chat.rb +146 -146
- data/examples/qdbus/chat/chat_adaptor.rb +12 -12
- data/examples/qdbus/chat/chat_interface.rb +13 -13
- data/examples/qdbus/chat/chatmainwindow.ui +184 -184
- data/examples/qdbus/chat/chatsetnickname.ui +145 -145
- data/examples/qdbus/chat/makefile +8 -8
- data/examples/qdbus/complexpingpong/complexping.rb +92 -92
- data/examples/qdbus/complexpingpong/complexpong.rb +83 -83
- data/examples/qdbus/complexpingpong/ping-common.rb +1 -1
- data/examples/qdbus/listnames/listnames.rb +69 -69
- data/examples/qdbus/pingpong/ping-common.rb +1 -1
- data/examples/qdbus/pingpong/ping.rb +52 -52
- data/examples/qdbus/pingpong/pong.rb +55 -55
- data/examples/qdbus/remotecontrolledcar/car/car.rb +151 -151
- data/examples/qdbus/remotecontrolledcar/car/main.rb +50 -50
- data/examples/qdbus/remotecontrolledcar/controller/controller.rb +66 -66
- data/examples/qdbus/remotecontrolledcar/controller/controller.ui +61 -61
- data/examples/qdbus/remotecontrolledcar/controller/main.rb +32 -32
- data/examples/qdbus/remotecontrolledcar/controller/makefile +2 -2
- data/examples/qtscribble/scribble.rb +270 -270
- data/examples/richtext/calendar/main.rb +33 -33
- data/examples/richtext/calendar/mainwindow.rb +173 -173
- data/examples/richtext/orderform/detailsdialog.rb +130 -130
- data/examples/richtext/orderform/main.rb +34 -34
- data/examples/richtext/orderform/mainwindow.rb +194 -194
- data/examples/richtext/syntaxhighlighter/examples/example +79 -79
- data/examples/richtext/syntaxhighlighter/highlighter.rb +90 -90
- data/examples/richtext/syntaxhighlighter/main.rb +34 -34
- data/examples/richtext/syntaxhighlighter/mainwindow.rb +105 -105
- data/examples/ruboids/LICENSE.txt +58 -58
- data/examples/ruboids/Manifest +26 -26
- data/examples/ruboids/README +53 -53
- data/examples/ruboids/TODO +29 -29
- data/examples/ruboids/boids.properties +33 -33
- data/examples/ruboids/generateManifest.rb +42 -42
- data/examples/ruboids/release.rb +152 -152
- data/examples/ruboids/ruboids/Boid.rb +141 -141
- data/examples/ruboids/ruboids/BoidView.rb +159 -159
- data/examples/ruboids/ruboids/Camera.rb +24 -24
- data/examples/ruboids/ruboids/CameraDialog.rb +218 -218
- data/examples/ruboids/ruboids/Canvas.rb +143 -143
- data/examples/ruboids/ruboids/Cloud.rb +61 -61
- data/examples/ruboids/ruboids/CloudView.rb +54 -54
- data/examples/ruboids/ruboids/Flock.rb +47 -47
- data/examples/ruboids/ruboids/Graphics.rb +278 -278
- data/examples/ruboids/ruboids/Params.rb +87 -87
- data/examples/ruboids/ruboids/Point.rb +153 -153
- data/examples/ruboids/ruboids/Thing.rb +34 -34
- data/examples/ruboids/ruboids/Triangle.rb +21 -21
- data/examples/ruboids/ruboids/View.rb +88 -88
- data/examples/ruboids/ruboids/World.rb +82 -82
- data/examples/ruboids/ruboids/WorldWindow.rb +52 -52
- data/examples/ruboids/ruboids/info.rb +12 -12
- data/examples/ruboids/ruboids/ruboids.rb +29 -29
- data/examples/threading/main_thread.rb +19 -19
- data/examples/tutorial/t1/t1.rb +10 -10
- data/examples/tutorial/t10/cannon.rb +72 -72
- data/examples/tutorial/t10/lcdrange.rb +45 -45
- data/examples/tutorial/t10/t10.rb +55 -55
- data/examples/tutorial/t11/cannon.rb +123 -124
- data/examples/tutorial/t11/lcdrange.rb +45 -45
- data/examples/tutorial/t11/t11.rb +65 -65
- data/examples/tutorial/t12/cannon.rb +157 -158
- data/examples/tutorial/t12/lcdrange.rb +58 -59
- data/examples/tutorial/t12/t12.rb +65 -66
- data/examples/tutorial/t13/cannon.rb +206 -208
- data/examples/tutorial/t13/gamebrd.rb +112 -113
- data/examples/tutorial/t13/lcdrange.rb +59 -60
- data/examples/tutorial/t13/t13.rb +11 -11
- data/examples/tutorial/t14/cannon.rb +262 -263
- data/examples/tutorial/t14/gamebrd.rb +122 -123
- data/examples/tutorial/t14/lcdrange.rb +61 -63
- data/examples/tutorial/t14/t14.rb +11 -11
- data/examples/tutorial/t2/t2.rb +16 -16
- data/examples/tutorial/t3/t3.rb +17 -18
- data/examples/tutorial/t4/t4.rb +23 -25
- data/examples/tutorial/t5/t5.rb +35 -37
- data/examples/tutorial/t6/t6.rb +48 -52
- data/examples/tutorial/t7/lcdrange.rb +32 -32
- data/examples/tutorial/t7/t7.rb +40 -42
- data/examples/tutorial/t8/cannon.rb +37 -38
- data/examples/tutorial/t8/lcdrange.rb +45 -45
- data/examples/tutorial/t8/t8.rb +43 -43
- data/examples/tutorial/t9/cannon.rb +44 -45
- data/examples/tutorial/t9/lcdrange.rb +46 -46
- data/examples/tutorial/t9/t9.rb +43 -43
- data/examples/widgets/analogclock/analogclock.rb +94 -94
- data/examples/widgets/analogclock/main.rb +9 -9
- data/examples/widgets/calculator/button.rb +45 -45
- data/examples/widgets/calculator/calculator.rb +382 -382
- data/examples/widgets/calculator/main.rb +32 -32
- data/examples/widgets/charactermap/characterwidget.rb +109 -109
- data/examples/widgets/charactermap/main.rb +32 -32
- data/examples/widgets/charactermap/mainwindow.rb +118 -118
- data/examples/widgets/digitalclock/digitalclock.rb +30 -30
- data/examples/widgets/digitalclock/main.rb +9 -9
- data/examples/widgets/groupbox/main.rb +32 -32
- data/examples/widgets/groupbox/window.rb +134 -134
- data/examples/widgets/icons/iconpreviewarea.rb +110 -110
- data/examples/widgets/icons/iconsizespinbox.rb +39 -39
- data/examples/widgets/icons/imagedelegate.rb +73 -73
- data/examples/widgets/icons/main.rb +32 -32
- data/examples/widgets/icons/mainwindow.rb +351 -351
- data/examples/widgets/imageviewer/imageviewer.rb +219 -219
- data/examples/widgets/imageviewer/main.rb +32 -32
- data/examples/widgets/lineedits/main.rb +32 -32
- data/examples/widgets/lineedits/window.rb +199 -199
- data/examples/widgets/movie/main.rb +32 -32
- data/examples/widgets/movie/movieplayer.rb +201 -201
- data/examples/widgets/screenshot/main.rb +32 -32
- data/examples/widgets/screenshot/screenshot.rb +154 -154
- data/examples/widgets/scribble/main.rb +32 -32
- data/examples/widgets/scribble/mainwindow.rb +202 -202
- data/examples/widgets/scribble/scribblearea.rb +154 -154
- data/examples/widgets/sliders/main.rb +32 -32
- data/examples/widgets/sliders/slidersgroup.rb +97 -97
- data/examples/widgets/sliders/window.rb +124 -124
- data/examples/widgets/spinboxes/main.rb +32 -32
- data/examples/widgets/spinboxes/window.rb +213 -213
- data/examples/widgets/tetrix/main.rb +33 -33
- data/examples/widgets/tetrix/tetrixboard.rb +346 -346
- data/examples/widgets/tetrix/tetrixpiece.rb +135 -135
- data/examples/widgets/tetrix/tetrixwindow.rb +88 -88
- data/examples/widgets/tooltips/main.rb +32 -32
- data/examples/widgets/tooltips/shapeitem.rb +31 -31
- data/examples/widgets/tooltips/sortingbox.rb +222 -222
- data/examples/widgets/wiggly/dialog.rb +48 -48
- data/examples/widgets/wiggly/main.rb +9 -9
- data/examples/widgets/wiggly/wigglywidget.rb +75 -75
- data/examples/widgets/windowflags/controllerwindow.rb +195 -195
- data/examples/widgets/windowflags/main.rb +32 -32
- data/examples/widgets/windowflags/previewwindow.rb +103 -103
- data/examples/xml/dombookmarks/frank.xbel +230 -230
- data/examples/xml/dombookmarks/jennifer.xbel +93 -93
- data/examples/xml/dombookmarks/main.rb +34 -34
- data/examples/xml/dombookmarks/mainwindow.rb +129 -129
- data/examples/xml/dombookmarks/xbeltree.rb +172 -172
- data/examples/xml/saxbookmarks/frank.xbel +230 -230
- data/examples/xml/saxbookmarks/jennifer.xbel +93 -93
- data/examples/xml/saxbookmarks/main.rb +34 -34
- data/examples/xml/saxbookmarks/mainwindow.rb +144 -144
- data/examples/xml/saxbookmarks/xbelgenerator.rb +95 -95
- data/examples/xml/saxbookmarks/xbelhandler.rb +122 -122
- data/ext/cmake/modules/BasicFindPackageVersion.cmake.in +30 -30
- data/ext/cmake/modules/CMakeCSharpCompiler.cmake.in +7 -7
- data/ext/cmake/modules/CMakeCSharpInformation.cmake +366 -366
- data/ext/cmake/modules/CMakeDetermineCSharpCompiler.cmake +85 -85
- data/ext/cmake/modules/CMakeTestCSharpCompiler.cmake +1 -1
- data/ext/cmake/modules/FindLibraryWithDebug.cmake +113 -113
- data/ext/cmake/modules/FindMono.cmake +36 -36
- data/ext/cmake/modules/FindPHP5.cmake +179 -179
- data/ext/cmake/modules/FindPerlMore.cmake +78 -78
- data/ext/cmake/modules/FindPhonon.cmake +71 -71
- data/ext/cmake/modules/FindQImageBlitz.cmake +51 -51
- data/ext/cmake/modules/FindQScintilla.cmake +57 -57
- data/ext/cmake/modules/FindQwt5.cmake +104 -104
- data/ext/cmake/modules/FindRuby.cmake +279 -279
- data/ext/cmake/modules/FindSmoke.cmake +78 -78
- data/ext/cmake/modules/MacroLogFeature.cmake +146 -146
- data/ext/cmake/modules/MacroOptionalAddBindings.cmake +47 -47
- data/ext/cmake/modules/MacroOptionalFindPackage.cmake +28 -28
- data/ext/cmake/modules/MacroPushRequiredVars.cmake +47 -47
- data/ext/cmake/modules/MacroWriteBasicCMakeVersionFile.cmake +22 -22
- data/ext/cmake/modules/SmokeConfig.cmake.in +109 -109
- data/ext/generator/CMakeLists.txt +38 -38
- data/ext/generator/cmake/BasicFindPackageVersion.cmake.in +30 -30
- data/ext/generator/cmake/CMakeLists.txt +24 -24
- data/ext/generator/cmake/FindLibraryWithDebug.cmake +113 -113
- data/ext/generator/cmake/FindPhonon.cmake +71 -71
- data/ext/generator/cmake/FindQImageBlitz.cmake +51 -51
- data/ext/generator/cmake/FindQScintilla.cmake +57 -57
- data/ext/generator/cmake/FindQwt5.cmake +104 -104
- data/ext/generator/cmake/HandleImportedTargetsInCMakeRequiredLibraries.cmake +85 -85
- data/ext/generator/cmake/MacroLogFeature.cmake +146 -146
- data/ext/generator/cmake/MacroOptionalAddBindings.cmake +47 -47
- data/ext/generator/cmake/MacroOptionalFindPackage.cmake +28 -28
- data/ext/generator/cmake/MacroWriteBasicCMakeVersionFile.cmake +22 -22
- data/ext/generator/cmake/SmokeConfig.cmake.in +109 -109
- data/ext/generator/config.h +25 -25
- data/ext/generator/generator_export.h +31 -31
- data/ext/generator/generatorenvironment.cpp +52 -52
- data/ext/generator/generatorenvironment.h +35 -35
- data/ext/generator/generatorpreprocessor.cpp +303 -303
- data/ext/generator/generatorpreprocessor.h +83 -83
- data/ext/generator/generators/CMakeLists.txt +4 -4
- data/ext/generator/generators/dump/CMakeLists.txt +15 -15
- data/ext/generator/generators/dump/generator_dump.cpp +36 -36
- data/ext/generator/generators/smoke/CMakeLists.txt +18 -18
- data/ext/generator/generators/smoke/generator_smoke.cpp +240 -240
- data/ext/generator/generators/smoke/globals.h +140 -140
- data/ext/generator/generators/smoke/helpers.cpp +793 -793
- data/ext/generator/generators/smoke/writeClasses.cpp +502 -502
- data/ext/generator/generators/smoke/writeSmokeDataFile.cpp +754 -754
- data/ext/generator/generatorvisitor.cpp +922 -922
- data/ext/generator/generatorvisitor.h +119 -119
- data/ext/generator/name_compiler.cpp +205 -205
- data/ext/generator/name_compiler.h +76 -76
- data/ext/generator/options.cpp +33 -33
- data/ext/generator/options.h +46 -46
- data/ext/generator/parser/CMakeLists.txt +50 -50
- data/ext/generator/parser/ast.cpp +21 -21
- data/ext/generator/parser/ast.h +923 -923
- data/ext/generator/parser/astutilities.h +65 -65
- data/ext/generator/parser/codegenerator.cpp +867 -867
- data/ext/generator/parser/codegenerator.h +180 -180
- data/ext/generator/parser/codemodel_fwd.h +76 -76
- data/ext/generator/parser/commentformatter.cpp +54 -54
- data/ext/generator/parser/commentformatter.h +45 -45
- data/ext/generator/parser/commentparser.cpp +109 -109
- data/ext/generator/parser/commentparser.h +84 -84
- data/ext/generator/parser/control.cpp +40 -40
- data/ext/generator/parser/control.h +51 -51
- data/ext/generator/parser/cppparser_export.h +33 -33
- data/ext/generator/parser/default_visitor.cpp +470 -470
- data/ext/generator/parser/default_visitor.h +116 -116
- data/ext/generator/parser/dumptree.cpp +146 -146
- data/ext/generator/parser/dumptree.h +50 -50
- data/ext/generator/parser/indexedstring.cpp +213 -213
- data/ext/generator/parser/indexedstring.h +147 -147
- data/ext/generator/parser/kdevelop-parser-rev +1 -1
- data/ext/generator/parser/kdevvarlengtharray.h +346 -346
- data/ext/generator/parser/lexer.cpp +964 -964
- data/ext/generator/parser/lexer.h +308 -308
- data/ext/generator/parser/listnode.cpp +20 -20
- data/ext/generator/parser/listnode.h +97 -97
- data/ext/generator/parser/memorypool.cpp +20 -20
- data/ext/generator/parser/memorypool.h +41 -41
- data/ext/generator/parser/name_compiler.cpp +190 -190
- data/ext/generator/parser/name_compiler.h +77 -77
- data/ext/generator/parser/parser.cpp +4708 -4708
- data/ext/generator/parser/parser.h +290 -290
- data/ext/generator/parser/parsesession.cpp +106 -106
- data/ext/generator/parser/parsesession.h +87 -87
- data/ext/generator/parser/problem.h +21 -21
- data/ext/generator/parser/rpp/CMakeLists.txt +45 -45
- data/ext/generator/parser/rpp/Makefile.am +13 -13
- data/ext/generator/parser/rpp/anchor.h +51 -51
- data/ext/generator/parser/rpp/appendedlist.h +363 -363
- data/ext/generator/parser/rpp/chartools.cpp +146 -146
- data/ext/generator/parser/rpp/chartools.h +99 -99
- data/ext/generator/parser/rpp/macrorepository.cpp +44 -44
- data/ext/generator/parser/rpp/macrorepository.h +59 -59
- data/ext/generator/parser/rpp/pp-configuration +86 -86
- data/ext/generator/parser/rpp/pp-engine.h +267 -267
- data/ext/generator/parser/rpp/pp-environment.cpp +271 -271
- data/ext/generator/parser/rpp/pp-environment.h +119 -119
- data/ext/generator/parser/rpp/pp-internal.cpp +38 -38
- data/ext/generator/parser/rpp/pp-internal.h +37 -37
- data/ext/generator/parser/rpp/pp-location.cpp +191 -191
- data/ext/generator/parser/rpp/pp-location.h +89 -89
- data/ext/generator/parser/rpp/pp-macro-expander.cpp +568 -568
- data/ext/generator/parser/rpp/pp-macro-expander.cpp.orig +558 -558
- data/ext/generator/parser/rpp/pp-macro-expander.h +130 -130
- data/ext/generator/parser/rpp/pp-macro.cpp +153 -153
- data/ext/generator/parser/rpp/pp-macro.h +176 -176
- data/ext/generator/parser/rpp/pp-scanner.cpp +311 -311
- data/ext/generator/parser/rpp/pp-scanner.h +97 -97
- data/ext/generator/parser/rpp/pp-stream.cpp +425 -425
- data/ext/generator/parser/rpp/pp-stream.h +183 -183
- data/ext/generator/parser/rpp/preprocessor.cpp +65 -65
- data/ext/generator/parser/rpp/preprocessor.h +80 -80
- data/ext/generator/parser/rpp/rpp.pri +2 -2
- data/ext/generator/parser/rpp/test/t001.cpp +23 -23
- data/ext/generator/parser/rpp/test/t002.cpp +15 -15
- data/ext/generator/parser/rpp/test/t003.cpp +10 -10
- data/ext/generator/parser/rpp/test/t004.cpp +9 -9
- data/ext/generator/parser/rpp/test/t005.cpp +10 -10
- data/ext/generator/parser/rpp/test/t006.cpp +10 -10
- data/ext/generator/parser/rpp/test/t007.cpp +6 -6
- data/ext/generator/parser/rpp/test/t008.cpp +6 -6
- data/ext/generator/parser/rpp/test/t009.cpp +5 -5
- data/ext/generator/parser/rpp/test/t010.cpp +15 -15
- data/ext/generator/parser/rpp/test/t011.cpp +9 -9
- data/ext/generator/parser/rpp/tests/CMakeLists.txt +17 -17
- data/ext/generator/parser/rpp/tests/main.cpp +69 -69
- data/ext/generator/parser/rxx.pri +50 -50
- data/ext/generator/parser/rxx_allocator.h +128 -128
- data/ext/generator/parser/safetycounter.h +57 -57
- data/ext/generator/parser/simplecursor.h +74 -74
- data/ext/generator/parser/stringhelpers.cpp +577 -577
- data/ext/generator/parser/stringhelpers.h +118 -118
- data/ext/generator/parser/symbol.h +140 -140
- data/ext/generator/parser/tests/CMakeLists.txt +46 -46
- data/ext/generator/parser/tests/test_generator.cpp +259 -259
- data/ext/generator/parser/tests/test_parser.cpp +474 -474
- data/ext/generator/parser/tests/test_pool.cpp +109 -109
- data/ext/generator/parser/tests/test_pool.h +35 -35
- data/ext/generator/parser/tests/testconfig.h.cmake +4 -4
- data/ext/generator/parser/tokens.cpp +367 -367
- data/ext/generator/parser/tokens.h +148 -148
- data/ext/generator/parser/type_compiler.cpp +135 -135
- data/ext/generator/parser/type_compiler.h +68 -68
- data/ext/generator/parser/visitor.cpp +115 -115
- data/ext/generator/parser/visitor.h +138 -138
- data/ext/generator/smoke.h +557 -557
- data/ext/generator/smokegen_string.h +43 -43
- data/ext/generator/type.cpp +204 -204
- data/ext/generator/type.h +497 -497
- data/ext/generator/type_compiler.cpp +277 -277
- data/ext/generator/type_compiler.h +80 -80
- data/ext/ruby/CMakeLists.txt +64 -64
- data/ext/ruby/qtdeclarative/CMakeLists.txt +17 -17
- data/ext/ruby/qtdeclarative/qtdeclarative.cpp +67 -67
- data/ext/ruby/qtdeclarative/qtdeclarative.rb +17 -17
- data/ext/ruby/qtdeclarative/qtdeclarativehandlers.cpp +36 -36
- data/ext/ruby/qtruby/AUTHORS +54 -54
- data/ext/ruby/qtruby/COPYING +355 -355
- data/ext/ruby/qtruby/COPYING.LIB +510 -510
- data/ext/ruby/qtruby/ChangeLog +3732 -3732
- data/ext/ruby/qtruby/INSTALL +79 -79
- data/ext/ruby/qtruby/README +264 -264
- data/ext/ruby/qtruby/TODO +8 -8
- data/ext/ruby/qtruby/bin/rbqtapi +152 -152
- data/ext/ruby/qtruby/rails_support/CMakeLists.txt +1 -1
- data/ext/ruby/qtruby/rails_support/active_item_model.rb +234 -234
- data/ext/ruby/qtruby/rails_support/active_table_model.rb +122 -122
- data/ext/ruby/qtruby/src/marshall_basetypes.h +208 -208
- data/ext/ruby/qtruby/src/marshall_complex.h +175 -175
- data/ext/ruby/qtruby/src/marshall_macros.h +647 -647
- data/ext/ruby/qtruby/src/marshall_types.cpp +815 -815
- data/ext/ruby/qtruby/src/marshall_types.h +240 -240
- data/ext/ruby/qtruby/src/qtruby.cpp +1 -1
- data/ext/ruby/qtruby/test/opoverloading.rb +46 -46
- data/ext/ruby/qtruby/test/unittests.rb +151 -151
- data/ext/ruby/qtruby/tools/rbrcc/main.cpp +173 -173
- data/ext/ruby/qtruby/tools/rbrcc/rbrcc.pro +14 -14
- data/ext/ruby/qtruby/tools/rbrcc/rcc.cpp +648 -648
- data/ext/ruby/qtruby/tools/rbrcc/rcc.h +165 -165
- data/ext/ruby/qtruby/tools/rbuic/LICENSE.GPL +280 -280
- data/ext/ruby/qtruby/tools/rbuic/TODO +4 -4
- data/ext/ruby/qtruby/tools/rbuic/customwidgetsinfo.cpp +106 -106
- data/ext/ruby/qtruby/tools/rbuic/customwidgetsinfo.h +95 -95
- data/ext/ruby/qtruby/tools/rbuic/databaseinfo.cpp +102 -102
- data/ext/ruby/qtruby/tools/rbuic/databaseinfo.h +85 -85
- data/ext/ruby/qtruby/tools/rbuic/driver.cpp +384 -384
- data/ext/ruby/qtruby/tools/rbuic/driver.h +141 -141
- data/ext/ruby/qtruby/tools/rbuic/rbuic.pri +23 -23
- data/ext/ruby/qtruby/tools/rbuic/rbuic4.pro +43 -43
- data/ext/ruby/qtruby/tools/rbuic/ruby/rbextractimages.cpp +150 -150
- data/ext/ruby/qtruby/tools/rbuic/ruby/rbextractimages.h +83 -83
- data/ext/ruby/qtruby/tools/rbuic/ruby/rbwritedeclaration.cpp +217 -217
- data/ext/ruby/qtruby/tools/rbuic/ruby/rbwritedeclaration.h +85 -85
- data/ext/ruby/qtruby/tools/rbuic/ruby/rbwriteicondata.cpp +185 -185
- data/ext/ruby/qtruby/tools/rbuic/ruby/rbwriteicondata.h +86 -86
- data/ext/ruby/qtruby/tools/rbuic/ruby/rbwriteicondeclaration.cpp +88 -88
- data/ext/ruby/qtruby/tools/rbuic/ruby/rbwriteicondeclaration.h +83 -83
- data/ext/ruby/qtruby/tools/rbuic/ruby/rbwriteiconinitialization.cpp +126 -126
- data/ext/ruby/qtruby/tools/rbuic/ruby/rbwriteiconinitialization.h +87 -87
- data/ext/ruby/qtruby/tools/rbuic/ruby/rbwriteinitialization.cpp +2478 -2478
- data/ext/ruby/qtruby/tools/rbuic/ruby/rbwriteinitialization.h +314 -314
- data/ext/ruby/qtruby/tools/rbuic/ruby/ruby.pri +18 -18
- data/ext/ruby/qtruby/tools/rbuic/treewalker.cpp +318 -318
- data/ext/ruby/qtruby/tools/rbuic/treewalker.h +139 -139
- data/ext/ruby/qtruby/tools/rbuic/ui4.cpp +7623 -7623
- data/ext/ruby/qtruby/tools/rbuic/ui4.h +3180 -3180
- data/ext/ruby/qtruby/tools/rbuic/utils.h +125 -125
- data/ext/ruby/qtruby/tools/rbuic/validator.cpp +100 -100
- data/ext/ruby/qtruby/tools/rbuic/validator.h +80 -80
- data/ext/ruby/qtscript/CMakeLists.txt +19 -19
- data/ext/ruby/qtscript/qtscript.cpp +83 -83
- data/ext/ruby/qtscript/qtscript.rb +40 -40
- data/ext/ruby/qtscript/qtscripthandlers.cpp +37 -37
- data/ext/ruby/qtscript/smokedata.cpp +1403 -1403
- data/ext/ruby/qttest/CMakeLists.txt +18 -18
- data/ext/ruby/qttest/ChangeLog +9 -9
- data/ext/ruby/qttest/examples/myfirsttest.rb +30 -30
- data/ext/ruby/qttest/qttest.cpp +83 -83
- data/ext/ruby/qttest/qttest.rb +166 -166
- data/ext/ruby/qttest/qttesthandlers.cpp +37 -37
- data/ext/ruby/qtuitools/CMakeLists.txt +16 -16
- data/ext/ruby/qtuitools/qtuitools.cpp +83 -83
- data/ext/ruby/qtuitools/qtuitools.rb +17 -17
- data/ext/ruby/qtuitools/qtuitoolshandlers.cpp +32 -32
- data/ext/ruby/qtwebkit/CMakeLists.txt +17 -17
- data/ext/ruby/qtwebkit/qtwebkit.cpp +67 -67
- data/ext/ruby/qtwebkit/qtwebkit.rb +17 -17
- data/ext/ruby/qtwebkit/qtwebkithandlers.cpp +40 -40
- data/ext/smoke/deptool/CMakeLists.txt +7 -7
- data/ext/smoke/deptool/main.cpp +128 -128
- data/ext/smoke/qtcore/CMakeLists.txt +88 -88
- data/ext/smoke/qtcore/QtGuess.txt +180 -180
- data/ext/smoke/qtcore/config.xml.cmake +10 -10
- data/ext/smoke/qtcore/qt-config.xml.cmake +21 -21
- data/ext/smoke/qtcore/qtcore_includes.h +1 -1
- data/ext/smoke/qtcore/smokeconfig.xml +193 -193
- data/ext/smoke/qtcore/tests/CMakeLists.txt +13 -13
- data/ext/smoke/qtcore/tests/test.cpp +846 -846
- data/ext/smoke/qtcore_smoke.h +16 -16
- data/ext/smoke/qtdbus/CMakeLists.txt +38 -38
- data/ext/smoke/qtdbus/config.xml.cmake +11 -11
- data/ext/smoke/qtdbus/qtdbus_includes.h +2 -2
- data/ext/smoke/qtdbus/smokeconfig.xml +65 -65
- data/ext/smoke/qtdbus_smoke.h +16 -16
- data/ext/smoke/qtdeclarative/CMakeLists.txt +45 -45
- data/ext/smoke/qtdeclarative/config.xml.cmake +12 -12
- data/ext/smoke/qtdeclarative/qtdeclarative_includes.h +3 -3
- data/ext/smoke/qtdeclarative/smokeconfig.xml +59 -59
- data/ext/smoke/qtdeclarative_smoke.h +16 -16
- data/ext/smoke/qtgui/CMakeLists.txt +76 -76
- data/ext/smoke/qtgui/config.xml.cmake +11 -11
- data/ext/smoke/qtgui/qtgui_includes.h +7 -7
- data/ext/smoke/qtgui/smokeconfig.xml +500 -500
- data/ext/smoke/qtgui_smoke.h +16 -16
- data/ext/smoke/qthelp/CMakeLists.txt +45 -45
- data/ext/smoke/qthelp/config.xml.cmake +13 -13
- data/ext/smoke/qthelp/qthelp_includes.h +3 -3
- data/ext/smoke/qthelp/smokeconfig.xml +54 -54
- data/ext/smoke/qthelp_smoke.h +16 -16
- data/ext/smoke/qtmultimedia/CMakeLists.txt +42 -42
- data/ext/smoke/qtmultimedia/config.xml.cmake +12 -12
- data/ext/smoke/qtmultimedia/qtmultimedia_includes.h +3 -3
- data/ext/smoke/qtmultimedia/smokeconfig.xml +51 -51
- data/ext/smoke/qtmultimedia_smoke.h +16 -16
- data/ext/smoke/qtnetwork/CMakeLists.txt +38 -38
- data/ext/smoke/qtnetwork/config.xml.cmake +11 -11
- data/ext/smoke/qtnetwork/qtnetwork_includes.h +2 -2
- data/ext/smoke/qtnetwork/smokeconfig.xml +81 -81
- data/ext/smoke/qtnetwork_smoke.h +16 -16
- data/ext/smoke/qtopengl/CMakeLists.txt +43 -43
- data/ext/smoke/qtopengl/config.xml.cmake +13 -13
- data/ext/smoke/qtopengl/qtopengl_includes.h +3 -3
- data/ext/smoke/qtopengl/smokeconfig.xml +58 -58
- data/ext/smoke/qtopengl_smoke.h +16 -16
- data/ext/smoke/qtscript/CMakeLists.txt +31 -31
- data/ext/smoke/qtscript/config.xml.cmake +11 -11
- data/ext/smoke/qtscript/qtscript_includes.h +14 -14
- data/ext/smoke/qtscript/smokeconfig.xml +39 -39
- data/ext/smoke/qtscript_smoke.h +16 -16
- data/ext/smoke/qtsql/CMakeLists.txt +45 -45
- data/ext/smoke/qtsql/config.xml.cmake +11 -11
- data/ext/smoke/qtsql/qtsql_includes.h +3 -3
- data/ext/smoke/qtsql/smokeconfig.xml +60 -60
- data/ext/smoke/qtsql_smoke.h +16 -16
- data/ext/smoke/qtsvg/CMakeLists.txt +43 -43
- data/ext/smoke/qtsvg/config.xml.cmake +12 -12
- data/ext/smoke/qtsvg/qtsvg_includes.h +3 -3
- data/ext/smoke/qtsvg/smokeconfig.xml +46 -46
- data/ext/smoke/qtsvg_smoke.h +16 -16
- data/ext/smoke/qttest/CMakeLists.txt +35 -35
- data/ext/smoke/qttest/config.xml.cmake +12 -12
- data/ext/smoke/qttest/qttest_includes.h +14 -14
- data/ext/smoke/qttest/smokeconfig.xml +36 -36
- data/ext/smoke/qttest_smoke.h +16 -16
- data/ext/smoke/qtuitools/CMakeLists.txt +30 -30
- data/ext/smoke/qtuitools/config.xml.cmake +12 -12
- data/ext/smoke/qtuitools/qtuitools_includes.h +1 -1
- data/ext/smoke/qtuitools/smokeconfig.xml +20 -20
- data/ext/smoke/qtuitools_smoke.h +16 -16
- data/ext/smoke/qtwebkit/CMakeLists.txt +36 -36
- data/ext/smoke/qtwebkit/config.xml.cmake +11 -11
- data/ext/smoke/qtwebkit/qtwebkit_includes.h +1 -1
- data/ext/smoke/qtwebkit/smokeconfig.xml +48 -48
- data/ext/smoke/qtwebkit_smoke.h +16 -16
- data/ext/smoke/qtxml/CMakeLists.txt +41 -41
- data/ext/smoke/qtxml/config.xml.cmake +11 -11
- data/ext/smoke/qtxml/qtxml_includes.h +2 -2
- data/ext/smoke/qtxml/smokeconfig.xml +70 -70
- data/ext/smoke/qtxml_smoke.h +16 -16
- data/ext/smoke/qtxmlpatterns/CMakeLists.txt +42 -42
- data/ext/smoke/qtxmlpatterns/config.xml.cmake +12 -12
- data/ext/smoke/qtxmlpatterns/qtxmlpatterns_includes.h +3 -3
- data/ext/smoke/qtxmlpatterns/smokeconfig.xml +80 -80
- data/ext/smoke/qtxmlpatterns_smoke.h +16 -16
- data/ext/smoke/smokeapi/CMakeLists.txt +9 -9
- data/ext/smoke/smokeapi/main.cpp +309 -309
- data/ext/smoke/smokebase/CMakeLists.txt +11 -11
- data/ext/smoke/smokebase/smokebase.cpp +6 -6
- data/ext/smoke/solid_smoke.h +16 -16
- data/lib/Qt.rb +1 -1
- data/lib/Qt4.rb +119 -111
- data/lib/qtbindings_version.rb +2 -2
- data/lib/qtdeclarative/qtdeclarative.rb +17 -17
- data/lib/qtscript/qtscript.rb +40 -40
- data/lib/qttest/qttest.rb +166 -166
- data/lib/qtuitools/qtuitools.rb +17 -17
- data/lib/qtwebkit/qtwebkit.rb +17 -17
- metadata +6 -7
|
@@ -1,147 +1,147 @@
|
|
|
1
|
-
/***************************************************************************
|
|
2
|
-
Copyright 2008 David Nolden <david.nolden.kdevelop@art-master.de>
|
|
3
|
-
***************************************************************************/
|
|
4
|
-
|
|
5
|
-
/***************************************************************************
|
|
6
|
-
* *
|
|
7
|
-
* This program is free software; you can redistribute it and/or modify *
|
|
8
|
-
* it under the terms of the GNU General Public License as published by *
|
|
9
|
-
* the Free Software Foundation; either version 2 of the License, or *
|
|
10
|
-
* (at your option) any later version. *
|
|
11
|
-
* *
|
|
12
|
-
***************************************************************************/
|
|
13
|
-
|
|
14
|
-
#ifndef INDEXED_STRING_H
|
|
15
|
-
#define INDEXED_STRING_H
|
|
16
|
-
|
|
17
|
-
//krazy:excludeall=dpointer,inline
|
|
18
|
-
|
|
19
|
-
#include "cppparser_export.h"
|
|
20
|
-
#include <QtCore/QString>
|
|
21
|
-
|
|
22
|
-
class QDataStream;
|
|
23
|
-
class QUrl;
|
|
24
|
-
|
|
25
|
-
class IndexedString;
|
|
26
|
-
|
|
27
|
-
///This string does "disk reference-counting", which means that reference-counts are maintainted, but
|
|
28
|
-
///only when the string is in a disk-stored location. The file referencecounting.h is used to manage this condition.
|
|
29
|
-
///Whenever reference-counting is enabled for a range that contains the IndexedString, it will manipulate the reference-counts.
|
|
30
|
-
///The duchain storage mechanisms automatically are about correctly managing that condition, so you don't need to care, and can
|
|
31
|
-
///just use this class in every duchain data type without restrictions.
|
|
32
|
-
///
|
|
33
|
-
///@warning Do not use IndexedString after QCoreApplication::aboutToQuit() has been emitted, items that are not disk-referenced will be invalid at that point
|
|
34
|
-
///
|
|
35
|
-
///Empty strings have an index of zero.
|
|
36
|
-
///Strings of length one are not put into the repository, but are encoded directly within the index:
|
|
37
|
-
///They are encoded like 0xffff00bb where bb is the byte of the character.
|
|
38
|
-
class CPPPARSER_EXPORT IndexedString {
|
|
39
|
-
public:
|
|
40
|
-
IndexedString();
|
|
41
|
-
///@param str must be a utf8 encoded string, does not need to be 0-terminated.
|
|
42
|
-
///@param length must be its length in bytes.
|
|
43
|
-
///@param hash must be a hash as constructed with the here defined hash functions. If it is zero, it will be computed.
|
|
44
|
-
explicit IndexedString( const char* str, unsigned short length, unsigned int hash = 0 );
|
|
45
|
-
|
|
46
|
-
///Needs a zero terminated string. When the information is already available, try using the other constructor.
|
|
47
|
-
explicit IndexedString( const char* str );
|
|
48
|
-
|
|
49
|
-
explicit IndexedString( char c );
|
|
50
|
-
|
|
51
|
-
///When the information is already available, try using the other constructor. This is expensive.
|
|
52
|
-
explicit IndexedString( const QString& str );
|
|
53
|
-
|
|
54
|
-
///When the information is already available, try using the other constructor. This is expensive.
|
|
55
|
-
explicit IndexedString( const QByteArray& str );
|
|
56
|
-
|
|
57
|
-
///Returns a not reference-counted IndexedString that represents the given index
|
|
58
|
-
///@warning It is dangerous dealing with indices directly, because it may break the reference counting logic
|
|
59
|
-
/// never stay pure indices to disk
|
|
60
|
-
static IndexedString fromIndex( unsigned int index ) {
|
|
61
|
-
IndexedString ret;
|
|
62
|
-
ret.m_index = index;
|
|
63
|
-
return ret;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
IndexedString( const IndexedString& );
|
|
67
|
-
|
|
68
|
-
~IndexedString();
|
|
69
|
-
|
|
70
|
-
///Creates an indexed string from a KUrl, this is expensive.
|
|
71
|
-
explicit IndexedString( const QUrl& url );
|
|
72
|
-
|
|
73
|
-
///Re-construct a KUrl from this indexed string, the result can be used with the
|
|
74
|
-
///KUrl-using constructor. This is expensive.
|
|
75
|
-
QUrl toUrl() const;
|
|
76
|
-
|
|
77
|
-
inline unsigned int hash() const {
|
|
78
|
-
return m_index;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
///The string is uniquely identified by this index. You can use it for comparison.
|
|
82
|
-
///@warning It is dangerous dealing with indices directly, because it may break the reference counting logic
|
|
83
|
-
/// never stay pure indices to disk
|
|
84
|
-
inline unsigned int index() const {
|
|
85
|
-
return m_index;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
bool isEmpty() const {
|
|
89
|
-
return m_index == 0;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
//This is relatively expensive(needs a mutex lock, hash lookups, and eventual loading), so avoid it when possible.
|
|
93
|
-
int length() const;
|
|
94
|
-
|
|
95
|
-
///Convenience function, avoid using it, it's relatively expensive
|
|
96
|
-
QString str() const;
|
|
97
|
-
|
|
98
|
-
///Convenience function, avoid using it, it's relatively expensive(les expensive then str() though)
|
|
99
|
-
QByteArray byteArray() const;
|
|
100
|
-
|
|
101
|
-
IndexedString& operator=(const IndexedString&);
|
|
102
|
-
|
|
103
|
-
bool operator == ( const IndexedString& rhs ) const {
|
|
104
|
-
return m_index == rhs.m_index;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
bool operator != ( const IndexedString& rhs ) const {
|
|
108
|
-
return m_index != rhs.m_index;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
///Does not compare alphabetically, uses the index for ordering.
|
|
112
|
-
bool operator < ( const IndexedString& rhs ) const {
|
|
113
|
-
return m_index < rhs.m_index;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
//Use this to construct a hash-value on-the-fly
|
|
117
|
-
//To read it, just use the hash member, and when a new string is started, call clear(.
|
|
118
|
-
//This needs very fast performance(per character operation), so it must stay inlined.
|
|
119
|
-
struct RunningHash {
|
|
120
|
-
enum {
|
|
121
|
-
HashInitialValue = 5381
|
|
122
|
-
};
|
|
123
|
-
|
|
124
|
-
RunningHash() : hash(HashInitialValue) { //We initialize the hash with zero, because we want empty strings to create a zero hash(invalid)
|
|
125
|
-
}
|
|
126
|
-
inline void append(const char c) {
|
|
127
|
-
hash = ((hash << 5) + hash) + c; /* hash * 33 + c */
|
|
128
|
-
}
|
|
129
|
-
inline void clear() {
|
|
130
|
-
hash = HashInitialValue;
|
|
131
|
-
}
|
|
132
|
-
unsigned int hash;
|
|
133
|
-
};
|
|
134
|
-
|
|
135
|
-
static unsigned int hashString(const char* str, unsigned short length);
|
|
136
|
-
|
|
137
|
-
private:
|
|
138
|
-
explicit IndexedString(bool);
|
|
139
|
-
uint m_index;
|
|
140
|
-
};
|
|
141
|
-
|
|
142
|
-
CPPPARSER_EXPORT inline uint qHash( const IndexedString& str ) {
|
|
143
|
-
return str.index();
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
#endif
|
|
1
|
+
/***************************************************************************
|
|
2
|
+
Copyright 2008 David Nolden <david.nolden.kdevelop@art-master.de>
|
|
3
|
+
***************************************************************************/
|
|
4
|
+
|
|
5
|
+
/***************************************************************************
|
|
6
|
+
* *
|
|
7
|
+
* This program is free software; you can redistribute it and/or modify *
|
|
8
|
+
* it under the terms of the GNU General Public License as published by *
|
|
9
|
+
* the Free Software Foundation; either version 2 of the License, or *
|
|
10
|
+
* (at your option) any later version. *
|
|
11
|
+
* *
|
|
12
|
+
***************************************************************************/
|
|
13
|
+
|
|
14
|
+
#ifndef INDEXED_STRING_H
|
|
15
|
+
#define INDEXED_STRING_H
|
|
16
|
+
|
|
17
|
+
//krazy:excludeall=dpointer,inline
|
|
18
|
+
|
|
19
|
+
#include "cppparser_export.h"
|
|
20
|
+
#include <QtCore/QString>
|
|
21
|
+
|
|
22
|
+
class QDataStream;
|
|
23
|
+
class QUrl;
|
|
24
|
+
|
|
25
|
+
class IndexedString;
|
|
26
|
+
|
|
27
|
+
///This string does "disk reference-counting", which means that reference-counts are maintainted, but
|
|
28
|
+
///only when the string is in a disk-stored location. The file referencecounting.h is used to manage this condition.
|
|
29
|
+
///Whenever reference-counting is enabled for a range that contains the IndexedString, it will manipulate the reference-counts.
|
|
30
|
+
///The duchain storage mechanisms automatically are about correctly managing that condition, so you don't need to care, and can
|
|
31
|
+
///just use this class in every duchain data type without restrictions.
|
|
32
|
+
///
|
|
33
|
+
///@warning Do not use IndexedString after QCoreApplication::aboutToQuit() has been emitted, items that are not disk-referenced will be invalid at that point
|
|
34
|
+
///
|
|
35
|
+
///Empty strings have an index of zero.
|
|
36
|
+
///Strings of length one are not put into the repository, but are encoded directly within the index:
|
|
37
|
+
///They are encoded like 0xffff00bb where bb is the byte of the character.
|
|
38
|
+
class CPPPARSER_EXPORT IndexedString {
|
|
39
|
+
public:
|
|
40
|
+
IndexedString();
|
|
41
|
+
///@param str must be a utf8 encoded string, does not need to be 0-terminated.
|
|
42
|
+
///@param length must be its length in bytes.
|
|
43
|
+
///@param hash must be a hash as constructed with the here defined hash functions. If it is zero, it will be computed.
|
|
44
|
+
explicit IndexedString( const char* str, unsigned short length, unsigned int hash = 0 );
|
|
45
|
+
|
|
46
|
+
///Needs a zero terminated string. When the information is already available, try using the other constructor.
|
|
47
|
+
explicit IndexedString( const char* str );
|
|
48
|
+
|
|
49
|
+
explicit IndexedString( char c );
|
|
50
|
+
|
|
51
|
+
///When the information is already available, try using the other constructor. This is expensive.
|
|
52
|
+
explicit IndexedString( const QString& str );
|
|
53
|
+
|
|
54
|
+
///When the information is already available, try using the other constructor. This is expensive.
|
|
55
|
+
explicit IndexedString( const QByteArray& str );
|
|
56
|
+
|
|
57
|
+
///Returns a not reference-counted IndexedString that represents the given index
|
|
58
|
+
///@warning It is dangerous dealing with indices directly, because it may break the reference counting logic
|
|
59
|
+
/// never stay pure indices to disk
|
|
60
|
+
static IndexedString fromIndex( unsigned int index ) {
|
|
61
|
+
IndexedString ret;
|
|
62
|
+
ret.m_index = index;
|
|
63
|
+
return ret;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
IndexedString( const IndexedString& );
|
|
67
|
+
|
|
68
|
+
~IndexedString();
|
|
69
|
+
|
|
70
|
+
///Creates an indexed string from a KUrl, this is expensive.
|
|
71
|
+
explicit IndexedString( const QUrl& url );
|
|
72
|
+
|
|
73
|
+
///Re-construct a KUrl from this indexed string, the result can be used with the
|
|
74
|
+
///KUrl-using constructor. This is expensive.
|
|
75
|
+
QUrl toUrl() const;
|
|
76
|
+
|
|
77
|
+
inline unsigned int hash() const {
|
|
78
|
+
return m_index;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
///The string is uniquely identified by this index. You can use it for comparison.
|
|
82
|
+
///@warning It is dangerous dealing with indices directly, because it may break the reference counting logic
|
|
83
|
+
/// never stay pure indices to disk
|
|
84
|
+
inline unsigned int index() const {
|
|
85
|
+
return m_index;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
bool isEmpty() const {
|
|
89
|
+
return m_index == 0;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
//This is relatively expensive(needs a mutex lock, hash lookups, and eventual loading), so avoid it when possible.
|
|
93
|
+
int length() const;
|
|
94
|
+
|
|
95
|
+
///Convenience function, avoid using it, it's relatively expensive
|
|
96
|
+
QString str() const;
|
|
97
|
+
|
|
98
|
+
///Convenience function, avoid using it, it's relatively expensive(les expensive then str() though)
|
|
99
|
+
QByteArray byteArray() const;
|
|
100
|
+
|
|
101
|
+
IndexedString& operator=(const IndexedString&);
|
|
102
|
+
|
|
103
|
+
bool operator == ( const IndexedString& rhs ) const {
|
|
104
|
+
return m_index == rhs.m_index;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
bool operator != ( const IndexedString& rhs ) const {
|
|
108
|
+
return m_index != rhs.m_index;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
///Does not compare alphabetically, uses the index for ordering.
|
|
112
|
+
bool operator < ( const IndexedString& rhs ) const {
|
|
113
|
+
return m_index < rhs.m_index;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
//Use this to construct a hash-value on-the-fly
|
|
117
|
+
//To read it, just use the hash member, and when a new string is started, call clear(.
|
|
118
|
+
//This needs very fast performance(per character operation), so it must stay inlined.
|
|
119
|
+
struct RunningHash {
|
|
120
|
+
enum {
|
|
121
|
+
HashInitialValue = 5381
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
RunningHash() : hash(HashInitialValue) { //We initialize the hash with zero, because we want empty strings to create a zero hash(invalid)
|
|
125
|
+
}
|
|
126
|
+
inline void append(const char c) {
|
|
127
|
+
hash = ((hash << 5) + hash) + c; /* hash * 33 + c */
|
|
128
|
+
}
|
|
129
|
+
inline void clear() {
|
|
130
|
+
hash = HashInitialValue;
|
|
131
|
+
}
|
|
132
|
+
unsigned int hash;
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
static unsigned int hashString(const char* str, unsigned short length);
|
|
136
|
+
|
|
137
|
+
private:
|
|
138
|
+
explicit IndexedString(bool);
|
|
139
|
+
uint m_index;
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
CPPPARSER_EXPORT inline uint qHash( const IndexedString& str ) {
|
|
143
|
+
return str.index();
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
#endif
|
|
@@ -1 +1 @@
|
|
|
1
|
-
1010222
|
|
1
|
+
1010222
|
|
@@ -1,346 +1,346 @@
|
|
|
1
|
-
/****************************************************************************
|
|
2
|
-
**
|
|
3
|
-
** Copyright (C) 1992-2008 Trolltech ASA. All rights reserved.
|
|
4
|
-
**
|
|
5
|
-
** This file is part of the QtCore module of the Qt Toolkit.
|
|
6
|
-
**
|
|
7
|
-
** This file may be used under the terms of the GNU General Public
|
|
8
|
-
** License versions 2.0 or 3.0 as published by the Free Software
|
|
9
|
-
** Foundation and appearing in the files LICENSE.GPL2 and LICENSE.GPL3
|
|
10
|
-
** included in the packaging of this file. Alternatively you may (at
|
|
11
|
-
** your option) use any later version of the GNU General Public
|
|
12
|
-
** License if such license has been publicly approved by Trolltech ASA
|
|
13
|
-
** (or its successors, if any) and the KDE Free Qt Foundation. In
|
|
14
|
-
** addition, as a special exception, Trolltech gives you certain
|
|
15
|
-
** additional rights. These rights are described in the Trolltech GPL
|
|
16
|
-
** Exception version 1.2, which can be found at
|
|
17
|
-
** http://www.trolltech.com/products/qt/gplexception/ and in the file
|
|
18
|
-
** GPL_EXCEPTION.txt in this package.
|
|
19
|
-
**
|
|
20
|
-
** Please review the following information to ensure GNU General
|
|
21
|
-
** Public Licensing requirements will be met:
|
|
22
|
-
** http://trolltech.com/products/qt/licenses/licensing/opensource/. If
|
|
23
|
-
** you are unsure which license is appropriate for your use, please
|
|
24
|
-
** review the following information:
|
|
25
|
-
** http://trolltech.com/products/qt/licenses/licensing/licensingoverview
|
|
26
|
-
** or contact the sales department at sales@trolltech.com.
|
|
27
|
-
**
|
|
28
|
-
** In addition, as a special exception, Trolltech, as the sole
|
|
29
|
-
** copyright holder for Qt Designer, grants users of the Qt/Eclipse
|
|
30
|
-
** Integration plug-in the right for the Qt/Eclipse Integration to
|
|
31
|
-
** link to functionality provided by Qt Designer and its related
|
|
32
|
-
** libraries.
|
|
33
|
-
**
|
|
34
|
-
** This file is provided "AS IS" with NO WARRANTY OF ANY KIND,
|
|
35
|
-
** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR
|
|
36
|
-
** A PARTICULAR PURPOSE. Trolltech reserves all rights not expressly
|
|
37
|
-
** granted herein.
|
|
38
|
-
**
|
|
39
|
-
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
|
|
40
|
-
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
|
41
|
-
**
|
|
42
|
-
****************************************************************************/
|
|
43
|
-
|
|
44
|
-
#ifndef KDEVVARLENGTHARRAY_H
|
|
45
|
-
#define KDEVVARLENGTHARRAY_H
|
|
46
|
-
|
|
47
|
-
//#include <QtCore/qcontainerfwd.h>
|
|
48
|
-
#include <QtCore/QtGlobal>
|
|
49
|
-
#include <QtCore/QVector>
|
|
50
|
-
#include <new>
|
|
51
|
-
|
|
52
|
-
///Foreach macro that also works with QVarLengthArray or KDevVarLengthArray
|
|
53
|
-
///@warning Unlike the Qt foreach macro, this does not temporarily copy the array, which its size must not be changed while the iteration.
|
|
54
|
-
#define FOREACH_ARRAY(item, container) for(int a = 0, mustDo = 1; a < container.size(); ++a) if((mustDo == 0 || mustDo == 1) && (mustDo = 2)) for(item(container[a]); mustDo; mustDo = 0)
|
|
55
|
-
|
|
56
|
-
QT_BEGIN_HEADER
|
|
57
|
-
|
|
58
|
-
QT_BEGIN_NAMESPACE
|
|
59
|
-
|
|
60
|
-
QT_MODULE(Core)
|
|
61
|
-
|
|
62
|
-
//When this is uncommented, a QVector will be used instead of a variable-length array. This is useful for debugging, to find problems in KDevVarLengthArray
|
|
63
|
-
// #define FAKE_KDEVVARLENGTH_ARRAY
|
|
64
|
-
|
|
65
|
-
#ifdef FAKE_KDEVVARLENGTH_ARRAY
|
|
66
|
-
template<class T, int Prealloc = 256>
|
|
67
|
-
class KDevVarLengthArray : public QVector<T> {
|
|
68
|
-
public:
|
|
69
|
-
///Inserts the given item at the given position, moving all items behind the position back
|
|
70
|
-
void insert(const T& item, int position) {
|
|
71
|
-
QVector<T>::insert(position, item);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
// Removes exactly one occurrence of the given value from the array. Returns false if none was found.
|
|
75
|
-
bool removeOne(const T& value) {
|
|
76
|
-
int i = this->indexOf(value);
|
|
77
|
-
if(i == -1)
|
|
78
|
-
return false;
|
|
79
|
-
erase(i);
|
|
80
|
-
return true;
|
|
81
|
-
}
|
|
82
|
-
void erase(int pos) {
|
|
83
|
-
this->remove(pos);
|
|
84
|
-
}
|
|
85
|
-
void append(const T& item) {
|
|
86
|
-
QVector<T>::append(item);
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
void pop_back() {
|
|
90
|
-
Q_ASSERT(!this->isEmpty());
|
|
91
|
-
QVector<T>::pop_back();
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
void append(const T *buf, int size) {
|
|
95
|
-
for(int a = 0; a < size; ++a)
|
|
96
|
-
append(buf[a]);
|
|
97
|
-
}
|
|
98
|
-
};
|
|
99
|
-
#else
|
|
100
|
-
|
|
101
|
-
template<class T, int Prealloc = 256>
|
|
102
|
-
class KDevVarLengthArray
|
|
103
|
-
{
|
|
104
|
-
public:
|
|
105
|
-
inline explicit KDevVarLengthArray(int size = 0);
|
|
106
|
-
|
|
107
|
-
inline KDevVarLengthArray(const KDevVarLengthArray<T, Prealloc> &other)
|
|
108
|
-
: a(Prealloc), s(0), ptr(reinterpret_cast<T *>(array))
|
|
109
|
-
{
|
|
110
|
-
append(other.constData(), other.size());
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
inline ~KDevVarLengthArray() {
|
|
114
|
-
if (QTypeInfo<T>::isComplex) {
|
|
115
|
-
T *i = ptr + s;
|
|
116
|
-
while (i-- > ptr)
|
|
117
|
-
i->~T();
|
|
118
|
-
}
|
|
119
|
-
if (ptr != reinterpret_cast<T *>(array))
|
|
120
|
-
qFree(ptr);
|
|
121
|
-
}
|
|
122
|
-
inline KDevVarLengthArray<T, Prealloc> &operator=(const KDevVarLengthArray<T, Prealloc> &other)
|
|
123
|
-
{
|
|
124
|
-
if (this != &other) {
|
|
125
|
-
clear();
|
|
126
|
-
append(other.constData(), other.size());
|
|
127
|
-
}
|
|
128
|
-
return *this;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
inline int size() const { return s; }
|
|
132
|
-
inline int count() const { return s; }
|
|
133
|
-
inline bool isEmpty() const { return (s == 0); }
|
|
134
|
-
inline void resize(int size);
|
|
135
|
-
inline void clear() { resize(0); }
|
|
136
|
-
|
|
137
|
-
inline int capacity() const { return a; }
|
|
138
|
-
inline void reserve(int size);
|
|
139
|
-
|
|
140
|
-
inline T &operator[](int idx) {
|
|
141
|
-
Q_ASSERT(idx >= 0 && idx < s);
|
|
142
|
-
return ptr[idx];
|
|
143
|
-
}
|
|
144
|
-
inline const T &operator[](int idx) const {
|
|
145
|
-
Q_ASSERT(idx >= 0 && idx < s);
|
|
146
|
-
return ptr[idx];
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
///Returns the index of the given item in this array, or -1
|
|
150
|
-
int indexOf(const T& t) const {
|
|
151
|
-
for(int a = 0; a < s; ++a)
|
|
152
|
-
if(t == ptr[a])
|
|
153
|
-
return a;
|
|
154
|
-
return -1;
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
inline KDevVarLengthArray& operator<<(const T &t) {
|
|
158
|
-
append(t);
|
|
159
|
-
return *this;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
inline void append(const T &t) {
|
|
163
|
-
const int idx = s++;
|
|
164
|
-
///This is currently the difference to KDevVarLengthArray(which uses s == a), and it prevents a crash.
|
|
165
|
-
if (s >= a)
|
|
166
|
-
realloc(s, s<<1);
|
|
167
|
-
if (QTypeInfo<T>::isComplex) {
|
|
168
|
-
new (ptr + idx) T(t);
|
|
169
|
-
} else {
|
|
170
|
-
ptr[idx] = t;
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
void append(const T *buf, int size);
|
|
174
|
-
|
|
175
|
-
inline T *data() { return ptr; }
|
|
176
|
-
inline const T *data() const { return ptr; }
|
|
177
|
-
inline const T * constData() const { return ptr; }
|
|
178
|
-
|
|
179
|
-
///Returns whether the given item is contained in this array
|
|
180
|
-
bool contains(const T& value) const {
|
|
181
|
-
for(int a = 0; a < s; ++a)
|
|
182
|
-
if(ptr[a] == value)
|
|
183
|
-
return true;
|
|
184
|
-
|
|
185
|
-
return false;
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
///Inserts the given item at the given position, moving all items behind the position back
|
|
189
|
-
void insert(const T& item, int position) {
|
|
190
|
-
Q_ASSERT(position >= 0 && position <= size());
|
|
191
|
-
resize(s+1);
|
|
192
|
-
for(int a = s-1; a > position; --a) {
|
|
193
|
-
ptr[a] = ptr[a-1];
|
|
194
|
-
}
|
|
195
|
-
ptr[position] = item;
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
///Removes the given position from the array, moving all items behind it one back.
|
|
199
|
-
void erase(int position) {
|
|
200
|
-
Q_ASSERT(position >= 0 && position < s);
|
|
201
|
-
for(int a = position; a < s-1; ++a) {
|
|
202
|
-
ptr[a] = ptr[a+1];
|
|
203
|
-
}
|
|
204
|
-
resize(s-1);
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
// Removes exactly one occurrence of the given value from the array. Returns false if none was found.
|
|
208
|
-
bool removeOne(const T& value) {
|
|
209
|
-
for(int a = 0; a < s; ++a) {
|
|
210
|
-
if(ptr[a] == value) {
|
|
211
|
-
erase(a);
|
|
212
|
-
return true;
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
return false;
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
T& back() {
|
|
219
|
-
return ptr[s-1];
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
const T& back() const {
|
|
223
|
-
return ptr[s-1];
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
void pop_back() {
|
|
227
|
-
Q_ASSERT(s > 0);
|
|
228
|
-
resize(s-1);
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
private:
|
|
232
|
-
void realloc(int size, int alloc);
|
|
233
|
-
|
|
234
|
-
int a;
|
|
235
|
-
int s;
|
|
236
|
-
T *ptr;
|
|
237
|
-
union {
|
|
238
|
-
// ### Qt 5: Use 'Prealloc * sizeof(T)' as array size
|
|
239
|
-
char array[sizeof(qint64) * (((Prealloc * sizeof(T)) / sizeof(qint64)) + 1)];
|
|
240
|
-
qint64 q_for_alignment_1;
|
|
241
|
-
double q_for_alignment_2;
|
|
242
|
-
};
|
|
243
|
-
};
|
|
244
|
-
|
|
245
|
-
template <class T, int Prealloc>
|
|
246
|
-
Q_INLINE_TEMPLATE KDevVarLengthArray<T, Prealloc>::KDevVarLengthArray(int asize)
|
|
247
|
-
: s(asize) {
|
|
248
|
-
if (s > Prealloc) {
|
|
249
|
-
ptr = reinterpret_cast<T *>(qMalloc(s * sizeof(T)));
|
|
250
|
-
a = s;
|
|
251
|
-
} else {
|
|
252
|
-
ptr = reinterpret_cast<T *>(array);
|
|
253
|
-
a = Prealloc;
|
|
254
|
-
}
|
|
255
|
-
if (QTypeInfo<T>::isComplex) {
|
|
256
|
-
T *i = ptr + s;
|
|
257
|
-
while (i != ptr)
|
|
258
|
-
new (--i) T;
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
template <class T, int Prealloc>
|
|
263
|
-
Q_INLINE_TEMPLATE void KDevVarLengthArray<T, Prealloc>::resize(int asize)
|
|
264
|
-
{ Q_ASSERT(asize >= 0 && asize < 100000); realloc(asize, qMax(asize, a)); }
|
|
265
|
-
|
|
266
|
-
template <class T, int Prealloc>
|
|
267
|
-
Q_INLINE_TEMPLATE void KDevVarLengthArray<T, Prealloc>::reserve(int asize)
|
|
268
|
-
{ if (asize > a) realloc(s, asize); }
|
|
269
|
-
|
|
270
|
-
template <class T, int Prealloc>
|
|
271
|
-
Q_OUTOFLINE_TEMPLATE void KDevVarLengthArray<T, Prealloc>::append(const T *abuf, int asize)
|
|
272
|
-
{
|
|
273
|
-
Q_ASSERT(abuf);
|
|
274
|
-
if (asize <= 0)
|
|
275
|
-
return;
|
|
276
|
-
|
|
277
|
-
const int idx = s;
|
|
278
|
-
const int news = s + asize;
|
|
279
|
-
if (news >= a)
|
|
280
|
-
realloc(news, news<<1);
|
|
281
|
-
else
|
|
282
|
-
s = news;
|
|
283
|
-
|
|
284
|
-
if (QTypeInfo<T>::isComplex) {
|
|
285
|
-
T *i = ptr + idx;
|
|
286
|
-
T *j = i + asize;
|
|
287
|
-
while (i < j)
|
|
288
|
-
new (i++) T(*abuf++);
|
|
289
|
-
} else {
|
|
290
|
-
qMemCopy(&ptr[idx], abuf, asize * sizeof(T));
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
template <class T, int Prealloc>
|
|
295
|
-
Q_OUTOFLINE_TEMPLATE void KDevVarLengthArray<T, Prealloc>::realloc(int asize, int aalloc)
|
|
296
|
-
{
|
|
297
|
-
Q_ASSERT(aalloc >= asize);
|
|
298
|
-
T *oldPtr = ptr;
|
|
299
|
-
int osize = s;
|
|
300
|
-
s = asize;
|
|
301
|
-
|
|
302
|
-
if (aalloc != a) {
|
|
303
|
-
ptr = reinterpret_cast<T *>(qMalloc(aalloc * sizeof(T)));
|
|
304
|
-
if (ptr) {
|
|
305
|
-
a = aalloc;
|
|
306
|
-
|
|
307
|
-
if (QTypeInfo<T>::isStatic) {
|
|
308
|
-
T *i = ptr + osize;
|
|
309
|
-
T *j = oldPtr + osize;
|
|
310
|
-
while (i != ptr) {
|
|
311
|
-
new (--i) T(*--j);
|
|
312
|
-
j->~T();
|
|
313
|
-
}
|
|
314
|
-
} else {
|
|
315
|
-
qMemCopy(ptr, oldPtr, osize * sizeof(T));
|
|
316
|
-
}
|
|
317
|
-
} else {
|
|
318
|
-
ptr = oldPtr;
|
|
319
|
-
s = 0;
|
|
320
|
-
asize = 0;
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
|
|
324
|
-
if (QTypeInfo<T>::isComplex) {
|
|
325
|
-
if (asize < osize) {
|
|
326
|
-
T *i = oldPtr + osize;
|
|
327
|
-
T *j = oldPtr + asize;
|
|
328
|
-
while (i-- != j)
|
|
329
|
-
i->~T();
|
|
330
|
-
} else {
|
|
331
|
-
T *i = ptr + asize;
|
|
332
|
-
T *j = ptr + osize;
|
|
333
|
-
while (i != j)
|
|
334
|
-
new (--i) T;
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
|
-
|
|
338
|
-
if (oldPtr != reinterpret_cast<T *>(array) && oldPtr != ptr)
|
|
339
|
-
qFree(oldPtr);
|
|
340
|
-
}
|
|
341
|
-
#endif
|
|
342
|
-
QT_END_NAMESPACE
|
|
343
|
-
|
|
344
|
-
QT_END_HEADER
|
|
345
|
-
|
|
346
|
-
#endif // QVARLENGTHARRAY_H
|
|
1
|
+
/****************************************************************************
|
|
2
|
+
**
|
|
3
|
+
** Copyright (C) 1992-2008 Trolltech ASA. All rights reserved.
|
|
4
|
+
**
|
|
5
|
+
** This file is part of the QtCore module of the Qt Toolkit.
|
|
6
|
+
**
|
|
7
|
+
** This file may be used under the terms of the GNU General Public
|
|
8
|
+
** License versions 2.0 or 3.0 as published by the Free Software
|
|
9
|
+
** Foundation and appearing in the files LICENSE.GPL2 and LICENSE.GPL3
|
|
10
|
+
** included in the packaging of this file. Alternatively you may (at
|
|
11
|
+
** your option) use any later version of the GNU General Public
|
|
12
|
+
** License if such license has been publicly approved by Trolltech ASA
|
|
13
|
+
** (or its successors, if any) and the KDE Free Qt Foundation. In
|
|
14
|
+
** addition, as a special exception, Trolltech gives you certain
|
|
15
|
+
** additional rights. These rights are described in the Trolltech GPL
|
|
16
|
+
** Exception version 1.2, which can be found at
|
|
17
|
+
** http://www.trolltech.com/products/qt/gplexception/ and in the file
|
|
18
|
+
** GPL_EXCEPTION.txt in this package.
|
|
19
|
+
**
|
|
20
|
+
** Please review the following information to ensure GNU General
|
|
21
|
+
** Public Licensing requirements will be met:
|
|
22
|
+
** http://trolltech.com/products/qt/licenses/licensing/opensource/. If
|
|
23
|
+
** you are unsure which license is appropriate for your use, please
|
|
24
|
+
** review the following information:
|
|
25
|
+
** http://trolltech.com/products/qt/licenses/licensing/licensingoverview
|
|
26
|
+
** or contact the sales department at sales@trolltech.com.
|
|
27
|
+
**
|
|
28
|
+
** In addition, as a special exception, Trolltech, as the sole
|
|
29
|
+
** copyright holder for Qt Designer, grants users of the Qt/Eclipse
|
|
30
|
+
** Integration plug-in the right for the Qt/Eclipse Integration to
|
|
31
|
+
** link to functionality provided by Qt Designer and its related
|
|
32
|
+
** libraries.
|
|
33
|
+
**
|
|
34
|
+
** This file is provided "AS IS" with NO WARRANTY OF ANY KIND,
|
|
35
|
+
** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR
|
|
36
|
+
** A PARTICULAR PURPOSE. Trolltech reserves all rights not expressly
|
|
37
|
+
** granted herein.
|
|
38
|
+
**
|
|
39
|
+
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
|
|
40
|
+
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
|
41
|
+
**
|
|
42
|
+
****************************************************************************/
|
|
43
|
+
|
|
44
|
+
#ifndef KDEVVARLENGTHARRAY_H
|
|
45
|
+
#define KDEVVARLENGTHARRAY_H
|
|
46
|
+
|
|
47
|
+
//#include <QtCore/qcontainerfwd.h>
|
|
48
|
+
#include <QtCore/QtGlobal>
|
|
49
|
+
#include <QtCore/QVector>
|
|
50
|
+
#include <new>
|
|
51
|
+
|
|
52
|
+
///Foreach macro that also works with QVarLengthArray or KDevVarLengthArray
|
|
53
|
+
///@warning Unlike the Qt foreach macro, this does not temporarily copy the array, which its size must not be changed while the iteration.
|
|
54
|
+
#define FOREACH_ARRAY(item, container) for(int a = 0, mustDo = 1; a < container.size(); ++a) if((mustDo == 0 || mustDo == 1) && (mustDo = 2)) for(item(container[a]); mustDo; mustDo = 0)
|
|
55
|
+
|
|
56
|
+
QT_BEGIN_HEADER
|
|
57
|
+
|
|
58
|
+
QT_BEGIN_NAMESPACE
|
|
59
|
+
|
|
60
|
+
QT_MODULE(Core)
|
|
61
|
+
|
|
62
|
+
//When this is uncommented, a QVector will be used instead of a variable-length array. This is useful for debugging, to find problems in KDevVarLengthArray
|
|
63
|
+
// #define FAKE_KDEVVARLENGTH_ARRAY
|
|
64
|
+
|
|
65
|
+
#ifdef FAKE_KDEVVARLENGTH_ARRAY
|
|
66
|
+
template<class T, int Prealloc = 256>
|
|
67
|
+
class KDevVarLengthArray : public QVector<T> {
|
|
68
|
+
public:
|
|
69
|
+
///Inserts the given item at the given position, moving all items behind the position back
|
|
70
|
+
void insert(const T& item, int position) {
|
|
71
|
+
QVector<T>::insert(position, item);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// Removes exactly one occurrence of the given value from the array. Returns false if none was found.
|
|
75
|
+
bool removeOne(const T& value) {
|
|
76
|
+
int i = this->indexOf(value);
|
|
77
|
+
if(i == -1)
|
|
78
|
+
return false;
|
|
79
|
+
erase(i);
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
void erase(int pos) {
|
|
83
|
+
this->remove(pos);
|
|
84
|
+
}
|
|
85
|
+
void append(const T& item) {
|
|
86
|
+
QVector<T>::append(item);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
void pop_back() {
|
|
90
|
+
Q_ASSERT(!this->isEmpty());
|
|
91
|
+
QVector<T>::pop_back();
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
void append(const T *buf, int size) {
|
|
95
|
+
for(int a = 0; a < size; ++a)
|
|
96
|
+
append(buf[a]);
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
#else
|
|
100
|
+
|
|
101
|
+
template<class T, int Prealloc = 256>
|
|
102
|
+
class KDevVarLengthArray
|
|
103
|
+
{
|
|
104
|
+
public:
|
|
105
|
+
inline explicit KDevVarLengthArray(int size = 0);
|
|
106
|
+
|
|
107
|
+
inline KDevVarLengthArray(const KDevVarLengthArray<T, Prealloc> &other)
|
|
108
|
+
: a(Prealloc), s(0), ptr(reinterpret_cast<T *>(array))
|
|
109
|
+
{
|
|
110
|
+
append(other.constData(), other.size());
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
inline ~KDevVarLengthArray() {
|
|
114
|
+
if (QTypeInfo<T>::isComplex) {
|
|
115
|
+
T *i = ptr + s;
|
|
116
|
+
while (i-- > ptr)
|
|
117
|
+
i->~T();
|
|
118
|
+
}
|
|
119
|
+
if (ptr != reinterpret_cast<T *>(array))
|
|
120
|
+
qFree(ptr);
|
|
121
|
+
}
|
|
122
|
+
inline KDevVarLengthArray<T, Prealloc> &operator=(const KDevVarLengthArray<T, Prealloc> &other)
|
|
123
|
+
{
|
|
124
|
+
if (this != &other) {
|
|
125
|
+
clear();
|
|
126
|
+
append(other.constData(), other.size());
|
|
127
|
+
}
|
|
128
|
+
return *this;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
inline int size() const { return s; }
|
|
132
|
+
inline int count() const { return s; }
|
|
133
|
+
inline bool isEmpty() const { return (s == 0); }
|
|
134
|
+
inline void resize(int size);
|
|
135
|
+
inline void clear() { resize(0); }
|
|
136
|
+
|
|
137
|
+
inline int capacity() const { return a; }
|
|
138
|
+
inline void reserve(int size);
|
|
139
|
+
|
|
140
|
+
inline T &operator[](int idx) {
|
|
141
|
+
Q_ASSERT(idx >= 0 && idx < s);
|
|
142
|
+
return ptr[idx];
|
|
143
|
+
}
|
|
144
|
+
inline const T &operator[](int idx) const {
|
|
145
|
+
Q_ASSERT(idx >= 0 && idx < s);
|
|
146
|
+
return ptr[idx];
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
///Returns the index of the given item in this array, or -1
|
|
150
|
+
int indexOf(const T& t) const {
|
|
151
|
+
for(int a = 0; a < s; ++a)
|
|
152
|
+
if(t == ptr[a])
|
|
153
|
+
return a;
|
|
154
|
+
return -1;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
inline KDevVarLengthArray& operator<<(const T &t) {
|
|
158
|
+
append(t);
|
|
159
|
+
return *this;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
inline void append(const T &t) {
|
|
163
|
+
const int idx = s++;
|
|
164
|
+
///This is currently the difference to KDevVarLengthArray(which uses s == a), and it prevents a crash.
|
|
165
|
+
if (s >= a)
|
|
166
|
+
realloc(s, s<<1);
|
|
167
|
+
if (QTypeInfo<T>::isComplex) {
|
|
168
|
+
new (ptr + idx) T(t);
|
|
169
|
+
} else {
|
|
170
|
+
ptr[idx] = t;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
void append(const T *buf, int size);
|
|
174
|
+
|
|
175
|
+
inline T *data() { return ptr; }
|
|
176
|
+
inline const T *data() const { return ptr; }
|
|
177
|
+
inline const T * constData() const { return ptr; }
|
|
178
|
+
|
|
179
|
+
///Returns whether the given item is contained in this array
|
|
180
|
+
bool contains(const T& value) const {
|
|
181
|
+
for(int a = 0; a < s; ++a)
|
|
182
|
+
if(ptr[a] == value)
|
|
183
|
+
return true;
|
|
184
|
+
|
|
185
|
+
return false;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
///Inserts the given item at the given position, moving all items behind the position back
|
|
189
|
+
void insert(const T& item, int position) {
|
|
190
|
+
Q_ASSERT(position >= 0 && position <= size());
|
|
191
|
+
resize(s+1);
|
|
192
|
+
for(int a = s-1; a > position; --a) {
|
|
193
|
+
ptr[a] = ptr[a-1];
|
|
194
|
+
}
|
|
195
|
+
ptr[position] = item;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
///Removes the given position from the array, moving all items behind it one back.
|
|
199
|
+
void erase(int position) {
|
|
200
|
+
Q_ASSERT(position >= 0 && position < s);
|
|
201
|
+
for(int a = position; a < s-1; ++a) {
|
|
202
|
+
ptr[a] = ptr[a+1];
|
|
203
|
+
}
|
|
204
|
+
resize(s-1);
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
// Removes exactly one occurrence of the given value from the array. Returns false if none was found.
|
|
208
|
+
bool removeOne(const T& value) {
|
|
209
|
+
for(int a = 0; a < s; ++a) {
|
|
210
|
+
if(ptr[a] == value) {
|
|
211
|
+
erase(a);
|
|
212
|
+
return true;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
return false;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
T& back() {
|
|
219
|
+
return ptr[s-1];
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
const T& back() const {
|
|
223
|
+
return ptr[s-1];
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
void pop_back() {
|
|
227
|
+
Q_ASSERT(s > 0);
|
|
228
|
+
resize(s-1);
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
private:
|
|
232
|
+
void realloc(int size, int alloc);
|
|
233
|
+
|
|
234
|
+
int a;
|
|
235
|
+
int s;
|
|
236
|
+
T *ptr;
|
|
237
|
+
union {
|
|
238
|
+
// ### Qt 5: Use 'Prealloc * sizeof(T)' as array size
|
|
239
|
+
char array[sizeof(qint64) * (((Prealloc * sizeof(T)) / sizeof(qint64)) + 1)];
|
|
240
|
+
qint64 q_for_alignment_1;
|
|
241
|
+
double q_for_alignment_2;
|
|
242
|
+
};
|
|
243
|
+
};
|
|
244
|
+
|
|
245
|
+
template <class T, int Prealloc>
|
|
246
|
+
Q_INLINE_TEMPLATE KDevVarLengthArray<T, Prealloc>::KDevVarLengthArray(int asize)
|
|
247
|
+
: s(asize) {
|
|
248
|
+
if (s > Prealloc) {
|
|
249
|
+
ptr = reinterpret_cast<T *>(qMalloc(s * sizeof(T)));
|
|
250
|
+
a = s;
|
|
251
|
+
} else {
|
|
252
|
+
ptr = reinterpret_cast<T *>(array);
|
|
253
|
+
a = Prealloc;
|
|
254
|
+
}
|
|
255
|
+
if (QTypeInfo<T>::isComplex) {
|
|
256
|
+
T *i = ptr + s;
|
|
257
|
+
while (i != ptr)
|
|
258
|
+
new (--i) T;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
template <class T, int Prealloc>
|
|
263
|
+
Q_INLINE_TEMPLATE void KDevVarLengthArray<T, Prealloc>::resize(int asize)
|
|
264
|
+
{ Q_ASSERT(asize >= 0 && asize < 100000); realloc(asize, qMax(asize, a)); }
|
|
265
|
+
|
|
266
|
+
template <class T, int Prealloc>
|
|
267
|
+
Q_INLINE_TEMPLATE void KDevVarLengthArray<T, Prealloc>::reserve(int asize)
|
|
268
|
+
{ if (asize > a) realloc(s, asize); }
|
|
269
|
+
|
|
270
|
+
template <class T, int Prealloc>
|
|
271
|
+
Q_OUTOFLINE_TEMPLATE void KDevVarLengthArray<T, Prealloc>::append(const T *abuf, int asize)
|
|
272
|
+
{
|
|
273
|
+
Q_ASSERT(abuf);
|
|
274
|
+
if (asize <= 0)
|
|
275
|
+
return;
|
|
276
|
+
|
|
277
|
+
const int idx = s;
|
|
278
|
+
const int news = s + asize;
|
|
279
|
+
if (news >= a)
|
|
280
|
+
realloc(news, news<<1);
|
|
281
|
+
else
|
|
282
|
+
s = news;
|
|
283
|
+
|
|
284
|
+
if (QTypeInfo<T>::isComplex) {
|
|
285
|
+
T *i = ptr + idx;
|
|
286
|
+
T *j = i + asize;
|
|
287
|
+
while (i < j)
|
|
288
|
+
new (i++) T(*abuf++);
|
|
289
|
+
} else {
|
|
290
|
+
qMemCopy(&ptr[idx], abuf, asize * sizeof(T));
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
template <class T, int Prealloc>
|
|
295
|
+
Q_OUTOFLINE_TEMPLATE void KDevVarLengthArray<T, Prealloc>::realloc(int asize, int aalloc)
|
|
296
|
+
{
|
|
297
|
+
Q_ASSERT(aalloc >= asize);
|
|
298
|
+
T *oldPtr = ptr;
|
|
299
|
+
int osize = s;
|
|
300
|
+
s = asize;
|
|
301
|
+
|
|
302
|
+
if (aalloc != a) {
|
|
303
|
+
ptr = reinterpret_cast<T *>(qMalloc(aalloc * sizeof(T)));
|
|
304
|
+
if (ptr) {
|
|
305
|
+
a = aalloc;
|
|
306
|
+
|
|
307
|
+
if (QTypeInfo<T>::isStatic) {
|
|
308
|
+
T *i = ptr + osize;
|
|
309
|
+
T *j = oldPtr + osize;
|
|
310
|
+
while (i != ptr) {
|
|
311
|
+
new (--i) T(*--j);
|
|
312
|
+
j->~T();
|
|
313
|
+
}
|
|
314
|
+
} else {
|
|
315
|
+
qMemCopy(ptr, oldPtr, osize * sizeof(T));
|
|
316
|
+
}
|
|
317
|
+
} else {
|
|
318
|
+
ptr = oldPtr;
|
|
319
|
+
s = 0;
|
|
320
|
+
asize = 0;
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
if (QTypeInfo<T>::isComplex) {
|
|
325
|
+
if (asize < osize) {
|
|
326
|
+
T *i = oldPtr + osize;
|
|
327
|
+
T *j = oldPtr + asize;
|
|
328
|
+
while (i-- != j)
|
|
329
|
+
i->~T();
|
|
330
|
+
} else {
|
|
331
|
+
T *i = ptr + asize;
|
|
332
|
+
T *j = ptr + osize;
|
|
333
|
+
while (i != j)
|
|
334
|
+
new (--i) T;
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
if (oldPtr != reinterpret_cast<T *>(array) && oldPtr != ptr)
|
|
339
|
+
qFree(oldPtr);
|
|
340
|
+
}
|
|
341
|
+
#endif
|
|
342
|
+
QT_END_NAMESPACE
|
|
343
|
+
|
|
344
|
+
QT_END_HEADER
|
|
345
|
+
|
|
346
|
+
#endif // QVARLENGTHARRAY_H
|