zeroc-ice 3.7.11 → 3.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (895) hide show
  1. checksums.yaml +4 -4
  2. data/dist/IceRuby/Communicator.cpp +159 -376
  3. data/dist/IceRuby/Communicator.h +8 -9
  4. data/dist/IceRuby/Config.h +23 -89
  5. data/dist/IceRuby/Connection.cpp +111 -219
  6. data/dist/IceRuby/Connection.h +8 -12
  7. data/dist/IceRuby/DefaultSliceLoader.cpp +45 -0
  8. data/dist/IceRuby/DefaultSliceLoader.h +25 -0
  9. data/dist/IceRuby/Endpoint.cpp +63 -65
  10. data/dist/IceRuby/Endpoint.h +7 -11
  11. data/dist/IceRuby/ImplicitContext.cpp +26 -31
  12. data/dist/IceRuby/ImplicitContext.h +6 -10
  13. data/dist/IceRuby/Init.cpp +27 -40
  14. data/dist/IceRuby/Logger.cpp +23 -28
  15. data/dist/IceRuby/Logger.h +8 -12
  16. data/dist/IceRuby/Operation.cpp +177 -219
  17. data/dist/IceRuby/Operation.h +15 -18
  18. data/dist/IceRuby/Properties.cpp +133 -89
  19. data/dist/IceRuby/Properties.h +6 -10
  20. data/dist/IceRuby/Proxy.cpp +179 -649
  21. data/dist/IceRuby/Proxy.h +11 -12
  22. data/dist/IceRuby/RubySliceLoader.cpp +39 -0
  23. data/dist/IceRuby/RubySliceLoader.h +27 -0
  24. data/dist/IceRuby/Slice.cpp +88 -94
  25. data/dist/IceRuby/Slice.h +3 -7
  26. data/dist/IceRuby/Types.cpp +987 -1190
  27. data/dist/IceRuby/Types.h +390 -461
  28. data/dist/IceRuby/Util.cpp +214 -473
  29. data/dist/IceRuby/Util.h +378 -479
  30. data/dist/ice/cpp/include/Ice/AsyncResponseHandler.h +85 -0
  31. data/dist/ice/cpp/include/Ice/BatchRequest.h +39 -0
  32. data/dist/ice/cpp/include/Ice/BatchRequestQueueF.h +4 -10
  33. data/dist/ice/cpp/include/Ice/Buffer.h +116 -111
  34. data/dist/ice/cpp/include/Ice/Communicator.h +411 -0
  35. data/dist/ice/cpp/include/Ice/CommunicatorF.h +16 -0
  36. data/dist/ice/cpp/include/Ice/Config.h +46 -62
  37. data/dist/ice/cpp/include/Ice/Connection.h +410 -0
  38. data/dist/ice/cpp/include/Ice/ConnectionF.h +36 -0
  39. data/dist/ice/cpp/include/Ice/ConnectionIF.h +6 -28
  40. data/dist/ice/cpp/include/Ice/CtrlCHandler.h +56 -0
  41. data/dist/ice/cpp/include/Ice/Current.h +60 -0
  42. data/dist/ice/cpp/include/Ice/DefaultSliceLoader.h +160 -0
  43. data/dist/ice/cpp/include/Ice/Demangle.h +17 -0
  44. data/dist/ice/cpp/include/Ice/Endpoint.h +298 -0
  45. data/dist/ice/cpp/include/Ice/EndpointF.h +44 -0
  46. data/dist/ice/cpp/include/Ice/EndpointSelectionType.h +21 -0
  47. data/dist/ice/cpp/include/Ice/Exception.h +46 -151
  48. data/dist/ice/cpp/include/Ice/FacetMap.h +16 -0
  49. data/dist/ice/cpp/include/Ice/Format.h +11 -27
  50. data/dist/ice/cpp/include/Ice/Ice.h +53 -48
  51. data/dist/ice/cpp/include/Ice/IconvStringConverter.h +165 -326
  52. data/dist/ice/cpp/include/Ice/ImplicitContext.h +76 -0
  53. data/dist/ice/cpp/include/Ice/IncomingRequest.h +75 -0
  54. data/dist/ice/cpp/include/Ice/Initialize.h +113 -927
  55. data/dist/ice/cpp/include/Ice/InputStream.h +748 -1320
  56. data/dist/ice/cpp/include/Ice/InstanceF.h +4 -10
  57. data/dist/ice/cpp/include/Ice/Instrumentation.h +319 -0
  58. data/dist/ice/cpp/include/Ice/LocalException.h +58 -0
  59. data/dist/ice/cpp/include/Ice/LocalExceptions.h +870 -0
  60. data/dist/ice/cpp/include/Ice/Logger.h +62 -0
  61. data/dist/ice/cpp/include/Ice/LoggerUtil.h +124 -147
  62. data/dist/ice/cpp/include/Ice/MarshaledResult.h +50 -0
  63. data/dist/ice/cpp/include/Ice/NativePropertiesAdmin.h +41 -71
  64. data/dist/ice/cpp/include/Ice/Object.h +151 -490
  65. data/dist/ice/cpp/include/Ice/ObjectAdapter.h +324 -0
  66. data/dist/ice/cpp/include/Ice/ObjectAdapterF.h +16 -0
  67. data/dist/ice/cpp/include/Ice/ObjectF.h +5 -19
  68. data/dist/ice/cpp/include/Ice/ObserverHelper.h +115 -132
  69. data/dist/ice/cpp/include/Ice/OutgoingAsync.h +392 -748
  70. data/dist/ice/cpp/include/Ice/OutgoingResponse.h +129 -0
  71. data/dist/ice/cpp/include/Ice/OutputStream.h +756 -956
  72. data/dist/ice/cpp/include/Ice/Plugin.h +73 -0
  73. data/dist/ice/cpp/include/Ice/PluginFactory.h +77 -0
  74. data/dist/ice/cpp/include/{IceUtil → Ice}/PopDisableWarnings.h +8 -6
  75. data/dist/ice/cpp/include/Ice/Properties.h +307 -0
  76. data/dist/ice/cpp/include/Ice/PropertiesF.h +19 -0
  77. data/dist/ice/cpp/include/Ice/Proxy.h +665 -5094
  78. data/dist/ice/cpp/include/Ice/ProxyF.h +2 -44
  79. data/dist/ice/cpp/include/Ice/ProxyFunctions.h +209 -0
  80. data/dist/ice/cpp/include/Ice/PushDisableWarnings.h +29 -0
  81. data/dist/ice/cpp/include/Ice/ReferenceF.h +4 -19
  82. data/dist/ice/cpp/include/Ice/RequestHandlerF.h +8 -18
  83. data/dist/ice/cpp/include/Ice/SSL/ClientAuthenticationOptions.h +276 -0
  84. data/dist/ice/cpp/include/Ice/SSL/Config.h +54 -0
  85. data/dist/ice/cpp/include/Ice/SSL/ConnectionInfo.h +107 -0
  86. data/dist/ice/cpp/include/Ice/SSL/ConnectionInfoF.h +39 -0
  87. data/dist/ice/cpp/include/Ice/SSL/EndpointInfo.h +40 -0
  88. data/dist/ice/cpp/include/Ice/SSL/SSLException.h +32 -0
  89. data/dist/ice/cpp/include/Ice/SSL/ServerAuthenticationOptions.h +286 -0
  90. data/dist/ice/cpp/include/Ice/ServantLocator.h +51 -0
  91. data/dist/ice/cpp/include/Ice/Service.h +182 -342
  92. data/dist/ice/cpp/include/Ice/SliceLoader.h +67 -0
  93. data/dist/ice/cpp/include/Ice/SlicedData.h +113 -160
  94. data/dist/ice/cpp/include/Ice/SlicedDataF.h +17 -27
  95. data/dist/ice/cpp/include/Ice/StreamHelpers.h +532 -1070
  96. data/dist/ice/cpp/include/Ice/StreamableTraits.h +291 -0
  97. data/dist/ice/cpp/include/Ice/StringConverter.h +152 -63
  98. data/dist/ice/cpp/include/Ice/StringUtil.h +114 -0
  99. data/dist/ice/cpp/include/Ice/TimerTask.h +24 -0
  100. data/dist/ice/cpp/include/Ice/TupleCompare.h +103 -0
  101. data/dist/ice/cpp/include/Ice/UUID.h +6 -9
  102. data/dist/ice/cpp/include/Ice/UserException.h +46 -0
  103. data/dist/ice/cpp/include/Ice/UserExceptionFactory.h +4 -79
  104. data/dist/ice/cpp/include/Ice/Value.h +103 -115
  105. data/dist/ice/cpp/include/Ice/ValueF.h +6 -11
  106. data/dist/ice/cpp/include/IceDiscovery/IceDiscovery.h +16 -1877
  107. data/dist/ice/cpp/include/IceLocatorDiscovery/IceLocatorDiscovery.h +16 -1185
  108. data/dist/ice/cpp/include/generated/Ice/BuiltinSequences.h +46 -146
  109. data/dist/ice/cpp/include/generated/Ice/Context.h +40 -0
  110. data/dist/ice/cpp/include/generated/Ice/EndpointTypes.h +49 -93
  111. data/dist/ice/cpp/include/generated/Ice/Identity.h +70 -226
  112. data/dist/ice/cpp/include/generated/Ice/Locator.h +494 -3850
  113. data/dist/ice/cpp/include/generated/Ice/LocatorRegistry.h +443 -0
  114. data/dist/ice/cpp/include/generated/Ice/Metrics.h +937 -4603
  115. data/dist/ice/cpp/include/generated/Ice/OperationMode.h +73 -0
  116. data/dist/ice/cpp/include/generated/Ice/Process.h +197 -929
  117. data/dist/ice/cpp/include/generated/Ice/PropertiesAdmin.h +249 -1301
  118. data/dist/ice/cpp/include/generated/Ice/PropertyDict.h +39 -0
  119. data/dist/ice/cpp/include/generated/Ice/RemoteLogger.h +637 -2620
  120. data/dist/ice/cpp/include/generated/Ice/ReplyStatus.h +94 -0
  121. data/dist/ice/cpp/include/generated/Ice/Router.h +429 -1783
  122. data/dist/ice/cpp/include/generated/Ice/SliceChecksumDict.h +18 -65
  123. data/dist/ice/cpp/include/generated/Ice/Version.h +73 -318
  124. data/dist/ice/cpp/include/generated/IceDiscovery/Lookup.h +498 -0
  125. data/dist/ice/cpp/include/generated/IceLocatorDiscovery/Lookup.h +387 -0
  126. data/dist/ice/cpp/src/Ice/Acceptor.h +28 -24
  127. data/dist/ice/cpp/src/Ice/AcceptorF.h +6 -14
  128. data/dist/ice/cpp/src/Ice/AddDefaultPluginFactories.h +16 -0
  129. data/dist/ice/cpp/src/Ice/AddDefaultPluginFactories_all.cpp +43 -0
  130. data/dist/ice/cpp/src/Ice/AddDefaultPluginFactories_min.cpp +17 -0
  131. data/dist/ice/cpp/src/Ice/ArgVector.cpp +17 -18
  132. data/dist/ice/cpp/src/Ice/ArgVector.h +19 -25
  133. data/dist/ice/cpp/src/Ice/Base64.cpp +66 -66
  134. data/dist/ice/cpp/src/Ice/Base64.h +14 -19
  135. data/dist/ice/cpp/src/Ice/BatchRequestQueue.cpp +70 -121
  136. data/dist/ice/cpp/src/Ice/BatchRequestQueue.h +37 -47
  137. data/dist/ice/cpp/src/Ice/Buffer.cpp +73 -41
  138. data/dist/ice/cpp/src/Ice/CheckIdentity.h +21 -0
  139. data/dist/ice/cpp/src/Ice/CollocatedRequestHandler.cpp +215 -249
  140. data/dist/ice/cpp/src/Ice/CollocatedRequestHandler.h +38 -60
  141. data/dist/ice/cpp/src/Ice/Communicator.cpp +399 -0
  142. data/dist/ice/cpp/src/Ice/CommunicatorFlushBatchAsync.cpp +140 -0
  143. data/dist/ice/cpp/src/Ice/CommunicatorFlushBatchAsync.h +39 -0
  144. data/dist/ice/cpp/src/Ice/ConnectRequestHandler.cpp +63 -184
  145. data/dist/ice/cpp/src/Ice/ConnectRequestHandler.h +30 -51
  146. data/dist/ice/cpp/src/Ice/ConnectRequestHandlerF.h +4 -14
  147. data/dist/ice/cpp/src/Ice/Connection.cpp +44 -0
  148. data/dist/ice/cpp/src/Ice/ConnectionFactory.cpp +578 -792
  149. data/dist/ice/cpp/src/Ice/ConnectionFactory.h +200 -200
  150. data/dist/ice/cpp/src/Ice/ConnectionFactoryF.h +6 -19
  151. data/dist/ice/cpp/src/Ice/ConnectionI.cpp +1674 -1782
  152. data/dist/ice/cpp/src/Ice/ConnectionI.h +333 -293
  153. data/dist/ice/cpp/src/Ice/ConnectionOptions.h +22 -0
  154. data/dist/ice/cpp/src/Ice/Connector.h +25 -19
  155. data/dist/ice/cpp/src/Ice/ConnectorF.h +4 -11
  156. data/dist/ice/cpp/src/{IceUtil → Ice}/ConsoleUtil.cpp +32 -53
  157. data/dist/ice/cpp/src/Ice/ConsoleUtil.h +79 -0
  158. data/dist/ice/cpp/src/Ice/CtrlCHandler.cpp +189 -0
  159. data/dist/ice/cpp/src/Ice/Current.cpp +29 -0
  160. data/dist/ice/cpp/src/Ice/DLLMain.cpp +25 -35
  161. data/dist/ice/cpp/src/Ice/DefaultSliceLoader.cpp +39 -0
  162. data/dist/ice/cpp/src/Ice/DefaultsAndOverrides.cpp +41 -119
  163. data/dist/ice/cpp/src/Ice/DefaultsAndOverrides.h +27 -41
  164. data/dist/ice/cpp/src/Ice/DefaultsAndOverridesF.h +4 -11
  165. data/dist/ice/cpp/src/Ice/Demangle.cpp +26 -0
  166. data/dist/ice/cpp/src/Ice/DisableWarnings.h +31 -0
  167. data/dist/ice/cpp/src/Ice/DynamicLibrary.cpp +44 -112
  168. data/dist/ice/cpp/src/Ice/DynamicLibrary.h +91 -0
  169. data/dist/ice/cpp/src/Ice/Endian.h +40 -0
  170. data/dist/ice/cpp/src/Ice/EndpointFactory.cpp +35 -59
  171. data/dist/ice/cpp/src/Ice/EndpointFactory.h +82 -103
  172. data/dist/ice/cpp/src/Ice/EndpointFactoryF.h +4 -11
  173. data/dist/ice/cpp/src/Ice/EndpointFactoryManager.cpp +54 -87
  174. data/dist/ice/cpp/src/Ice/EndpointFactoryManager.h +28 -33
  175. data/dist/ice/cpp/src/Ice/EndpointFactoryManagerF.h +4 -11
  176. data/dist/ice/cpp/src/Ice/EndpointI.cpp +53 -23
  177. data/dist/ice/cpp/src/Ice/EndpointI.h +132 -200
  178. data/dist/ice/cpp/src/Ice/EndpointIF.h +11 -39
  179. data/dist/ice/cpp/src/Ice/EventHandler.cpp +3 -26
  180. data/dist/ice/cpp/src/Ice/EventHandler.h +46 -56
  181. data/dist/ice/cpp/src/Ice/EventHandlerF.h +4 -14
  182. data/dist/ice/cpp/src/Ice/Exception.cpp +3 -816
  183. data/dist/ice/cpp/src/Ice/FileUtil.cpp +476 -0
  184. data/dist/ice/cpp/src/Ice/FileUtil.h +152 -0
  185. data/dist/ice/cpp/src/Ice/FixedRequestHandler.cpp +34 -0
  186. data/dist/ice/cpp/src/Ice/FixedRequestHandler.h +29 -0
  187. data/dist/ice/cpp/src/Ice/HashUtil.h +46 -32
  188. data/dist/ice/cpp/src/Ice/HttpParser.cpp +431 -431
  189. data/dist/ice/cpp/src/Ice/HttpParser.h +95 -100
  190. data/dist/ice/cpp/src/Ice/IPEndpointI.cpp +207 -324
  191. data/dist/ice/cpp/src/Ice/IPEndpointI.h +80 -126
  192. data/dist/ice/cpp/src/Ice/IPEndpointIF.h +6 -17
  193. data/dist/ice/cpp/src/Ice/IdleTimeoutTransceiverDecorator.cpp +172 -0
  194. data/dist/ice/cpp/src/Ice/IdleTimeoutTransceiverDecorator.h +89 -0
  195. data/dist/ice/cpp/src/Ice/ImplicitContext.cpp +109 -0
  196. data/dist/ice/cpp/src/Ice/IncomingRequest.cpp +66 -0
  197. data/dist/ice/cpp/src/Ice/Initialize.cpp +48 -542
  198. data/dist/ice/cpp/src/Ice/InputStream.cpp +848 -1385
  199. data/dist/ice/cpp/src/Ice/Instance.cpp +816 -827
  200. data/dist/ice/cpp/src/Ice/Instance.h +202 -212
  201. data/dist/ice/cpp/src/Ice/InstrumentationI.cpp +526 -661
  202. data/dist/ice/cpp/src/Ice/InstrumentationI.h +171 -192
  203. data/dist/ice/cpp/src/Ice/LocalException.cpp +518 -0
  204. data/dist/ice/cpp/src/Ice/LocalExceptions.cpp +577 -0
  205. data/dist/ice/cpp/src/Ice/LocatorInfo.cpp +291 -329
  206. data/dist/ice/cpp/src/Ice/LocatorInfo.h +144 -157
  207. data/dist/ice/cpp/src/Ice/LocatorInfoF.h +8 -17
  208. data/dist/ice/cpp/src/Ice/LoggerAdminI.cpp +561 -743
  209. data/dist/ice/cpp/src/Ice/LoggerAdminI.h +18 -28
  210. data/dist/ice/cpp/src/Ice/LoggerI.cpp +66 -91
  211. data/dist/ice/cpp/src/Ice/LoggerI.h +36 -41
  212. data/dist/ice/cpp/src/Ice/LoggerMiddleware.cpp +176 -0
  213. data/dist/ice/cpp/src/Ice/LoggerMiddleware.h +42 -0
  214. data/dist/ice/cpp/src/Ice/LoggerUtil.cpp +14 -38
  215. data/dist/ice/cpp/src/Ice/MarshaledResult.cpp +20 -0
  216. data/dist/ice/cpp/src/Ice/MetricsAdminI.cpp +194 -280
  217. data/dist/ice/cpp/src/Ice/MetricsAdminI.h +600 -0
  218. data/dist/ice/cpp/src/Ice/MetricsFunctional.h +92 -0
  219. data/dist/ice/cpp/src/Ice/MetricsObserverI.h +587 -0
  220. data/dist/ice/cpp/src/Ice/NativePropertiesAdmin.cpp +185 -0
  221. data/dist/ice/cpp/src/Ice/Network.cpp +595 -917
  222. data/dist/ice/cpp/src/Ice/Network.h +189 -213
  223. data/dist/ice/cpp/src/Ice/NetworkF.h +2 -10
  224. data/dist/ice/cpp/src/Ice/NetworkProxy.cpp +99 -104
  225. data/dist/ice/cpp/src/Ice/NetworkProxy.h +49 -54
  226. data/dist/ice/cpp/src/Ice/NetworkProxyF.h +4 -11
  227. data/dist/ice/cpp/src/Ice/OSLogLoggerI.cpp +16 -18
  228. data/dist/ice/cpp/src/Ice/OSLogLoggerI.h +22 -27
  229. data/dist/ice/cpp/src/Ice/Object.cpp +152 -338
  230. data/dist/ice/cpp/src/Ice/ObjectAdapterFactory.cpp +170 -113
  231. data/dist/ice/cpp/src/Ice/ObjectAdapterFactory.h +41 -41
  232. data/dist/ice/cpp/src/Ice/ObjectAdapterFactoryF.h +4 -15
  233. data/dist/ice/cpp/src/Ice/ObjectAdapterI.cpp +580 -727
  234. data/dist/ice/cpp/src/Ice/ObjectAdapterI.h +149 -145
  235. data/dist/ice/cpp/src/Ice/ObserverHelper.cpp +36 -17
  236. data/dist/ice/cpp/src/Ice/ObserverMiddleware.cpp +96 -0
  237. data/dist/ice/cpp/src/Ice/ObserverMiddleware.h +25 -0
  238. data/dist/ice/cpp/src/Ice/OpaqueEndpointI.cpp +147 -187
  239. data/dist/ice/cpp/src/Ice/OpaqueEndpointI.h +56 -64
  240. data/dist/ice/cpp/src/{IceUtil → Ice}/Options.cpp +187 -258
  241. data/dist/ice/cpp/src/Ice/Options.h +119 -0
  242. data/dist/ice/cpp/src/Ice/OutgoingAsync.cpp +516 -732
  243. data/dist/ice/cpp/src/Ice/OutgoingResponse.cpp +276 -0
  244. data/dist/ice/cpp/src/Ice/OutputStream.cpp +610 -543
  245. data/dist/ice/cpp/src/Ice/OutputUtil.cpp +344 -0
  246. data/dist/ice/cpp/src/Ice/OutputUtil.h +173 -0
  247. data/dist/ice/cpp/src/Ice/PluginManagerI.cpp +118 -277
  248. data/dist/ice/cpp/src/Ice/PluginManagerI.h +41 -48
  249. data/dist/ice/cpp/src/Ice/Properties.cpp +931 -0
  250. data/dist/ice/cpp/src/Ice/PropertyNames.cpp +519 -1341
  251. data/dist/ice/cpp/src/Ice/PropertyNames.h +49 -64
  252. data/dist/ice/cpp/src/Ice/PropertyUtil.cpp +103 -0
  253. data/dist/ice/cpp/src/Ice/PropertyUtil.h +31 -0
  254. data/dist/ice/cpp/src/Ice/Protocol.cpp +129 -94
  255. data/dist/ice/cpp/src/Ice/Protocol.h +116 -0
  256. data/dist/ice/cpp/src/Ice/ProtocolInstance.cpp +117 -62
  257. data/dist/ice/cpp/src/Ice/ProtocolInstance.h +63 -82
  258. data/dist/ice/cpp/src/Ice/ProtocolInstanceF.h +4 -11
  259. data/dist/ice/cpp/src/Ice/ProtocolPluginFacade.cpp +10 -32
  260. data/dist/ice/cpp/src/Ice/ProtocolPluginFacade.h +25 -54
  261. data/dist/ice/cpp/src/Ice/Proxy.cpp +294 -1357
  262. data/dist/ice/cpp/src/Ice/ProxyAsync.cpp +684 -0
  263. data/dist/ice/cpp/src/Ice/ProxyFunctions.cpp +90 -0
  264. data/dist/ice/cpp/src/Ice/PushDisableDeprecatedWarnings.h +15 -0
  265. data/dist/ice/cpp/src/Ice/Random.cpp +29 -0
  266. data/dist/ice/cpp/src/Ice/Random.h +23 -0
  267. data/dist/ice/cpp/src/Ice/Reference.cpp +635 -1097
  268. data/dist/ice/cpp/src/Ice/Reference.h +314 -298
  269. data/dist/ice/cpp/src/Ice/ReferenceFactory.cpp +320 -378
  270. data/dist/ice/cpp/src/Ice/ReferenceFactory.h +48 -66
  271. data/dist/ice/cpp/src/Ice/ReferenceFactoryF.h +4 -9
  272. data/dist/ice/cpp/src/Ice/RequestHandler.cpp +15 -24
  273. data/dist/ice/cpp/src/Ice/RequestHandler.h +43 -68
  274. data/dist/ice/cpp/src/Ice/RequestHandlerCache.cpp +76 -0
  275. data/dist/ice/cpp/src/Ice/RequestHandlerCache.h +33 -0
  276. data/dist/ice/cpp/src/Ice/ResourceConfig.h +27 -0
  277. data/dist/ice/cpp/src/Ice/RetryQueue.cpp +51 -57
  278. data/dist/ice/cpp/src/Ice/RetryQueue.h +39 -46
  279. data/dist/ice/cpp/src/Ice/RetryQueueF.h +4 -9
  280. data/dist/ice/cpp/src/Ice/RouterInfo.cpp +97 -201
  281. data/dist/ice/cpp/src/Ice/RouterInfo.h +61 -118
  282. data/dist/ice/cpp/src/Ice/RouterInfoF.h +6 -14
  283. data/dist/ice/cpp/src/Ice/SHA1.cpp +86 -60
  284. data/dist/ice/cpp/src/Ice/SHA1.h +35 -0
  285. data/dist/ice/cpp/src/Ice/SSL/DistinguishedName.cpp +89 -0
  286. data/dist/ice/cpp/src/Ice/SSL/DistinguishedName.h +87 -0
  287. data/dist/ice/cpp/src/Ice/SSL/OpenSSLEngine.cpp +521 -0
  288. data/dist/ice/cpp/src/Ice/SSL/OpenSSLEngine.h +40 -0
  289. data/dist/ice/cpp/src/Ice/SSL/OpenSSLEngineF.h +13 -0
  290. data/dist/ice/cpp/src/Ice/SSL/OpenSSLTransceiverI.cpp +646 -0
  291. data/dist/ice/cpp/src/Ice/SSL/OpenSSLTransceiverI.h +80 -0
  292. data/dist/ice/cpp/src/{IceSSL → Ice/SSL}/RFC2253.cpp +85 -88
  293. data/dist/ice/cpp/src/Ice/SSL/RFC2253.h +58 -0
  294. data/dist/ice/cpp/src/Ice/SSL/SSLAcceptorI.cpp +124 -0
  295. data/dist/ice/cpp/src/Ice/SSL/SSLAcceptorI.h +52 -0
  296. data/dist/ice/cpp/src/Ice/SSL/SSLConnectorI.cpp +92 -0
  297. data/dist/ice/cpp/src/Ice/SSL/SSLConnectorI.h +38 -0
  298. data/dist/ice/cpp/src/Ice/SSL/SSLEndpointI.cpp +377 -0
  299. data/dist/ice/cpp/src/Ice/SSL/SSLEndpointI.h +84 -0
  300. data/dist/ice/cpp/src/Ice/SSL/SSLEngine.cpp +115 -0
  301. data/dist/ice/cpp/src/Ice/SSL/SSLEngine.h +69 -0
  302. data/dist/ice/cpp/src/Ice/SSL/SSLEngineF.h +14 -0
  303. data/dist/ice/cpp/src/Ice/SSL/SSLException.cpp +18 -0
  304. data/dist/ice/cpp/src/Ice/SSL/SSLInstance.cpp +27 -0
  305. data/dist/ice/cpp/src/Ice/SSL/SSLInstance.h +26 -0
  306. data/dist/ice/cpp/src/Ice/SSL/SSLInstanceF.h +19 -0
  307. data/dist/ice/cpp/src/Ice/SSL/SSLUtil.cpp +673 -0
  308. data/dist/ice/cpp/src/Ice/SSL/SSLUtil.h +118 -0
  309. data/dist/ice/cpp/src/Ice/SSL/SchannelEngine.cpp +1449 -0
  310. data/dist/ice/cpp/src/Ice/SSL/SchannelEngine.h +58 -0
  311. data/dist/ice/cpp/src/Ice/SSL/SchannelEngineF.h +18 -0
  312. data/dist/ice/cpp/src/Ice/SSL/SchannelTransceiverI.cpp +1088 -0
  313. data/dist/ice/cpp/src/Ice/SSL/SchannelTransceiverI.h +118 -0
  314. data/dist/ice/cpp/src/Ice/SSL/SecureTransportEngine.cpp +825 -0
  315. data/dist/ice/cpp/src/Ice/SSL/SecureTransportEngine.h +44 -0
  316. data/dist/ice/cpp/src/Ice/SSL/SecureTransportEngineF.h +18 -0
  317. data/dist/ice/cpp/src/Ice/SSL/SecureTransportTransceiverI.cpp +621 -0
  318. data/dist/ice/cpp/src/Ice/SSL/SecureTransportTransceiverI.h +91 -0
  319. data/dist/ice/cpp/src/Ice/SSL/SecureTransportUtil.cpp +1048 -0
  320. data/dist/ice/cpp/src/Ice/SSL/SecureTransportUtil.h +40 -0
  321. data/dist/ice/cpp/src/Ice/SSL/TrustManager.cpp +233 -0
  322. data/dist/ice/cpp/src/Ice/SSL/TrustManager.h +42 -0
  323. data/dist/ice/cpp/src/Ice/SSL/TrustManagerF.h +14 -0
  324. data/dist/ice/cpp/src/Ice/ScannerConfig.h +35 -0
  325. data/dist/ice/cpp/src/Ice/Selector.cpp +341 -606
  326. data/dist/ice/cpp/src/Ice/Selector.h +167 -224
  327. data/dist/ice/cpp/src/Ice/ServantManager.cpp +195 -128
  328. data/dist/ice/cpp/src/Ice/ServantManager.h +52 -55
  329. data/dist/ice/cpp/src/Ice/ServantManagerF.h +14 -0
  330. data/dist/ice/cpp/src/Ice/Service.cpp +548 -641
  331. data/dist/ice/cpp/src/Ice/SharedContext.h +13 -26
  332. data/dist/ice/cpp/src/Ice/SliceLoader.cpp +53 -0
  333. data/dist/ice/cpp/src/Ice/SlicedData.cpp +17 -96
  334. data/dist/ice/cpp/src/Ice/StreamSocket.cpp +104 -151
  335. data/dist/ice/cpp/src/Ice/StreamSocket.h +48 -60
  336. data/dist/ice/cpp/src/Ice/StringConverter.cpp +586 -0
  337. data/dist/ice/cpp/src/Ice/StringUtil.cpp +1137 -0
  338. data/dist/ice/cpp/src/Ice/SysLoggerI.cpp +41 -47
  339. data/dist/ice/cpp/src/Ice/SysLoggerI.h +24 -27
  340. data/dist/ice/cpp/src/Ice/SystemdJournalI.cpp +16 -17
  341. data/dist/ice/cpp/src/Ice/SystemdJournalI.h +19 -25
  342. data/dist/ice/cpp/src/Ice/TargetCompare.h +96 -0
  343. data/dist/ice/cpp/src/Ice/TcpAcceptor.cpp +67 -88
  344. data/dist/ice/cpp/src/Ice/TcpAcceptor.h +34 -40
  345. data/dist/ice/cpp/src/Ice/TcpConnector.cpp +42 -41
  346. data/dist/ice/cpp/src/Ice/TcpConnector.h +26 -35
  347. data/dist/ice/cpp/src/Ice/TcpEndpointI.cpp +172 -146
  348. data/dist/ice/cpp/src/Ice/TcpEndpointI.h +76 -80
  349. data/dist/ice/cpp/src/Ice/TcpTransceiver.cpp +38 -26
  350. data/dist/ice/cpp/src/Ice/TcpTransceiver.h +40 -45
  351. data/dist/ice/cpp/src/Ice/ThreadPool.cpp +333 -515
  352. data/dist/ice/cpp/src/Ice/ThreadPool.h +202 -290
  353. data/dist/ice/cpp/src/Ice/ThreadPoolF.h +14 -0
  354. data/dist/ice/cpp/src/Ice/TimeUtil.cpp +47 -0
  355. data/dist/ice/cpp/src/Ice/TimeUtil.h +21 -0
  356. data/dist/ice/cpp/src/Ice/Timer.cpp +73 -167
  357. data/dist/ice/cpp/src/Ice/Timer.h +212 -0
  358. data/dist/ice/cpp/src/Ice/TraceLevels.cpp +11 -29
  359. data/dist/ice/cpp/src/Ice/TraceLevels.h +22 -28
  360. data/dist/ice/cpp/src/Ice/TraceLevelsF.h +4 -11
  361. data/dist/ice/cpp/src/Ice/TraceUtil.cpp +136 -215
  362. data/dist/ice/cpp/src/Ice/TraceUtil.h +27 -16
  363. data/dist/ice/cpp/src/Ice/Transceiver.cpp +3 -7
  364. data/dist/ice/cpp/src/Ice/Transceiver.h +35 -32
  365. data/dist/ice/cpp/src/Ice/TransceiverF.h +10 -20
  366. data/dist/ice/cpp/src/Ice/UUID.cpp +79 -0
  367. data/dist/ice/cpp/src/Ice/UdpConnector.cpp +39 -39
  368. data/dist/ice/cpp/src/Ice/UdpConnector.h +27 -36
  369. data/dist/ice/cpp/src/Ice/UdpEndpointI.cpp +178 -213
  370. data/dist/ice/cpp/src/Ice/UdpEndpointI.h +82 -85
  371. data/dist/ice/cpp/src/Ice/UdpTransceiver.cpp +201 -221
  372. data/dist/ice/cpp/src/Ice/UdpTransceiver.h +68 -74
  373. data/dist/ice/cpp/{include/IceUtil → src/Ice}/UndefSysMacros.h +12 -12
  374. data/dist/ice/cpp/src/Ice/UniqueRef.h +77 -0
  375. data/dist/ice/cpp/src/Ice/UserException.cpp +58 -0
  376. data/dist/ice/cpp/src/Ice/Value.cpp +107 -38
  377. data/dist/ice/cpp/src/Ice/WSAcceptor.cpp +10 -15
  378. data/dist/ice/cpp/src/Ice/WSAcceptor.h +31 -37
  379. data/dist/ice/cpp/src/Ice/WSConnector.cpp +25 -40
  380. data/dist/ice/cpp/src/Ice/WSConnector.h +26 -33
  381. data/dist/ice/cpp/src/Ice/WSEndpoint.cpp +164 -217
  382. data/dist/ice/cpp/src/Ice/WSEndpoint.h +72 -83
  383. data/dist/ice/cpp/src/Ice/WSTransceiver.cpp +469 -458
  384. data/dist/ice/cpp/src/Ice/WSTransceiver.h +117 -123
  385. data/dist/ice/cpp/src/Ice/generated/BuiltinSequences.cpp +20 -29
  386. data/dist/ice/cpp/src/Ice/generated/Context.cpp +40 -0
  387. data/dist/ice/cpp/src/Ice/generated/EndpointTypes.cpp +20 -31
  388. data/dist/ice/cpp/src/Ice/generated/Identity.cpp +24 -34
  389. data/dist/ice/cpp/src/Ice/generated/Locator.cpp +454 -1744
  390. data/dist/ice/cpp/src/Ice/generated/LocatorRegistry.cpp +577 -0
  391. data/dist/ice/cpp/src/Ice/generated/Metrics.cpp +824 -1971
  392. data/dist/ice/cpp/src/Ice/generated/OperationMode.cpp +56 -0
  393. data/dist/ice/cpp/src/Ice/generated/Process.cpp +190 -331
  394. data/dist/ice/cpp/src/Ice/generated/PropertiesAdmin.cpp +289 -449
  395. data/dist/ice/cpp/src/Ice/generated/PropertyDict.cpp +40 -0
  396. data/dist/ice/cpp/src/Ice/generated/RemoteLogger.cpp +547 -867
  397. data/dist/ice/cpp/src/Ice/generated/ReplyStatus.cpp +70 -0
  398. data/dist/ice/cpp/src/Ice/generated/Router.cpp +406 -723
  399. data/dist/ice/cpp/src/Ice/generated/SliceChecksumDict.cpp +19 -29
  400. data/dist/ice/cpp/src/Ice/generated/Version.cpp +28 -31
  401. data/dist/ice/cpp/src/IceDiscovery/LocatorI.cpp +76 -139
  402. data/dist/ice/cpp/src/IceDiscovery/LocatorI.h +55 -96
  403. data/dist/ice/cpp/src/IceDiscovery/LookupI.cpp +190 -303
  404. data/dist/ice/cpp/src/IceDiscovery/LookupI.h +126 -185
  405. data/dist/ice/cpp/src/IceDiscovery/PluginI.cpp +56 -77
  406. data/dist/ice/cpp/src/IceDiscovery/PluginI.h +20 -25
  407. data/dist/ice/cpp/src/IceDiscovery/generated/Lookup.cpp +638 -0
  408. data/dist/ice/cpp/src/IceLocatorDiscovery/Plugin.h +14 -37
  409. data/dist/ice/cpp/src/IceLocatorDiscovery/PluginI.cpp +411 -649
  410. data/dist/ice/cpp/src/IceLocatorDiscovery/generated/Lookup.cpp +468 -0
  411. data/dist/ice/cpp/src/Slice/DeprecationReporter.cpp +172 -0
  412. data/dist/ice/cpp/src/Slice/DeprecationReporter.h +14 -0
  413. data/dist/ice/cpp/src/Slice/DocCommentParser.cpp +736 -0
  414. data/dist/ice/cpp/src/Slice/DocCommentParser.h +61 -0
  415. data/dist/ice/cpp/src/Slice/FileTracker.cpp +25 -75
  416. data/dist/ice/cpp/src/Slice/FileTracker.h +35 -56
  417. data/dist/ice/cpp/src/Slice/Grammar.cpp +2711 -3382
  418. data/dist/ice/cpp/src/Slice/Grammar.h +95 -75
  419. data/dist/ice/cpp/src/Slice/GrammarUtil.h +117 -217
  420. data/dist/ice/cpp/src/Slice/MetadataValidation.cpp +486 -0
  421. data/dist/ice/cpp/src/Slice/MetadataValidation.h +106 -0
  422. data/dist/ice/cpp/src/Slice/Parser.cpp +3068 -5223
  423. data/dist/ice/cpp/src/Slice/Parser.h +1086 -1065
  424. data/dist/ice/cpp/src/Slice/Preprocessor.cpp +97 -599
  425. data/dist/ice/cpp/src/Slice/Preprocessor.h +26 -42
  426. data/dist/ice/cpp/src/Slice/Scanner.cpp +1562 -924
  427. data/dist/ice/cpp/src/Slice/SliceUtil.cpp +517 -113
  428. data/dist/ice/cpp/src/Slice/StringLiteralUtil.cpp +254 -269
  429. data/dist/ice/cpp/src/Slice/Util.h +126 -35
  430. data/dist/ice/cpp/src/slice2rb/Main.cpp +13 -15
  431. data/dist/ice/cpp/src/slice2rb/Ruby.cpp +250 -0
  432. data/dist/ice/cpp/src/slice2rb/RubyUtil.cpp +1197 -0
  433. data/dist/ice/cpp/src/slice2rb/RubyUtil.h +56 -0
  434. data/dist/ice/slice/Glacier2/Metrics.ice +34 -75
  435. data/dist/ice/slice/Glacier2/PermissionsVerifier.ice +42 -98
  436. data/dist/ice/slice/Glacier2/Router.ice +80 -173
  437. data/dist/ice/slice/Glacier2/SSLInfo.ice +23 -40
  438. data/dist/ice/slice/Glacier2/Session.ice +120 -261
  439. data/dist/ice/slice/Ice/BuiltinSequences.ice +33 -38
  440. data/dist/ice/slice/Ice/Context.ice +24 -0
  441. data/dist/ice/slice/Ice/EndpointTypes.ice +35 -33
  442. data/dist/ice/slice/Ice/Identity.ice +24 -63
  443. data/dist/ice/slice/Ice/Locator.ice +61 -226
  444. data/dist/ice/slice/Ice/LocatorRegistry.ice +77 -0
  445. data/dist/ice/slice/Ice/Metrics.ice +189 -424
  446. data/dist/ice/slice/Ice/OperationMode.ice +38 -0
  447. data/dist/ice/slice/Ice/Process.ice +16 -52
  448. data/dist/ice/slice/Ice/PropertiesAdmin.ice +25 -75
  449. data/dist/ice/slice/Ice/PropertyDict.ice +23 -0
  450. data/dist/ice/slice/Ice/RemoteLogger.ice +113 -213
  451. data/dist/ice/slice/Ice/ReplyStatus.ice +65 -0
  452. data/dist/ice/slice/Ice/Router.ice +42 -91
  453. data/dist/ice/slice/Ice/SliceChecksumDict.ice +7 -25
  454. data/dist/ice/slice/Ice/Version.ice +31 -39
  455. data/dist/ice/slice/IceBox/ServiceManager.ice +79 -0
  456. data/dist/ice/slice/IceGrid/Admin.ice +942 -1918
  457. data/dist/ice/slice/IceGrid/Descriptor.ice +476 -1051
  458. data/dist/ice/slice/IceGrid/Exception.ice +86 -384
  459. data/dist/ice/slice/IceGrid/FileParser.ice +23 -59
  460. data/dist/ice/slice/IceGrid/Registry.ice +117 -256
  461. data/dist/ice/slice/IceGrid/Session.ice +46 -110
  462. data/dist/ice/slice/IceGrid/UserAccountMapper.ice +22 -57
  463. data/dist/ice/slice/IceStorm/IceStorm.ice +173 -401
  464. data/dist/ice/slice/IceStorm/Metrics.ice +28 -70
  465. data/dist/lib/Glacier2/Metrics.rb +16 -31
  466. data/dist/lib/Glacier2/PermissionsVerifier.rb +18 -50
  467. data/dist/lib/Glacier2/Router.rb +20 -42
  468. data/dist/lib/Glacier2/SSLInfo.rb +14 -22
  469. data/dist/lib/Glacier2/Session.rb +53 -113
  470. data/dist/lib/Glacier2.rb +6 -6
  471. data/dist/lib/Ice/BuiltinSequences.rb +14 -26
  472. data/dist/lib/Ice/CompressBatch.rb +50 -0
  473. data/dist/lib/Ice/Context.rb +12 -0
  474. data/dist/lib/Ice/EndpointSelectionType.rb +49 -0
  475. data/dist/lib/Ice/EndpointTypes.rb +14 -55
  476. data/dist/lib/Ice/Exception.rb +20 -0
  477. data/dist/lib/Ice/Identity.rb +10 -26
  478. data/dist/lib/Ice/IdentitySpaceship.rb +16 -0
  479. data/dist/lib/Ice/InitializationData.rb +12 -0
  480. data/dist/lib/Ice/LocalExceptions.rb +168 -0
  481. data/dist/lib/Ice/Locator.rb +21 -134
  482. data/dist/lib/Ice/LocatorRegistry.rb +73 -0
  483. data/dist/lib/Ice/Metrics.rb +85 -132
  484. data/dist/lib/Ice/OperationMode.rb +58 -0
  485. data/dist/lib/Ice/Process.rb +12 -31
  486. data/dist/lib/Ice/PropertiesAdmin.rb +12 -36
  487. data/dist/lib/Ice/PropertyDict.rb +12 -0
  488. data/dist/lib/Ice/Proxy.rb +85 -0
  489. data/dist/lib/Ice/ProxyFunctions.rb +69 -0
  490. data/dist/lib/Ice/RemoteLogger.rb +29 -60
  491. data/dist/lib/Ice/ReplyStatus.rb +65 -0
  492. data/dist/lib/Ice/Router.rb +19 -47
  493. data/dist/lib/Ice/SliceChecksumDict.rb +5 -17
  494. data/dist/lib/Ice/SliceUtil.rb +41 -0
  495. data/dist/lib/Ice/Struct.rb +11 -0
  496. data/dist/lib/Ice/ToStringMode.rb +50 -0
  497. data/dist/lib/Ice/Value.rb +93 -0
  498. data/dist/lib/Ice/Version.rb +12 -24
  499. data/dist/lib/Ice.rb +29 -665
  500. data/dist/lib/IceBox/ServiceManager.rb +104 -0
  501. data/dist/lib/IceBox.rb +2 -4
  502. data/dist/lib/IceGrid/Admin.rb +303 -291
  503. data/dist/lib/IceGrid/Descriptor.rb +147 -192
  504. data/dist/lib/IceGrid/Exception.rb +26 -257
  505. data/dist/lib/IceGrid/FileParser.rb +12 -36
  506. data/dist/lib/IceGrid/Registry.rb +35 -76
  507. data/dist/lib/IceGrid/Session.rb +19 -34
  508. data/dist/lib/IceGrid/UserAccountMapper.rb +11 -34
  509. data/dist/lib/IceGrid.rb +3 -3
  510. data/dist/lib/IceStorm/IceStorm.rb +51 -132
  511. data/dist/lib/IceStorm/Metrics.rb +19 -37
  512. data/dist/lib/IceStorm.rb +3 -5
  513. data/extconf.rb +6 -8
  514. data/ice.gemspec +3 -3
  515. data/scripts/slice2rb +1 -3
  516. metadata +206 -386
  517. data/dist/IceRuby/ValueFactoryManager.cpp +0 -445
  518. data/dist/IceRuby/ValueFactoryManager.h +0 -95
  519. data/dist/ice/cpp/include/Ice/Application.h +0 -326
  520. data/dist/ice/cpp/include/Ice/AsyncResult.h +0 -155
  521. data/dist/ice/cpp/include/Ice/AsyncResultF.h +0 -23
  522. data/dist/ice/cpp/include/Ice/BatchRequestInterceptor.h +0 -75
  523. data/dist/ice/cpp/include/Ice/CommunicatorAsync.h +0 -154
  524. data/dist/ice/cpp/include/Ice/Comparable.h +0 -205
  525. data/dist/ice/cpp/include/Ice/ConnectionAsync.h +0 -302
  526. data/dist/ice/cpp/include/Ice/ConsoleUtil.h +0 -23
  527. data/dist/ice/cpp/include/Ice/DefaultValueFactory.h +0 -57
  528. data/dist/ice/cpp/include/Ice/DispatchInterceptor.h +0 -41
  529. data/dist/ice/cpp/include/Ice/Dispatcher.h +0 -67
  530. data/dist/ice/cpp/include/Ice/DynamicLibrary.h +0 -102
  531. data/dist/ice/cpp/include/Ice/DynamicLibraryF.h +0 -24
  532. data/dist/ice/cpp/include/Ice/ExceptionHelpers.h +0 -74
  533. data/dist/ice/cpp/include/Ice/FactoryTable.h +0 -73
  534. data/dist/ice/cpp/include/Ice/FactoryTableInit.h +0 -84
  535. data/dist/ice/cpp/include/Ice/Functional.h +0 -140
  536. data/dist/ice/cpp/include/Ice/GCObject.h +0 -76
  537. data/dist/ice/cpp/include/Ice/Handle.h +0 -182
  538. data/dist/ice/cpp/include/Ice/Incoming.h +0 -225
  539. data/dist/ice/cpp/include/Ice/IncomingAsync.h +0 -186
  540. data/dist/ice/cpp/include/Ice/IncomingAsyncF.h +0 -36
  541. data/dist/ice/cpp/include/Ice/InterfaceByValue.h +0 -57
  542. data/dist/ice/cpp/include/Ice/LocalObject.h +0 -35
  543. data/dist/ice/cpp/include/Ice/LocalObjectF.h +0 -21
  544. data/dist/ice/cpp/include/Ice/MetricsAdminI.h +0 -715
  545. data/dist/ice/cpp/include/Ice/MetricsFunctional.h +0 -159
  546. data/dist/ice/cpp/include/Ice/MetricsObserverI.h +0 -669
  547. data/dist/ice/cpp/include/Ice/Optional.h +0 -1114
  548. data/dist/ice/cpp/include/Ice/OutgoingAsyncF.h +0 -39
  549. data/dist/ice/cpp/include/Ice/Protocol.h +0 -274
  550. data/dist/ice/cpp/include/Ice/ProxyFactoryF.h +0 -21
  551. data/dist/ice/cpp/include/Ice/ProxyHandle.h +0 -318
  552. data/dist/ice/cpp/include/Ice/RegisterPlugins.h +0 -127
  553. data/dist/ice/cpp/include/Ice/ResponseHandlerF.h +0 -25
  554. data/dist/ice/cpp/include/Ice/SHA1.h +0 -40
  555. data/dist/ice/cpp/include/Ice/ServantManagerF.h +0 -21
  556. data/dist/ice/cpp/include/Ice/SliceChecksums.h +0 -33
  557. data/dist/ice/cpp/include/Ice/ThreadPoolF.h +0 -23
  558. data/dist/ice/cpp/include/Ice/UniquePtr.h +0 -95
  559. data/dist/ice/cpp/include/Ice/UniqueRef.h +0 -97
  560. data/dist/ice/cpp/include/IceSSL/Config.h +0 -21
  561. data/dist/ice/cpp/include/IceSSL/IceSSL.h +0 -24
  562. data/dist/ice/cpp/include/IceSSL/OpenSSL.h +0 -147
  563. data/dist/ice/cpp/include/IceSSL/Plugin.h +0 -712
  564. data/dist/ice/cpp/include/IceSSL/SChannel.h +0 -72
  565. data/dist/ice/cpp/include/IceSSL/SecureTransport.h +0 -72
  566. data/dist/ice/cpp/include/IceUtil/Atomic.h +0 -179
  567. data/dist/ice/cpp/include/IceUtil/Cond.h +0 -317
  568. data/dist/ice/cpp/include/IceUtil/Config.h +0 -392
  569. data/dist/ice/cpp/include/IceUtil/ConsoleUtil.h +0 -92
  570. data/dist/ice/cpp/include/IceUtil/CountDownLatch.h +0 -45
  571. data/dist/ice/cpp/include/IceUtil/CtrlCHandler.h +0 -96
  572. data/dist/ice/cpp/include/IceUtil/DisableWarnings.h +0 -44
  573. data/dist/ice/cpp/include/IceUtil/Exception.h +0 -394
  574. data/dist/ice/cpp/include/IceUtil/FileUtil.h +0 -140
  575. data/dist/ice/cpp/include/IceUtil/Functional.h +0 -389
  576. data/dist/ice/cpp/include/IceUtil/Handle.h +0 -261
  577. data/dist/ice/cpp/include/IceUtil/IceUtil.h +0 -40
  578. data/dist/ice/cpp/include/IceUtil/InputUtil.h +0 -42
  579. data/dist/ice/cpp/include/IceUtil/Iterator.h +0 -31
  580. data/dist/ice/cpp/include/IceUtil/Lock.h +0 -128
  581. data/dist/ice/cpp/include/IceUtil/Monitor.h +0 -243
  582. data/dist/ice/cpp/include/IceUtil/Mutex.h +0 -349
  583. data/dist/ice/cpp/include/IceUtil/MutexProtocol.h +0 -23
  584. data/dist/ice/cpp/include/IceUtil/MutexPtrLock.h +0 -78
  585. data/dist/ice/cpp/include/IceUtil/MutexPtrTryLock.h +0 -77
  586. data/dist/ice/cpp/include/IceUtil/Optional.h +0 -433
  587. data/dist/ice/cpp/include/IceUtil/Options.h +0 -135
  588. data/dist/ice/cpp/include/IceUtil/OutputUtil.h +0 -383
  589. data/dist/ice/cpp/include/IceUtil/PushDisableWarnings.h +0 -33
  590. data/dist/ice/cpp/include/IceUtil/Random.h +0 -55
  591. data/dist/ice/cpp/include/IceUtil/RecMutex.h +0 -107
  592. data/dist/ice/cpp/include/IceUtil/ResourceConfig.h +0 -37
  593. data/dist/ice/cpp/include/IceUtil/ScannerConfig.h +0 -40
  594. data/dist/ice/cpp/include/IceUtil/ScopedArray.h +0 -98
  595. data/dist/ice/cpp/include/IceUtil/Shared.h +0 -127
  596. data/dist/ice/cpp/include/IceUtil/StopWatch.h +0 -49
  597. data/dist/ice/cpp/include/IceUtil/StringConverter.h +0 -195
  598. data/dist/ice/cpp/include/IceUtil/StringUtil.h +0 -97
  599. data/dist/ice/cpp/include/IceUtil/Thread.h +0 -160
  600. data/dist/ice/cpp/include/IceUtil/ThreadException.h +0 -94
  601. data/dist/ice/cpp/include/IceUtil/Time.h +0 -205
  602. data/dist/ice/cpp/include/IceUtil/Timer.h +0 -153
  603. data/dist/ice/cpp/include/IceUtil/UUID.h +0 -21
  604. data/dist/ice/cpp/include/generated/Glacier2/Metrics.h +0 -475
  605. data/dist/ice/cpp/include/generated/Glacier2/PermissionsVerifier.h +0 -1430
  606. data/dist/ice/cpp/include/generated/Glacier2/PermissionsVerifierF.h +0 -147
  607. data/dist/ice/cpp/include/generated/Glacier2/Router.h +0 -3260
  608. data/dist/ice/cpp/include/generated/Glacier2/RouterF.h +0 -125
  609. data/dist/ice/cpp/include/generated/Glacier2/SSLInfo.h +0 -223
  610. data/dist/ice/cpp/include/generated/Glacier2/Session.h +0 -5894
  611. data/dist/ice/cpp/include/generated/Ice/Communicator.h +0 -1162
  612. data/dist/ice/cpp/include/generated/Ice/CommunicatorF.h +0 -101
  613. data/dist/ice/cpp/include/generated/Ice/Connection.h +0 -1703
  614. data/dist/ice/cpp/include/generated/Ice/ConnectionF.h +0 -119
  615. data/dist/ice/cpp/include/generated/Ice/Current.h +0 -322
  616. data/dist/ice/cpp/include/generated/Ice/Endpoint.h +0 -979
  617. data/dist/ice/cpp/include/generated/Ice/EndpointF.h +0 -166
  618. data/dist/ice/cpp/include/generated/Ice/FacetMap.h +0 -80
  619. data/dist/ice/cpp/include/generated/Ice/ImplicitContext.h +0 -284
  620. data/dist/ice/cpp/include/generated/Ice/ImplicitContextF.h +0 -101
  621. data/dist/ice/cpp/include/generated/Ice/Instrumentation.h +0 -1203
  622. data/dist/ice/cpp/include/generated/Ice/InstrumentationF.h +0 -128
  623. data/dist/ice/cpp/include/generated/Ice/LocalException.h +0 -7437
  624. data/dist/ice/cpp/include/generated/Ice/LocatorF.h +0 -147
  625. data/dist/ice/cpp/include/generated/Ice/Logger.h +0 -237
  626. data/dist/ice/cpp/include/generated/Ice/LoggerF.h +0 -101
  627. data/dist/ice/cpp/include/generated/Ice/ObjectAdapter.h +0 -1181
  628. data/dist/ice/cpp/include/generated/Ice/ObjectAdapterF.h +0 -101
  629. data/dist/ice/cpp/include/generated/Ice/ObjectFactory.h +0 -203
  630. data/dist/ice/cpp/include/generated/Ice/Plugin.h +0 -318
  631. data/dist/ice/cpp/include/generated/Ice/PluginF.h +0 -110
  632. data/dist/ice/cpp/include/generated/Ice/ProcessF.h +0 -125
  633. data/dist/ice/cpp/include/generated/Ice/Properties.h +0 -452
  634. data/dist/ice/cpp/include/generated/Ice/PropertiesF.h +0 -134
  635. data/dist/ice/cpp/include/generated/Ice/RouterF.h +0 -125
  636. data/dist/ice/cpp/include/generated/Ice/ServantLocator.h +0 -305
  637. data/dist/ice/cpp/include/generated/Ice/ServantLocatorF.h +0 -101
  638. data/dist/ice/cpp/include/generated/Ice/ValueFactory.h +0 -330
  639. data/dist/ice/cpp/include/generated/IceBox/IceBox.h +0 -3269
  640. data/dist/ice/cpp/include/generated/IceGrid/Admin.h +0 -33773
  641. data/dist/ice/cpp/include/generated/IceGrid/Descriptor.h +0 -5254
  642. data/dist/ice/cpp/include/generated/IceGrid/Exception.h +0 -2834
  643. data/dist/ice/cpp/include/generated/IceGrid/FileParser.h +0 -824
  644. data/dist/ice/cpp/include/generated/IceGrid/PluginFacade.h +0 -635
  645. data/dist/ice/cpp/include/generated/IceGrid/Registry.h +0 -5089
  646. data/dist/ice/cpp/include/generated/IceGrid/Session.h +0 -2240
  647. data/dist/ice/cpp/include/generated/IceGrid/UserAccountMapper.h +0 -800
  648. data/dist/ice/cpp/include/generated/IcePatch2/FileInfo.h +0 -325
  649. data/dist/ice/cpp/include/generated/IcePatch2/FileServer.h +0 -2891
  650. data/dist/ice/cpp/include/generated/IceSSL/ConnectionInfo.h +0 -228
  651. data/dist/ice/cpp/include/generated/IceSSL/ConnectionInfoF.h +0 -101
  652. data/dist/ice/cpp/include/generated/IceSSL/EndpointInfo.h +0 -186
  653. data/dist/ice/cpp/include/generated/IceStorm/IceStorm.h +0 -6627
  654. data/dist/ice/cpp/include/generated/IceStorm/Metrics.h +0 -665
  655. data/dist/ice/cpp/src/Ice/ACM.cpp +0 -380
  656. data/dist/ice/cpp/src/Ice/ACM.h +0 -119
  657. data/dist/ice/cpp/src/Ice/ACMF.h +0 -30
  658. data/dist/ice/cpp/src/Ice/Acceptor.cpp +0 -16
  659. data/dist/ice/cpp/src/Ice/Application.cpp +0 -661
  660. data/dist/ice/cpp/src/Ice/AsyncResult.cpp +0 -70
  661. data/dist/ice/cpp/src/Ice/CommunicatorI.cpp +0 -586
  662. data/dist/ice/cpp/src/Ice/CommunicatorI.h +0 -167
  663. data/dist/ice/cpp/src/Ice/Cond.cpp +0 -381
  664. data/dist/ice/cpp/src/Ice/ConnectionRequestHandler.cpp +0 -73
  665. data/dist/ice/cpp/src/Ice/ConnectionRequestHandler.h +0 -41
  666. data/dist/ice/cpp/src/Ice/Connector.cpp +0 -16
  667. data/dist/ice/cpp/src/Ice/CountDownLatch.cpp +0 -171
  668. data/dist/ice/cpp/src/Ice/DispatchInterceptor.cpp +0 -37
  669. data/dist/ice/cpp/src/Ice/FactoryTable.cpp +0 -162
  670. data/dist/ice/cpp/src/Ice/FactoryTableInit.cpp +0 -88
  671. data/dist/ice/cpp/src/Ice/GCObject.cpp +0 -442
  672. data/dist/ice/cpp/src/Ice/IconvStringConverter.cpp +0 -51
  673. data/dist/ice/cpp/src/Ice/ImplicitContextI.cpp +0 -655
  674. data/dist/ice/cpp/src/Ice/ImplicitContextI.h +0 -48
  675. data/dist/ice/cpp/src/Ice/Incoming.cpp +0 -795
  676. data/dist/ice/cpp/src/Ice/IncomingAsync.cpp +0 -230
  677. data/dist/ice/cpp/src/Ice/IncomingRequest.h +0 -33
  678. data/dist/ice/cpp/src/Ice/LocalObject.cpp +0 -23
  679. data/dist/ice/cpp/src/Ice/MetricsObserverI.cpp +0 -8
  680. data/dist/ice/cpp/src/Ice/PropertiesAdminI.cpp +0 -265
  681. data/dist/ice/cpp/src/Ice/PropertiesAdminI.h +0 -64
  682. data/dist/ice/cpp/src/Ice/PropertiesI.cpp +0 -739
  683. data/dist/ice/cpp/src/Ice/PropertiesI.h +0 -70
  684. data/dist/ice/cpp/src/Ice/ProtocolPluginFacadeF.h +0 -21
  685. data/dist/ice/cpp/src/Ice/ProxyFactory.cpp +0 -300
  686. data/dist/ice/cpp/src/Ice/ProxyFactory.h +0 -57
  687. data/dist/ice/cpp/src/Ice/RegisterPluginsInit.cpp +0 -38
  688. data/dist/ice/cpp/src/Ice/RegisterPluginsInit.h +0 -20
  689. data/dist/ice/cpp/src/Ice/ReplyStatus.h +0 -24
  690. data/dist/ice/cpp/src/Ice/RequestHandlerFactory.cpp +0 -77
  691. data/dist/ice/cpp/src/Ice/RequestHandlerFactory.h +0 -37
  692. data/dist/ice/cpp/src/Ice/ResponseHandler.cpp +0 -12
  693. data/dist/ice/cpp/src/Ice/ResponseHandler.h +0 -43
  694. data/dist/ice/cpp/src/Ice/SliceChecksums.cpp +0 -75
  695. data/dist/ice/cpp/src/Ice/StringConverterPlugin.cpp +0 -192
  696. data/dist/ice/cpp/src/Ice/StringUtil.h +0 -30
  697. data/dist/ice/cpp/src/Ice/Thread.cpp +0 -569
  698. data/dist/ice/cpp/src/Ice/ValueFactoryManagerI.cpp +0 -61
  699. data/dist/ice/cpp/src/Ice/ValueFactoryManagerI.h +0 -37
  700. data/dist/ice/cpp/src/Ice/VirtualShared.h +0 -38
  701. data/dist/ice/cpp/src/Ice/generated/Communicator.cpp +0 -79
  702. data/dist/ice/cpp/src/Ice/generated/CommunicatorF.cpp +0 -61
  703. data/dist/ice/cpp/src/Ice/generated/Connection.cpp +0 -155
  704. data/dist/ice/cpp/src/Ice/generated/ConnectionF.cpp +0 -61
  705. data/dist/ice/cpp/src/Ice/generated/Current.cpp +0 -62
  706. data/dist/ice/cpp/src/Ice/generated/Endpoint.cpp +0 -147
  707. data/dist/ice/cpp/src/Ice/generated/EndpointF.cpp +0 -61
  708. data/dist/ice/cpp/src/Ice/generated/FacetMap.cpp +0 -49
  709. data/dist/ice/cpp/src/Ice/generated/ImplicitContext.cpp +0 -75
  710. data/dist/ice/cpp/src/Ice/generated/ImplicitContextF.cpp +0 -61
  711. data/dist/ice/cpp/src/Ice/generated/Instrumentation.cpp +0 -188
  712. data/dist/ice/cpp/src/Ice/generated/InstrumentationF.cpp +0 -66
  713. data/dist/ice/cpp/src/Ice/generated/LocalException.cpp +0 -3262
  714. data/dist/ice/cpp/src/Ice/generated/LocatorF.cpp +0 -63
  715. data/dist/ice/cpp/src/Ice/generated/Logger.cpp +0 -73
  716. data/dist/ice/cpp/src/Ice/generated/LoggerF.cpp +0 -61
  717. data/dist/ice/cpp/src/Ice/generated/ObjectAdapter.cpp +0 -79
  718. data/dist/ice/cpp/src/Ice/generated/ObjectAdapterF.cpp +0 -61
  719. data/dist/ice/cpp/src/Ice/generated/ObjectFactory.cpp +0 -75
  720. data/dist/ice/cpp/src/Ice/generated/Plugin.cpp +0 -87
  721. data/dist/ice/cpp/src/Ice/generated/PluginF.cpp +0 -61
  722. data/dist/ice/cpp/src/Ice/generated/ProcessF.cpp +0 -63
  723. data/dist/ice/cpp/src/Ice/generated/Properties.cpp +0 -78
  724. data/dist/ice/cpp/src/Ice/generated/PropertiesF.cpp +0 -63
  725. data/dist/ice/cpp/src/Ice/generated/RouterF.cpp +0 -63
  726. data/dist/ice/cpp/src/Ice/generated/ServantLocator.cpp +0 -75
  727. data/dist/ice/cpp/src/Ice/generated/ServantLocatorF.cpp +0 -61
  728. data/dist/ice/cpp/src/Ice/generated/ValueFactory.cpp +0 -83
  729. data/dist/ice/cpp/src/Ice/ios/StreamAcceptor.cpp +0 -154
  730. data/dist/ice/cpp/src/Ice/ios/StreamAcceptor.h +0 -49
  731. data/dist/ice/cpp/src/Ice/ios/StreamConnector.cpp +0 -146
  732. data/dist/ice/cpp/src/Ice/ios/StreamConnector.h +0 -52
  733. data/dist/ice/cpp/src/Ice/ios/StreamEndpointI.cpp +0 -477
  734. data/dist/ice/cpp/src/Ice/ios/StreamEndpointI.h +0 -156
  735. data/dist/ice/cpp/src/Ice/ios/StreamTransceiver.cpp +0 -570
  736. data/dist/ice/cpp/src/Ice/ios/StreamTransceiver.h +0 -93
  737. data/dist/ice/cpp/src/IceDiscovery/generated/IceDiscovery/IceDiscovery.h +0 -1889
  738. data/dist/ice/cpp/src/IceDiscovery/generated/IceDiscovery.cpp +0 -915
  739. data/dist/ice/cpp/src/IceLocatorDiscovery/generated/IceLocatorDiscovery/IceLocatorDiscovery.h +0 -1197
  740. data/dist/ice/cpp/src/IceLocatorDiscovery/generated/IceLocatorDiscovery.cpp +0 -730
  741. data/dist/ice/cpp/src/IceSSL/AcceptorI.cpp +0 -105
  742. data/dist/ice/cpp/src/IceSSL/AcceptorI.h +0 -52
  743. data/dist/ice/cpp/src/IceSSL/CertificateI.cpp +0 -301
  744. data/dist/ice/cpp/src/IceSSL/CertificateI.h +0 -64
  745. data/dist/ice/cpp/src/IceSSL/ConnectorI.cpp +0 -102
  746. data/dist/ice/cpp/src/IceSSL/ConnectorI.h +0 -44
  747. data/dist/ice/cpp/src/IceSSL/EndpointI.cpp +0 -372
  748. data/dist/ice/cpp/src/IceSSL/EndpointI.h +0 -100
  749. data/dist/ice/cpp/src/IceSSL/Instance.cpp +0 -28
  750. data/dist/ice/cpp/src/IceSSL/Instance.h +0 -37
  751. data/dist/ice/cpp/src/IceSSL/InstanceF.h +0 -33
  752. data/dist/ice/cpp/src/IceSSL/OpenSSLCertificateI.cpp +0 -688
  753. data/dist/ice/cpp/src/IceSSL/OpenSSLEngine.cpp +0 -1147
  754. data/dist/ice/cpp/src/IceSSL/OpenSSLEngine.h +0 -59
  755. data/dist/ice/cpp/src/IceSSL/OpenSSLEngineF.h +0 -27
  756. data/dist/ice/cpp/src/IceSSL/OpenSSLPluginI.cpp +0 -127
  757. data/dist/ice/cpp/src/IceSSL/OpenSSLTransceiverI.cpp +0 -1092
  758. data/dist/ice/cpp/src/IceSSL/OpenSSLTransceiverI.h +0 -90
  759. data/dist/ice/cpp/src/IceSSL/OpenSSLUtil.cpp +0 -288
  760. data/dist/ice/cpp/src/IceSSL/OpenSSLUtil.h +0 -58
  761. data/dist/ice/cpp/src/IceSSL/PluginI.cpp +0 -246
  762. data/dist/ice/cpp/src/IceSSL/PluginI.h +0 -67
  763. data/dist/ice/cpp/src/IceSSL/RFC2253.h +0 -62
  764. data/dist/ice/cpp/src/IceSSL/SChannelCertificateI.cpp +0 -721
  765. data/dist/ice/cpp/src/IceSSL/SChannelEngine.cpp +0 -1283
  766. data/dist/ice/cpp/src/IceSSL/SChannelEngine.h +0 -123
  767. data/dist/ice/cpp/src/IceSSL/SChannelEngineF.h +0 -31
  768. data/dist/ice/cpp/src/IceSSL/SChannelPluginI.cpp +0 -73
  769. data/dist/ice/cpp/src/IceSSL/SChannelTransceiverI.cpp +0 -1174
  770. data/dist/ice/cpp/src/IceSSL/SChannelTransceiverI.h +0 -133
  771. data/dist/ice/cpp/src/IceSSL/SSLEngine.cpp +0 -313
  772. data/dist/ice/cpp/src/IceSSL/SSLEngine.h +0 -100
  773. data/dist/ice/cpp/src/IceSSL/SSLEngineF.h +0 -21
  774. data/dist/ice/cpp/src/IceSSL/SecureTransportCertificateI.cpp +0 -999
  775. data/dist/ice/cpp/src/IceSSL/SecureTransportEngine.cpp +0 -1308
  776. data/dist/ice/cpp/src/IceSSL/SecureTransportEngine.h +0 -59
  777. data/dist/ice/cpp/src/IceSSL/SecureTransportEngineF.h +0 -29
  778. data/dist/ice/cpp/src/IceSSL/SecureTransportPluginI.cpp +0 -75
  779. data/dist/ice/cpp/src/IceSSL/SecureTransportTransceiverI.cpp +0 -719
  780. data/dist/ice/cpp/src/IceSSL/SecureTransportTransceiverI.h +0 -92
  781. data/dist/ice/cpp/src/IceSSL/SecureTransportUtil.cpp +0 -868
  782. data/dist/ice/cpp/src/IceSSL/SecureTransportUtil.h +0 -45
  783. data/dist/ice/cpp/src/IceSSL/TrustManager.cpp +0 -236
  784. data/dist/ice/cpp/src/IceSSL/TrustManager.h +0 -46
  785. data/dist/ice/cpp/src/IceSSL/TrustManagerF.h +0 -21
  786. data/dist/ice/cpp/src/IceSSL/Util.cpp +0 -192
  787. data/dist/ice/cpp/src/IceSSL/Util.h +0 -99
  788. data/dist/ice/cpp/src/IceSSL/generated/ConnectionInfo.cpp +0 -75
  789. data/dist/ice/cpp/src/IceSSL/generated/ConnectionInfoF.cpp +0 -61
  790. data/dist/ice/cpp/src/IceSSL/generated/EndpointInfo.cpp +0 -75
  791. data/dist/ice/cpp/src/IceUtil/ConvertUTF.cpp +0 -472
  792. data/dist/ice/cpp/src/IceUtil/ConvertUTF.h +0 -147
  793. data/dist/ice/cpp/src/IceUtil/CtrlCHandler.cpp +0 -259
  794. data/dist/ice/cpp/src/IceUtil/FileUtil.cpp +0 -471
  795. data/dist/ice/cpp/src/IceUtil/InputUtil.cpp +0 -36
  796. data/dist/ice/cpp/src/IceUtil/MutexProtocol.cpp +0 -19
  797. data/dist/ice/cpp/src/IceUtil/OutputUtil.cpp +0 -609
  798. data/dist/ice/cpp/src/IceUtil/Random.cpp +0 -180
  799. data/dist/ice/cpp/src/IceUtil/RecMutex.cpp +0 -238
  800. data/dist/ice/cpp/src/IceUtil/Shared.cpp +0 -71
  801. data/dist/ice/cpp/src/IceUtil/StringConverter.cpp +0 -690
  802. data/dist/ice/cpp/src/IceUtil/StringUtil.cpp +0 -1135
  803. data/dist/ice/cpp/src/IceUtil/ThreadException.cpp +0 -130
  804. data/dist/ice/cpp/src/IceUtil/Time.cpp +0 -307
  805. data/dist/ice/cpp/src/IceUtil/UUID.cpp +0 -165
  806. data/dist/ice/cpp/src/IceUtil/Unicode.cpp +0 -183
  807. data/dist/ice/cpp/src/IceUtil/Unicode.h +0 -43
  808. data/dist/ice/cpp/src/IceUtil/UtilException.cpp +0 -839
  809. data/dist/ice/cpp/src/Slice/CPlusPlusUtil.cpp +0 -1810
  810. data/dist/ice/cpp/src/Slice/CPlusPlusUtil.h +0 -72
  811. data/dist/ice/cpp/src/Slice/Checksum.cpp +0 -447
  812. data/dist/ice/cpp/src/Slice/Checksum.h +0 -21
  813. data/dist/ice/cpp/src/Slice/JavaUtil.cpp +0 -5183
  814. data/dist/ice/cpp/src/Slice/JavaUtil.h +0 -407
  815. data/dist/ice/cpp/src/Slice/MD5.cpp +0 -52
  816. data/dist/ice/cpp/src/Slice/MD5.h +0 -39
  817. data/dist/ice/cpp/src/Slice/MD5I.cpp +0 -393
  818. data/dist/ice/cpp/src/Slice/MD5I.h +0 -91
  819. data/dist/ice/cpp/src/Slice/PHPUtil.cpp +0 -157
  820. data/dist/ice/cpp/src/Slice/PHPUtil.h +0 -36
  821. data/dist/ice/cpp/src/Slice/Python.cpp +0 -830
  822. data/dist/ice/cpp/src/Slice/PythonUtil.cpp +0 -3439
  823. data/dist/ice/cpp/src/Slice/PythonUtil.h +0 -70
  824. data/dist/ice/cpp/src/Slice/Ruby.cpp +0 -350
  825. data/dist/ice/cpp/src/Slice/RubyUtil.cpp +0 -1571
  826. data/dist/ice/cpp/src/Slice/RubyUtil.h +0 -49
  827. data/dist/ice/slice/Glacier2/PermissionsVerifierF.ice +0 -30
  828. data/dist/ice/slice/Glacier2/RouterF.ice +0 -29
  829. data/dist/ice/slice/Ice/Communicator.ice +0 -676
  830. data/dist/ice/slice/Ice/CommunicatorF.ice +0 -31
  831. data/dist/ice/slice/Ice/Connection.ice +0 -516
  832. data/dist/ice/slice/Ice/ConnectionF.ice +0 -33
  833. data/dist/ice/slice/Ice/Current.ice +0 -170
  834. data/dist/ice/slice/Ice/Endpoint.ice +0 -291
  835. data/dist/ice/slice/Ice/EndpointF.ice +0 -43
  836. data/dist/ice/slice/Ice/FacetMap.ice +0 -36
  837. data/dist/ice/slice/Ice/ImplicitContext.ice +0 -119
  838. data/dist/ice/slice/Ice/ImplicitContextF.ice +0 -30
  839. data/dist/ice/slice/Ice/Instrumentation.ice +0 -509
  840. data/dist/ice/slice/Ice/InstrumentationF.ice +0 -38
  841. data/dist/ice/slice/Ice/LocalException.ice +0 -1040
  842. data/dist/ice/slice/Ice/LocatorF.ice +0 -32
  843. data/dist/ice/slice/Ice/Logger.ice +0 -99
  844. data/dist/ice/slice/Ice/LoggerF.ice +0 -31
  845. data/dist/ice/slice/Ice/ObjectAdapter.ice +0 -710
  846. data/dist/ice/slice/Ice/ObjectAdapterF.ice +0 -31
  847. data/dist/ice/slice/Ice/ObjectFactory.ice +0 -71
  848. data/dist/ice/slice/Ice/Plugin.ice +0 -131
  849. data/dist/ice/slice/Ice/PluginF.ice +0 -36
  850. data/dist/ice/slice/Ice/ProcessF.ice +0 -31
  851. data/dist/ice/slice/Ice/Properties.ice +0 -244
  852. data/dist/ice/slice/Ice/PropertiesF.ice +0 -32
  853. data/dist/ice/slice/Ice/RouterF.ice +0 -31
  854. data/dist/ice/slice/Ice/ServantLocator.ice +0 -136
  855. data/dist/ice/slice/Ice/ServantLocatorF.ice +0 -31
  856. data/dist/ice/slice/Ice/ValueFactory.ice +0 -133
  857. data/dist/ice/slice/IceBox/IceBox.ice +0 -216
  858. data/dist/ice/slice/IceGrid/PluginFacade.ice +0 -329
  859. data/dist/ice/slice/IcePatch2/FileInfo.ice +0 -85
  860. data/dist/ice/slice/IcePatch2/FileServer.ice +0 -191
  861. data/dist/lib/Glacier2/PermissionsVerifierF.rb +0 -30
  862. data/dist/lib/Glacier2/RouterF.rb +0 -25
  863. data/dist/lib/Ice/Communicator.rb +0 -87
  864. data/dist/lib/Ice/CommunicatorF.rb +0 -24
  865. data/dist/lib/Ice/Connection.rb +0 -413
  866. data/dist/lib/Ice/ConnectionF.rb +0 -32
  867. data/dist/lib/Ice/Current.rb +0 -141
  868. data/dist/lib/Ice/Endpoint.rb +0 -187
  869. data/dist/lib/Ice/EndpointF.rb +0 -48
  870. data/dist/lib/Ice/FacetMap.rb +0 -24
  871. data/dist/lib/Ice/ImplicitContext.rb +0 -26
  872. data/dist/lib/Ice/ImplicitContextF.rb +0 -24
  873. data/dist/lib/Ice/Instrumentation.rb +0 -169
  874. data/dist/lib/Ice/InstrumentationF.rb +0 -31
  875. data/dist/lib/Ice/LocalException.rb +0 -1031
  876. data/dist/lib/Ice/LocatorF.rb +0 -30
  877. data/dist/lib/Ice/Logger.rb +0 -24
  878. data/dist/lib/Ice/LoggerF.rb +0 -24
  879. data/dist/lib/Ice/ObjectAdapter.rb +0 -29
  880. data/dist/lib/Ice/ObjectAdapterF.rb +0 -24
  881. data/dist/lib/Ice/ObjectFactory.rb +0 -24
  882. data/dist/lib/Ice/Plugin.rb +0 -30
  883. data/dist/lib/Ice/PluginF.rb +0 -28
  884. data/dist/lib/Ice/ProcessF.rb +0 -25
  885. data/dist/lib/Ice/Properties.rb +0 -25
  886. data/dist/lib/Ice/PropertiesF.rb +0 -29
  887. data/dist/lib/Ice/RouterF.rb +0 -25
  888. data/dist/lib/Ice/ServantLocator.rb +0 -26
  889. data/dist/lib/Ice/ServantLocatorF.rb +0 -24
  890. data/dist/lib/Ice/ValueFactory.rb +0 -28
  891. data/dist/lib/IceBox/IceBox.rb +0 -164
  892. data/dist/lib/IceGrid/PluginFacade.rb +0 -35
  893. data/dist/lib/IcePatch2/FileInfo.rb +0 -115
  894. data/dist/lib/IcePatch2/FileServer.rb +0 -123
  895. data/dist/lib/IcePatch2.rb +0 -5
