qtbindings 4.8.6.3 → 4.8.6.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (659) hide show
  1. checksums.yaml +5 -5
  2. data/COPYING.LIB.txt +510 -510
  3. data/COPYING.txt +286 -286
  4. data/KNOWN_ISSUES.txt +17 -17
  5. data/bin/rbqtapi +0 -0
  6. data/bin/rbrcc +0 -0
  7. data/bin/rbuic4 +0 -0
  8. data/bin/smokeapi +0 -0
  9. data/bin/smokedeptool +0 -0
  10. data/examples/designer/calculatorbuilder/calculatorbuilder.qrc +5 -5
  11. data/examples/designer/calculatorbuilder/calculatorform.rb +60 -60
  12. data/examples/designer/calculatorbuilder/calculatorform.ui +299 -299
  13. data/examples/designer/calculatorbuilder/main.rb +34 -34
  14. data/examples/designer/calculatorbuilder/makefile +2 -2
  15. data/examples/designer/calculatorform/calculatorform.rb +46 -46
  16. data/examples/designer/calculatorform/calculatorform.ui +277 -277
  17. data/examples/designer/calculatorform/main.rb +32 -32
  18. data/examples/designer/calculatorform/makefile +3 -3
  19. data/examples/desktop/screenshot/main.rb +32 -32
  20. data/examples/desktop/screenshot/screenshot.rb +157 -157
  21. data/examples/desktop/systray/images/bad.svg +64 -64
  22. data/examples/desktop/systray/images/heart.svg +55 -55
  23. data/examples/desktop/systray/images/trash.svg +58 -58
  24. data/examples/desktop/systray/main.rb +41 -41
  25. data/examples/desktop/systray/makefile +2 -2
  26. data/examples/desktop/systray/systray.qrc +7 -7
  27. data/examples/desktop/systray/window.rb +219 -219
  28. data/examples/dialogs/complexwizard/complexwizard.rb +140 -140
  29. data/examples/dialogs/complexwizard/licensewizard.rb +294 -294
  30. data/examples/dialogs/complexwizard/main.rb +31 -31
  31. data/examples/dialogs/configdialog/configdialog.rb +109 -109
  32. data/examples/dialogs/configdialog/main.rb +31 -31
  33. data/examples/dialogs/configdialog/pages.rb +140 -140
  34. data/examples/dialogs/extension/finddialog.rb +89 -89
  35. data/examples/dialogs/extension/main.rb +31 -31
  36. data/examples/dialogs/findfiles/main.rb +32 -32
  37. data/examples/dialogs/findfiles/window.rb +177 -177
  38. data/examples/dialogs/simplewizard/classwizard.rb +374 -374
  39. data/examples/dialogs/simplewizard/main.rb +31 -31
  40. data/examples/dialogs/simplewizard/simplewizard.rb +110 -110
  41. data/examples/dialogs/standarddialogs/dialog.rb +340 -340
  42. data/examples/dialogs/standarddialogs/main.rb +31 -31
  43. data/examples/dialogs/tabdialog/main.rb +38 -38
  44. data/examples/dialogs/tabdialog/tabdialog.rb +178 -178
  45. data/examples/draganddrop/draggableicons/dragwidget.rb +125 -125
  46. data/examples/draganddrop/draggableicons/main.rb +41 -41
  47. data/examples/draganddrop/draggabletext/draglabel.rb +51 -51
  48. data/examples/draganddrop/draggabletext/dragwidget.rb +94 -94
  49. data/examples/draganddrop/draggabletext/main.rb +33 -33
  50. data/examples/draganddrop/draggabletext/words.txt +41 -41
  51. data/examples/draganddrop/dropsite/dropsitewidget.rb +99 -99
  52. data/examples/draganddrop/dropsite/dropsitewindow.rb +114 -114
  53. data/examples/draganddrop/dropsite/main.rb +33 -33
  54. data/examples/draganddrop/fridgemagnets/draglabel.rb +78 -78
  55. data/examples/draganddrop/fridgemagnets/dragwidget.rb +130 -130
  56. data/examples/draganddrop/fridgemagnets/main.rb +33 -33
  57. data/examples/draganddrop/fridgemagnets/words.txt +48 -48
  58. data/examples/draganddrop/puzzle/main.rb +33 -33
  59. data/examples/draganddrop/puzzle/mainwindow.rb +136 -136
  60. data/examples/draganddrop/puzzle/pieceslist.rb +95 -95
  61. data/examples/draganddrop/puzzle/puzzlewidget.rb +190 -190
  62. data/examples/graphicsview/collidingmice/main.rb +53 -53
  63. data/examples/graphicsview/collidingmice/makefile +2 -2
  64. data/examples/graphicsview/collidingmice/mice.qrc +5 -5
  65. data/examples/graphicsview/collidingmice/mouse.rb +176 -176
  66. data/examples/graphicsview/dragdroprobot/coloritem.rb +86 -86
  67. data/examples/graphicsview/dragdroprobot/main.rb +57 -57
  68. data/examples/graphicsview/dragdroprobot/makefile +2 -2
  69. data/examples/graphicsview/dragdroprobot/robot.qrc +5 -5
  70. data/examples/graphicsview/dragdroprobot/robot.rb +246 -246
  71. data/examples/itemviews/chart/chart.qrc +5 -5
  72. data/examples/itemviews/chart/main.rb +33 -33
  73. data/examples/itemviews/chart/mainwindow.rb +151 -151
  74. data/examples/itemviews/chart/makefile +2 -2
  75. data/examples/itemviews/chart/mydata.cht +8 -8
  76. data/examples/itemviews/chart/pieview.rb +516 -516
  77. data/examples/itemviews/chart/qtdata.cht +14 -14
  78. data/examples/itemviews/dirview/main.rb +39 -39
  79. data/examples/itemviews/pixelator/imagemodel.rb +51 -51
  80. data/examples/itemviews/pixelator/images.qrc +5 -5
  81. data/examples/itemviews/pixelator/main.rb +34 -34
  82. data/examples/itemviews/pixelator/mainwindow.rb +218 -218
  83. data/examples/itemviews/pixelator/makefile +3 -3
  84. data/examples/itemviews/pixelator/pixeldelegate.rb +67 -67
  85. data/examples/itemviews/puzzle/main.rb +36 -36
  86. data/examples/itemviews/puzzle/mainwindow.rb +143 -143
  87. data/examples/itemviews/puzzle/piecesmodel.rb +174 -174
  88. data/examples/itemviews/puzzle/puzzlewidget.rb +192 -192
  89. data/examples/itemviews/simpledommodel/domitem.rb +62 -62
  90. data/examples/itemviews/simpledommodel/dommodel.rb +139 -139
  91. data/examples/itemviews/simpledommodel/main.rb +33 -33
  92. data/examples/itemviews/simpledommodel/mainwindow.rb +66 -66
  93. data/examples/itemviews/simpletreemodel/default.txt +40 -40
  94. data/examples/itemviews/simpletreemodel/main.rb +41 -41
  95. data/examples/itemviews/simpletreemodel/makefile +2 -2
  96. data/examples/itemviews/simpletreemodel/simpletreemodel.qrc +5 -5
  97. data/examples/itemviews/simpletreemodel/treeitem.rb +67 -67
  98. data/examples/itemviews/simpletreemodel/treemodel.rb +164 -164
  99. data/examples/itemviews/sortingmodel/default.txt +40 -40
  100. data/examples/itemviews/sortingmodel/main.rb +53 -53
  101. data/examples/itemviews/sortingmodel/treeitem.rb +73 -73
  102. data/examples/itemviews/sortingmodel/treemodel.rb +166 -166
  103. data/examples/itemviews/spinboxdelegate/main.rb +47 -47
  104. data/examples/itemviews/spinboxdelegate/spinboxdelegate.rb +62 -62
  105. data/examples/killerfilter/killerfilter.rb +55 -55
  106. data/examples/layouts/basiclayouts/dialog.rb +110 -110
  107. data/examples/layouts/basiclayouts/main.rb +31 -31
  108. data/examples/layouts/borderlayout/borderlayout.rb +190 -190
  109. data/examples/layouts/borderlayout/main.rb +32 -32
  110. data/examples/layouts/borderlayout/window.rb +52 -52
  111. data/examples/layouts/flowlayouts/flowlayout.rb +108 -108
  112. data/examples/layouts/flowlayouts/main.rb +32 -32
  113. data/examples/layouts/flowlayouts/window.rb +43 -43
  114. data/examples/mainwindows/application/main.rb +32 -32
  115. data/examples/mainwindows/application/mainwindow.rb +285 -285
  116. data/examples/mainwindows/dockwidgets/main.rb +32 -32
  117. data/examples/mainwindows/dockwidgets/mainwindow.rb +302 -302
  118. data/examples/mainwindows/mdi/main.rb +32 -32
  119. data/examples/mainwindows/mdi/mainwindow.rb +363 -363
  120. data/examples/mainwindows/mdi/mdichild.rb +152 -152
  121. data/examples/mainwindows/menus/main.rb +32 -32
  122. data/examples/mainwindows/menus/mainwindow.rb +327 -327
  123. data/examples/mainwindows/recentfiles/main.rb +32 -32
  124. data/examples/mainwindows/recentfiles/mainwindow.rb +258 -258
  125. data/examples/mainwindows/sdi/main.rb +32 -32
  126. data/examples/mainwindows/sdi/mainwindow.rb +335 -335
  127. data/examples/network/broadcastreceiver/main.rb +32 -32
  128. data/examples/network/broadcastreceiver/receiver.rb +64 -64
  129. data/examples/network/broadcastsender/main.rb +32 -32
  130. data/examples/network/broadcastsender/sender.rb +72 -72
  131. data/examples/network/fortuneclient/client.rb +149 -149
  132. data/examples/network/fortuneclient/main.rb +32 -32
  133. data/examples/network/fortuneserver/main.rb +32 -32
  134. data/examples/network/fortuneserver/server.rb +88 -88
  135. data/examples/network/ftp/ftpwindow.rb +259 -259
  136. data/examples/network/ftp/main.rb +32 -32
  137. data/examples/network/http/httpwindow.rb +187 -187
  138. data/examples/network/http/main.rb +32 -32
  139. data/examples/network/loopback/dialog.rb +163 -163
  140. data/examples/network/loopback/main.rb +32 -32
  141. data/examples/opengl/grabber/glwidget.rb +265 -265
  142. data/examples/opengl/grabber/main.rb +32 -32
  143. data/examples/opengl/grabber/mainwindow.rb +189 -189
  144. data/examples/opengl/hellogl/glwidget.rb +226 -226
  145. data/examples/opengl/hellogl/main.rb +32 -32
  146. data/examples/opengl/hellogl/window.rb +66 -66
  147. data/examples/opengl/textures/glwidget.rb +151 -151
  148. data/examples/opengl/textures/main.rb +32 -32
  149. data/examples/opengl/textures/window.rb +77 -77
  150. data/examples/painting/basicdrawing/main.rb +32 -32
  151. data/examples/painting/basicdrawing/renderarea.rb +166 -166
  152. data/examples/painting/basicdrawing/window.rb +215 -215
  153. data/examples/painting/concentriccircles/circlewidget.rb +88 -88
  154. data/examples/painting/concentriccircles/main.rb +32 -32
  155. data/examples/painting/concentriccircles/window.rb +72 -72
  156. data/examples/painting/fontsampler/main.rb +32 -32
  157. data/examples/painting/fontsampler/mainwindow.rb +369 -369
  158. data/examples/painting/fontsampler/mainwindowbase.ui +136 -136
  159. data/examples/painting/fontsampler/makefile +8 -8
  160. data/examples/painting/fontsampler/previewdialog.rb +257 -257
  161. data/examples/painting/fontsampler/previewdialogbase.ui +224 -224
  162. data/examples/painting/fontsampler/previewlabel.rb +43 -43
  163. data/examples/painting/imagecomposition/imagecomposer.rb +152 -152
  164. data/examples/painting/imagecomposition/imagecomposition.qrc +6 -6
  165. data/examples/painting/imagecomposition/main.rb +33 -33
  166. data/examples/painting/imagecomposition/makefile +2 -2
  167. data/examples/painting/painterpaths/main.rb +32 -32
  168. data/examples/painting/painterpaths/renderarea.rb +97 -97
  169. data/examples/painting/painterpaths/window.rb +247 -247
  170. data/examples/painting/svgviewer/files/bubbles.svg +212 -212
  171. data/examples/painting/svgviewer/files/cubic.svg +77 -77
  172. data/examples/painting/svgviewer/files/spheres.svg +79 -79
  173. data/examples/painting/svgviewer/main.rb +38 -38
  174. data/examples/painting/svgviewer/mainwindow.rb +99 -99
  175. data/examples/painting/svgviewer/makefile +2 -2
  176. data/examples/painting/svgviewer/svgview.rb +156 -156
  177. data/examples/painting/svgviewer/svgviewer.qrc +6 -6
  178. data/examples/painting/svgviewer/svgwindow.rb +87 -87
  179. data/examples/painting/transformations/main.rb +32 -32
  180. data/examples/painting/transformations/renderarea.rb +127 -127
  181. data/examples/painting/transformations/window.rb +153 -153
  182. data/examples/passivepopup/passivepopup.rb +38 -38
  183. data/examples/qdbus/chat/chat.rb +146 -146
  184. data/examples/qdbus/chat/chat_adaptor.rb +12 -12
  185. data/examples/qdbus/chat/chat_interface.rb +13 -13
  186. data/examples/qdbus/chat/chatmainwindow.ui +184 -184
  187. data/examples/qdbus/chat/chatsetnickname.ui +145 -145
  188. data/examples/qdbus/chat/makefile +8 -8
  189. data/examples/qdbus/complexpingpong/complexping.rb +92 -92
  190. data/examples/qdbus/complexpingpong/complexpong.rb +83 -83
  191. data/examples/qdbus/complexpingpong/ping-common.rb +1 -1
  192. data/examples/qdbus/listnames/listnames.rb +69 -69
  193. data/examples/qdbus/pingpong/ping-common.rb +1 -1
  194. data/examples/qdbus/pingpong/ping.rb +52 -52
  195. data/examples/qdbus/pingpong/pong.rb +55 -55
  196. data/examples/qdbus/remotecontrolledcar/car/car.rb +151 -151
  197. data/examples/qdbus/remotecontrolledcar/car/main.rb +50 -50
  198. data/examples/qdbus/remotecontrolledcar/controller/controller.rb +66 -66
  199. data/examples/qdbus/remotecontrolledcar/controller/controller.ui +61 -61
  200. data/examples/qdbus/remotecontrolledcar/controller/main.rb +32 -32
  201. data/examples/qdbus/remotecontrolledcar/controller/makefile +2 -2
  202. data/examples/qtscribble/scribble.rb +270 -270
  203. data/examples/richtext/calendar/main.rb +33 -33
  204. data/examples/richtext/calendar/mainwindow.rb +173 -173
  205. data/examples/richtext/orderform/detailsdialog.rb +130 -130
  206. data/examples/richtext/orderform/main.rb +34 -34
  207. data/examples/richtext/orderform/mainwindow.rb +194 -194
  208. data/examples/richtext/syntaxhighlighter/examples/example +79 -79
  209. data/examples/richtext/syntaxhighlighter/highlighter.rb +90 -90
  210. data/examples/richtext/syntaxhighlighter/main.rb +34 -34
  211. data/examples/richtext/syntaxhighlighter/mainwindow.rb +105 -105
  212. data/examples/ruboids/LICENSE.txt +58 -58
  213. data/examples/ruboids/Manifest +26 -26
  214. data/examples/ruboids/README +53 -53
  215. data/examples/ruboids/TODO +29 -29
  216. data/examples/ruboids/boids.properties +33 -33
  217. data/examples/ruboids/generateManifest.rb +42 -42
  218. data/examples/ruboids/release.rb +152 -152
  219. data/examples/ruboids/ruboids/Boid.rb +141 -141
  220. data/examples/ruboids/ruboids/BoidView.rb +159 -159
  221. data/examples/ruboids/ruboids/Camera.rb +24 -24
  222. data/examples/ruboids/ruboids/CameraDialog.rb +218 -218
  223. data/examples/ruboids/ruboids/Canvas.rb +143 -143
  224. data/examples/ruboids/ruboids/Cloud.rb +61 -61
  225. data/examples/ruboids/ruboids/CloudView.rb +54 -54
  226. data/examples/ruboids/ruboids/Flock.rb +47 -47
  227. data/examples/ruboids/ruboids/Graphics.rb +278 -278
  228. data/examples/ruboids/ruboids/Params.rb +87 -87
  229. data/examples/ruboids/ruboids/Point.rb +153 -153
  230. data/examples/ruboids/ruboids/Thing.rb +34 -34
  231. data/examples/ruboids/ruboids/Triangle.rb +21 -21
  232. data/examples/ruboids/ruboids/View.rb +88 -88
  233. data/examples/ruboids/ruboids/World.rb +82 -82
  234. data/examples/ruboids/ruboids/WorldWindow.rb +52 -52
  235. data/examples/ruboids/ruboids/info.rb +12 -12
  236. data/examples/ruboids/ruboids/ruboids.rb +29 -29
  237. data/examples/threading/main_thread.rb +19 -19
  238. data/examples/tutorial/t1/t1.rb +10 -10
  239. data/examples/tutorial/t10/cannon.rb +72 -72
  240. data/examples/tutorial/t10/lcdrange.rb +45 -45
  241. data/examples/tutorial/t10/t10.rb +55 -55
  242. data/examples/tutorial/t11/cannon.rb +123 -124
  243. data/examples/tutorial/t11/lcdrange.rb +45 -45
  244. data/examples/tutorial/t11/t11.rb +65 -65
  245. data/examples/tutorial/t12/cannon.rb +157 -158
  246. data/examples/tutorial/t12/lcdrange.rb +58 -59
  247. data/examples/tutorial/t12/t12.rb +65 -66
  248. data/examples/tutorial/t13/cannon.rb +206 -208
  249. data/examples/tutorial/t13/gamebrd.rb +112 -113
  250. data/examples/tutorial/t13/lcdrange.rb +59 -60
  251. data/examples/tutorial/t13/t13.rb +11 -11
  252. data/examples/tutorial/t14/cannon.rb +262 -263
  253. data/examples/tutorial/t14/gamebrd.rb +122 -123
  254. data/examples/tutorial/t14/lcdrange.rb +61 -63
  255. data/examples/tutorial/t14/t14.rb +11 -11
  256. data/examples/tutorial/t2/t2.rb +16 -16
  257. data/examples/tutorial/t3/t3.rb +17 -18
  258. data/examples/tutorial/t4/t4.rb +23 -25
  259. data/examples/tutorial/t5/t5.rb +35 -37
  260. data/examples/tutorial/t6/t6.rb +48 -52
  261. data/examples/tutorial/t7/lcdrange.rb +32 -32
  262. data/examples/tutorial/t7/t7.rb +40 -42
  263. data/examples/tutorial/t8/cannon.rb +37 -38
  264. data/examples/tutorial/t8/lcdrange.rb +45 -45
  265. data/examples/tutorial/t8/t8.rb +43 -43
  266. data/examples/tutorial/t9/cannon.rb +44 -45
  267. data/examples/tutorial/t9/lcdrange.rb +46 -46
  268. data/examples/tutorial/t9/t9.rb +43 -43
  269. data/examples/widgets/analogclock/analogclock.rb +94 -94
  270. data/examples/widgets/analogclock/main.rb +9 -9
  271. data/examples/widgets/calculator/button.rb +45 -45
  272. data/examples/widgets/calculator/calculator.rb +382 -382
  273. data/examples/widgets/calculator/main.rb +32 -32
  274. data/examples/widgets/charactermap/characterwidget.rb +109 -109
  275. data/examples/widgets/charactermap/main.rb +32 -32
  276. data/examples/widgets/charactermap/mainwindow.rb +118 -118
  277. data/examples/widgets/digitalclock/digitalclock.rb +30 -30
  278. data/examples/widgets/digitalclock/main.rb +9 -9
  279. data/examples/widgets/groupbox/main.rb +32 -32
  280. data/examples/widgets/groupbox/window.rb +134 -134
  281. data/examples/widgets/icons/iconpreviewarea.rb +110 -110
  282. data/examples/widgets/icons/iconsizespinbox.rb +39 -39
  283. data/examples/widgets/icons/imagedelegate.rb +73 -73
  284. data/examples/widgets/icons/main.rb +32 -32
  285. data/examples/widgets/icons/mainwindow.rb +351 -351
  286. data/examples/widgets/imageviewer/imageviewer.rb +219 -219
  287. data/examples/widgets/imageviewer/main.rb +32 -32
  288. data/examples/widgets/lineedits/main.rb +32 -32
  289. data/examples/widgets/lineedits/window.rb +199 -199
  290. data/examples/widgets/movie/main.rb +32 -32
  291. data/examples/widgets/movie/movieplayer.rb +201 -201
  292. data/examples/widgets/screenshot/main.rb +32 -32
  293. data/examples/widgets/screenshot/screenshot.rb +154 -154
  294. data/examples/widgets/scribble/main.rb +32 -32
  295. data/examples/widgets/scribble/mainwindow.rb +202 -202
  296. data/examples/widgets/scribble/scribblearea.rb +154 -154
  297. data/examples/widgets/sliders/main.rb +32 -32
  298. data/examples/widgets/sliders/slidersgroup.rb +97 -97
  299. data/examples/widgets/sliders/window.rb +124 -124
  300. data/examples/widgets/spinboxes/main.rb +32 -32
  301. data/examples/widgets/spinboxes/window.rb +213 -213
  302. data/examples/widgets/tetrix/main.rb +33 -33
  303. data/examples/widgets/tetrix/tetrixboard.rb +346 -346
  304. data/examples/widgets/tetrix/tetrixpiece.rb +135 -135
  305. data/examples/widgets/tetrix/tetrixwindow.rb +88 -88
  306. data/examples/widgets/tooltips/main.rb +32 -32
  307. data/examples/widgets/tooltips/shapeitem.rb +31 -31
  308. data/examples/widgets/tooltips/sortingbox.rb +222 -222
  309. data/examples/widgets/wiggly/dialog.rb +48 -48
  310. data/examples/widgets/wiggly/main.rb +9 -9
  311. data/examples/widgets/wiggly/wigglywidget.rb +75 -75
  312. data/examples/widgets/windowflags/controllerwindow.rb +195 -195
  313. data/examples/widgets/windowflags/main.rb +32 -32
  314. data/examples/widgets/windowflags/previewwindow.rb +103 -103
  315. data/examples/xml/dombookmarks/frank.xbel +230 -230
  316. data/examples/xml/dombookmarks/jennifer.xbel +93 -93
  317. data/examples/xml/dombookmarks/main.rb +34 -34
  318. data/examples/xml/dombookmarks/mainwindow.rb +129 -129
  319. data/examples/xml/dombookmarks/xbeltree.rb +172 -172
  320. data/examples/xml/saxbookmarks/frank.xbel +230 -230
  321. data/examples/xml/saxbookmarks/jennifer.xbel +93 -93
  322. data/examples/xml/saxbookmarks/main.rb +34 -34
  323. data/examples/xml/saxbookmarks/mainwindow.rb +144 -144
  324. data/examples/xml/saxbookmarks/xbelgenerator.rb +95 -95
  325. data/examples/xml/saxbookmarks/xbelhandler.rb +122 -122
  326. data/ext/cmake/modules/BasicFindPackageVersion.cmake.in +30 -30
  327. data/ext/cmake/modules/CMakeCSharpCompiler.cmake.in +7 -7
  328. data/ext/cmake/modules/CMakeCSharpInformation.cmake +366 -366
  329. data/ext/cmake/modules/CMakeDetermineCSharpCompiler.cmake +85 -85
  330. data/ext/cmake/modules/CMakeTestCSharpCompiler.cmake +1 -1
  331. data/ext/cmake/modules/FindLibraryWithDebug.cmake +113 -113
  332. data/ext/cmake/modules/FindMono.cmake +36 -36
  333. data/ext/cmake/modules/FindPHP5.cmake +179 -179
  334. data/ext/cmake/modules/FindPerlMore.cmake +78 -78
  335. data/ext/cmake/modules/FindPhonon.cmake +71 -71
  336. data/ext/cmake/modules/FindQImageBlitz.cmake +51 -51
  337. data/ext/cmake/modules/FindQScintilla.cmake +57 -57
  338. data/ext/cmake/modules/FindQwt5.cmake +104 -104
  339. data/ext/cmake/modules/FindRuby.cmake +279 -279
  340. data/ext/cmake/modules/FindSmoke.cmake +78 -78
  341. data/ext/cmake/modules/MacroLogFeature.cmake +146 -146
  342. data/ext/cmake/modules/MacroOptionalAddBindings.cmake +47 -47
  343. data/ext/cmake/modules/MacroOptionalFindPackage.cmake +28 -28
  344. data/ext/cmake/modules/MacroPushRequiredVars.cmake +47 -47
  345. data/ext/cmake/modules/MacroWriteBasicCMakeVersionFile.cmake +22 -22
  346. data/ext/cmake/modules/SmokeConfig.cmake.in +109 -109
  347. data/ext/generator/CMakeLists.txt +38 -38
  348. data/ext/generator/cmake/BasicFindPackageVersion.cmake.in +30 -30
  349. data/ext/generator/cmake/CMakeLists.txt +24 -24
  350. data/ext/generator/cmake/FindLibraryWithDebug.cmake +113 -113
  351. data/ext/generator/cmake/FindPhonon.cmake +71 -71
  352. data/ext/generator/cmake/FindQImageBlitz.cmake +51 -51
  353. data/ext/generator/cmake/FindQScintilla.cmake +57 -57
  354. data/ext/generator/cmake/FindQwt5.cmake +104 -104
  355. data/ext/generator/cmake/HandleImportedTargetsInCMakeRequiredLibraries.cmake +85 -85
  356. data/ext/generator/cmake/MacroLogFeature.cmake +146 -146
  357. data/ext/generator/cmake/MacroOptionalAddBindings.cmake +47 -47
  358. data/ext/generator/cmake/MacroOptionalFindPackage.cmake +28 -28
  359. data/ext/generator/cmake/MacroWriteBasicCMakeVersionFile.cmake +22 -22
  360. data/ext/generator/cmake/SmokeConfig.cmake.in +109 -109
  361. data/ext/generator/config.h +25 -25
  362. data/ext/generator/generator_export.h +31 -31
  363. data/ext/generator/generatorenvironment.cpp +52 -52
  364. data/ext/generator/generatorenvironment.h +35 -35
  365. data/ext/generator/generatorpreprocessor.cpp +303 -303
  366. data/ext/generator/generatorpreprocessor.h +83 -83
  367. data/ext/generator/generators/CMakeLists.txt +4 -4
  368. data/ext/generator/generators/dump/CMakeLists.txt +15 -15
  369. data/ext/generator/generators/dump/generator_dump.cpp +36 -36
  370. data/ext/generator/generators/smoke/CMakeLists.txt +18 -18
  371. data/ext/generator/generators/smoke/generator_smoke.cpp +240 -240
  372. data/ext/generator/generators/smoke/globals.h +140 -140
  373. data/ext/generator/generators/smoke/helpers.cpp +793 -793
  374. data/ext/generator/generators/smoke/writeClasses.cpp +502 -502
  375. data/ext/generator/generators/smoke/writeSmokeDataFile.cpp +754 -754
  376. data/ext/generator/generatorvisitor.cpp +922 -922
  377. data/ext/generator/generatorvisitor.h +119 -119
  378. data/ext/generator/name_compiler.cpp +205 -205
  379. data/ext/generator/name_compiler.h +76 -76
  380. data/ext/generator/options.cpp +33 -33
  381. data/ext/generator/options.h +46 -46
  382. data/ext/generator/parser/CMakeLists.txt +50 -50
  383. data/ext/generator/parser/ast.cpp +21 -21
  384. data/ext/generator/parser/ast.h +923 -923
  385. data/ext/generator/parser/astutilities.h +65 -65
  386. data/ext/generator/parser/codegenerator.cpp +867 -867
  387. data/ext/generator/parser/codegenerator.h +180 -180
  388. data/ext/generator/parser/codemodel_fwd.h +76 -76
  389. data/ext/generator/parser/commentformatter.cpp +54 -54
  390. data/ext/generator/parser/commentformatter.h +45 -45
  391. data/ext/generator/parser/commentparser.cpp +109 -109
  392. data/ext/generator/parser/commentparser.h +84 -84
  393. data/ext/generator/parser/control.cpp +40 -40
  394. data/ext/generator/parser/control.h +51 -51
  395. data/ext/generator/parser/cppparser_export.h +33 -33
  396. data/ext/generator/parser/default_visitor.cpp +470 -470
  397. data/ext/generator/parser/default_visitor.h +116 -116
  398. data/ext/generator/parser/dumptree.cpp +146 -146
  399. data/ext/generator/parser/dumptree.h +50 -50
  400. data/ext/generator/parser/indexedstring.cpp +213 -213
  401. data/ext/generator/parser/indexedstring.h +147 -147
  402. data/ext/generator/parser/kdevelop-parser-rev +1 -1
  403. data/ext/generator/parser/kdevvarlengtharray.h +346 -346
  404. data/ext/generator/parser/lexer.cpp +964 -964
  405. data/ext/generator/parser/lexer.h +308 -308
  406. data/ext/generator/parser/listnode.cpp +20 -20
  407. data/ext/generator/parser/listnode.h +97 -97
  408. data/ext/generator/parser/memorypool.cpp +20 -20
  409. data/ext/generator/parser/memorypool.h +41 -41
  410. data/ext/generator/parser/name_compiler.cpp +190 -190
  411. data/ext/generator/parser/name_compiler.h +77 -77
  412. data/ext/generator/parser/parser.cpp +4708 -4708
  413. data/ext/generator/parser/parser.h +290 -290
  414. data/ext/generator/parser/parsesession.cpp +106 -106
  415. data/ext/generator/parser/parsesession.h +87 -87
  416. data/ext/generator/parser/problem.h +21 -21
  417. data/ext/generator/parser/rpp/CMakeLists.txt +45 -45
  418. data/ext/generator/parser/rpp/Makefile.am +13 -13
  419. data/ext/generator/parser/rpp/anchor.h +51 -51
  420. data/ext/generator/parser/rpp/appendedlist.h +363 -363
  421. data/ext/generator/parser/rpp/chartools.cpp +146 -146
  422. data/ext/generator/parser/rpp/chartools.h +99 -99
  423. data/ext/generator/parser/rpp/macrorepository.cpp +44 -44
  424. data/ext/generator/parser/rpp/macrorepository.h +59 -59
  425. data/ext/generator/parser/rpp/pp-configuration +86 -86
  426. data/ext/generator/parser/rpp/pp-engine.h +267 -267
  427. data/ext/generator/parser/rpp/pp-environment.cpp +271 -271
  428. data/ext/generator/parser/rpp/pp-environment.h +119 -119
  429. data/ext/generator/parser/rpp/pp-internal.cpp +38 -38
  430. data/ext/generator/parser/rpp/pp-internal.h +37 -37
  431. data/ext/generator/parser/rpp/pp-location.cpp +191 -191
  432. data/ext/generator/parser/rpp/pp-location.h +89 -89
  433. data/ext/generator/parser/rpp/pp-macro-expander.cpp +568 -568
  434. data/ext/generator/parser/rpp/pp-macro-expander.cpp.orig +558 -558
  435. data/ext/generator/parser/rpp/pp-macro-expander.h +130 -130
  436. data/ext/generator/parser/rpp/pp-macro.cpp +153 -153
  437. data/ext/generator/parser/rpp/pp-macro.h +176 -176
  438. data/ext/generator/parser/rpp/pp-scanner.cpp +311 -311
  439. data/ext/generator/parser/rpp/pp-scanner.h +97 -97
  440. data/ext/generator/parser/rpp/pp-stream.cpp +425 -425
  441. data/ext/generator/parser/rpp/pp-stream.h +183 -183
  442. data/ext/generator/parser/rpp/preprocessor.cpp +65 -65
  443. data/ext/generator/parser/rpp/preprocessor.h +80 -80
  444. data/ext/generator/parser/rpp/rpp.pri +2 -2
  445. data/ext/generator/parser/rpp/test/t001.cpp +23 -23
  446. data/ext/generator/parser/rpp/test/t002.cpp +15 -15
  447. data/ext/generator/parser/rpp/test/t003.cpp +10 -10
  448. data/ext/generator/parser/rpp/test/t004.cpp +9 -9
  449. data/ext/generator/parser/rpp/test/t005.cpp +10 -10
  450. data/ext/generator/parser/rpp/test/t006.cpp +10 -10
  451. data/ext/generator/parser/rpp/test/t007.cpp +6 -6
  452. data/ext/generator/parser/rpp/test/t008.cpp +6 -6
  453. data/ext/generator/parser/rpp/test/t009.cpp +5 -5
  454. data/ext/generator/parser/rpp/test/t010.cpp +15 -15
  455. data/ext/generator/parser/rpp/test/t011.cpp +9 -9
  456. data/ext/generator/parser/rpp/tests/CMakeLists.txt +17 -17
  457. data/ext/generator/parser/rpp/tests/main.cpp +69 -69
  458. data/ext/generator/parser/rxx.pri +50 -50
  459. data/ext/generator/parser/rxx_allocator.h +128 -128
  460. data/ext/generator/parser/safetycounter.h +57 -57
  461. data/ext/generator/parser/simplecursor.h +74 -74
  462. data/ext/generator/parser/stringhelpers.cpp +577 -577
  463. data/ext/generator/parser/stringhelpers.h +118 -118
  464. data/ext/generator/parser/symbol.h +140 -140
  465. data/ext/generator/parser/tests/CMakeLists.txt +46 -46
  466. data/ext/generator/parser/tests/test_generator.cpp +259 -259
  467. data/ext/generator/parser/tests/test_parser.cpp +474 -474
  468. data/ext/generator/parser/tests/test_pool.cpp +109 -109
  469. data/ext/generator/parser/tests/test_pool.h +35 -35
  470. data/ext/generator/parser/tests/testconfig.h.cmake +4 -4
  471. data/ext/generator/parser/tokens.cpp +367 -367
  472. data/ext/generator/parser/tokens.h +148 -148
  473. data/ext/generator/parser/type_compiler.cpp +135 -135
  474. data/ext/generator/parser/type_compiler.h +68 -68
  475. data/ext/generator/parser/visitor.cpp +115 -115
  476. data/ext/generator/parser/visitor.h +138 -138
  477. data/ext/generator/smoke.h +557 -557
  478. data/ext/generator/smokegen_string.h +43 -43
  479. data/ext/generator/type.cpp +204 -204
  480. data/ext/generator/type.h +497 -497
  481. data/ext/generator/type_compiler.cpp +277 -277
  482. data/ext/generator/type_compiler.h +80 -80
  483. data/ext/ruby/CMakeLists.txt +64 -64
  484. data/ext/ruby/qtdeclarative/CMakeLists.txt +17 -17
  485. data/ext/ruby/qtdeclarative/qtdeclarative.cpp +67 -67
  486. data/ext/ruby/qtdeclarative/qtdeclarative.rb +17 -17
  487. data/ext/ruby/qtdeclarative/qtdeclarativehandlers.cpp +36 -36
  488. data/ext/ruby/qtruby/AUTHORS +54 -54
  489. data/ext/ruby/qtruby/COPYING +355 -355
  490. data/ext/ruby/qtruby/COPYING.LIB +510 -510
  491. data/ext/ruby/qtruby/ChangeLog +3732 -3732
  492. data/ext/ruby/qtruby/INSTALL +79 -79
  493. data/ext/ruby/qtruby/README +264 -264
  494. data/ext/ruby/qtruby/TODO +8 -8
  495. data/ext/ruby/qtruby/bin/rbqtapi +152 -152
  496. data/ext/ruby/qtruby/rails_support/CMakeLists.txt +1 -1
  497. data/ext/ruby/qtruby/rails_support/active_item_model.rb +234 -234
  498. data/ext/ruby/qtruby/rails_support/active_table_model.rb +122 -122
  499. data/ext/ruby/qtruby/src/marshall_basetypes.h +208 -208
  500. data/ext/ruby/qtruby/src/marshall_complex.h +175 -175
  501. data/ext/ruby/qtruby/src/marshall_macros.h +647 -647
  502. data/ext/ruby/qtruby/src/marshall_types.cpp +815 -815
  503. data/ext/ruby/qtruby/src/marshall_types.h +240 -240
  504. data/ext/ruby/qtruby/src/qtruby.cpp +1 -1
  505. data/ext/ruby/qtruby/test/opoverloading.rb +46 -46
  506. data/ext/ruby/qtruby/test/unittests.rb +151 -151
  507. data/ext/ruby/qtruby/tools/rbrcc/main.cpp +173 -173
  508. data/ext/ruby/qtruby/tools/rbrcc/rbrcc.pro +14 -14
  509. data/ext/ruby/qtruby/tools/rbrcc/rcc.cpp +648 -648
  510. data/ext/ruby/qtruby/tools/rbrcc/rcc.h +165 -165
  511. data/ext/ruby/qtruby/tools/rbuic/LICENSE.GPL +280 -280
  512. data/ext/ruby/qtruby/tools/rbuic/TODO +4 -4
  513. data/ext/ruby/qtruby/tools/rbuic/customwidgetsinfo.cpp +106 -106
  514. data/ext/ruby/qtruby/tools/rbuic/customwidgetsinfo.h +95 -95
  515. data/ext/ruby/qtruby/tools/rbuic/databaseinfo.cpp +102 -102
  516. data/ext/ruby/qtruby/tools/rbuic/databaseinfo.h +85 -85
  517. data/ext/ruby/qtruby/tools/rbuic/driver.cpp +384 -384
  518. data/ext/ruby/qtruby/tools/rbuic/driver.h +141 -141
  519. data/ext/ruby/qtruby/tools/rbuic/rbuic.pri +23 -23
  520. data/ext/ruby/qtruby/tools/rbuic/rbuic4.pro +43 -43
  521. data/ext/ruby/qtruby/tools/rbuic/ruby/rbextractimages.cpp +150 -150
  522. data/ext/ruby/qtruby/tools/rbuic/ruby/rbextractimages.h +83 -83
  523. data/ext/ruby/qtruby/tools/rbuic/ruby/rbwritedeclaration.cpp +217 -217
  524. data/ext/ruby/qtruby/tools/rbuic/ruby/rbwritedeclaration.h +85 -85
  525. data/ext/ruby/qtruby/tools/rbuic/ruby/rbwriteicondata.cpp +185 -185
  526. data/ext/ruby/qtruby/tools/rbuic/ruby/rbwriteicondata.h +86 -86
  527. data/ext/ruby/qtruby/tools/rbuic/ruby/rbwriteicondeclaration.cpp +88 -88
  528. data/ext/ruby/qtruby/tools/rbuic/ruby/rbwriteicondeclaration.h +83 -83
  529. data/ext/ruby/qtruby/tools/rbuic/ruby/rbwriteiconinitialization.cpp +126 -126
  530. data/ext/ruby/qtruby/tools/rbuic/ruby/rbwriteiconinitialization.h +87 -87
  531. data/ext/ruby/qtruby/tools/rbuic/ruby/rbwriteinitialization.cpp +2478 -2478
  532. data/ext/ruby/qtruby/tools/rbuic/ruby/rbwriteinitialization.h +314 -314
  533. data/ext/ruby/qtruby/tools/rbuic/ruby/ruby.pri +18 -18
  534. data/ext/ruby/qtruby/tools/rbuic/treewalker.cpp +318 -318
  535. data/ext/ruby/qtruby/tools/rbuic/treewalker.h +139 -139
  536. data/ext/ruby/qtruby/tools/rbuic/ui4.cpp +7623 -7623
  537. data/ext/ruby/qtruby/tools/rbuic/ui4.h +3180 -3180
  538. data/ext/ruby/qtruby/tools/rbuic/utils.h +125 -125
  539. data/ext/ruby/qtruby/tools/rbuic/validator.cpp +100 -100
  540. data/ext/ruby/qtruby/tools/rbuic/validator.h +80 -80
  541. data/ext/ruby/qtscript/CMakeLists.txt +19 -19
  542. data/ext/ruby/qtscript/qtscript.cpp +83 -83
  543. data/ext/ruby/qtscript/qtscript.rb +40 -40
  544. data/ext/ruby/qtscript/qtscripthandlers.cpp +37 -37
  545. data/ext/ruby/qtscript/smokedata.cpp +1403 -1403
  546. data/ext/ruby/qttest/CMakeLists.txt +18 -18
  547. data/ext/ruby/qttest/ChangeLog +9 -9
  548. data/ext/ruby/qttest/examples/myfirsttest.rb +30 -30
  549. data/ext/ruby/qttest/qttest.cpp +83 -83
  550. data/ext/ruby/qttest/qttest.rb +166 -166
  551. data/ext/ruby/qttest/qttesthandlers.cpp +37 -37
  552. data/ext/ruby/qtuitools/CMakeLists.txt +16 -16
  553. data/ext/ruby/qtuitools/qtuitools.cpp +83 -83
  554. data/ext/ruby/qtuitools/qtuitools.rb +17 -17
  555. data/ext/ruby/qtuitools/qtuitoolshandlers.cpp +32 -32
  556. data/ext/ruby/qtwebkit/CMakeLists.txt +17 -17
  557. data/ext/ruby/qtwebkit/qtwebkit.cpp +67 -67
  558. data/ext/ruby/qtwebkit/qtwebkit.rb +17 -17
  559. data/ext/ruby/qtwebkit/qtwebkithandlers.cpp +40 -40
  560. data/ext/smoke/deptool/CMakeLists.txt +7 -7
  561. data/ext/smoke/deptool/main.cpp +128 -128
  562. data/ext/smoke/qtcore/CMakeLists.txt +88 -88
  563. data/ext/smoke/qtcore/QtGuess.txt +180 -180
  564. data/ext/smoke/qtcore/config.xml.cmake +10 -10
  565. data/ext/smoke/qtcore/qt-config.xml.cmake +21 -21
  566. data/ext/smoke/qtcore/qtcore_includes.h +1 -1
  567. data/ext/smoke/qtcore/smokeconfig.xml +193 -193
  568. data/ext/smoke/qtcore/tests/CMakeLists.txt +13 -13
  569. data/ext/smoke/qtcore/tests/test.cpp +846 -846
  570. data/ext/smoke/qtcore_smoke.h +16 -16
  571. data/ext/smoke/qtdbus/CMakeLists.txt +38 -38
  572. data/ext/smoke/qtdbus/config.xml.cmake +11 -11
  573. data/ext/smoke/qtdbus/qtdbus_includes.h +2 -2
  574. data/ext/smoke/qtdbus/smokeconfig.xml +65 -65
  575. data/ext/smoke/qtdbus_smoke.h +16 -16
  576. data/ext/smoke/qtdeclarative/CMakeLists.txt +45 -45
  577. data/ext/smoke/qtdeclarative/config.xml.cmake +12 -12
  578. data/ext/smoke/qtdeclarative/qtdeclarative_includes.h +3 -3
  579. data/ext/smoke/qtdeclarative/smokeconfig.xml +59 -59
  580. data/ext/smoke/qtdeclarative_smoke.h +16 -16
  581. data/ext/smoke/qtgui/CMakeLists.txt +76 -76
  582. data/ext/smoke/qtgui/config.xml.cmake +11 -11
  583. data/ext/smoke/qtgui/qtgui_includes.h +7 -7
  584. data/ext/smoke/qtgui/smokeconfig.xml +500 -500
  585. data/ext/smoke/qtgui_smoke.h +16 -16
  586. data/ext/smoke/qthelp/CMakeLists.txt +45 -45
  587. data/ext/smoke/qthelp/config.xml.cmake +13 -13
  588. data/ext/smoke/qthelp/qthelp_includes.h +3 -3
  589. data/ext/smoke/qthelp/smokeconfig.xml +54 -54
  590. data/ext/smoke/qthelp_smoke.h +16 -16
  591. data/ext/smoke/qtmultimedia/CMakeLists.txt +42 -42
  592. data/ext/smoke/qtmultimedia/config.xml.cmake +12 -12
  593. data/ext/smoke/qtmultimedia/qtmultimedia_includes.h +3 -3
  594. data/ext/smoke/qtmultimedia/smokeconfig.xml +51 -51
  595. data/ext/smoke/qtmultimedia_smoke.h +16 -16
  596. data/ext/smoke/qtnetwork/CMakeLists.txt +38 -38
  597. data/ext/smoke/qtnetwork/config.xml.cmake +11 -11
  598. data/ext/smoke/qtnetwork/qtnetwork_includes.h +2 -2
  599. data/ext/smoke/qtnetwork/smokeconfig.xml +81 -81
  600. data/ext/smoke/qtnetwork_smoke.h +16 -16
  601. data/ext/smoke/qtopengl/CMakeLists.txt +43 -43
  602. data/ext/smoke/qtopengl/config.xml.cmake +13 -13
  603. data/ext/smoke/qtopengl/qtopengl_includes.h +3 -3
  604. data/ext/smoke/qtopengl/smokeconfig.xml +58 -58
  605. data/ext/smoke/qtopengl_smoke.h +16 -16
  606. data/ext/smoke/qtscript/CMakeLists.txt +31 -31
  607. data/ext/smoke/qtscript/config.xml.cmake +11 -11
  608. data/ext/smoke/qtscript/qtscript_includes.h +14 -14
  609. data/ext/smoke/qtscript/smokeconfig.xml +39 -39
  610. data/ext/smoke/qtscript_smoke.h +16 -16
  611. data/ext/smoke/qtsql/CMakeLists.txt +45 -45
  612. data/ext/smoke/qtsql/config.xml.cmake +11 -11
  613. data/ext/smoke/qtsql/qtsql_includes.h +3 -3
  614. data/ext/smoke/qtsql/smokeconfig.xml +60 -60
  615. data/ext/smoke/qtsql_smoke.h +16 -16
  616. data/ext/smoke/qtsvg/CMakeLists.txt +43 -43
  617. data/ext/smoke/qtsvg/config.xml.cmake +12 -12
  618. data/ext/smoke/qtsvg/qtsvg_includes.h +3 -3
  619. data/ext/smoke/qtsvg/smokeconfig.xml +46 -46
  620. data/ext/smoke/qtsvg_smoke.h +16 -16
  621. data/ext/smoke/qttest/CMakeLists.txt +35 -35
  622. data/ext/smoke/qttest/config.xml.cmake +12 -12
  623. data/ext/smoke/qttest/qttest_includes.h +14 -14
  624. data/ext/smoke/qttest/smokeconfig.xml +36 -36
  625. data/ext/smoke/qttest_smoke.h +16 -16
  626. data/ext/smoke/qtuitools/CMakeLists.txt +30 -30
  627. data/ext/smoke/qtuitools/config.xml.cmake +12 -12
  628. data/ext/smoke/qtuitools/qtuitools_includes.h +1 -1
  629. data/ext/smoke/qtuitools/smokeconfig.xml +20 -20
  630. data/ext/smoke/qtuitools_smoke.h +16 -16
  631. data/ext/smoke/qtwebkit/CMakeLists.txt +36 -36
  632. data/ext/smoke/qtwebkit/config.xml.cmake +11 -11
  633. data/ext/smoke/qtwebkit/qtwebkit_includes.h +1 -1
  634. data/ext/smoke/qtwebkit/smokeconfig.xml +48 -48
  635. data/ext/smoke/qtwebkit_smoke.h +16 -16
  636. data/ext/smoke/qtxml/CMakeLists.txt +41 -41
  637. data/ext/smoke/qtxml/config.xml.cmake +11 -11
  638. data/ext/smoke/qtxml/qtxml_includes.h +2 -2
  639. data/ext/smoke/qtxml/smokeconfig.xml +70 -70
  640. data/ext/smoke/qtxml_smoke.h +16 -16
  641. data/ext/smoke/qtxmlpatterns/CMakeLists.txt +42 -42
  642. data/ext/smoke/qtxmlpatterns/config.xml.cmake +12 -12
  643. data/ext/smoke/qtxmlpatterns/qtxmlpatterns_includes.h +3 -3
  644. data/ext/smoke/qtxmlpatterns/smokeconfig.xml +80 -80
  645. data/ext/smoke/qtxmlpatterns_smoke.h +16 -16
  646. data/ext/smoke/smokeapi/CMakeLists.txt +9 -9
  647. data/ext/smoke/smokeapi/main.cpp +309 -309
  648. data/ext/smoke/smokebase/CMakeLists.txt +11 -11
  649. data/ext/smoke/smokebase/smokebase.cpp +6 -6
  650. data/ext/smoke/solid_smoke.h +16 -16
  651. data/lib/Qt.rb +1 -1
  652. data/lib/Qt4.rb +119 -111
  653. data/lib/qtbindings_version.rb +2 -2
  654. data/lib/qtdeclarative/qtdeclarative.rb +17 -17
  655. data/lib/qtscript/qtscript.rb +40 -40
  656. data/lib/qttest/qttest.rb +166 -166
  657. data/lib/qtuitools/qtuitools.rb +17 -17
  658. data/lib/qtwebkit/qtwebkit.rb +17 -17
  659. metadata +6 -7
