rock-qtbindings 4.8.6.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (768) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.txt +85 -0
  3. data/COPYING.LIB.txt +510 -0
  4. data/COPYING.txt +286 -0
  5. data/KNOWN_ISSUES.txt +17 -0
  6. data/Rakefile +121 -0
  7. data/TODO.txt +2 -0
  8. data/bin/rbqtapi +152 -0
  9. data/bin/rbrcc +14 -0
  10. data/bin/rbuic4 +14 -0
  11. data/bin/smokeapi +14 -0
  12. data/bin/smokedeptool +14 -0
  13. data/examples/designer/calculatorbuilder/calculatorbuilder.qrc +5 -0
  14. data/examples/designer/calculatorbuilder/calculatorform.rb +60 -0
  15. data/examples/designer/calculatorbuilder/calculatorform.ui +299 -0
  16. data/examples/designer/calculatorbuilder/main.rb +34 -0
  17. data/examples/designer/calculatorbuilder/makefile +2 -0
  18. data/examples/designer/calculatorform/calculatorform.rb +46 -0
  19. data/examples/designer/calculatorform/calculatorform.ui +277 -0
  20. data/examples/designer/calculatorform/main.rb +32 -0
  21. data/examples/designer/calculatorform/makefile +3 -0
  22. data/examples/desktop/screenshot/main.rb +32 -0
  23. data/examples/desktop/screenshot/screenshot.rb +157 -0
  24. data/examples/desktop/systray/images/bad.svg +64 -0
  25. data/examples/desktop/systray/images/heart.svg +55 -0
  26. data/examples/desktop/systray/images/trash.svg +58 -0
  27. data/examples/desktop/systray/main.rb +41 -0
  28. data/examples/desktop/systray/makefile +2 -0
  29. data/examples/desktop/systray/systray.qrc +7 -0
  30. data/examples/desktop/systray/window.rb +219 -0
  31. data/examples/dialogs/complexwizard/complexwizard.rb +140 -0
  32. data/examples/dialogs/complexwizard/licensewizard.rb +294 -0
  33. data/examples/dialogs/complexwizard/main.rb +31 -0
  34. data/examples/dialogs/configdialog/configdialog.rb +109 -0
  35. data/examples/dialogs/configdialog/images/config.png +0 -0
  36. data/examples/dialogs/configdialog/images/query.png +0 -0
  37. data/examples/dialogs/configdialog/images/update.png +0 -0
  38. data/examples/dialogs/configdialog/main.rb +31 -0
  39. data/examples/dialogs/configdialog/pages.rb +140 -0
  40. data/examples/dialogs/extension/finddialog.rb +89 -0
  41. data/examples/dialogs/extension/main.rb +31 -0
  42. data/examples/dialogs/findfiles/main.rb +32 -0
  43. data/examples/dialogs/findfiles/window.rb +177 -0
  44. data/examples/dialogs/simplewizard/classwizard.rb +374 -0
  45. data/examples/dialogs/simplewizard/main.rb +31 -0
  46. data/examples/dialogs/simplewizard/simplewizard.rb +110 -0
  47. data/examples/dialogs/standarddialogs/dialog.rb +340 -0
  48. data/examples/dialogs/standarddialogs/main.rb +31 -0
  49. data/examples/dialogs/tabdialog/main.rb +38 -0
  50. data/examples/dialogs/tabdialog/tabdialog.rb +178 -0
  51. data/examples/draganddrop/draggableicons/dragwidget.rb +125 -0
  52. data/examples/draganddrop/draggableicons/images/boat.png +0 -0
  53. data/examples/draganddrop/draggableicons/images/car.png +0 -0
  54. data/examples/draganddrop/draggableicons/images/house.png +0 -0
  55. data/examples/draganddrop/draggableicons/main.rb +41 -0
  56. data/examples/draganddrop/draggabletext/draglabel.rb +51 -0
  57. data/examples/draganddrop/draggabletext/dragwidget.rb +94 -0
  58. data/examples/draganddrop/draggabletext/main.rb +33 -0
  59. data/examples/draganddrop/draggabletext/words.txt +41 -0
  60. data/examples/draganddrop/dropsite/dropsitewidget.rb +99 -0
  61. data/examples/draganddrop/dropsite/dropsitewindow.rb +114 -0
  62. data/examples/draganddrop/dropsite/main.rb +33 -0
  63. data/examples/draganddrop/fridgemagnets/draglabel.rb +78 -0
  64. data/examples/draganddrop/fridgemagnets/dragwidget.rb +130 -0
  65. data/examples/draganddrop/fridgemagnets/main.rb +33 -0
  66. data/examples/draganddrop/fridgemagnets/words.txt +48 -0
  67. data/examples/draganddrop/puzzle/example.jpg +0 -0
  68. data/examples/draganddrop/puzzle/main.rb +33 -0
  69. data/examples/draganddrop/puzzle/mainwindow.rb +136 -0
  70. data/examples/draganddrop/puzzle/pieceslist.rb +95 -0
  71. data/examples/draganddrop/puzzle/puzzlewidget.rb +190 -0
  72. data/examples/graphicsview/collidingmice/images/cheese.jpg +0 -0
  73. data/examples/graphicsview/collidingmice/main.rb +53 -0
  74. data/examples/graphicsview/collidingmice/makefile +2 -0
  75. data/examples/graphicsview/collidingmice/mice.qrc +5 -0
  76. data/examples/graphicsview/collidingmice/mouse.rb +176 -0
  77. data/examples/graphicsview/dragdroprobot/coloritem.rb +86 -0
  78. data/examples/graphicsview/dragdroprobot/images/head.png +0 -0
  79. data/examples/graphicsview/dragdroprobot/main.rb +57 -0
  80. data/examples/graphicsview/dragdroprobot/makefile +2 -0
  81. data/examples/graphicsview/dragdroprobot/robot.qrc +5 -0
  82. data/examples/graphicsview/dragdroprobot/robot.rb +246 -0
  83. data/examples/itemviews/chart/chart.qrc +5 -0
  84. data/examples/itemviews/chart/main.rb +33 -0
  85. data/examples/itemviews/chart/mainwindow.rb +151 -0
  86. data/examples/itemviews/chart/makefile +2 -0
  87. data/examples/itemviews/chart/mydata.cht +8 -0
  88. data/examples/itemviews/chart/pieview.rb +516 -0
  89. data/examples/itemviews/chart/qtdata.cht +14 -0
  90. data/examples/itemviews/dirview/main.rb +39 -0
  91. data/examples/itemviews/pixelator/imagemodel.rb +51 -0
  92. data/examples/itemviews/pixelator/images/qt.png +0 -0
  93. data/examples/itemviews/pixelator/images.qrc +5 -0
  94. data/examples/itemviews/pixelator/main.rb +34 -0
  95. data/examples/itemviews/pixelator/mainwindow.rb +218 -0
  96. data/examples/itemviews/pixelator/makefile +3 -0
  97. data/examples/itemviews/pixelator/pixeldelegate.rb +67 -0
  98. data/examples/itemviews/puzzle/example.jpg +0 -0
  99. data/examples/itemviews/puzzle/main.rb +36 -0
  100. data/examples/itemviews/puzzle/mainwindow.rb +143 -0
  101. data/examples/itemviews/puzzle/piecesmodel.rb +174 -0
  102. data/examples/itemviews/puzzle/puzzlewidget.rb +192 -0
  103. data/examples/itemviews/simpledommodel/domitem.rb +62 -0
  104. data/examples/itemviews/simpledommodel/dommodel.rb +139 -0
  105. data/examples/itemviews/simpledommodel/main.rb +33 -0
  106. data/examples/itemviews/simpledommodel/mainwindow.rb +66 -0
  107. data/examples/itemviews/simpletreemodel/default.txt +40 -0
  108. data/examples/itemviews/simpletreemodel/main.rb +41 -0
  109. data/examples/itemviews/simpletreemodel/makefile +2 -0
  110. data/examples/itemviews/simpletreemodel/simpletreemodel.qrc +5 -0
  111. data/examples/itemviews/simpletreemodel/treeitem.rb +67 -0
  112. data/examples/itemviews/simpletreemodel/treemodel.rb +164 -0
  113. data/examples/itemviews/sortingmodel/default.txt +40 -0
  114. data/examples/itemviews/sortingmodel/main.rb +53 -0
  115. data/examples/itemviews/sortingmodel/treeitem.rb +73 -0
  116. data/examples/itemviews/sortingmodel/treemodel.rb +166 -0
  117. data/examples/itemviews/spinboxdelegate/main.rb +47 -0
  118. data/examples/itemviews/spinboxdelegate/spinboxdelegate.rb +62 -0
  119. data/examples/killerfilter/killerfilter.rb +55 -0
  120. data/examples/layouts/basiclayouts/dialog.rb +110 -0
  121. data/examples/layouts/basiclayouts/main.rb +31 -0
  122. data/examples/layouts/borderlayout/borderlayout.rb +190 -0
  123. data/examples/layouts/borderlayout/main.rb +32 -0
  124. data/examples/layouts/borderlayout/window.rb +52 -0
  125. data/examples/layouts/flowlayouts/flowlayout.rb +108 -0
  126. data/examples/layouts/flowlayouts/main.rb +32 -0
  127. data/examples/layouts/flowlayouts/window.rb +43 -0
  128. data/examples/mainwindows/application/images/copy.png +0 -0
  129. data/examples/mainwindows/application/images/cut.png +0 -0
  130. data/examples/mainwindows/application/images/new.png +0 -0
  131. data/examples/mainwindows/application/images/open.png +0 -0
  132. data/examples/mainwindows/application/images/paste.png +0 -0
  133. data/examples/mainwindows/application/images/save.png +0 -0
  134. data/examples/mainwindows/application/main.rb +32 -0
  135. data/examples/mainwindows/application/mainwindow.rb +285 -0
  136. data/examples/mainwindows/dockwidgets/images/new.png +0 -0
  137. data/examples/mainwindows/dockwidgets/images/print.png +0 -0
  138. data/examples/mainwindows/dockwidgets/images/save.png +0 -0
  139. data/examples/mainwindows/dockwidgets/images/undo.png +0 -0
  140. data/examples/mainwindows/dockwidgets/main.rb +32 -0
  141. data/examples/mainwindows/dockwidgets/mainwindow.rb +302 -0
  142. data/examples/mainwindows/mdi/images/copy.png +0 -0
  143. data/examples/mainwindows/mdi/images/cut.png +0 -0
  144. data/examples/mainwindows/mdi/images/new.png +0 -0
  145. data/examples/mainwindows/mdi/images/open.png +0 -0
  146. data/examples/mainwindows/mdi/images/paste.png +0 -0
  147. data/examples/mainwindows/mdi/images/save.png +0 -0
  148. data/examples/mainwindows/mdi/main.rb +32 -0
  149. data/examples/mainwindows/mdi/mainwindow.rb +363 -0
  150. data/examples/mainwindows/mdi/mdichild.rb +152 -0
  151. data/examples/mainwindows/menus/main.rb +32 -0
  152. data/examples/mainwindows/menus/mainwindow.rb +327 -0
  153. data/examples/mainwindows/recentfiles/main.rb +32 -0
  154. data/examples/mainwindows/recentfiles/mainwindow.rb +258 -0
  155. data/examples/mainwindows/sdi/images/copy.png +0 -0
  156. data/examples/mainwindows/sdi/images/cut.png +0 -0
  157. data/examples/mainwindows/sdi/images/new.png +0 -0
  158. data/examples/mainwindows/sdi/images/open.png +0 -0
  159. data/examples/mainwindows/sdi/images/paste.png +0 -0
  160. data/examples/mainwindows/sdi/images/save.png +0 -0
  161. data/examples/mainwindows/sdi/main.rb +32 -0
  162. data/examples/mainwindows/sdi/mainwindow.rb +335 -0
  163. data/examples/network/broadcastreceiver/main.rb +32 -0
  164. data/examples/network/broadcastreceiver/receiver.rb +64 -0
  165. data/examples/network/broadcastsender/main.rb +32 -0
  166. data/examples/network/broadcastsender/sender.rb +72 -0
  167. data/examples/network/fortuneclient/client.rb +149 -0
  168. data/examples/network/fortuneclient/main.rb +32 -0
  169. data/examples/network/fortuneserver/main.rb +32 -0
  170. data/examples/network/fortuneserver/server.rb +88 -0
  171. data/examples/network/ftp/ftpwindow.rb +259 -0
  172. data/examples/network/ftp/images/cdtoparent.png +0 -0
  173. data/examples/network/ftp/images/dir.png +0 -0
  174. data/examples/network/ftp/images/file.png +0 -0
  175. data/examples/network/ftp/main.rb +32 -0
  176. data/examples/network/http/httpwindow.rb +187 -0
  177. data/examples/network/http/main.rb +32 -0
  178. data/examples/network/loopback/dialog.rb +163 -0
  179. data/examples/network/loopback/main.rb +32 -0
  180. data/examples/opengl/grabber/glwidget.rb +265 -0
  181. data/examples/opengl/grabber/main.rb +32 -0
  182. data/examples/opengl/grabber/mainwindow.rb +189 -0
  183. data/examples/opengl/hellogl/glwidget.rb +226 -0
  184. data/examples/opengl/hellogl/main.rb +32 -0
  185. data/examples/opengl/hellogl/window.rb +66 -0
  186. data/examples/opengl/textures/glwidget.rb +151 -0
  187. data/examples/opengl/textures/images/side1.png +0 -0
  188. data/examples/opengl/textures/images/side2.png +0 -0
  189. data/examples/opengl/textures/images/side3.png +0 -0
  190. data/examples/opengl/textures/images/side4.png +0 -0
  191. data/examples/opengl/textures/images/side5.png +0 -0
  192. data/examples/opengl/textures/images/side6.png +0 -0
  193. data/examples/opengl/textures/main.rb +32 -0
  194. data/examples/opengl/textures/window.rb +77 -0
  195. data/examples/painting/basicdrawing/images/brick.png +0 -0
  196. data/examples/painting/basicdrawing/images/qt-logo.png +0 -0
  197. data/examples/painting/basicdrawing/main.rb +32 -0
  198. data/examples/painting/basicdrawing/renderarea.rb +166 -0
  199. data/examples/painting/basicdrawing/window.rb +215 -0
  200. data/examples/painting/concentriccircles/circlewidget.rb +88 -0
  201. data/examples/painting/concentriccircles/main.rb +32 -0
  202. data/examples/painting/concentriccircles/window.rb +72 -0
  203. data/examples/painting/fontsampler/main.rb +32 -0
  204. data/examples/painting/fontsampler/mainwindow.rb +369 -0
  205. data/examples/painting/fontsampler/mainwindowbase.ui +136 -0
  206. data/examples/painting/fontsampler/makefile +8 -0
  207. data/examples/painting/fontsampler/previewdialog.rb +257 -0
  208. data/examples/painting/fontsampler/previewdialogbase.ui +224 -0
  209. data/examples/painting/fontsampler/previewlabel.rb +43 -0
  210. data/examples/painting/imagecomposition/imagecomposer.rb +152 -0
  211. data/examples/painting/imagecomposition/imagecomposition.qrc +6 -0
  212. data/examples/painting/imagecomposition/images/background.png +0 -0
  213. data/examples/painting/imagecomposition/images/blackrectangle.png +0 -0
  214. data/examples/painting/imagecomposition/images/butterfly.png +0 -0
  215. data/examples/painting/imagecomposition/images/checker.png +0 -0
  216. data/examples/painting/imagecomposition/main.rb +33 -0
  217. data/examples/painting/imagecomposition/makefile +2 -0
  218. data/examples/painting/painterpaths/main.rb +32 -0
  219. data/examples/painting/painterpaths/renderarea.rb +97 -0
  220. data/examples/painting/painterpaths/window.rb +247 -0
  221. data/examples/painting/svgviewer/files/bubbles.svg +212 -0
  222. data/examples/painting/svgviewer/files/cubic.svg +77 -0
  223. data/examples/painting/svgviewer/files/spheres.svg +79 -0
  224. data/examples/painting/svgviewer/main.rb +38 -0
  225. data/examples/painting/svgviewer/mainwindow.rb +99 -0
  226. data/examples/painting/svgviewer/makefile +2 -0
  227. data/examples/painting/svgviewer/svgview.rb +156 -0
  228. data/examples/painting/svgviewer/svgviewer.qrc +6 -0
  229. data/examples/painting/svgviewer/svgwindow.rb +87 -0
  230. data/examples/painting/transformations/main.rb +32 -0
  231. data/examples/painting/transformations/renderarea.rb +127 -0
  232. data/examples/painting/transformations/window.rb +153 -0
  233. data/examples/passivepopup/passivepopup.rb +38 -0
  234. data/examples/qdbus/chat/chat.rb +146 -0
  235. data/examples/qdbus/chat/chat_adaptor.rb +12 -0
  236. data/examples/qdbus/chat/chat_interface.rb +13 -0
  237. data/examples/qdbus/chat/chatmainwindow.ui +184 -0
  238. data/examples/qdbus/chat/chatsetnickname.ui +145 -0
  239. data/examples/qdbus/chat/makefile +8 -0
  240. data/examples/qdbus/complexpingpong/complexping.rb +92 -0
  241. data/examples/qdbus/complexpingpong/complexpong.rb +83 -0
  242. data/examples/qdbus/complexpingpong/ping-common.rb +1 -0
  243. data/examples/qdbus/listnames/listnames.rb +69 -0
  244. data/examples/qdbus/pingpong/ping-common.rb +1 -0
  245. data/examples/qdbus/pingpong/ping.rb +52 -0
  246. data/examples/qdbus/pingpong/pong.rb +55 -0
  247. data/examples/qdbus/remotecontrolledcar/car/car.rb +151 -0
  248. data/examples/qdbus/remotecontrolledcar/car/main.rb +50 -0
  249. data/examples/qdbus/remotecontrolledcar/controller/controller.rb +66 -0
  250. data/examples/qdbus/remotecontrolledcar/controller/controller.ui +61 -0
  251. data/examples/qdbus/remotecontrolledcar/controller/main.rb +32 -0
  252. data/examples/qdbus/remotecontrolledcar/controller/makefile +2 -0
  253. data/examples/qtscribble/scribble.rb +270 -0
  254. data/examples/richtext/calendar/main.rb +33 -0
  255. data/examples/richtext/calendar/mainwindow.rb +173 -0
  256. data/examples/richtext/orderform/detailsdialog.rb +130 -0
  257. data/examples/richtext/orderform/main.rb +34 -0
  258. data/examples/richtext/orderform/mainwindow.rb +194 -0
  259. data/examples/richtext/syntaxhighlighter/examples/example +79 -0
  260. data/examples/richtext/syntaxhighlighter/highlighter.rb +90 -0
  261. data/examples/richtext/syntaxhighlighter/main.rb +34 -0
  262. data/examples/richtext/syntaxhighlighter/mainwindow.rb +105 -0
  263. data/examples/ruboids/LICENSE.txt +58 -0
  264. data/examples/ruboids/Manifest +26 -0
  265. data/examples/ruboids/README +53 -0
  266. data/examples/ruboids/TODO +29 -0
  267. data/examples/ruboids/boids.properties +33 -0
  268. data/examples/ruboids/generateManifest.rb +42 -0
  269. data/examples/ruboids/index.html +147 -0
  270. data/examples/ruboids/release.rb +152 -0
  271. data/examples/ruboids/ruboids/Boid.rb +141 -0
  272. data/examples/ruboids/ruboids/BoidView.rb +159 -0
  273. data/examples/ruboids/ruboids/Camera.rb +24 -0
  274. data/examples/ruboids/ruboids/CameraDialog.rb +218 -0
  275. data/examples/ruboids/ruboids/Canvas.rb +143 -0
  276. data/examples/ruboids/ruboids/Cloud.rb +61 -0
  277. data/examples/ruboids/ruboids/CloudView.rb +54 -0
  278. data/examples/ruboids/ruboids/Flock.rb +47 -0
  279. data/examples/ruboids/ruboids/Graphics.rb +278 -0
  280. data/examples/ruboids/ruboids/Params.rb +87 -0
  281. data/examples/ruboids/ruboids/Point.rb +153 -0
  282. data/examples/ruboids/ruboids/Thing.rb +34 -0
  283. data/examples/ruboids/ruboids/Triangle.rb +21 -0
  284. data/examples/ruboids/ruboids/View.rb +88 -0
  285. data/examples/ruboids/ruboids/World.rb +82 -0
  286. data/examples/ruboids/ruboids/WorldWindow.rb +52 -0
  287. data/examples/ruboids/ruboids/info.rb +12 -0
  288. data/examples/ruboids/ruboids/ruboids.rb +29 -0
  289. data/examples/run_all.rb +15 -0
  290. data/examples/threading/main_thread.rb +19 -0
  291. data/examples/tutorial/t1/t1.rb +10 -0
  292. data/examples/tutorial/t10/cannon.rb +72 -0
  293. data/examples/tutorial/t10/lcdrange.rb +45 -0
  294. data/examples/tutorial/t10/t10.rb +55 -0
  295. data/examples/tutorial/t11/cannon.rb +123 -0
  296. data/examples/tutorial/t11/lcdrange.rb +45 -0
  297. data/examples/tutorial/t11/t11.rb +65 -0
  298. data/examples/tutorial/t12/cannon.rb +157 -0
  299. data/examples/tutorial/t12/lcdrange.rb +58 -0
  300. data/examples/tutorial/t12/t12.rb +65 -0
  301. data/examples/tutorial/t13/cannon.rb +206 -0
  302. data/examples/tutorial/t13/gamebrd.rb +112 -0
  303. data/examples/tutorial/t13/lcdrange.rb +59 -0
  304. data/examples/tutorial/t13/t13.rb +11 -0
  305. data/examples/tutorial/t14/cannon.rb +262 -0
  306. data/examples/tutorial/t14/gamebrd.rb +122 -0
  307. data/examples/tutorial/t14/lcdrange.rb +61 -0
  308. data/examples/tutorial/t14/t14.rb +11 -0
  309. data/examples/tutorial/t2/t2.rb +16 -0
  310. data/examples/tutorial/t3/t3.rb +17 -0
  311. data/examples/tutorial/t4/t4.rb +23 -0
  312. data/examples/tutorial/t5/t5.rb +35 -0
  313. data/examples/tutorial/t6/t6.rb +48 -0
  314. data/examples/tutorial/t7/lcdrange.rb +32 -0
  315. data/examples/tutorial/t7/t7.rb +40 -0
  316. data/examples/tutorial/t8/cannon.rb +37 -0
  317. data/examples/tutorial/t8/lcdrange.rb +45 -0
  318. data/examples/tutorial/t8/t8.rb +43 -0
  319. data/examples/tutorial/t9/cannon.rb +44 -0
  320. data/examples/tutorial/t9/lcdrange.rb +46 -0
  321. data/examples/tutorial/t9/t9.rb +43 -0
  322. data/examples/widgets/analogclock/analogclock.rb +94 -0
  323. data/examples/widgets/analogclock/main.rb +9 -0
  324. data/examples/widgets/calculator/button.rb +45 -0
  325. data/examples/widgets/calculator/calculator.rb +382 -0
  326. data/examples/widgets/calculator/main.rb +32 -0
  327. data/examples/widgets/charactermap/characterwidget.rb +110 -0
  328. data/examples/widgets/charactermap/main.rb +32 -0
  329. data/examples/widgets/charactermap/mainwindow.rb +118 -0
  330. data/examples/widgets/digitalclock/digitalclock.rb +30 -0
  331. data/examples/widgets/digitalclock/main.rb +9 -0
  332. data/examples/widgets/groupbox/main.rb +32 -0
  333. data/examples/widgets/groupbox/window.rb +134 -0
  334. data/examples/widgets/icons/iconpreviewarea.rb +111 -0
  335. data/examples/widgets/icons/iconsizespinbox.rb +39 -0
  336. data/examples/widgets/icons/imagedelegate.rb +73 -0
  337. data/examples/widgets/icons/images/designer.png +0 -0
  338. data/examples/widgets/icons/images/find_disabled.png +0 -0
  339. data/examples/widgets/icons/images/find_normal.png +0 -0
  340. data/examples/widgets/icons/images/monkey_off_128x128.png +0 -0
  341. data/examples/widgets/icons/images/monkey_off_16x16.png +0 -0
  342. data/examples/widgets/icons/images/monkey_off_32x32.png +0 -0
  343. data/examples/widgets/icons/images/monkey_off_64x64.png +0 -0
  344. data/examples/widgets/icons/images/monkey_on_128x128.png +0 -0
  345. data/examples/widgets/icons/images/monkey_on_16x16.png +0 -0
  346. data/examples/widgets/icons/images/monkey_on_32x32.png +0 -0
  347. data/examples/widgets/icons/images/monkey_on_64x64.png +0 -0
  348. data/examples/widgets/icons/images/qtopia_16x16.png +0 -0
  349. data/examples/widgets/icons/images/qtopia_32x32.png +0 -0
  350. data/examples/widgets/icons/images/qtopia_48x48.png +0 -0
  351. data/examples/widgets/icons/main.rb +32 -0
  352. data/examples/widgets/icons/mainwindow.rb +351 -0
  353. data/examples/widgets/imageviewer/imageviewer.rb +219 -0
  354. data/examples/widgets/imageviewer/main.rb +32 -0
  355. data/examples/widgets/lineedits/main.rb +32 -0
  356. data/examples/widgets/lineedits/window.rb +199 -0
  357. data/examples/widgets/movie/images/open.png +0 -0
  358. data/examples/widgets/movie/images/pause.png +0 -0
  359. data/examples/widgets/movie/images/play.png +0 -0
  360. data/examples/widgets/movie/images/quit.png +0 -0
  361. data/examples/widgets/movie/images/stop.png +0 -0
  362. data/examples/widgets/movie/main.rb +32 -0
  363. data/examples/widgets/movie/movieplayer.rb +201 -0
  364. data/examples/widgets/movie/movies/fire.mng +0 -0
  365. data/examples/widgets/screenshot/main.rb +32 -0
  366. data/examples/widgets/screenshot/screenshot.rb +155 -0
  367. data/examples/widgets/scribble/main.rb +32 -0
  368. data/examples/widgets/scribble/mainwindow.rb +202 -0
  369. data/examples/widgets/scribble/scribblearea.rb +154 -0
  370. data/examples/widgets/sliders/main.rb +32 -0
  371. data/examples/widgets/sliders/slidersgroup.rb +97 -0
  372. data/examples/widgets/sliders/window.rb +124 -0
  373. data/examples/widgets/spinboxes/main.rb +32 -0
  374. data/examples/widgets/spinboxes/window.rb +213 -0
  375. data/examples/widgets/tetrix/main.rb +33 -0
  376. data/examples/widgets/tetrix/tetrixboard.rb +346 -0
  377. data/examples/widgets/tetrix/tetrixpiece.rb +135 -0
  378. data/examples/widgets/tetrix/tetrixwindow.rb +88 -0
  379. data/examples/widgets/tooltips/images/circle.png +0 -0
  380. data/examples/widgets/tooltips/images/square.png +0 -0
  381. data/examples/widgets/tooltips/images/triangle.png +0 -0
  382. data/examples/widgets/tooltips/main.rb +32 -0
  383. data/examples/widgets/tooltips/shapeitem.rb +31 -0
  384. data/examples/widgets/tooltips/sortingbox.rb +222 -0
  385. data/examples/widgets/wiggly/dialog.rb +48 -0
  386. data/examples/widgets/wiggly/main.rb +9 -0
  387. data/examples/widgets/wiggly/wigglywidget.rb +76 -0
  388. data/examples/widgets/windowflags/controllerwindow.rb +195 -0
  389. data/examples/widgets/windowflags/main.rb +32 -0
  390. data/examples/widgets/windowflags/previewwindow.rb +103 -0
  391. data/examples/xml/dombookmarks/frank.xbel +230 -0
  392. data/examples/xml/dombookmarks/jennifer.xbel +93 -0
  393. data/examples/xml/dombookmarks/main.rb +34 -0
  394. data/examples/xml/dombookmarks/mainwindow.rb +129 -0
  395. data/examples/xml/dombookmarks/xbeltree.rb +172 -0
  396. data/examples/xml/saxbookmarks/frank.xbel +230 -0
  397. data/examples/xml/saxbookmarks/jennifer.xbel +93 -0
  398. data/examples/xml/saxbookmarks/main.rb +34 -0
  399. data/examples/xml/saxbookmarks/mainwindow.rb +144 -0
  400. data/examples/xml/saxbookmarks/xbelgenerator.rb +95 -0
  401. data/examples/xml/saxbookmarks/xbelhandler.rb +122 -0
  402. data/ext/CMakeLists.txt +28 -0
  403. data/ext/cmake/modules/BasicFindPackageVersion.cmake.in +30 -0
  404. data/ext/cmake/modules/CMakeCSharpCompiler.cmake.in +7 -0
  405. data/ext/cmake/modules/CMakeCSharpInformation.cmake +366 -0
  406. data/ext/cmake/modules/CMakeDetermineCSharpCompiler.cmake +85 -0
  407. data/ext/cmake/modules/CMakeTestCSharpCompiler.cmake +1 -0
  408. data/ext/cmake/modules/CheckCXXSourceCompiles.cmake +68 -0
  409. data/ext/cmake/modules/FindLibraryWithDebug.cmake +113 -0
  410. data/ext/cmake/modules/FindMono.cmake +36 -0
  411. data/ext/cmake/modules/FindPHP5.cmake +179 -0
  412. data/ext/cmake/modules/FindPerlMore.cmake +78 -0
  413. data/ext/cmake/modules/FindPhonon.cmake +71 -0
  414. data/ext/cmake/modules/FindQImageBlitz.cmake +51 -0
  415. data/ext/cmake/modules/FindQScintilla.cmake +57 -0
  416. data/ext/cmake/modules/FindQt4.cmake +1275 -0
  417. data/ext/cmake/modules/FindQwt5.cmake +104 -0
  418. data/ext/cmake/modules/FindRuby.cmake +279 -0
  419. data/ext/cmake/modules/FindSmoke.cmake +78 -0
  420. data/ext/cmake/modules/HandleImportedTargetsInCMakeRequiredLibraries.cmake +85 -0
  421. data/ext/cmake/modules/MacroLogFeature.cmake +146 -0
  422. data/ext/cmake/modules/MacroOptionalAddBindings.cmake +47 -0
  423. data/ext/cmake/modules/MacroOptionalFindPackage.cmake +28 -0
  424. data/ext/cmake/modules/MacroPushRequiredVars.cmake +47 -0
  425. data/ext/cmake/modules/MacroWriteBasicCMakeVersionFile.cmake +22 -0
  426. data/ext/cmake/modules/Qt4ConfigDependentSettings.cmake +384 -0
  427. data/ext/cmake/modules/Qt4Macros.cmake +414 -0
  428. data/ext/cmake/modules/SmokeConfig.cmake.in +109 -0
  429. data/ext/generator/CMakeLists.txt +38 -0
  430. data/ext/generator/cmake/BasicFindPackageVersion.cmake.in +30 -0
  431. data/ext/generator/cmake/CMakeLists.txt +24 -0
  432. data/ext/generator/cmake/FindLibraryWithDebug.cmake +113 -0
  433. data/ext/generator/cmake/FindPhonon.cmake +71 -0
  434. data/ext/generator/cmake/FindQImageBlitz.cmake +51 -0
  435. data/ext/generator/cmake/FindQScintilla.cmake +57 -0
  436. data/ext/generator/cmake/FindQwt5.cmake +104 -0
  437. data/ext/generator/cmake/HandleImportedTargetsInCMakeRequiredLibraries.cmake +85 -0
  438. data/ext/generator/cmake/MacroLogFeature.cmake +146 -0
  439. data/ext/generator/cmake/MacroOptionalAddBindings.cmake +47 -0
  440. data/ext/generator/cmake/MacroOptionalFindPackage.cmake +28 -0
  441. data/ext/generator/cmake/MacroWriteBasicCMakeVersionFile.cmake +22 -0
  442. data/ext/generator/cmake/SmokeConfig.cmake.in +109 -0
  443. data/ext/generator/config.h +25 -0
  444. data/ext/generator/generator_export.h +31 -0
  445. data/ext/generator/generatorenvironment.cpp +52 -0
  446. data/ext/generator/generatorenvironment.h +35 -0
  447. data/ext/generator/generatorpreprocessor.cpp +303 -0
  448. data/ext/generator/generatorpreprocessor.h +83 -0
  449. data/ext/generator/generators/CMakeLists.txt +4 -0
  450. data/ext/generator/generators/dump/CMakeLists.txt +15 -0
  451. data/ext/generator/generators/dump/generator_dump.cpp +36 -0
  452. data/ext/generator/generators/smoke/CMakeLists.txt +18 -0
  453. data/ext/generator/generators/smoke/generator_smoke.cpp +240 -0
  454. data/ext/generator/generators/smoke/globals.h +140 -0
  455. data/ext/generator/generators/smoke/helpers.cpp +793 -0
  456. data/ext/generator/generators/smoke/writeClasses.cpp +502 -0
  457. data/ext/generator/generators/smoke/writeSmokeDataFile.cpp +754 -0
  458. data/ext/generator/generatorvisitor.cpp +922 -0
  459. data/ext/generator/generatorvisitor.h +119 -0
  460. data/ext/generator/main.cpp +243 -0
  461. data/ext/generator/name_compiler.cpp +205 -0
  462. data/ext/generator/name_compiler.h +76 -0
  463. data/ext/generator/options.cpp +33 -0
  464. data/ext/generator/options.h +46 -0
  465. data/ext/generator/parser/CMakeLists.txt +50 -0
  466. data/ext/generator/parser/ast.cpp +21 -0
  467. data/ext/generator/parser/ast.h +923 -0
  468. data/ext/generator/parser/astutilities.h +65 -0
  469. data/ext/generator/parser/codegenerator.cpp +867 -0
  470. data/ext/generator/parser/codegenerator.h +180 -0
  471. data/ext/generator/parser/codemodel_fwd.h +76 -0
  472. data/ext/generator/parser/commentformatter.cpp +54 -0
  473. data/ext/generator/parser/commentformatter.h +45 -0
  474. data/ext/generator/parser/commentparser.cpp +109 -0
  475. data/ext/generator/parser/commentparser.h +84 -0
  476. data/ext/generator/parser/control.cpp +40 -0
  477. data/ext/generator/parser/control.h +51 -0
  478. data/ext/generator/parser/cppparser_export.h +33 -0
  479. data/ext/generator/parser/default_visitor.cpp +470 -0
  480. data/ext/generator/parser/default_visitor.h +116 -0
  481. data/ext/generator/parser/dumptree.cpp +146 -0
  482. data/ext/generator/parser/dumptree.h +50 -0
  483. data/ext/generator/parser/indexedstring.cpp +213 -0
  484. data/ext/generator/parser/indexedstring.h +147 -0
  485. data/ext/generator/parser/kdevelop-parser-rev +1 -0
  486. data/ext/generator/parser/kdevvarlengtharray.h +346 -0
  487. data/ext/generator/parser/lexer.cpp +964 -0
  488. data/ext/generator/parser/lexer.h +308 -0
  489. data/ext/generator/parser/listnode.cpp +20 -0
  490. data/ext/generator/parser/listnode.h +97 -0
  491. data/ext/generator/parser/memorypool.cpp +20 -0
  492. data/ext/generator/parser/memorypool.h +41 -0
  493. data/ext/generator/parser/name_compiler.cpp +190 -0
  494. data/ext/generator/parser/name_compiler.h +77 -0
  495. data/ext/generator/parser/parser.cpp +4708 -0
  496. data/ext/generator/parser/parser.h +290 -0
  497. data/ext/generator/parser/parsesession.cpp +106 -0
  498. data/ext/generator/parser/parsesession.h +87 -0
  499. data/ext/generator/parser/problem.h +21 -0
  500. data/ext/generator/parser/rpp/CMakeLists.txt +45 -0
  501. data/ext/generator/parser/rpp/Makefile.am +13 -0
  502. data/ext/generator/parser/rpp/anchor.h +51 -0
  503. data/ext/generator/parser/rpp/appendedlist.h +363 -0
  504. data/ext/generator/parser/rpp/chartools.cpp +146 -0
  505. data/ext/generator/parser/rpp/chartools.h +99 -0
  506. data/ext/generator/parser/rpp/macrorepository.cpp +44 -0
  507. data/ext/generator/parser/rpp/macrorepository.h +59 -0
  508. data/ext/generator/parser/rpp/pp-configuration +86 -0
  509. data/ext/generator/parser/rpp/pp-engine.cpp +1216 -0
  510. data/ext/generator/parser/rpp/pp-engine.h +267 -0
  511. data/ext/generator/parser/rpp/pp-environment.cpp +271 -0
  512. data/ext/generator/parser/rpp/pp-environment.h +119 -0
  513. data/ext/generator/parser/rpp/pp-internal.cpp +38 -0
  514. data/ext/generator/parser/rpp/pp-internal.h +37 -0
  515. data/ext/generator/parser/rpp/pp-location.cpp +191 -0
  516. data/ext/generator/parser/rpp/pp-location.h +89 -0
  517. data/ext/generator/parser/rpp/pp-macro-expander.cpp +568 -0
  518. data/ext/generator/parser/rpp/pp-macro-expander.cpp.orig +558 -0
  519. data/ext/generator/parser/rpp/pp-macro-expander.h +130 -0
  520. data/ext/generator/parser/rpp/pp-macro.cpp +153 -0
  521. data/ext/generator/parser/rpp/pp-macro.h +176 -0
  522. data/ext/generator/parser/rpp/pp-scanner.cpp +311 -0
  523. data/ext/generator/parser/rpp/pp-scanner.h +97 -0
  524. data/ext/generator/parser/rpp/pp-stream.cpp +425 -0
  525. data/ext/generator/parser/rpp/pp-stream.h +183 -0
  526. data/ext/generator/parser/rpp/preprocessor.cpp +65 -0
  527. data/ext/generator/parser/rpp/preprocessor.h +80 -0
  528. data/ext/generator/parser/rpp/rpp.pri +2 -0
  529. data/ext/generator/parser/rpp/test/t001.cpp +23 -0
  530. data/ext/generator/parser/rpp/test/t002.cpp +15 -0
  531. data/ext/generator/parser/rpp/test/t003.cpp +10 -0
  532. data/ext/generator/parser/rpp/test/t004.cpp +9 -0
  533. data/ext/generator/parser/rpp/test/t005.cpp +10 -0
  534. data/ext/generator/parser/rpp/test/t006.cpp +10 -0
  535. data/ext/generator/parser/rpp/test/t007.cpp +6 -0
  536. data/ext/generator/parser/rpp/test/t008.cpp +6 -0
  537. data/ext/generator/parser/rpp/test/t009.cpp +5 -0
  538. data/ext/generator/parser/rpp/test/t010.cpp +15 -0
  539. data/ext/generator/parser/rpp/test/t011.cpp +9 -0
  540. data/ext/generator/parser/rpp/tests/CMakeLists.txt +17 -0
  541. data/ext/generator/parser/rpp/tests/main.cpp +69 -0
  542. data/ext/generator/parser/rxx.pri +50 -0
  543. data/ext/generator/parser/rxx_allocator.h +128 -0
  544. data/ext/generator/parser/safetycounter.h +57 -0
  545. data/ext/generator/parser/simplecursor.h +74 -0
  546. data/ext/generator/parser/stringhelpers.cpp +577 -0
  547. data/ext/generator/parser/stringhelpers.h +118 -0
  548. data/ext/generator/parser/symbol.h +140 -0
  549. data/ext/generator/parser/tests/CMakeLists.txt +46 -0
  550. data/ext/generator/parser/tests/test_generator.cpp +259 -0
  551. data/ext/generator/parser/tests/test_parser.cpp +474 -0
  552. data/ext/generator/parser/tests/test_pool.cpp +109 -0
  553. data/ext/generator/parser/tests/test_pool.h +35 -0
  554. data/ext/generator/parser/tests/testconfig.h.cmake +4 -0
  555. data/ext/generator/parser/tokens.cpp +367 -0
  556. data/ext/generator/parser/tokens.h +148 -0
  557. data/ext/generator/parser/type_compiler.cpp +135 -0
  558. data/ext/generator/parser/type_compiler.h +68 -0
  559. data/ext/generator/parser/visitor.cpp +115 -0
  560. data/ext/generator/parser/visitor.h +138 -0
  561. data/ext/generator/smoke.h +557 -0
  562. data/ext/generator/smokegen_string.h +43 -0
  563. data/ext/generator/type.cpp +204 -0
  564. data/ext/generator/type.h +497 -0
  565. data/ext/generator/type_compiler.cpp +277 -0
  566. data/ext/generator/type_compiler.h +80 -0
  567. data/ext/ruby/CMakeLists.txt +64 -0
  568. data/ext/ruby/qtdeclarative/CMakeLists.txt +17 -0
  569. data/ext/ruby/qtdeclarative/qtdeclarative.cpp +67 -0
  570. data/ext/ruby/qtdeclarative/qtdeclarative.rb +17 -0
  571. data/ext/ruby/qtdeclarative/qtdeclarativehandlers.cpp +36 -0
  572. data/ext/ruby/qtruby/AUTHORS +54 -0
  573. data/ext/ruby/qtruby/CMakeLists.txt +4 -0
  574. data/ext/ruby/qtruby/COPYING +355 -0
  575. data/ext/ruby/qtruby/COPYING.LIB +510 -0
  576. data/ext/ruby/qtruby/ChangeLog +3732 -0
  577. data/ext/ruby/qtruby/INSTALL +79 -0
  578. data/ext/ruby/qtruby/README +264 -0
  579. data/ext/ruby/qtruby/TODO +8 -0
  580. data/ext/ruby/qtruby/bin/CMakeLists.txt +1 -0
  581. data/ext/ruby/qtruby/bin/rbqtapi +152 -0
  582. data/ext/ruby/qtruby/rails_support/CMakeLists.txt +1 -0
  583. data/ext/ruby/qtruby/rails_support/active_item_model.rb +234 -0
  584. data/ext/ruby/qtruby/rails_support/active_table_model.rb +122 -0
  585. data/ext/ruby/qtruby/src/CMakeLists.txt +103 -0
  586. data/ext/ruby/qtruby/src/Qt.cpp +1327 -0
  587. data/ext/ruby/qtruby/src/handlers.cpp +2668 -0
  588. data/ext/ruby/qtruby/src/marshall.h +66 -0
  589. data/ext/ruby/qtruby/src/marshall_basetypes.h +208 -0
  590. data/ext/ruby/qtruby/src/marshall_complex.h +175 -0
  591. data/ext/ruby/qtruby/src/marshall_macros.h +647 -0
  592. data/ext/ruby/qtruby/src/marshall_primitives.h +306 -0
  593. data/ext/ruby/qtruby/src/marshall_types.cpp +815 -0
  594. data/ext/ruby/qtruby/src/marshall_types.h +240 -0
  595. data/ext/ruby/qtruby/src/qtruby.cpp +2627 -0
  596. data/ext/ruby/qtruby/src/qtruby.h +198 -0
  597. data/ext/ruby/qtruby/src/smokeruby.h +164 -0
  598. data/ext/ruby/qtruby/test/opoverloading.rb +46 -0
  599. data/ext/ruby/qtruby/test/unittests.rb +151 -0
  600. data/ext/ruby/qtruby/tools/CMakeLists.txt +2 -0
  601. data/ext/ruby/qtruby/tools/rbrcc/CMakeLists.txt +6 -0
  602. data/ext/ruby/qtruby/tools/rbrcc/Messages.sh +7 -0
  603. data/ext/ruby/qtruby/tools/rbrcc/main.cpp +173 -0
  604. data/ext/ruby/qtruby/tools/rbrcc/rbrcc.pro +14 -0
  605. data/ext/ruby/qtruby/tools/rbrcc/rcc.cpp +648 -0
  606. data/ext/ruby/qtruby/tools/rbrcc/rcc.h +165 -0
  607. data/ext/ruby/qtruby/tools/rbuic/CMakeLists.txt +35 -0
  608. data/ext/ruby/qtruby/tools/rbuic/LICENSE.GPL +280 -0
  609. data/ext/ruby/qtruby/tools/rbuic/Messages.sh +7 -0
  610. data/ext/ruby/qtruby/tools/rbuic/TODO +4 -0
  611. data/ext/ruby/qtruby/tools/rbuic/customwidgetsinfo.cpp +106 -0
  612. data/ext/ruby/qtruby/tools/rbuic/customwidgetsinfo.h +95 -0
  613. data/ext/ruby/qtruby/tools/rbuic/databaseinfo.cpp +102 -0
  614. data/ext/ruby/qtruby/tools/rbuic/databaseinfo.h +85 -0
  615. data/ext/ruby/qtruby/tools/rbuic/driver.cpp +384 -0
  616. data/ext/ruby/qtruby/tools/rbuic/driver.h +141 -0
  617. data/ext/ruby/qtruby/tools/rbuic/globaldefs.h +60 -0
  618. data/ext/ruby/qtruby/tools/rbuic/main.cpp +201 -0
  619. data/ext/ruby/qtruby/tools/rbuic/option.h +110 -0
  620. data/ext/ruby/qtruby/tools/rbuic/rbuic.pri +23 -0
  621. data/ext/ruby/qtruby/tools/rbuic/rbuic4.pro +43 -0
  622. data/ext/ruby/qtruby/tools/rbuic/ruby/rbextractimages.cpp +150 -0
  623. data/ext/ruby/qtruby/tools/rbuic/ruby/rbextractimages.h +83 -0
  624. data/ext/ruby/qtruby/tools/rbuic/ruby/rbwritedeclaration.cpp +217 -0
  625. data/ext/ruby/qtruby/tools/rbuic/ruby/rbwritedeclaration.h +85 -0
  626. data/ext/ruby/qtruby/tools/rbuic/ruby/rbwriteicondata.cpp +185 -0
  627. data/ext/ruby/qtruby/tools/rbuic/ruby/rbwriteicondata.h +86 -0
  628. data/ext/ruby/qtruby/tools/rbuic/ruby/rbwriteicondeclaration.cpp +88 -0
  629. data/ext/ruby/qtruby/tools/rbuic/ruby/rbwriteicondeclaration.h +83 -0
  630. data/ext/ruby/qtruby/tools/rbuic/ruby/rbwriteiconinitialization.cpp +126 -0
  631. data/ext/ruby/qtruby/tools/rbuic/ruby/rbwriteiconinitialization.h +87 -0
  632. data/ext/ruby/qtruby/tools/rbuic/ruby/rbwriteinitialization.cpp +2478 -0
  633. data/ext/ruby/qtruby/tools/rbuic/ruby/rbwriteinitialization.h +314 -0
  634. data/ext/ruby/qtruby/tools/rbuic/ruby/ruby.pri +18 -0
  635. data/ext/ruby/qtruby/tools/rbuic/treewalker.cpp +318 -0
  636. data/ext/ruby/qtruby/tools/rbuic/treewalker.h +139 -0
  637. data/ext/ruby/qtruby/tools/rbuic/ui4.cpp +7623 -0
  638. data/ext/ruby/qtruby/tools/rbuic/ui4.h +3180 -0
  639. data/ext/ruby/qtruby/tools/rbuic/uic.cpp +438 -0
  640. data/ext/ruby/qtruby/tools/rbuic/uic.h +154 -0
  641. data/ext/ruby/qtruby/tools/rbuic/utils.h +125 -0
  642. data/ext/ruby/qtruby/tools/rbuic/validator.cpp +100 -0
  643. data/ext/ruby/qtruby/tools/rbuic/validator.h +80 -0
  644. data/ext/ruby/qtscript/CMakeLists.txt +19 -0
  645. data/ext/ruby/qtscript/qtscript.cpp +83 -0
  646. data/ext/ruby/qtscript/qtscript.rb +40 -0
  647. data/ext/ruby/qtscript/qtscripthandlers.cpp +37 -0
  648. data/ext/ruby/qtscript/smokedata.cpp +1403 -0
  649. data/ext/ruby/qttest/CMakeLists.txt +18 -0
  650. data/ext/ruby/qttest/ChangeLog +9 -0
  651. data/ext/ruby/qttest/examples/myfirsttest.rb +30 -0
  652. data/ext/ruby/qttest/qttest.cpp +83 -0
  653. data/ext/ruby/qttest/qttest.rb +166 -0
  654. data/ext/ruby/qttest/qttesthandlers.cpp +37 -0
  655. data/ext/ruby/qtuitools/CMakeLists.txt +16 -0
  656. data/ext/ruby/qtuitools/qtuitools.cpp +83 -0
  657. data/ext/ruby/qtuitools/qtuitools.rb +17 -0
  658. data/ext/ruby/qtuitools/qtuitoolshandlers.cpp +32 -0
  659. data/ext/ruby/qtwebkit/CMakeLists.txt +17 -0
  660. data/ext/ruby/qtwebkit/qtwebkit.cpp +67 -0
  661. data/ext/ruby/qtwebkit/qtwebkit.rb +17 -0
  662. data/ext/ruby/qtwebkit/qtwebkithandlers.cpp +40 -0
  663. data/ext/smoke/CMakeLists.txt +39 -0
  664. data/ext/smoke/deptool/CMakeLists.txt +7 -0
  665. data/ext/smoke/deptool/main.cpp +128 -0
  666. data/ext/smoke/qt_smoke.h +16 -0
  667. data/ext/smoke/qtcore/CMakeLists.txt +88 -0
  668. data/ext/smoke/qtcore/QtGuess.txt +180 -0
  669. data/ext/smoke/qtcore/config.xml.cmake +10 -0
  670. data/ext/smoke/qtcore/qt-config.xml.cmake +21 -0
  671. data/ext/smoke/qtcore/qtcore_includes.h +1 -0
  672. data/ext/smoke/qtcore/smokeconfig.xml +193 -0
  673. data/ext/smoke/qtcore/tests/CMakeLists.txt +13 -0
  674. data/ext/smoke/qtcore/tests/test.cpp +846 -0
  675. data/ext/smoke/qtcore_smoke.h +16 -0
  676. data/ext/smoke/qtdbus/CMakeLists.txt +38 -0
  677. data/ext/smoke/qtdbus/config.xml.cmake +11 -0
  678. data/ext/smoke/qtdbus/qtdbus_includes.h +2 -0
  679. data/ext/smoke/qtdbus/smokeconfig.xml +65 -0
  680. data/ext/smoke/qtdbus_smoke.h +16 -0
  681. data/ext/smoke/qtdeclarative/CMakeLists.txt +45 -0
  682. data/ext/smoke/qtdeclarative/config.xml.cmake +12 -0
  683. data/ext/smoke/qtdeclarative/qtdeclarative_includes.h +3 -0
  684. data/ext/smoke/qtdeclarative/smokeconfig.xml +59 -0
  685. data/ext/smoke/qtdeclarative_smoke.h +16 -0
  686. data/ext/smoke/qtgui/CMakeLists.txt +76 -0
  687. data/ext/smoke/qtgui/config.xml.cmake +11 -0
  688. data/ext/smoke/qtgui/qtgui_includes.h +7 -0
  689. data/ext/smoke/qtgui/smokeconfig.xml +500 -0
  690. data/ext/smoke/qtgui_smoke.h +16 -0
  691. data/ext/smoke/qthelp/CMakeLists.txt +45 -0
  692. data/ext/smoke/qthelp/config.xml.cmake +13 -0
  693. data/ext/smoke/qthelp/qthelp_includes.h +3 -0
  694. data/ext/smoke/qthelp/smokeconfig.xml +54 -0
  695. data/ext/smoke/qthelp_smoke.h +16 -0
  696. data/ext/smoke/qtmultimedia/CMakeLists.txt +42 -0
  697. data/ext/smoke/qtmultimedia/config.xml.cmake +12 -0
  698. data/ext/smoke/qtmultimedia/qtmultimedia_includes.h +3 -0
  699. data/ext/smoke/qtmultimedia/smokeconfig.xml +51 -0
  700. data/ext/smoke/qtmultimedia_smoke.h +16 -0
  701. data/ext/smoke/qtnetwork/CMakeLists.txt +38 -0
  702. data/ext/smoke/qtnetwork/config.xml.cmake +11 -0
  703. data/ext/smoke/qtnetwork/qtnetwork_includes.h +2 -0
  704. data/ext/smoke/qtnetwork/smokeconfig.xml +81 -0
  705. data/ext/smoke/qtnetwork_smoke.h +16 -0
  706. data/ext/smoke/qtopengl/CMakeLists.txt +43 -0
  707. data/ext/smoke/qtopengl/config.xml.cmake +13 -0
  708. data/ext/smoke/qtopengl/qtopengl_includes.h +3 -0
  709. data/ext/smoke/qtopengl/smokeconfig.xml +58 -0
  710. data/ext/smoke/qtopengl_smoke.h +16 -0
  711. data/ext/smoke/qtscript/CMakeLists.txt +31 -0
  712. data/ext/smoke/qtscript/config.xml.cmake +11 -0
  713. data/ext/smoke/qtscript/qtscript_includes.h +14 -0
  714. data/ext/smoke/qtscript/smokeconfig.xml +39 -0
  715. data/ext/smoke/qtscript_smoke.h +16 -0
  716. data/ext/smoke/qtsql/CMakeLists.txt +45 -0
  717. data/ext/smoke/qtsql/config.xml.cmake +11 -0
  718. data/ext/smoke/qtsql/qtsql_includes.h +3 -0
  719. data/ext/smoke/qtsql/smokeconfig.xml +60 -0
  720. data/ext/smoke/qtsql_smoke.h +16 -0
  721. data/ext/smoke/qtsvg/CMakeLists.txt +43 -0
  722. data/ext/smoke/qtsvg/config.xml.cmake +12 -0
  723. data/ext/smoke/qtsvg/qtsvg_includes.h +3 -0
  724. data/ext/smoke/qtsvg/smokeconfig.xml +46 -0
  725. data/ext/smoke/qtsvg_smoke.h +16 -0
  726. data/ext/smoke/qttest/CMakeLists.txt +35 -0
  727. data/ext/smoke/qttest/config.xml.cmake +12 -0
  728. data/ext/smoke/qttest/qttest_includes.h +14 -0
  729. data/ext/smoke/qttest/smokeconfig.xml +36 -0
  730. data/ext/smoke/qttest_smoke.h +16 -0
  731. data/ext/smoke/qtuitools/CMakeLists.txt +30 -0
  732. data/ext/smoke/qtuitools/config.xml.cmake +12 -0
  733. data/ext/smoke/qtuitools/qtuitools_includes.h +1 -0
  734. data/ext/smoke/qtuitools/smokeconfig.xml +20 -0
  735. data/ext/smoke/qtuitools_smoke.h +16 -0
  736. data/ext/smoke/qtwebkit/CMakeLists.txt +36 -0
  737. data/ext/smoke/qtwebkit/config.xml.cmake +11 -0
  738. data/ext/smoke/qtwebkit/qtwebkit_includes.h +1 -0
  739. data/ext/smoke/qtwebkit/smokeconfig.xml +48 -0
  740. data/ext/smoke/qtwebkit_smoke.h +16 -0
  741. data/ext/smoke/qtxml/CMakeLists.txt +41 -0
  742. data/ext/smoke/qtxml/config.xml.cmake +11 -0
  743. data/ext/smoke/qtxml/qtxml_includes.h +2 -0
  744. data/ext/smoke/qtxml/smokeconfig.xml +70 -0
  745. data/ext/smoke/qtxml_smoke.h +16 -0
  746. data/ext/smoke/qtxmlpatterns/CMakeLists.txt +42 -0
  747. data/ext/smoke/qtxmlpatterns/config.xml.cmake +12 -0
  748. data/ext/smoke/qtxmlpatterns/qtxmlpatterns_includes.h +3 -0
  749. data/ext/smoke/qtxmlpatterns/smokeconfig.xml +80 -0
  750. data/ext/smoke/qtxmlpatterns_smoke.h +16 -0
  751. data/ext/smoke/smoke.h +559 -0
  752. data/ext/smoke/smokeapi/CMakeLists.txt +9 -0
  753. data/ext/smoke/smokeapi/main.cpp +309 -0
  754. data/ext/smoke/smokebase/CMakeLists.txt +11 -0
  755. data/ext/smoke/smokebase/smokebase.cpp +6 -0
  756. data/ext/smoke/solid_smoke.h +16 -0
  757. data/extconf.rb +256 -0
  758. data/lib/Qt/qtruby4.rb +3268 -0
  759. data/lib/Qt.rb +1 -0
  760. data/lib/Qt4.rb +119 -0
  761. data/lib/qtbindings_version.rb +2 -0
  762. data/lib/qtdeclarative/qtdeclarative.rb +17 -0
  763. data/lib/qtscript/qtscript.rb +40 -0
  764. data/lib/qttest/qttest.rb +166 -0
  765. data/lib/qtuitools/qtuitools.rb +17 -0
  766. data/lib/qtwebkit/qtwebkit.rb +17 -0
  767. data/rock-qtbindings.gemspec +18 -0
  768. metadata +819 -0