@@ -1,1174 +1,1195 @@
1
- //
2
- // Copyright (c) ZeroC, Inc. All rights reserved.
3
- //
1
+ // Copyright (c) ZeroC, Inc.
4
2
 
5
3
  #ifndef SLICE_PARSER_H
6
4
  #define SLICE_PARSER_H
7
5
 
8
- #include <IceUtil/Shared.h>
9
- #include <IceUtil/Handle.h>
10
- #include <IceUtil/Exception.h>
11
- #include <string>
12
- #include <vector>
6
+ #include <array>
7
+ #include <cstdint>
8
+ #include <functional>
9
+ #include <limits>
13
10
  #include <list>
14
- #include <stack>
15
11
  #include <map>
12
+ #include <memory>
13
+ #include <optional>
14
+ #include <ostream>
16
15
  #include <set>
16
+ #include <stack>
17
17
  #include <stdio.h>
18
+ #include <string>
19
+ #include <string_view>
18
20
 
19
21
  namespace Slice
20
22
  {
21
-
22
- class CompilerException : public ::IceUtil::Exception
23
- {
24
- public:
25
-
26
- CompilerException(const char*, int, const std::string&);
27
- #ifndef ICE_CPP11_COMPILER
28
- ~CompilerException() throw();
29
- #endif
30
- virtual std::string ice_id() const;
31
- virtual void ice_print(std::ostream&) const;
32
- #ifndef ICE_CPP11_MAPPING
33
- virtual CompilerException* ice_clone() const;
34
- #endif
35
- virtual void ice_throw() const;
36
-
37
- std::string reason() const;
38
-
39
- private:
40
-
41
- static const char* _name;
42
- const std::string _reason;
43
- };
44
-
45
- #if defined(_WIN32) && !defined(__MINGW32__)
46
-
47
- const IceUtil::Int64 Int32Max = 0x7fffffffi64;
48
- const IceUtil::Int64 Int32Min = -Int32Max - 1i64;
49
-
50
- #else
51
-
52
- # if defined(INT32_MIN) && defined(INT32_MAX)
53
-
54
- const IceUtil::Int64 Int32Max = INT32_MAX;
55
- const IceUtil::Int64 Int32Min = INT32_MIN;
56
-
57
- # else
58
-
59
- const IceUtil::Int64 Int32Max = 0x7fffffffLL;
60
- const IceUtil::Int64 Int32Min = -Int32Max - 1LL;
61
-
62
- # endif
63
-
64
- #endif
65
-
66
- const IceUtil::Int64 Int16Max = 0x7fff;
67
- const IceUtil::Int64 Int16Min = -Int16Max - 1;
68
- const IceUtil::Int64 ByteMax = 0xff;
69
- const IceUtil::Int64 ByteMin = 0x00;
70
-
71
- enum NodeType
72
- {
73
- Dummy,
74
- Real
75
- };
76
-
77
- //
78
- // Format preference for classes and exceptions.
79
- //
80
- enum FormatType
81
- {
82
- DefaultFormat, // No preference was specified.
83
- CompactFormat, // Minimal format.
84
- SlicedFormat // Full format.
85
- };
86
-
87
- enum WarningCategory
88
- {
89
- All,
90
- Deprecated,
91
- InvalidMetaData
92
- };
93
-
94
- class GrammarBase;
95
- class SyntaxTreeBase;
96
- class Type;
97
- class Builtin;
98
- class Contained;
99
- class Container;
100
- class Module;
101
- class Constructed;
102
- class ClassDecl;
103
- class ClassDef;
104
- class Proxy;
105
- class Exception;
106
- class Struct;
107
- class Operation;
108
- class ParamDecl;
109
- class DataMember;
110
- class Sequence;
111
- class Dictionary;
112
- class Enum;
113
- class Enumerator;
114
- class Const;
115
- class Unit;
116
- class CICompare;
117
- class DerivedToBaseCompare;
118
- class ModulePartialCompare;
119
-
120
- typedef ::IceUtil::Handle<GrammarBase> GrammarBasePtr;
121
- typedef ::IceUtil::Handle<SyntaxTreeBase> SyntaxTreeBasePtr;
122
- typedef ::IceUtil::Handle<Type> TypePtr;
123
- typedef ::IceUtil::Handle<Builtin> BuiltinPtr;
124
- typedef ::IceUtil::Handle<Contained> ContainedPtr;
125
- typedef ::IceUtil::Handle<Container> ContainerPtr;
126
- typedef ::IceUtil::Handle<Module> ModulePtr;
127
- typedef ::IceUtil::Handle<Constructed> ConstructedPtr;
128
- typedef ::IceUtil::Handle<ClassDecl> ClassDeclPtr;
129
- typedef ::IceUtil::Handle<ClassDef> ClassDefPtr;
130
- typedef ::IceUtil::Handle<Proxy> ProxyPtr;
131
- typedef ::IceUtil::Handle<Exception> ExceptionPtr;
132
- typedef ::IceUtil::Handle<Struct> StructPtr;
133
- typedef ::IceUtil::Handle<Operation> OperationPtr;
134
- typedef ::IceUtil::Handle<ParamDecl> ParamDeclPtr;
135
- typedef ::IceUtil::Handle<DataMember> DataMemberPtr;
136
- typedef ::IceUtil::Handle<Sequence> SequencePtr;
137
- typedef ::IceUtil::Handle<Dictionary> DictionaryPtr;
138
- typedef ::IceUtil::Handle<Enum> EnumPtr;
139
- typedef ::IceUtil::Handle<Enumerator> EnumeratorPtr;
140
- typedef ::IceUtil::Handle<Const> ConstPtr;
141
- typedef ::IceUtil::Handle<Unit> UnitPtr;
142
-
143
- typedef std::list<TypePtr> TypeList;
144
- typedef std::list<ExceptionPtr> ExceptionList;
145
- typedef std::set<std::string> StringSet;
146
- typedef std::list<std::string> StringList;
147
- typedef std::pair<TypePtr, std::string> TypeString;
148
- typedef std::list<TypeString> TypeStringList;
149
- typedef std::list<ContainedPtr> ContainedList;
150
- typedef std::list<ModulePtr> ModuleList;
151
- typedef std::list<ConstructedPtr> ConstructedList;
152
- typedef std::list<ClassDefPtr> ClassList;
153
- typedef std::list<ExceptionPtr> ExceptionList;
154
- typedef std::list<StructPtr> StructList;
155
- typedef std::list<SequencePtr> SequenceList;
156
- typedef std::list<DictionaryPtr> DictionaryList;
157
- typedef std::list<EnumPtr> EnumList;
158
- typedef std::list<ConstPtr> ConstList;
159
- typedef std::list<OperationPtr> OperationList;
160
- typedef std::list<DataMemberPtr> DataMemberList;
161
- typedef std::list<ParamDeclPtr> ParamDeclList;
162
- typedef std::list<EnumeratorPtr> EnumeratorList;
163
-
164
- struct ConstDef
165
- {
166
- TypePtr type;
167
- SyntaxTreeBasePtr value;
168
- std::string valueAsString;
169
- std::string valueAsLiteral;
170
- };
171
-
172
- struct OptionalDef
173
- {
174
- TypePtr type;
175
- std::string name;
176
- bool optional;
177
- int tag;
178
- };
179
-
180
- // ----------------------------------------------------------------------
181
- // CICompare -- function object to do case-insensitive string comparison.
182
- // ----------------------------------------------------------------------
183
-
184
- class CICompare
185
- {
186
- public:
187
-
188
- bool operator()(const std::string&, const std::string&) const;
189
- };
190
-
191
- #if defined(__SUNPRO_CC)
192
- bool cICompare(const std::string&, const std::string&);
193
- #endif
194
-
195
- // ----------------------------------------------------------------------
196
- // DerivedToBaseCompare -- function object to do sort exceptions into
197
- // most-derived to least-derived order.
198
- // ----------------------------------------------------------------------
199
-
200
- class DerivedToBaseCompare
201
- {
202
- public:
203
-
204
- bool operator()(const ExceptionPtr&, const ExceptionPtr&) const;
205
- };
206
-
207
- #if defined(__SUNPRO_CC)
208
- bool derivedToBaseCompare(const ExceptionPtr&, const ExceptionPtr&);
209
- #endif
210
-
211
- // ----------------------------------------------------------------------
212
- // ParserVisitor
213
- // ----------------------------------------------------------------------
214
-
215
- class ParserVisitor
216
- {
217
- public:
218
-
219
- virtual ~ParserVisitor() { }
220
- virtual bool visitUnitStart(const UnitPtr&) { return true; }
221
- virtual void visitUnitEnd(const UnitPtr&) { }
222
- virtual bool visitModuleStart(const ModulePtr&) { return true; }
223
- virtual void visitModuleEnd(const ModulePtr&) { }
224
- virtual void visitClassDecl(const ClassDeclPtr&) { }
225
- virtual bool visitClassDefStart(const ClassDefPtr&) { return true; }
226
- virtual void visitClassDefEnd(const ClassDefPtr&) { }
227
- virtual bool visitExceptionStart(const ExceptionPtr&) { return true; }
228
- virtual void visitExceptionEnd(const ExceptionPtr&) { }
229
- virtual bool visitStructStart(const StructPtr&) { return true; }
230
- virtual void visitStructEnd(const StructPtr&) { }
231
- virtual void visitOperation(const OperationPtr&) { }
232
- virtual void visitParamDecl(const ParamDeclPtr&) { }
233
- virtual void visitDataMember(const DataMemberPtr&) { }
234
- virtual void visitSequence(const SequencePtr&) { }
235
- virtual void visitDictionary(const DictionaryPtr&) { }
236
- virtual void visitEnum(const EnumPtr&) { }
237
- virtual void visitConst(const ConstPtr&) { }
238
- };
239
-
240
- // ----------------------------------------------------------------------
241
- // DefinitionContext
242
- // ----------------------------------------------------------------------
243
-
244
- class DefinitionContext : public ::IceUtil::SimpleShared
245
- {
246
- public:
247
-
248
- DefinitionContext(int, const StringList&);
249
-
250
- std::string filename() const;
251
- int includeLevel() const;
252
- bool seenDefinition() const;
253
-
254
- void setFilename(const std::string&);
255
- void setSeenDefinition();
256
-
257
- bool hasMetaData() const;
258
- void setMetaData(const StringList&);
259
- std::string findMetaData(const std::string&) const;
260
- StringList getMetaData() const;
261
-
262
23
  //
263
- // Emit warning unless filtered out by [["suppress-warning"]]
24
+ // Format to use when marshaling a class instance.
264
25
  //
265
- void warning(WarningCategory, const std::string&, int, const std::string&) const;
266
- void warning(WarningCategory, const std::string&, const std::string&, const std::string&) const;
267
-
268
- void error(const std::string&, int, const std::string&) const;
269
- void error(const std::string&, const std::string&, const std::string&) const;
270
-
271
- private:
272
-
273
- bool suppressWarning(WarningCategory) const;
274
- void initSuppressedWarnings();
275
-
276
- int _includeLevel;
277
- StringList _metaData;
278
- std::string _filename;
279
- bool _seenDefinition;
280
- std::set<WarningCategory> _suppressedWarnings;
281
- };
282
- typedef ::IceUtil::Handle<DefinitionContext> DefinitionContextPtr;
283
-
284
- // ----------------------------------------------------------------------
285
- // Comment
286
- // ----------------------------------------------------------------------
287
-
288
- class Comment : public ::IceUtil::SimpleShared
289
- {
290
- public:
291
-
292
- bool isDeprecated() const;
293
- StringList deprecated() const;
294
-
295
- StringList overview() const; // Contains all introductory lines up to the first tag.
296
- StringList misc() const; // Contains unrecognized tags.
297
- StringList seeAlso() const; // Targets of @see tags.
298
-
299
- StringList returns() const; // Description of an operation's return value.
300
- std::map<std::string, StringList> parameters() const; // Parameter descriptions for an op. Key is parameter name.
301
- std::map<std::string, StringList> exceptions() const; // Exception descriptions for an op. Key is exception name.
302
-
303
- private:
304
-
305
- Comment();
306
-
307
- bool _isDeprecated;
308
- StringList _deprecated;
309
- StringList _overview;
310
- StringList _misc;
311
- StringList _seeAlso;
26
+ enum FormatType
27
+ {
28
+ CompactFormat, // Minimal format.
29
+ SlicedFormat // Full format.
30
+ };
312
31
 
313
- StringList _returns;
314
- std::map<std::string, StringList> _parameters;
315
- std::map<std::string, StringList> _exceptions;
32
+ enum WarningCategory
33
+ {
34
+ All,
35
+ Deprecated,
36
+ InvalidMetadata,
37
+ InvalidComment
38
+ };
316
39
 
317
- friend class Contained;
318
- };
319
- typedef ::IceUtil::Handle<Comment> CommentPtr;
40
+ class GrammarBase;
41
+ class SyntaxTreeBase;
42
+ class Metadata;
43
+ class Type;
44
+ class Builtin;
45
+ class Contained;
46
+ class Container;
47
+ class Module;
48
+ class ClassDecl;
49
+ class ClassDef;
50
+ class InterfaceDecl;
51
+ class InterfaceDef;
52
+ class Exception;
53
+ class Struct;
54
+ class Operation;
55
+ class Parameter;
56
+ class DataMember;
57
+ class Sequence;
58
+ class Dictionary;
59
+ class Enum;
60
+ class Enumerator;
61
+ class Const;
62
+ class Unit;
63
+
64
+ using GrammarBasePtr = std::shared_ptr<GrammarBase>;
65
+ using SyntaxTreeBasePtr = std::shared_ptr<SyntaxTreeBase>;
66
+ using MetadataPtr = std::shared_ptr<Metadata>;
67
+ using TypePtr = std::shared_ptr<Type>;
68
+ using BuiltinPtr = std::shared_ptr<Builtin>;
69
+ using ContainedPtr = std::shared_ptr<Contained>;
70
+ using ContainerPtr = std::shared_ptr<Container>;
71
+ using ModulePtr = std::shared_ptr<Module>;
72
+ using ClassDeclPtr = std::shared_ptr<ClassDecl>;
73
+ using ClassDefPtr = std::shared_ptr<ClassDef>;
74
+ using InterfaceDeclPtr = std::shared_ptr<InterfaceDecl>;
75
+ using InterfaceDefPtr = std::shared_ptr<InterfaceDef>;
76
+ using ExceptionPtr = std::shared_ptr<Exception>;
77
+ using StructPtr = std::shared_ptr<Struct>;
78
+ using OperationPtr = std::shared_ptr<Operation>;
79
+ using ParameterPtr = std::shared_ptr<Parameter>;
80
+ using DataMemberPtr = std::shared_ptr<DataMember>;
81
+ using SequencePtr = std::shared_ptr<Sequence>;
82
+ using DictionaryPtr = std::shared_ptr<Dictionary>;
83
+ using EnumPtr = std::shared_ptr<Enum>;
84
+ using EnumeratorPtr = std::shared_ptr<Enumerator>;
85
+ using ConstPtr = std::shared_ptr<Const>;
86
+ using UnitPtr = std::shared_ptr<Unit>;
87
+
88
+ using StringList = std::list<std::string>;
89
+ using MetadataList = std::list<MetadataPtr>;
90
+ using TypeList = std::list<TypePtr>;
91
+ using ContainedList = std::list<ContainedPtr>;
92
+ using ModuleList = std::list<ModulePtr>;
93
+ using ClassList = std::list<ClassDefPtr>;
94
+ using InterfaceList = std::list<InterfaceDefPtr>;
95
+ using ExceptionList = std::list<ExceptionPtr>;
96
+ using EnumList = std::list<EnumPtr>;
97
+ using OperationList = std::list<OperationPtr>;
98
+ using DataMemberList = std::list<DataMemberPtr>;
99
+ using ParameterList = std::list<ParameterPtr>;
100
+ using EnumeratorList = std::list<EnumeratorPtr>;
101
+
102
+ bool containedCompare(const ContainedPtr& lhs, const ContainedPtr& rhs);
103
+ bool containedEqual(const ContainedPtr& lhs, const ContainedPtr& rhs);
104
+
105
+ template<typename T> bool compareTag(const T& lhs, const T& rhs) { return lhs->tag() < rhs->tag(); }
106
+
107
+ // ----------------------------------------------------------------------
108
+ // CICompare -- function object to do case-insensitive string comparison.
109
+ // ----------------------------------------------------------------------
110
+
111
+ class CICompare
112
+ {
113
+ public:
114
+ bool operator()(const std::string& lhs, const std::string& rhs) const;
115
+ };
320
116
 
321
- // ----------------------------------------------------------------------
322
- // GrammarBase
323
- // ----------------------------------------------------------------------
117
+ // ----------------------------------------------------------------------
118
+ // DerivedToBaseCompare -- function object to do sort exceptions into
119
+ // most-derived to least-derived order.
120
+ // ----------------------------------------------------------------------
324
121
 
325
- class GrammarBase : public ::IceUtil::SimpleShared
326
- {
327
- };
122
+ class DerivedToBaseCompare
123
+ {
124
+ public:
125
+ bool operator()(const ExceptionPtr& lhs, const ExceptionPtr& rhs) const;
126
+ };
328
127
 
329
- // ----------------------------------------------------------------------
330
- // SyntaxTreeBase
331
- // ----------------------------------------------------------------------
128
+ // ----------------------------------------------------------------------
129
+ // ParserVisitor
130
+ // ----------------------------------------------------------------------
332
131
 
333
- class SyntaxTreeBase : public GrammarBase
334
- {
335
- public:
132
+ class ParserVisitor
133
+ {
134
+ public:
135
+ virtual ~ParserVisitor() = default;
136
+ virtual bool visitUnitStart(const UnitPtr& /*unit*/) { return true; }
137
+ virtual void visitUnitEnd(const UnitPtr& /*unit*/) {}
138
+ virtual bool visitModuleStart(const ModulePtr& /*module*/) { return true; }
139
+ virtual void visitModuleEnd(const ModulePtr& /*module*/) {}
140
+ virtual void visitClassDecl(const ClassDeclPtr& /*classDecl*/) {}
141
+ virtual bool visitClassDefStart(const ClassDefPtr& /*classDef*/) { return true; }
142
+ virtual void visitClassDefEnd(const ClassDefPtr& /*classDef*/) {}
143
+ virtual void visitInterfaceDecl(const InterfaceDeclPtr& /*interfaceDecl*/) {}
144
+ virtual bool visitInterfaceDefStart(const InterfaceDefPtr& /*interfaceDef*/) { return true; }
145
+ virtual void visitInterfaceDefEnd(const InterfaceDefPtr& /*interfaceDef*/) {}
146
+ virtual bool visitExceptionStart(const ExceptionPtr& /*exceptionDef*/) { return true; }
147
+ virtual void visitExceptionEnd(const ExceptionPtr& /*exceptionDef*/) {}
148
+ virtual bool visitStructStart(const StructPtr& /*structDef*/) { return true; }
149
+ virtual void visitStructEnd(const StructPtr& /*structDef*/) {}
150
+ virtual void visitOperation(const OperationPtr& /*operation*/) {}
151
+ virtual void visitParameter(const ParameterPtr& /*parameter*/) {}
152
+ virtual void visitDataMember(const DataMemberPtr& /*member*/) {}
153
+ virtual void visitSequence(const SequencePtr& /*sequence*/) {}
154
+ virtual void visitDictionary(const DictionaryPtr& /*dictionary*/) {}
155
+ virtual void visitEnum(const EnumPtr& /*enumDef*/) {}
156
+ virtual void visitConst(const ConstPtr& /*constDef*/) {}
157
+
158
+ [[nodiscard]] virtual bool shouldVisitIncludedDefinitions() const { return false; }
159
+ };
336
160
 
337
- virtual void destroy();
338
- UnitPtr unit() const;
339
- DefinitionContextPtr definitionContext() const; // May be nil
340
- virtual void visit(ParserVisitor*, bool);
161
+ // ----------------------------------------------------------------------
162
+ // GrammarBase
163
+ // ----------------------------------------------------------------------
341
164
 
342
- protected:
165
+ class GrammarBase
166
+ {
167
+ public:
168
+ virtual ~GrammarBase() = default;
169
+ };
343
170
 
344
- SyntaxTreeBase(const UnitPtr&, const DefinitionContextPtr& = 0);
171
+ // ----------------------------------------------------------------------
172
+ // Metadata
173
+ // ----------------------------------------------------------------------
345
174
 
346
- UnitPtr _unit;
347
- DefinitionContextPtr _definitionContext;
348
- };
175
+ class Metadata final : public GrammarBase
176
+ {
177
+ public:
178
+ Metadata(std::string rawMetadata, std::string file, int line);
179
+ [[nodiscard]] const std::string& directive() const;
180
+ [[nodiscard]] const std::string& arguments() const;
349
181
 
350
- // ----------------------------------------------------------------------
351
- // Type
352
- // ----------------------------------------------------------------------
182
+ [[nodiscard]] const std::string& file() const;
183
+ [[nodiscard]] int line() const;
353
184
 
354
- class Type : public virtual SyntaxTreeBase
355
- {
356
- public:
185
+ friend std::ostream& operator<<(std::ostream& out, const Metadata& metadata);
357
186
 
358
- virtual bool isLocal() const = 0;
359
- virtual std::string typeId() const = 0;
360
- virtual bool usesClasses() const = 0;
361
- virtual size_t minWireSize() const = 0;
362
- virtual bool isVariableLength() const = 0;
187
+ private:
188
+ std::string _directive;
189
+ std::string _arguments;
363
190
 
364
- protected:
191
+ std::string _file;
192
+ int _line;
193
+ };
365
194
 
366
- Type(const UnitPtr&);
367
- };
195
+ inline std::ostream& operator<<(std::ostream& ostr, const Metadata& metadata)
196
+ {
197
+ ostr << metadata._directive;
198
+ if (!metadata._arguments.empty())
199
+ {
200
+ ostr << ":" << metadata._arguments;
201
+ }
202
+ return ostr;
203
+ }
204
+
205
+ // ----------------------------------------------------------------------
206
+ // DefinitionContext
207
+ // ----------------------------------------------------------------------
208
+
209
+ class DefinitionContext final
210
+ {
211
+ public:
212
+ DefinitionContext(int includeLevel);
213
+
214
+ /// Returns the file name of the definition context, as reported by the preprocessor.
215
+ /// This may be an absolute or relative path.
216
+ ///
217
+ /// @return A reference to the file name.
218
+ [[nodiscard]] const std::string& filename() const;
219
+
220
+ /// Returns the resolved file name of the definition context. This is always an absolute path.
221
+ ///
222
+ /// @return A reference to the resolved file name.
223
+ [[nodiscard]] const std::string& resolvedFilename() const;
224
+ [[nodiscard]] int includeLevel() const;
225
+ [[nodiscard]] bool seenDefinition() const;
226
+
227
+ void setFilename(std::string filename, std::string resolvedFilename);
228
+ void setSeenDefinition();
229
+
230
+ [[nodiscard]] const MetadataList& getMetadata() const;
231
+ void setMetadata(MetadataList metadata);
232
+ void appendMetadata(MetadataList metadata);
233
+ [[nodiscard]] bool hasMetadata(std::string_view directive) const;
234
+ [[nodiscard]] std::optional<std::string> getMetadataArgs(std::string_view directive) const;
235
+
236
+ [[nodiscard]] bool isSuppressed(WarningCategory category) const;
237
+
238
+ private:
239
+ void initSuppressedWarnings();
240
+
241
+ int _includeLevel;
242
+ MetadataList _metadata;
243
+ std::string _filename;
244
+ std::string _resolvedFilename;
245
+ bool _seenDefinition{false};
246
+ std::set<WarningCategory> _suppressedWarnings;
247
+ };
248
+ using DefinitionContextPtr = std::shared_ptr<DefinitionContext>;
368
249
 
369
- // ----------------------------------------------------------------------
370
- // Builtin
371
- // ----------------------------------------------------------------------
250
+ // ----------------------------------------------------------------------
251
+ // DocComment
252
+ // ----------------------------------------------------------------------
372
253
 
373
- class Builtin : public virtual Type
374
- {
375
- public:
254
+ class DocCommentParser;
376
255
 
377
- enum Kind
256
+ class DocComment final
378
257
  {
379
- KindByte,
380
- KindBool,
381
- KindShort,
382
- KindInt,
383
- KindLong,
384
- KindFloat,
385
- KindDouble,
386
- KindString,
387
- KindObject,
388
- KindObjectProxy,
389
- KindLocalObject,
390
- KindValue
258
+ public:
259
+ /// Returns an unparsed 'DocComment' instance containing the provided string.
260
+ /// If the provided string is empty or only contains whitespace, this returns 'nullopt' instead.
261
+ [[nodiscard]] static std::optional<DocComment> createUnparsed(const std::string& rawDocComment);
262
+
263
+ [[nodiscard]] bool isDeprecated() const;
264
+ [[nodiscard]] const StringList& deprecated() const;
265
+
266
+ /// Contains all introductory lines up to the first tag.
267
+ [[nodiscard]] const StringList& overview() const;
268
+ /// Returns the contents of any '@remark' or '@remarks' tags.
269
+ [[nodiscard]] const StringList& remarks() const;
270
+ /// Targets of '@see' tags.
271
+ [[nodiscard]] const StringList& seeAlso() const;
272
+
273
+ /// Description of an operation's return value.
274
+ [[nodiscard]] const StringList& returns() const;
275
+ /// Parameter descriptions for an op. Key is parameter name.
276
+ [[nodiscard]] const std::map<std::string, StringList>& parameters() const;
277
+ /// Exception descriptions for an op. Key is exception name.
278
+ [[nodiscard]] const std::map<std::string, StringList>& exceptions() const;
279
+
280
+ private:
281
+ friend class DocCommentParser;
282
+
283
+ StringList _rawDocCommentLines;
284
+
285
+ bool _isDeprecated{false};
286
+ StringList _deprecated;
287
+ StringList _overview;
288
+ StringList _remarks;
289
+ StringList _seeAlso;
290
+
291
+ StringList _returns;
292
+ std::map<std::string, StringList> _parameters;
293
+ std::map<std::string, StringList> _exceptions;
391
294
  };
392
295
 
393
- virtual bool isLocal() const;
394
- virtual std::string typeId() const;
395
- virtual bool usesClasses() const;
396
- virtual size_t minWireSize() const;
397
- virtual bool isVariableLength() const;
296
+ // ----------------------------------------------------------------------
297
+ // SyntaxTreeBase
298
+ // ----------------------------------------------------------------------
398
299
 
399
- Kind kind() const;
400
- std::string kindAsString() const;
300
+ class SyntaxTreeBase : public GrammarBase
301
+ {
302
+ public:
303
+ [[nodiscard]] virtual UnitPtr unit() const = 0;
304
+ };
401
305
 
402
- static const char* builtinTable[];
306
+ // ----------------------------------------------------------------------
307
+ // Type
308
+ // ----------------------------------------------------------------------
403
309
 
404
- protected:
310
+ class Type : public virtual SyntaxTreeBase
311
+ {
312
+ public:
313
+ [[nodiscard]] virtual bool isClassType() const;
314
+ [[nodiscard]] virtual bool usesClasses() const;
315
+ [[nodiscard]] virtual size_t minWireSize() const = 0;
316
+ [[nodiscard]] virtual std::string getOptionalFormat() const = 0;
317
+ [[nodiscard]] virtual bool isVariableLength() const = 0;
318
+ };
405
319
 
406
- Builtin(const UnitPtr&, Kind);
407
- friend class Unit;
320
+ // ----------------------------------------------------------------------
321
+ // Builtin
322
+ // ----------------------------------------------------------------------
408
323
 
409
- Kind _kind;
410
- };
324
+ class Builtin final : public Type
325
+ {
326
+ public:
327
+ enum Kind
328
+ {
329
+ KindByte,
330
+ KindBool,
331
+ KindShort,
332
+ KindInt,
333
+ KindLong,
334
+ KindFloat,
335
+ KindDouble,
336
+ KindString,
337
+ KindObjectProxy,
338
+ KindValue
339
+ };
340
+
341
+ Builtin(UnitPtr unit, Kind kind);
342
+ void destroy();
343
+ [[nodiscard]] UnitPtr unit() const final;
344
+
345
+ [[nodiscard]] bool isClassType() const final;
346
+ [[nodiscard]] size_t minWireSize() const final;
347
+ [[nodiscard]] std::string getOptionalFormat() const final;
348
+ [[nodiscard]] bool isVariableLength() const final;
349
+
350
+ [[nodiscard]] bool isNumericType() const;
351
+ [[nodiscard]] bool isIntegralType() const;
352
+
353
+ [[nodiscard]] Kind kind() const;
354
+ [[nodiscard]] std::string kindAsString() const;
355
+ static std::optional<Kind> kindFromString(std::string_view str);
356
+
357
+ // NOLINTNEXTLINE(cert-err58-cpp)
358
+ inline static const std::array<std::string, 10> builtinTable =
359
+ {"byte", "bool", "short", "int", "long", "float", "double", "string", "Object*", "Value"};
360
+
361
+ private:
362
+ const Kind _kind;
363
+ UnitPtr _unit;
364
+ };
411
365
 
412
- // ----------------------------------------------------------------------
413
- // Contained
414
- // ----------------------------------------------------------------------
366
+ // ----------------------------------------------------------------------
367
+ // Contained
368
+ // ----------------------------------------------------------------------
415
369
 
416
- class Contained : public virtual SyntaxTreeBase
417
- {
418
- public:
419
-
420
- ContainerPtr container() const;
421
- std::string name() const;
422
- std::string scoped() const;
423
- std::string scope() const;
424
- std::string flattenedScope() const;
425
- std::string file() const;
426
- std::string line() const;
427
- std::string comment() const;
428
- CommentPtr parseComment(bool) const;
429
-
430
- int includeLevel() const;
431
- void updateIncludeLevel();
432
-
433
- bool hasMetaData(const std::string&) const;
434
- bool findMetaData(const std::string&, std::string&) const;
435
- std::list<std::string> getMetaData() const;
436
- void setMetaData(const std::list<std::string>&);
437
- void addMetaData(const std::string&); // TODO: remove this method once "cs:" and "vb:" are hard errors.
438
-
439
- static FormatType parseFormatMetaData(const std::list<std::string>&);
440
-
441
- enum ContainedType
370
+ class Contained : public virtual SyntaxTreeBase
442
371
  {
443
- ContainedTypeSequence,
444
- ContainedTypeDictionary,
445
- ContainedTypeEnum,
446
- ContainedTypeEnumerator,
447
- ContainedTypeModule,
448
- ContainedTypeClass,
449
- ContainedTypeException,
450
- ContainedTypeStruct,
451
- ContainedTypeOperation,
452
- ContainedTypeParamDecl,
453
- ContainedTypeDataMember,
454
- ContainedTypeConstant
455
- };
456
- virtual ContainedType containedType() const = 0;
372
+ public:
373
+ virtual void destroy() {}
374
+ [[nodiscard]] ContainerPtr container() const;
375
+ [[nodiscard]] bool isTopLevel() const;
376
+ [[nodiscard]] virtual ModulePtr getTopLevelModule() const;
457
377
 
458
- virtual bool uses(const ContainedPtr&) const = 0;
459
- virtual std::string kindOf() const = 0;
378
+ // Functions for getting the Slice name of an element.
460
379
 
461
- bool operator<(const Contained&) const;
462
- bool operator==(const Contained&) const;
380
+ /// Returns the Slice identifier of this element.
381
+ [[nodiscard]] std::string name() const;
463
382
 
464
- protected:
383
+ /// Returns the Slice scope that this element is contained within (with a trailing '::').
384
+ [[nodiscard]] std::string scope() const;
465
385
 
466
- Contained(const ContainerPtr&, const std::string&);
467
- friend class Container;
386
+ /// Returns the fully-scoped Slice identifier of this element (equivalent to `scope() + name()`).
387
+ [[nodiscard]] std::string scoped() const;
468
388
 
469
- ContainerPtr _container;
470
- std::string _name;
471
- std::string _scoped;
472
- std::string _file;
473
- std::string _line;
474
- std::string _comment;
475
- int _includeLevel;
476
- std::list<std::string> _metaData;
477
- };
389
+ // Functions for getting the mapped name of an element.
478
390
 
479
- // ----------------------------------------------------------------------
480
- // Container
481
- // ----------------------------------------------------------------------
391
+ /// Returns the mapped identifier that this element will use in the target language.
392
+ [[nodiscard]] std::string mappedName() const;
482
393
 
483
- class Container : public virtual SyntaxTreeBase
484
- {
485
- public:
486
-
487
- virtual void destroy();
488
- ModulePtr createModule(const std::string&);
489
- ClassDefPtr createClassDef(const std::string&, int, bool, const ClassList&, bool);
490
- ClassDeclPtr createClassDecl(const std::string&, bool, bool);
491
- ExceptionPtr createException(const std::string&, const ExceptionPtr&, bool, NodeType = Real);
492
- StructPtr createStruct(const std::string&, bool, NodeType = Real);
493
- SequencePtr createSequence(const std::string&, const TypePtr&, const StringList&, bool, NodeType = Real);
494
- DictionaryPtr createDictionary(const std::string&, const TypePtr&, const StringList&, const TypePtr&,
495
- const StringList&, bool, NodeType = Real);
496
- EnumPtr createEnum(const std::string&, bool, NodeType = Real);
497
- EnumeratorPtr createEnumerator(const std::string&);
498
- EnumeratorPtr createEnumerator(const std::string&, int);
499
- ConstPtr createConst(const std::string, const TypePtr&, const StringList&, const SyntaxTreeBasePtr&,
500
- const std::string&, const std::string&, NodeType = Real);
501
- TypeList lookupType(const std::string&, bool = true);
502
- TypeList lookupTypeNoBuiltin(const std::string&, bool = true, bool = false);
503
- ContainedList lookupContained(const std::string&, bool = true);
504
- ExceptionPtr lookupException(const std::string&, bool = true);
505
- UnitPtr unit() const;
506
- ModuleList modules() const;
507
- ClassList classes() const;
508
- ExceptionList exceptions() const;
509
- StructList structs() const;
510
- SequenceList sequences() const;
511
- DictionaryList dictionaries() const;
512
- EnumList enums() const;
513
- EnumeratorList enumerators() const;
514
- EnumeratorList enumerators(const std::string&) const;
515
- ConstList consts() const;
516
- ContainedList contents() const;
517
- bool hasNonLocalClassDecls() const;
518
- bool hasNonLocalClassDefs() const;
519
- bool hasLocalClassDefsWithAsync() const;
520
- bool hasNonLocalSequences() const;
521
- bool hasNonLocalExceptions() const;
522
- bool hasStructs() const;
523
- bool hasExceptions() const;
524
- bool hasDictionaries() const;
525
- bool hasOnlyDictionaries(DictionaryList&) const;
526
- bool hasClassDecls() const;
527
- bool hasClassDefs() const;
528
- bool hasLocalClassDefs() const;
529
- bool hasNonLocalInterfaceDefs() const;
530
- bool hasValueDefs() const;
531
- bool hasOnlyClassDecls() const;
532
- bool hasOperations() const; // interfaces or classes with operations
533
- bool hasNonLocalAbstractClassDefs() const; // interfaces or abstract classes
534
- bool hasNonLocalDataOnlyClasses() const;
535
- bool hasOtherConstructedOrExceptions() const; // Exceptions or constructed types other than classes.
536
- bool hasContentsWithMetaData(const std::string&) const;
537
- bool hasAsyncOps() const;
538
- bool hasNonLocalContained(Contained::ContainedType) const;
539
- std::string thisScope() const;
540
- void mergeModules();
541
- void sort();
542
- void sortContents(bool);
543
- virtual void visit(ParserVisitor*, bool);
544
- void containerRecDependencies(std::set<ConstructedPtr>&); // Internal operation, don't use directly.
545
-
546
- bool checkIntroduced(const std::string&, ContainedPtr = 0);
547
- bool nameIsLegal(const std::string&, const char *);
548
- bool checkForGlobalDef(const std::string&, const char *);
549
-
550
- protected:
551
-
552
- Container(const UnitPtr&);
553
-
554
- bool checkInterfaceAndLocal(const std::string&, bool, bool, bool, bool, bool);
555
- bool checkGlobalMetaData(const StringList&, const StringList&);
556
- bool validateConstant(const std::string&, const TypePtr&, SyntaxTreeBasePtr&, const std::string&, bool);
557
- EnumeratorPtr validateEnumerator(const std::string&);
558
-
559
- ContainedList _contents;
560
- std::map<std::string, ContainedPtr, CICompare> _introducedMap;
561
- };
562
-
563
- // ----------------------------------------------------------------------
564
- // Module
565
- // ----------------------------------------------------------------------
566
-
567
- class Module : public virtual Container, public virtual Contained
568
- {
569
- public:
394
+ /// Returns the mapped name for this element in the target language if it has been customized with the
395
+ /// 'lang:name' metadata, or `nullopt` if it doesn't have a custom name.
396
+ [[nodiscard]] std::optional<std::string> customMappedName() const;
570
397
 
571
- virtual ContainedType containedType() const;
572
- virtual bool uses(const ContainedPtr&) const;
573
- virtual std::string kindOf() const;
574
- virtual void visit(ParserVisitor*, bool);
398
+ /// Returns the mapped fully-scoped identifier that this element will use in the target language.
399
+ /// @param separator This string will be used to separate scope segments.
400
+ /// @param leading If true, the returned string will have a leading `separator` (defaults to false).
401
+ /// @remark Equivalent to `mappedScope(separator, leading) + mappedName()`.
402
+ [[nodiscard]] std::string mappedScoped(const std::string& separator, bool leading = false) const;
575
403
 
576
- protected:
404
+ /// Returns the mapped scope that this element will be generated in in the target language.
405
+ /// @param separator This string will be used to separate scope segments.
406
+ /// @param leading If true, the returned string will have a leading `separator` (defaults to false).
407
+ [[nodiscard]] std::string mappedScope(const std::string& separator, bool leading = false) const;
577
408
 
578
- Module(const ContainerPtr&, const std::string&);
579
- friend class Container;
580
- };
409
+ // Functions to get information about where a Slice element was defined at.
581
410
 
582
- // ----------------------------------------------------------------------
583
- // Constructed
584
- // ----------------------------------------------------------------------
411
+ [[nodiscard]] const std::string& file() const;
412
+ [[nodiscard]] int line() const;
585
413
 
586
- class Constructed : public virtual Type, public virtual Contained
587
- {
588
- public:
414
+ [[nodiscard]] const std::optional<DocComment>& docComment() const;
589
415
 
590
- virtual bool isLocal() const;
591
- virtual std::string typeId() const;
592
- virtual bool isVariableLength() const = 0;
593
- ConstructedList dependencies();
594
- virtual void recDependencies(std::set<ConstructedPtr>&) = 0; // Internal operation, don't use directly.
416
+ [[nodiscard]] int includeLevel() const;
417
+ [[nodiscard]] DefinitionContextPtr definitionContext() const;
418
+ [[nodiscard]] UnitPtr unit() const final;
595
419
 
596
- protected:
420
+ [[nodiscard]] virtual const MetadataList& getMetadata() const;
421
+ virtual void setMetadata(MetadataList metadata);
422
+ virtual void appendMetadata(MetadataList metadata);
423
+ [[nodiscard]] bool hasMetadata(std::string_view directive) const;
424
+ [[nodiscard]] std::optional<std::string> getMetadataArgs(std::string_view directive) const;
597
425
 
598
- Constructed(const ContainerPtr&, const std::string&, bool);
426
+ [[nodiscard]] std::optional<FormatType> parseFormatMetadata() const;
599
427
 
600
- bool _local;
601
- };
428
+ /// Returns true if this item is deprecated, due to the presence of 'deprecated' metadata.
429
+ /// @return `true` if this item has 'deprecated' metadata on it, `false` otherwise.
430
+ [[nodiscard]] bool isDeprecated() const;
602
431
 
603
- // ----------------------------------------------------------------------
604
- // ClassDecl
605
- // ----------------------------------------------------------------------
432
+ /// If this item is deprecated, return its deprecation message (if present).
433
+ /// This is the string argument that can be optionally provided with 'deprecated' metadata.
434
+ /// @return The message provided to the 'deprecated' metadata, if present.
435
+ [[nodiscard]] std::optional<std::string> getDeprecationReason() const;
606
436
 
607
- class ClassDecl : public virtual Constructed
608
- {
609
- public:
437
+ virtual void visit(ParserVisitor* visitor) = 0;
438
+ [[nodiscard]] virtual std::string kindOf() const = 0;
610
439
 
611
- virtual void destroy();
612
- ClassDefPtr definition() const;
613
- bool isInterface() const;
614
- virtual ContainedType containedType() const;
615
- virtual bool uses(const ContainedPtr&) const;
616
- virtual bool usesClasses() const;
617
- virtual size_t minWireSize() const;
618
- virtual bool isVariableLength() const;
619
- virtual void visit(ParserVisitor*, bool);
620
- virtual std::string kindOf() const;
621
- virtual void recDependencies(std::set<ConstructedPtr>&); // Internal operation, don't use directly.
440
+ protected:
441
+ friend class DocCommentParser;
622
442
 
623
- static void checkBasesAreLegal(const std::string&, bool, bool, const ClassList&, const UnitPtr&);
443
+ Contained(const ContainerPtr& container, std::string name);
624
444
 
625
- protected:
445
+ ContainerPtr _container;
446
+ std::string _name;
447
+ std::string _file;
448
+ int _line;
449
+ std::optional<DocComment> _docComment;
450
+ int _includeLevel;
451
+ DefinitionContextPtr _definitionContext;
452
+ MetadataList _metadata;
453
+ };
626
454
 
627
- ClassDecl(const ContainerPtr&, const std::string&, bool, bool);
628
- friend class Container;
629
- friend class ClassDef;
455
+ // ----------------------------------------------------------------------
456
+ // Container
457
+ // ----------------------------------------------------------------------
630
458
 
631
- ClassDefPtr _definition;
632
- bool _interface;
459
+ class Container : public virtual SyntaxTreeBase, public std::enable_shared_from_this<Container>
460
+ {
461
+ public:
462
+ void destroyContents();
463
+ ModulePtr createModule(const std::string& name, bool nestedSyntax);
464
+ [[nodiscard]] ClassDefPtr createClassDef(const std::string& name, std::int32_t id, const ClassDefPtr& base);
465
+ [[nodiscard]] ClassDeclPtr createClassDecl(const std::string& name);
466
+ [[nodiscard]] InterfaceDefPtr createInterfaceDef(const std::string& name, const InterfaceList& bases);
467
+ [[nodiscard]] InterfaceDeclPtr createInterfaceDecl(const std::string& name);
468
+ [[nodiscard]] ExceptionPtr createException(const std::string& name, const ExceptionPtr& base);
469
+ [[nodiscard]] StructPtr createStruct(const std::string& name);
470
+ [[nodiscard]] SequencePtr createSequence(const std::string& name, const TypePtr& type, MetadataList metadata);
471
+ [[nodiscard]] DictionaryPtr createDictionary(
472
+ const std::string& name,
473
+ const TypePtr& keyType,
474
+ MetadataList keyMetadata,
475
+ const TypePtr& valueType,
476
+ MetadataList valueMetadata);
477
+ [[nodiscard]] EnumPtr createEnum(const std::string& name);
478
+ [[nodiscard]] ConstPtr createConst(
479
+ const std::string& name,
480
+ const TypePtr& constType,
481
+ MetadataList metadata,
482
+ const SyntaxTreeBasePtr& valueType,
483
+ const std::string& value);
484
+ [[nodiscard]] TypePtr lookupType(const std::string& identifier);
485
+ [[nodiscard]] TypePtr
486
+ lookupTypeNoBuiltin(const std::string& identifier, bool emitErrors, bool ignoreUndefined = false);
487
+ [[nodiscard]] ContainedList lookupContained(const std::string& identifier, bool emitErrors);
488
+ [[nodiscard]] InterfaceDefPtr lookupInterfaceDef(const std::string& identifier, bool emitErrors);
489
+ [[nodiscard]] ExceptionPtr lookupException(const std::string& identifier, bool emitErrors);
490
+ [[nodiscard]] ModuleList modules() const;
491
+ [[nodiscard]] InterfaceList interfaces() const;
492
+ [[nodiscard]] EnumList enums() const;
493
+ [[nodiscard]] EnumeratorList enumerators() const;
494
+ [[nodiscard]] EnumeratorList enumerators(const std::string& identifier) const;
495
+ [[nodiscard]] ContainedList contents() const;
496
+ void visitContents(ParserVisitor* visitor);
497
+
498
+ /// Reports an error when a Slice definition would retroactively change the meaning of an identifier.
499
+ /// For example:
500
+ /// ```
501
+ /// module Outer {
502
+ /// const int H = 12;
503
+ /// module Inner {
504
+ /// const int G = H;
505
+ /// class H {} // error: retroactively changes the meaning of 'H'
506
+ /// }
507
+ /// }
508
+ /// ```
509
+ /// Because the parser parses in order, the meaning of 'H' in 'Inner' is ordering dependent, which is not good.
510
+ /// The user should disambiguate by qualifying the type-reference as 'Outer::H'.
511
+ void checkHasChangedMeaning(const std::string& name, ContainedPtr namedThing = nullptr);
512
+
513
+ /// Returns `true` if this container is the global scope (i.e. it's of type `Unit`), and `false` otherwise.
514
+ /// If false, we emit an error message. So this function should only be called for types which cannot appear at
515
+ /// global scope... so everything except for `Module`s.
516
+ bool checkForGlobalDefinition(const char* definitionKindPlural);
517
+
518
+ /// Returns true if this contains elements of the specified type.
519
+ /// This check is recursive, so it will still return true even if the type is only contained indirectly.
520
+ template<typename T> [[nodiscard]] bool contains() const
521
+ {
522
+ for (const auto& p : contents())
523
+ {
524
+ if (std::dynamic_pointer_cast<T>(p))
525
+ {
526
+ return true;
527
+ }
528
+ ContainerPtr childContainer = std::dynamic_pointer_cast<Container>(p);
529
+ if (childContainer && childContainer->contains<T>())
530
+ {
531
+ return true;
532
+ }
533
+ }
534
+ return false;
535
+ }
536
+
537
+ [[nodiscard]] std::string thisScope() const;
538
+
539
+ protected:
540
+ bool validateConstant(
541
+ const std::string& name,
542
+ const TypePtr& type,
543
+ SyntaxTreeBasePtr& valueType,
544
+ const std::string& valueString,
545
+ bool isConstant);
546
+
547
+ ContainedList _contents;
548
+ std::map<std::string, ContainedPtr, CICompare> _introducedMap;
549
+ };
633
550
 
634
- private:
551
+ // ----------------------------------------------------------------------
552
+ // Module
553
+ // ----------------------------------------------------------------------
635
554
 
636
- typedef std::list<ClassList> GraphPartitionList;
637
- typedef std::list<StringList> StringPartitionList;
555
+ class Module final : public Container, public Contained
556
+ {
557
+ public:
558
+ Module(const ContainerPtr& container, const std::string& name, bool nestedSyntax);
559
+ [[nodiscard]] std::string kindOf() const final;
560
+ [[nodiscard]] ModulePtr getTopLevelModule() const final;
561
+ void visit(ParserVisitor* visitor) final;
562
+ void destroy() final;
563
+
564
+ const bool usesNestedSyntax;
565
+ };
638
566
 
639
- static bool isInList(const GraphPartitionList&, const ClassDefPtr);
640
- static void addPartition(GraphPartitionList&, GraphPartitionList::reverse_iterator, const ClassDefPtr);
641
- static StringPartitionList toStringPartitionList(const GraphPartitionList&);
642
- static void checkPairIntersections(const StringPartitionList&, const std::string&, const UnitPtr&);
643
- };
567
+ // ----------------------------------------------------------------------
568
+ // ClassDecl
569
+ // ----------------------------------------------------------------------
644
570
 
