zeroc-ice 3.7.0 → 3.7.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (684) hide show
  1. checksums.yaml +4 -4
  2. data/ICE_LICENSE +1 -1
  3. data/bin/slice2rb +1 -1
  4. data/ext/Communicator.cpp +72 -2
  5. data/ext/Communicator.h +1 -1
  6. data/ext/Config.h +11 -1
  7. data/ext/Connection.cpp +22 -2
  8. data/ext/Connection.h +4 -1
  9. data/ext/Endpoint.cpp +1 -1
  10. data/ext/Endpoint.h +1 -1
  11. data/ext/ImplicitContext.cpp +1 -1
  12. data/ext/ImplicitContext.h +1 -1
  13. data/ext/Init.cpp +1 -1
  14. data/ext/Logger.cpp +1 -1
  15. data/ext/Logger.h +1 -1
  16. data/ext/Operation.cpp +1 -1
  17. data/ext/Operation.h +1 -1
  18. data/ext/Properties.cpp +1 -1
  19. data/ext/Properties.h +1 -1
  20. data/ext/Proxy.cpp +70 -1
  21. data/ext/Proxy.h +1 -1
  22. data/ext/Slice.cpp +1 -1
  23. data/ext/Slice.h +1 -1
  24. data/ext/Types.cpp +21 -5
  25. data/ext/Types.h +1 -1
  26. data/ext/Util.cpp +1 -1
  27. data/ext/Util.h +1 -1
  28. data/ext/ValueFactoryManager.cpp +2 -2
  29. data/ext/ValueFactoryManager.h +2 -2
  30. data/ext/ice/cpp/include/Ice/Application.h +234 -76
  31. data/ext/ice/cpp/include/Ice/AsyncResult.h +77 -1
  32. data/ext/ice/cpp/include/Ice/AsyncResultF.h +1 -1
  33. data/ext/ice/cpp/include/Ice/BatchRequestInterceptor.h +35 -2
  34. data/ext/ice/cpp/include/Ice/BatchRequestQueueF.h +1 -1
  35. data/ext/ice/cpp/include/Ice/Buffer.h +1 -1
  36. data/ext/ice/cpp/include/Ice/CommunicatorAsync.h +43 -1
  37. data/ext/ice/cpp/include/Ice/Comparable.h +81 -1
  38. data/ext/ice/cpp/include/Ice/Config.h +8 -1
  39. data/ext/ice/cpp/include/Ice/ConnectionAsync.h +97 -1
  40. data/ext/ice/cpp/include/Ice/ConnectionIF.h +3 -1
  41. data/ext/ice/cpp/include/Ice/ConsoleUtil.h +1 -1
  42. data/ext/ice/cpp/include/Ice/DefaultValueFactory.h +1 -1
  43. data/ext/ice/cpp/include/Ice/DispatchInterceptor.h +17 -2
  44. data/ext/ice/cpp/include/Ice/Dispatcher.h +22 -2
  45. data/ext/ice/cpp/include/Ice/DynamicLibrary.h +1 -1
  46. data/ext/ice/cpp/include/Ice/DynamicLibraryF.h +1 -1
  47. data/ext/ice/cpp/include/Ice/Exception.h +57 -15
  48. data/ext/ice/cpp/include/Ice/ExceptionHelpers.h +19 -1
  49. data/ext/ice/cpp/include/Ice/FactoryTable.h +12 -2
  50. data/ext/ice/cpp/include/Ice/FactoryTableInit.h +1 -1
  51. data/ext/ice/cpp/include/Ice/Format.h +13 -14
  52. data/ext/ice/cpp/include/Ice/Functional.h +6 -1
  53. data/ext/ice/cpp/include/Ice/GCObject.h +1 -1
  54. data/ext/ice/cpp/include/Ice/Handle.h +1 -1
  55. data/ext/ice/cpp/include/Ice/Ice.h +1 -1
  56. data/ext/ice/cpp/include/Ice/IconvStringConverter.h +38 -3
  57. data/ext/ice/cpp/include/Ice/Incoming.h +15 -2
  58. data/ext/ice/cpp/include/Ice/IncomingAsync.h +37 -4
  59. data/ext/ice/cpp/include/Ice/IncomingAsyncF.h +1 -1
  60. data/ext/ice/cpp/include/Ice/Initialize.h +764 -98
  61. data/ext/ice/cpp/include/Ice/InputStream.h +637 -112
  62. data/ext/ice/cpp/include/Ice/InstanceF.h +1 -1
  63. data/ext/ice/cpp/include/Ice/InterfaceByValue.h +17 -1
  64. data/ext/ice/cpp/include/Ice/LocalObject.h +5 -1
  65. data/ext/ice/cpp/include/Ice/LocalObjectF.h +1 -1
  66. data/ext/ice/cpp/include/Ice/LoggerUtil.h +37 -6
  67. data/ext/ice/cpp/include/Ice/MetricsAdminI.h +3 -1
  68. data/ext/ice/cpp/include/Ice/MetricsFunctional.h +3 -1
  69. data/ext/ice/cpp/include/Ice/MetricsObserverI.h +3 -1
  70. data/ext/ice/cpp/include/Ice/NativePropertiesAdmin.h +46 -23
  71. data/ext/ice/cpp/include/Ice/Object.h +338 -47
  72. data/ext/ice/cpp/include/Ice/ObjectF.h +5 -1
  73. data/ext/ice/cpp/include/Ice/ObserverHelper.h +1 -1
  74. data/ext/ice/cpp/include/Ice/Optional.h +22 -6
  75. data/ext/ice/cpp/include/Ice/OutgoingAsync.h +15 -1
  76. data/ext/ice/cpp/include/Ice/OutgoingAsyncF.h +1 -1
  77. data/ext/ice/cpp/include/Ice/OutputStream.h +436 -92
  78. data/ext/ice/cpp/include/Ice/Protocol.h +31 -1
  79. data/ext/ice/cpp/include/Ice/Proxy.h +2244 -190
  80. data/ext/ice/cpp/include/Ice/ProxyF.h +3 -1
  81. data/ext/ice/cpp/include/Ice/ProxyFactoryF.h +1 -1
  82. data/ext/ice/cpp/include/Ice/ProxyHandle.h +10 -1
  83. data/ext/ice/cpp/include/Ice/ReferenceF.h +1 -1
  84. data/ext/ice/cpp/include/Ice/RegisterPlugins.h +67 -9
  85. data/ext/ice/cpp/include/Ice/RequestHandlerF.h +1 -1
  86. data/ext/ice/cpp/include/Ice/ResponseHandlerF.h +1 -1
  87. data/ext/ice/cpp/include/Ice/SHA1.h +1 -1
  88. data/ext/ice/cpp/include/Ice/ServantManagerF.h +1 -1
  89. data/ext/ice/cpp/include/Ice/Service.h +267 -138
  90. data/ext/ice/cpp/include/Ice/SliceChecksums.h +5 -1
  91. data/ext/ice/cpp/include/Ice/SlicedData.h +80 -33
  92. data/ext/ice/cpp/include/Ice/SlicedDataF.h +4 -1
  93. data/ext/ice/cpp/include/Ice/StreamHelpers.h +324 -116
  94. data/ext/ice/cpp/include/Ice/StringConverter.h +32 -1
  95. data/ext/ice/cpp/include/Ice/ThreadPoolF.h +1 -1
  96. data/ext/ice/cpp/include/Ice/UUID.h +2 -1
  97. data/ext/ice/cpp/include/Ice/UniquePtr.h +2 -2
  98. data/ext/ice/cpp/include/Ice/UniqueRef.h +6 -2
  99. data/ext/ice/cpp/include/Ice/UserExceptionFactory.h +6 -1
  100. data/ext/ice/cpp/include/Ice/Value.h +41 -1
  101. data/ext/ice/cpp/include/Ice/ValueF.h +3 -1
  102. data/ext/ice/cpp/include/IceSSL/Config.h +1 -1
  103. data/ext/ice/cpp/include/IceSSL/IceSSL.h +1 -1
  104. data/ext/ice/cpp/include/IceSSL/OpenSSL.h +75 -53
  105. data/ext/ice/cpp/include/IceSSL/Plugin.h +323 -218
  106. data/ext/ice/cpp/include/IceSSL/SChannel.h +34 -27
  107. data/ext/ice/cpp/include/IceSSL/SecureTransport.h +35 -28
  108. data/ext/ice/cpp/include/IceSSL/UWP.h +33 -24
  109. data/ext/ice/cpp/include/IceUtil/Atomic.h +1 -1
  110. data/ext/ice/cpp/include/IceUtil/Cond.h +1 -1
  111. data/ext/ice/cpp/include/IceUtil/Config.h +11 -3
  112. data/ext/ice/cpp/include/IceUtil/ConsoleUtil.h +1 -1
  113. data/ext/ice/cpp/include/IceUtil/CountDownLatch.h +1 -1
  114. data/ext/ice/cpp/include/IceUtil/CtrlCHandler.h +59 -31
  115. data/ext/ice/cpp/include/IceUtil/DisableWarnings.h +1 -1
  116. data/ext/ice/cpp/include/IceUtil/Exception.h +1 -1
  117. data/ext/ice/cpp/include/IceUtil/FileUtil.h +1 -1
  118. data/ext/ice/cpp/include/IceUtil/Functional.h +1 -1
  119. data/ext/ice/cpp/include/IceUtil/Handle.h +1 -1
  120. data/ext/ice/cpp/include/IceUtil/IceUtil.h +1 -1
  121. data/ext/ice/cpp/include/IceUtil/InputUtil.h +1 -1
  122. data/ext/ice/cpp/include/IceUtil/Iterator.h +1 -1
  123. data/ext/ice/cpp/include/IceUtil/Lock.h +1 -1
  124. data/ext/ice/cpp/include/IceUtil/Monitor.h +1 -1
  125. data/ext/ice/cpp/include/IceUtil/Mutex.h +2 -5
  126. data/ext/ice/cpp/include/IceUtil/MutexProtocol.h +1 -1
  127. data/ext/ice/cpp/include/IceUtil/MutexPtrLock.h +1 -1
  128. data/ext/ice/cpp/include/IceUtil/MutexPtrTryLock.h +1 -1
  129. data/ext/ice/cpp/include/IceUtil/Optional.h +95 -1
  130. data/ext/ice/cpp/include/IceUtil/Options.h +1 -1
  131. data/ext/ice/cpp/include/IceUtil/OutputUtil.h +1 -1
  132. data/ext/ice/cpp/include/IceUtil/PopDisableWarnings.h +1 -1
  133. data/ext/ice/cpp/include/IceUtil/PushDisableWarnings.h +1 -1
  134. data/ext/ice/cpp/include/IceUtil/Random.h +1 -1
  135. data/ext/ice/cpp/include/IceUtil/RecMutex.h +1 -1
  136. data/ext/ice/cpp/include/IceUtil/ResourceConfig.h +4 -4
  137. data/ext/ice/cpp/include/IceUtil/ScannerConfig.h +5 -3
  138. data/ext/ice/cpp/include/IceUtil/ScopedArray.h +1 -1
  139. data/ext/ice/cpp/include/IceUtil/Shared.h +1 -1
  140. data/ext/ice/cpp/include/IceUtil/StopWatch.h +1 -1
  141. data/ext/ice/cpp/include/IceUtil/StringConverter.h +106 -86
  142. data/ext/ice/cpp/include/IceUtil/StringUtil.h +1 -1
  143. data/ext/ice/cpp/include/IceUtil/Thread.h +1 -1
  144. data/ext/ice/cpp/include/IceUtil/ThreadException.h +1 -1
  145. data/ext/ice/cpp/include/IceUtil/Time.h +1 -1
  146. data/ext/ice/cpp/include/IceUtil/Timer.h +5 -1
  147. data/ext/ice/cpp/include/IceUtil/UUID.h +5 -1
  148. data/ext/ice/cpp/include/IceUtil/UndefSysMacros.h +1 -1
  149. data/ext/ice/cpp/include/generated/Ice/BuiltinSequences.h +80 -20
  150. data/ext/ice/cpp/include/generated/Ice/Communicator.h +927 -130
  151. data/ext/ice/cpp/include/generated/Ice/CommunicatorF.h +13 -5
  152. data/ext/ice/cpp/include/generated/Ice/Connection.h +990 -194
  153. data/ext/ice/cpp/include/generated/Ice/ConnectionF.h +21 -9
  154. data/ext/ice/cpp/include/generated/Ice/Current.h +180 -17
  155. data/ext/ice/cpp/include/generated/Ice/Endpoint.h +484 -118
  156. data/ext/ice/cpp/include/generated/Ice/EndpointF.h +41 -17
  157. data/ext/ice/cpp/include/generated/Ice/EndpointTypes.h +29 -3
  158. data/ext/ice/cpp/include/generated/Ice/FacetMap.h +11 -5
  159. data/ext/ice/cpp/include/generated/Ice/Identity.h +56 -7
  160. data/ext/ice/cpp/include/generated/Ice/ImplicitContext.h +150 -28
  161. data/ext/ice/cpp/include/generated/Ice/ImplicitContextF.h +13 -5
  162. data/ext/ice/cpp/include/generated/Ice/Instrumentation.h +629 -83
  163. data/ext/ice/cpp/include/generated/Ice/InstrumentationF.h +19 -7
  164. data/ext/ice/cpp/include/generated/Ice/LocalException.h +5104 -794
  165. data/ext/ice/cpp/include/generated/Ice/Locator.h +2222 -443
  166. data/ext/ice/cpp/include/generated/Ice/LocatorF.h +27 -9
  167. data/ext/ice/cpp/include/generated/Ice/Logger.h +104 -26
  168. data/ext/ice/cpp/include/generated/Ice/LoggerF.h +13 -5
  169. data/ext/ice/cpp/include/generated/Ice/Metrics.h +2534 -455
  170. data/ext/ice/cpp/include/generated/Ice/ObjectAdapter.h +1004 -126
  171. data/ext/ice/cpp/include/generated/Ice/ObjectAdapterF.h +13 -5
  172. data/ext/ice/cpp/include/generated/Ice/ObjectFactory.h +72 -12
  173. data/ext/ice/cpp/include/generated/Ice/Plugin.h +142 -28
  174. data/ext/ice/cpp/include/generated/Ice/PluginF.h +17 -7
  175. data/ext/ice/cpp/include/generated/Ice/Process.h +511 -71
  176. data/ext/ice/cpp/include/generated/Ice/ProcessF.h +18 -6
  177. data/ext/ice/cpp/include/generated/Ice/Properties.h +306 -58
  178. data/ext/ice/cpp/include/generated/Ice/PropertiesAdmin.h +737 -121
  179. data/ext/ice/cpp/include/generated/Ice/PropertiesF.h +22 -8
  180. data/ext/ice/cpp/include/generated/Ice/RemoteLogger.h +1526 -279
  181. data/ext/ice/cpp/include/generated/Ice/Router.h +1009 -198
  182. data/ext/ice/cpp/include/generated/Ice/RouterF.h +18 -6
  183. data/ext/ice/cpp/include/generated/Ice/ServantLocator.h +174 -18
  184. data/ext/ice/cpp/include/generated/Ice/ServantLocatorF.h +13 -5
  185. data/ext/ice/cpp/include/generated/Ice/SliceChecksumDict.h +13 -3
  186. data/ext/ice/cpp/include/generated/Ice/ValueFactory.h +177 -23
  187. data/ext/ice/cpp/include/generated/Ice/Version.h +43 -13
  188. data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfo.h +71 -15
  189. data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfoF.h +13 -5
  190. data/ext/ice/cpp/include/generated/IceSSL/EndpointInfo.h +39 -9
  191. data/ext/ice/cpp/src/Ice/ACM.cpp +12 -3
  192. data/ext/ice/cpp/src/Ice/ACM.h +1 -1
  193. data/ext/ice/cpp/src/Ice/ACMF.h +1 -1
  194. data/ext/ice/cpp/src/Ice/Acceptor.cpp +1 -1
  195. data/ext/ice/cpp/src/Ice/Acceptor.h +1 -1
  196. data/ext/ice/cpp/src/Ice/AcceptorF.h +1 -1
  197. data/ext/ice/cpp/src/Ice/ArgVector.cpp +1 -1
  198. data/ext/ice/cpp/src/Ice/ArgVector.h +1 -1
  199. data/ext/ice/cpp/src/Ice/AsyncResult.cpp +1 -1
  200. data/ext/ice/cpp/src/Ice/Base64.cpp +1 -1
  201. data/ext/ice/cpp/src/Ice/Base64.h +1 -1
  202. data/ext/ice/cpp/src/Ice/BatchRequestQueue.cpp +1 -1
  203. data/ext/ice/cpp/src/Ice/BatchRequestQueue.h +1 -1
  204. data/ext/ice/cpp/src/Ice/Buffer.cpp +1 -1
  205. data/ext/ice/cpp/src/Ice/BuiltinSequences.cpp +3 -3
  206. data/ext/ice/cpp/src/Ice/CollocatedRequestHandler.cpp +1 -1
  207. data/ext/ice/cpp/src/Ice/CollocatedRequestHandler.h +1 -1
  208. data/ext/ice/cpp/src/Ice/Communicator.cpp +6 -4
  209. data/ext/ice/cpp/src/Ice/CommunicatorF.cpp +3 -3
  210. data/ext/ice/cpp/src/Ice/CommunicatorI.cpp +34 -13
  211. data/ext/ice/cpp/src/Ice/CommunicatorI.h +10 -10
  212. data/ext/ice/cpp/src/Ice/Cond.cpp +1 -1
  213. data/ext/ice/cpp/src/Ice/ConnectRequestHandler.cpp +11 -6
  214. data/ext/ice/cpp/src/Ice/ConnectRequestHandler.h +1 -1
  215. data/ext/ice/cpp/src/Ice/ConnectRequestHandlerF.h +1 -1
  216. data/ext/ice/cpp/src/Ice/Connection.cpp +27 -11
  217. data/ext/ice/cpp/src/Ice/ConnectionF.cpp +3 -3
  218. data/ext/ice/cpp/src/Ice/ConnectionFactory.cpp +24 -19
  219. data/ext/ice/cpp/src/Ice/ConnectionFactory.h +1 -1
  220. data/ext/ice/cpp/src/Ice/ConnectionFactoryF.h +1 -1
  221. data/ext/ice/cpp/src/Ice/ConnectionI.cpp +45 -37
  222. data/ext/ice/cpp/src/Ice/ConnectionI.h +10 -8
  223. data/ext/ice/cpp/src/Ice/ConnectionRequestHandler.cpp +1 -1
  224. data/ext/ice/cpp/src/Ice/ConnectionRequestHandler.h +1 -1
  225. data/ext/ice/cpp/src/Ice/Connector.cpp +1 -1
  226. data/ext/ice/cpp/src/Ice/Connector.h +1 -1
  227. data/ext/ice/cpp/src/Ice/ConnectorF.h +1 -1
  228. data/ext/ice/cpp/src/Ice/CountDownLatch.cpp +1 -1
  229. data/ext/ice/cpp/src/Ice/Current.cpp +3 -3
  230. data/ext/ice/cpp/src/Ice/DefaultsAndOverrides.cpp +5 -7
  231. data/ext/ice/cpp/src/Ice/DefaultsAndOverrides.h +1 -1
  232. data/ext/ice/cpp/src/Ice/DefaultsAndOverridesF.h +1 -1
  233. data/ext/ice/cpp/src/Ice/DispatchInterceptor.cpp +1 -1
  234. data/ext/ice/cpp/src/Ice/DynamicLibrary.cpp +1 -1
  235. data/ext/ice/cpp/src/Ice/Endpoint.cpp +24 -10
  236. data/ext/ice/cpp/src/Ice/EndpointF.cpp +3 -3
  237. data/ext/ice/cpp/src/Ice/EndpointFactory.cpp +1 -1
  238. data/ext/ice/cpp/src/Ice/EndpointFactory.h +1 -1
  239. data/ext/ice/cpp/src/Ice/EndpointFactoryF.h +1 -1
  240. data/ext/ice/cpp/src/Ice/EndpointFactoryManager.cpp +7 -13
  241. data/ext/ice/cpp/src/Ice/EndpointFactoryManager.h +1 -1
  242. data/ext/ice/cpp/src/Ice/EndpointFactoryManagerF.h +1 -1
  243. data/ext/ice/cpp/src/Ice/EndpointI.cpp +2 -2
  244. data/ext/ice/cpp/src/Ice/EndpointI.h +5 -5
  245. data/ext/ice/cpp/src/Ice/EndpointIF.h +1 -1
  246. data/ext/ice/cpp/src/Ice/EndpointTypes.cpp +3 -3
  247. data/ext/ice/cpp/src/Ice/EventHandler.cpp +1 -1
  248. data/ext/ice/cpp/src/Ice/EventHandler.h +1 -1
  249. data/ext/ice/cpp/src/Ice/EventHandlerF.h +1 -1
  250. data/ext/ice/cpp/src/Ice/Exception.cpp +1 -1
  251. data/ext/ice/cpp/src/Ice/FacetMap.cpp +3 -3
  252. data/ext/ice/cpp/src/Ice/FactoryTable.cpp +1 -1
  253. data/ext/ice/cpp/src/Ice/FactoryTableInit.cpp +1 -1
  254. data/ext/ice/cpp/src/Ice/GCObject.cpp +1 -1
  255. data/ext/ice/cpp/src/Ice/HashUtil.h +1 -1
  256. data/ext/ice/cpp/src/Ice/HttpParser.cpp +1 -1
  257. data/ext/ice/cpp/src/Ice/HttpParser.h +1 -1
  258. data/ext/ice/cpp/src/Ice/IPEndpointI.cpp +24 -29
  259. data/ext/ice/cpp/src/Ice/IPEndpointI.h +5 -5
  260. data/ext/ice/cpp/src/Ice/IPEndpointIF.h +1 -1
  261. data/ext/ice/cpp/src/Ice/IconvStringConverter.cpp +1 -1
  262. data/ext/ice/cpp/src/Ice/Identity.cpp +3 -3
  263. data/ext/ice/cpp/src/Ice/ImplicitContext.cpp +6 -4
  264. data/ext/ice/cpp/src/Ice/ImplicitContextF.cpp +3 -3
  265. data/ext/ice/cpp/src/Ice/ImplicitContextI.cpp +2 -13
  266. data/ext/ice/cpp/src/Ice/ImplicitContextI.h +1 -1
  267. data/ext/ice/cpp/src/Ice/Incoming.cpp +1 -1
  268. data/ext/ice/cpp/src/Ice/IncomingAsync.cpp +1 -1
  269. data/ext/ice/cpp/src/Ice/IncomingRequest.h +1 -1
  270. data/ext/ice/cpp/src/Ice/Initialize.cpp +10 -16
  271. data/ext/ice/cpp/src/Ice/InputStream.cpp +1 -1
  272. data/ext/ice/cpp/src/Ice/Instance.cpp +13 -34
  273. data/ext/ice/cpp/src/Ice/Instance.h +1 -1
  274. data/ext/ice/cpp/src/Ice/Instrumentation.cpp +33 -13
  275. data/ext/ice/cpp/src/Ice/InstrumentationF.cpp +3 -3
  276. data/ext/ice/cpp/src/Ice/InstrumentationI.cpp +1 -1
  277. data/ext/ice/cpp/src/Ice/InstrumentationI.h +1 -1
  278. data/ext/ice/cpp/src/Ice/LocalException.cpp +279 -279
  279. data/ext/ice/cpp/src/Ice/LocalObject.cpp +1 -1
  280. data/ext/ice/cpp/src/Ice/Locator.cpp +287 -174
  281. data/ext/ice/cpp/src/Ice/LocatorF.cpp +3 -3
  282. data/ext/ice/cpp/src/Ice/LocatorInfo.cpp +4 -9
  283. data/ext/ice/cpp/src/Ice/LocatorInfo.h +1 -1
  284. data/ext/ice/cpp/src/Ice/LocatorInfoF.h +1 -1
  285. data/ext/ice/cpp/src/Ice/Logger.cpp +6 -4
  286. data/ext/ice/cpp/src/Ice/LoggerAdminI.cpp +1 -1
  287. data/ext/ice/cpp/src/Ice/LoggerAdminI.h +1 -1
  288. data/ext/ice/cpp/src/Ice/LoggerF.cpp +3 -3
  289. data/ext/ice/cpp/src/Ice/LoggerI.cpp +1 -1
  290. data/ext/ice/cpp/src/Ice/LoggerI.h +1 -1
  291. data/ext/ice/cpp/src/Ice/LoggerUtil.cpp +1 -1
  292. data/ext/ice/cpp/src/Ice/Metrics.cpp +297 -109
  293. data/ext/ice/cpp/src/Ice/MetricsAdminI.cpp +2 -7
  294. data/ext/ice/cpp/src/Ice/MetricsObserverI.cpp +1 -1
  295. data/ext/ice/cpp/src/Ice/Network.cpp +188 -225
  296. data/ext/ice/cpp/src/Ice/Network.h +3 -12
  297. data/ext/ice/cpp/src/Ice/NetworkF.h +1 -1
  298. data/ext/ice/cpp/src/Ice/NetworkProxy.cpp +1 -1
  299. data/ext/ice/cpp/src/Ice/NetworkProxy.h +1 -1
  300. data/ext/ice/cpp/src/Ice/NetworkProxyF.h +1 -1
  301. data/ext/ice/cpp/src/Ice/Object.cpp +7 -4
  302. data/ext/ice/cpp/src/Ice/ObjectAdapter.cpp +6 -4
  303. data/ext/ice/cpp/src/Ice/ObjectAdapterF.cpp +3 -3
  304. data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.cpp +53 -19
  305. data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.h +1 -1
  306. data/ext/ice/cpp/src/Ice/ObjectAdapterFactoryF.h +1 -1
  307. data/ext/ice/cpp/src/Ice/ObjectAdapterI.cpp +116 -150
  308. data/ext/ice/cpp/src/Ice/ObjectAdapterI.h +11 -11
  309. data/ext/ice/cpp/src/Ice/ObjectFactory.cpp +6 -4
  310. data/ext/ice/cpp/src/Ice/ObserverHelper.cpp +1 -1
  311. data/ext/ice/cpp/src/Ice/OpaqueEndpointI.cpp +25 -42
  312. data/ext/ice/cpp/src/Ice/OpaqueEndpointI.h +2 -2
  313. data/ext/ice/cpp/src/Ice/OutgoingAsync.cpp +1 -1
  314. data/ext/ice/cpp/src/Ice/OutputStream.cpp +1 -1
  315. data/ext/ice/cpp/src/Ice/Plugin.cpp +9 -5
  316. data/ext/ice/cpp/src/Ice/PluginF.cpp +3 -3
  317. data/ext/ice/cpp/src/Ice/PluginManagerI.cpp +15 -34
  318. data/ext/ice/cpp/src/Ice/PluginManagerI.h +3 -3
  319. data/ext/ice/cpp/src/Ice/Process.cpp +69 -40
  320. data/ext/ice/cpp/src/Ice/ProcessF.cpp +3 -3
  321. data/ext/ice/cpp/src/Ice/Properties.cpp +6 -4
  322. data/ext/ice/cpp/src/Ice/PropertiesAdmin.cpp +89 -54
  323. data/ext/ice/cpp/src/Ice/PropertiesAdminI.cpp +1 -1
  324. data/ext/ice/cpp/src/Ice/PropertiesAdminI.h +1 -1
  325. data/ext/ice/cpp/src/Ice/PropertiesF.cpp +3 -3
  326. data/ext/ice/cpp/src/Ice/PropertiesI.cpp +15 -21
  327. data/ext/ice/cpp/src/Ice/PropertiesI.h +10 -10
  328. data/ext/ice/cpp/src/Ice/PropertyNames.cpp +4 -2
  329. data/ext/ice/cpp/src/Ice/PropertyNames.h +2 -2
  330. data/ext/ice/cpp/src/Ice/Protocol.cpp +5 -13
  331. data/ext/ice/cpp/src/Ice/ProtocolInstance.cpp +1 -1
  332. data/ext/ice/cpp/src/Ice/ProtocolInstance.h +1 -1
  333. data/ext/ice/cpp/src/Ice/ProtocolInstanceF.h +1 -1
  334. data/ext/ice/cpp/src/Ice/ProtocolPluginFacade.cpp +1 -1
  335. data/ext/ice/cpp/src/Ice/ProtocolPluginFacade.h +1 -1
  336. data/ext/ice/cpp/src/Ice/ProtocolPluginFacadeF.h +1 -1
  337. data/ext/ice/cpp/src/Ice/Proxy.cpp +46 -1
  338. data/ext/ice/cpp/src/Ice/ProxyFactory.cpp +1 -1
  339. data/ext/ice/cpp/src/Ice/ProxyFactory.h +1 -1
  340. data/ext/ice/cpp/src/Ice/Reference.cpp +56 -6
  341. data/ext/ice/cpp/src/Ice/Reference.h +13 -2
  342. data/ext/ice/cpp/src/Ice/ReferenceFactory.cpp +51 -90
  343. data/ext/ice/cpp/src/Ice/ReferenceFactory.h +1 -1
  344. data/ext/ice/cpp/src/Ice/ReferenceFactoryF.h +1 -1
  345. data/ext/ice/cpp/src/Ice/RegisterPluginsInit.cpp +1 -1
  346. data/ext/ice/cpp/src/Ice/RegisterPluginsInit.h +1 -1
  347. data/ext/ice/cpp/src/Ice/RemoteLogger.cpp +203 -117
  348. data/ext/ice/cpp/src/Ice/ReplyStatus.h +1 -1
  349. data/ext/ice/cpp/src/Ice/RequestHandler.cpp +1 -1
  350. data/ext/ice/cpp/src/Ice/RequestHandler.h +1 -1
  351. data/ext/ice/cpp/src/Ice/RequestHandlerFactory.cpp +1 -1
  352. data/ext/ice/cpp/src/Ice/RequestHandlerFactory.h +1 -1
  353. data/ext/ice/cpp/src/Ice/ResponseHandler.cpp +1 -1
  354. data/ext/ice/cpp/src/Ice/ResponseHandler.h +1 -1
  355. data/ext/ice/cpp/src/Ice/RetryQueue.cpp +1 -1
  356. data/ext/ice/cpp/src/Ice/RetryQueue.h +1 -1
  357. data/ext/ice/cpp/src/Ice/RetryQueueF.h +1 -1
  358. data/ext/ice/cpp/src/Ice/Router.cpp +167 -89
  359. data/ext/ice/cpp/src/Ice/RouterF.cpp +3 -3
  360. data/ext/ice/cpp/src/Ice/RouterInfo.cpp +6 -28
  361. data/ext/ice/cpp/src/Ice/RouterInfo.h +1 -3
  362. data/ext/ice/cpp/src/Ice/RouterInfoF.h +1 -1
  363. data/ext/ice/cpp/src/Ice/SHA1.cpp +1 -1
  364. data/ext/ice/cpp/src/Ice/Selector.cpp +19 -26
  365. data/ext/ice/cpp/src/Ice/Selector.h +1 -1
  366. data/ext/ice/cpp/src/Ice/ServantLocator.cpp +6 -4
  367. data/ext/ice/cpp/src/Ice/ServantLocatorF.cpp +3 -3
  368. data/ext/ice/cpp/src/Ice/ServantManager.cpp +15 -31
  369. data/ext/ice/cpp/src/Ice/ServantManager.h +1 -1
  370. data/ext/ice/cpp/src/Ice/SharedContext.h +1 -1
  371. data/ext/ice/cpp/src/Ice/SliceChecksumDict.cpp +3 -3
  372. data/ext/ice/cpp/src/Ice/SliceChecksums.cpp +1 -1
  373. data/ext/ice/cpp/src/Ice/SlicedData.cpp +1 -1
  374. data/ext/ice/cpp/src/Ice/StreamSocket.cpp +32 -52
  375. data/ext/ice/cpp/src/Ice/StreamSocket.h +1 -1
  376. data/ext/ice/cpp/src/Ice/StringConverterPlugin.cpp +10 -1
  377. data/ext/ice/cpp/src/Ice/StringUtil.h +1 -1
  378. data/ext/ice/cpp/src/Ice/SysLoggerI.cpp +1 -1
  379. data/ext/ice/cpp/src/Ice/SysLoggerI.h +1 -1
  380. data/ext/ice/cpp/src/Ice/TcpAcceptor.cpp +5 -13
  381. data/ext/ice/cpp/src/Ice/TcpAcceptor.h +1 -1
  382. data/ext/ice/cpp/src/Ice/TcpConnector.cpp +1 -1
  383. data/ext/ice/cpp/src/Ice/TcpConnector.h +1 -1
  384. data/ext/ice/cpp/src/Ice/TcpEndpointI.cpp +8 -11
  385. data/ext/ice/cpp/src/Ice/TcpEndpointI.h +2 -2
  386. data/ext/ice/cpp/src/Ice/TcpTransceiver.cpp +1 -1
  387. data/ext/ice/cpp/src/Ice/TcpTransceiver.h +1 -1
  388. data/ext/ice/cpp/src/Ice/Thread.cpp +1 -1
  389. data/ext/ice/cpp/src/Ice/ThreadPool.cpp +13 -13
  390. data/ext/ice/cpp/src/Ice/ThreadPool.h +1 -1
  391. data/ext/ice/cpp/src/Ice/Timer.cpp +1 -1
  392. data/ext/ice/cpp/src/Ice/TraceLevels.cpp +1 -1
  393. data/ext/ice/cpp/src/Ice/TraceLevels.h +1 -1
  394. data/ext/ice/cpp/src/Ice/TraceLevelsF.h +1 -1
  395. data/ext/ice/cpp/src/Ice/TraceUtil.cpp +1 -1
  396. data/ext/ice/cpp/src/Ice/TraceUtil.h +1 -1
  397. data/ext/ice/cpp/src/Ice/Transceiver.cpp +1 -1
  398. data/ext/ice/cpp/src/Ice/Transceiver.h +1 -1
  399. data/ext/ice/cpp/src/Ice/TransceiverF.h +1 -1
  400. data/ext/ice/cpp/src/Ice/UdpConnector.cpp +1 -1
  401. data/ext/ice/cpp/src/Ice/UdpConnector.h +1 -1
  402. data/ext/ice/cpp/src/Ice/UdpEndpointI.cpp +19 -27
  403. data/ext/ice/cpp/src/Ice/UdpEndpointI.h +2 -2
  404. data/ext/ice/cpp/src/Ice/UdpTransceiver.cpp +17 -54
  405. data/ext/ice/cpp/src/Ice/UdpTransceiver.h +1 -1
  406. data/ext/ice/cpp/src/Ice/Value.cpp +1 -1
  407. data/ext/ice/cpp/src/Ice/ValueFactory.cpp +9 -5
  408. data/ext/ice/cpp/src/Ice/ValueFactoryManagerI.cpp +3 -6
  409. data/ext/ice/cpp/src/Ice/ValueFactoryManagerI.h +2 -2
  410. data/ext/ice/cpp/src/Ice/Version.cpp +3 -3
  411. data/ext/ice/cpp/src/Ice/VirtualShared.h +1 -1
  412. data/ext/ice/cpp/src/Ice/WSAcceptor.cpp +1 -1
  413. data/ext/ice/cpp/src/Ice/WSAcceptor.h +1 -1
  414. data/ext/ice/cpp/src/Ice/WSConnector.cpp +1 -1
  415. data/ext/ice/cpp/src/Ice/WSConnector.h +1 -1
  416. data/ext/ice/cpp/src/Ice/WSEndpoint.cpp +4 -5
  417. data/ext/ice/cpp/src/Ice/WSEndpoint.h +2 -2
  418. data/ext/ice/cpp/src/Ice/WSTransceiver.cpp +8 -9
  419. data/ext/ice/cpp/src/Ice/WSTransceiver.h +1 -1
  420. data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.cpp +85 -27
  421. data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.h +599 -113
  422. data/ext/ice/cpp/src/IceDiscovery/LocatorI.cpp +1 -1
  423. data/ext/ice/cpp/src/IceDiscovery/LocatorI.h +1 -1
  424. data/ext/ice/cpp/src/IceDiscovery/LookupI.cpp +1 -1
  425. data/ext/ice/cpp/src/IceDiscovery/LookupI.h +1 -1
  426. data/ext/ice/cpp/src/IceDiscovery/PluginI.cpp +1 -1
  427. data/ext/ice/cpp/src/IceDiscovery/PluginI.h +1 -1
  428. data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.cpp +70 -24
  429. data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.h +635 -69
  430. data/ext/ice/cpp/src/IceLocatorDiscovery/Plugin.h +1 -1
  431. data/ext/ice/cpp/src/IceLocatorDiscovery/PluginI.cpp +71 -9
  432. data/ext/ice/cpp/src/IceSSL/AcceptorI.cpp +2 -4
  433. data/ext/ice/cpp/src/IceSSL/AcceptorI.h +1 -1
  434. data/ext/ice/cpp/src/IceSSL/CertificateI.cpp +1 -1
  435. data/ext/ice/cpp/src/IceSSL/CertificateI.h +1 -1
  436. data/ext/ice/cpp/src/IceSSL/ConnectionInfo.cpp +6 -4
  437. data/ext/ice/cpp/src/IceSSL/ConnectionInfoF.cpp +3 -3
  438. data/ext/ice/cpp/src/IceSSL/ConnectorI.cpp +2 -4
  439. data/ext/ice/cpp/src/IceSSL/ConnectorI.h +1 -1
  440. data/ext/ice/cpp/src/IceSSL/EndpointI.cpp +2 -2
  441. data/ext/ice/cpp/src/IceSSL/EndpointI.h +2 -2
  442. data/ext/ice/cpp/src/IceSSL/EndpointInfo.cpp +6 -4
  443. data/ext/ice/cpp/src/IceSSL/Instance.cpp +1 -1
  444. data/ext/ice/cpp/src/IceSSL/Instance.h +1 -1
  445. data/ext/ice/cpp/src/IceSSL/InstanceF.h +1 -1
  446. data/ext/ice/cpp/src/IceSSL/OpenSSLCertificateI.cpp +1 -1
  447. data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.cpp +1 -1
  448. data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.h +1 -1
  449. data/ext/ice/cpp/src/IceSSL/OpenSSLEngineF.h +1 -1
  450. data/ext/ice/cpp/src/IceSSL/OpenSSLPluginI.cpp +1 -1
  451. data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.cpp +25 -62
  452. data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.h +1 -1
  453. data/ext/ice/cpp/src/IceSSL/OpenSSLUtil.cpp +1 -1
  454. data/ext/ice/cpp/src/IceSSL/OpenSSLUtil.h +1 -1
  455. data/ext/ice/cpp/src/IceSSL/PluginI.cpp +1 -1
  456. data/ext/ice/cpp/src/IceSSL/PluginI.h +1 -1
  457. data/ext/ice/cpp/src/IceSSL/RFC2253.cpp +1 -1
  458. data/ext/ice/cpp/src/IceSSL/RFC2253.h +1 -1
  459. data/ext/ice/cpp/src/IceSSL/SChannelCertificateI.cpp +1 -1
  460. data/ext/ice/cpp/src/IceSSL/SChannelEngine.cpp +1 -1
  461. data/ext/ice/cpp/src/IceSSL/SChannelEngine.h +1 -1
  462. data/ext/ice/cpp/src/IceSSL/SChannelEngineF.h +1 -1
  463. data/ext/ice/cpp/src/IceSSL/SChannelPluginI.cpp +1 -1
  464. data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.cpp +19 -27
  465. data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.h +1 -1
  466. data/ext/ice/cpp/src/IceSSL/SSLEngine.cpp +7 -16
  467. data/ext/ice/cpp/src/IceSSL/SSLEngine.h +1 -1
  468. data/ext/ice/cpp/src/IceSSL/SSLEngineF.h +1 -1
  469. data/ext/ice/cpp/src/IceSSL/SecureTransportCertificateI.cpp +1 -1
  470. data/ext/ice/cpp/src/IceSSL/SecureTransportEngine.cpp +1 -1
  471. data/ext/ice/cpp/src/IceSSL/SecureTransportEngine.h +1 -1
  472. data/ext/ice/cpp/src/IceSSL/SecureTransportEngineF.h +1 -1
  473. data/ext/ice/cpp/src/IceSSL/SecureTransportPluginI.cpp +1 -1
  474. data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.cpp +1 -1
  475. data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.h +1 -1
  476. data/ext/ice/cpp/src/IceSSL/SecureTransportUtil.cpp +7 -10
  477. data/ext/ice/cpp/src/IceSSL/SecureTransportUtil.h +1 -1
  478. data/ext/ice/cpp/src/IceSSL/TrustManager.cpp +4 -5
  479. data/ext/ice/cpp/src/IceSSL/TrustManager.h +1 -1
  480. data/ext/ice/cpp/src/IceSSL/TrustManagerF.h +1 -1
  481. data/ext/ice/cpp/src/IceSSL/UWPCertificateI.cpp +1 -1
  482. data/ext/ice/cpp/src/IceSSL/UWPEngine.cpp +1 -1
  483. data/ext/ice/cpp/src/IceSSL/UWPEngine.h +1 -1
  484. data/ext/ice/cpp/src/IceSSL/UWPEngineF.h +1 -1
  485. data/ext/ice/cpp/src/IceSSL/UWPPluginI.cpp +1 -1
  486. data/ext/ice/cpp/src/IceSSL/UWPTransceiverI.cpp +1 -1
  487. data/ext/ice/cpp/src/IceSSL/UWPTransceiverI.h +1 -1
  488. data/ext/ice/cpp/src/IceSSL/Util.cpp +1 -1
  489. data/ext/ice/cpp/src/IceSSL/Util.h +1 -1
  490. data/ext/ice/cpp/src/IceUtil/ConsoleUtil.cpp +1 -1
  491. data/ext/ice/cpp/src/IceUtil/ConvertUTF.cpp +1 -1
  492. data/ext/ice/cpp/src/IceUtil/ConvertUTF.h +1 -1
  493. data/ext/ice/cpp/src/IceUtil/CtrlCHandler.cpp +1 -1
  494. data/ext/ice/cpp/src/IceUtil/FileUtil.cpp +5 -5
  495. data/ext/ice/cpp/src/IceUtil/InputUtil.cpp +1 -1
  496. data/ext/ice/cpp/src/IceUtil/MutexProtocol.cpp +1 -1
  497. data/ext/ice/cpp/src/IceUtil/Options.cpp +1 -1
  498. data/ext/ice/cpp/src/IceUtil/OutputUtil.cpp +1 -1
  499. data/ext/ice/cpp/src/IceUtil/Random.cpp +1 -1
  500. data/ext/ice/cpp/src/IceUtil/RecMutex.cpp +1 -5
  501. data/ext/ice/cpp/src/IceUtil/Shared.cpp +1 -1
  502. data/ext/ice/cpp/src/IceUtil/StringConverter.cpp +1 -1
  503. data/ext/ice/cpp/src/IceUtil/StringUtil.cpp +1 -1
  504. data/ext/ice/cpp/src/IceUtil/ThreadException.cpp +1 -1
  505. data/ext/ice/cpp/src/IceUtil/Time.cpp +1 -1
  506. data/ext/ice/cpp/src/IceUtil/UUID.cpp +3 -3
  507. data/ext/ice/cpp/src/IceUtil/Unicode.cpp +1 -1
  508. data/ext/ice/cpp/src/IceUtil/Unicode.h +1 -1
  509. data/ext/ice/cpp/src/IceUtil/UtilException.cpp +1 -1
  510. data/ext/ice/cpp/src/Slice/CPlusPlusUtil.cpp +160 -150
  511. data/ext/ice/cpp/src/Slice/CPlusPlusUtil.h +9 -8
  512. data/ext/ice/cpp/src/Slice/Checksum.cpp +1 -1
  513. data/ext/ice/cpp/src/Slice/Checksum.h +1 -1
  514. data/ext/ice/cpp/src/Slice/FileTracker.cpp +1 -1
  515. data/ext/ice/cpp/src/Slice/FileTracker.h +1 -1
  516. data/ext/ice/cpp/src/Slice/Grammar.cpp +567 -585
  517. data/ext/ice/cpp/src/Slice/Grammar.h +2 -2
  518. data/ext/ice/cpp/src/Slice/GrammarUtil.h +1 -1
  519. data/ext/ice/cpp/src/Slice/JavaUtil.cpp +131 -47
  520. data/ext/ice/cpp/src/Slice/JavaUtil.h +10 -5
  521. data/ext/ice/cpp/src/Slice/MD5.cpp +1 -1
  522. data/ext/ice/cpp/src/Slice/MD5.h +1 -1
  523. data/ext/ice/cpp/src/Slice/PHPUtil.cpp +1 -1
  524. data/ext/ice/cpp/src/Slice/PHPUtil.h +1 -1
  525. data/ext/ice/cpp/src/Slice/Parser.cpp +383 -101
  526. data/ext/ice/cpp/src/Slice/Parser.h +40 -3
  527. data/ext/ice/cpp/src/Slice/Preprocessor.cpp +2 -1
  528. data/ext/ice/cpp/src/Slice/Preprocessor.h +2 -2
  529. data/ext/ice/cpp/src/Slice/Python.cpp +7 -15
  530. data/ext/ice/cpp/src/Slice/PythonUtil.cpp +66 -9
  531. data/ext/ice/cpp/src/Slice/PythonUtil.h +2 -2
  532. data/ext/ice/cpp/src/Slice/Ruby.cpp +1 -1
  533. data/ext/ice/cpp/src/Slice/RubyUtil.cpp +2 -2
  534. data/ext/ice/cpp/src/Slice/RubyUtil.h +1 -1
  535. data/ext/ice/cpp/src/Slice/Scanner.cpp +214 -135
  536. data/ext/ice/cpp/src/Slice/SliceUtil.cpp +1 -1
  537. data/ext/ice/cpp/src/Slice/StringLiteralUtil.cpp +99 -17
  538. data/ext/ice/cpp/src/Slice/Util.h +5 -4
  539. data/ice.gemspec +2 -2
  540. data/lib/Glacier2.rb +1 -1
  541. data/lib/Glacier2/Metrics.rb +2 -2
  542. data/lib/Glacier2/PermissionsVerifier.rb +2 -2
  543. data/lib/Glacier2/PermissionsVerifierF.rb +2 -2
  544. data/lib/Glacier2/Router.rb +2 -2
  545. data/lib/Glacier2/RouterF.rb +2 -2
  546. data/lib/Glacier2/SSLInfo.rb +2 -2
  547. data/lib/Glacier2/Session.rb +2 -2
  548. data/lib/Ice.rb +2 -2
  549. data/lib/Ice/BuiltinSequences.rb +2 -2
  550. data/lib/Ice/Communicator.rb +2 -2
  551. data/lib/Ice/CommunicatorF.rb +2 -2
  552. data/lib/Ice/Connection.rb +2 -2
  553. data/lib/Ice/ConnectionF.rb +2 -2
  554. data/lib/Ice/Current.rb +2 -2
  555. data/lib/Ice/Endpoint.rb +2 -2
  556. data/lib/Ice/EndpointF.rb +2 -2
  557. data/lib/Ice/EndpointTypes.rb +2 -2
  558. data/lib/Ice/FacetMap.rb +2 -2
  559. data/lib/Ice/Identity.rb +2 -2
  560. data/lib/Ice/ImplicitContext.rb +2 -2
  561. data/lib/Ice/ImplicitContextF.rb +2 -2
  562. data/lib/Ice/Instrumentation.rb +2 -2
  563. data/lib/Ice/InstrumentationF.rb +2 -2
  564. data/lib/Ice/LocalException.rb +2 -2
  565. data/lib/Ice/Locator.rb +2 -2
  566. data/lib/Ice/LocatorF.rb +2 -2
  567. data/lib/Ice/Logger.rb +2 -2
  568. data/lib/Ice/LoggerF.rb +2 -2
  569. data/lib/Ice/Metrics.rb +2 -2
  570. data/lib/Ice/ObjectAdapter.rb +2 -2
  571. data/lib/Ice/ObjectAdapterF.rb +2 -2
  572. data/lib/Ice/ObjectFactory.rb +2 -2
  573. data/lib/Ice/Plugin.rb +2 -2
  574. data/lib/Ice/PluginF.rb +2 -2
  575. data/lib/Ice/Process.rb +2 -2
  576. data/lib/Ice/ProcessF.rb +2 -2
  577. data/lib/Ice/Properties.rb +2 -2
  578. data/lib/Ice/PropertiesAdmin.rb +2 -2
  579. data/lib/Ice/PropertiesF.rb +2 -2
  580. data/lib/Ice/RemoteLogger.rb +2 -2
  581. data/lib/Ice/Router.rb +2 -2
  582. data/lib/Ice/RouterF.rb +2 -2
  583. data/lib/Ice/ServantLocator.rb +2 -2
  584. data/lib/Ice/ServantLocatorF.rb +2 -2
  585. data/lib/Ice/SliceChecksumDict.rb +2 -2
  586. data/lib/Ice/ValueFactory.rb +2 -2
  587. data/lib/Ice/Version.rb +2 -2
  588. data/lib/IceBox.rb +1 -1
  589. data/lib/IceBox/IceBox.rb +2 -2
  590. data/lib/IceGrid.rb +1 -1
  591. data/lib/IceGrid/Admin.rb +2 -2
  592. data/lib/IceGrid/Descriptor.rb +2 -2
  593. data/lib/IceGrid/Exception.rb +2 -2
  594. data/lib/IceGrid/FileParser.rb +2 -2
  595. data/lib/IceGrid/PluginFacade.rb +2 -2
  596. data/lib/IceGrid/Registry.rb +2 -2
  597. data/lib/IceGrid/Session.rb +2 -2
  598. data/lib/IceGrid/UserAccountMapper.rb +2 -2
  599. data/lib/IcePatch2.rb +1 -1
  600. data/lib/IcePatch2/FileInfo.rb +2 -2
  601. data/lib/IcePatch2/FileServer.rb +2 -2
  602. data/lib/IceStorm.rb +1 -1
  603. data/lib/IceStorm/IceStorm.rb +2 -2
  604. data/lib/IceStorm/Metrics.rb +2 -2
  605. data/slice/Glacier2/Metrics.ice +2 -2
  606. data/slice/Glacier2/PermissionsVerifier.ice +2 -2
  607. data/slice/Glacier2/PermissionsVerifierF.ice +2 -2
  608. data/slice/Glacier2/Router.ice +2 -2
  609. data/slice/Glacier2/RouterF.ice +2 -2
  610. data/slice/Glacier2/SSLInfo.ice +2 -2
  611. data/slice/Glacier2/Session.ice +2 -2
  612. data/slice/Ice/BuiltinSequences.ice +2 -2
  613. data/slice/Ice/Communicator.ice +66 -73
  614. data/slice/Ice/CommunicatorF.ice +2 -2
  615. data/slice/Ice/Connection.ice +47 -17
  616. data/slice/Ice/ConnectionF.ice +2 -2
  617. data/slice/Ice/Current.ice +4 -5
  618. data/slice/Ice/Endpoint.ice +16 -16
  619. data/slice/Ice/EndpointF.ice +2 -2
  620. data/slice/Ice/EndpointTypes.ice +2 -2
  621. data/slice/Ice/FacetMap.ice +2 -2
  622. data/slice/Ice/Identity.ice +2 -2
  623. data/slice/Ice/ImplicitContext.ice +6 -6
  624. data/slice/Ice/ImplicitContextF.ice +2 -2
  625. data/slice/Ice/Instrumentation.ice +2 -2
  626. data/slice/Ice/InstrumentationF.ice +2 -2
  627. data/slice/Ice/LocalException.ice +2 -2
  628. data/slice/Ice/Locator.ice +3 -3
  629. data/slice/Ice/LocatorF.ice +2 -2
  630. data/slice/Ice/Logger.ice +2 -2
  631. data/slice/Ice/LoggerF.ice +2 -2
  632. data/slice/Ice/Metrics.ice +2 -2
  633. data/slice/Ice/ObjectAdapter.ice +10 -10
  634. data/slice/Ice/ObjectAdapterF.ice +2 -2
  635. data/slice/Ice/ObjectFactory.ice +3 -3
  636. data/slice/Ice/Plugin.ice +4 -4
  637. data/slice/Ice/PluginF.ice +2 -2
  638. data/slice/Ice/Process.ice +2 -2
  639. data/slice/Ice/ProcessF.ice +2 -2
  640. data/slice/Ice/Properties.ice +11 -11
  641. data/slice/Ice/PropertiesAdmin.ice +2 -2
  642. data/slice/Ice/PropertiesF.ice +2 -2
  643. data/slice/Ice/RemoteLogger.ice +12 -23
  644. data/slice/Ice/Router.ice +2 -2
  645. data/slice/Ice/RouterF.ice +2 -2
  646. data/slice/Ice/ServantLocator.ice +2 -2
  647. data/slice/Ice/ServantLocatorF.ice +2 -2
  648. data/slice/Ice/SliceChecksumDict.ice +2 -2
  649. data/slice/Ice/ValueFactory.ice +14 -16
  650. data/slice/Ice/Version.ice +2 -2
  651. data/slice/IceBT/ConnectionInfo.ice +2 -2
  652. data/slice/IceBT/EndpointInfo.ice +2 -2
  653. data/slice/IceBT/Types.ice +2 -2
  654. data/slice/IceBox/IceBox.ice +3 -4
  655. data/slice/IceDiscovery/IceDiscovery.ice +2 -2
  656. data/slice/IceGrid/Admin.ice +2 -2
  657. data/slice/IceGrid/Descriptor.ice +2 -2
  658. data/slice/IceGrid/Exception.ice +2 -2
  659. data/slice/IceGrid/FileParser.ice +2 -2
  660. data/slice/IceGrid/PluginFacade.ice +6 -6
  661. data/slice/IceGrid/Registry.ice +2 -2
  662. data/slice/IceGrid/Session.ice +2 -2
  663. data/slice/IceGrid/UserAccountMapper.ice +2 -2
  664. data/slice/IceIAP/ConnectionInfo.ice +2 -2
  665. data/slice/IceIAP/EndpointInfo.ice +2 -2
  666. data/slice/IceLocatorDiscovery/IceLocatorDiscovery.ice +2 -2
  667. data/slice/IcePatch2/FileInfo.ice +2 -2
  668. data/slice/IcePatch2/FileServer.ice +2 -2
  669. data/slice/IceSSL/ConnectionInfo.ice +2 -2
  670. data/slice/IceSSL/ConnectionInfoF.ice +2 -2
  671. data/slice/IceSSL/EndpointInfo.ice +2 -2
  672. data/slice/IceStorm/IceStorm.ice +5 -6
  673. data/slice/IceStorm/Metrics.ice +2 -2
  674. metadata +3 -13
  675. data/BZIP2_LICENSE +0 -42
  676. data/ext/ice/bzip2/blocksort.c +0 -1094
  677. data/ext/ice/bzip2/bzlib.c +0 -1572
  678. data/ext/ice/bzip2/bzlib.h +0 -282
  679. data/ext/ice/bzip2/bzlib_private.h +0 -509
  680. data/ext/ice/bzip2/compress.c +0 -672
  681. data/ext/ice/bzip2/crctable.c +0 -104
  682. data/ext/ice/bzip2/decompress.c +0 -646
  683. data/ext/ice/bzip2/huffman.c +0 -205
  684. data/ext/ice/bzip2/randtable.c +0 -84
