zeroc-ice 3.6.5 → 3.7.0

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 (752) hide show
  1. checksums.yaml +4 -4
  2. data/BZIP2_LICENSE +42 -0
  3. data/ICE_LICENSE +17 -17
  4. data/LICENSE +12 -12
  5. data/bin/slice2rb +1 -1
  6. data/ext/Communicator.cpp +150 -53
  7. data/ext/Communicator.h +1 -1
  8. data/ext/Config.h +2 -12
  9. data/ext/Connection.cpp +89 -68
  10. data/ext/Connection.h +1 -1
  11. data/ext/Endpoint.cpp +16 -45
  12. data/ext/Endpoint.h +1 -1
  13. data/ext/ImplicitContext.cpp +1 -5
  14. data/ext/ImplicitContext.h +1 -1
  15. data/ext/Init.cpp +4 -1
  16. data/ext/Logger.cpp +1 -1
  17. data/ext/Logger.h +1 -1
  18. data/ext/Operation.cpp +33 -44
  19. data/ext/Operation.h +1 -1
  20. data/ext/Properties.cpp +1 -1
  21. data/ext/Properties.h +1 -1
  22. data/ext/Proxy.cpp +22 -57
  23. data/ext/Proxy.h +1 -1
  24. data/ext/Slice.cpp +5 -5
  25. data/ext/Slice.h +1 -1
  26. data/ext/Types.cpp +244 -171
  27. data/ext/Types.h +118 -66
  28. data/ext/Util.cpp +13 -9
  29. data/ext/Util.h +10 -10
  30. data/ext/ValueFactoryManager.cpp +445 -0
  31. data/ext/ValueFactoryManager.h +100 -0
  32. data/ext/extconf.rb +47 -45
  33. data/ext/ice/bzip2/blocksort.c +1094 -0
  34. data/ext/ice/bzip2/bzlib.c +1572 -0
  35. data/ext/ice/bzip2/bzlib.h +282 -0
  36. data/ext/ice/bzip2/bzlib_private.h +509 -0
  37. data/ext/ice/bzip2/compress.c +672 -0
  38. data/ext/ice/bzip2/crctable.c +104 -0
  39. data/ext/ice/bzip2/decompress.c +646 -0
  40. data/ext/ice/bzip2/huffman.c +205 -0
  41. data/ext/ice/bzip2/randtable.c +84 -0
  42. data/ext/ice/cpp/include/Ice/Application.h +77 -60
  43. data/ext/ice/cpp/include/Ice/AsyncResult.h +34 -318
  44. data/ext/ice/cpp/include/Ice/AsyncResultF.h +4 -2
  45. data/ext/ice/cpp/include/Ice/BatchRequestInterceptor.h +5 -10
  46. data/ext/ice/cpp/include/Ice/BatchRequestQueueF.h +1 -1
  47. data/ext/ice/cpp/include/Ice/Buffer.h +10 -10
  48. data/ext/ice/cpp/include/Ice/CommunicatorAsync.h +14 -12
  49. data/ext/ice/cpp/include/Ice/Comparable.h +130 -0
  50. data/ext/ice/cpp/include/Ice/Config.h +7 -36
  51. data/ext/ice/cpp/include/Ice/ConnectionAsync.h +107 -11
  52. data/ext/ice/cpp/include/Ice/ConnectionIF.h +5 -1
  53. data/ext/ice/cpp/include/Ice/ConsoleUtil.h +28 -0
  54. data/ext/ice/cpp/include/Ice/{DefaultObjectFactory.h → DefaultValueFactory.h} +28 -14
  55. data/ext/ice/cpp/include/Ice/DispatchInterceptor.h +4 -6
  56. data/ext/ice/cpp/include/Ice/Dispatcher.h +14 -13
  57. data/ext/ice/cpp/include/Ice/DynamicLibrary.h +7 -5
  58. data/ext/ice/cpp/include/Ice/DynamicLibraryF.h +1 -1
  59. data/ext/ice/cpp/include/Ice/Exception.h +66 -56
  60. data/ext/ice/cpp/include/Ice/ExceptionHelpers.h +69 -0
  61. data/ext/ice/cpp/include/Ice/FactoryTable.h +11 -12
  62. data/ext/ice/cpp/include/Ice/FactoryTableInit.h +27 -25
  63. data/ext/ice/cpp/include/Ice/Format.h +6 -1
  64. data/ext/ice/cpp/include/Ice/Functional.h +33 -33
  65. data/ext/ice/cpp/include/Ice/GCObject.h +9 -5
  66. data/ext/ice/cpp/include/Ice/Handle.h +6 -11
  67. data/ext/ice/cpp/include/Ice/Ice.h +9 -5
  68. data/ext/ice/cpp/include/{IceUtil → Ice}/IconvStringConverter.h +108 -62
  69. data/ext/ice/cpp/include/Ice/Incoming.h +109 -33
  70. data/ext/ice/cpp/include/Ice/IncomingAsync.h +63 -23
  71. data/ext/ice/cpp/include/Ice/IncomingAsyncF.h +7 -1
  72. data/ext/ice/cpp/include/Ice/Initialize.h +178 -38
  73. data/ext/ice/cpp/include/Ice/InputStream.h +994 -0
  74. data/ext/ice/cpp/include/Ice/InstanceF.h +1 -2
  75. data/ext/ice/cpp/include/Ice/InterfaceByValue.h +46 -0
  76. data/ext/ice/cpp/include/Ice/LocalObject.h +9 -9
  77. data/ext/ice/cpp/include/Ice/LocalObjectF.h +1 -1
  78. data/ext/ice/cpp/include/Ice/LoggerUtil.h +20 -14
  79. data/ext/ice/cpp/include/Ice/MetricsAdminI.h +114 -65
  80. data/ext/ice/cpp/include/Ice/MetricsFunctional.h +23 -5
  81. data/ext/ice/cpp/include/Ice/MetricsObserverI.h +99 -26
  82. data/ext/ice/cpp/include/Ice/NativePropertiesAdmin.h +17 -4
  83. data/ext/ice/cpp/include/Ice/Object.h +105 -56
  84. data/ext/ice/cpp/include/Ice/ObjectF.h +8 -3
  85. data/ext/ice/cpp/include/Ice/ObserverHelper.h +18 -8
  86. data/ext/ice/cpp/include/Ice/Optional.h +1084 -0
  87. data/ext/ice/cpp/include/Ice/OutgoingAsync.h +655 -84
  88. data/ext/ice/cpp/include/Ice/OutgoingAsyncF.h +12 -6
  89. data/ext/ice/cpp/include/Ice/OutputStream.h +753 -0
  90. data/ext/ice/cpp/include/Ice/Protocol.h +19 -12
  91. data/ext/ice/cpp/include/Ice/Proxy.h +1329 -717
  92. data/ext/ice/cpp/include/Ice/ProxyF.h +11 -33
  93. data/ext/ice/cpp/include/Ice/ProxyFactoryF.h +1 -1
  94. data/ext/ice/cpp/include/Ice/ProxyHandle.h +34 -50
  95. data/ext/ice/cpp/include/Ice/ReferenceF.h +1 -1
  96. data/ext/ice/cpp/include/Ice/RegisterPlugins.h +22 -3
  97. data/ext/ice/cpp/include/Ice/RequestHandlerF.h +10 -4
  98. data/ext/ice/cpp/include/Ice/ResponseHandlerF.h +6 -1
  99. data/ext/ice/cpp/include/{IceUtil → Ice}/SHA1.h +16 -16
  100. data/ext/ice/cpp/include/Ice/ServantManagerF.h +1 -1
  101. data/ext/ice/cpp/include/Ice/Service.h +13 -18
  102. data/ext/ice/cpp/include/Ice/SliceChecksums.h +1 -1
  103. data/ext/ice/cpp/include/Ice/SlicedData.h +46 -20
  104. data/ext/ice/cpp/include/Ice/SlicedDataF.h +14 -6
  105. data/ext/ice/cpp/include/Ice/StreamHelpers.h +159 -49
  106. data/ext/ice/cpp/include/Ice/StringConverter.h +52 -0
  107. data/ext/ice/cpp/include/Ice/ThreadPoolF.h +1 -1
  108. data/{slice/Ice/ObjectFactoryF.ice → ext/ice/cpp/include/Ice/UUID.h} +9 -7
  109. data/ext/ice/cpp/include/{IceUtil → Ice}/UniquePtr.h +21 -22
  110. data/ext/ice/cpp/include/Ice/UniqueRef.h +98 -0
  111. data/ext/ice/cpp/include/Ice/UserExceptionFactory.h +40 -8
  112. data/ext/ice/cpp/include/Ice/Value.h +104 -0
  113. data/{slice/Freeze/ConnectionF.ice → ext/ice/cpp/include/Ice/ValueF.h} +11 -7
  114. data/ext/ice/cpp/include/IceSSL/Config.h +8 -23
  115. data/ext/ice/cpp/include/IceSSL/IceSSL.h +17 -6
  116. data/ext/ice/cpp/include/IceSSL/OpenSSL.h +130 -0
  117. data/ext/ice/cpp/include/IceSSL/Plugin.h +172 -259
  118. data/ext/ice/cpp/include/IceSSL/SChannel.h +66 -0
  119. data/ext/ice/cpp/include/IceSSL/SecureTransport.h +66 -0
  120. data/ext/ice/cpp/include/IceSSL/UWP.h +58 -0
  121. data/ext/ice/cpp/include/IceUtil/Atomic.h +8 -10
  122. data/ext/ice/cpp/include/IceUtil/Cond.h +17 -18
  123. data/ext/ice/cpp/include/IceUtil/Config.h +138 -39
  124. data/ext/ice/cpp/include/IceUtil/ConsoleUtil.h +97 -0
  125. data/ext/ice/cpp/include/IceUtil/CountDownLatch.h +5 -5
  126. data/ext/ice/cpp/include/IceUtil/CtrlCHandler.h +23 -17
  127. data/ext/ice/cpp/include/IceUtil/DisableWarnings.h +1 -3
  128. data/ext/ice/cpp/include/IceUtil/Exception.h +157 -67
  129. data/ext/ice/cpp/include/IceUtil/FileUtil.h +148 -0
  130. data/ext/ice/cpp/include/IceUtil/Functional.h +1 -2
  131. data/ext/ice/cpp/include/IceUtil/Handle.h +11 -11
  132. data/ext/ice/cpp/include/IceUtil/IceUtil.h +4 -10
  133. data/ext/ice/cpp/include/IceUtil/InputUtil.h +3 -3
  134. data/ext/ice/cpp/include/IceUtil/Iterator.h +2 -2
  135. data/ext/ice/cpp/include/IceUtil/Lock.h +8 -10
  136. data/ext/ice/cpp/include/IceUtil/Monitor.h +1 -2
  137. data/ext/ice/cpp/include/IceUtil/Mutex.h +17 -11
  138. data/ext/ice/cpp/include/IceUtil/MutexProtocol.h +2 -2
  139. data/ext/ice/cpp/include/IceUtil/MutexPtrLock.h +4 -4
  140. data/ext/ice/cpp/include/IceUtil/MutexPtrTryLock.h +4 -4
  141. data/ext/ice/cpp/include/IceUtil/Optional.h +32 -18
  142. data/ext/ice/cpp/include/IceUtil/Options.h +17 -18
  143. data/ext/ice/cpp/include/IceUtil/OutputUtil.h +55 -29
  144. data/ext/ice/cpp/include/IceUtil/PopDisableWarnings.h +6 -6
  145. data/ext/ice/cpp/include/IceUtil/PushDisableWarnings.h +11 -10
  146. data/ext/ice/cpp/include/IceUtil/Random.h +3 -3
  147. data/ext/ice/cpp/include/IceUtil/RecMutex.h +7 -8
  148. data/ext/ice/cpp/include/IceUtil/ResourceConfig.h +58 -0
  149. data/ext/ice/cpp/include/IceUtil/ScannerConfig.h +1 -9
  150. data/ext/ice/cpp/include/IceUtil/ScopedArray.h +8 -2
  151. data/ext/ice/cpp/include/IceUtil/Shared.h +5 -7
  152. data/ext/ice/cpp/{src → include}/IceUtil/StopWatch.h +2 -2
  153. data/ext/ice/cpp/include/IceUtil/StringConverter.h +77 -72
  154. data/ext/ice/cpp/include/IceUtil/StringUtil.h +32 -21
  155. data/ext/ice/cpp/include/IceUtil/Thread.h +10 -12
  156. data/ext/ice/cpp/include/IceUtil/ThreadException.h +33 -42
  157. data/ext/ice/cpp/include/IceUtil/Time.h +3 -3
  158. data/ext/ice/cpp/include/IceUtil/Timer.h +14 -13
  159. data/ext/ice/cpp/include/IceUtil/UUID.h +2 -2
  160. data/ext/ice/cpp/include/IceUtil/UndefSysMacros.h +1 -1
  161. data/ext/ice/cpp/include/{Ice → generated/Ice}/BuiltinSequences.h +41 -8
  162. data/ext/ice/cpp/include/generated/Ice/Communicator.h +364 -0
  163. data/ext/ice/cpp/include/{Ice → generated/Ice}/CommunicatorF.h +40 -8
  164. data/ext/ice/cpp/include/generated/Ice/Connection.h +872 -0
  165. data/ext/ice/cpp/include/{Ice → generated/Ice}/ConnectionF.h +46 -8
  166. data/ext/ice/cpp/include/{Ice → generated/Ice}/Current.h +71 -8
  167. data/ext/ice/cpp/include/generated/Ice/Endpoint.h +582 -0
  168. data/ext/ice/cpp/include/{Ice → generated/Ice}/EndpointF.h +62 -8
  169. data/ext/ice/cpp/include/{Ice → generated/Ice}/EndpointTypes.h +31 -16
  170. data/ext/ice/cpp/include/{Ice → generated/Ice}/FacetMap.h +23 -8
  171. data/ext/ice/cpp/include/generated/Ice/Identity.h +221 -0
  172. data/ext/ice/cpp/include/{Ice → generated/Ice}/ImplicitContext.h +72 -13
  173. data/ext/ice/cpp/include/{Ice → generated/Ice}/ImplicitContextF.h +40 -8
  174. data/ext/ice/cpp/include/generated/Ice/Instrumentation.h +602 -0
  175. data/ext/ice/cpp/include/{Ice → generated/Ice}/InstrumentationF.h +54 -8
  176. data/ext/ice/cpp/include/generated/Ice/LocalException.h +2802 -0
  177. data/ext/ice/cpp/include/generated/Ice/Locator.h +2036 -0
  178. data/ext/ice/cpp/include/{Ice → generated/Ice}/LocatorF.h +53 -12
  179. data/ext/ice/cpp/include/{Ice → generated/Ice}/Logger.h +71 -13
  180. data/ext/ice/cpp/include/{Ice → generated/Ice}/LoggerF.h +40 -8
  181. data/ext/ice/cpp/include/generated/Ice/Metrics.h +2649 -0
  182. data/ext/ice/cpp/include/generated/Ice/ObjectAdapter.h +302 -0
  183. data/ext/ice/cpp/include/{Ice → generated/Ice}/ObjectAdapterF.h +40 -8
  184. data/ext/ice/cpp/include/generated/Ice/ObjectFactory.h +142 -0
  185. data/ext/ice/cpp/include/generated/Ice/Plugin.h +197 -0
  186. data/ext/ice/cpp/include/{Ice → generated/Ice}/PluginF.h +43 -8
  187. data/ext/ice/cpp/include/generated/Ice/Process.h +536 -0
  188. data/ext/ice/cpp/include/{Ice → generated/Ice}/ProcessF.h +45 -10
  189. data/ext/ice/cpp/include/{Ice → generated/Ice}/Properties.h +88 -21
  190. data/ext/ice/cpp/include/generated/Ice/PropertiesAdmin.h +749 -0
  191. data/ext/ice/cpp/include/{Ice → generated/Ice}/PropertiesF.h +48 -10
  192. data/ext/ice/cpp/include/generated/Ice/RemoteLogger.h +1449 -0
  193. data/ext/ice/cpp/include/generated/Ice/Router.h +1032 -0
  194. data/ext/ice/cpp/include/{Ice → generated/Ice}/RouterF.h +45 -10
  195. data/ext/ice/cpp/include/{Ice → generated/Ice}/ServantLocator.h +65 -13
  196. data/ext/ice/cpp/include/{Ice → generated/Ice}/ServantLocatorF.h +40 -8
  197. data/ext/ice/cpp/include/{Ice → generated/Ice}/SliceChecksumDict.h +23 -8
  198. data/ext/ice/cpp/include/generated/Ice/ValueFactory.h +169 -0
  199. data/ext/ice/cpp/include/generated/Ice/Version.h +334 -0
  200. data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfo.h +172 -0
  201. data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfoF.h +98 -0
  202. data/ext/ice/cpp/include/generated/IceSSL/EndpointInfo.h +156 -0
  203. data/ext/ice/cpp/src/Ice/ACM.cpp +18 -14
  204. data/ext/ice/cpp/src/Ice/ACM.h +9 -2
  205. data/ext/ice/cpp/{include → src}/Ice/ACMF.h +10 -5
  206. data/ext/ice/cpp/src/Ice/Acceptor.cpp +6 -1
  207. data/ext/ice/cpp/src/Ice/Acceptor.h +4 -3
  208. data/ext/ice/cpp/src/Ice/AcceptorF.h +1 -1
  209. data/ext/ice/cpp/src/{IceUtil → Ice}/ArgVector.cpp +9 -9
  210. data/ext/ice/cpp/src/{IceUtil → Ice}/ArgVector.h +7 -7
  211. data/ext/ice/cpp/src/Ice/AsyncResult.cpp +15 -538
  212. data/ext/ice/cpp/src/Ice/Base64.cpp +11 -11
  213. data/ext/ice/cpp/src/Ice/Base64.h +1 -1
  214. data/ext/ice/cpp/src/Ice/BatchRequestQueue.cpp +40 -12
  215. data/ext/ice/cpp/src/Ice/BatchRequestQueue.h +15 -10
  216. data/ext/ice/cpp/src/Ice/Buffer.cpp +74 -12
  217. data/ext/ice/cpp/src/Ice/BuiltinSequences.cpp +20 -6
  218. data/ext/ice/cpp/src/Ice/CollocatedRequestHandler.cpp +85 -190
  219. data/ext/ice/cpp/src/Ice/CollocatedRequestHandler.h +17 -18
  220. data/ext/ice/cpp/src/Ice/Communicator.cpp +39 -8
  221. data/ext/ice/cpp/src/Ice/CommunicatorF.cpp +27 -5
  222. data/ext/ice/cpp/src/Ice/CommunicatorI.cpp +271 -104
  223. data/ext/ice/cpp/src/Ice/CommunicatorI.h +84 -28
  224. data/ext/ice/cpp/src/{IceUtil → Ice}/Cond.cpp +3 -3
  225. data/ext/ice/cpp/src/Ice/ConnectRequestHandler.cpp +58 -125
  226. data/ext/ice/cpp/src/Ice/ConnectRequestHandler.h +11 -22
  227. data/ext/ice/cpp/src/Ice/ConnectRequestHandlerF.h +6 -2
  228. data/ext/ice/cpp/src/Ice/Connection.cpp +88 -8
  229. data/ext/ice/cpp/src/Ice/ConnectionF.cpp +27 -5
  230. data/ext/ice/cpp/src/Ice/ConnectionFactory.cpp +158 -80
  231. data/ext/ice/cpp/src/Ice/ConnectionFactory.h +41 -23
  232. data/ext/ice/cpp/{include → src}/Ice/ConnectionFactoryF.h +8 -3
  233. data/ext/ice/cpp/src/Ice/ConnectionI.cpp +707 -653
  234. data/ext/ice/cpp/src/Ice/ConnectionI.h +97 -69
  235. data/ext/ice/cpp/src/Ice/ConnectionRequestHandler.cpp +2 -15
  236. data/ext/ice/cpp/src/Ice/ConnectionRequestHandler.h +4 -3
  237. data/ext/ice/cpp/src/Ice/Connector.cpp +6 -1
  238. data/ext/ice/cpp/src/Ice/Connector.h +4 -3
  239. data/ext/ice/cpp/src/Ice/ConnectorF.h +1 -1
  240. data/ext/ice/cpp/src/{IceUtil → Ice}/CountDownLatch.cpp +4 -4
  241. data/ext/ice/cpp/src/Ice/Current.cpp +29 -6
  242. data/ext/ice/cpp/src/Ice/DefaultsAndOverrides.cpp +6 -5
  243. data/ext/ice/cpp/src/Ice/DefaultsAndOverrides.h +1 -1
  244. data/ext/ice/cpp/src/Ice/DefaultsAndOverridesF.h +1 -1
  245. data/ext/ice/cpp/src/Ice/DispatchInterceptor.cpp +5 -25
  246. data/ext/ice/cpp/src/Ice/DynamicLibrary.cpp +29 -19
  247. data/ext/ice/cpp/src/Ice/Endpoint.cpp +85 -6
  248. data/ext/ice/cpp/src/Ice/EndpointF.cpp +27 -5
  249. data/ext/ice/cpp/src/Ice/EndpointFactory.cpp +152 -1
  250. data/ext/ice/cpp/src/Ice/EndpointFactory.h +72 -6
  251. data/ext/ice/cpp/src/Ice/EndpointFactoryF.h +1 -1
  252. data/ext/ice/cpp/src/Ice/EndpointFactoryManager.cpp +35 -19
  253. data/ext/ice/cpp/src/Ice/EndpointFactoryManager.h +10 -4
  254. data/ext/ice/cpp/src/Ice/EndpointFactoryManagerF.h +1 -1
  255. data/ext/ice/cpp/src/Ice/EndpointI.cpp +17 -1
  256. data/ext/ice/cpp/src/Ice/EndpointI.h +35 -9
  257. data/ext/ice/cpp/src/Ice/EndpointIF.h +18 -5
  258. data/ext/ice/cpp/src/Ice/EndpointTypes.cpp +18 -6
  259. data/ext/ice/cpp/src/Ice/EventHandler.cpp +6 -4
  260. data/ext/ice/cpp/src/Ice/EventHandler.h +13 -8
  261. data/ext/ice/cpp/src/Ice/EventHandlerF.h +5 -2
  262. data/ext/ice/cpp/src/Ice/Exception.cpp +95 -86
  263. data/ext/ice/cpp/src/Ice/FacetMap.cpp +20 -6
  264. data/ext/ice/cpp/src/Ice/FactoryTable.cpp +37 -28
  265. data/ext/ice/cpp/src/Ice/FactoryTableInit.cpp +2 -4
  266. data/ext/ice/cpp/src/Ice/GCObject.cpp +28 -25
  267. data/ext/ice/cpp/src/Ice/HashUtil.h +2 -3
  268. data/ext/ice/cpp/src/Ice/HttpParser.cpp +1 -2
  269. data/ext/ice/cpp/src/Ice/HttpParser.h +1 -1
  270. data/ext/ice/cpp/src/Ice/IPEndpointI.cpp +92 -53
  271. data/ext/ice/cpp/src/Ice/IPEndpointI.h +19 -10
  272. data/ext/ice/cpp/src/Ice/IPEndpointIF.h +6 -2
  273. data/ext/ice/cpp/src/Ice/IconvStringConverter.cpp +56 -0
  274. data/ext/ice/cpp/src/Ice/Identity.cpp +24 -10
  275. data/ext/ice/cpp/src/Ice/ImplicitContext.cpp +37 -6
  276. data/ext/ice/cpp/src/Ice/ImplicitContextF.cpp +27 -5
  277. data/ext/ice/cpp/src/Ice/ImplicitContextI.cpp +14 -14
  278. data/ext/ice/cpp/src/Ice/ImplicitContextI.h +7 -5
  279. data/ext/ice/cpp/src/Ice/Incoming.cpp +276 -245
  280. data/ext/ice/cpp/src/Ice/IncomingAsync.cpp +104 -209
  281. data/ext/ice/cpp/src/Ice/IncomingRequest.h +5 -4
  282. data/ext/ice/cpp/src/Ice/Initialize.cpp +299 -172
  283. data/ext/ice/cpp/src/Ice/InputStream.cpp +2773 -0
  284. data/ext/ice/cpp/src/Ice/Instance.cpp +191 -231
  285. data/ext/ice/cpp/src/Ice/Instance.h +30 -18
  286. data/ext/ice/cpp/src/Ice/Instrumentation.cpp +106 -7
  287. data/ext/ice/cpp/src/Ice/InstrumentationF.cpp +27 -5
  288. data/ext/ice/cpp/src/Ice/InstrumentationI.cpp +117 -99
  289. data/ext/ice/cpp/src/Ice/InstrumentationI.h +30 -31
  290. data/ext/ice/cpp/src/Ice/LocalException.cpp +1190 -416
  291. data/ext/ice/cpp/src/Ice/LocalObject.cpp +1 -2
  292. data/ext/ice/cpp/src/Ice/Locator.cpp +1167 -1215
  293. data/ext/ice/cpp/src/Ice/LocatorF.cpp +29 -6
  294. data/ext/ice/cpp/src/Ice/LocatorInfo.cpp +129 -163
  295. data/ext/ice/cpp/src/Ice/LocatorInfo.h +29 -29
  296. data/ext/ice/cpp/src/Ice/LocatorInfoF.h +1 -1
  297. data/ext/ice/cpp/src/Ice/Logger.cpp +35 -5
  298. data/ext/ice/cpp/src/Ice/LoggerAdminI.cpp +178 -73
  299. data/ext/ice/cpp/src/Ice/LoggerAdminI.h +4 -4
  300. data/ext/ice/cpp/src/Ice/LoggerF.cpp +27 -5
  301. data/ext/ice/cpp/src/Ice/LoggerI.cpp +14 -44
  302. data/ext/ice/cpp/src/Ice/LoggerI.h +7 -13
  303. data/ext/ice/cpp/src/Ice/LoggerUtil.cpp +10 -12
  304. data/ext/ice/cpp/src/Ice/Metrics.cpp +1059 -1069
  305. data/ext/ice/cpp/src/Ice/MetricsAdminI.cpp +49 -19
  306. data/ext/ice/cpp/src/Ice/MetricsObserverI.cpp +1 -2
  307. data/ext/ice/cpp/src/Ice/Network.cpp +534 -170
  308. data/ext/ice/cpp/src/Ice/Network.h +100 -23
  309. data/ext/ice/cpp/src/Ice/NetworkF.h +2 -2
  310. data/ext/ice/cpp/src/Ice/NetworkProxy.cpp +21 -14
  311. data/ext/ice/cpp/src/Ice/NetworkProxy.h +5 -2
  312. data/ext/ice/cpp/src/Ice/NetworkProxyF.h +1 -1
  313. data/ext/ice/cpp/src/Ice/Object.cpp +217 -221
  314. data/ext/ice/cpp/src/Ice/ObjectAdapter.cpp +41 -6
  315. data/ext/ice/cpp/src/Ice/ObjectAdapterF.cpp +27 -5
  316. data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.cpp +35 -14
  317. data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.h +13 -7
  318. data/ext/ice/cpp/{include → src}/Ice/ObjectAdapterFactoryF.h +5 -1
  319. data/ext/ice/cpp/src/Ice/ObjectAdapterI.cpp +184 -58
  320. data/ext/ice/cpp/src/Ice/ObjectAdapterI.h +32 -26
  321. data/ext/ice/cpp/src/Ice/ObjectFactory.cpp +37 -6
  322. data/ext/ice/cpp/src/Ice/ObserverHelper.cpp +9 -32
  323. data/ext/ice/cpp/src/Ice/OpaqueEndpointI.cpp +40 -18
  324. data/ext/ice/cpp/src/Ice/OpaqueEndpointI.h +14 -5
  325. data/ext/ice/cpp/src/Ice/OutgoingAsync.cpp +803 -365
  326. data/ext/ice/cpp/src/Ice/OutputStream.cpp +1399 -0
  327. data/ext/ice/cpp/src/Ice/Plugin.cpp +45 -6
  328. data/ext/ice/cpp/src/Ice/PluginF.cpp +27 -5
  329. data/ext/ice/cpp/src/Ice/PluginManagerI.cpp +13 -13
  330. data/ext/ice/cpp/src/Ice/PluginManagerI.h +5 -6
  331. data/ext/ice/cpp/src/Ice/Process.cpp +256 -114
  332. data/ext/ice/cpp/src/Ice/ProcessF.cpp +29 -6
  333. data/ext/ice/cpp/src/Ice/Properties.cpp +38 -8
  334. data/ext/ice/cpp/src/Ice/PropertiesAdmin.cpp +340 -328
  335. data/ext/ice/cpp/src/Ice/PropertiesAdminI.cpp +81 -17
  336. data/ext/ice/cpp/src/Ice/PropertiesAdminI.h +29 -5
  337. data/ext/ice/cpp/src/Ice/PropertiesF.cpp +29 -6
  338. data/ext/ice/cpp/src/Ice/PropertiesI.cpp +25 -26
  339. data/ext/ice/cpp/src/Ice/PropertiesI.h +8 -11
  340. data/ext/ice/cpp/src/Ice/PropertyNames.cpp +107 -50
  341. data/ext/ice/cpp/src/Ice/PropertyNames.h +4 -2
  342. data/ext/ice/cpp/src/Ice/Protocol.cpp +2 -2
  343. data/ext/ice/cpp/src/Ice/ProtocolInstance.cpp +37 -2
  344. data/ext/ice/cpp/src/Ice/ProtocolInstance.h +9 -20
  345. data/ext/ice/cpp/src/Ice/ProtocolInstanceF.h +1 -1
  346. data/ext/ice/cpp/src/Ice/ProtocolPluginFacade.cpp +6 -1
  347. data/ext/ice/cpp/src/Ice/ProtocolPluginFacade.h +3 -1
  348. data/ext/ice/cpp/src/Ice/ProtocolPluginFacadeF.h +1 -1
  349. data/ext/ice/cpp/src/Ice/Proxy.cpp +690 -964
  350. data/ext/ice/cpp/src/Ice/ProxyFactory.cpp +23 -32
  351. data/ext/ice/cpp/src/Ice/ProxyFactory.h +16 -11
  352. data/ext/ice/cpp/src/Ice/Reference.cpp +75 -69
  353. data/ext/ice/cpp/src/Ice/Reference.h +27 -22
  354. data/ext/ice/cpp/src/Ice/ReferenceFactory.cpp +18 -21
  355. data/ext/ice/cpp/src/Ice/ReferenceFactory.h +12 -12
  356. data/ext/ice/cpp/src/Ice/ReferenceFactoryF.h +1 -1
  357. data/ext/ice/cpp/src/Ice/RegisterPluginsInit.cpp +18 -4
  358. data/ext/ice/cpp/src/Ice/RegisterPluginsInit.h +1 -1
  359. data/ext/ice/cpp/src/Ice/RemoteLogger.cpp +672 -552
  360. data/ext/ice/cpp/src/Ice/ReplyStatus.h +1 -1
  361. data/ext/ice/cpp/src/Ice/RequestHandler.cpp +5 -3
  362. data/ext/ice/cpp/src/Ice/RequestHandler.h +10 -13
  363. data/ext/ice/cpp/src/Ice/RequestHandlerFactory.cpp +10 -6
  364. data/ext/ice/cpp/src/Ice/RequestHandlerFactory.h +2 -2
  365. data/ext/ice/cpp/src/Ice/ResponseHandler.cpp +3 -6
  366. data/ext/ice/cpp/src/Ice/ResponseHandler.h +16 -7
  367. data/ext/ice/cpp/src/Ice/RetryQueue.cpp +6 -12
  368. data/ext/ice/cpp/src/Ice/RetryQueue.h +7 -6
  369. data/ext/ice/cpp/src/Ice/RetryQueueF.h +1 -1
  370. data/ext/ice/cpp/src/Ice/Router.cpp +523 -474
  371. data/ext/ice/cpp/src/Ice/RouterF.cpp +29 -6
  372. data/ext/ice/cpp/src/Ice/RouterInfo.cpp +91 -70
  373. data/ext/ice/cpp/src/Ice/RouterInfo.h +43 -32
  374. data/ext/ice/cpp/src/Ice/RouterInfoF.h +1 -1
  375. data/ext/ice/cpp/src/{IceUtil → Ice}/SHA1.cpp +21 -21
  376. data/ext/ice/cpp/src/Ice/Selector.cpp +989 -923
  377. data/ext/ice/cpp/src/Ice/Selector.h +100 -147
  378. data/ext/ice/cpp/src/Ice/ServantLocator.cpp +37 -6
  379. data/ext/ice/cpp/src/Ice/ServantLocatorF.cpp +27 -5
  380. data/ext/ice/cpp/src/Ice/ServantManager.cpp +9 -9
  381. data/ext/ice/cpp/src/Ice/ServantManager.h +1 -1
  382. data/ext/ice/cpp/src/Ice/SharedContext.h +2 -2
  383. data/ext/ice/cpp/src/Ice/SliceChecksumDict.cpp +20 -6
  384. data/ext/ice/cpp/src/Ice/SliceChecksums.cpp +2 -2
  385. data/ext/ice/cpp/src/Ice/SlicedData.cpp +72 -20
  386. data/ext/ice/cpp/src/Ice/StreamSocket.cpp +173 -18
  387. data/ext/ice/cpp/src/Ice/StreamSocket.h +13 -4
  388. data/ext/ice/cpp/src/Ice/StringConverterPlugin.cpp +48 -17
  389. data/ext/ice/cpp/src/Ice/StringUtil.h +35 -0
  390. data/ext/ice/cpp/src/Ice/SysLoggerI.cpp +8 -4
  391. data/ext/ice/cpp/src/Ice/SysLoggerI.h +2 -3
  392. data/ext/ice/cpp/src/Ice/TcpAcceptor.cpp +158 -32
  393. data/ext/ice/cpp/src/Ice/TcpAcceptor.h +12 -5
  394. data/ext/ice/cpp/src/Ice/TcpConnector.cpp +1 -7
  395. data/ext/ice/cpp/src/Ice/TcpConnector.h +1 -2
  396. data/ext/ice/cpp/src/Ice/TcpEndpointI.cpp +40 -32
  397. data/ext/ice/cpp/src/Ice/TcpEndpointI.h +11 -8
  398. data/ext/ice/cpp/src/Ice/TcpTransceiver.cpp +12 -27
  399. data/ext/ice/cpp/src/Ice/TcpTransceiver.h +7 -10
  400. data/ext/ice/cpp/src/{IceUtil → Ice}/Thread.cpp +24 -41
  401. data/ext/ice/cpp/src/Ice/ThreadPool.cpp +175 -267
  402. data/ext/ice/cpp/src/Ice/ThreadPool.h +38 -43
  403. data/ext/ice/cpp/src/{IceUtil → Ice}/Timer.cpp +28 -21
  404. data/ext/ice/cpp/src/Ice/TraceLevels.cpp +2 -2
  405. data/ext/ice/cpp/src/Ice/TraceLevels.h +1 -1
  406. data/ext/ice/cpp/src/Ice/TraceLevelsF.h +2 -2
  407. data/ext/ice/cpp/src/Ice/TraceUtil.cpp +53 -31
  408. data/ext/ice/cpp/src/Ice/TraceUtil.h +13 -6
  409. data/ext/ice/cpp/src/Ice/Transceiver.cpp +1 -2
  410. data/ext/ice/cpp/src/Ice/Transceiver.h +8 -7
  411. data/ext/ice/cpp/src/Ice/TransceiverF.h +1 -1
  412. data/ext/ice/cpp/src/Ice/UdpConnector.cpp +2 -8
  413. data/ext/ice/cpp/src/Ice/UdpConnector.h +1 -2
  414. data/ext/ice/cpp/src/Ice/UdpEndpointI.cpp +92 -31
  415. data/ext/ice/cpp/src/Ice/UdpEndpointI.h +12 -4
  416. data/ext/ice/cpp/src/Ice/UdpTransceiver.cpp +150 -179
  417. data/ext/ice/cpp/src/Ice/UdpTransceiver.h +15 -17
  418. data/ext/ice/cpp/src/Ice/Value.cpp +81 -0
  419. data/ext/ice/cpp/src/Ice/ValueFactory.cpp +84 -0
  420. data/ext/ice/cpp/src/Ice/ValueFactoryManagerI.cpp +70 -0
  421. data/ext/ice/cpp/src/Ice/ValueFactoryManagerI.h +42 -0
  422. data/ext/ice/cpp/src/Ice/Version.cpp +24 -14
  423. data/ext/ice/cpp/src/Ice/VirtualShared.h +43 -0
  424. data/ext/ice/cpp/src/Ice/WSAcceptor.cpp +3 -9
  425. data/ext/ice/cpp/src/Ice/WSAcceptor.h +3 -7
  426. data/ext/ice/cpp/src/Ice/WSConnector.cpp +5 -11
  427. data/ext/ice/cpp/src/Ice/WSConnector.h +3 -6
  428. data/ext/ice/cpp/src/Ice/WSEndpoint.cpp +185 -80
  429. data/ext/ice/cpp/src/Ice/WSEndpoint.h +21 -31
  430. data/ext/ice/cpp/src/Ice/WSTransceiver.cpp +41 -37
  431. data/ext/ice/cpp/src/Ice/WSTransceiver.h +7 -21
  432. data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.cpp +526 -264
  433. data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.h +341 -455
  434. data/ext/ice/cpp/src/IceDiscovery/LocatorI.cpp +86 -26
  435. data/ext/ice/cpp/src/IceDiscovery/LocatorI.h +59 -23
  436. data/ext/ice/cpp/src/IceDiscovery/LookupI.cpp +315 -61
  437. data/ext/ice/cpp/src/IceDiscovery/LookupI.h +83 -36
  438. data/ext/ice/cpp/src/IceDiscovery/PluginI.cpp +57 -59
  439. data/ext/ice/cpp/src/IceDiscovery/PluginI.h +3 -3
  440. data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.cpp +396 -159
  441. data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.h +251 -355
  442. data/ext/ice/cpp/src/IceLocatorDiscovery/Plugin.h +52 -0
  443. data/ext/ice/cpp/src/IceLocatorDiscovery/PluginI.cpp +526 -131
  444. data/ext/ice/cpp/src/IceSSL/AcceptorI.cpp +19 -165
  445. data/ext/ice/cpp/src/IceSSL/AcceptorI.h +8 -17
  446. data/ext/ice/cpp/src/IceSSL/CertificateI.cpp +284 -0
  447. data/ext/ice/cpp/src/IceSSL/CertificateI.h +69 -0
  448. data/ext/ice/cpp/src/IceSSL/ConnectionInfo.cpp +39 -11
  449. data/ext/ice/cpp/src/{Ice/ObjectFactoryF.cpp → IceSSL/ConnectionInfoF.cpp} +31 -9
  450. data/ext/ice/cpp/src/IceSSL/ConnectorI.cpp +14 -56
  451. data/ext/ice/cpp/src/IceSSL/ConnectorI.h +6 -13
  452. data/ext/ice/cpp/src/IceSSL/EndpointI.cpp +205 -197
  453. data/ext/ice/cpp/src/IceSSL/EndpointI.h +41 -33
  454. data/ext/ice/cpp/src/IceSSL/EndpointInfo.cpp +39 -10
  455. data/ext/ice/cpp/src/IceSSL/Instance.cpp +1 -6
  456. data/ext/ice/cpp/src/IceSSL/Instance.h +7 -7
  457. data/ext/ice/cpp/src/IceSSL/InstanceF.h +11 -7
  458. data/ext/ice/cpp/src/IceSSL/OpenSSLCertificateI.cpp +588 -0
  459. data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.cpp +117 -152
  460. data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.h +64 -0
  461. data/ext/ice/cpp/src/IceSSL/OpenSSLEngineF.h +32 -0
  462. data/ext/ice/cpp/src/IceSSL/OpenSSLPluginI.cpp +132 -0
  463. data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.cpp +400 -89
  464. data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.h +36 -21
  465. data/ext/ice/cpp/src/IceSSL/OpenSSLUtil.cpp +291 -0
  466. data/ext/ice/cpp/src/IceSSL/OpenSSLUtil.h +63 -0
  467. data/ext/ice/cpp/src/IceSSL/PluginI.cpp +71 -41
  468. data/ext/ice/cpp/src/IceSSL/PluginI.h +13 -18
  469. data/ext/ice/cpp/src/IceSSL/RFC2253.cpp +9 -54
  470. data/ext/ice/cpp/src/IceSSL/RFC2253.h +7 -7
  471. data/ext/ice/cpp/src/IceSSL/SChannelCertificateI.cpp +585 -0
  472. data/ext/ice/cpp/src/IceSSL/SChannelEngine.cpp +491 -75
  473. data/ext/ice/cpp/src/IceSSL/SChannelEngine.h +126 -0
  474. data/ext/ice/cpp/src/IceSSL/SChannelEngineF.h +32 -0
  475. data/ext/ice/cpp/src/IceSSL/SChannelPluginI.cpp +78 -0
  476. data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.cpp +126 -169
  477. data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.h +19 -22
  478. data/ext/ice/cpp/src/IceSSL/SSLEngine.cpp +79 -74
  479. data/ext/ice/cpp/src/IceSSL/SSLEngine.h +24 -187
  480. data/ext/ice/cpp/src/IceSSL/SSLEngineF.h +4 -19
  481. data/ext/ice/cpp/src/IceSSL/SecureTransportCertificateI.cpp +862 -0
  482. data/ext/ice/cpp/src/IceSSL/SecureTransportEngine.cpp +56 -214
  483. data/ext/ice/cpp/src/IceSSL/SecureTransportEngine.h +60 -0
  484. data/ext/ice/cpp/src/IceSSL/SecureTransportEngineF.h +31 -0
  485. data/ext/ice/cpp/src/IceSSL/SecureTransportPluginI.cpp +80 -0
  486. data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.cpp +137 -144
  487. data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.h +25 -28
  488. data/ext/ice/cpp/src/IceSSL/SecureTransportUtil.cpp +857 -0
  489. data/ext/ice/cpp/src/IceSSL/SecureTransportUtil.h +46 -0
  490. data/ext/ice/cpp/src/IceSSL/TrustManager.cpp +9 -13
  491. data/ext/ice/cpp/src/IceSSL/TrustManager.h +4 -4
  492. data/ext/ice/cpp/src/IceSSL/TrustManagerF.h +3 -3
  493. data/ext/ice/cpp/src/IceSSL/UWPCertificateI.cpp +271 -0
  494. data/ext/ice/cpp/src/IceSSL/UWPEngine.cpp +343 -0
  495. data/ext/ice/cpp/src/IceSSL/UWPEngine.h +46 -0
  496. data/ext/ice/cpp/{include/Ice/ObjectFactoryManagerF.h → src/IceSSL/UWPEngineF.h} +13 -8
  497. data/ext/ice/cpp/src/IceSSL/UWPPluginI.cpp +94 -0
  498. data/ext/ice/cpp/src/IceSSL/UWPTransceiverI.cpp +388 -0
  499. data/ext/ice/cpp/src/IceSSL/UWPTransceiverI.h +76 -0
  500. data/ext/ice/cpp/src/IceSSL/Util.cpp +66 -1256
  501. data/ext/ice/cpp/src/IceSSL/Util.h +48 -137
  502. data/ext/ice/cpp/src/IceUtil/ConsoleUtil.cpp +162 -0
  503. data/ext/ice/cpp/src/IceUtil/ConvertUTF.cpp +22 -22
  504. data/ext/ice/cpp/src/IceUtil/ConvertUTF.h +34 -26
  505. data/ext/ice/cpp/src/IceUtil/CtrlCHandler.cpp +20 -31
  506. data/ext/ice/cpp/src/IceUtil/FileUtil.cpp +25 -116
  507. data/ext/ice/cpp/src/IceUtil/InputUtil.cpp +1 -1
  508. data/ext/ice/cpp/src/IceUtil/MutexProtocol.cpp +1 -1
  509. data/ext/ice/cpp/src/IceUtil/Options.cpp +23 -46
  510. data/ext/ice/cpp/src/IceUtil/OutputUtil.cpp +7 -6
  511. data/ext/ice/cpp/src/IceUtil/Random.cpp +13 -13
  512. data/ext/ice/cpp/src/IceUtil/RecMutex.cpp +3 -9
  513. data/ext/ice/cpp/src/IceUtil/Shared.cpp +8 -3
  514. data/ext/ice/cpp/src/IceUtil/StringConverter.cpp +501 -264
  515. data/ext/ice/cpp/src/IceUtil/StringUtil.cpp +540 -235
  516. data/ext/ice/cpp/src/IceUtil/ThreadException.cpp +37 -74
  517. data/ext/ice/cpp/src/IceUtil/Time.cpp +1 -1
  518. data/ext/ice/cpp/src/IceUtil/UUID.cpp +10 -10
  519. data/ext/ice/cpp/src/IceUtil/Unicode.cpp +98 -97
  520. data/ext/ice/cpp/src/IceUtil/Unicode.h +21 -35
  521. data/ext/ice/cpp/src/IceUtil/UtilException.cpp +838 -0
  522. data/ext/ice/cpp/src/Slice/CPlusPlusUtil.cpp +815 -163
  523. data/ext/ice/cpp/src/Slice/CPlusPlusUtil.h +76 -0
  524. data/ext/ice/cpp/src/Slice/Checksum.cpp +2 -2
  525. data/ext/ice/cpp/{include → src}/Slice/Checksum.h +2 -2
  526. data/ext/ice/cpp/src/Slice/FileTracker.cpp +25 -78
  527. data/ext/ice/cpp/{include → src}/Slice/FileTracker.h +9 -9
  528. data/ext/ice/cpp/src/Slice/Grammar.cpp +1994 -1943
  529. data/ext/ice/cpp/src/Slice/Grammar.h +44 -24
  530. data/ext/ice/cpp/src/Slice/GrammarUtil.h +14 -14
  531. data/ext/ice/cpp/src/Slice/JavaUtil.cpp +2658 -1927
  532. data/ext/ice/cpp/{include → src}/Slice/JavaUtil.h +178 -59
  533. data/ext/ice/cpp/src/Slice/MD5.cpp +1 -1
  534. data/ext/ice/cpp/src/Slice/MD5.h +1 -1
  535. data/ext/ice/cpp/src/Slice/MD5I.cpp +0 -1
  536. data/ext/ice/cpp/src/Slice/MD5I.h +1 -1
  537. data/ext/ice/cpp/src/Slice/PHPUtil.cpp +12 -15
  538. data/ext/ice/cpp/{include → src}/Slice/PHPUtil.h +6 -15
  539. data/ext/ice/cpp/src/Slice/Parser.cpp +802 -307
  540. data/ext/ice/cpp/{include → src}/Slice/Parser.h +76 -84
  541. data/ext/ice/cpp/src/Slice/Preprocessor.cpp +43 -21
  542. data/ext/ice/cpp/{include → src}/Slice/Preprocessor.h +7 -12
  543. data/ext/ice/cpp/src/Slice/Python.cpp +207 -86
  544. data/ext/ice/cpp/src/Slice/PythonUtil.cpp +683 -679
  545. data/ext/ice/cpp/{include → src}/Slice/PythonUtil.h +19 -8
  546. data/ext/ice/cpp/src/Slice/Ruby.cpp +38 -34
  547. data/ext/ice/cpp/src/Slice/RubyUtil.cpp +177 -445
  548. data/ext/ice/cpp/{include → src}/Slice/RubyUtil.h +6 -6
  549. data/ext/ice/cpp/src/Slice/Scanner.cpp +218 -306
  550. data/ext/ice/cpp/src/Slice/{Util.cpp → SliceUtil.cpp} +37 -64
  551. data/ext/ice/cpp/src/Slice/StringLiteralUtil.cpp +374 -0
  552. data/ext/ice/cpp/src/Slice/Util.h +54 -0
  553. data/ext/ice/mcpp/Makefile +5 -2
  554. data/ice.gemspec +2 -7
  555. data/lib/Glacier2.rb +1 -1
  556. data/lib/Glacier2/Metrics.rb +7 -46
  557. data/lib/Glacier2/PermissionsVerifier.rb +24 -95
  558. data/lib/Glacier2/PermissionsVerifierF.rb +3 -3
  559. data/lib/Glacier2/Router.rb +32 -74
  560. data/lib/Glacier2/RouterF.rb +3 -3
  561. data/lib/Glacier2/SSLInfo.rb +4 -7
  562. data/lib/Glacier2/Session.rb +88 -307
  563. data/lib/Ice.rb +83 -52
  564. data/lib/Ice/BuiltinSequences.rb +4 -4
  565. data/lib/Ice/Communicator.rb +56 -58
  566. data/lib/Ice/CommunicatorF.rb +3 -3
  567. data/lib/Ice/Connection.rb +153 -162
  568. data/lib/Ice/ConnectionF.rb +3 -3
  569. data/lib/Ice/Current.rb +4 -11
  570. data/lib/Ice/Endpoint.rb +57 -133
  571. data/lib/Ice/EndpointF.rb +3 -3
  572. data/lib/Ice/EndpointTypes.rb +3 -7
  573. data/lib/Ice/FacetMap.rb +4 -4
  574. data/lib/Ice/Identity.rb +5 -8
  575. data/lib/Ice/ImplicitContext.rb +5 -34
  576. data/lib/Ice/ImplicitContextF.rb +3 -3
  577. data/lib/Ice/Instrumentation.rb +23 -275
  578. data/lib/Ice/InstrumentationF.rb +3 -3
  579. data/lib/Ice/LocalException.rb +95 -141
  580. data/lib/Ice/Locator.rb +51 -165
  581. data/lib/Ice/LocatorF.rb +3 -3
  582. data/lib/Ice/Logger.rb +5 -34
  583. data/lib/Ice/LoggerF.rb +3 -3
  584. data/lib/Ice/Metrics.rb +61 -416
  585. data/lib/Ice/ObjectAdapter.rb +34 -0
  586. data/lib/Ice/ObjectAdapterF.rb +3 -3
  587. data/lib/Ice/ObjectFactory.rb +5 -30
  588. data/lib/Ice/Plugin.rb +7 -60
  589. data/lib/Ice/PluginF.rb +3 -3
  590. data/lib/Ice/Process.rb +16 -52
  591. data/lib/Ice/ProcessF.rb +3 -3
  592. data/lib/Ice/Properties.rb +5 -41
  593. data/lib/Ice/PropertiesAdmin.rb +19 -56
  594. data/lib/Ice/PropertiesF.rb +3 -3
  595. data/lib/Ice/RemoteLogger.rb +34 -115
  596. data/lib/Ice/Router.rb +29 -101
  597. data/lib/Ice/RouterF.rb +3 -3
  598. data/lib/Ice/ServantLocator.rb +31 -0
  599. data/lib/Ice/{ObjectFactoryF.rb → ServantLocatorF.rb} +6 -6
  600. data/lib/Ice/SliceChecksumDict.rb +3 -3
  601. data/lib/Ice/ValueFactory.rb +33 -0
  602. data/lib/Ice/Version.rb +5 -11
  603. data/lib/IceBox.rb +1 -1
  604. data/lib/IceBox/IceBox.rb +44 -148
  605. data/lib/IceGrid.rb +1 -4
  606. data/lib/IceGrid/Admin.rb +551 -427
  607. data/lib/IceGrid/Descriptor.rb +62 -529
  608. data/lib/IceGrid/Exception.rb +24 -45
  609. data/lib/IceGrid/FileParser.rb +14 -50
  610. data/lib/IceGrid/PluginFacade.rb +40 -0
  611. data/lib/IceGrid/Registry.rb +151 -58
  612. data/lib/IceGrid/Session.rb +25 -64
  613. data/lib/IceGrid/UserAccountMapper.rb +14 -50
  614. data/lib/IcePatch2.rb +1 -1
  615. data/lib/IcePatch2/FileInfo.rb +5 -11
  616. data/lib/IcePatch2/FileServer.rb +33 -76
  617. data/lib/IceStorm.rb +1 -1
  618. data/lib/IceStorm/IceStorm.rb +79 -206
  619. data/lib/IceStorm/Metrics.rb +11 -89
  620. data/slice/Glacier2/Metrics.ice +8 -4
  621. data/slice/Glacier2/PermissionsVerifier.ice +10 -7
  622. data/slice/Glacier2/PermissionsVerifierF.ice +7 -4
  623. data/slice/Glacier2/Router.ice +10 -8
  624. data/slice/Glacier2/RouterF.ice +7 -4
  625. data/slice/Glacier2/SSLInfo.ice +8 -5
  626. data/slice/Glacier2/Session.ice +15 -13
  627. data/slice/Ice/BuiltinSequences.ice +7 -4
  628. data/slice/Ice/Communicator.ice +141 -66
  629. data/slice/Ice/CommunicatorF.ice +7 -4
  630. data/slice/Ice/Connection.ice +183 -86
  631. data/slice/Ice/ConnectionF.ice +7 -4
  632. data/slice/Ice/Current.ice +13 -9
  633. data/slice/Ice/Endpoint.ice +63 -14
  634. data/slice/Ice/EndpointF.ice +7 -4
  635. data/slice/Ice/EndpointTypes.ice +8 -6
  636. data/slice/Ice/FacetMap.ice +7 -4
  637. data/slice/Ice/Identity.ice +13 -5
  638. data/slice/Ice/ImplicitContext.ice +20 -18
  639. data/slice/Ice/ImplicitContextF.ice +7 -4
  640. data/slice/Ice/Instrumentation.ice +20 -19
  641. data/slice/Ice/InstrumentationF.ice +8 -5
  642. data/slice/Ice/LocalException.ice +87 -87
  643. data/slice/Ice/Locator.ice +19 -18
  644. data/slice/Ice/LocatorF.ice +7 -4
  645. data/slice/Ice/Logger.ice +9 -7
  646. data/slice/Ice/LoggerF.ice +7 -4
  647. data/slice/Ice/Metrics.ice +18 -14
  648. data/slice/Ice/ObjectAdapter.ice +30 -13
  649. data/slice/Ice/ObjectAdapterF.ice +7 -4
  650. data/slice/Ice/ObjectFactory.ice +15 -12
  651. data/slice/Ice/Plugin.ice +9 -6
  652. data/slice/Ice/PluginF.ice +8 -5
  653. data/slice/Ice/Process.ice +9 -6
  654. data/slice/Ice/ProcessF.ice +7 -4
  655. data/slice/Ice/Properties.ice +15 -12
  656. data/slice/Ice/PropertiesAdmin.ice +9 -5
  657. data/slice/Ice/PropertiesF.ice +7 -4
  658. data/slice/Ice/RemoteLogger.ice +33 -24
  659. data/slice/Ice/Router.ice +16 -7
  660. data/slice/Ice/RouterF.ice +7 -4
  661. data/slice/Ice/ServantLocator.ice +13 -10
  662. data/slice/Ice/ServantLocatorF.ice +7 -4
  663. data/slice/Ice/SliceChecksumDict.ice +7 -4
  664. data/slice/Ice/ValueFactory.ice +127 -0
  665. data/slice/Ice/Version.ice +9 -5
  666. data/slice/IceBT/ConnectionInfo.ice +53 -0
  667. data/slice/IceBT/EndpointInfo.ice +51 -0
  668. data/slice/IceBT/Types.ice +39 -0
  669. data/slice/IceBox/IceBox.ice +20 -21
  670. data/slice/IceDiscovery/IceDiscovery.ice +9 -5
  671. data/slice/IceGrid/Admin.ice +390 -30
  672. data/slice/IceGrid/Descriptor.ice +37 -29
  673. data/slice/IceGrid/Exception.ice +33 -27
  674. data/slice/IceGrid/FileParser.ice +9 -6
  675. data/slice/IceGrid/PluginFacade.ice +11 -9
  676. data/slice/IceGrid/Registry.ice +139 -16
  677. data/slice/IceGrid/Session.ice +10 -8
  678. data/slice/IceGrid/UserAccountMapper.ice +9 -6
  679. data/slice/IceIAP/ConnectionInfo.ice +70 -0
  680. data/slice/IceIAP/EndpointInfo.ice +64 -0
  681. data/slice/IceLocatorDiscovery/IceLocatorDiscovery.ice +9 -7
  682. data/slice/IcePatch2/FileInfo.ice +9 -8
  683. data/slice/IcePatch2/FileServer.ice +17 -13
  684. data/slice/IceSSL/ConnectionInfo.ice +14 -17
  685. data/slice/IceSSL/ConnectionInfoF.ice +24 -0
  686. data/slice/IceSSL/EndpointInfo.ice +9 -30
  687. data/slice/IceStorm/IceStorm.ice +22 -18
  688. data/slice/IceStorm/Metrics.ice +9 -5
  689. metadata +154 -120
  690. data/ext/ObjectFactory.cpp +0 -140
  691. data/ext/ObjectFactory.h +0 -50
  692. data/ext/ice/cpp/include/Ice/BasicStream.h +0 -1335
  693. data/ext/ice/cpp/include/Ice/Communicator.h +0 -200
  694. data/ext/ice/cpp/include/Ice/Connection.h +0 -497
  695. data/ext/ice/cpp/include/Ice/DeprecatedStringConverter.h +0 -62
  696. data/ext/ice/cpp/include/Ice/Endpoint.h +0 -341
  697. data/ext/ice/cpp/include/Ice/Identity.h +0 -168
  698. data/ext/ice/cpp/include/Ice/Instrumentation.h +0 -365
  699. data/ext/ice/cpp/include/Ice/LocalException.h +0 -1030
  700. data/ext/ice/cpp/include/Ice/Locator.h +0 -2193
  701. data/ext/ice/cpp/include/Ice/Metrics.h +0 -2974
  702. data/ext/ice/cpp/include/Ice/ObjectAdapter.h +0 -168
  703. data/ext/ice/cpp/include/Ice/ObjectFactory.h +0 -92
  704. data/ext/ice/cpp/include/Ice/ObjectFactoryF.h +0 -66
  705. data/ext/ice/cpp/include/Ice/Outgoing.h +0 -225
  706. data/ext/ice/cpp/include/Ice/Plugin.h +0 -125
  707. data/ext/ice/cpp/include/Ice/Process.h +0 -574
  708. data/ext/ice/cpp/include/Ice/PropertiesAdmin.h +0 -830
  709. data/ext/ice/cpp/include/Ice/RemoteLogger.h +0 -1500
  710. data/ext/ice/cpp/include/Ice/Router.h +0 -1159
  711. data/ext/ice/cpp/include/Ice/Stream.h +0 -447
  712. data/ext/ice/cpp/include/Ice/StreamF.h +0 -30
  713. data/ext/ice/cpp/include/Ice/Version.h +0 -262
  714. data/ext/ice/cpp/include/IceSSL/ConnectionInfo.h +0 -158
  715. data/ext/ice/cpp/include/IceSSL/EndpointInfo.h +0 -142
  716. data/ext/ice/cpp/include/IceUtil/AbstractMutex.h +0 -119
  717. data/ext/ice/cpp/include/IceUtil/Cache.h +0 -362
  718. data/ext/ice/cpp/include/Slice/CPlusPlusUtil.h +0 -65
  719. data/ext/ice/cpp/include/Slice/CsUtil.h +0 -92
  720. data/ext/ice/cpp/include/Slice/DotNetNames.h +0 -34
  721. data/ext/ice/cpp/include/Slice/ObjCUtil.h +0 -127
  722. data/ext/ice/cpp/include/Slice/Util.h +0 -56
  723. data/ext/ice/cpp/src/Ice/BasicStream.cpp +0 -3428
  724. data/ext/ice/cpp/src/Ice/DeprecatedStringConverter.cpp +0 -62
  725. data/ext/ice/cpp/src/Ice/ObjectFactoryManager.cpp +0 -139
  726. data/ext/ice/cpp/src/Ice/ObjectFactoryManager.h +0 -43
  727. data/ext/ice/cpp/src/Ice/Outgoing.cpp +0 -694
  728. data/ext/ice/cpp/src/Ice/Stream.cpp +0 -53
  729. data/ext/ice/cpp/src/Ice/StreamI.cpp +0 -832
  730. data/ext/ice/cpp/src/Ice/StreamI.h +0 -198
  731. data/ext/ice/cpp/src/IceSSL/Certificate.cpp +0 -1336
  732. data/ext/ice/cpp/src/IceUtil/Exception.cpp +0 -792
  733. data/ext/ice/cpp/src/IceUtil/FileUtil.h +0 -185
  734. data/ext/ice/cpp/src/Slice/CsUtil.cpp +0 -2660
  735. data/ext/ice/cpp/src/Slice/DotNetNames.cpp +0 -146
  736. data/ext/ice/cpp/src/Slice/ObjCUtil.cpp +0 -1310
  737. data/lib/IceGrid/Locator.rb +0 -106
  738. data/lib/IceGrid/Observer.rb +0 -572
  739. data/lib/IceGrid/Query.rb +0 -169
  740. data/slice/Freeze/BackgroundSaveEvictor.ice +0 -111
  741. data/slice/Freeze/CatalogData.ice +0 -49
  742. data/slice/Freeze/Connection.ice +0 -121
  743. data/slice/Freeze/DB.ice +0 -37
  744. data/slice/Freeze/Evictor.ice +0 -346
  745. data/slice/Freeze/EvictorF.ice +0 -22
  746. data/slice/Freeze/EvictorStorage.ice +0 -72
  747. data/slice/Freeze/Exception.ice +0 -100
  748. data/slice/Freeze/Transaction.ice +0 -58
  749. data/slice/Freeze/TransactionalEvictor.ice +0 -50
  750. data/slice/IceGrid/Locator.ice +0 -57
  751. data/slice/IceGrid/Observer.ice +0 -395
  752. data/slice/IceGrid/Query.ice +0 -131