645
- // ----------------------------------------------------------------------
646
- // Operation
647
- // ----------------------------------------------------------------------
571
+ class ClassDecl final : public Contained, public Type, public std::enable_shared_from_this<ClassDecl>
572
+ {
573
+ public:
574
+ ClassDecl(const ContainerPtr& container, const std::string& name);
575
+ void destroy() final;
576
+ [[nodiscard]] ClassDefPtr definition() const;
577
+ [[nodiscard]] bool isClassType() const final;
578
+ [[nodiscard]] size_t minWireSize() const final;
579
+ [[nodiscard]] std::string getOptionalFormat() const final;
580
+ [[nodiscard]] bool isVariableLength() const final;
581
+ void visit(ParserVisitor* visitor) final;
582
+ [[nodiscard]] std::string kindOf() const final;
583
+
584
+ private:
585
+ friend class Container;
586
+
587
+ ClassDefPtr _definition;
588
+ };
648
589
 
649
- class Operation : public virtual Contained, public virtual Container
650
- {
651
- public:
590
+ // ----------------------------------------------------------------------
591
+ // ClassDef
592
+ // ----------------------------------------------------------------------
652
593
 
653
594
  //
654
- // Note: The order of definitions here *must* match the order of
655
- // definitions of ::Ice::OperationMode in slice/Ice/Current.ice!
595
+ // Note: For the purpose of this parser, a class definition is not
596
+ // considered to be a type, but a class declaration is. And each class
597
+ // definition has at least one class declaration (but not vice versa),
598
+ // so if you need the class as a "type", use the
599
+ // declaration() operation to navigate to the class declaration.
656
600
  //
657
- enum Mode
601
+ class ClassDef final : public Container, public Contained
658
602
  {
659
- Normal,
660
- Nonmutating,
661
- Idempotent
603
+ public:
604
+ ClassDef(const ContainerPtr& container, const std::string& name, std::int32_t id, ClassDefPtr base);
605
+ void destroy() final;
606
+ [[nodiscard]] DataMemberPtr createDataMember(
607
+ const std::string& name,
608
+ const TypePtr& type,
609
+ bool isOptional,
610
+ std::int32_t tag,
611
+ SyntaxTreeBasePtr defaultValueType,
612
+ std::optional<std::string> defaultValueString);
613
+ [[nodiscard]] ClassDeclPtr declaration() const;
614
+ [[nodiscard]] ClassDefPtr base() const;
615
+ [[nodiscard]] ClassList allBases() const;
616
+ [[nodiscard]] DataMemberList dataMembers() const;
617
+ [[nodiscard]] DataMemberList orderedOptionalDataMembers() const;
618
+ [[nodiscard]] DataMemberList allDataMembers() const;
619
+ [[nodiscard]] DataMemberList classDataMembers() const;
620
+ [[nodiscard]] bool canBeCyclic() const;
621
+ void visit(ParserVisitor* visitor) final;
622
+ [[nodiscard]] std::int32_t compactId() const;
623
+ [[nodiscard]] std::string kindOf() const final;
624
+
625
+ // Class metadata is always stored on the underlying decl type, not the definition.
626
+ // So we override these `xMetadata` functions to forward to `_declarations->xMetadata()` instead.
627
+ [[nodiscard]] const MetadataList& getMetadata() const final;
628
+ void setMetadata(MetadataList metadata) final;
629
+ void appendMetadata(MetadataList metadata) final;
630
+
631
+ private:
632
+ friend class Container;
633
+
634
+ ClassDeclPtr _declaration;
635
+ ClassDefPtr _base;
636
+ std::int32_t _compactId;
662
637
  };
663
638
 
664
- TypePtr returnType() const;
665
- bool returnIsOptional() const;
666
- int returnTag() const;
667
- Mode mode() const;
668
- Mode sendMode() const;
669
- bool hasMarshaledResult() const;
670
- ParamDeclPtr createParamDecl(const std::string&, const TypePtr&, bool, bool, int);
671
- ParamDeclList parameters() const;
672
- ParamDeclList inParameters() const;
673
- void inParameters(ParamDeclList&, ParamDeclList&) const;
674
- ParamDeclList outParameters() const;
675
- void outParameters(ParamDeclList&, ParamDeclList&) const;
676
- ExceptionList throws() const;
677
- void setExceptionList(const ExceptionList&);
678
- virtual ContainedType containedType() const;
679
- virtual bool uses(const ContainedPtr&) const;
680
- bool sendsClasses(bool) const;
681
- bool returnsClasses(bool) const;
682
- bool returnsData() const;
683
- bool returnsMultipleValues() const;
684
- bool sendsOptionals() const;
685
- int attributes() const;
686
- FormatType format() const;
687
- virtual std::string kindOf() const;
688
- virtual void visit(ParserVisitor*, bool);
689
-
690
- protected:
691
-
692
- Operation(const ContainerPtr&, const std::string&, const TypePtr&, bool, int, Mode);
693
- friend class ClassDef;
694
-
695
- TypePtr _returnType;
696
- bool _returnIsOptional;
697
- int _returnTag;
698
- ExceptionList _throws;
699
- Mode _mode;
700
- };
701
-
702
- // ----------------------------------------------------------------------
703
- // ClassDef
704
- // ----------------------------------------------------------------------
705
-
706
- //
707
- // Note: For the purpose of this parser, a class definition is not
708
- // considered to be a type, but a class declaration is. And each class
709
- // definition has at least one class declaration (but not vice versa),
710
- // so if you need the class as a "constructed type", use the
711
- // declaration() operation to navigate to the class declaration.
712
- //
713
- class ClassDef : public virtual Container, public virtual Contained
714
- {
715
- public:
716
-
717
- virtual void destroy();
718
- OperationPtr createOperation(const std::string&, const TypePtr&, bool, int, Operation::Mode = Operation::Normal);
719
- DataMemberPtr createDataMember(const std::string&, const TypePtr&, bool, int, const SyntaxTreeBasePtr&,
720
- const std::string&, const std::string&);
721
- ClassDeclPtr declaration() const;
722
- ClassList bases() const;
723
- ClassList allBases() const;
724
- OperationList operations() const;
725
- OperationList allOperations() const;
726
- DataMemberList dataMembers() const;
727
- DataMemberList orderedOptionalDataMembers() const;
728
- DataMemberList allDataMembers() const;
729
- DataMemberList classDataMembers() const;
730
- DataMemberList allClassDataMembers() const;
731
- bool canBeCyclic() const;
732
- bool isAbstract() const;
733
- bool isInterface() const;
734
- bool isA(const std::string&) const;
735
- virtual bool isLocal() const;
736
- bool hasDataMembers() const;
737
- bool hasOperations() const;
738
- bool hasDefaultValues() const;
739
- bool inheritsMetaData(const std::string&) const;
740
- bool hasBaseDataMembers() const;
741
- virtual ContainedType containedType() const;
742
- virtual bool uses(const ContainedPtr&) const;
743
- virtual std::string kindOf() const;
744
- virtual void visit(ParserVisitor*, bool);
745
- int compactId() const;
746
- bool isDelegate() const;
747
-
748
- protected:
749
-
750
- ClassDef(const ContainerPtr&, const std::string&, int, bool, const ClassList&, bool);
751
- friend class Container;
752
-
753
- ClassDeclPtr _declaration;
754
- bool _interface;
755
- bool _hasDataMembers;
756
- bool _hasOperations;
757
- ClassList _bases;
758
- bool _local;
759
- int _compactId;
760
- };
761
-
762
- // ----------------------------------------------------------------------
763
- // Proxy
764
- // ----------------------------------------------------------------------
765
-
766
- class Proxy : public virtual Type
767
- {
768
- public:
769
-
770
- virtual bool isLocal() const;
771
- virtual std::string typeId() const;
772
- virtual bool usesClasses() const;
773
- virtual size_t minWireSize() const;
774
- virtual bool isVariableLength() const;
775
-
776
- ClassDeclPtr _class() const;
777
-
778
- Proxy(const ClassDeclPtr&);
779
-
780
- protected:
781
-
782
- ClassDeclPtr _classDecl;
783
- };
639
+ // ----------------------------------------------------------------------
640
+ // InterfaceDecl
641
+ // ----------------------------------------------------------------------
784
642
 