@@ -1,6 +1,6 @@
1
1
  // **********************************************************************
2
2
  //
3
- // Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
3
+ // Copyright (c) 2003-2018 ZeroC, Inc. All rights reserved.
4
4
  //
5
5
  // This copy of Ice is licensed to you under the terms described in the
6
6
  // ICE_LICENSE file included in this distribution.
@@ -259,6 +259,43 @@ private:
259
259
  };
260
260
  typedef ::IceUtil::Handle<DefinitionContext> DefinitionContextPtr;
261
261
 
262
+ // ----------------------------------------------------------------------
263
+ // Comment
264
+ // ----------------------------------------------------------------------
265
+
266
+ class Comment : public ::IceUtil::SimpleShared
267
+ {
268
+ public:
269
+
270
+ bool isDeprecated() const;
271
+ StringList deprecated() const;
272
+
273
+ StringList overview() const; // Contains all introductory lines up to the first tag.
274
+ StringList misc() const; // Contains unrecognized tags.
275
+ StringList seeAlso() const; // Targets of @see tags.
276
+
277
+ StringList returns() const; // Description of an operation's return value.
278
+ std::map<std::string, StringList> parameters() const; // Parameter descriptions for an op. Key is parameter name.
279
+ std::map<std::string, StringList> exceptions() const; // Exception descriptions for an op. Key is exception name.
280
+
281
+ private:
282
+
283
+ Comment();
284
+
285
+ bool _isDeprecated;
286
+ StringList _deprecated;
287
+ StringList _overview;
288
+ StringList _misc;
289
+ StringList _seeAlso;
290
+
291
+ StringList _returns;
292
+ std::map<std::string, StringList> _parameters;
293
+ std::map<std::string, StringList> _exceptions;
294
+
295
+ friend class Contained;
296
+ };
297
+ typedef ::IceUtil::Handle<Comment> CommentPtr;
298
+
262
299
  // ----------------------------------------------------------------------