@@ -1,6 +1,6 @@
1
1
  // **********************************************************************
2
2
  //
3
- // Copyright (c) 2003-2018 ZeroC, Inc. All rights reserved.
3
+ // Copyright (c) 2003-2017 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.
@@ -18,27 +18,38 @@ namespace Slice
18
18
  namespace Python
19
19
  {
20
20
 
21
+ //
22
+ // Get the package directory from metadata (if any).
23
+ //
24
+ std::string getPackageDirectory(const std::string&, const Slice::UnitPtr&);
25
+
26
+ //
27
+ // Determine the name of a Python source file for use in an import statement.
28
+ // The return value does not include the .py extension.
29
+ //
30
+ std::string getImportFileName(const std::string&, const Slice::UnitPtr&, const std::vector<std::string>&);
31
+
21
32
  //
22
33
  // Generate Python code for a translation unit.
23
34
  //
24
- SLICE_API void generate(const Slice::UnitPtr&, bool, bool, const std::vector<std::string>&, IceUtilInternal::Output&);
35
+ void generate(const Slice::UnitPtr&, bool, bool, const std::vector<std::string>&, IceUtilInternal::Output&);
25
36
 
26
37
  //
27
38
  // Convert a scoped name into a Python name.
28
39
  //
29
- SLICE_API std::string scopedToName(const std::string&);
40
+ std::string scopedToName(const std::string&);
30
41
 
31
42
  //
32
43
  // Check the given identifier against Python's list of reserved words. If it matches
33
44
  // a reserved word, then an escaped version is returned with a leading underscore.
34
45
  //
35
- SLICE_API std::string fixIdent(const std::string&);
46
+ std::string fixIdent(const std::string&);
36
47
 
37
48
  //
38
49
  // Return the package specified in the global metadata for the given definition,
39
50
  // or an empty string if no metadata was found.
40
51
  //
41
- SLICE_API std::string getPackageMetadata(const Slice::ContainedPtr&);
52
+ std::string getPackageMetadata(const Slice::ContainedPtr&);
42
53
 
43
54
  //
44
55
  // Get the fully-qualified name of the given definition, including any
@@ -49,14 +60,14 @@ SLICE_API std::string getPackageMetadata(const Slice::ContainedPtr&);
49
60
  // COMPILERFIX: MSVC 6 seems to have a problem with const std::string
50
61
  // = std::string(), const std::string = std::string().
51
62
  //
52
- SLICE_API std::string getAbsolute(const Slice::ContainedPtr&, const std::string& = "", const std::string& = "");
63
+ std::string getAbsolute(const Slice::ContainedPtr&, const std::string& = "", const std::string& = "");
53
64
 
54
65
  //
55
66
  // Emit a comment header.
56
67
  //
57
- SLICE_API void printHeader(IceUtilInternal::Output&);
68
+ void printHeader(IceUtilInternal::Output&);
58
69
 
59
- SLICE_API int compile(const std::vector<std::string>&);
70
+ int compile(const std::vector<std::string>&);
60
71
 
61
72
  }