@@ -0,0 +1,1216 @@
1
+ /*
2
+ Copyright 2005 Roberto Raggi <roberto@kdevelop.org>
3
+ Copyright 2006 Hamish Rodda <rodda@kde.org>
4
+
5
+ Permission to use, copy, modify, distribute, and sell this software and its
6
+ documentation for any purpose is hereby granted without fee, provided that
7
+ the above copyright notice appear in all copies and that both that
8
+ copyright notice and this permission notice appear in supporting
9
+ documentation.
10
+
11
+ The above copyright notice and this permission notice shall be included in
12
+ all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ KDEVELOP TEAM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
18
+ AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20
+ */
21
+
22
+ #include "pp-engine.h"
23
+
24
+ #include <QFile>
25
+ #include <QTextStream>
26
+ #include <QtDebug>
27
+
28
+ #include "pp-internal.h"
29
+ #include "preprocessor.h"
30
+ #include "pp-environment.h"
31
+ #include "pp-location.h"
32
+ #include "chartools.h"
33
+ // #include "macrorepository.h"
34
+
35
+ using namespace rpp;
36
+
37
+ #define RETURN_ON_FAIL(x) if(!(x)) { ++input; qDebug() << "Preprocessor: Condition not satisfied"; return; }
38
+
39
+ pp::pp(Preprocessor* preprocessor)
40
+ : m_environment(new Environment(this))
41
+ , expand(this, 0, true)
42
+ , m_preprocessor(preprocessor)
43
+ , nextToken(0)
44
+ , haveNextToken(false)
45
+ , hideNext(false)
46
+ , hadGuardCandidate(false)
47
+ , checkGuardEnd(false)
48
+ {
49
+ iflevel = 0;
50
+ _M_skipping[iflevel] = 0;
51
+ _M_true_test[iflevel] = 0;
52
+ }
53
+
54
+ pp::~pp()
55
+ {
56
+ delete m_environment;
57
+ }
58
+
59
+ Preprocessor* pp::preprocessor() {
60
+ return m_preprocessor;
61
+ }
62
+
63
+ PreprocessedContents pp::processFile(const QString& fileName)
64
+ {
65
+ QFile file(fileName);
66
+ if (!file.open(QIODevice::ReadOnly))
67
+ {
68
+ qWarning() << "file '" << fileName << "' not found!" ;
69
+ return PreprocessedContents();
70
+ }
71
+
72
+ PreprocessedContents result;
73
+ processFileInternal(fileName, file.readAll(), result);
74
+ return result;
75
+ }
76
+
77
+ PreprocessedContents pp::processFile(const QString& fileName, const QByteArray& data)
78
+ {
79
+ PreprocessedContents result;
80
+ processFileInternal(fileName, data, result);
81
+ return result;
82
+ }
83
+
84
+ void pp::processFileInternal(const QString& fileName, const QByteArray& fileContents, PreprocessedContents& result)
85
+ {
86
+ m_files.push(IndexedString(fileName));
87
+ // Guestimate as to how much expansion will occur
88
+ result.reserve(int(fileContents.length() * 1.2));
89
+ PreprocessedContents contents = convertFromByteArray(fileContents);
90
+ {
91
+ Stream is(&contents);
92
+ Stream rs(&result, m_environment->locationTable());
93
+ operator () (is, rs);
94
+ }
95
+ result.squeeze();
96
+ }
97
+
98
+ uint ifDirective = IndexedString("if").index();
99
+ uint elseDirective = IndexedString("else").index();
100
+ uint elifDirective = IndexedString("elif").index();
101
+ uint ifdefDirective = IndexedString("ifdef").index();
102
+ uint undefDirective = IndexedString("undef").index();
103
+ uint endifDirective = IndexedString("endif").index();
104
+ uint ifndefDirective = IndexedString("ifndef").index();
105
+ uint defineDirective = IndexedString("define").index();
106
+ uint includeDirective = IndexedString("include").index();
107
+ uint includeNextDirective = IndexedString("include_next").index();
108
+
109
+ void pp::handle_directive(uint directive, Stream& input, Stream& output)
110
+ {
111
+ skip_blanks (input, output);
112
+ if(!(directive == ifndefDirective)) {
113
+ hadGuardCandidate = true; //Too late, the guard must be the first directive
114
+ }
115
+ if(checkGuardEnd) {
116
+ guardCandidate = IndexedString();
117
+ checkGuardEnd = false;
118
+ }
119
+
120
+ if(directive == defineDirective)
121
+ if (! skipping ())
122
+ return handle_define(input);
123
+
124
+ if(directive == includeDirective || directive == includeNextDirective)
125
+ if (! skipping ())
126
+ return handle_include (directive == includeNextDirective, input, output);
127
+
128
+ if(directive == undefDirective)
129
+ if (! skipping ())
130
+ return handle_undef(input);
131
+
132
+ if(directive == elifDirective)
133
+ return handle_elif(input);
134
+
135
+ if(directive == elseDirective)
136
+ return handle_else(input.inputPosition().line);
137
+
138
+ if(directive == endifDirective)
139
+ return handle_endif(input, output);
140
+
141
+ if(directive == ifDirective)
142
+ return handle_if(input);
143
+
144
+ if(directive == ifdefDirective)
145
+ return handle_ifdef(false, input);
146
+
147
+ if(directive == ifndefDirective)
148
+ return handle_ifdef(true, input);
149
+ }
150
+
151
+ void pp::handle_include(bool skip_current_path, Stream& input, Stream& output)
152
+ {
153
+ if (isLetter(input.current()) || input == '_') {
154
+ pp_macro_expander expand_include(this);
155
+
156
+ Anchor inputPosition = input.inputPosition();
157
+ SimpleCursor originalInputPosition = input.originalInputPosition();
158
+ PreprocessedContents includeString;
159
+ {
160
+ Stream cs(&includeString);
161
+ expand_include(input, cs);
162
+ }
163
+
164
+ skip_blanks(input, devnull());
165
+ RETURN_ON_FAIL(!includeString.isEmpty() && (includeString.first() == indexFromCharacter('<') || includeString.first() == indexFromCharacter('"')));
166
+
167
+ Stream newInput(&includeString, inputPosition);
168
+ newInput.setOriginalInputPosition(originalInputPosition);
169
+ handle_include(skip_current_path, newInput, output);
170
+ return;
171
+ }
172
+
173
+ RETURN_ON_FAIL(input == '<' || input == '"');
174
+ char quote((input == '"') ? '"' : '>');
175
+ ++input;
176
+
177
+ PreprocessedContents includeNameB;
178
+
179
+ while (!input.atEnd() && input != quote) {
180
+ RETURN_ON_FAIL(input != '\n');
181
+
182
+ includeNameB.append(input);
183
+ ++input;
184
+ }
185
+
186
+ QString includeName(QString::fromUtf8(stringFromContents(includeNameB)));
187
+
188
+ Stream* include = m_preprocessor->sourceNeeded(includeName, quote == '"' ? Preprocessor::IncludeLocal : Preprocessor::IncludeGlobal, input.inputPosition().line, skip_current_path);
189
+
190
+ if (include && !include->atEnd()) {
191
+ // m_files.push(IndexedString(includeName));
192
+
193
+ // output.mark(Anchor(0, 0));
194
+
195
+ operator()(*include, output);
196
+
197
+ // restore the file name and sync the buffer
198
+ // output.mark(input.inputPosition());
199
+ }
200
+
201
+ delete include;
202
+ }
203
+
204
+ void pp::operator () (Stream& input, Stream& output)
205
+ {
206
+ int previousIfLevel = iflevel;
207
+
208
+ forever
209
+ {
210
+ haveNextToken = false;
211
+
212
+ if (skipping()) {
213
+ skip_blanks(input, devnull());
214
+
215
+ } else {
216
+ skip_blanks(input, output);
217
+ }
218
+
219
+ if (input.atEnd()) {
220
+ break;
221
+
222
+ } else if (input == '#') {
223
+ skip_blanks(++input, devnull());
224
+
225
+ uint directive = skip_identifier(input);
226
+
227
+ skip_blanks(input, devnull());
228
+
229
+ Anchor inputPosition = input.inputPosition();
230
+ SimpleCursor originalInputPosition = input.originalInputPosition();
231
+
232
+ PreprocessedContents skipped;
233
+ {
234
+ Stream ss(&skipped);
235
+ skip (input, ss);
236
+ }
237
+
238
+ Stream ss(&skipped, inputPosition);
239
+ ss.setOriginalInputPosition(originalInputPosition);
240
+ handle_directive(directive, ss, output);
241
+
242
+ } else if (input == '\n') {
243
+ output << input;
244
+ ++input;
245
+
246
+ } else if (skipping ()) {
247
+ skip (input, devnull());
248
+
249
+ } else {
250
+ output.mark(input.inputPosition());
251
+ if(checkGuardEnd) {
252
+ expand.startSignificantContentSearch();
253
+ }
254
+
255
+ expand (input, output);
256
+ if(checkGuardEnd) {
257
+ if(expand.foundSignificantContent() || !input.atEnd()) {
258
+ guardCandidate = IndexedString();
259
+ }
260
+ checkGuardEnd = false;
261
+ }
262
+ }
263
+ }
264
+
265
+ if(!guardCandidate.isEmpty())
266
+ preprocessor()->foundHeaderGuard(input, guardCandidate);
267
+
268
+ if (iflevel != previousIfLevel && !input.skippedToEnd())
269
+ createProblem(input, "Unterminated #if statement");
270
+ }
271
+
272
+ void pp::createProblem(Stream& input, const QString& description) {
273
+ Problem* problem = new Problem;
274
+ problem->file = currentFileNameString();
275
+ problem->position = input.originalInputPosition();
276
+ problem->description = description;
277
+ problemEncountered(problem);
278
+ }
279
+
280
+ void pp::handle_define (Stream& input)
281
+ {
282
+ pp_macro* macro = new pp_macro;
283
+ macro->file = currentFileName();
284
+ macro->sourceLine = input.originalInputPosition().line;
285
+
286
+ skip_blanks (input, devnull());
287
+ macro->name = IndexedString::fromIndex(skip_identifier(input)); //@todo make macros utf8 too
288
+
289
+ if (!input.atEnd() && input == '(')
290
+ {
291
+ macro->function_like = true;
292
+
293
+ skip_blanks (++input, devnull()); // skip '('
294
+ uint formal = skip_identifier(input);
295
+ if (formal)
296
+ macro->formals.append( IndexedString::fromIndex(formal) );
297
+
298
+ skip_blanks(input, devnull());
299
+
300
+ if (input == '.') {
301
+ macro->variadics = true;
302
+
303
+ do {
304
+ ++input;
305
+
306
+ } while (input == '.');
307
+ }
308
+
309
+ while (!input.atEnd() && input == ',')
310
+ {
311
+ skip_blanks(++input, devnull());
312
+
313
+ uint formal = skip_identifier(input);
314
+ if (formal)
315
+ macro->formals.append( IndexedString::fromIndex(formal) );
316
+
317
+ skip_blanks (input, devnull());
318
+
319
+ if (input == '.') {
320
+ macro->variadics = true;
321
+
322
+ do {
323
+ ++input;
324
+
325
+ } while (input == '.');
326
+ }
327
+ }
328
+
329
+ RETURN_ON_FAIL(input == ')');
330
+ ++input;
331
+ }
332
+
333
+ skip_blanks (input, devnull());
334
+
335
+ while (!input.atEnd() && input != '\n')
336
+ {
337
+ if(input == '/' && (input.peekNextCharacter() == '/' || input.peekNextCharacter() == '*')) {
338
+ skip_comment_or_divop(input, devnull());
339
+ if(!input.atEnd() && input != '\n')
340
+ skip_blanks (input, devnull());
341
+ continue;
342
+ }
343
+ if (input == '\\')
344
+ {
345
+ int pos = input.offset();
346
+ skip_blanks (++input, devnull());
347
+
348
+ if (!input.atEnd() && input == '\n')
349
+ {
350
+ skip_blanks(++input, devnull());
351
+ macro->definition.append(IndexedString::fromIndex(indexFromCharacter(' ')));
352
+ continue;
353
+
354
+ } else {
355
+ // Whoops, rewind :)
356
+ input.seek(pos);
357
+ }
358
+ }
359
+
360
+ macro->definition.append(IndexedString::fromIndex(input.current()));
361
+ ++input;
362
+ }
363
+
364
+ m_environment->setMacro(macro);
365
+ }
366
+
367
+
368
+ void pp::skip (Stream& input, Stream& output, bool outputText)
369
+ {
370
+ pp_skip_string_literal skip_string_literal;
371
+ pp_skip_char_literal skip_char_literal;
372
+
373
+ while (!input.atEnd() && input != '\n')
374
+ {
375
+ if (input == '/')
376
+ {
377
+ skip_comment_or_divop (input, output, outputText);
378
+ }
379
+ else if (input == '"')
380
+ {
381
+ skip_string_literal (input, output);
382
+ }
383
+ else if (input == '\'')
384
+ {
385
+ skip_char_literal (input, output);
386
+ }
387
+ else if (input == '\\')
388
+ {
389
+ output << input;
390
+ skip_blanks (++input, output);
391
+
392
+ if (!input.atEnd() && input == '\n')
393
+ {
394
+ output << input;
395
+ ++input;
396
+ }
397
+ }
398
+ else
399
+ {
400
+ output << input;
401
+ ++input;
402
+ }
403
+ }
404
+ }
405
+
406
+ inline bool pp::test_if_level()
407
+ {
408
+ bool result = !_M_skipping[iflevel++];
409
+ _M_skipping[iflevel] = _M_skipping[iflevel - 1];
410
+ _M_true_test[iflevel] = false;
411
+ return result;
412
+ }
413
+
414
+ inline int pp::skipping() const
415
+ { return _M_skipping[iflevel]; }
416
+
417
+ Value pp::eval_primary(Stream& input)
418
+ {
419
+ int start = input.offset();
420
+ bool expect_paren = false;
421
+ int token = next_token_accept(input);
422
+ Value result;
423
+
424
+ switch (token) {
425
+ case TOKEN_NUMBER:
426
+ result.set_long(token_value);
427
+ break;
428
+
429
+ case TOKEN_UNUMBER:
430
+ result.set_ulong(token_uvalue);
431
+ break;
432
+
433
+ case TOKEN_DEFINED:
434
+ token = next_token_accept(input);
435
+
436
+ if (token == '(')
437
+ {
438
+ expect_paren = true;
439
+ token = next_token_accept(input);
440
+ }
441
+
442
+ if (token != TOKEN_IDENTIFIER)
443
+ {
444
+ Problem* problem = new Problem;
445
+ problem->file = currentFileNameString();
446
+ problem->position = input.originalInputPosition();
447
+ QChar tk(token);
448
+ problem->description = QString("Expected \"identifier\", found: %1").arg((tk < TOKENS_END && tk > TOKENS_START) ? QString(tk) : QString("character %1").arg(token));
449
+ problem->explanation = QString("<h5>Token text</h5><pre>%1</pre><h5>Input</h5><pre>%2</pre>").arg(token_text.str())
450
+ .arg(QString::fromUtf8(input.stringFrom(start)));
451
+ problemEncountered(problem);
452
+ break;
453
+ }
454
+
455
+ {
456
+ pp_macro* m = m_environment->retrieveMacro(token_text, true);
457
+ result.set_long( (m && !m->isUndef()) ? 1 : 0);
458
+ }
459
+
460
+ token = next_token(input); // skip '('
461
+
462
+ if (expect_paren) {
463
+ if (token != ')') {
464
+ Problem* problem = new Problem;
465
+ problem->file = currentFileNameString();
466
+ problem->position = input.originalInputPosition();
467
+ QChar tk(token);
468
+ problem->description = QString("Expected \")\", found %1").arg(tk.isLetterOrNumber() ? QString(tk) : QString("character %1").arg(token));
469
+ problem->explanation = QString("<h5>Token text</h5><pre>%1</pre><h5>Input</h5><pre>%2</pre>").arg(token_text.str())
470
+ .arg(QString::fromUtf8(input.stringFrom(start)));
471
+ problemEncountered(problem);
472
+ } else {
473
+ accept_token();
474
+ }
475
+ }
476
+ break;
477
+
478
+ case TOKEN_IDENTIFIER:
479
+ break;
480
+
481
+ case '-':
482
+ result.set_long(- eval_primary(input).l);
483
+ break;
484
+
485
+ case '+':
486
+ result.set_long(+ eval_primary(input).l);
487
+ break;
488
+
489
+ case '!':
490
+ result.set_long(eval_primary(input).is_zero());
491
+ break;
492
+
493
+ case '(':
494
+ result = eval_constant_expression(input);
495
+ token = next_token(input);
496
+
497
+ if (token != ')') {
498
+ Problem* problem = new Problem;
499
+ problem->file = currentFileNameString();
500
+ problem->position = input.originalInputPosition();
501
+ QChar tk(token);
502
+ problem->description = QString("Expected \")\", found %1").arg(tk.isLetterOrNumber() ? QString(tk) : QString("character %1").arg(token));
503
+ problem->explanation = QString("<h5>Token text</h5><pre>%1</pre><h5>Input</h5><pre>%2</pre>").arg(token_text.str())
504
+ .arg(QString::fromUtf8(input.stringFrom(start)));
505
+ problemEncountered(problem);
506
+ } else {
507
+ accept_token();
508
+ }
509
+
510
+ break;
511
+
512
+ default:
513
+ break;
514
+ }
515
+
516
+ return result;
517
+ }
518
+
519
+ Value pp::eval_multiplicative(Stream& input)
520
+ {
521
+ int start = input.offset();
522
+
523
+ Value result = eval_primary(input);
524
+
525
+ int token = next_token(input);
526
+
527
+ while (token == '*' || token == '/' || token == '%') {
528
+ accept_token();
529
+
530
+ Value value = eval_primary(input);
531
+
532
+ if (token == '*') {
533
+ result *= value;
534
+
535
+ } else if (token == '/') {
536
+ if (value.is_zero()) {
537
+ Problem* problem = new Problem;
538
+ problem->file = currentFileNameString();
539
+ problem->position = input.originalInputPosition();
540
+ problem->description = "Division by zero";
541
+ problem->explanation = QString("Input text: %1").arg(QString::fromUtf8(input.stringFrom(start)));
542
+ problemEncountered(problem);
543
+ result.set_long(0);
544
+
545
+ } else {
546
+ result /= value;
547
+ }
548
+
549
+ } else {
550
+ if (value.is_zero()) {
551
+ Problem* problem = new Problem;
552
+ problem->file = currentFileNameString();
553
+ problem->position = input.originalInputPosition();
554
+ problem->description = "Division by zero";
555
+ problem->description = QString("Input text: %1").arg(QString::fromUtf8(input.stringFrom(start)));
556
+ problemEncountered(problem);
557
+ result.set_long(0);
558
+
559
+ } else {
560
+ result %= value;
561
+ }
562
+ }
563
+
564
+ token = next_token(input);
565
+ }
566
+
567
+ return result;
568
+ }
569
+
570
+ Value pp::eval_additive(Stream& input)
571
+ {
572
+ Value result = eval_multiplicative(input);
573
+
574
+ int token = next_token(input);
575
+
576
+ while (token == '+' || token == '-') {
577
+ accept_token();
578
+
579
+ Value value = eval_multiplicative(input);
580
+
581
+ if (token == '+')
582
+ result += value;
583
+ else
584
+ result -= value;
585
+
586
+ token = next_token(input);
587
+ }
588
+
589
+ return result;
590
+ }
591
+
592
+
593
+ Value pp::eval_shift(Stream& input)
594
+ {
595
+ Value result = eval_additive(input);
596
+
597
+ int token;
598
+ token = next_token(input);
599
+
600
+ while (token == TOKEN_LT_LT || token == TOKEN_GT_GT) {
601
+ accept_token();
602
+
603
+ Value value = eval_additive(input);
604
+
605
+ if (token == TOKEN_LT_LT)
606
+ result <<= value;
607
+ else
608
+ result >>= value;
609
+
610
+ token = next_token(input);
611
+ }
612
+
613
+ return result;
614
+ }
615
+
616
+
617
+ Value pp::eval_relational(Stream& input)
618
+ {
619
+ Value result = eval_shift(input);
620
+
621
+ int token = next_token(input);
622
+
623
+ while (token == '<'
624
+ || token == '>'
625
+ || token == TOKEN_LT_EQ
626
+ || token == TOKEN_GT_EQ)
627
+ {
628
+ accept_token();
629
+ Value value = eval_shift(input);
630
+
631
+ switch (token)
632
+ {
633
+ default:
634
+ Q_ASSERT(0);
635
+ break;
636
+
637
+ case '<':
638
+ result = result < value;
639
+ break;
640
+
641
+ case '>':
642
+ result = result > value;
643
+ break;
644
+
645
+ case TOKEN_LT_EQ:
646
+ result = result <= value;
647
+ break;
648
+
649
+ case TOKEN_GT_EQ:
650
+ result = result >= value;
651
+ break;
652
+ }
653
+
654
+ token = next_token(input);
655
+ }
656
+
657
+ return result;
658
+ }
659
+
660
+
661
+ Value pp::eval_equality(Stream& input)
662
+ {
663
+ Value result = eval_relational(input);
664
+
665
+ int token = next_token(input);
666
+
667
+ while (token == TOKEN_EQ_EQ || token == TOKEN_NOT_EQ) {
668
+ accept_token();
669
+ Value value = eval_relational(input);
670
+
671
+ if (token == TOKEN_EQ_EQ)
672
+ result = result == value;
673
+ else
674
+ result = result != value;
675
+
676
+ token = next_token(input);
677
+ }
678
+
679
+ return result;
680
+ }
681
+
682
+
683
+ Value pp::eval_and(Stream& input)
684
+ {
685
+ Value result = eval_equality(input);
686
+
687
+ int token = next_token(input);
688
+
689
+ while (token == '&') {
690
+ accept_token();
691
+ Value value = eval_equality(input);
692
+ result &= value;
693
+ token = next_token(input);
694
+ }
695
+
696
+ return result;
697
+ }
698
+
699
+
700
+ Value pp::eval_xor(Stream& input)
701
+ {
702
+ Value result = eval_and(input);
703
+
704
+ int token;
705
+ token = next_token(input);
706
+
707
+ while (token == '^') {
708
+ accept_token();
709
+ Value value = eval_and(input);
710
+ result ^= value;
711
+ token = next_token(input);
712
+ }
713
+
714
+ return result;
715
+ }
716
+
717
+
718
+ Value pp::eval_or(Stream& input)
719
+ {
720
+ Value result = eval_xor(input);
721
+
722
+ int token = next_token(input);
723
+
724
+ while (token == '|') {
725
+ accept_token();
726
+ Value value = eval_xor(input);
727
+ result |= value;
728
+ token = next_token(input);
729
+ }
730
+
731
+ return result;
732
+ }
733
+
734
+
735
+ Value pp::eval_logical_and(Stream& input)
736
+ {
737
+ Value result = eval_or(input);
738
+
739
+ int token = next_token(input);
740
+
741
+ while (token == TOKEN_AND_AND) {
742
+ accept_token();
743
+ Value value = eval_or(input);
744
+ result = result && value;
745
+ token = next_token(input);
746
+ }
747
+
748
+ return result;
749
+ }
750
+
751
+
752
+ Value pp::eval_logical_or(Stream& input)
753
+ {
754
+ Value result = eval_logical_and(input);
755
+
756
+ int token = next_token(input);
757
+
758
+ while (token == TOKEN_OR_OR) {
759
+ accept_token();
760
+ Value value = eval_logical_and(input);
761
+ result = result || value;
762
+ token = next_token(input);
763
+ }
764
+
765
+ return result;
766
+ }
767
+
768
+
769
+ Value pp::eval_constant_expression(Stream& input)
770
+ {
771
+ Value result = eval_logical_or(input);
772
+
773
+ int token = next_token(input);
774
+
775
+ if (token == '?')
776
+ {
777
+ accept_token();
778
+ Value left_value = eval_constant_expression(input);
779
+ skip_blanks(input, devnull());
780
+
781
+ token = next_token_accept(input);
782
+ if (token == ':')
783
+ {
784
+ Value right_value = eval_constant_expression(input);
785
+
786
+ result = !result.is_zero() ? left_value : right_value;
787
+ }
788
+ else
789
+ {
790
+ Problem* problem = new Problem;
791
+ problem->file = currentFileNameString();
792
+ problem->position = input.originalInputPosition();
793
+ problem->description = QString("expected ``:'' = %1").arg(int(token));
794
+ problemEncountered(problem);
795
+ result = left_value;
796
+ }
797
+ }
798
+
799
+ return result;
800
+ }
801
+
802
+
803
+ Value pp::eval_expression(Stream& input)
804
+ {
805
+ skip_blanks(input, devnull());
806
+ return eval_constant_expression(input);
807
+ }
808
+
809
+
810
+ void pp::handle_if (Stream& input)
811
+ {
812
+ if (test_if_level())
813
+ {
814
+ pp_macro_expander expand_condition(this);
815
+ skip_blanks(input, devnull());
816
+
817
+ Anchor inputPosition = input.inputPosition();
818
+ SimpleCursor originalInputPosition = input.originalInputPosition();
819
+ PreprocessedContents condition;
820
+ {
821
+ Stream cs(&condition);
822
+ expand_condition(input, cs);
823
+ }
824
+
825
+ environment()->enterBlock(input.inputPosition().line, condition);
826
+
827
+ Stream cs(&condition, inputPosition);
828
+ cs.setOriginalInputPosition(originalInputPosition);
829
+ Value result = eval_expression(cs);
830
+
831
+ _M_true_test[iflevel] = !result.is_zero();
832
+ _M_skipping[iflevel] = result.is_zero();
833
+
834
+ } else {
835
+ // Capture info for precompiled macros
836
+ pp_macro_expander expand_condition(this);
837
+ skip_blanks(input, devnull());
838
+ PreprocessedContents condition;
839
+ {
840
+ Stream cs(&condition);
841
+ expand_condition(input, cs);
842
+ }
843
+
844
+ environment()->enterBlock(input.inputPosition().line, condition);
845
+
846
+ _M_true_test[iflevel] = true;
847
+ _M_skipping[iflevel] = true;
848
+ }
849
+ }
850
+
851
+
852
+ void pp::handle_else(int sourceLine)
853
+ {
854
+ if(iflevel == 1)
855
+ guardCandidate = IndexedString();
856
+
857
+ if (iflevel == 0 && !skipping ())
858
+ {
859
+ Problem* problem = new Problem;
860
+ problem->file = currentFileNameString();
861
+ problem->position = SimpleCursor(sourceLine, 0);
862
+ problem->description = "#else without #if";
863
+ problemEncountered(problem);
864
+ }
865
+ else if (iflevel > 0 && _M_skipping[iflevel - 1])
866
+ {
867
+ _M_skipping[iflevel] = true;
868
+ environment()->elseBlock(sourceLine);
869
+ }
870
+ else
871
+ {
872
+ _M_skipping[iflevel] = _M_true_test[iflevel];
873
+ environment()->elseBlock(sourceLine);
874
+ }
875
+ }
876
+
877
+
878
+ void pp::handle_elif(Stream& input)
879
+ {
880
+ if(iflevel == 1)
881
+ guardCandidate = IndexedString();
882
+
883
+ RETURN_ON_FAIL(iflevel > 0);
884
+
885
+ if (iflevel == 0 && !skipping())
886
+ {
887
+ Problem* problem = new Problem;
888
+ problem->file = currentFileNameString();
889
+ problem->position = input.originalInputPosition();
890
+ problem->description = "#else without #if";
891
+ problemEncountered(problem);
892
+ }
893
+ else
894
+ {
895
+ pp_macro_expander expand_condition(this);
896
+ skip_blanks(input, devnull());
897
+
898
+ Anchor inputPosition = input.inputPosition();
899
+ SimpleCursor originalInputPosition = input.originalInputPosition();
900
+ PreprocessedContents condition;
901
+ {
902
+ Stream cs(&condition);
903
+ cs.setOriginalInputPosition(originalInputPosition);
904
+ expand_condition(input, cs);
905
+ }
906
+
907
+ environment()->elseBlock(input.inputPosition().line, condition);
908
+
909
+ if (!_M_true_test[iflevel] && !_M_skipping[iflevel - 1])
910
+ {
911
+ Stream cs(&condition, inputPosition);
912
+ Value result = eval_expression(cs);
913
+ _M_true_test[iflevel] = !result.is_zero();
914
+ _M_skipping[iflevel] = result.is_zero();
915
+ }
916
+ else
917
+ {
918
+ _M_skipping[iflevel] = true;
919
+ }
920
+ }
921
+ }
922
+
923
+
924
+ void pp::handle_endif(Stream& input, Stream& output)
925
+ {
926
+ if (iflevel == 0 && !skipping())
927
+ {
928
+ Problem* problem = new Problem;
929
+ problem->file = currentFileNameString();
930
+ problem->position = input.originalInputPosition();
931
+ problem->description = QString("#endif without #if at output line %1")
932
+ .arg(m_environment->locationTable()->anchorForOffset(output.offset()).anchor.line);
933
+ problemEncountered(problem);
934
+ }
935
+ else
936
+ {
937
+ environment()->leaveBlock();
938
+
939
+ _M_skipping[iflevel] = 0;
940
+ _M_true_test[iflevel] = 0;
941
+
942
+ --iflevel;
943
+ if(iflevel == 0) {
944
+ if(!guardCandidate.isEmpty()) {
945
+ checkGuardEnd = true;
946
+ }
947
+ }
948
+ }
949
+ }
950
+
951
+ uint pp::branchingHash() const
952
+ {
953
+ uint hash = 0;
954
+ for( int a = 0; a <= iflevel; a++ ) {
955
+ hash *= 19;
956
+ if( _M_skipping[a] )
957
+ hash += 3;
958
+ if( _M_true_test[a] )
959
+ hash += 7;
960
+ }
961
+ return hash;
962
+ }
963
+
964
+ void pp::handle_ifdef (bool check_undefined, Stream& input)
965
+ {
966
+ IndexedString macro_name = IndexedString::fromIndex(skip_identifier(input));
967
+ ///@todo eventually fix the block description
968
+ if(check_undefined && expand.in_header_section() && guardCandidate.isEmpty() && !hadGuardCandidate && iflevel == 0) {
969
+ //It's the first #ifndef and the header-section hasn't ended yet, assume it to be the header-guard
970
+ guardCandidate = macro_name;
971
+ }
972
+
973
+ hadGuardCandidate = true;
974
+
975
+ environment()->enterBlock(input.inputPosition().line);//, QString("%1defined(%2)").arg(check_undefined ? "!" : "").arg(macro_name).toUtf8());
976
+
977
+ if (test_if_level())
978
+ {
979
+ pp_macro* macro = m_environment->retrieveMacro(macro_name, true);
980
+ bool value = false;
981
+ if( macro && macro->defined )
982
+ value = true;
983
+
984
+ if (check_undefined)
985
+ value = !value;
986
+
987
+ _M_true_test[iflevel] = value;
988
+ _M_skipping[iflevel] = !value;
989
+ }
990
+ }
991
+
992
+
993
+ void pp::handle_undef(Stream& input)
994
+ {
995
+ skip_blanks (input, devnull());
996
+
997
+ IndexedString macro_name = IndexedString::fromIndex(skip_identifier(input));
998
+ RETURN_ON_FAIL(!macro_name.isEmpty());
999
+
1000
+ pp_macro* macro = new pp_macro;
1001
+ macro->file = currentFileName();
1002
+ macro->name = macro_name;
1003
+ macro->sourceLine = input.originalInputPosition().line;
1004
+
1005
+ macro->defined = false;
1006
+
1007
+ m_environment->setMacro(macro);
1008
+ }
1009
+
1010
+ IndexedString definedText("defined");
1011
+
1012
+ int pp::next_token (Stream& input)
1013
+ {
1014
+ if (haveNextToken)
1015
+ return nextToken;
1016
+
1017
+ skip_blanks(input, devnull());
1018
+
1019
+ if (input.atEnd())
1020
+ {
1021
+ return 0;
1022
+ }
1023
+
1024
+ char ch = 0;
1025
+ if(isCharacter(input.current()))
1026
+ ch = characterFromIndex(input.current());
1027
+ char ch2 = input.peekNextCharacter();
1028
+
1029
+ nextToken = 0;
1030
+
1031
+ switch (ch) {
1032
+ case '/':
1033
+ if (ch2 == '/' || ch2 == '*')
1034
+ {
1035
+ skip_comment_or_divop(input, devnull());
1036
+ return next_token(input);
1037
+ }
1038
+ ++input;
1039
+ nextToken = '/';
1040
+ break;
1041
+
1042
+ case '<':
1043
+ ++input;
1044
+ if (ch2 == '<')
1045
+ {
1046
+ ++input;
1047
+ nextToken = TOKEN_LT_LT;
1048
+ }
1049
+ else if (ch2 == '=')
1050
+ {
1051
+ ++input;
1052
+ nextToken = TOKEN_LT_EQ;
1053
+ }
1054
+ else
1055
+ nextToken = '<';
1056
+
1057
+ break;
1058
+
1059
+ case '>':
1060
+ ++input;
1061
+ if (ch2 == '>')
1062
+ {
1063
+ ++input;
1064
+ nextToken = TOKEN_GT_GT;
1065
+ }
1066
+ else if (ch2 == '=')
1067
+ {
1068
+ ++input;
1069
+ nextToken = TOKEN_GT_EQ;
1070
+ }
1071
+ else
1072
+ nextToken = '>';
1073
+
1074
+ break;
1075
+
1076
+ case '!':
1077
+ ++input;
1078
+ if (ch2 == '=')
1079
+ {
1080
+ ++input;
1081
+ nextToken = TOKEN_NOT_EQ;
1082
+ }
1083
+ else
1084
+ nextToken = '!';
1085
+
1086
+ break;
1087
+
1088
+ case '=':
1089
+ ++input;
1090
+ if (ch2 == '=')
1091
+ {
1092
+ ++input;
1093
+ nextToken = TOKEN_EQ_EQ;
1094
+ }
1095
+ else
1096
+ nextToken = '=';
1097
+
1098
+ break;
1099
+
1100
+ case '|':
1101
+ ++input;
1102
+ if (ch2 == '|')
1103
+ {
1104
+ ++input;
1105
+ nextToken = TOKEN_OR_OR;
1106
+ }
1107
+ else
1108
+ nextToken = '|';
1109
+
1110
+ break;
1111
+
1112
+ case '&':
1113
+ ++input;
1114
+ if (ch2 == '&')
1115
+ {
1116
+ ++input;
1117
+ nextToken = TOKEN_AND_AND;
1118
+ }
1119
+ else
1120
+ nextToken = '&';
1121
+
1122
+ break;
1123
+
1124
+ default:
1125
+ if (isLetter(ch) || ch == '_' || !isCharacter(input.current()))
1126
+ {
1127
+ token_text = IndexedString::fromIndex( skip_identifier (input) );
1128
+ if (token_text == definedText)
1129
+ nextToken = TOKEN_DEFINED;
1130
+ else
1131
+ nextToken = TOKEN_IDENTIFIER;
1132
+ }
1133
+ else if (isNumber(ch))
1134
+ {
1135
+ PreprocessedContents byteNumber;
1136
+ {
1137
+ Stream ns(&byteNumber);
1138
+ skip_number(input, ns);
1139
+ }
1140
+
1141
+ QString number(QString::fromUtf8(stringFromContents(byteNumber)));
1142
+ int base = 10;
1143
+ if (number.startsWith("0x")) {
1144
+ base = 16;
1145
+ } else if (number.startsWith('0')) {
1146
+ base = 8;
1147
+ }
1148
+
1149
+ if (number.endsWith('u', Qt::CaseInsensitive)) {
1150
+ token_uvalue = number.toULong(0, base);
1151
+ nextToken = TOKEN_UNUMBER;
1152
+
1153
+ } else {
1154
+ token_value = number.toLong(0, base);
1155
+ nextToken = TOKEN_NUMBER;
1156
+ }
1157
+ }
1158
+ else
1159
+ {
1160
+ if(isCharacter(input.current()))
1161
+ nextToken = characterFromIndex(input.current());
1162
+ else
1163
+ nextToken = TOKEN_IDENTIFIER;
1164
+ ++input;
1165
+ }
1166
+ }
1167
+
1168
+ //kDebug(9007) << "Next token '" << ch << ch2 << "'" << nextToken << "txt" << token_text << "val" << token_value;
1169
+
1170
+ haveNextToken = true;
1171
+ return nextToken;
1172
+ }
1173
+
1174
+ int pp::next_token_accept (Stream& input)
1175
+ {
1176
+ int result = next_token(input);
1177
+ accept_token();
1178
+ return result;
1179
+ }
1180
+
1181
+ void pp::accept_token()
1182
+ {
1183
+ haveNextToken = false;
1184
+ nextToken = 0;
1185
+ }
1186
+
1187
+ bool pp::hideNextMacro( ) const
1188
+ {
1189
+ return hideNext;
1190
+ }
1191
+
1192
+ void pp::setHideNextMacro( bool h )
1193
+ {
1194
+ hideNext = h;
1195
+ }
1196
+
1197
+ Environment* pp::environment( ) const
1198
+ {
1199
+ return m_environment;
1200
+ }
1201
+
1202
+ void pp::setEnvironment(Environment* env)
1203
+ {
1204
+ delete m_environment;
1205
+ m_environment = env;
1206
+ }
1207
+
1208
+ const QList< Problem* > & rpp::pp::problems() const
1209
+ {
1210
+ return m_problems;
1211
+ }
1212
+
1213
+ void rpp::pp::problemEncountered(Problem *problem)
1214
+ {
1215
+ m_problems.append(problem);
1216
+ }