263
300
  // GrammarBase
264
301
  // ----------------------------------------------------------------------
@@ -366,6 +403,7 @@ public:
366
403
  std::string file() const;
367
404
  std::string line() const;
368
405
  std::string comment() const;
406
+ CommentPtr parseComment(bool) const;
369
407
 
370
408
  int includeLevel() const;
371
409
  void updateIncludeLevel();
@@ -427,7 +465,7 @@ public:
427
465
  virtual void destroy();
428
466
  ModulePtr createModule(const std::string&);
429
467
  ClassDefPtr createClassDef(const std::string&, int, bool, const ClassList&, bool);
430
- ClassDeclPtr createClassDecl(const std::string&, bool, bool, bool = true);
468
+ ClassDeclPtr createClassDecl(const std::string&, bool, bool);
431
469
  ExceptionPtr createException(const std::string&, const ExceptionPtr&, bool, NodeType = Real);
432
470
  StructPtr createStruct(const std::string&, bool, NodeType = Real);
433
471
  SequencePtr createSequence(const std::string&, const TypePtr&, const StringList&, bool, NodeType = Real);
@@ -490,7 +528,6 @@ protected:
490
528
 
491
529
  Container(const UnitPtr&);
492
530
 
493
- void checkIdentifier(const std::string&) const;
494
531
  bool checkInterfaceAndLocal(const std::string&, bool, bool, bool, bool, bool);