62
73
  }
@@ -1,6 +1,6 @@
1
1
  // **********************************************************************
2
2
  //
3
- // Copyright (c) 2003-2018 ZeroC, Inc. All rights reserved.
3
+ // Copyright (c) 2003-2017 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.
@@ -12,6 +12,7 @@
12
12
  #include <IceUtil/CtrlCHandler.h>
13
13
  #include <IceUtil/Mutex.h>
14
14
  #include <IceUtil/MutexPtrLock.h>
15
+ #include <IceUtil/ConsoleUtil.h>
15
16
  #include <Slice/Preprocessor.h>
16
17
  #include <Slice/FileTracker.h>
17
18
  #include <Slice/RubyUtil.h>
@@ -22,6 +23,7 @@
22
23
  using namespace std;
23
24
  using namespace Slice;
24
25
  using namespace Slice::Ruby;
26
+ using namespace IceUtilInternal;
25
27
 
26
28
  namespace
27
29
  {
@@ -58,25 +60,27 @@ interruptedCallback(int /*signal*/)
58
60
  void
59
61
  usage(const string& n)
60
62
  {
61
- getErrorStream() << "Usage: " << n << " [options] slice-files...\n";
62
- getErrorStream() <<
63
+ consoleErr << "Usage: " << n << " [options] slice-files...\n";
64
+ consoleErr <<
63
65
  "Options:\n"
64
- "-h, --help Show this message.\n"
65
- "-v, --version Display the Ice version.\n"
66
- "-DNAME Define NAME as 1.\n"
67
- "-DNAME=DEF Define NAME as DEF.\n"
68
- "-UNAME Remove any definition for NAME.\n"
69
- "-IDIR Put DIR in the include file search path.\n"
70
- "-E Print preprocessor output on stdout.\n"
71
- "--output-dir DIR Create files in the directory DIR.\n"
72
- "--depend Generate Makefile dependencies.\n"
73
- "--depend-xml Generate dependencies in XML format.\n"
74
- "--depend-file FILE Write dependencies to FILE instead of standard output.\n"
75
- "-d, --debug Print debug messages.\n"
76
- "--ice Permit `Ice' prefix (for building Ice source code only).\n"
77
- "--underscore Permit underscores in Slice identifiers.\n"
78
- "--all Generate code for Slice definitions in included files.\n"
79
- "--checksum Generate checksums for Slice definitions.\n"
66
+ "-h, --help Show this message.\n"
67
+ "-v, --version Display the Ice version.\n"
68
+ "-DNAME Define NAME as 1.\n"
69
+ "-DNAME=DEF Define NAME as DEF.\n"
70
+ "-UNAME Remove any definition for NAME.\n"
71
+ "-IDIR Put DIR in the include file search path.\n"
72
+ "-E Print preprocessor output on stdout.\n"
73
+ "--output-dir DIR Create files in the directory DIR.\n"
74
+ "-d, --debug Print debug messages.\n"
75
+ "--depend Generate Makefile dependencies.\n"
76
+ "--depend-xml Generate dependencies in XML format.\n"
77
+ "--depend-file FILE Write dependencies to FILE instead of standard output.\n"
78
+ "--all Generate code for Slice definitions in included files.\n"
79
+ "--checksum Generate checksums for Slice definitions.\n"
80
+ "--ice Allow reserved Ice prefix in Slice identifiers\n"
81
+ " deprecated: use instead [[\"ice-prefix\"]] metadata.\n"
82
+ "--underscore Allow underscores in Slice identifiers\n"
83
+ " deprecated: use instead [[\"underscore\"]] metadata.\n"
80
84
  ;
81
85
  }
82
86
 
@@ -109,7 +113,7 @@ Slice::Ruby::compile(const vector<string>& argv)
109
113
  }