785
- // ----------------------------------------------------------------------
786
- // Exception
787
- // ----------------------------------------------------------------------
788
-
789
- // No inheritance from Constructed, as this is not a Type
790
- class Exception : public virtual Container, public virtual Contained
791
- {
792
- public:
793
-
794
- virtual void destroy();
795
- DataMemberPtr createDataMember(const std::string&, const TypePtr&, bool, int, const SyntaxTreeBasePtr&,
796
- const std::string&, const std::string&);
797
- DataMemberList dataMembers() const;
798
- DataMemberList orderedOptionalDataMembers() const;
799
- DataMemberList allDataMembers() const;
800
- DataMemberList classDataMembers() const;
801
- DataMemberList allClassDataMembers() const;
802
- ExceptionPtr base() const;
803
- ExceptionList allBases() const;
804
- virtual bool isBaseOf(const ExceptionPtr&) const;
805
- virtual bool isLocal() const;
806
- virtual ContainedType containedType() const;
807
- virtual bool uses(const ContainedPtr&) const;
808
- bool usesClasses(bool) const;
809
- bool hasDefaultValues() const;
810
- bool inheritsMetaData(const std::string&) const;
811
- bool hasBaseDataMembers() const;
812
- virtual std::string kindOf() const;
813
- virtual void visit(ParserVisitor*, bool);
814
-
815
- protected:
816
-
817
- Exception(const ContainerPtr&, const std::string&, const ExceptionPtr&, bool);
818
- friend class Container;
819
-
820
- ExceptionPtr _base;
821
- bool _local;
822
- };
823
-
824
- // ----------------------------------------------------------------------
825
- // Struct
826
- // ----------------------------------------------------------------------
827
-
828
- class Struct : public virtual Container, public virtual Constructed
829
- {
830
- public:
831
-
832
- DataMemberPtr createDataMember(const std::string&, const TypePtr&, bool, int, const SyntaxTreeBasePtr&,
833
- const std::string&, const std::string&);
834
- DataMemberList dataMembers() const;
835
- DataMemberList classDataMembers() const;
836
- virtual ContainedType containedType() const;
837
- virtual bool uses(const ContainedPtr&) const;
838
- virtual bool usesClasses() const;
839
- virtual size_t minWireSize() const;
840
- virtual bool isVariableLength() const;
841
- bool hasDefaultValues() const;
842
- virtual std::string kindOf() const;
843
- virtual void visit(ParserVisitor*, bool);
844
- virtual void recDependencies(std::set<ConstructedPtr>&); // Internal operation, don't use directly.
845
-
846
- protected:
847
-
848
- Struct(const ContainerPtr&, const std::string&, bool);
849
- friend class Container;
850
- };
851
-
852
- // ----------------------------------------------------------------------
853
- // Sequence
854
- // ----------------------------------------------------------------------
855
-
856
- class Sequence : public virtual Constructed
857
- {
858
- public:
859
-
860
- TypePtr type() const;
861
- StringList typeMetaData() const;
862
- virtual ContainedType containedType() const;
863
- virtual bool uses(const ContainedPtr&) const;
864
- virtual bool usesClasses() const;
865
- virtual size_t minWireSize() const;
866
- virtual bool isVariableLength() const;
867
- virtual std::string kindOf() const;
868
- virtual void visit(ParserVisitor*, bool);
869
- virtual void recDependencies(std::set<ConstructedPtr>&); // Internal operation, don't use directly.
870
-
871
- protected:
872
-
873
- Sequence(const ContainerPtr&, const std::string&, const TypePtr&, const StringList&, bool);
874
- friend class Container;
875
-
876
- TypePtr _type;
877
- StringList _typeMetaData;
878
- };
879
-
880
- // ----------------------------------------------------------------------
881
- // Dictionary
882
- // ----------------------------------------------------------------------
643
+ class InterfaceDecl final : public Contained, public Type, public std::enable_shared_from_this<InterfaceDecl>
644
+ {
645
+ public:
646
+ InterfaceDecl(const ContainerPtr& container, const std::string& name);
647
+ void destroy() final;
648
+ [[nodiscard]] InterfaceDefPtr definition() const;
649
+ [[nodiscard]] size_t minWireSize() const final;
650
+ [[nodiscard]] std::string getOptionalFormat() const final;
651
+ [[nodiscard]] bool isVariableLength() const final;
652
+ void visit(ParserVisitor* visitor) final;
653
+ [[nodiscard]] std::string kindOf() const final;
654
+
655
+ static void checkBasesAreLegal(const std::string& name, const InterfaceList& bases, const UnitPtr& unit);
656
+
657
+ private:
658
+ friend class Container;
659
+
660
+ InterfaceDefPtr _definition;
661
+
662
+ using GraphPartitionList = std::list<InterfaceList>;
663
+ using StringPartitionList = std::list<StringList>;
664
+
665
+ static bool isInList(const GraphPartitionList& gpl, const InterfaceDefPtr& interfaceDef);
666
+
667
+ static void addPartition(
668
+ GraphPartitionList& partitions,
669
+ const GraphPartitionList::reverse_iterator& tail,
670
+ const InterfaceDefPtr& base);
671
+ static StringPartitionList toStringPartitionList(const GraphPartitionList& partitions);
672
+ static void checkPairIntersections(
673
+ const StringPartitionList& stringPartitions,
674
+ const std::string& name,
675
+ const UnitPtr& unit);
676
+ };
883
677
 