495
532
  bool checkGlobalMetaData(const StringList&, const StringList&);
496
533
  bool validateConstant(const std::string&, const TypePtr&, SyntaxTreeBasePtr&, const std::string&, bool);
@@ -1,6 +1,6 @@
1
1
  // **********************************************************************
2
2
  //
3
- // Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
3
+ // Copyright (c) 2003-2018 ZeroC, Inc. All rights reserved.
4
4
  //
5
5
  // This copy of Ice is licensed to you under the terms described in the
6
6
  // ICE_LICENSE file included in this distribution.
@@ -602,6 +602,7 @@ Slice::Preprocessor::printMakefileDependencies(ostream& out, Language lang, cons
602
602
  case SliceXML:
603
603
  break;
604
604
  case Java:
605
+ case MATLAB:
605
606
  {
606
607
  //
607
608
  // We want to shift the files left one position, so that
@@ -1,6 +1,6 @@
1
1
  // **********************************************************************
2
2
  //
3
- // Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
3
+ // Copyright (c) 2003-2018 ZeroC, Inc. All rights reserved.
4
4
  //
5
5
  // This copy of Ice is licensed to you under the terms described in the
6
6
  // ICE_LICENSE file included in this distribution.
@@ -32,7 +32,7 @@ public:
32
32
  FILE* preprocess(bool, const std::vector<std::string>&);
33
33
  bool close();
34
34
 
35
- enum Language { CPlusPlus, Java, CSharp, Python, Ruby, PHP, JavaScript, JavaScriptJSON, ObjC, SliceXML };
35
+ enum Language { CPlusPlus, Java, CSharp, Python, Ruby, PHP, JavaScript, JavaScriptJSON, ObjC, SliceXML, MATLAB };
36
36
 
37
37
  bool printMakefileDependencies(std::ostream&, Language, const std::vector<std::string>&, const std::string& = "",
38
38
  const std::string& = "cpp", const std::string& = "");
@@ -1,6 +1,6 @@
1
1
  // **********************************************************************
2
2
  //
3
- // Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
3
+ // Copyright (c) 2003-2018 ZeroC, Inc. All rights reserved.
4
4
  //
5
5
  // This copy of Ice is licensed to you under the terms described in the
6
6
  // ICE_LICENSE file included in this distribution.
@@ -356,9 +356,7 @@ PackageVisitor::readInit(const string& dir, StringList& modules, StringList& sub
356
356
 
357
357
  if(s.size() < 8)
358
358
  {
359
- ostringstream os;
360
- os << "invalid line '" << s << "' in '" << initPath << "'";
361
- throw os.str();
359
+ throw runtime_error("invalid line '" + s + "' in '" + initPath + "'");
362
360
  }
363
361
 
364
362
  string name = s.substr(7);
@@ -388,16 +386,12 @@ PackageVisitor::readInit(const string& dir, StringList& modules, StringList& sub
388
386
  {
389
387
  if(state != InSubmodules)
390
388
  {
391
- ostringstream os;
392
- os << "invalid line '" << s << "' in '" << initPath << "'";
393
- throw os.str();
389
+ throw runtime_error("invalid line '" + s + "' in '" + initPath + "'");
394
390
  }
395
391
 
396
392
  if(s.size() < 15)
397
393
  {
398
- ostringstream os;
399
- os << "invalid line '" << s << "' in '" << initPath << "'";
400
- throw os.str();
394
+ throw runtime_error("invalid line '" + s + "' in '" + initPath + "'");
401
395
  }
402
396
 
403
397
  submodules.push_back(s.substr(14));
@@ -406,9 +400,7 @@ PackageVisitor::readInit(const string& dir, StringList& modules, StringList& sub
406
400
 
407
401
  if(state == InModules)
408
402
  {
409
- ostringstream os;
410
- os << "invalid format in '" << initPath << "'" << endl;
411
- throw os.str();
403
+ throw runtime_error("invalid format in '" + initPath + "'\n");
412
404
  }
413
405
  }
414
406
  }
@@ -807,10 +799,10 @@ Slice::Python::compile(const vector<string>& argv)
807
799
  consoleErr << argv[0] << ": error: " << ex.reason() << endl;
808
800
  return EXIT_FAILURE;
809
801
  }
810
- catch(const string& err)
802
+ catch(const exception& ex)
811
803
  {
812
804
  FileTracker::instance()->cleanup();
813
- consoleErr << argv[0] << ": error: " << err << endl;
805
+ consoleErr << argv[0] << ": error: " << ex.what() << endl;
814
806
  status = EXIT_FAILURE;
815
807
  }
816
808
  }
@@ -1,6 +1,6 @@
1
1
  // **********************************************************************
2
2
  //
3
- // Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
3
+ // Copyright (c) 2003-2018 ZeroC, Inc. All rights reserved.
4
4
  //
5
5
  // This copy of Ice is licensed to you under the terms described in the
6
6
  // ICE_LICENSE file included in this distribution.
@@ -3015,18 +3015,51 @@ Slice::Python::fixIdent(const string& ident)
3015
3015
  string
3016
3016
  Slice::Python::getPackageMetadata(const ContainedPtr& cont)
3017
3017
  {
3018
- UnitPtr unit = cont->container()->unit();
3019
- string file = cont->file();
3020
- assert(!file.empty());
3018
+ //
3019
+ // Traverse to the top-level module.
3020
+ //
3021
+ ModulePtr m;
3022
+ ContainedPtr p = cont;
3023
+ while(true)
3024
+ {
3025
+ if(ModulePtr::dynamicCast(p))
3026
+ {
3027
+ m = ModulePtr::dynamicCast(p);
3028
+ }
3029
+
3030
+ ContainerPtr c = p->container();
3031
+ p = ContainedPtr::dynamicCast(c); // This cast fails for Unit.
3032
+ if(!p)
3033
+ {
3034
+ break;
3035
+ }
3036
+ }
3021
3037
 
3038
+ assert(m);
3039
+
3040
+ //
3041
+ // The python:package metadata can be defined as global metadata or applied to a top-level module.
3042
+ // We check for the metadata at the top-level module first and then fall back to the global scope.
3043
+ //
3022
3044
  static const string prefix = "python:package:";
3023
- DefinitionContextPtr dc = unit->findDefinitionContext(file);
3024
- assert(dc);
3025
- string q = dc->findMetaData(prefix);
3045
+
3046
+ string q;
3047
+ if(!m->findMetaData(prefix, q))
3048
+ {
3049
+ UnitPtr unit = cont->unit();
3050
+ string file = cont->file();
3051
+ assert(!file.empty());
3052
+
3053
+ DefinitionContextPtr dc = unit->findDefinitionContext(file);
3054
+ assert(dc);
3055
+ q = dc->findMetaData(prefix);
3056
+ }
3057
+
3026
3058
  if(!q.empty())
3027
3059
  {
3028
3060
  q = q.substr(prefix.size());
3029
3061
  }
3062
+
3030
3063
  return q;
3031
3064
  }
3032
3065
 
@@ -3057,7 +3090,7 @@ Slice::Python::printHeader(IceUtilInternal::Output& out)
3057
3090
  static const char* header =
3058
3091
  "# **********************************************************************\n"
3059
3092
  "#\n"
3060
- "# Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.\n"
3093
+ "# Copyright (c) 2003-2018 ZeroC, Inc. All rights reserved.\n"
3061
3094
  "#\n"
3062
3095
  "# This copy of Ice is licensed to you under the terms described in the\n"
3063
3096
  "# ICE_LICENSE file included in this distribution.\n"
@@ -3114,7 +3147,31 @@ Slice::Python::MetaDataVisitor::visitUnitStart(const UnitPtr& p)
3114
3147
  bool
3115
3148
  Slice::Python::MetaDataVisitor::visitModuleStart(const ModulePtr& p)
3116
3149
  {
3117
- reject(p);
3150
+ static const string prefix = "python:package:";
3151
+
3152
+ StringList metaData = p->getMetaData();
3153
+ for(StringList::const_iterator r = metaData.begin(); r != metaData.end();)
3154
+ {
3155
+ string s = *r++;
3156
+ if(s.find(prefix) == 0)
3157
+ {
3158
+ //
3159
+ // Must be a top-level module.
3160
+ //
3161
+ if(UnitPtr::dynamicCast(p->container()))
3162
+ {
3163
+ continue;
3164
+ }
3165
+ }
3166
+
3167
+ if(s.find("python:") == 0)
3168
+ {
3169
+ p->definitionContext()->warning(InvalidMetaData, p->file(), "", "ignoring invalid metadata `" + s + "'");
3170
+ metaData.remove(s);
3171
+ }
3172
+ }
3173
+
3174
+ p->setMetaData(metaData);
3118
3175
  return true;
3119
3176
  }
3120
3177
 
@@ -1,6 +1,6 @@
1
1
  // **********************************************************************
2
2
  //
3
- // Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
3
+ // Copyright (c) 2003-2018 ZeroC, Inc. All rights reserved.
4
4
  //
5
5
  // This copy of Ice is licensed to you under the terms described in the
6
6
  // ICE_LICENSE file included in this distribution.
@@ -46,7 +46,7 @@ std::string scopedToName(const std::string&);
46
46
  std::string fixIdent(const std::string&);
47
47
 
48
48
  //
49
- // Return the package specified in the global metadata for the given definition,
49
+ // Return the package specified by metadata for the given definition,
50
50
  // or an empty string if no metadata was found.
51
51
  //
52
52
  std::string getPackageMetadata(const Slice::ContainedPtr&);
@@ -1,6 +1,6 @@
1
1
  // **********************************************************************
2
2
  //
3
- // Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
3
+ // Copyright (c) 2003-2018 ZeroC, Inc. All rights reserved.
4
4
  //
5
5
  // This copy of Ice is licensed to you under the terms described in the
6
6
  // ICE_LICENSE file included in this distribution.
@@ -1,6 +1,6 @@
1
1
  // **********************************************************************
2
2
  //
3
- // Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
3
+ // Copyright (c) 2003-2018 ZeroC, Inc. All rights reserved.
4
4
  //
5
5
  // This copy of Ice is licensed to you under the terms described in the
6
6
  // ICE_LICENSE file included in this distribution.
@@ -1558,7 +1558,7 @@ Slice::Ruby::printHeader(IceUtilInternal::Output& out)
1558
1558
  static const char* header =
1559
1559
  "# **********************************************************************\n"
1560
1560
  "#\n"
1561
- "# Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.\n"
1561
+ "# Copyright (c) 2003-2018 ZeroC, Inc. All rights reserved.\n"
1562
1562
  "#\n"
1563
1563
  "# This copy of Ice is licensed to you under the terms described in the\n"
1564
1564
  "# ICE_LICENSE file included in this distribution.\n"
@@ -1,6 +1,6 @@
1
1
  // **********************************************************************
2
2
  //
3
- // Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
3
+ // Copyright (c) 2003-2018 ZeroC, Inc. All rights reserved.
4
4
  //
5
5
  // This copy of Ice is licensed to you under the terms described in the
6
6
  // ICE_LICENSE file included in this distribution.
@@ -384,8 +384,8 @@ static void yy_fatal_error (yyconst char msg[] );
384
384
  *yy_cp = '\0'; \
385
385
  (yy_c_buf_p) = yy_cp;
386
386
 
387
- #define YY_NUM_RULES 20
388
- #define YY_END_OF_BUFFER 21
387
+ #define YY_NUM_RULES 19
388
+ #define YY_END_OF_BUFFER 20
389
389
  /* This struct is not used in this scanner,
390
390
  but its presence is necessary. */
391
391
  struct yy_trans_info
@@ -393,16 +393,16 @@ struct yy_trans_info
393
393
  flex_int32_t yy_verify;
394
394
  flex_int32_t yy_nxt;
395
395
  };
396
- static yyconst flex_int16_t yy_accept[73] =
396
+ static yyconst flex_int16_t yy_accept[76] =
397
397
  { 0,
398
- 0, 0, 0, 0, 0, 0, 21, 19, 17, 17,
399
- 14, 19, 19, 19, 15, 15, 19, 13, 8, 19,
400
- 9, 19, 19, 0, 15, 15, 16, 6, 5, 16,
401
- 15, 0, 0, 7, 0, 12, 13, 10, 13, 11,
402
- 0, 0, 0, 0, 0, 16, 0, 16, 15, 0,
403
- 1, 0, 18, 0, 16, 0, 0, 0, 0, 0,
404
- 0, 2, 0, 0, 0, 3, 0, 0, 0, 0,
405
- 4, 0
398
+ 0, 0, 0, 0, 0, 0, 20, 18, 16, 16,
399
+ 13, 18, 18, 18, 14, 14, 18, 12, 7, 18,
400
+ 8, 18, 18, 0, 14, 14, 15, 6, 5, 15,
401
+ 14, 0, 0, 0, 0, 11, 12, 0, 12, 0,
402
+ 9, 12, 10, 0, 0, 0, 0, 0, 15, 0,
403
+ 15, 14, 0, 1, 0, 17, 0, 15, 0, 0,
404
+ 0, 0, 0, 0, 2, 0, 0, 0, 3, 0,
405
+ 0, 0, 0, 4, 0
406
406
  } ;
407
407
 
408
408
  static yyconst flex_int32_t yy_ec[256] =
@@ -439,94 +439,94 @@ static yyconst flex_int32_t yy_ec[256] =
439
439
 
440
440
  static yyconst flex_int32_t yy_meta[32] =
441
441
  { 0,
442
- 1, 2, 3, 4, 1, 1, 4, 1, 5, 5,
443
- 1, 1, 6, 6, 6, 1, 7, 7, 7, 8,
444
- 1, 1, 1, 7, 8, 9, 8, 8, 1, 1,
442
+ 1, 2, 3, 1, 1, 1, 1, 1, 4, 4,
443
+ 1, 1, 5, 5, 5, 1, 6, 6, 6, 7,
444
+ 1, 1, 1, 6, 7, 8, 7, 7, 1, 1,
445
445
  1
446
446
  } ;
447
447
 
448
- static yyconst flex_int16_t yy_base[85] =
448
+ static yyconst flex_int16_t yy_base[87] =
449
449
  { 0,
450
- 0, 185, 0, 26, 0, 184, 189, 192, 192, 192,
451
- 192, 22, 25, 33, 47, 35, 153, 40, 147, 0,
452
- 121, 44, 114, 37, 0, 0, 63, 192, 192, 0,
453
- 107, 44, 0, 192, 65, 192, 81, 192, 0, 192,
454
- 53, 71, 109, 102, 80, 192, 78, 81, 0, 96,
455
- 192, 104, 192, 89, 92, 125, 97, 111, 83, 78,
456
- 63, 192, 95, 110, 112, 192, 59, 54, 53, 31,
457
- 192, 192, 116, 119, 127, 132, 133, 139, 141, 147,
458
- 156, 164, 170, 179
450
+ 0, 140, 0, 26, 0, 139, 137, 197, 197, 197,
451
+ 197, 22, 25, 33, 47, 35, 120, 74, 114, 0,
452
+ 111, 40, 104, 37, 0, 0, 90, 197, 197, 0,
453
+ 104, 34, 0, 97, 52, 197, 0, 99, 0, 0,
454
+ 197, 0, 197, 44, 65, 88, 77, 63, 197, 69,
455
+ 97, 0, 115, 197, 79, 197, 108, 111, 92, 71,
456
+ 81, 82, 72, 66, 197, 125, 77, 126, 197, 59,
457
+ 48, 44, 31, 197, 197, 135, 142, 147, 148, 153,
458
+ 155, 160, 168, 175, 180, 188
459
459
  } ;
460
460
 
461
- static yyconst flex_int16_t yy_def[85] =
461
+ static yyconst flex_int16_t yy_def[87] =
462
462
  { 0,
463
- 72, 1, 1, 1, 1, 1, 72, 72, 72, 72,
464
- 72, 72, 72, 72, 72, 15, 72, 73, 72, 74,
465
- 72, 75, 72, 72, 15, 16, 72, 72, 72, 27,
466
- 15, 76, 77, 72, 72, 72, 73, 72, 37, 72,
467
- 75, 78, 72, 72, 79, 72, 72, 72, 77, 72,
468
- 72, 72, 72, 72, 72, 80, 72, 80, 81, 72,
469
- 81, 72, 72, 82, 72, 72, 83, 83, 84, 84,
470
- 72, 0, 72, 72, 72, 72, 72, 72, 72, 72,
471
- 72, 72, 72, 72
463
+ 75, 1, 1, 1, 1, 1, 75, 75, 75, 75,
464
+ 75, 75, 75, 75, 75, 15, 75, 75, 75, 76,
465
+ 75, 77, 75, 75, 15, 16, 75, 75, 75, 27,
466
+ 15, 78, 79, 76, 75, 75, 18, 75, 18, 76,
467
+ 75, 18, 75, 77, 80, 75, 75, 81, 75, 75,
468
+ 75, 79, 75, 75, 75, 75, 75, 75, 82, 75,
469
+ 82, 83, 75, 83, 75, 75, 84, 75, 75, 85,
470
+ 85, 86, 86, 75, 0, 75, 75, 75, 75, 75,
471
+ 75, 75, 75, 75, 75, 75
472
472
  } ;
473
473
 
474
- static yyconst flex_int16_t yy_nxt[224] =
474
+ static yyconst flex_int16_t yy_nxt[229] =
475
475
  { 0,
476
476
  8, 9, 10, 9, 11, 8, 8, 8, 12, 12,
477
477
  13, 14, 15, 16, 16, 17, 18, 18, 18, 18,
478
478
  19, 20, 21, 18, 18, 18, 18, 18, 8, 8,
479
- 8, 22, 24, 71, 25, 26, 26, 27, 27, 27,
480
- 28, 35, 35, 35, 29, 41, 36, 26, 26, 27,
481
- 27, 27, 47, 47, 41, 71, 23, 30, 69, 31,
482
- 31, 26, 72, 69, 32, 62, 35, 35, 35, 43,
483
- 32, 36, 50, 51, 33, 27, 27, 27, 43, 63,
484
- 45, 46, 35, 35, 35, 62, 45, 36, 54, 54,
485
- 48, 48, 48, 48, 48, 48, 63, 50, 51, 46,
486
-
487
- 56, 55, 55, 55, 55, 55, 55, 64, 64, 64,
488
- 46, 65, 66, 65, 66, 59, 67, 37, 37, 37,
489
- 60, 37, 37, 37, 37, 39, 39, 39, 42, 59,
490
- 57, 53, 42, 52, 72, 42, 48, 48, 49, 49,
491
- 42, 42, 44, 40, 42, 55, 55, 58, 58, 58,
492
- 58, 58, 58, 58, 58, 58, 61, 61, 61, 61,
493
- 61, 61, 61, 61, 61, 64, 64, 38, 34, 64,
494
- 68, 68, 68, 68, 68, 68, 68, 68, 68, 70,
495
- 70, 70, 70, 70, 70, 70, 70, 70, 72, 22,
496
- 22, 7, 72, 72, 72, 72, 72, 72, 72, 72,
497
-
498
- 72, 72, 72, 72, 72, 72, 72, 72, 72, 72,
499
- 72, 72, 72, 72, 72, 72, 72, 72, 72, 72,
500
- 72, 72, 72
479
+ 8, 22, 24, 74, 25, 26, 26, 27, 27, 27,
480
+ 28, 44, 50, 50, 29, 44, 74, 26, 26, 27,
481
+ 27, 27, 72, 35, 35, 35, 23, 30, 36, 31,
482
+ 31, 26, 75, 72, 32, 46, 53, 54, 65, 46,
483
+ 32, 57, 57, 66, 33, 35, 35, 35, 68, 69,
484
+ 36, 51, 51, 51, 65, 62, 37, 37, 37, 38,
485
+ 39, 39, 39, 39, 63, 40, 62, 39, 39, 39,
486
+
487
+ 39, 39, 27, 27, 27, 60, 56, 48, 49, 51,
488
+ 51, 51, 55, 48, 34, 49, 53, 54, 40, 59,
489
+ 58, 58, 58, 58, 58, 58, 66, 68, 69, 49,
490
+ 70, 75, 47, 43, 41, 34, 75, 67, 67, 67,
491
+ 42, 42, 42, 45, 22, 22, 45, 75, 75, 45,
492
+ 51, 51, 52, 52, 45, 45, 75, 45, 58, 58,
493
+ 61, 61, 61, 61, 61, 61, 61, 61, 64, 64,
494
+ 64, 64, 64, 64, 64, 64, 67, 67, 75, 67,
495
+ 71, 71, 71, 71, 71, 71, 71, 71, 73, 73,
496
+ 73, 73, 73, 73, 73, 73, 7, 75, 75, 75,
497
+
498
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
499
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
500
+ 75, 75, 75, 75, 75, 75, 75, 75
501
501
  } ;
502
502
 
503
- static yyconst flex_int16_t yy_chk[224] =
503
+ static yyconst flex_int16_t yy_chk[229] =
504
504
  { 0,
505
505
  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
506
506
  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
507
507
  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
508
- 1, 4, 12, 70, 12, 12, 12, 13, 13, 13,
509
- 14, 18, 18, 18, 14, 22, 18, 16, 16, 24,
510
- 24, 24, 32, 32, 41, 69, 4, 15, 68, 15,
511
- 15, 15, 16, 67, 15, 61, 35, 35, 35, 22,
512
- 15, 35, 42, 42, 15, 27, 27, 27, 41, 60,
513
- 27, 27, 37, 37, 37, 59, 27, 37, 45, 45,
514
- 47, 47, 47, 48, 48, 48, 63, 50, 50, 48,
515
-
516
- 50, 54, 54, 54, 55, 55, 55, 63, 63, 63,
517
- 55, 64, 64, 65, 65, 58, 65, 73, 73, 73,
518
- 57, 73, 73, 73, 73, 74, 74, 74, 75, 56,
519
- 52, 44, 75, 43, 31, 75, 76, 76, 77, 77,
520
- 78, 78, 23, 21, 78, 79, 79, 80, 80, 80,
521
- 80, 80, 80, 80, 80, 80, 81, 81, 81, 81,
522
- 81, 81, 81, 81, 81, 82, 82, 19, 17, 82,
523
- 83, 83, 83, 83, 83, 83, 83, 83, 83, 84,
524
- 84, 84, 84, 84, 84, 84, 84, 84, 7, 6,
525
- 2, 72, 72, 72, 72, 72, 72, 72, 72, 72,
526
-
527
- 72, 72, 72, 72, 72, 72, 72, 72, 72, 72,
528
- 72, 72, 72, 72, 72, 72, 72, 72, 72, 72,
529
- 72, 72, 72
508
+ 1, 4, 12, 73, 12, 12, 12, 13, 13, 13,
509
+ 14, 22, 32, 32, 14, 44, 72, 16, 16, 24,
510
+ 24, 24, 71, 35, 35, 35, 4, 15, 35, 15,
511
+ 15, 15, 16, 70, 15, 22, 45, 45, 64, 44,
512
+ 15, 48, 48, 63, 15, 18, 18, 18, 67, 67,
513
+ 18, 50, 50, 50, 62, 61, 18, 18, 18, 18,
514
+ 18, 18, 18, 18, 60, 18, 59, 18, 18, 18,
515
+
516
+ 18, 18, 27, 27, 27, 55, 47, 27, 27, 51,
517
+ 51, 51, 46, 27, 38, 51, 53, 53, 34, 53,
518
+ 57, 57, 57, 58, 58, 58, 66, 68, 68, 58,
519
+ 68, 31, 23, 21, 19, 17, 7, 66, 66, 66,
520
+ 76, 76, 76, 77, 6, 2, 77, 0, 0, 77,
521
+ 78, 78, 79, 79, 80, 80, 0, 80, 81, 81,
522
+ 82, 82, 82, 82, 82, 82, 82, 82, 83, 83,
523
+ 83, 83, 83, 83, 83, 83, 84, 84, 0, 84,
524
+ 85, 85, 85, 85, 85, 85, 85, 85, 86, 86,
525
+ 86, 86, 86, 86, 86, 86, 75, 75, 75, 75,
526
+
527
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
528
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
529
+ 75, 75, 75, 75, 75, 75, 75, 75
530
530
  } ;
531
531
 
532
532
  static yy_state_type yy_last_accepting_state;
@@ -548,7 +548,7 @@ char *slice_text;
548
548
 
549
549
  // **********************************************************************
550
550
  //
551
- // Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
551
+ // Copyright (c) 2003-2018 ZeroC, Inc. All rights reserved.
552
552
  //
553
553
  // This copy of Ice is licensed to you under the terms described in the
554
554
  // ICE_LICENSE file included in this distribution.
@@ -620,6 +620,7 @@ static StringTokenMap keywordMap;
620
620
 
621
621
  void initScanner();
622
622
  int checkKeyword(string&);
623
+ int checkIdentifier(string&);
623
624
 
624
625
  }