@@ -1,923 +1,923 @@
1
- /* This file is part of KDevelop
2
- Copyright 2002-2005 Roberto Raggi <roberto@kdevelop.org>
3
-
4
- This library is free software; you can redistribute it and/or
5
- modify it under the terms of the GNU Library General Public
6
- License version 2 as published by the Free Software Foundation.
7
-
8
- This library is distributed in the hope that it will be useful,
9
- but WITHOUT ANY WARRANTY; without even the implied warranty of
10
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11
- Library General Public License for more details.
12
-
13
- You should have received a copy of the GNU Library General Public License
14
- along with this library; see the file COPYING.LIB. If not, write to
15
- the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
16
- Boston, MA 02110-1301, USA.
17
- */
18
-
19
- #ifndef AST_H
20
- #define AST_H
21
-
22
- #include "memorypool.h"
23
- #include "listnode.h"
24
-
25
- #define DECLARE_AST_NODE(k) \
26
- enum { __node_kind = Kind_##k };
27
-
28
- class ParseSession;
29
- struct AccessSpecifierAST;
30
- struct AsmDefinitionAST;
31
- struct BaseClauseAST;
32
- struct BaseSpecifierAST;
33
- struct BinaryExpressionAST;
34
- struct CastExpressionAST;
35
- struct ClassMemberAccessAST;
36
- struct ClassSpecifierAST;
37
- struct CompoundStatementAST;
38
- struct ConditionAST;
39
- struct ConditionalExpressionAST;
40
- struct CppCastExpressionAST;
41
- struct CtorInitializerAST;
42
- struct DeclarationAST;
43
- struct DeclarationStatementAST;
44
- struct DeclaratorAST;
45
- struct DeleteExpressionAST;
46
- struct DoStatementAST;
47
- struct Elaborated;
48
- struct EnumSpecifierAST;
49
- struct EnumeratorAST;
50
- struct ExceptionSpecificationAST;
51
- struct ExpressionAST;
52
- struct ExpressionOrDeclarationStatementAST;
53
- struct ExpressionStatementAST;
54
- struct ForStatementAST;
55
- struct FunctionCallAST;
56
- struct FunctionDefinitionAST;
57
- struct IfStatementAST;
58
- struct IncrDecrExpressionAST;
59
- struct InitDeclaratorAST;
60
- struct InitializerAST;
61
- struct InitializerClauseAST;
62
- struct LabeledStatementAST;
63
- struct LinkageBodyAST;
64
- struct LinkageSpecificationAST;
65
- struct MemInitializerAST;
66
- struct NameAST;
67
- struct NamespaceAST;
68
- struct NamespaceAliasDefinitionAST;
69
- struct NewDeclaratorAST;
70
- struct NewExpressionAST;
71
- struct NewInitializerAST;
72
- struct NewTypeIdAST;
73
- struct OperatorAST;
74
- struct OperatorFunctionIdAST;
75
- struct ParameterDeclarationAST;
76
- struct ParameterDeclarationClauseAST;
77
- struct PostfixExpressionAST;
78
- struct PrimaryExpressionAST;
79
- struct PtrOperatorAST;
80
- struct PtrToMemberAST;
81
- struct ReturnStatementAST;
82
- struct SimpleDeclarationAST;
83
- struct SimpleTypeSpecifierAST;
84
- struct SizeofExpressionAST;
85
- struct StatementAST;
86
- struct StringLiteralAST;
87
- struct SubscriptExpressionAST;
88
- struct SwitchStatementAST;
89
- struct TemplateArgumentAST;
90
- struct TemplateDeclarationAST;
91
- struct TemplateParameterAST;
92
- struct ThrowExpressionAST;
93
- struct TranslationUnitAST;
94
- struct TryBlockStatementAST;
95
- struct CatchStatementAST;
96
- struct TypeIdAST;
97
- struct TypeIdentificationAST;
98
- struct TypeParameterAST;
99
- struct TypeSpecifierAST;
100
- struct TypedefAST;
101
- struct UnaryExpressionAST;
102
- struct UnqualifiedNameAST;
103
- struct UsingAST;
104
- struct UsingDirectiveAST;
105
- struct WhileStatementAST;
106
- struct WinDeclSpecAST;
107
-
108
- struct AST
109
- {///@warning When adding new nodes here, also modify the names[] array in dumptree.cpp
110
- enum NODE_KIND
111
- {
112
- Kind_UNKNOWN = 0,
113
-
114
- Kind_AccessSpecifier, // 1
115
- Kind_AsmDefinition, // 2
116
- Kind_BaseClause, // 3
117
- Kind_BaseSpecifier, // 4
118
- Kind_BinaryExpression, // 5
119
- Kind_CastExpression, // 6
120
- Kind_ClassMemberAccess, // 7
121
- Kind_ClassSpecifier, // 8
122
- Kind_CompoundStatement, // 9
123
- Kind_Condition, // 10
124
- Kind_ConditionalExpression, // 11
125
- Kind_CppCastExpression, // 12
126
- Kind_CtorInitializer, // 13
127
- Kind_DeclarationStatement, // 14
128
- Kind_Declarator, // 15
129
- Kind_DeleteExpression, // 16
130
- Kind_DoStatement, // 17
131
- Kind_ElaboratedTypeSpecifier, // 18
132
- Kind_EnumSpecifier, // 19
133
- Kind_Enumerator, // 20
134
- Kind_ExceptionSpecification, // 21
135
- Kind_ExpressionOrDeclarationStatement, // 22
136
- Kind_ExpressionStatement, // 23
137
- Kind_ForStatement, // 24
138
- Kind_FunctionCall, // 25
139
- Kind_FunctionDefinition, // 26
140
- Kind_IfStatement, // 27
141
- Kind_IncrDecrExpression, // 28
142
- Kind_InitDeclarator, // 29
143
- Kind_Initializer, // 30
144
- Kind_InitializerClause, // 31
145
- Kind_LabeledStatement, // 32
146
- Kind_LinkageBody, // 33
147
- Kind_LinkageSpecification, // 34
148
- Kind_MemInitializer, // 35
149
- Kind_Name, // 36
150
- Kind_Namespace, // 37
151
- Kind_NamespaceAliasDefinition, // 38
152
- Kind_NewDeclarator, // 39
153
- Kind_NewExpression, // 40
154
- Kind_NewInitializer, // 41
155
- Kind_NewTypeId, // 42
156
- Kind_Operator, // 43
157
- Kind_OperatorFunctionId, // 44
158
- Kind_ParameterDeclaration, // 45
159
- Kind_ParameterDeclarationClause, // 46
160
- Kind_PostfixExpression, // 47
161
- Kind_PrimaryExpression, // 48
162
- Kind_PtrOperator, // 49
163
- Kind_PtrToMember, // 50
164
- Kind_ReturnStatement, // 51
165
- Kind_SimpleDeclaration, // 52
166
- Kind_SimpleTypeSpecifier, // 53
167
- Kind_SizeofExpression, // 54
168
- Kind_StringLiteral, // 55
169
- Kind_SubscriptExpression, // 56
170
- Kind_SwitchStatement, // 57
171
- Kind_TemplateArgument, // 58
172
- Kind_TemplateDeclaration, // 59
173
- Kind_TemplateParameter, // 60
174
- Kind_ThrowExpression, // 61
175
- Kind_TranslationUnit, // 62
176
- Kind_TryBlockStatement, // 63
177
- Kind_CatchStatement, // 64
178
- Kind_TypeId, // 65
179
- Kind_TypeIdentification, // 66
180
- Kind_TypeParameter, // 67
181
- Kind_Typedef, // 68
182
- Kind_UnaryExpression, // 69
183
- Kind_UnqualifiedName, // 70
184
- Kind_Using, // 71
185
- Kind_UsingDirective, // 72
186
- Kind_WhileStatement, // 73
187
- Kind_WinDeclSpec, // 74
188
- Kind_Comment, // 75
189
- Kind_JumpStatement, // 76
190
- Kind_SignalSlotExpression, // 77
191
- NODE_KIND_COUNT
192
- };
193
-
194
- int kind;
195
-
196
- std::size_t start_token;
197
- std::size_t end_token;
198
- };
199
-
200
- struct CommentAST {
201
- const ListNode<std::size_t> *comments; //A list of comment-tokens
202
- };
203
-
204
- struct TypeSpecifierAST: public AST
205
- {
206
- const ListNode<std::size_t> *cv; // const or volatile tokens
207
- };
208
-
209
- struct StatementAST: public AST
210
- {
211
- };
212
-
213
- struct ExpressionAST: public AST
214
- {
215
- };
216
-
217
- struct DeclarationAST: public AST, public CommentAST
218
- {
219
- };
220
-
221
- struct AccessSpecifierAST: public DeclarationAST
222
- {
223
- DECLARE_AST_NODE(AccessSpecifier)
224
-
225
- const ListNode<std::size_t> *specs;
226
- };
227
-
228
- struct AsmDefinitionAST: public DeclarationAST
229
- {
230
- DECLARE_AST_NODE(AsmDefinition)
231
-
232
- const ListNode<std::size_t> *cv;
233
- };
234
-
235
- struct BaseClauseAST: public AST // ### kill me
236
- {
237
- DECLARE_AST_NODE(BaseClause)
238
-
239
- const ListNode<BaseSpecifierAST*> *base_specifiers;
240
- };
241
-
242
- struct BaseSpecifierAST: public AST
243
- {
244
- DECLARE_AST_NODE(BaseSpecifier)
245
-
246
- std::size_t virt;
247
- std::size_t access_specifier;
248
- NameAST *name;
249
- };
250
-
251
- struct BinaryExpressionAST: public ExpressionAST
252
- {
253
- DECLARE_AST_NODE(BinaryExpression)
254
-
255
- std::size_t op; //Index of the token that describes the operator
256
- ExpressionAST *left_expression;
257
- ExpressionAST *right_expression;
258
- };
259
-
260
- ///An expression used to do more detailed processing of SIGNAL(..) and SLOT(..) specifications
261
- struct SignalSlotExpressionAST : public ExpressionAST {
262
- DECLARE_AST_NODE(SignalSlotExpression)
263
- //The unqualified name also contains the argument types in its template-arguments
264
- UnqualifiedNameAST *name;
265
- };
266
-
267
- struct CastExpressionAST: public ExpressionAST
268
- {
269
- DECLARE_AST_NODE(CastExpression)
270
-
271
- TypeIdAST *type_id;
272
- ExpressionAST *expression;
273
- };
274
-
275
- struct ClassMemberAccessAST: public ExpressionAST
276
- {
277
- DECLARE_AST_NODE(ClassMemberAccess)
278
-
279
- std::size_t op; //Index of the token that describes the operator
280
- NameAST *name;
281
- };
282
-
283
- struct ClassSpecifierAST: public TypeSpecifierAST
284
- {
285
- DECLARE_AST_NODE(ClassSpecifier)
286
-
287
- WinDeclSpecAST *win_decl_specifiers;
288
- std::size_t class_key;
289
- NameAST *name;
290
- BaseClauseAST *base_clause;
291
- const ListNode<DeclarationAST*> *member_specs;
292
- };
293
-
294
- struct CompoundStatementAST: public StatementAST
295
- {
296
- DECLARE_AST_NODE(CompoundStatement)
297
-
298
- const ListNode<StatementAST*> *statements;
299
- };
300
-
301
- struct ConditionAST: public AST
302
- {
303
- DECLARE_AST_NODE(Condition)
304
-
305
- TypeSpecifierAST *type_specifier;
306
- DeclaratorAST *declarator;
307
- ExpressionAST *expression;
308
- };
309
-
310
- struct ConditionalExpressionAST: public ExpressionAST
311
- {
312
- DECLARE_AST_NODE(ConditionalExpression)
313
-
314
- ExpressionAST *condition;
315
- ExpressionAST *left_expression;
316
- ExpressionAST *right_expression;
317
- };
318
-
319
- /**
320
- * type_id is the type that should be casted to
321
- * expression is the expression casted from
322
- * sub_expressions is a list of post-fix expressions, see PostfixExpressionAST
323
- */
324
- struct CppCastExpressionAST: public ExpressionAST
325
- {
326
- DECLARE_AST_NODE(CppCastExpression)
327
-
328
- std::size_t op; //Index of the token that describes the operator
329
- TypeIdAST *type_id;
330
- ExpressionAST *expression;
331
- const ListNode<ExpressionAST*> *sub_expressions;
332
- };
333
-
334
- struct CtorInitializerAST: public AST
335
- {
336
- DECLARE_AST_NODE(CtorInitializer)
337
-
338
- std::size_t colon;
339
- const ListNode<MemInitializerAST*> *member_initializers;
340
- };
341
-
342
- struct DeclarationStatementAST: public StatementAST
343
- {
344
- DECLARE_AST_NODE(DeclarationStatement)
345
-
346
- DeclarationAST *declaration;
347
- };
348
-
349
- struct DeclaratorAST: public AST
350
- {
351
- DECLARE_AST_NODE(Declarator)
352
-
353
- const ListNode<PtrOperatorAST*> *ptr_ops;
354
- DeclaratorAST *sub_declarator;
355
- NameAST *id;
356
- ExpressionAST *bit_expression;
357
- const ListNode<ExpressionAST*> *array_dimensions;
358
-
359
- bool parameter_is_initializer; //Used by the declaration-builder to mark a parameter-declaration clause as a mis-parsed initializer
360
- ParameterDeclarationClauseAST *parameter_declaration_clause;
361
- const ListNode<std::size_t> *fun_cv;
362
- ExceptionSpecificationAST *exception_spec;
363
- };
364
-
365
- struct DeleteExpressionAST: public ExpressionAST
366
- {
367
- DECLARE_AST_NODE(DeleteExpression)
368
-
369
- std::size_t scope_token;
370
- std::size_t delete_token;
371
- std::size_t lbracket_token;
372
- std::size_t rbracket_token;
373
- ExpressionAST *expression;
374
- };
375
-
376
- struct DoStatementAST: public StatementAST
377
- {
378
- DECLARE_AST_NODE(DoStatement)
379
-
380
- StatementAST *statement;
381
- ExpressionAST *expression;
382
- };
383
-
384
- struct ElaboratedTypeSpecifierAST: public TypeSpecifierAST
385
- {
386
- DECLARE_AST_NODE(ElaboratedTypeSpecifier)
387
-
388
- std::size_t type;
389
- NameAST *name;
390
- };
391
-
392
- struct EnumSpecifierAST: public TypeSpecifierAST
393
- {
394
- DECLARE_AST_NODE(EnumSpecifier)
395
-
396
- NameAST *name;
397
- const ListNode<EnumeratorAST*> *enumerators;
398
- };
399
-
400
- struct EnumeratorAST: public AST, public CommentAST
401
- {
402
- DECLARE_AST_NODE(Enumerator)
403
-
404
- std::size_t id;
405
- ExpressionAST *expression;
406
- };
407
-
408
- struct ExceptionSpecificationAST: public AST
409
- {
410
- DECLARE_AST_NODE(ExceptionSpecification)
411
-
412
- std::size_t ellipsis;
413
- const ListNode<TypeIdAST*> *type_ids;
414
- };
415
-
416
- struct ExpressionOrDeclarationStatementAST: public StatementAST
417
- {
418
- DECLARE_AST_NODE(ExpressionOrDeclarationStatement)
419
-
420
- StatementAST *expression;
421
- StatementAST *declaration;
422
-
423
- // This was not originally part of the AST - added by the context visitor
424
- bool expressionChosen;
425
- };
426
-
427
- ///An expression terminated by a semicolon or similar
428
- struct ExpressionStatementAST: public StatementAST
429
- {
430
- DECLARE_AST_NODE(ExpressionStatement)
431
-
432
- ExpressionAST *expression;
433
- };
434
-
435
- struct FunctionCallAST: public ExpressionAST
436
- {
437
- DECLARE_AST_NODE(FunctionCall)
438
-
439
- ExpressionAST *arguments;
440
- };
441
-
442
- struct FunctionDefinitionAST: public DeclarationAST
443
- {
444
- DECLARE_AST_NODE(FunctionDefinition)
445
-
446
- const ListNode<std::size_t> *storage_specifiers;
447
- const ListNode<std::size_t> *function_specifiers;
448
- TypeSpecifierAST *type_specifier;
449
- InitDeclaratorAST *init_declarator;
450
- StatementAST *function_body;
451
- WinDeclSpecAST *win_decl_specifiers;
452
- CtorInitializerAST *constructor_initializers;
453
- };
454
-
455
- struct ForStatementAST: public StatementAST
456
- {
457
- DECLARE_AST_NODE(ForStatement)
458
-
459
- StatementAST *init_statement;
460
- ConditionAST *condition;
461
- ExpressionAST *expression;
462
- StatementAST *statement;
463
- };
464
-
465
- struct IfStatementAST: public StatementAST
466
- {
467
- DECLARE_AST_NODE(IfStatement)
468
-
469
- ConditionAST *condition;
470
- StatementAST *statement;
471
- StatementAST *else_statement;
472
- };
473
-
474
- struct IncrDecrExpressionAST: public ExpressionAST
475
- {
476
- DECLARE_AST_NODE(IncrDecrExpression)
477
-
478
- std::size_t op; //Index of the token that describes the operator
479
- };
480
-
481
- struct InitDeclaratorAST: public AST
482
- {
483
- DECLARE_AST_NODE(InitDeclarator)
484
-
485
- DeclaratorAST *declarator;
486
- InitializerAST *initializer;
487
- };
488
-
489
- struct InitializerAST: public AST
490
- {
491
- DECLARE_AST_NODE(Initializer)
492
-
493
- InitializerClauseAST *initializer_clause;
494
- ExpressionAST *expression;
495
- };
496
-
497
- struct InitializerClauseAST: public AST
498
- {
499
- DECLARE_AST_NODE(InitializerClause)
500
-
501
- // either 'expression' or 'initializer_list' or neither are used.
502
- // neither are used when the clause represents the empty initializer "{}"
503
-
504
- // assignment expression
505
- ExpressionAST *expression;
506
- const ListNode<InitializerClauseAST*> *initializer_list;
507
- };
508
-
509
- struct LabeledStatementAST: public StatementAST
510
- {
511
- DECLARE_AST_NODE(LabeledStatement)
512
-
513
- std::size_t label;
514
- //The constant label expression
515
- ExpressionAST *expression;
516
- StatementAST* statement;
517
- };
518
-
519
- struct LinkageBodyAST: public AST
520
- {
521
- DECLARE_AST_NODE(LinkageBody)
522
-
523
- const ListNode<DeclarationAST*> *declarations;
524
- };
525
-
526
- struct LinkageSpecificationAST: public DeclarationAST
527
- {
528
- DECLARE_AST_NODE(LinkageSpecification)
529
-
530
- std::size_t extern_type;
531
- LinkageBodyAST *linkage_body;
532
- DeclarationAST *declaration;
533
- };
534
-
535
- struct MemInitializerAST: public AST
536
- {
537
- DECLARE_AST_NODE(MemInitializer)
538
-
539
- NameAST *initializer_id;
540
- ExpressionAST *expression;
541
- };
542
-
543
- struct NameAST: public AST
544
- {
545
- DECLARE_AST_NODE(Name)
546
-
547
- bool global;
548
- const ListNode<UnqualifiedNameAST*> *qualified_names;
549
- UnqualifiedNameAST *unqualified_name;
550
- };
551
-
552
- struct NamespaceAST: public DeclarationAST
553
- {
554
- DECLARE_AST_NODE(Namespace)
555
-
556
- std::size_t namespace_name;
557
- LinkageBodyAST *linkage_body;
558
- };
559
-
560
- struct NamespaceAliasDefinitionAST: public DeclarationAST
561
- {
562
- DECLARE_AST_NODE(NamespaceAliasDefinition)
563
-
564
- std::size_t namespace_name;
565
- NameAST *alias_name;
566
- };
567
-
568
- struct NewDeclaratorAST: public AST
569
- {
570
- DECLARE_AST_NODE(NewDeclarator)
571
-
572
- PtrOperatorAST *ptr_op;
573
- NewDeclaratorAST *sub_declarator;
574
- const ListNode<ExpressionAST*> *expressions;
575
- };
576
-
577
- struct NewExpressionAST: public ExpressionAST
578
- {
579
- DECLARE_AST_NODE(NewExpression)
580
-
581
- std::size_t scope_token;
582
- std::size_t new_token;
583
- ExpressionAST *expression;
584
- TypeIdAST *type_id;
585
- NewTypeIdAST *new_type_id;
586
- NewInitializerAST *new_initializer;
587
- };
588
-
589
- struct NewInitializerAST: public AST
590
- {
591
- DECLARE_AST_NODE(NewInitializer)
592
-
593
- ExpressionAST *expression;
594
- };
595
-
596
- struct NewTypeIdAST: public AST
597
- {
598
- DECLARE_AST_NODE(NewTypeId)
599
-
600
- TypeSpecifierAST *type_specifier;
601
- NewInitializerAST *new_initializer;
602
- NewDeclaratorAST *new_declarator;
603
- };
604
-
605
- struct OperatorAST: public AST
606
- {
607
- DECLARE_AST_NODE(Operator)
608
-
609
- std::size_t op; //Index of the token that describes the operator
610
- std::size_t open;
611
- std::size_t close;
612
- };
613
-
614
- struct OperatorFunctionIdAST: public AST
615
- {
616
- DECLARE_AST_NODE(OperatorFunctionId)
617
-
618
- OperatorAST *op;
619
- TypeSpecifierAST *type_specifier;
620
- const ListNode<PtrOperatorAST*> *ptr_ops;
621
- };
622
-
623
- struct ParameterDeclarationAST: public AST
624
- {
625
- DECLARE_AST_NODE(ParameterDeclaration)
626
-
627
- TypeSpecifierAST *type_specifier;
628
- DeclaratorAST *declarator;
629
- ExpressionAST *expression;
630
- };
631
-
632
- struct ParameterDeclarationClauseAST: public AST
633
- {
634
- DECLARE_AST_NODE(ParameterDeclarationClause)
635
-
636
- const ListNode<ParameterDeclarationAST*> *parameter_declarations;
637
- std::size_t ellipsis;
638
- };
639
-
640
- /**
641
- * A post-fix expression is an expression that consists of one primary expression and multiple sub-expressions that are evaluated from
642
- * left to right, each sub-expression based on the previous expression.
643
- *
644
- *
645
- * Examples:
646
- * "a->b" : "a" is the primary expression, "->b" is a sub-expression
647
- * "a->b(5,3)" : "a" is the primary expression, "->b" is a sub-expression, and "(5,3)" is a sub-expression
648
- **/
649
- struct PostfixExpressionAST: public ExpressionAST
650
- {
651
- DECLARE_AST_NODE(PostfixExpression)
652
-
653
- TypeSpecifierAST *type_specifier;
654
- ExpressionAST *expression;
655
- const ListNode<ExpressionAST*> *sub_expressions;
656
- };
657
-
658
- struct PrimaryExpressionAST: public ExpressionAST
659
- {
660
- DECLARE_AST_NODE(PrimaryExpression)
661
-
662
- StringLiteralAST *literal;
663
- std::size_t token;
664
- StatementAST *expression_statement;
665
- ExpressionAST *sub_expression;
666
- NameAST *name;
667
- };
668
-
669
- struct PtrOperatorAST: public AST
670
- {
671
- DECLARE_AST_NODE(PtrOperator)
672
-
673
- const ListNode<std::size_t> *cv;
674
- std::size_t op; //Index of the token that describes the operator. Is zero when mem_ptr is non-zero.
675
- PtrToMemberAST *mem_ptr;
676
- };
677
-
678
- struct PtrToMemberAST: public AST
679
- {
680
- DECLARE_AST_NODE(PtrToMember)
681
- };
682
-
683
- struct JumpStatementAST : public StatementAST
684
- {
685
- DECLARE_AST_NODE(JumpStatement)
686
-
687
- // index of operator token which describes the jump, one of
688
- // 'break', 'continue' or 'goto. Return statements are handled by
689
- // ReturnStatementAST
690
- std::size_t op;
691
- // identifier for 'goto' statements
692
- std::size_t identifier;
693
- };
694
-
695
- struct ReturnStatementAST: public StatementAST
696
- {
697
- DECLARE_AST_NODE(ReturnStatement)
698
-
699
- ExpressionAST *expression;
700
- };
701
-
702
- struct SimpleDeclarationAST: public DeclarationAST
703
- {
704
- DECLARE_AST_NODE(SimpleDeclaration)
705
-
706
- const ListNode<std::size_t> *storage_specifiers;
707
- const ListNode<std::size_t> *function_specifiers;
708
- TypeSpecifierAST *type_specifier;
709
- const ListNode<InitDeclaratorAST*> *init_declarators;
710
- WinDeclSpecAST *win_decl_specifiers;
711
- };
712
-
713
- struct SimpleTypeSpecifierAST: public TypeSpecifierAST
714
- {
715
- DECLARE_AST_NODE(SimpleTypeSpecifier)
716
-
717
- const ListNode<std::size_t> *integrals;
718
- std::size_t type_of;
719
- TypeIdAST *type_id;
720
- ExpressionAST *expression;
721
- NameAST *name;
722
- };
723
-
724
- struct SizeofExpressionAST: public ExpressionAST
725
- {
726
- DECLARE_AST_NODE(SizeofExpression)
727
-
728
- std::size_t sizeof_token;
729
- TypeIdAST *type_id;
730
- ExpressionAST *expression;
731
- };
732
-
733
- struct StringLiteralAST: public AST
734
- {
735
- DECLARE_AST_NODE(StringLiteral)
736
-
737
- const ListNode<std::size_t> *literals;
738
- };
739
-
740
- /// operator []
741
- struct SubscriptExpressionAST: public ExpressionAST
742
- {
743
- DECLARE_AST_NODE(SubscriptExpression)
744
-
745
- ExpressionAST *subscript;
746
- };
747
-
748
- struct SwitchStatementAST: public StatementAST
749
- {
750
- DECLARE_AST_NODE(SwitchStatement)
751
-
752
- ConditionAST *condition;
753
- StatementAST *statement;
754
- };
755
-
756
- struct TemplateArgumentAST: public AST
757
- {
758
- DECLARE_AST_NODE(TemplateArgument)
759
-
760
- TypeIdAST *type_id;
761
- ExpressionAST *expression;
762
- };
763
-
764
- struct TemplateDeclarationAST: public DeclarationAST
765
- {
766
- DECLARE_AST_NODE(TemplateDeclaration)
767
-
768
- std::size_t exported;
769
- const ListNode<TemplateParameterAST*> *template_parameters;
770
- DeclarationAST* declaration;
771
- };
772
-
773
- struct TemplateParameterAST: public AST
774
- {
775
- DECLARE_AST_NODE(TemplateParameter)
776
-
777
- TypeParameterAST *type_parameter; //This is used if this is a template-parameter like "class A"
778
- ParameterDeclarationAST *parameter_declaration; //This is used if this is a template-parameter like "int a"
779
- };
780
-
781
- struct ThrowExpressionAST: public ExpressionAST
782
- {
783
- DECLARE_AST_NODE(ThrowExpression)
784
-
785
- std::size_t throw_token;
786
- ExpressionAST *expression;
787
- };
788
-
789
- struct TranslationUnitAST: public AST, public CommentAST
790
- {
791
- DECLARE_AST_NODE(TranslationUnit)
792
-
793
- const ListNode<DeclarationAST*> *declarations;
794
-
795
- ///true if either a '}' was missing at the end, or there was a '}' too much.
796
- ///This indicates a temporary state where the user is typing, and the document is completely invalid.
797
- bool hadMissingCompoundTokens;
798
-
799
- // Note: non AST related, saves parsing session...
800
- ParseSession* session;
801
- };
802
-
803
- struct TryBlockStatementAST: public StatementAST
804
- {
805
- DECLARE_AST_NODE(TryBlockStatement)
806
-
807
- StatementAST* try_block;
808
- const ListNode<CatchStatementAST*> *catch_blocks;
809
- };
810
-
811
- struct CatchStatementAST: public StatementAST
812
- {
813
- DECLARE_AST_NODE(CatchStatement)
814
-
815
- ConditionAST* condition;
816
- StatementAST* statement;
817
- };
818
-
819
- struct TypeIdAST: public AST
820
- {
821
- DECLARE_AST_NODE(TypeId)
822
-
823
- TypeSpecifierAST *type_specifier;
824
- DeclaratorAST *declarator;
825
- };
826
-
827
- ///"typename"
828
- struct TypeIdentificationAST: public ExpressionAST
829
- {
830
- DECLARE_AST_NODE(TypeIdentification)
831
-
832
- std::size_t typename_token;
833
- NameAST *name;
834
- ExpressionAST *expression;
835
- };
836
-
837
- struct TypeParameterAST: public AST
838
- {
839
- DECLARE_AST_NODE(TypeParameter)
840
-
841
- std::size_t type;
842
- NameAST *name;
843
- TypeIdAST *type_id;
844
- const ListNode<TemplateParameterAST*> *template_parameters;
845
- NameAST *template_name;
846
- };
847
-
848
- struct TypedefAST: public DeclarationAST
849
- {
850
- DECLARE_AST_NODE(Typedef)
851
-
852
- TypeSpecifierAST *type_specifier;
853
- const ListNode<InitDeclaratorAST*> *init_declarators;
854
- };
855
-
856
- struct UnaryExpressionAST: public ExpressionAST
857
- {
858
- DECLARE_AST_NODE(UnaryExpression)
859
-
860
- std::size_t op; //Index of the token that describes the operator
861
- ExpressionAST *expression;
862
- };
863
-
864
- struct UnqualifiedNameAST: public AST
865
- {
866
- DECLARE_AST_NODE(UnqualifiedName)
867
-
868
- std::size_t tilde;
869
- std::size_t id;
870
- OperatorFunctionIdAST *operator_id;
871
- const ListNode<TemplateArgumentAST*> *template_arguments;
872
- };
873
-
874
- struct UsingAST: public DeclarationAST
875
- {
876
- DECLARE_AST_NODE(Using)
877
-
878
- std::size_t type_name;
879
- NameAST *name;
880
- };
881
-
882
- struct UsingDirectiveAST: public DeclarationAST
883
- {
884
- DECLARE_AST_NODE(UsingDirective)
885
-
886
- NameAST *name;
887
- };
888
-
889
- struct WhileStatementAST: public StatementAST
890
- {
891
- DECLARE_AST_NODE(WhileStatement)
892
-
893
- ConditionAST *condition;
894
- StatementAST *statement;
895
- };
896
-
897
- struct WinDeclSpecAST: public AST
898
- {
899
- DECLARE_AST_NODE(WinDeclSpec)
900
-
901
- std::size_t specifier;
902
- std::size_t modifier;
903
- };
904
-
905
- template <class _Tp>
906
- _Tp *CreateNode(pool *memory_pool)
907
- {
908
- _Tp *node = reinterpret_cast<_Tp*>(memory_pool->allocate(sizeof(_Tp)));
909
- node->kind = _Tp::__node_kind;
910
- return node;
911
- }
912
-
913
- template <class _Tp>
914
- _Tp ast_cast(AST *item)
915
- {
916
- if (item && static_cast<_Tp>(0)->__node_kind == item->kind)
917
- return static_cast<_Tp>(item);
918
-
919
- return 0;
920
- }
921
-
922
- #endif // AST_H
923
-
1
+ /* This file is part of KDevelop
2
+ Copyright 2002-2005 Roberto Raggi <roberto@kdevelop.org>
3
+
4
+ This library is free software; you can redistribute it and/or
5
+ modify it under the terms of the GNU Library General Public
6
+ License version 2 as published by the Free Software Foundation.
7
+
8
+ This library is distributed in the hope that it will be useful,
9
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11
+ Library General Public License for more details.
12
+
13
+ You should have received a copy of the GNU Library General Public License
14
+ along with this library; see the file COPYING.LIB. If not, write to
15
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
16
+ Boston, MA 02110-1301, USA.
17
+ */
18
+
19
+ #ifndef AST_H
20
+ #define AST_H
21
+
22
+ #include "memorypool.h"
23
+ #include "listnode.h"
24
+
25
+ #define DECLARE_AST_NODE(k) \
26
+ enum { __node_kind = Kind_##k };
27
+
28
+ class ParseSession;
29
+ struct AccessSpecifierAST;
30
+ struct AsmDefinitionAST;
31
+ struct BaseClauseAST;
32
+ struct BaseSpecifierAST;
33
+ struct BinaryExpressionAST;
34
+ struct CastExpressionAST;
35
+ struct ClassMemberAccessAST;
36
+ struct ClassSpecifierAST;
37
+ struct CompoundStatementAST;
38
+ struct ConditionAST;
39
+ struct ConditionalExpressionAST;
40
+ struct CppCastExpressionAST;
41
+ struct CtorInitializerAST;
42
+ struct DeclarationAST;
43
+ struct DeclarationStatementAST;
44
+ struct DeclaratorAST;
45
+ struct DeleteExpressionAST;
46
+ struct DoStatementAST;
47
+ struct Elaborated;
48
+ struct EnumSpecifierAST;
49
+ struct EnumeratorAST;
50
+ struct ExceptionSpecificationAST;
51
+ struct ExpressionAST;
52
+ struct ExpressionOrDeclarationStatementAST;
53
+ struct ExpressionStatementAST;
54
+ struct ForStatementAST;
55
+ struct FunctionCallAST;
56
+ struct FunctionDefinitionAST;
57
+ struct IfStatementAST;
58
+ struct IncrDecrExpressionAST;
59
+ struct InitDeclaratorAST;
60
+ struct InitializerAST;
61
+ struct InitializerClauseAST;
62
+ struct LabeledStatementAST;
63
+ struct LinkageBodyAST;
64
+ struct LinkageSpecificationAST;
65
+ struct MemInitializerAST;
66
+ struct NameAST;
67
+ struct NamespaceAST;
68
+ struct NamespaceAliasDefinitionAST;
69
+ struct NewDeclaratorAST;
70
+ struct NewExpressionAST;
71
+ struct NewInitializerAST;
72
+ struct NewTypeIdAST;
73
+ struct OperatorAST;
74
+ struct OperatorFunctionIdAST;
75
+ struct ParameterDeclarationAST;
76
+ struct ParameterDeclarationClauseAST;
77
+ struct PostfixExpressionAST;
78
+ struct PrimaryExpressionAST;
79
+ struct PtrOperatorAST;
80
+ struct PtrToMemberAST;
81
+ struct ReturnStatementAST;
82
+ struct SimpleDeclarationAST;
83
+ struct SimpleTypeSpecifierAST;
84
+ struct SizeofExpressionAST;
85
+ struct StatementAST;
86
+ struct StringLiteralAST;
87
+ struct SubscriptExpressionAST;
88
+ struct SwitchStatementAST;
89
+ struct TemplateArgumentAST;
90
+ struct TemplateDeclarationAST;
91
+ struct TemplateParameterAST;
92
+ struct ThrowExpressionAST;
93
+ struct TranslationUnitAST;
94
+ struct TryBlockStatementAST;
95
+ struct CatchStatementAST;
96
+ struct TypeIdAST;
97
+ struct TypeIdentificationAST;
98
+ struct TypeParameterAST;
99
+ struct TypeSpecifierAST;
100
+ struct TypedefAST;
101
+ struct UnaryExpressionAST;
102
+ struct UnqualifiedNameAST;
103
+ struct UsingAST;
104
+ struct UsingDirectiveAST;
105
+ struct WhileStatementAST;
106
+ struct WinDeclSpecAST;
107
+
108
+ struct AST
109
+ {///@warning When adding new nodes here, also modify the names[] array in dumptree.cpp
110
+ enum NODE_KIND
111
+ {
112
+ Kind_UNKNOWN = 0,
113
+
114
+ Kind_AccessSpecifier, // 1
115
+ Kind_AsmDefinition, // 2
116
+ Kind_BaseClause, // 3
117
+ Kind_BaseSpecifier, // 4
118
+ Kind_BinaryExpression, // 5
119
+ Kind_CastExpression, // 6
120
+ Kind_ClassMemberAccess, // 7
121
+ Kind_ClassSpecifier, // 8
122
+ Kind_CompoundStatement, // 9
123
+ Kind_Condition, // 10
124
+ Kind_ConditionalExpression, // 11
125
+ Kind_CppCastExpression, // 12
126
+ Kind_CtorInitializer, // 13
127
+ Kind_DeclarationStatement, // 14
128
+ Kind_Declarator, // 15
129
+ Kind_DeleteExpression, // 16
130
+ Kind_DoStatement, // 17
131
+ Kind_ElaboratedTypeSpecifier, // 18
132
+ Kind_EnumSpecifier, // 19
133
+ Kind_Enumerator, // 20
134
+ Kind_ExceptionSpecification, // 21
135
+ Kind_ExpressionOrDeclarationStatement, // 22
136
+ Kind_ExpressionStatement, // 23
137
+ Kind_ForStatement, // 24
138
+ Kind_FunctionCall, // 25
139
+ Kind_FunctionDefinition, // 26
140
+ Kind_IfStatement, // 27
141
+ Kind_IncrDecrExpression, // 28
142
+ Kind_InitDeclarator, // 29
143
+ Kind_Initializer, // 30
144
+ Kind_InitializerClause, // 31
145
+ Kind_LabeledStatement, // 32
146
+ Kind_LinkageBody, // 33
147
+ Kind_LinkageSpecification, // 34
148
+ Kind_MemInitializer, // 35
149
+ Kind_Name, // 36
150
+ Kind_Namespace, // 37
151
+ Kind_NamespaceAliasDefinition, // 38
152
+ Kind_NewDeclarator, // 39
153
+ Kind_NewExpression, // 40
154
+ Kind_NewInitializer, // 41
155
+ Kind_NewTypeId, // 42
156
+ Kind_Operator, // 43
157
+ Kind_OperatorFunctionId, // 44
158
+ Kind_ParameterDeclaration, // 45
159
+ Kind_ParameterDeclarationClause, // 46
160
+ Kind_PostfixExpression, // 47
161
+ Kind_PrimaryExpression, // 48
162
+ Kind_PtrOperator, // 49
163
+ Kind_PtrToMember, // 50
164
+ Kind_ReturnStatement, // 51
165
+ Kind_SimpleDeclaration, // 52
166
+ Kind_SimpleTypeSpecifier, // 53
167
+ Kind_SizeofExpression, // 54
168
+ Kind_StringLiteral, // 55
169
+ Kind_SubscriptExpression, // 56
170
+ Kind_SwitchStatement, // 57
171
+ Kind_TemplateArgument, // 58
172
+ Kind_TemplateDeclaration, // 59
173
+ Kind_TemplateParameter, // 60
174
+ Kind_ThrowExpression, // 61
175
+ Kind_TranslationUnit, // 62
176
+ Kind_TryBlockStatement, // 63
177
+ Kind_CatchStatement, // 64
178
+ Kind_TypeId, // 65
179
+ Kind_TypeIdentification, // 66
180
+ Kind_TypeParameter, // 67
181
+ Kind_Typedef, // 68
182
+ Kind_UnaryExpression, // 69
183
+ Kind_UnqualifiedName, // 70
184
+ Kind_Using, // 71
185
+ Kind_UsingDirective, // 72
186
+ Kind_WhileStatement, // 73
187
+ Kind_WinDeclSpec, // 74
188
+ Kind_Comment, // 75
189
+ Kind_JumpStatement, // 76
190
+ Kind_SignalSlotExpression, // 77
191
+ NODE_KIND_COUNT
192
+ };
193
+
194
+ int kind;
195
+
196
+ std::size_t start_token;
197
+ std::size_t end_token;
198
+ };
199
+
200
+ struct CommentAST {
201
+ const ListNode<std::size_t> *comments; //A list of comment-tokens
202
+ };
203
+
204
+ struct TypeSpecifierAST: public AST
205
+ {
206
+ const ListNode<std::size_t> *cv; // const or volatile tokens
207
+ };
208
+
209
+ struct StatementAST: public AST
210
+ {
211
+ };
212
+
213
+ struct ExpressionAST: public AST
214
+ {
215
+ };
216
+
217
+ struct DeclarationAST: public AST, public CommentAST
218
+ {
219
+ };
220
+
221
+ struct AccessSpecifierAST: public DeclarationAST
222
+ {
223
+ DECLARE_AST_NODE(AccessSpecifier)
224
+
225
+ const ListNode<std::size_t> *specs;
226
+ };
227
+
228
+ struct AsmDefinitionAST: public DeclarationAST
229
+ {
230
+ DECLARE_AST_NODE(AsmDefinition)
231
+
232
+ const ListNode<std::size_t> *cv;
233
+ };
234
+
235
+ struct BaseClauseAST: public AST // ### kill me
236
+ {
237
+ DECLARE_AST_NODE(BaseClause)
238
+
239
+ const ListNode<BaseSpecifierAST*> *base_specifiers;
240
+ };
241
+
242
+ struct BaseSpecifierAST: public AST
243
+ {
244
+ DECLARE_AST_NODE(BaseSpecifier)
245
+
246
+ std::size_t virt;
247
+ std::size_t access_specifier;
248
+ NameAST *name;
249
+ };
250
+
251
+ struct BinaryExpressionAST: public ExpressionAST
252
+ {
253
+ DECLARE_AST_NODE(BinaryExpression)
254
+
255
+ std::size_t op; //Index of the token that describes the operator
256
+ ExpressionAST *left_expression;
257
+ ExpressionAST *right_expression;
258
+ };
259
+
260
+ ///An expression used to do more detailed processing of SIGNAL(..) and SLOT(..) specifications
261
+ struct SignalSlotExpressionAST : public ExpressionAST {
262
+ DECLARE_AST_NODE(SignalSlotExpression)
263
+ //The unqualified name also contains the argument types in its template-arguments
264
+ UnqualifiedNameAST *name;
265
+ };
266
+
267
+ struct CastExpressionAST: public ExpressionAST
268
+ {
269
+ DECLARE_AST_NODE(CastExpression)
270
+
271
+ TypeIdAST *type_id;
272
+ ExpressionAST *expression;
273
+ };
274
+
275
+ struct ClassMemberAccessAST: public ExpressionAST
276
+ {
277
+ DECLARE_AST_NODE(ClassMemberAccess)
278
+
279
+ std::size_t op; //Index of the token that describes the operator
280
+ NameAST *name;
281
+ };
282
+
283
+ struct ClassSpecifierAST: public TypeSpecifierAST
284
+ {
285
+ DECLARE_AST_NODE(ClassSpecifier)
286
+
287
+ WinDeclSpecAST *win_decl_specifiers;
288
+ std::size_t class_key;
289
+ NameAST *name;
290
+ BaseClauseAST *base_clause;
291
+ const ListNode<DeclarationAST*> *member_specs;
292
+ };
293
+
294
+ struct CompoundStatementAST: public StatementAST
295
+ {
296
+ DECLARE_AST_NODE(CompoundStatement)
297
+
298
+ const ListNode<StatementAST*> *statements;
299
+ };
300
+
301
+ struct ConditionAST: public AST
302
+ {
303
+ DECLARE_AST_NODE(Condition)
304
+
305
+ TypeSpecifierAST *type_specifier;
306
+ DeclaratorAST *declarator;
307
+ ExpressionAST *expression;
308
+ };
309
+
310
+ struct ConditionalExpressionAST: public ExpressionAST
311
+ {
312
+ DECLARE_AST_NODE(ConditionalExpression)
313
+
314
+ ExpressionAST *condition;
315
+ ExpressionAST *left_expression;
316
+ ExpressionAST *right_expression;
317
+ };
318
+
319
+ /**
320
+ * type_id is the type that should be casted to
321
+ * expression is the expression casted from
322
+ * sub_expressions is a list of post-fix expressions, see PostfixExpressionAST
323
+ */
324
+ struct CppCastExpressionAST: public ExpressionAST
325
+ {
326
+ DECLARE_AST_NODE(CppCastExpression)
327
+
328
+ std::size_t op; //Index of the token that describes the operator
329
+ TypeIdAST *type_id;
330
+ ExpressionAST *expression;
331
+ const ListNode<ExpressionAST*> *sub_expressions;
332
+ };
333
+
334
+ struct CtorInitializerAST: public AST
335
+ {
336
+ DECLARE_AST_NODE(CtorInitializer)
337
+
338
+ std::size_t colon;
339
+ const ListNode<MemInitializerAST*> *member_initializers;
340
+ };
341
+
342
+ struct DeclarationStatementAST: public StatementAST
343
+ {
344
+ DECLARE_AST_NODE(DeclarationStatement)
345
+
346
+ DeclarationAST *declaration;
347
+ };
348
+
349
+ struct DeclaratorAST: public AST
350
+ {
351
+ DECLARE_AST_NODE(Declarator)
352
+
353
+ const ListNode<PtrOperatorAST*> *ptr_ops;
354
+ DeclaratorAST *sub_declarator;
355
+ NameAST *id;
356
+ ExpressionAST *bit_expression;
357
+ const ListNode<ExpressionAST*> *array_dimensions;
358
+
359
+ bool parameter_is_initializer; //Used by the declaration-builder to mark a parameter-declaration clause as a mis-parsed initializer
360
+ ParameterDeclarationClauseAST *parameter_declaration_clause;
361
+ const ListNode<std::size_t> *fun_cv;
362
+ ExceptionSpecificationAST *exception_spec;
363
+ };
364
+
365
+ struct DeleteExpressionAST: public ExpressionAST
366
+ {
367
+ DECLARE_AST_NODE(DeleteExpression)
368
+
369
+ std::size_t scope_token;
370
+ std::size_t delete_token;
371
+ std::size_t lbracket_token;
372
+ std::size_t rbracket_token;
373
+ ExpressionAST *expression;
374
+ };
375
+
376
+ struct DoStatementAST: public StatementAST
377
+ {
378
+ DECLARE_AST_NODE(DoStatement)
379
+
380
+ StatementAST *statement;
381
+ ExpressionAST *expression;
382
+ };
383
+
384
+ struct ElaboratedTypeSpecifierAST: public TypeSpecifierAST
385
+ {
386
+ DECLARE_AST_NODE(ElaboratedTypeSpecifier)
387
+
388
+ std::size_t type;
389
+ NameAST *name;
390
+ };
391
+
392
+ struct EnumSpecifierAST: public TypeSpecifierAST
393
+ {
394
+ DECLARE_AST_NODE(EnumSpecifier)
395
+
396
+ NameAST *name;
397
+ const ListNode<EnumeratorAST*> *enumerators;
398
+ };
399
+
400
+ struct EnumeratorAST: public AST, public CommentAST
401
+ {
402
+ DECLARE_AST_NODE(Enumerator)
403
+
404
+ std::size_t id;
405
+ ExpressionAST *expression;
406
+ };
407
+
408
+ struct ExceptionSpecificationAST: public AST
409
+ {
410
+ DECLARE_AST_NODE(ExceptionSpecification)
411
+
412
+ std::size_t ellipsis;
413
+ const ListNode<TypeIdAST*> *type_ids;
414
+ };
415
+
416
+ struct ExpressionOrDeclarationStatementAST: public StatementAST
417
+ {
418
+ DECLARE_AST_NODE(ExpressionOrDeclarationStatement)
419
+
420
+ StatementAST *expression;
421
+ StatementAST *declaration;
422
+
423
+ // This was not originally part of the AST - added by the context visitor
424
+ bool expressionChosen;
425
+ };
426
+
427
+ ///An expression terminated by a semicolon or similar
428
+ struct ExpressionStatementAST: public StatementAST
429
+ {
430
+ DECLARE_AST_NODE(ExpressionStatement)
431
+
432
+ ExpressionAST *expression;
433
+ };
434
+
435
+ struct FunctionCallAST: public ExpressionAST
436
+ {
437
+ DECLARE_AST_NODE(FunctionCall)
438
+
439
+ ExpressionAST *arguments;
440
+ };
441
+
442
+ struct FunctionDefinitionAST: public DeclarationAST
443
+ {
444
+ DECLARE_AST_NODE(FunctionDefinition)
445
+
446
+ const ListNode<std::size_t> *storage_specifiers;
447
+ const ListNode<std::size_t> *function_specifiers;
448
+ TypeSpecifierAST *type_specifier;
449
+ InitDeclaratorAST *init_declarator;
450
+ StatementAST *function_body;
451
+ WinDeclSpecAST *win_decl_specifiers;
452
+ CtorInitializerAST *constructor_initializers;
453
+ };
454
+
455
+ struct ForStatementAST: public StatementAST
456
+ {
457
+ DECLARE_AST_NODE(ForStatement)
458
+
459
+ StatementAST *init_statement;
460
+ ConditionAST *condition;
461
+ ExpressionAST *expression;
462
+ StatementAST *statement;
463
+ };
464
+
465
+ struct IfStatementAST: public StatementAST
466
+ {
467
+ DECLARE_AST_NODE(IfStatement)
468
+
469
+ ConditionAST *condition;
470
+ StatementAST *statement;
471
+ StatementAST *else_statement;
472
+ };
473
+
474
+ struct IncrDecrExpressionAST: public ExpressionAST
475
+ {
476
+ DECLARE_AST_NODE(IncrDecrExpression)
477
+
478
+ std::size_t op; //Index of the token that describes the operator
479
+ };
480
+
481
+ struct InitDeclaratorAST: public AST
482
+ {
483
+ DECLARE_AST_NODE(InitDeclarator)
484
+
485
+ DeclaratorAST *declarator;
486
+ InitializerAST *initializer;
487
+ };
488
+
489
+ struct InitializerAST: public AST
490
+ {
491
+ DECLARE_AST_NODE(Initializer)
492
+
493
+ InitializerClauseAST *initializer_clause;
494
+ ExpressionAST *expression;
495
+ };
496
+
497
+ struct InitializerClauseAST: public AST
498
+ {
499
+ DECLARE_AST_NODE(InitializerClause)
500
+
501
+ // either 'expression' or 'initializer_list' or neither are used.
502
+ // neither are used when the clause represents the empty initializer "{}"
503
+
504
+ // assignment expression
505
+ ExpressionAST *expression;
506
+ const ListNode<InitializerClauseAST*> *initializer_list;
507
+ };
508
+
509
+ struct LabeledStatementAST: public StatementAST
510
+ {
511
+ DECLARE_AST_NODE(LabeledStatement)
512
+
513
+ std::size_t label;
514
+ //The constant label expression
515
+ ExpressionAST *expression;
516
+ StatementAST* statement;
517
+ };
518
+
519
+ struct LinkageBodyAST: public AST
520
+ {
521
+ DECLARE_AST_NODE(LinkageBody)
522
+
523
+ const ListNode<DeclarationAST*> *declarations;
524
+ };
525
+
526
+ struct LinkageSpecificationAST: public DeclarationAST
527
+ {
528
+ DECLARE_AST_NODE(LinkageSpecification)
529
+
530
+ std::size_t extern_type;
531
+ LinkageBodyAST *linkage_body;
532
+ DeclarationAST *declaration;
533
+ };
534
+
535
+ struct MemInitializerAST: public AST
536
+ {
537
+ DECLARE_AST_NODE(MemInitializer)
538
+
539
+ NameAST *initializer_id;
540
+ ExpressionAST *expression;
541
+ };
542
+
543
+ struct NameAST: public AST
544
+ {
545
+ DECLARE_AST_NODE(Name)
546
+
547
+ bool global;
548
+ const ListNode<UnqualifiedNameAST*> *qualified_names;
549
+ UnqualifiedNameAST *unqualified_name;
550
+ };
551
+
552
+ struct NamespaceAST: public DeclarationAST
553
+ {
554
+ DECLARE_AST_NODE(Namespace)
555
+
556
+ std::size_t namespace_name;
557
+ LinkageBodyAST *linkage_body;
558
+ };
559
+
560
+ struct NamespaceAliasDefinitionAST: public DeclarationAST
561
+ {
562
+ DECLARE_AST_NODE(NamespaceAliasDefinition)
563
+
564
+ std::size_t namespace_name;
565
+ NameAST *alias_name;
566
+ };
567
+
568
+ struct NewDeclaratorAST: public AST
569
+ {
570
+ DECLARE_AST_NODE(NewDeclarator)
571
+
572
+ PtrOperatorAST *ptr_op;
573
+ NewDeclaratorAST *sub_declarator;
574
+ const ListNode<ExpressionAST*> *expressions;
575
+ };
576
+
577
+ struct NewExpressionAST: public ExpressionAST
578
+ {
579
+ DECLARE_AST_NODE(NewExpression)
580
+
581
+ std::size_t scope_token;
582
+ std::size_t new_token;
583
+ ExpressionAST *expression;
584
+ TypeIdAST *type_id;
585
+ NewTypeIdAST *new_type_id;
586
+ NewInitializerAST *new_initializer;
587
+ };
588
+
589
+ struct NewInitializerAST: public AST
590
+ {
591
+ DECLARE_AST_NODE(NewInitializer)
592
+
593
+ ExpressionAST *expression;
594
+ };
595
+
596
+ struct NewTypeIdAST: public AST
597
+ {
598
+ DECLARE_AST_NODE(NewTypeId)
599
+
600
+ TypeSpecifierAST *type_specifier;
601
+ NewInitializerAST *new_initializer;
602
+ NewDeclaratorAST *new_declarator;
603
+ };
604
+
605
+ struct OperatorAST: public AST
606
+ {
607
+ DECLARE_AST_NODE(Operator)
608
+
609
+ std::size_t op; //Index of the token that describes the operator
610
+ std::size_t open;
611
+ std::size_t close;
612
+ };
613
+
614
+ struct OperatorFunctionIdAST: public AST
615
+ {
616
+ DECLARE_AST_NODE(OperatorFunctionId)
617
+
618
+ OperatorAST *op;
619
+ TypeSpecifierAST *type_specifier;
620
+ const ListNode<PtrOperatorAST*> *ptr_ops;
621
+ };
622
+
623
+ struct ParameterDeclarationAST: public AST
624
+ {
625
+ DECLARE_AST_NODE(ParameterDeclaration)
626
+
627
+ TypeSpecifierAST *type_specifier;
628
+ DeclaratorAST *declarator;
629
+ ExpressionAST *expression;
630
+ };
631
+
632
+ struct ParameterDeclarationClauseAST: public AST
633
+ {
634
+ DECLARE_AST_NODE(ParameterDeclarationClause)
635
+
636
+ const ListNode<ParameterDeclarationAST*> *parameter_declarations;
637
+ std::size_t ellipsis;
638
+ };
639
+
640
+ /**
641
+ * A post-fix expression is an expression that consists of one primary expression and multiple sub-expressions that are evaluated from
642
+ * left to right, each sub-expression based on the previous expression.
643
+ *
644
+ *
645
+ * Examples:
646
+ * "a->b" : "a" is the primary expression, "->b" is a sub-expression
647
+ * "a->b(5,3)" : "a" is the primary expression, "->b" is a sub-expression, and "(5,3)" is a sub-expression
648
+ **/
649
+ struct PostfixExpressionAST: public ExpressionAST
650
+ {
651
+ DECLARE_AST_NODE(PostfixExpression)
652
+
653
+ TypeSpecifierAST *type_specifier;
654
+ ExpressionAST *expression;
655
+ const ListNode<ExpressionAST*> *sub_expressions;
656
+ };
657
+
658
+ struct PrimaryExpressionAST: public ExpressionAST
659
+ {
660
+ DECLARE_AST_NODE(PrimaryExpression)
661
+
662
+ StringLiteralAST *literal;
663
+ std::size_t token;
664
+ StatementAST *expression_statement;
665
+ ExpressionAST *sub_expression;
666
+ NameAST *name;
667
+ };
668
+
669
+ struct PtrOperatorAST: public AST
670
+ {
671
+ DECLARE_AST_NODE(PtrOperator)
672
+
673
+ const ListNode<std::size_t> *cv;
674
+ std::size_t op; //Index of the token that describes the operator. Is zero when mem_ptr is non-zero.
675
+ PtrToMemberAST *mem_ptr;
676
+ };
677
+
678
+ struct PtrToMemberAST: public AST
679
+ {
680
+ DECLARE_AST_NODE(PtrToMember)
681
+ };
682
+
683
+ struct JumpStatementAST : public StatementAST
684
+ {
685
+ DECLARE_AST_NODE(JumpStatement)
686
+
687
+ // index of operator token which describes the jump, one of
688
+ // 'break', 'continue' or 'goto. Return statements are handled by
689
+ // ReturnStatementAST
690
+ std::size_t op;
691
+ // identifier for 'goto' statements
692
+ std::size_t identifier;
693
+ };
694
+
695
+ struct ReturnStatementAST: public StatementAST
696
+ {
697
+ DECLARE_AST_NODE(ReturnStatement)
698
+
699
+ ExpressionAST *expression;
700
+ };
701
+
702
+ struct SimpleDeclarationAST: public DeclarationAST
703
+ {
704
+ DECLARE_AST_NODE(SimpleDeclaration)
705
+
706
+ const ListNode<std::size_t> *storage_specifiers;
707
+ const ListNode<std::size_t> *function_specifiers;
708
+ TypeSpecifierAST *type_specifier;
709
+ const ListNode<InitDeclaratorAST*> *init_declarators;
710
+ WinDeclSpecAST *win_decl_specifiers;
711
+ };
712
+
713
+ struct SimpleTypeSpecifierAST: public TypeSpecifierAST
714
+ {
715
+ DECLARE_AST_NODE(SimpleTypeSpecifier)
716
+
717
+ const ListNode<std::size_t> *integrals;
718
+ std::size_t type_of;
719
+ TypeIdAST *type_id;
720
+ ExpressionAST *expression;
721
+ NameAST *name;
722
+ };
723
+
724
+ struct SizeofExpressionAST: public ExpressionAST
725
+ {
726
+ DECLARE_AST_NODE(SizeofExpression)
727
+
728
+ std::size_t sizeof_token;
729
+ TypeIdAST *type_id;
730
+ ExpressionAST *expression;
731
+ };
732
+
733
+ struct StringLiteralAST: public AST
734
+ {
735
+ DECLARE_AST_NODE(StringLiteral)
736
+
737
+ const ListNode<std::size_t> *literals;
738
+ };
739
+
740
+ /// operator []
741
+ struct SubscriptExpressionAST: public ExpressionAST
742
+ {
743
+ DECLARE_AST_NODE(SubscriptExpression)
744
+
745
+ ExpressionAST *subscript;
746
+ };
747
+
748
+ struct SwitchStatementAST: public StatementAST
749
+ {
750
+ DECLARE_AST_NODE(SwitchStatement)
751
+
752
+ ConditionAST *condition;
753
+ StatementAST *statement;
754
+ };
755
+
756
+ struct TemplateArgumentAST: public AST
757
+ {
758
+ DECLARE_AST_NODE(TemplateArgument)
759
+
760
+ TypeIdAST *type_id;
761
+ ExpressionAST *expression;
762
+ };
763
+
764
+ struct TemplateDeclarationAST: public DeclarationAST
765
+ {
766
+ DECLARE_AST_NODE(TemplateDeclaration)
767
+
768
+ std::size_t exported;
769
+ const ListNode<TemplateParameterAST*> *template_parameters;
770
+ DeclarationAST* declaration;
771
+ };
772
+
773
+ struct TemplateParameterAST: public AST
774
+ {
775
+ DECLARE_AST_NODE(TemplateParameter)
776
+
777
+ TypeParameterAST *type_parameter; //This is used if this is a template-parameter like "class A"
778
+ ParameterDeclarationAST *parameter_declaration; //This is used if this is a template-parameter like "int a"
779
+ };
780
+
781
+ struct ThrowExpressionAST: public ExpressionAST
782
+ {
783
+ DECLARE_AST_NODE(ThrowExpression)
784
+
785
+ std::size_t throw_token;
786
+ ExpressionAST *expression;
787
+ };
788
+
789
+ struct TranslationUnitAST: public AST, public CommentAST
790
+ {
791
+ DECLARE_AST_NODE(TranslationUnit)
792
+
793
+ const ListNode<DeclarationAST*> *declarations;
794
+
795
+ ///true if either a '}' was missing at the end, or there was a '}' too much.
796
+ ///This indicates a temporary state where the user is typing, and the document is completely invalid.
797
+ bool hadMissingCompoundTokens;
798
+
799
+ // Note: non AST related, saves parsing session...
800
+ ParseSession* session;
801
+ };
802
+
803
+ struct TryBlockStatementAST: public StatementAST
804
+ {
805
+ DECLARE_AST_NODE(TryBlockStatement)
806
+
807
+ StatementAST* try_block;
808
+ const ListNode<CatchStatementAST*> *catch_blocks;
809
+ };
810
+
811
+ struct CatchStatementAST: public StatementAST
812
+ {
813
+ DECLARE_AST_NODE(CatchStatement)
814
+
815
+ ConditionAST* condition;
816
+ StatementAST* statement;
817
+ };
818
+
819
+ struct TypeIdAST: public AST
820
+ {
821
+ DECLARE_AST_NODE(TypeId)
822
+
823
+ TypeSpecifierAST *type_specifier;
824
+ DeclaratorAST *declarator;
825
+ };
826
+
827
+ ///"typename"
828
+ struct TypeIdentificationAST: public ExpressionAST
829
+ {
830
+ DECLARE_AST_NODE(TypeIdentification)
831
+
832
+ std::size_t typename_token;
833
+ NameAST *name;
834
+ ExpressionAST *expression;
835
+ };
836
+
837
+ struct TypeParameterAST: public AST
838
+ {
839
+ DECLARE_AST_NODE(TypeParameter)
840
+
841
+ std::size_t type;
842
+ NameAST *name;
843
+ TypeIdAST *type_id;
844
+ const ListNode<TemplateParameterAST*> *template_parameters;
845
+ NameAST *template_name;
846
+ };
847
+
848
+ struct TypedefAST: public DeclarationAST
849
+ {
850
+ DECLARE_AST_NODE(Typedef)
851
+
852
+ TypeSpecifierAST *type_specifier;
853
+ const ListNode<InitDeclaratorAST*> *init_declarators;
854
+ };
855
+
856
+ struct UnaryExpressionAST: public ExpressionAST
857
+ {
858
+ DECLARE_AST_NODE(UnaryExpression)
859
+
860
+ std::size_t op; //Index of the token that describes the operator
861
+ ExpressionAST *expression;
862
+ };
863
+
864
+ struct UnqualifiedNameAST: public AST
865
+ {
866
+ DECLARE_AST_NODE(UnqualifiedName)
867
+
868
+ std::size_t tilde;
869
+ std::size_t id;
870
+ OperatorFunctionIdAST *operator_id;
871
+ const ListNode<TemplateArgumentAST*> *template_arguments;
872
+ };
873
+
874
+ struct UsingAST: public DeclarationAST
875
+ {
876
+ DECLARE_AST_NODE(Using)
877
+
878
+ std::size_t type_name;
879
+ NameAST *name;
880
+ };
881
+
882
+ struct UsingDirectiveAST: public DeclarationAST
883
+ {
884
+ DECLARE_AST_NODE(UsingDirective)
885
+
886
+ NameAST *name;
887
+ };
888
+
889
+ struct WhileStatementAST: public StatementAST
890
+ {
891
+ DECLARE_AST_NODE(WhileStatement)
892
+
893
+ ConditionAST *condition;
894
+ StatementAST *statement;
895
+ };
896
+
897
+ struct WinDeclSpecAST: public AST
898
+ {
899
+ DECLARE_AST_NODE(WinDeclSpec)
900
+
901
+ std::size_t specifier;
902
+ std::size_t modifier;
903
+ };
904
+
905
+ template <class _Tp>
906
+ _Tp *CreateNode(pool *memory_pool)
907
+ {
908
+ _Tp *node = reinterpret_cast<_Tp*>(memory_pool->allocate(sizeof(_Tp)));
909
+ node->kind = _Tp::__node_kind;
910
+ return node;
911
+ }
912
+
913
+ template <class _Tp>
914
+ _Tp ast_cast(AST *item)
915
+ {
916
+ if (item && static_cast<_Tp>(0)->__node_kind == item->kind)
917
+ return static_cast<_Tp>(item);
918
+
919
+ return 0;
920
+ }
921
+
922
+ #endif // AST_H
923
+