110
114
  catch(const IceUtilInternal::BadOptException& e)
111
115
  {
112
- getErrorStream() << argv[0] << ": error: " << e.reason << endl;
116
+ consoleErr << argv[0] << ": error: " << e.reason << endl;
113
117
  usage(argv[0]);
114
118
  return EXIT_FAILURE;
115
119
  }
@@ -122,7 +126,7 @@ Slice::Ruby::compile(const vector<string>& argv)
122
126
 
123
127
  if(opts.isSet("version"))
124
128
  {
125
- getErrorStream() << ICE_STRING_VERSION << endl;
129
+ consoleErr << ICE_STRING_VERSION << endl;
126
130
  return EXIT_SUCCESS;
127
131
  }
128
132
 
@@ -167,14 +171,14 @@ Slice::Ruby::compile(const vector<string>& argv)
167
171
 
168
172
  if(args.empty())
169
173
  {
170
- getErrorStream() << argv[0] << ": error: no input file" << endl;
174
+ consoleErr << argv[0] << ": error: no input file" << endl;
171
175
  usage(argv[0]);
172
176
  return EXIT_FAILURE;
173
177
  }
174
178
 
175
179
  if(depend && dependxml)
176
180
  {
177
- getErrorStream() << argv[0] << ": error: cannot specify both --depend and --dependxml" << endl;
181
+ consoleErr << argv[0] << ": error: cannot specify both --depend and --dependxml" << endl;
178
182
  usage(argv[0]);
179
183
  return EXIT_FAILURE;
180
184
  }