625
626
 
@@ -627,7 +628,7 @@ int checkKeyword(string&);
627
628
 
628
629
 
629
630
 
630
- #line 630 "src/Slice/Scanner.cpp"
631
+ #line 631 "src/Slice/Scanner.cpp"
631
632
 
632
633
  #define INITIAL 0
633
634
  #define BOMSCAN 1
@@ -814,10 +815,10 @@ YY_DECL
814
815
  register char *yy_cp, *yy_bp;
815
816
  register int yy_act;
816
817
 
817
- #line 97 "src/Slice/Scanner.l"
818
+ #line 98 "src/Slice/Scanner.l"
818
819
 
819
820
 
820
- #line 820 "src/Slice/Scanner.cpp"
821
+ #line 821 "src/Slice/Scanner.cpp"
821
822
 
822
823
  if ( !(yy_init) )
823
824
  {
@@ -871,13 +872,13 @@ yy_match:
871
872
  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
872
873
  {
873
874
  yy_current_state = (int) yy_def[yy_current_state];
874
- if ( yy_current_state >= 73 )
875
+ if ( yy_current_state >= 76 )
875
876
  yy_c = yy_meta[(unsigned int) yy_c];
876
877
  }
877
878
  yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
878
879
  ++yy_cp;
879
880
  }