884
- class Dictionary : public virtual Constructed
885
- {
886
- public:
887
-
888
- TypePtr keyType() const;
889
- TypePtr valueType() const;
890
- StringList keyMetaData() const;
891
- StringList valueMetaData() const;
892
- virtual ContainedType containedType() const;
893
- virtual bool uses(const ContainedPtr&) const;
894
- virtual bool usesClasses() const;
895
- virtual size_t minWireSize() const;
896
- virtual bool isVariableLength() const;
897
- virtual std::string kindOf() const;
898
- virtual void visit(ParserVisitor*, bool);
899
- virtual void recDependencies(std::set<ConstructedPtr>&); // Internal operation, don't use directly.
900
-
901
- static bool legalKeyType(const TypePtr&, bool&);
902
-
903
- protected:
904
-
905
- Dictionary(const ContainerPtr&, const std::string&, const TypePtr&, const StringList&, const TypePtr&,
906
- const StringList&, bool);
907
- friend class Container;
908
-
909
- TypePtr _keyType;
910
- TypePtr _valueType;
911
- StringList _keyMetaData;
912
- StringList _valueMetaData;
913
- };
914
-
915
- // ----------------------------------------------------------------------
916
- // Enum
917
- // ----------------------------------------------------------------------
918
-
919
- class Enum : public virtual Container, public virtual Constructed
920
- {
921
- public:
922
-
923
- virtual void destroy();
924
- bool explicitValue() const;
925
- int minValue() const;
926
- int maxValue() const;
927
- virtual ContainedType containedType() const;
928
- virtual bool uses(const ContainedPtr&) const;
929
- virtual bool usesClasses() const;
930
- virtual size_t minWireSize() const;
931
- virtual bool isVariableLength() const;
932
- virtual std::string kindOf() const;
933
- virtual void visit(ParserVisitor*, bool);
934
- virtual void recDependencies(std::set<ConstructedPtr>&); // Internal operation, don't use directly.
935
-
936
- protected:
937
-
938
- Enum(const ContainerPtr&, const std::string&, bool);
939
- int newEnumerator(const EnumeratorPtr&);
940
-
941
- friend class Container;
942
- friend class Enumerator;
943
-
944
- bool _explicitValue;
945
- IceUtil::Int64 _minValue;
946
- IceUtil::Int64 _maxValue;
947
- int _lastValue;
948
- };
949
-
950
- // ----------------------------------------------------------------------
951
- // Enumerator
952
- // ----------------------------------------------------------------------
953
-
954
- class Enumerator : public virtual Contained
955
- {
956
- public:
678
+ // ----------------------------------------------------------------------
679
+ // Operation
680
+ // ----------------------------------------------------------------------
957
681
 
958
- EnumPtr type() const;
959
- virtual bool uses(const ContainedPtr&) const;
960
- virtual ContainedType containedType() const;
961
- virtual std::string kindOf() const;
682
+ class Operation final : public Container, public Contained
683
+ {
684
+ public:
685
+ //
686
+ // Note: The values of enumerators here *must* match the values for
687
+ // enumerators of Ice::OperationMode in slice/Ice/OperationMode.ice!
688
+ //
689
+ enum Mode
690
+ {
691
+ Normal = 0,
692
+ Idempotent = 2
693
+ };
694
+
695
+ Operation(const ContainerPtr&, const std::string&, TypePtr, bool, std::int32_t, Mode);
696
+ [[nodiscard]] InterfaceDefPtr interface() const;
697
+ [[nodiscard]] TypePtr returnType() const;
698
+ [[nodiscard]] bool returnIsOptional() const;
699
+ [[nodiscard]] std::int32_t returnTag() const;
700
+ [[nodiscard]] Mode mode() const;
701
+ [[nodiscard]] bool hasMarshaledResult() const;
702
+
703
+ ParameterPtr createParameter(const std::string& name, const TypePtr& type, bool isOptional, std::int32_t tag);
704
+
705
+ /// Returns all parameters of this operation.
706
+ [[nodiscard]] ParameterList parameters() const;
707
+
708
+ /// Returns a list of all this operation's in-parameters (all parameters not marked with 'out').
709
+ [[nodiscard]] ParameterList inParameters() const;
710
+
711
+ /// Returns all of this operation's in-parameters sorted in this order: '(required..., optional...)'.
712
+ /// Required parameters are kept in definition order and optional parameters are sorted by tag.
713
+ [[nodiscard]] ParameterList sortedInParameters() const;
714
+
715
+ /// Returns a list of all this operation's out-parameters (all parameters marked with 'out').
716
+ [[nodiscard]] ParameterList outParameters() const;
717
+
718
+ /// Creates a temporary Parameter that represents this operation's return value.
719
+ /// @param name The name of the return parameter.
720
+ /// @return A dummy Parameter that represents this operation's return value, or nullptr if this operation is
721
+ /// void.
722
+ /// @remark The returned Parameter is not "saved" by this operation - it's completely ephemeral.
723
+ /// The provided name is not checked for uniqueness: the caller must ensure it's unique enough for its purpose.
724
+ /// Furthermore, there is no way to specify a lang:identifier metadata for this parameter, so the mapped
725
+ /// parameter name is always the default (i.e., simply name).
726
+ [[nodiscard]] ParameterPtr returnParameter(const std::string& name);
727
+
728
+ /// Returns this operation's out parameters and return type sorted in this order: '(required..., optional...)'.
729
+ /// If the this operation's return type is non-void and non-optional, it is at the end of the 'required' list.
730
+ /// Otherwise, required parameters are kept in definition order and optional parameters are sorted by tag.
731
+ ///
732
+ /// For convenience, non-void return types are represented by a dummy `Parameter` in this list.
733
+ /// However it's important to note that it is not _actually_ a parameter.
734
+ ///
735
+ // Creating this temporary Parameter doesn't introduce cycles, since nothing from the AST points to it,
736
+ // even if it points back into the AST. So it will be destroyed when the returned list goes out of scope.
737
+ /// @param returnName The name of the return parameter. See #returnParameter for more details.
738
+ /// @return A list of all this operation's out-parameters and return type, sorted in the order described above.
739
+ [[nodiscard]] ParameterList sortedReturnAndOutParameters(const std::string& returnName);
740
+
741
+ [[nodiscard]] ExceptionList throws() const;
742
+ void setExceptionList(const ExceptionList& exceptions);
743
+ [[nodiscard]] bool sendsClasses() const;
744
+ [[nodiscard]] bool returnsClasses() const;
745
+ [[nodiscard]] bool returnsData() const;
746
+
747
+ /// Returns true if this operation has any out parameters or a non-void return type.
748
+ [[nodiscard]] bool returnsAnyValues() const;
749
+ /// Returns true if this operation's output parameters, plus any non-void return type, is greater than 1.
750
+ [[nodiscard]] bool returnsMultipleValues() const;
751
+
752
+ [[nodiscard]] bool sendsOptionals() const;
753
+ [[nodiscard]] bool receivesOptionals() const;
754
+ [[nodiscard]] std::optional<FormatType> format() const;
755
+ [[nodiscard]] std::string kindOf() const final;
756
+ void visit(ParserVisitor* visitor) final;
757
+ void destroy() final;
758
+
759
+ private:
760
+ TypePtr _returnType;
761
+ bool _returnIsOptional;
762
+ std::int32_t _returnTag;
763
+ ExceptionList _throws;
764
+ Mode _mode;
765
+ };
962
766
 
963
- bool explicitValue() const;
964
- int value() const;
767
+ // ----------------------------------------------------------------------
768
+ // InterfaceDef
769
+ // ----------------------------------------------------------------------
965
770
 
966
- protected:
771
+ //
772
+ // Note: For the purpose of this parser, an interface definition is not
773
+ // considered to be a type, but an interface declaration is. And each interface
774
+ // definition has at least one interface declaration (but not vice versa),
775
+ // so if you need the interface as a "type", use the
776
+ // declaration() function to navigate to the interface declaration.
777
+ //
778
+ class InterfaceDef final : public Container, public Contained
779
+ {
780
+ public:
781
+ InterfaceDef(const ContainerPtr& container, const std::string& name, InterfaceList bases);
782
+ void destroy() final;
783
+ OperationPtr createOperation(
784
+ const std::string& name,
785
+ const TypePtr& returnType,
786
+ bool isOptional,
787
+ std::int32_t tag,
788
+ Operation::Mode mode = Operation::Normal);
789
+
790
+ [[nodiscard]] InterfaceDeclPtr declaration() const;
791
+ [[nodiscard]] InterfaceList bases() const;
792
+ [[nodiscard]] InterfaceList allBases() const;
793
+ [[nodiscard]] OperationList operations() const;
794
+ [[nodiscard]] OperationList allOperations() const;
795
+ [[nodiscard]] std::string kindOf() const final;
796
+ void visit(ParserVisitor* visitor) final;
797
+
798
+ // Returns the type IDs of all the interfaces in the inheritance tree, in alphabetical order.
799
+ [[nodiscard]] StringList ids() const;
800
+
801
+ // Interface metadata is always stored on the underlying decl type, not the definition.
802
+ // So we override these `xMetadata` functions to forward to `_declarations->xMetadata()` instead.
803
+ [[nodiscard]] const MetadataList& getMetadata() const final;
804
+ void setMetadata(MetadataList metadata) final;
805
+ void appendMetadata(MetadataList metadata) final;
806
+
807
+ private:
808
+ friend class Container;
809
+
810
+ // Returns true if name does not collide with any base name; otherwise, false.
811
+ bool checkBaseOperationNames(const std::string& name, const std::vector<std::string>& baseNames);
812
+
813
+ InterfaceDeclPtr _declaration;
814
+ InterfaceList _bases;
815
+ };
967
816
 
968
- Enumerator(const ContainerPtr&, const std::string&);
969
- Enumerator(const ContainerPtr&, const std::string&, int);
970
- friend class Container;
817
+ // ----------------------------------------------------------------------
818
+ // Exception
819
+ // ----------------------------------------------------------------------
820
+ class Exception final : public Container, public Contained
821
+ {
822
+ public:
823
+ Exception(const ContainerPtr& container, const std::string& name, ExceptionPtr base);
824
+ void destroy() final;
825
+ [[nodiscard]] DataMemberPtr createDataMember(
826
+ const std::string& name,
827
+ const TypePtr& type,
828
+ bool isOptional,
829
+ std::int32_t tag,
830
+ SyntaxTreeBasePtr defaultValueType,
831
+ std::optional<std::string> defaultValueString);
832
+ [[nodiscard]] DataMemberList dataMembers() const;
833
+ [[nodiscard]] DataMemberList orderedOptionalDataMembers() const;
834
+ [[nodiscard]] DataMemberList allDataMembers() const;
835
+ [[nodiscard]] DataMemberList classDataMembers() const;
836
+ [[nodiscard]] ExceptionPtr base() const;
837
+ [[nodiscard]] ExceptionList allBases() const;
838
+ [[nodiscard]] bool isBaseOf(const ExceptionPtr& otherException) const;
839
+ [[nodiscard]] bool usesClasses() const;
840
+ [[nodiscard]] std::string kindOf() const final;
841
+ void visit(ParserVisitor* visitor) final;
842
+
843
+ private:
844
+ ExceptionPtr _base;
845
+ };
971
846
 
972
- bool _explicitValue;
973
- int _value;
974
- };
847
+ // ----------------------------------------------------------------------
848
+ // Struct
849
+ // ----------------------------------------------------------------------
975
850
 