@@ -184,10 +188,10 @@ Slice::Ruby::compile(const vector<string>& argv)
184
188
  IceUtil::CtrlCHandler ctrlCHandler;
185
189
  ctrlCHandler.setCallback(interruptedCallback);
186
190
 
187
- DependOutputUtil out(dependFile);
191
+ ostringstream os;
188
192
  if(dependxml)
189
193
  {
190
- out.os() << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<dependencies>" << endl;
194
+ os << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<dependencies>" << endl;
191
195
  }
192
196
 
193
197
  for(vector<string>::const_iterator i = args.begin(); i != args.end(); ++i)
@@ -208,7 +212,6 @@ Slice::Ruby::compile(const vector<string>& argv)
208
212
 
209
213
  if(cppHandle == 0)
210
214
  {
211
- out.cleanup();
212
215
  return EXIT_FAILURE;
213
216
  }
214
217
 
@@ -218,20 +221,17 @@ Slice::Ruby::compile(const vector<string>& argv)
218
221
 
219
222
  if(parseStatus == EXIT_FAILURE)
220
223
  {
221
- out.cleanup();
222
224
  return EXIT_FAILURE;
223
225
  }
224
226
 
225
- if(!icecpp->printMakefileDependencies(out.os(), depend ? Preprocessor::Ruby : Preprocessor::SliceXML, includePaths,
227
+ if(!icecpp->printMakefileDependencies(os, depend ? Preprocessor::Ruby : Preprocessor::SliceXML, includePaths,
226
228
  "-D__SLICE2RB__"))
227
229
  {
228
- out.cleanup();
229
230
  return EXIT_FAILURE;
230
231
  }
231
232
 
232
233
  if(!icecpp->close())
233
234
  {
234
- out.cleanup();
235
235
  return EXIT_FAILURE;
236
236
  }
237
237
  }
@@ -248,7 +248,7 @@ Slice::Ruby::compile(const vector<string>& argv)
248
248
  if(preprocess)
249
249
  {
250
250
  char buf[4096];
251
- while(fgets(buf, static_cast<int>(sizeof(buf)), cppHandle) != NULL)
251
+ while(fgets(buf, static_cast<int>(sizeof(buf)), cppHandle) != ICE_NULLPTR)
252
252
  {
253
253
  if(fputs(buf, stdout) == EOF)
254
254
  {
@@ -321,7 +321,7 @@ Slice::Ruby::compile(const vector<string>& argv)
321
321
  // any created files.
322
322
  FileTracker::instance()->cleanup();
323
323
  u->destroy();
324
- getErrorStream() << argv[0] << ": error: " << ex.reason() << endl;
324
+ consoleErr << argv[0] << ": error: " << ex.reason() << endl;
325
325
  return EXIT_FAILURE;
326
326
  }
327
327
  }
@@ -335,7 +335,6 @@ Slice::Ruby::compile(const vector<string>& argv)
335
335
 
336
336
  if(interrupted)
337
337
  {
338
- out.cleanup();
339
338
  FileTracker::instance()->cleanup();
340
339
  return EXIT_FAILURE;
341
340
  }
@@ -344,7 +343,12 @@ Slice::Ruby::compile(const vector<string>& argv)
344
343
 
345
344
  if(dependxml)
346
345
  {
347
- out.os() << "</dependencies>\n";
346
+ os << "</dependencies>\n";
347
+ }
348
+
349
+ if(depend || dependxml)
350
+ {
351
+ writeDependencies(os.str(), dependFile);
348
352
  }
349
353
 
350
354
  return status;
@@ -1,6 +1,6 @@
1
1
  // **********************************************************************
2
2
  //
3
- // Copyright (c) 2003-2018 ZeroC, Inc. All rights reserved.
3
+ // Copyright (c) 2003-2017 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.
@@ -12,7 +12,6 @@
12
12
  #include <Slice/Util.h>
13
13
  #include <IceUtil/Functional.h>
14
14
  #include <IceUtil/InputUtil.h>
15
- #include <IceUtil/Unicode.h>
16
15
  #include <iterator>
17
16
 
18
17
  using namespace std;
@@ -20,6 +19,26 @@ using namespace Slice;
20
19
  using namespace IceUtil;
21
20
  using namespace IceUtilInternal;
22
21
 
22
+ namespace
23
+ {
24
+
25
+ string
26
+ getEscapedParamName(const OperationPtr& p, const string& name)
27
+ {
28
+ ParamDeclList params = p->parameters();
29
+
30
+ for(ParamDeclList::const_iterator i = params.begin(); i != params.end(); ++i)
31
+ {
32
+ if((*i)->name() == name)
33
+ {
34
+ return name + "_";
35
+ }
36
+ }
37
+ return name;
38
+ }
39
+
40
+ }
41
+
23
42
  namespace Slice
24
43
  {
25
44
  namespace Ruby
@@ -48,12 +67,12 @@ public:
48
67
  private:
49
68
 
50
69
  //
51
- // Return a Python symbol for the given parser element.
70
+ // Return a Ruby symbol for the given parser element.
52
71
  //
53
72
  string getSymbol(const ContainedPtr&);
54
73
 
55
74
  //
56
- // Emit Python code to assign the given symbol in the current module.
75
+ // Emit Ruby code to assign the given symbol in the current module.
57
76
  //
58
77
  void registerName(const string&);
59
78
 
@@ -172,16 +191,7 @@ Slice::Ruby::CodeVisitor::CodeVisitor(Output& out) :
172
191
  bool
173
192
  Slice::Ruby::CodeVisitor::visitModuleStart(const ModulePtr& p)
174
193
  {
175
- _out << sp << nl << "module ";
176
- //
177
- // Ensure that Slice top-level modules are defined as top
178
- // level modules in Ruby
179
- //
180
- if(UnitPtr::dynamicCast(p->container()))
181
- {
182
- _out << "::";
183
- }
184
- _out << fixIdent(p->name(), IdentToUpper);
194
+ _out << sp << nl << "module " << fixIdent(p->name(), IdentToUpper);
185
195
  _out.inc();
186
196
  return true;
187
197
  }
@@ -223,225 +233,53 @@ Slice::Ruby::CodeVisitor::visitClassDecl(const ClassDeclPtr& p)
223
233
  bool
224
234
  Slice::Ruby::CodeVisitor::visitClassDefStart(const ClassDefPtr& p)
225
235
  {
226
- string scoped = p->scoped();
227
- string name = fixIdent(p->name(), IdentToUpper);
228
- ClassList bases = p->bases();
229
- ClassDefPtr base;
230
- OperationList ops = p->operations();
236
+ bool isInterface = p->isInterface();
237
+ bool isLocal = p->isLocal();
238
+ bool isAbstract = isInterface || p->allOperations().size() > 0; // Don't use isAbstract() - see bug 3739
231
239
 
232
240
  //
233
- // Define a mix-in module for the class.
241
+ // Do not generate any code for local interfaces.
234
242
  //
235
- _out << sp << nl << "if not defined?(" << getAbsolute(p, IdentToUpper) << "_mixin)";
236
- _out.inc();
237
- _out << nl << "module " << name << "_mixin";
238
- _out.inc();
239
-
240
- if(!p->isLocal())
243
+ if(isLocal && isInterface)
241
244
  {
242
- if(!bases.empty() && !bases.front()->isInterface())
243
- {
244
- base = bases.front();
245
- _out << nl << "include " << getAbsolute(bases.front(), IdentToUpper) << "_mixin";
246
- }
247
- else
248
- {
249
- _out << nl << "include ::Ice::Object_mixin";
250
- }
251
-
252
- //
253
- // ice_ids
254
- //
255
- ClassList allBases = p->allBases();
256
- StringList ids;
257
- transform(allBases.begin(), allBases.end(), back_inserter(ids), IceUtil::constMemFun(&Contained::scoped));
258
- StringList other;
259
- other.push_back(scoped);
260
- other.push_back("::Ice::Object");
261
- other.sort();
262
- ids.merge(other);
263
- ids.unique();
264
- _out << sp << nl << "def ice_ids(current=nil)";
265
- _out.inc();
266
- _out << nl << "[";
267
- for(StringList::iterator q = ids.begin(); q != ids.end(); ++q)
268
- {
269
- if(q != ids.begin())
270
- {
271
- _out << ", ";
272
- }
273
- _out << "'" << *q << "'";
274
- }
275
- _out << ']';
276
- _out.dec();
277
- _out << nl << "end";
278
-
279
- //
280
- // ice_id
281
- //
282
- _out << sp << nl << "def ice_id(current=nil)";
283
- _out.inc();
284
- _out << nl << "'" << scoped << "'";
285
- _out.dec();
286
- _out << nl << "end";
245
+ return false;
287
246
  }
288
247
 
289
- if(!ops.empty())
290
- {
291
- //
292
- // Emit a comment for each operation.
293
- //
294
- _out << sp
295
- << nl << "#"
296
- << nl << "# Operation signatures."
297
- << nl << "#";
298
- for(OperationList::iterator oli = ops.begin(); oli != ops.end(); ++oli)
299
- {
300
- string fixedOpName = fixIdent((*oli)->name(), IdentNormal);
301
- /* If AMI/AMD is ever implemented...
302
- if(!p->isLocal() && (p->hasMetaData("amd") || (*oli)->hasMetaData("amd")))
303
- {
304
- _out << nl << "# def " << fixedOpName << "_async(_cb";
305
-
306
- ParamDeclList params = (*oli)->parameters();
307
-
308
- for(ParamDeclList::iterator pli = params.begin(); pli != params.end(); ++pli)
309
- {
310
- if(!(*pli)->isOutParam())
311
- {
312
- _out << ", " << fixIdent((*pli)->name(), IdentToLower);
313
- }
314
- }
315
- if(!p->isLocal())
316
- {
317
- _out << ", current=nil";
318
- }
319
- _out << ")";
320
- }
321
- else
322
- */
323
- {
324
- _out << nl << "# def " << fixedOpName << "(";
325
-
326
- ParamDeclList params = (*oli)->parameters();
327
-
328
- bool first = true;
329
- for(ParamDeclList::iterator pli = params.begin(); pli != params.end(); ++pli)
330
- {
331
- if(!(*pli)->isOutParam())
332
- {
333
- if(first)
334
- {
335
- first = false;
336
- }
337
- else
338
- {
339
- _out << ", ";
340
- }
341
- _out << fixIdent((*pli)->name(), IdentToLower);
342
- }
343
- }
344
- if(!p->isLocal())
345
- {
346
- if(!first)
347
- {
348
- _out << ", ";
349
- }
350
- _out << "current=nil";
351
- }
352
- _out << ")";
353
- }
354
- }
355
- }
248
+ _out << sp << nl << "if not defined?(" << getAbsolute(p, IdentToUpper) << "_Mixin)";
249
+ _out.inc();
356
250
 
357
251
  //
358
- // inspect
252
+ // Marker to avoid redefinitions, we don't use the actual class names at those might
253
+ // be defined by IceRuby for some internal classes
359
254
  //
360
- _out << sp << nl << "def inspect";
361
- _out.inc();
362
- _out << nl << "::Ice::__stringify(self, T_" << name << ")";
363
- _out.dec();
255
+ _out << sp << nl << "module " << getAbsolute(p, IdentToUpper) << "_Mixin";
364
256
  _out << nl << "end";
365
257
 
366
- //
367
- // read/write accessors for data members.
368
- //
369
- DataMemberList members = p->dataMembers();
370
- if(!members.empty())
371
- {
372
- bool prot = p->hasMetaData("protected");
373
- DataMemberList protectedMembers;
258
+ string scoped = p->scoped();
259
+ string name = fixIdent(p->name(), IdentToUpper);
260
+ ClassList bases = p->bases();
261
+ ClassDefPtr base;
262
+ OperationList ops = p->operations();
374
263
 
375
- _out << sp << nl << "attr_accessor ";
376
- for(DataMemberList::iterator q = members.begin(); q != members.end(); ++q)
377
- {
378
- if(q != members.begin())
379
- {
380
- _out << ", ";
381
- }
382
- _out << ":" << fixIdent((*q)->name(), IdentNormal);
383
- if(prot || (*q)->hasMetaData("protected"))
384
- {
385
- protectedMembers.push_back(*q);
386
- }
387
- }
264
+ DataMemberList members = p->dataMembers();
388
265
 
389
- if(!protectedMembers.empty())
266
+ if(isLocal || !isInterface)
267
+ {
268
+ if(!bases.empty() && !bases.front()->isInterface())
390
269
  {
391
- _out << nl << "protected ";
392
- for(DataMemberList::iterator q = protectedMembers.begin(); q != protectedMembers.end(); ++q)
393
- {
394
- if(q != protectedMembers.begin())
395
- {
396
- _out << ", ";
397
- }
398
- //
399
- // We need to list the symbols of the reader and the writer (e.g., ":member" and ":member=").
400
- //
401
- _out << ":" << fixIdent((*q)->name(), IdentNormal) << ", :"
402
- << fixIdent((*q)->name(), IdentNormal) << '=';
403
- }
270
+ base = bases.front();
404
271
  }
405
- }
406
-
407
- _out.dec();
408
- _out << nl << "end"; // End of mix-in module for class.
409
272
 
410
- if(p->isInterface())
411
- {
412
- //
413
- // Class.
414
- //
415
- _out << nl << "class " << name;
416
- _out.inc();
417
- _out << nl << "include " << name << "_mixin";
418
- _out << nl;
419
- _out << nl << "def " << name << ".ice_staticId()";
420
- _out.inc();
421
- _out << nl << "'" << scoped << "'";
422
- _out.dec();
423
- _out << nl << "end";
424
- _out.dec();
425
- _out << nl << "end";
426
- }
427
- else
428
- {
429
- //
430
- // Class.
431
- //
432
273
  _out << nl << "class " << name;
433
274
  if(base)
434
275
  {
435
276
  _out << " < " << getAbsolute(base, IdentToUpper);
436
277
  }
278
+ else if(!isLocal)
279
+ {
280
+ _out << " < ::Ice::Value";
281
+ }
437
282
  _out.inc();
438
- _out << nl << "include " << name << "_mixin";
439
- _out << nl;
440
- _out << nl << "def " << name << ".ice_staticId()";
441
- _out.inc();
442
- _out << nl << "'" << scoped << "'";
443
- _out.dec();
444
- _out << nl << "end";
445
283
 
446
284
  //
447
285
  // initialize
@@ -490,6 +328,47 @@ Slice::Ruby::CodeVisitor::visitClassDefStart(const ClassDefPtr& p)
490
328
  _out << nl << "end";
491
329
  }
492
330
 
331
+ //
332
+ // read/write accessors for data members.
333
+ //
334
+ DataMemberList members = p->dataMembers();
335
+ if(!members.empty())
336
+ {
337
+ bool prot = p->hasMetaData("protected");
338
+ DataMemberList protectedMembers;
339
+
340
+ _out << sp << nl << "attr_accessor ";
341
+ for(DataMemberList::iterator q = members.begin(); q != members.end(); ++q)
342
+ {
343
+ if(q != members.begin())
344
+ {
345
+ _out << ", ";
346
+ }
347
+ _out << ":" << fixIdent((*q)->name(), IdentNormal);
348
+ if(prot || (*q)->hasMetaData("protected"))
349
+ {
350
+ protectedMembers.push_back(*q);
351
+ }
352
+ }
353
+
354
+ if(!protectedMembers.empty())
355
+ {
356
+ _out << nl << "protected ";
357
+ for(DataMemberList::iterator q = protectedMembers.begin(); q != protectedMembers.end(); ++q)
358
+ {
359
+ if(q != protectedMembers.begin())
360
+ {
361
+ _out << ", ";
362
+ }
363
+ //
364
+ // We need to list the symbols of the reader and the writer (e.g., ":member" and ":member=").
365
+ //
366
+ _out << ":" << fixIdent((*q)->name(), IdentNormal) << ", :"
367
+ << fixIdent((*q)->name(), IdentNormal) << '=';
368
+ }
369
+ }
370
+ }
371
+
493
372
  _out.dec();
494
373
  _out << nl << "end"; // End of class.
495
374
  }
@@ -498,13 +377,17 @@ Slice::Ruby::CodeVisitor::visitClassDefStart(const ClassDefPtr& p)
498
377
  // Generate proxy support. This includes a mix-in module for the proxy's
499
378
  // operations and a class for the proxy itself.
500
379
  //
501
- if(!p->isLocal())
380
+ if(!p->isLocal() && isAbstract)
502
381
  {
503
382
  _out << nl << "module " << name << "Prx_mixin";
504
383
  _out.inc();
505
384
  for(ClassList::iterator cli = bases.begin(); cli != bases.end(); ++cli)
506
385
  {
507
- _out << nl << "include " << getAbsolute(*cli, IdentToUpper) << "Prx_mixin";
386
+ ClassDefPtr def = *cli;
387
+ if(def->isInterface() || def->allOperations().size() > 0)
388
+ {
389
+ _out << nl << "include " << getAbsolute(*cli, IdentToUpper) << "Prx_mixin";
390
+ }
508
391
  }
509
392
  for(OperationList::iterator oli = ops.begin(); oli != ops.end(); ++oli)
510
393
  {
@@ -534,38 +417,21 @@ Slice::Ruby::CodeVisitor::visitClassDefStart(const ClassDefPtr& p)
534
417
  {
535
418
  _out << inParams << ", ";
536
419
  }
537
- _out << "_ctx=nil)";
420
+ const string contextParamName = getEscapedParamName(*oli, "context");
421
+ _out << contextParamName << "=nil)";
538
422
  _out.inc();
539
- _out << nl << name << "_mixin::OP_" << (*oli)->name() << ".invoke(self, [" << inParams;
540
- _out << "], _ctx)";
423
+ _out << nl << name << "Prx_mixin::OP_" << (*oli)->name() << ".invoke(self, [" << inParams;
424
+ _out << "], " << contextParamName << ")";
541
425
  _out.dec();
542
426
  _out << nl << "end";
543
427
  }
544
428
  _out.dec();
545
429
  _out << nl << "end"; // End of mix-in module for proxy.
546
430
 
547
- _out << nl << "class " << name << "Prx < ::Ice::ObjectPrx";
431
+ _out << sp << nl << "class " << name << "Prx < ::Ice::ObjectPrx";
548
432
  _out.inc();
433
+ _out << nl << "include ::Ice::Proxy_mixin";
549
434
  _out << nl << "include " << name << "Prx_mixin";
550
-
551
- _out << sp << nl << "def " << name << "Prx.checkedCast(proxy, facetOrCtx=nil, _ctx=nil)";
552
- _out.inc();
553
- _out << nl << "ice_checkedCast(proxy, '" << scoped << "', facetOrCtx, _ctx)";
554
- _out.dec();
555
- _out << nl << "end";
556
-
557
- _out << sp << nl << "def " << name << "Prx.uncheckedCast(proxy, facet=nil)";
558
- _out.inc();
559
- _out << nl << "ice_uncheckedCast(proxy, facet)";
560
- _out.dec();
561
- _out << nl << "end";
562
-
563
- _out << nl << "def " << name << "Prx.ice_staticId()";
564
- _out.inc();
565
- _out << nl << "'" << scoped << "'";
566
- _out.dec();
567
- _out << nl << "end";
568
-
569
435
  _out.dec();
570
436
  _out << nl << "end"; // End of proxy class.
571
437
  }
@@ -573,7 +439,12 @@ Slice::Ruby::CodeVisitor::visitClassDefStart(const ClassDefPtr& p)
573
439
  //
574
440
  // Emit type descriptions.
575
441
  //
576
- _out << sp << nl << "if not defined?(" << getAbsolute(p, IdentToUpper, "T_") << ')';
442
+ _out << sp << nl << "if not defined?(" << getAbsolute(p, IdentToUpper, "T_");
443
+ if(isInterface)
444
+ {
445
+ _out << "Prx";
446
+ }
447
+ _out << ')';
577
448
  _out.inc();
578
449
  if(p->isLocal())
579
450
  {
@@ -582,16 +453,22 @@ Slice::Ruby::CodeVisitor::visitClassDefStart(const ClassDefPtr& p)
582
453
  else
583
454
  {
584
455
  _out << nl << "T_" << name << " = ::Ice::__declareClass('" << scoped << "')";
585
- _out << nl << "T_" << name << "Prx = ::Ice::__declareProxy('" << scoped << "')";
456
+ if(isAbstract)
457
+ {
458
+ _out << nl << "T_" << name << "Prx = ::Ice::__declareProxy('" << scoped << "')";
459
+ }
586
460
  }
587
461
  _out.dec();
588
462
  _out << nl << "end";
589
463
  _classHistory.insert(scoped); // Avoid redundant declarations.
590
464
 
591
- bool isAbstract = p->isInterface() || p->allOperations().size() > 0; // Don't use isAbstract() here - see bug 3739
592
465
  const bool preserved = p->hasMetaData("preserve-slice") || p->inheritsMetaData("preserve-slice");
593
- _out << sp << nl << "T_" << name << ".defineClass(" << name << ", " << p->compactId() << ", "
594
- << (isAbstract ? "true" : "false") << ", " << (preserved ? "true" : "false") << ", ";
466
+
467
+ _out << sp << nl << "T_" << name << ".defineClass("
468
+ << (isInterface ? "::Ice::Value" : name) << ", "
469
+ << p->compactId() << ", "
470
+ << (preserved ? "true" : "false") << ", "
471
+ << (isInterface ? "true" : "false") << ", ";
595
472
  if(!base)
596
473
  {
597
474
  _out << "nil";
@@ -600,25 +477,7 @@ Slice::Ruby::CodeVisitor::visitClassDefStart(const ClassDefPtr& p)
600
477
  {
601
478
  _out << getAbsolute(base, IdentToUpper, "T_");
602
479
  }
603
- _out << ", [";
604
- //
605
- // Interfaces
606
- //
607
- {
608
- int interfaceCount = 0;
609
- for(ClassList::const_iterator q = bases.begin(); q != bases.end(); ++q)
610
- {
611
- if((*q)->isInterface())
612
- {
613
- if(interfaceCount > 0)
614
- {
615
- _out << ", ";
616
- }
617
- _out << getAbsolute(*q, IdentToUpper, "T_");
618
- ++interfaceCount;
619
- }
620
- }
621
- }
480
+ _out << ", ";
622
481
  //
623
482
  // Members
624
483
  //
@@ -628,7 +487,7 @@ Slice::Ruby::CodeVisitor::visitClassDefStart(const ClassDefPtr& p)
628
487
  //
629
488
  // where MemberType is either a primitive type constant (T_INT, etc.) or the id of a constructed type.
630
489
  //
631
- _out << "], [";
490
+ _out << "[";
632
491
  if(members.size() > 1)
633
492
  {
634
493
  _out.inc();
@@ -653,7 +512,6 @@ Slice::Ruby::CodeVisitor::visitClassDefStart(const ClassDefPtr& p)
653
512
  _out << nl;
654
513
  }
655
514
  _out << "])";
656
- _out << nl << name << "_mixin::ICE_TYPE = T_" << name;
657
515
 
658
516
  //
659
517
  // Define each operation. The arguments to __defineOperation are:
@@ -663,10 +521,39 @@ Slice::Ruby::CodeVisitor::visitClassDefStart(const ClassDefPtr& p)
663
521
  // where InParams and OutParams are arrays of type descriptions, and Exceptions
664
522
  // is an array of exception types.
665
523
  //
666
- if(!p->isLocal())
524
+ if(!p->isLocal() && isAbstract)
667
525
  {
668
- _out << sp << nl << "T_" << name << "Prx.defineProxy(" << name << "Prx, T_" << name << ')';
669
- _out << nl << name << "Prx::ICE_TYPE = T_" << name << "Prx";
526
+ _out << sp << nl << "T_" << name << "Prx.defineProxy(" << name << "Prx, ";
527
+
528
+ if(!base || (!base->isInterface() && base->allOperations().size() == 0))
529
+ {
530
+ _out << "nil";
531
+ }
532
+ else
533
+ {
534
+ _out << getAbsolute(base, IdentToUpper, "T_") << "Prx";
535
+ }
536
+
537
+ //
538
+ // Interfaces
539
+ //
540
+ _out << ", [";
541
+ {
542
+ int interfaceCount = 0;
543
+ for(ClassList::const_iterator q = bases.begin(); q != bases.end(); ++q)
544
+ {
545
+ if((*q)->isInterface())
546
+ {
547
+ if(interfaceCount > 0)
548
+ {
549
+ _out << ", ";
550
+ }
551
+ _out << getAbsolute(*q, IdentToUpper, "T_") << "Prx";
552
+ ++interfaceCount;
553
+ }
554
+ }
555
+ }
556
+ _out << "])";
670
557
 
671
558
  if(!ops.empty())
672
559
  {
@@ -691,7 +578,7 @@ Slice::Ruby::CodeVisitor::visitClassDefStart(const ClassDefPtr& p)
691
578
  break;
692
579
  }
693
580
 
694
- _out << nl << name << "_mixin::OP_" << (*s)->name() << " = ::Ice::__defineOperation('"
581
+ _out << nl << name << "Prx_mixin::OP_" << (*s)->name() << " = ::Ice::__defineOperation('"
695
582
  << (*s)->name() << "', ";
696
583
  switch((*s)->mode())
697
584
  {
@@ -790,7 +677,7 @@ Slice::Ruby::CodeVisitor::visitClassDefStart(const ClassDefPtr& p)
790
677
  {
791
678
  msg = deprecateMetadata.substr(pos + 1);
792
679
  }
793
- _out << nl << name << "_mixin::OP_" << (*s)->name() << ".deprecate(\"" << msg << "\")";
680
+ _out << nl << name << "Prx_mixin::OP_" << (*s)->name() << ".deprecate(\"" << msg << "\")";
794
681
  }
795
682
  }
796
683
  }
@@ -880,7 +767,7 @@ Slice::Ruby::CodeVisitor::visitExceptionStart(const ExceptionPtr& p)
880
767
  //
881
768
  _out << sp << nl << "def to_s";
882
769
  _out.inc();
883
- _out << nl << "'" << scoped.substr(2) << "'";
770
+ _out << nl << "'" << scoped << "'";
884
771
  _out.dec();
885
772
  _out << nl << "end";
886
773
 
@@ -947,7 +834,6 @@ Slice::Ruby::CodeVisitor::visitExceptionStart(const ExceptionPtr& p)
947
834
  _out << nl;
948
835
  }
949
836
  _out << "])";
950
- _out << nl << name << "::ICE_TYPE = T_" << name;
951
837
 
952
838
  _out.dec();
953
839
  _out << nl << "end"; // if not defined?()
@@ -978,6 +864,7 @@ Slice::Ruby::CodeVisitor::visitStructStart(const StructPtr& p)
978
864
  _out.inc();
979
865
  _out << nl << "class " << name;
980
866
  _out.inc();
867
+ _out << nl << "include ::Ice::Inspect_mixin";
981
868
  if(!memberList.empty())
982
869
  {
983
870
  _out << nl << "def initialize(";
@@ -1035,15 +922,6 @@ Slice::Ruby::CodeVisitor::visitStructStart(const StructPtr& p)
1035
922
  _out.dec();
1036
923
  _out << nl << "end";
1037
924
 
1038
- //
1039
- // inspect
1040
- //
1041
- _out << sp << nl << "def inspect";
1042
- _out.inc();
1043
- _out << nl << "::Ice::__stringify(self, T_" << name << ")";
1044
- _out.dec();
1045
- _out << nl << "end";
1046
-
1047
925
  //
1048
926
  // read/write accessors for data members.
1049
927
  //
@@ -1143,7 +1021,7 @@ Slice::Ruby::CodeVisitor::visitEnum(const EnumPtr& p)
1143
1021
  {
1144
1022
  string scoped = p->scoped();
1145
1023
  string name = fixIdent(p->name(), IdentToUpper);
1146
- EnumeratorList enums = p->getEnumerators();
1024
+ EnumeratorList enums = p->enumerators();
1147
1025
 
1148
1026
  _out << sp << nl << "if not defined?(" << getAbsolute(p, IdentToUpper) << ')';
1149
1027
  _out.inc();
@@ -1207,15 +1085,6 @@ Slice::Ruby::CodeVisitor::visitEnum(const EnumPtr& p)
1207
1085
  _out.dec();
1208
1086
  _out << nl << "end";
1209
1087
 
1210
- //
1211
- // inspect
1212
- //
1213
- _out << sp << nl << "def inspect";
1214
- _out.inc();
1215
- _out << nl << "@name + \"(#{@value})\"";
1216
- _out.dec();
1217
- _out << nl << "end";
1218
-
1219
1088
  //
1220
1089
  // each
1221
1090
  //
@@ -1328,9 +1197,10 @@ Slice::Ruby::CodeVisitor::writeType(const TypePtr& p)
1328
1197
  _out << "::Ice::T_string";
1329
1198
  break;
1330
1199
  }
1200
+ case Builtin::KindValue:
1331
1201
  case Builtin::KindObject:
1332
1202
  {
1333
- _out << "::Ice::T_Object";
1203
+ _out << "::Ice::T_Value";
1334
1204
  break;
1335
1205
  }
1336
1206
  case Builtin::KindObjectProxy:
@@ -1350,7 +1220,15 @@ Slice::Ruby::CodeVisitor::writeType(const TypePtr& p)
1350
1220
  ProxyPtr prx = ProxyPtr::dynamicCast(p);
1351
1221
  if(prx)
1352
1222
  {
1353
- _out << getAbsolute(prx->_class(), IdentToUpper, "T_") << "Prx";
1223
+ ClassDefPtr def = prx->_class()->definition();
1224
+ if(def->isInterface() || def->allOperations().size() > 0)
1225
+ {
1226
+ _out << getAbsolute(prx->_class(), IdentToUpper, "T_") << "Prx";
1227
+ }
1228
+ else
1229
+ {
1230
+ _out << "::Ice::T_ObjectPrx";
1231
+ }
1354
1232
  return;
1355
1233
  }
1356
1234
 
@@ -1388,6 +1266,7 @@ Slice::Ruby::CodeVisitor::getInitializer(const DataMemberPtr& m)
1388
1266
  {
1389
1267
  return "''";
1390
1268
  }
1269
+ case Builtin::KindValue:
1391
1270
  case Builtin::KindObject:
1392
1271
  case Builtin::KindObjectProxy:
1393
1272
  case Builtin::KindLocalObject:
@@ -1400,7 +1279,7 @@ Slice::Ruby::CodeVisitor::getInitializer(const DataMemberPtr& m)
1400
1279
  EnumPtr en = EnumPtr::dynamicCast(p);
1401
1280
  if(en)
1402
1281
  {
1403
- EnumeratorList enums = en->getEnumerators();
1282
+ EnumeratorList enums = en->enumerators();
1404
1283
  return getAbsolute(en, IdentToUpper) + "::" + fixIdent(enums.front()->name(), IdentToUpper);
1405
1284
  }
1406
1285
 
@@ -1455,152 +1334,12 @@ Slice::Ruby::CodeVisitor::writeConstantValue(const TypePtr& type, const SyntaxTr
1455
1334
  }
1456
1335
  case Slice::Builtin::KindString:
1457
1336
  {
1458
- //
1459
- // Expand strings into the basic source character set. We can't use isalpha() and the like
1460
- // here because they are sensitive to the current locale.
1461
- //
1462
- static const string basicSourceChars = "abcdefghijklmnopqrstuvwxyz"
1463
- "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
1464
- "0123456789"
1465
- "_{}[]#()<>%:;.?*+-/^&|~!=, '";
1466
- static const set<char> charSet(basicSourceChars.begin(), basicSourceChars.end());
1467
-
1468
- _out << "\""; // Opening "
1469
-
1470
- for(size_t i = 0; i < value.size();)
1471
- {
1472
- char c = value[i];
1473
- switch(c)
1474
- {
1475
- case '"':
1476
- {
1477
- _out << "\\\"";
1478
- break;
1479
- }
1480
- case '\\':
1481
- {
1482
- string s = "\\";
1483
- size_t j = i + 1;
1484
- for(; j < value.size(); ++j)
1485
- {
1486
- if(value[j] != '\\')
1487
- {
1488
- break;
1489
- }
1490
- s += "\\";
1491
- }
1492
-
1493
- //
1494
- // An even number of slash \ will escape the backslash and
1495
- // the codepoint will be interpreted as its charaters
1496
- //
1497
- // \\u00000041 - ['\\', 'u', '0', '0', '0', '0', '0', '0', '4', '1']
1498
- // \\\u00000041 - ['\\', 'A'] (41 is the codepoint for 'A')
1499
- //
1500
- if(s.size() % 2 != 0 && (value[j] == 'U' || value[j] == 'u'))
1501
- {
1502
- //
1503
- // Convert codepoint to UTF8 bytes and write the escaped bytes
1504
- //
1505
- _out << s.substr(0, s.size() - 1);
1506
-
1507
- size_t sz = value[j] == 'U' ? 8 : 4;
1508
- string codepoint = value.substr(j + 1, sz);
1509
- assert(codepoint.size() == sz);
1510
- IceUtil::Int64 v = IceUtilInternal::strToInt64(codepoint.c_str(), 0, 16);
1511
-
1512
- vector<unsigned int> u32buffer;
1513
- u32buffer.push_back(static_cast<unsigned int>(v));
1514
-
1515
- vector<unsigned char> u8buffer;
1516
- IceUtilInternal::ConversionResult result = convertUTF32ToUTF8(u32buffer, u8buffer, IceUtil::lenientConversion);
1517
- switch(result)
1518
- {
1519
- case conversionOK:
1520
- break;
1521
- case sourceExhausted:
1522
- throw IceUtil::IllegalConversionException(__FILE__, __LINE__, "string source exhausted");
1523
- case sourceIllegal:
1524
- throw IceUtil::IllegalConversionException(__FILE__, __LINE__, "string source illegal");
1525
- default:
1526
- {
1527
- assert(0);
1528
- throw IceUtil::IllegalConversionException(__FILE__, __LINE__);
1529
- }
1530
- }
1531
-
1532
- ostringstream s;
1533
- for(vector<unsigned char>::const_iterator q = u8buffer.begin(); q != u8buffer.end(); ++q)
1534
- {
1535
- s << "\\";
1536
- s.fill('0');
1537
- s.width(3);
1538
- s << oct;
1539
- s << static_cast<unsigned int>(*q);
1540
- }
1541
- _out << s.str();
1542
-
1543
- i = j + 1 + sz;
1544
- }
1545
- else
1546
- {
1547
- _out << s;
1548
- i = j;
1549
- }
1550
- continue;
1551
- }
1552
- case '\r':
1553
- {
1554
- _out << "\\r";
1555
- break;
1556
- }
1557
- case '\n':
1558
- {
1559
- _out << "\\n";
1560
- break;
1561
- }
1562
- case '\t':
1563
- {
1564
- _out << "\\t";
1565
- break;
1566
- }
1567
- case '\b':
1568
- {
1569
- _out << "\\b";
1570
- break;
1571
- }
1572
- case '\f':
1573
- {
1574
- _out << "\\f";
1575
- break;
1576
- }
1577
- default:
1578
- {
1579
- if(charSet.find(c) == charSet.end())
1580
- {
1581
- unsigned char uc = c; // Char may be signed, so make it positive.
1582
- stringstream s;
1583
- s << "\\"; // Print as octal if not in basic source character set.
1584
- s.flags(ios_base::oct);
1585
- s.width(3);
1586
- s.fill('0');
1587
- s << static_cast<unsigned>(uc);
1588
- _out << s.str();
1589
- }
1590
- else
1591
- {
1592
- _out << c; // Print normally if in basic source character set.
1593
- }
1594
- break;
1595
- }
1596
- }
1597
- ++i;
1598
- }
1599
-
1600
- _out << "\""; // Closing "
1337
+ // RubyUCN available in Ruby 1.9 or greater
1338
+ _out << "\"" << toStringLiteral(value, "\a\b\f\n\r\t\v\x20\x1b", "", EC6UCN, 0) << "\"";
1601
1339
  break;
1602
1340
  }
1603
1341
 
1342
+ case Slice::Builtin::KindValue:
1604
1343
  case Slice::Builtin::KindObject:
1605
1344
  case Slice::Builtin::KindObjectProxy:
1606
1345
  case Slice::Builtin::KindLocalObject:
@@ -1609,16 +1348,9 @@ Slice::Ruby::CodeVisitor::writeConstantValue(const TypePtr& type, const SyntaxTr
1609
1348
  }
1610
1349
  else if(en)
1611
1350
  {
1612
- _out << getAbsolute(en, IdentToUpper) << "::";
1613
- string::size_type colon = value.rfind(':');
1614
- if(colon != string::npos)
1615
- {
1616
- _out << fixIdent(value.substr(colon + 1), IdentToUpper);
1617
- }
1618
- else
1619
- {
1620
- _out << fixIdent(value, IdentToUpper);
1621
- }
1351
+ EnumeratorPtr lte = EnumeratorPtr::dynamicCast(valueType);
1352
+ assert(lte);
1353
+ _out << getAbsolute(lte, IdentToUpper);
1622
1354
  }
1623
1355
  else
1624
1356
  {
@@ -1826,7 +1558,7 @@ Slice::Ruby::printHeader(IceUtilInternal::Output& out)
1826
1558
  static const char* header =
1827
1559
  "# **********************************************************************\n"
1828
1560
  "#\n"
1829
- "# Copyright (c) 2003-2018 ZeroC, Inc. All rights reserved.\n"
1561
+ "# Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.\n"
1830
1562
  "#\n"
1831
1563
  "# This copy of Ice is licensed to you under the terms described in the\n"
1832
1564
  "# ICE_LICENSE file included in this distribution.\n"