880
- while ( yy_current_state != 72 );
881
+ while ( yy_current_state != 75 );
881
882
  yy_cp = (yy_last_accepting_cpos);
882
883
  yy_current_state = (yy_last_accepting_state);
883
884
 
@@ -902,7 +903,7 @@ case 1:
902
903
  (yy_c_buf_p) = yy_cp -= 1;
903
904
  YY_DO_BEFORE_ACTION; /* set up slice_text again */
904
905
  YY_RULE_SETUP
905
- #line 99 "src/Slice/Scanner.l"
906
+ #line 100 "src/Slice/Scanner.l"
906
907
  {
907
908
  if(unit->scanPosition(slice_text))
908
909
  {
@@ -916,7 +917,7 @@ case 2:
916
917
  (yy_c_buf_p) = yy_cp -= 1;
917
918
  YY_DO_BEFORE_ACTION; /* set up slice_text again */
918
919
  YY_RULE_SETUP
919
- #line 106 "src/Slice/Scanner.l"
920
+ #line 107 "src/Slice/Scanner.l"
920
921
  {
921
922
  if(unit->scanPosition(slice_text))
922
923
  {
@@ -929,7 +930,7 @@ case 3:
929
930
  (yy_c_buf_p) = yy_cp -= 1;
930
931
  YY_DO_BEFORE_ACTION; /* set up slice_text again */
931
932
  YY_RULE_SETUP
932
- #line 113 "src/Slice/Scanner.l"
933
+ #line 114 "src/Slice/Scanner.l"
933
934
  {
934
935
  if(unit->scanPosition(slice_text))
935
936
  {
@@ -943,7 +944,7 @@ case 4:
943
944
  (yy_c_buf_p) = yy_cp -= 1;
944
945
  YY_DO_BEFORE_ACTION; /* set up slice_text again */
945
946
  YY_RULE_SETUP
946
- #line 120 "src/Slice/Scanner.l"
947
+ #line 121 "src/Slice/Scanner.l"
947
948
  {
948
949
  if(unit->scanPosition(slice_text))
949
950
  {
@@ -953,7 +954,7 @@ YY_RULE_SETUP
953
954
  YY_BREAK
954
955
  case 5:
955
956
  YY_RULE_SETUP
956
- #line 127 "src/Slice/Scanner.l"
957
+ #line 128 "src/Slice/Scanner.l"
957
958
  {
958
959
  // C++-style comment
959
960
  BEGIN(MAINSCAN);
@@ -971,7 +972,7 @@ YY_RULE_SETUP
971
972
  YY_BREAK
972
973
  case 6:
973
974
  YY_RULE_SETUP
974
- #line 142 "src/Slice/Scanner.l"
975
+ #line 143 "src/Slice/Scanner.l"
975
976
  {
976
977
  // C-style comment
977
978
  BEGIN(MAINSCAN);
@@ -1015,48 +1016,40 @@ YY_RULE_SETUP
1015
1016
  YY_BREAK
1016
1017
  case 7:
1017
1018
  YY_RULE_SETUP
1018
- #line 183 "src/Slice/Scanner.l"
1019
- {
1020
- BEGIN(MAINSCAN);
1021
- return ICE_SCOPE_DELIMITER;
1022
- }
1023
- YY_BREAK
1024
- case 8:
1025
- YY_RULE_SETUP
1026
- #line 188 "src/Slice/Scanner.l"
1019
+ #line 184 "src/Slice/Scanner.l"
1027
1020
  {
1028
1021
  BEGIN(MAINSCAN);
1029
1022
  return ICE_METADATA_OPEN;
1030
1023
  }
1031
1024
  YY_BREAK
1032
- case 9:
1025
+ case 8:
1033
1026
  YY_RULE_SETUP
1034
- #line 193 "src/Slice/Scanner.l"
1027
+ #line 189 "src/Slice/Scanner.l"
1035
1028
  {
1036
1029
  BEGIN(MAINSCAN);
1037
1030
  return ICE_METADATA_CLOSE;
1038
1031
  }
1039
1032
  YY_BREAK
1040
- case 10:
1033
+ case 9:
1041
1034
  YY_RULE_SETUP
1042
- #line 198 "src/Slice/Scanner.l"
1035
+ #line 194 "src/Slice/Scanner.l"
1043
1036
  {
1044
1037
  BEGIN(MAINSCAN);
1045
1038
  return ICE_GLOBAL_METADATA_OPEN;
1046
1039
  }
1047
1040
  YY_BREAK
1048
- case 11:
1041
+ case 10:
1049
1042
  YY_RULE_SETUP
1050
- #line 203 "src/Slice/Scanner.l"
1043
+ #line 199 "src/Slice/Scanner.l"
1051
1044
  {
1052
1045
  BEGIN(MAINSCAN);
1053
1046
  return ICE_GLOBAL_METADATA_CLOSE;
1054
1047
  }
1055
1048
  YY_BREAK
1056
- case 12:
1057
- /* rule 12 can match eol */
1049
+ case 11:
1050
+ /* rule 11 can match eol */
1058
1051
  YY_RULE_SETUP
1059
- #line 208 "src/Slice/Scanner.l"
1052
+ #line 204 "src/Slice/Scanner.l"
1060
1053
  {
1061
1054
  BEGIN(MAINSCAN);
1062
1055
  StringTokPtr ident = new StringTok;
@@ -1065,6 +1058,10 @@ YY_RULE_SETUP
1065
1058
  *yylvalp = ident;
1066
1059
  if(*slice_text == '\\')
1067
1060
  {
1061
+ if(checkIdentifier(ident->v) == ICE_SCOPED_IDENTIFIER)
1062
+ {
1063
+ unit->error("Operation identifiers cannot be scoped: `" + (ident->v) + "'");
1064
+ }
1068
1065
  return ICE_IDENT_OP;
1069
1066
  }
1070
1067
  int st = checkKeyword(ident->v);
@@ -1072,6 +1069,11 @@ YY_RULE_SETUP
1072
1069
  {
1073
1070
  return ICE_IDENT_OP;
1074
1071
  }
1072
+ else if(st == ICE_SCOPED_IDENTIFIER)
1073
+ {
1074
+ unit->error("Operation identifiers cannot be scoped: `" + (ident->v) + "'");
1075
+ return ICE_IDENT_OP;
1076
+ }
1075
1077
  else if(st == ICE_OPTIONAL)
1076
1078
  {
1077
1079
  return ICE_OPTIONAL_OP;
@@ -1082,25 +1084,25 @@ YY_RULE_SETUP
1082
1084
  }
1083
1085
  }
1084
1086
  YY_BREAK
1085
- case 13:
1087
+ case 12:
1086
1088
  YY_RULE_SETUP
1087
- #line 233 "src/Slice/Scanner.l"
1089
+ #line 238 "src/Slice/Scanner.l"
1088
1090
  {
1089
1091
  BEGIN(MAINSCAN);
1090
1092
  StringTokPtr ident = new StringTok;
1091
1093
  ident->v = *slice_text == '\\' ? slice_text + 1 : slice_text;
1092
1094
  *yylvalp = ident;
1093
- return *slice_text == '\\' ? ICE_IDENTIFIER : checkKeyword(ident->v);
1095
+ return *slice_text == '\\' ? checkIdentifier(ident->v) : checkKeyword(ident->v);
1094
1096
  }
1095
1097
  YY_BREAK
1096
- case 14:
1098
+ case 13:
1097
1099
  YY_RULE_SETUP
1098
- #line 241 "src/Slice/Scanner.l"
1100
+ #line 246 "src/Slice/Scanner.l"
1099
1101
  {
1100
1102
  BEGIN(MAINSCAN);
1101
1103
  StringTokPtr str = new StringTok;
1102
1104
  str->literal = "\"";
1103
- while(true)
1105
+ while(true)
1104
1106
  {
1105
1107
  char c = static_cast<char>(yyinput());
1106
1108
  str->literal += c;
@@ -1299,9 +1301,9 @@ YY_RULE_SETUP
1299
1301
  return ICE_STRING_LITERAL;
1300
1302
  }
1301
1303
  YY_BREAK
1302
- case 15:
1304
+ case 14:
1303
1305
  YY_RULE_SETUP
1304
- #line 444 "src/Slice/Scanner.l"
1306
+ #line 449 "src/Slice/Scanner.l"
1305
1307
  {
1306
1308
  BEGIN(MAINSCAN);
1307
1309
  IntegerTokPtr itp = new IntegerTok;
@@ -1318,9 +1320,9 @@ YY_RULE_SETUP
1318
1320
  return ICE_INTEGER_LITERAL;
1319
1321
  }
1320
1322
  YY_BREAK
1321
- case 16:
1323
+ case 15:
1322
1324
  YY_RULE_SETUP
1323
- #line 460 "src/Slice/Scanner.l"
1325
+ #line 465 "src/Slice/Scanner.l"
1324
1326
  {
1325
1327
  BEGIN(MAINSCAN);
1326
1328
  errno = 0;
@@ -1351,10 +1353,10 @@ YY_RULE_SETUP
1351
1353
  return ICE_FLOATING_POINT_LITERAL;
1352
1354
  }
1353
1355
  YY_BREAK
1354
- case 17:
1355
- /* rule 17 can match eol */
1356
+ case 16:
1357
+ /* rule 16 can match eol */
1356
1358
  YY_RULE_SETUP
1357
- #line 490 "src/Slice/Scanner.l"
1359
+ #line 495 "src/Slice/Scanner.l"
1358
1360
  {
1359
1361
  // Ignore white-space
1360
1362
 
@@ -1368,18 +1370,18 @@ YY_RULE_SETUP
1368
1370
  }
1369
1371
  }
1370
1372
  YY_BREAK
1371
- case 18:
1373
+ case 17:
1372
1374
  YY_RULE_SETUP
1373
- #line 503 "src/Slice/Scanner.l"
1375
+ #line 508 "src/Slice/Scanner.l"
1374
1376
  {
1375
1377
  // Ignore UTF-8 BOM, rule only active when parsing start of file.
1376
1378
 
1377
1379
  BEGIN(MAINSCAN);
1378
1380
  }
1379
1381
  YY_BREAK
1380
- case 19:
1382
+ case 18:
1381
1383
  YY_RULE_SETUP
1382
- #line 509 "src/Slice/Scanner.l"
1384
+ #line 514 "src/Slice/Scanner.l"
1383
1385
  {
1384
1386
  BEGIN(MAINSCAN);
1385
1387
  if(slice_text[0] < 32 || slice_text[0] > 126)
@@ -1396,12 +1398,12 @@ YY_RULE_SETUP
1396
1398
  return slice_text[0];
1397
1399
  }
1398
1400
  YY_BREAK
1399
- case 20:
1401
+ case 19:
1400
1402
  YY_RULE_SETUP
1401
- #line 525 "src/Slice/Scanner.l"
1403
+ #line 530 "src/Slice/Scanner.l"
1402
1404
  ECHO;
1403
1405
  YY_BREAK
1404
- #line 1404 "src/Slice/Scanner.cpp"
1406
+ #line 1406 "src/Slice/Scanner.cpp"
1405
1407
  case YY_STATE_EOF(INITIAL):
1406
1408
  case YY_STATE_EOF(BOMSCAN):
1407
1409
  case YY_STATE_EOF(MAINSCAN):
@@ -1697,7 +1699,7 @@ static int yy_get_next_buffer (void)
1697
1699
  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1698
1700
  {
1699
1701
  yy_current_state = (int) yy_def[yy_current_state];
1700
- if ( yy_current_state >= 73 )
1702
+ if ( yy_current_state >= 76 )
1701
1703
  yy_c = yy_meta[(unsigned int) yy_c];
1702
1704
  }
1703
1705
  yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -1725,11 +1727,11 @@ static int yy_get_next_buffer (void)
1725
1727
  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1726
1728
  {
1727
1729
  yy_current_state = (int) yy_def[yy_current_state];
1728
- if ( yy_current_state >= 73 )
1730
+ if ( yy_current_state >= 76 )
1729
1731
  yy_c = yy_meta[(unsigned int) yy_c];
1730
1732
  }
1731
1733
  yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1732
- yy_is_jam = (yy_current_state == 72);
1734
+ yy_is_jam = (yy_current_state == 75);
1733
1735
 
1734
1736
  return yy_is_jam ? 0 : yy_current_state;
1735
1737
  }
@@ -2401,7 +2403,7 @@ void slice_free (void * ptr )
2401
2403
 
2402
2404
  #define YYTABLES_NAME "yytables"
2403
2405
 
2404
- #line 525 "src/Slice/Scanner.l"
2406
+ #line 530 "src/Slice/Scanner.l"
2405
2407
 
2406
2408
 
2407
2409
 
@@ -2469,7 +2471,84 @@ checkKeyword(string& id)
2469
2471
  }
2470
2472
  return pos->second;
2471
2473
  }
2472
- return ICE_IDENTIFIER;
2474
+ return checkIdentifier(id);
2475
+ }
2476
+
2477
+ //
2478
+ // Checks an identifier for any illegal syntax and
2479
+ // determines whether it's scoped. If it is, this
2480
+ // returns a scoped identifier token; otherwise this
2481
+ // returns a normal identifier token.
2482
+ //
2483
+
2484
+ int checkIdentifier(string& id)
2485
+ {
2486
+ // check whether the identifier is scoped
2487
+ size_t scopeIndex = id.rfind("::");
2488
+ bool isScoped = scopeIndex != string::npos;
2489
+ string name;
2490
+ if(isScoped)
2491
+ {
2492
+ name = id.substr(scopeIndex + 2); // Only check the unscoped identifier for syntax
2493
+ }
2494
+ else
2495
+ {
2496
+ name = id;
2497
+ }
2498
+
2499
+ // check the identifier for reserved suffixes
2500
+ static const string suffixBlacklist[] = { "Helper", "Holder", "Prx", "Ptr" };
2501
+ for(size_t i = 0; i < sizeof(suffixBlacklist) / sizeof(*suffixBlacklist); ++i)
2502
+ {
2503
+ if(name.find(suffixBlacklist[i], name.size() - suffixBlacklist[i].size()) != string::npos)
2504
+ {
2505
+ unit->error("illegal identifier `" + name + "': `" + suffixBlacklist[i] + "' suffix is reserved");
2506
+ }
2507
+ }
2508
+
2509
+ // check the identifier for illegal underscores
2510
+ size_t index = name.find('_');
2511
+ if(index == 0)
2512
+ {
2513
+ unit->error("illegal leading underscore in identifier `" + name + "'");
2514
+ }
2515
+ else if(name.rfind('_') == (name.size() - 1))
2516
+ {
2517
+ unit->error("illegal trailing underscore in identifier `" + name + "'");
2518
+ }
2519
+ else if(name.find("__") != string::npos)
2520
+ {
2521
+ unit->error("illegal double underscore in identifier `" + name + "'");
2522
+ }
2523
+ else if(index != string::npos && unit->currentIncludeLevel() == 0 && !unit->allowUnderscore())
2524
+ {
2525
+ DefinitionContextPtr dc = unit->currentDefinitionContext();
2526
+ assert(dc);
2527
+ if(dc->findMetaData("underscore") != "underscore") // no 'underscore' global metadata
2528
+ {
2529
+ unit->error("illegal underscore in identifier `" + name + "'");
2530
+ }
2531
+ }
2532
+
2533
+ // Check the identifier for illegal ice prefixes
2534
+ if(unit->currentIncludeLevel() == 0 && !unit->allowIcePrefix() && name.size() > 2)
2535
+ {
2536
+ DefinitionContextPtr dc = unit->currentDefinitionContext();
2537
+ assert(dc);
2538
+ if(dc->findMetaData("ice-prefix") != "ice-prefix") // no 'ice-prefix' metadata
2539
+ {
2540
+ string prefix3;
2541
+ prefix3 += ::tolower(static_cast<unsigned char>(name[0]));
2542
+ prefix3 += ::tolower(static_cast<unsigned char>(name[1]));
2543
+ prefix3 += ::tolower(static_cast<unsigned char>(name[2]));
2544
+ if(prefix3 == "ice")
2545
+ {
2546
+ unit->error("illegal identifier `" + name + "': `" + name.substr(0, 3) + "' prefix is reserved");
2547
+ }
2548
+ }
2549
+ }
2550
+
2551
+ return isScoped ? ICE_SCOPED_IDENTIFIER : ICE_IDENTIFIER;
2473
2552
  }
2474
2553
 
2475
2554
  }