976
- // ----------------------------------------------------------------------
977
- // Const
978
- // ----------------------------------------------------------------------
851
+ class Struct final : public Container, public Contained, public Type
852
+ {
853
+ public:
854
+ Struct(const ContainerPtr& container, const std::string& name);
855
+ [[nodiscard]] DataMemberPtr createDataMember(
856
+ const std::string& name,
857
+ const TypePtr& type,
858
+ SyntaxTreeBasePtr defaultValueType,
859
+ std::optional<std::string> defaultValueString);
860
+ [[nodiscard]] DataMemberList dataMembers() const;
861
+ [[nodiscard]] DataMemberList classDataMembers() const;
862
+ [[nodiscard]] bool usesClasses() const final;
863
+ [[nodiscard]] size_t minWireSize() const final;
864
+ [[nodiscard]] std::string getOptionalFormat() const final;
865
+ [[nodiscard]] bool isVariableLength() const final;
866
+ [[nodiscard]] std::string kindOf() const final;
867
+ void visit(ParserVisitor* visitor) final;
868
+ void destroy() final;
869
+ };
979
870
 
980
- class Const : public virtual Contained
981
- {
982
- public:
983
-
984
- TypePtr type() const;
985
- StringList typeMetaData() const;
986
- SyntaxTreeBasePtr valueType() const;
987
- std::string value() const;
988
- std::string literal() const;
989
- virtual bool uses(const ContainedPtr&) const;
990
- virtual ContainedType containedType() const;
991
- virtual std::string kindOf() const;
992
- virtual void visit(ParserVisitor*, bool);
993
-
994
- protected:
995
-
996
- Const(const ContainerPtr&, const std::string&, const TypePtr&, const StringList&, const SyntaxTreeBasePtr&,
997
- const std::string&, const std::string&);
998
- friend class Container;
999
-
1000
- TypePtr _type;
1001
- StringList _typeMetaData;
1002
- SyntaxTreeBasePtr _valueType;
1003
- std::string _value;
1004
- std::string _literal;
1005
- };
1006
-
1007
- // ----------------------------------------------------------------------
1008
- // ParamDecl
1009
- // ----------------------------------------------------------------------
1010
-
1011
- class ParamDecl : public virtual Contained
1012
- {
1013
- public:
871
+ // ----------------------------------------------------------------------
872
+ // Sequence
873
+ // ----------------------------------------------------------------------
1014
874
 
1015
- TypePtr type() const;
1016
- bool isOutParam() const;
1017
- bool optional() const;
1018
- int tag() const;
1019
- virtual ContainedType containedType() const;
1020
- virtual bool uses(const ContainedPtr&) const;
1021
- virtual std::string kindOf() const;
1022
- virtual void visit(ParserVisitor*, bool);
875
+ class Sequence final : public Contained, public Type, public std::enable_shared_from_this<Sequence>
876
+ {
877
+ public:
878
+ Sequence(const ContainerPtr& container, const std::string& name, TypePtr type, MetadataList typeMetadata);
879
+ [[nodiscard]] TypePtr type() const;
880
+ [[nodiscard]] MetadataList typeMetadata() const;
881
+ void setTypeMetadata(MetadataList metadata);
882
+ [[nodiscard]] bool usesClasses() const final;
883
+ [[nodiscard]] size_t minWireSize() const final;
884
+ [[nodiscard]] std::string getOptionalFormat() const final;
885
+ [[nodiscard]] bool isVariableLength() const final;
886
+ [[nodiscard]] std::string kindOf() const final;
887
+ void visit(ParserVisitor* visitor) final;
888
+
889
+ private:
890
+ TypePtr _type;
891
+ MetadataList _typeMetadata;
892
+ };
1023
893
 
1024
- protected:
894
+ // ----------------------------------------------------------------------
895
+ // Dictionary
896
+ // ----------------------------------------------------------------------
1025
897
 
1026
- ParamDecl(const ContainerPtr&, const std::string&, const TypePtr&, bool, bool, int);
1027
- friend class Operation;
898
+ class Dictionary final : public Contained, public Type, public std::enable_shared_from_this<Dictionary>
899
+ {
900
+ public:
901
+ Dictionary(
902
+ const ContainerPtr& container,
903
+ const std::string& name,
904
+ TypePtr keyType,
905
+ MetadataList keyMetadata,
906
+ TypePtr valueType,
907
+ MetadataList valueMetadata);
908
+ [[nodiscard]] TypePtr keyType() const;
909
+ [[nodiscard]] TypePtr valueType() const;
910
+ [[nodiscard]] MetadataList keyMetadata() const;
911
+ [[nodiscard]] MetadataList valueMetadata() const;
912
+ void setKeyMetadata(MetadataList metadata);
913
+ void setValueMetadata(MetadataList metadata);
914
+ [[nodiscard]] bool usesClasses() const final;
915
+ [[nodiscard]] size_t minWireSize() const final;
916
+ [[nodiscard]] std::string getOptionalFormat() const final;
917
+ [[nodiscard]] bool isVariableLength() const final;
918
+ [[nodiscard]] std::string kindOf() const final;
919
+ void visit(ParserVisitor* visitor) final;
920
+
921
+ static bool isLegalKeyType(const TypePtr& type);
922
+
923
+ private:
924
+ TypePtr _keyType;
925
+ TypePtr _valueType;
926
+ MetadataList _keyMetadata;
927
+ MetadataList _valueMetadata;
928
+ };
1028
929
 
1029
- TypePtr _type;
1030
- bool _isOutParam;
1031
- bool _optional;
1032
- int _tag;
1033
- };
930
+ // ----------------------------------------------------------------------
931
+ // Enum
932
+ // ----------------------------------------------------------------------
1034
933
 
1035
- // ----------------------------------------------------------------------
1036
- // DataMember
1037
- // ----------------------------------------------------------------------
934
+ class Enum final : public Container, public Contained, public Type
935
+ {
936
+ public:
937
+ Enum(const ContainerPtr& container, const std::string& name);
938
+ EnumeratorPtr createEnumerator(const std::string& name, std::optional<std::int32_t> explicitValue);
939
+ [[nodiscard]] bool hasExplicitValues() const;
940
+ [[nodiscard]] std::int32_t minValue() const;
941
+ [[nodiscard]] std::int32_t maxValue() const;
942
+ [[nodiscard]] size_t minWireSize() const final;
943
+ [[nodiscard]] std::string getOptionalFormat() const final;
944
+ [[nodiscard]] bool isVariableLength() const final;
945
+ [[nodiscard]] std::string kindOf() const final;
946
+ void visit(ParserVisitor* visitor) final;
947
+ void destroy() final;
948
+
949
+ private:
950
+ bool _hasExplicitValues{false};
951
+ std::int32_t _minValue{std::numeric_limits<std::int32_t>::max()};
952
+ std::int32_t _maxValue{0};
953
+ std::int32_t _lastValue{-1};
954
+ };
1038
955
 
1039
- class DataMember : public virtual Contained
1040
- {
1041
- public:
1042
-
1043
- TypePtr type() const;
1044
- bool optional() const;
1045
- int tag() const;
1046
- std::string defaultValue() const;
1047
- std::string defaultLiteral() const;
1048
- SyntaxTreeBasePtr defaultValueType() const;
1049
- virtual ContainedType containedType() const;
1050
- virtual bool uses(const ContainedPtr&) const;
1051
- virtual std::string kindOf() const;
1052
- virtual void visit(ParserVisitor*, bool);
1053
-
1054
- protected:
1055
-
1056
- DataMember(const ContainerPtr&, const std::string&, const TypePtr&, bool, int, const SyntaxTreeBasePtr&,
1057
- const std::string&, const std::string&);
1058
- friend class ClassDef;
1059
- friend class Struct;
1060
- friend class Exception;
1061
-
1062
- TypePtr _type;
1063
- bool _optional;
1064
- int _tag;
1065
- SyntaxTreeBasePtr _defaultValueType;
1066
- std::string _defaultValue;
1067
- std::string _defaultLiteral;
1068
- };
1069
-
1070
- // ----------------------------------------------------------------------
1071
- // Unit
1072
- // ----------------------------------------------------------------------
1073
-
1074
- class Unit : public virtual Container
1075
- {
1076
- public:
956
+ // ----------------------------------------------------------------------
957
+ // Enumerator
958
+ // ----------------------------------------------------------------------
1077
959
 
1078
- static UnitPtr createUnit(bool, bool, bool, bool, const StringList& = StringList());
960
+ class Enumerator final : public Contained
961
+ {
962
+ public:
963
+ Enumerator(const ContainerPtr& container, const std::string& name, std::int32_t value, bool hasExplicitValue);
964
+ [[nodiscard]] EnumPtr type() const;
965
+ [[nodiscard]] std::string kindOf() const final;
1079
966
 
1080
- bool ignRedefs() const;
1081
- bool allowIcePrefix() const;
1082
- bool allowUnderscore() const;
967
+ [[nodiscard]] bool hasExplicitValue() const;
968
+ [[nodiscard]] std::int32_t value() const;
1083
969
 
1084
- void setComment(const std::string&);
1085
- std::string currentComment(); // Not const, as this function removes the current comment.
1086
- std::string currentFile() const;
1087
- std::string topLevelFile() const;
1088
- int currentLine() const;
970
+ void visit(ParserVisitor* visitor) final;
1089
971
 
1090
- void nextLine();
1091
- bool scanPosition(const char*);
1092
- int currentIncludeLevel() const;
972
+ private:
973
+ bool _hasExplicitValue;
974
+ std::int32_t _value;
975
+ };
1093
976
 
1094
- void addGlobalMetaData(const StringList&);
977
+ // ----------------------------------------------------------------------
978
+ // Const
979
+ // ----------------------------------------------------------------------
1095
980
 
1096
- void setSeenDefinition();
981
+ class Const final : public Contained, public std::enable_shared_from_this<Const>
982
+ {
983
+ public:
984
+ Const(
985
+ const ContainerPtr& container,
986
+ const std::string& name,
987
+ TypePtr type,
988
+ MetadataList typeMetadata,
989
+ SyntaxTreeBasePtr valueType,
990
+ std::string valueString);
991
+ [[nodiscard]] TypePtr type() const;
992
+ [[nodiscard]] MetadataList typeMetadata() const;
993
+ void setTypeMetadata(MetadataList metadata);
994
+ [[nodiscard]] SyntaxTreeBasePtr valueType() const;
995
+ [[nodiscard]] std::string value() const;
996
+ [[nodiscard]] std::string kindOf() const final;
997
+ void visit(ParserVisitor* visitor) final;
998
+
999
+ private:
1000
+ TypePtr _type;
1001
+ MetadataList _typeMetadata;
1002
+ SyntaxTreeBasePtr _valueType;
1003
+ std::string _value;
1004
+ };
1097
1005
 
1098
- void error(const std::string&); // Not const because error count is increased
1099
- void warning(WarningCategory, const std::string&) const;
1006
+ // ----------------------------------------------------------------------
1007
+ // Parameter
1008
+ // ----------------------------------------------------------------------
1100
1009
 
1101
- ContainerPtr currentContainer() const;
1102
- void pushContainer(const ContainerPtr&);
1103
- void popContainer();
1010
+ class Parameter final : public Contained, public std::enable_shared_from_this<Parameter>
1011
+ {
1012
+ public:
1013
+ Parameter(
1014
+ const ContainerPtr& container,
1015
+ const std::string& name,
1016
+ TypePtr type,
1017
+ bool isOptional,
1018
+ std::int32_t tag);
1019
+ [[nodiscard]] TypePtr type() const;
1020
+ [[nodiscard]] bool isOutParam() const;
1021
+ void setIsOutParam();
1022
+ [[nodiscard]] bool optional() const;
1023
+ [[nodiscard]] std::int32_t tag() const;
1024
+ [[nodiscard]] std::string kindOf() const final;
1025
+
1026
+ void visit(ParserVisitor* visitor) final;
1027
+
1028
+ private:
1029
+ TypePtr _type;
1030
+ bool _isOutParam{false};
1031
+ bool _optional;
1032
+ std::int32_t _tag;
1033
+ };
1104
1034
 
1105
- DefinitionContextPtr currentDefinitionContext() const;
1106
- void pushDefinitionContext();
1107
- void popDefinitionContext();
1108
- DefinitionContextPtr findDefinitionContext(const std::string&) const;
1035
+ // ----------------------------------------------------------------------
1036
+ // DataMember
1037
+ // ----------------------------------------------------------------------
1109
1038
 
1110
- void addContent(const ContainedPtr&);
1111
- void removeContent(const ContainedPtr&);
1112
- ContainedList findContents(const std::string&) const;
1113
- ClassList findDerivedClasses(const ClassDefPtr&) const;
1114
- ExceptionList findDerivedExceptions(const ExceptionPtr&) const;
1115
- ContainedList findUsedBy(const ContainedPtr&) const;
1039
+ class DataMember final : public Contained, public std::enable_shared_from_this<DataMember>
1040
+ {
1041
+ public:
1042
+ DataMember(
1043
+ const ContainerPtr& container,
1044
+ const std::string& name,
1045
+ TypePtr type,
1046
+ bool isOptional,
1047
+ std::int32_t tag,
1048
+ SyntaxTreeBasePtr defaultValueType,
1049
+ std::optional<std::string> defaultValueString);
1050
+ [[nodiscard]] TypePtr type() const;
1051
+ [[nodiscard]] bool optional() const;
1052
+ [[nodiscard]] std::int32_t tag() const;
1053
+
1054
+ // defaultValue() and defaultValueType() are either both null (no default value) or both non-null.
1055
+ [[nodiscard]] std::optional<std::string> defaultValue() const;
1056
+ [[nodiscard]] SyntaxTreeBasePtr defaultValueType() const;
1057
+ [[nodiscard]] std::string kindOf() const final;
1058
+
1059
+ void visit(ParserVisitor* visitor) final;
1060
+
1061
+ private:
1062
+ TypePtr _type;
1063
+ bool _optional;
1064
+ std::int32_t _tag;
1065
+ SyntaxTreeBasePtr _defaultValueType;
1066
+ std::optional<std::string> _defaultValue;
1067
+ };
1116
1068
 
1117
- void addTypeId(int, const std::string&);
1118
- std::string getTypeId(int) const;
1119
- bool hasCompactTypeId() const;
1069
+ // ----------------------------------------------------------------------
1070
+ // Unit
1071
+ // ----------------------------------------------------------------------
1120
1072
 
1121
- bool usesNonLocals() const;
1122
- bool usesConsts() const;
1073
+ /// Options for creating a Unit.
1074
+ struct UnitOptions
1075
+ {
1076
+ /// When true, generate code for Slice definitions in included files.
1077
+ bool all{false};
1123
1078
 
1124
- //
1125
- // Returns the path names of the files included directly by the top-level file.
1126
- //
1127
- StringList includeFiles() const;
1079
+ /// Provides a function that returns the default mapped name for a Contained element. nullptr, the default,
1080
+ /// is equivalent to using the element's Slice name as its mapped name.
1081
+ std::function<std::string(const Contained&)> defaultMappedName{nullptr};
1082
+ };
1128
1083
 
1129
- //
1130
- // Returns the path names of all files parsed by this unit.
1131
- //
1132
- StringList allFiles() const;
1133
-
1134
- int parse(const std::string&, FILE*, bool);
1135
-
1136
- virtual void destroy();
1137
- virtual void visit(ParserVisitor*, bool);
1138
-
1139
- BuiltinPtr builtin(Builtin::Kind); // Not const, as builtins are created on the fly. (Lazy initialization.)
1140
-
1141
- void addTopLevelModule(const std::string&, const std::string&);
1142
- std::set<std::string> getTopLevelModules(const std::string&) const;
1143
-
1144
- private:
1145
-
1146
- Unit(bool, bool, bool, bool, const StringList&);
1147
- static void eraseWhiteSpace(::std::string&);
1148
-
1149
- bool _ignRedefs;
1150
- bool _all;
1151
- bool _allowIcePrefix;
1152
- bool _allowUnderscore;
1153
- StringList _defaultGlobalMetaData;
1154
- int _errors;
1155
- std::string _currentComment;
1156
- int _currentLine;
1157
- int _currentIncludeLevel;
1158
- std::string _currentFile;
1159
- std::string _topLevelFile;
1160
- std::stack<DefinitionContextPtr> _definitionContextStack;
1161
- StringList _includeFiles;
1162
- std::stack<ContainerPtr> _containerStack;
1163
- std::map<Builtin::Kind, BuiltinPtr> _builtins;
1164
- std::map<std::string, ContainedList> _contentMap;
1165
- std::map<std::string, DefinitionContextPtr> _definitionContextMap;
1166
- std::map<int, std::string> _typeIds;
1167
- std::map< std::string, std::set<std::string> > _fileTopLevelModules;
1168
- };
1169
-
1170
- extern Unit* unit; // The current parser for bison/flex
1084
+ class Unit final : public Container
1085
+ {
1086
+ public:
1087
+ static UnitPtr createUnit(std::string languageName, UnitOptions options = {});
1088
+
1089
+ Unit(std::string languageName, UnitOptions options);
1090
+
1091
+ [[nodiscard]] std::string languageName() const;
1092
+ [[nodiscard]] std::string defaultMappedName(const Contained& contained) const;
1093
+
1094
+ /// Sets `_currentDocComment` to the provided string, erasing anything currently stored in it.
1095
+ /// @param comment The raw comment string. It can span multiple lines and include comment formatting characters
1096
+ /// like '/**' and leading '*'. All such comment formatting will be removed by this function though.
1097
+ // Note that this is only called for JavaDoc style comments, where the comment is set in one-shot.
1098
+ void setDocComment(const std::string& comment);
1099
+ /// Appends the provided comment to `_currentDocComment` with a newline separator.
1100
+ /// @param comment The raw comment string. It shouldn't contain newlines, nor any comment formatting characters.
1101
+ /// Unlike `setDocComment`, this function doesn't process the comment string in any way.
1102
+ // Note that this is only called for triple-slash style comments, where each line is added separately.
1103
+ void appendToDocComment(const std::string& comment);
1104
+ /// Returns the current doc-comment string. This function uses move semantics. After calling it, the currently
1105
+ /// stored doc-comment will be cleared. This string can span multiple lines, and won't include formatting like
1106
+ /// leading '///' or opening '/**' etc.
1107
+ std::string currentDocComment();
1108
+
1109
+ [[nodiscard]] std::string currentFile() const;
1110
+ [[nodiscard]] const std::string& topLevelFile() const;
1111
+ [[nodiscard]] int currentLine() const;
1112
+
1113
+ int setCurrentFile(std::string currentFile, int lineNumber);
1114
+ [[nodiscard]] int currentIncludeLevel() const;
1115
+
1116
+ void addFileMetadata(MetadataList metadata);
1117
+
1118
+ void setSeenDefinition();
1119
+
1120
+ void error(std::string_view message);
1121
+ void error(std::string_view file, int line, std::string_view message);
1122
+ void warning(WarningCategory category, std::string_view message) const;
1123
+ void warning(std::string_view file, int line, WarningCategory category, std::string_view message) const;
1124
+
1125
+ [[nodiscard]] ContainerPtr currentContainer() const;
1126
+ void pushContainer(const ContainerPtr& container);
1127
+ void popContainer();
1128
+
1129
+ [[nodiscard]] DefinitionContextPtr currentDefinitionContext() const;
1130
+
1131
+ /// Returns the definition context for the given file, or nullptr if none exists.
1132
+ /// This method only checks `DefinitionContext::filename` and does not consider
1133
+ /// `DefinitionContext::resolvedFilename`.
1134
+ ///
1135
+ /// @param file The file name to search for.
1136
+ /// @return A pointer to the matching definition context, or nullptr if not found.
1137
+ [[nodiscard]] DefinitionContextPtr findDefinitionContext(std::string_view file) const;
1138
+
1139
+ void addContent(const ContainedPtr& contained);
1140
+ [[nodiscard]] ContainedList findContents(const std::string& scopedName) const;
1141
+
1142
+ void addTypeId(std::int32_t compactId, const std::string& typeId);
1143
+ [[nodiscard]] std::string getTypeId(std::int32_t compactId) const;
1144
+
1145
+ // Returns the path names of the files included directly by the top-level file.
1146
+ [[nodiscard]] StringList includeFiles() const;
1147
+
1148
+ /// Returns the absolute paths of all files parsed by this unit.
1149
+ /// The first entry is the top-level file, followed by its direct and transitive dependencies in the order they
1150
+ /// were parsed.
1151
+ ///
1152
+ /// @return A list of absolute paths to the parsed files.
1153
+ [[nodiscard]] StringList allFiles() const;
1154
+
1155
+ int parse(const std::string& filename, FILE* file, bool debugMode);
1156
+
1157
+ void destroy();
1158
+ void visit(ParserVisitor* visitor);
1159
+ [[nodiscard]] UnitPtr unit() const final;
1160
+
1161
+ /// Returns `EXIT_FAILURE` if 1 or more errors have been reported and `EXIT_SUCCESS` otherwise.
1162
+ [[nodiscard]] int getStatus() const;
1163
+
1164
+ // Not const, as builtins are created on the fly. (Lazy initialization.)
1165
+ BuiltinPtr createBuiltin(Builtin::Kind kind);
1166
+
1167
+ void addTopLevelModule(const std::string& file, const std::string& module);
1168
+ [[nodiscard]] std::set<std::string> getTopLevelModules(const std::string& file) const;
1169
+
1170
+ private:
1171
+ void pushDefinitionContext();
1172
+ void popDefinitionContext();
1173
+
1174
+ const std::string _languageName;
1175
+ bool _all;
1176
+ std::function<std::string(const Contained&)> _defaultMappedName;
1177
+ int _errors{0};
1178
+ std::string _currentDocComment;
1179
+ int _currentIncludeLevel{0};
1180
+ std::string _topLevelFile;
1181
+ std::stack<DefinitionContextPtr> _definitionContextStack;
1182
+ StringList _includeFiles;
1183
+ std::stack<ContainerPtr> _containerStack;
1184
+ std::map<Builtin::Kind, BuiltinPtr> _builtins;
1185
+ std::map<std::string, ContainedList> _contentMap;
1186
+ std::map<std::string, DefinitionContextPtr, std::less<>> _definitionContextMap;
1187
+ std::map<std::int32_t, std::string> _typeIds;
1188
+ std::map<std::string, std::set<std::string>> _fileTopLevelModules;
1189
+ StringList _allFiles;
1190
+ };
1171
1191
 
1192
+ extern Unit* currentUnit; // The current parser for bison/flex
1172
1193
  }
1173
1194
 
1174
1195
  #endif