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,146 +0,0 @@
1
- // **********************************************************************
2
- //
3
- // Copyright (c) 2003-2018 ZeroC, Inc. All rights reserved.
4
- //
5
- // This copy of Ice is licensed to you under the terms described in the
6
- // ICE_LICENSE file included in this distribution.
7
- //
8
- // **********************************************************************
9
-
10
- #include <Slice/DotNetNames.h>
11
- #include <ctype.h>
12
- #include <cstring>
13
-
14
- using namespace std;
15
-
16
- namespace Slice
17
- {
18
-
19
- namespace DotNet
20
- {
21
-
22
- struct Node
23
- {
24
- const char** names;
25
- const Node** parents;
26
- };
27
-
28
- static const char* ObjectNames[] =
29
- {
30
- "Equals", "Finalize", "GetHashCode", "GetType",
31
- "MemberwiseClone", "ReferenceEquals", "ToString", 0
32
- };
33
- static const Node* ObjectParents[] =
34
- {
35
- 0
36
- };
37
- static const Node ObjectNode =
38
- {
39
- ObjectNames, &ObjectParents[0]
40
- };
41
-
42
- static const char* ICloneableNames[] =
43
- {
44
- "Clone", 0
45
- };
46
- static const Node* ICloneableParents[] =
47
- {
48
- &ObjectNode, 0
49
- };
50
- static const Node ICloneableNode =
51
- {
52
- ICloneableNames, &ICloneableParents[0]
53
- };
54
-
55
- static const char* ExceptionNames[] =
56
- {
57
- "Data", "GetBaseException", "GetObjectData", "HelpLink", "HResult", "InnerException",
58
- "Message", "Source", "StackTrace", "TargetSite", 0
59
- };
60
- static const Node* ExceptionParents[] =
61
- {
62
- &ObjectNode, 0
63
- };
64
- static const Node ExceptionNode =
65
- {
66
- ExceptionNames, &ExceptionParents[0]
67
- };
68
-
69
- //
70
- // Must be kept in same order as definition of BaseType in header file!
71
- //
72
- static const Node* nodes[] =
73
- {
74
- &ObjectNode, &ICloneableNode, &ExceptionNode
75
- };
76
-
77
- static bool
78
- ciEquals(const string& s, const char* p)
79
- {
80
- if(s.size() != strlen(p))
81
- {
82
- return false;
83
- }
84
- string::const_iterator i = s.begin();
85
- while(i != s.end())
86
- {
87
- if(tolower(static_cast<unsigned char>(*i++)) != tolower(static_cast<unsigned char>(*p++)))
88
- {
89
- return false;
90
- }
91
- }
92
- return true;
93
- }
94
-
95
- const char* manglePrefix = "ice_";
96
- const char* mangleSuffix = "_";
97
-
98
- static bool
99
- mangle(const string& s, const Node* np, string& newName)
100
- {
101
- const char** namep = np->names;
102
- while(*namep)
103
- {
104
- if(ciEquals(s, *namep))
105
- {
106
- newName = manglePrefix + s + mangleSuffix;
107
- return true;
108
- }
109
- ++namep;
110
- }
111
- const Node** parentp = np->parents;
112
- while(*parentp)
113
- {
114
- if(mangle(s, *parentp, newName))
115
- {
116
- return true;
117
- }
118
- ++parentp;
119
- }
120
- return false;
121
- }
122
-
123
- }
124
-
125
- }
126
-
127
- string
128
- Slice::DotNet::mangleName(const string& s, int baseTypes)
129
- {
130
- if(baseTypes == 0)
131
- {
132
- return s;
133
- }
134
- string newName;
135
- for(unsigned int mask = 1, i=0; mask < END; mask <<= 1, ++i)
136
- {
137
- if(baseTypes & mask)
138
- {
139
- if(mangle(s, nodes[i], newName))
140
- {
141
- return newName;
142
- }
143
- }
144
- }
145
- return s;
146
- }
@@ -1,1310 +0,0 @@
1
- // **********************************************************************
2
- //
3
- // Copyright (c) 2003-2018 ZeroC, Inc. All rights reserved.
4
- //
5
- // This copy of Ice is licensed to you under the terms described in the
6
- // ICE_LICENSE file included in this distribution.
7
- //
8
- // **********************************************************************
9
-
10
- #include <Slice/ObjCUtil.h>
11
- #include <Slice/Util.h>
12
- #include <IceUtil/Functional.h>
13
- #include <IceUtil/StringUtil.h>
14
-
15
- #include <sys/types.h>
16
- #include <sys/stat.h>
17
-
18
- #ifdef _WIN32
19
- #include <direct.h>
20
- #endif
21
-
22
- #ifndef _WIN32
23
- #include <unistd.h>
24
- #endif
25
-
26
- using namespace std;
27
- using namespace Slice;
28
- using namespace IceUtil;
29
- using namespace IceUtilInternal;
30
-
31
- Slice::ObjCGenerator::ModuleMap Slice::ObjCGenerator::_modules;
32
-
33
- static string
34
- lookupKwd(const string& name, int baseType, bool mangleCasts = false)
35
- {
36
- //
37
- // All lists in this method *must* be kept in case-insensitive
38
- // alphabetical order.
39
- //
40
- static string keywordList[] =
41
- {
42
- "auto", "BOOL", "break", "bycopy", "byref", "case", "char", "const", "continue",
43
- "default", "do", "double", "else", "enum", "extern", "float", "for", "goto",
44
- "id", "if", "IMP", "in", "inline", "inout", "int", "long", "nil", "NO", "oneway", "out",
45
- "register", "return", "SEL", "self", "short", "signed", "sizeof", "static", "struct", "super", "switch",
46
- "typedef", "union", "unsigned", "void", "volatile", "while", "YES"
47
- };
48
-
49
- static string nsObjectList[] =
50
- {
51
- "autorelease", "class", "classForCoder", "copy", "dealloc", "description", "hash", "init", "isa",
52
- "isProxy", "mutableCopy", "release", "retain", "retainCount", "superclass", "zone"
53
- };
54
- static string nsExceptionList[] =
55
- {
56
- "callStackReturnAddresses", "name", "raise", "reason", "reserved", "userInfo",
57
- };
58
-
59
- bool found = binary_search(&keywordList[0],
60
- &keywordList[sizeof(keywordList) / sizeof(*keywordList)],
61
- name,
62
- Slice::CICompare());
63
- if(!found)
64
- {
65
- switch(baseType)
66
- {
67
- case BaseTypeNone:
68
- break;
69
-
70
- case BaseTypeException:
71
- found = binary_search(&nsExceptionList[0],
72
- &nsExceptionList[sizeof(nsExceptionList) / sizeof(*nsExceptionList)],
73
- name,
74
- Slice::CICompare());
75
- if(found)
76
- {
77
- break;
78
- }
79
-
80
- case BaseTypeObject:
81
- found = binary_search(&nsObjectList[0],
82
- &nsObjectList[sizeof(nsObjectList) / sizeof(*nsObjectList)],
83
- name,
84
- Slice::CICompare());
85
- break;
86
- }
87
- }
88
- if(found || (mangleCasts && (name == "checkedCast" || name == "uncheckedCast")))
89
- {
90
- return name + "_";
91
- }
92
- return name;
93
- }
94
-
95
- static string
96
- lookupParamIdKwd(const string& name)
97
- {
98
- //
99
- // All lists in this method *must* be kept in case-insensitive
100
- // alphabetical order.
101
- //
102
- static string keywordList[] =
103
- {
104
- "nil", "NO", "YES"
105
- };
106
- if(binary_search(&keywordList[0],
107
- &keywordList[sizeof(keywordList) / sizeof(*keywordList)],
108
- name,
109
- Slice::CICompare()))
110
- {
111
- return name + "_";
112
- }
113
- return name;
114
- }
115
-
116
- bool
117
- Slice::ObjCGenerator::addModule(const ModulePtr& m, const string& name)
118
- {
119
- string scoped = m->scoped();
120
- ModuleMap::const_iterator i = _modules.find(scoped);
121
- if(i != _modules.end())
122
- {
123
- if(i->second.name != name)
124
- {
125
- return false;
126
- }
127
- }
128
- else
129
- {
130
- ModulePrefix mp;
131
- mp.m = m;
132
- mp.name = name;
133
- _modules[scoped] = mp;
134
- }
135
- return true;
136
- }
137
-
138
- Slice::ObjCGenerator::ModulePrefix
139
- Slice::ObjCGenerator::modulePrefix(const ModulePtr& m)
140
- {
141
- return _modules[m->scoped()];
142
- }
143
-
144
- string
145
- Slice::ObjCGenerator::moduleName(const ModulePtr& m)
146
- {
147
- return _modules[m->scoped()].name;
148
- }
149
-
150
- ModulePtr
151
- Slice::ObjCGenerator::findModule(const ContainedPtr& cont, int baseTypes, bool mangleCasts)
152
- {
153
- ModulePtr m = ModulePtr::dynamicCast(cont);
154
- ContainerPtr container = cont->container();
155
- while(container && !m)
156
- {
157
- ContainedPtr contained = ContainedPtr::dynamicCast(container);
158
- container = contained->container();
159
- m = ModulePtr::dynamicCast(contained);
160
- }
161
- assert(m);
162
- return m;
163
- }
164
-
165
- //
166
- // If the passed name is a scoped name, return the identical scoped
167
- // name, but with all components that are Objective-C keywords
168
- // replaced by their prefixed version; otherwise, if the passed name
169
- // is not scoped, but an Objective-C keyword, return the prefixed
170
- // name; otherwise, check if the name is one of the method names of
171
- // baseTypes; if so, returned the prefixed name; otherwise, return the
172
- // name unchanged.
173
- //
174
- string
175
- Slice::ObjCGenerator::fixId(const string& name, int baseTypes, bool mangleCasts)
176
- {
177
- if(name.empty())
178
- {
179
- return name;
180
- }
181
- return lookupKwd(name, baseTypes, mangleCasts);
182
- }
183
-
184
- string
185
- Slice::ObjCGenerator::fixId(const ContainedPtr& cont, int baseTypes, bool mangleCasts)
186
- {
187
- return fixId(cont->name(), baseTypes, mangleCasts);
188
- }
189
-
190
- string
191
- Slice::ObjCGenerator::fixName(const ContainedPtr& cont, int baseTypes, bool mangleCasts)
192
- {
193
- return moduleName(findModule(cont, baseTypes, mangleCasts)) + cont->name();
194
- }
195
-
196
- string
197
- Slice::ObjCGenerator::getParamId(const ContainedPtr& param)
198
- {
199
- string n;
200
- if(ParamDeclPtr::dynamicCast(param) && param->findMetaData("objc:param:", n))
201
- {
202
- return lookupParamIdKwd(n.substr(11));
203
- }
204
- else
205
- {
206
- return lookupParamIdKwd(param->name());
207
- }
208
- }
209
-
210
- string
211
- Slice::ObjCGenerator::getFactoryMethod(const ContainedPtr& p, bool deprecated)
212
- {
213
- ClassDefPtr def = ClassDefPtr::dynamicCast(p);
214
- if(def && def->declaration()->isLocal())
215
- {
216
- deprecated = false; // Local classes don't have this issue since they were added after this fix.
217
- }
218
-
219
- //
220
- // If deprecated is true, we return uDPConnectionInfo for a class
221
- // named UDPConnectionInfo, return udpConnectionInfo otherwise.
222
- //
223
- string name = fixId(p->name());
224
- if(name.empty())
225
- {
226
- return name;
227
- }
228
- else if(deprecated || name.size() < 2 || !isupper(*(name.begin() + 1)))
229
- {
230
- *name.begin() = tolower(*name.begin());
231
- }
232
- else
233
- {
234
- for(string::iterator p = name.begin(); p != name.end() && isalpha(*p); ++p)
235
- {
236
- if(p != name.end() - 1 && isalpha(*(p + 1)) && !isupper(*(p + 1)))
237
- {
238
- break;
239
- }
240
- *p = tolower(*p);
241
- }
242
- }
243
- return name;
244
- }
245
-
246
- string
247
- Slice::ObjCGenerator::typeToString(const TypePtr& type)
248
- {
249
- if(!type)
250
- {
251
- return "void";
252
- }
253
-
254
- static const char* builtinTable[] =
255
- {
256
- "ICEByte",
257
- "BOOL",
258
- "ICEShort",
259
- "ICEInt",
260
- "ICELong",
261
- "ICEFloat",
262
- "ICEDouble",
263
- "NSString",
264
- "ICEObject",
265
- "id<ICEObjectPrx>",
266
- "id" // Dummy--we don't support Slice local Object
267
- };
268
-
269
- BuiltinPtr builtin = BuiltinPtr::dynamicCast(type);
270
- if(builtin)
271
- {
272
- return builtinTable[builtin->kind()];
273
- }
274
-
275
- ProxyPtr proxy = ProxyPtr::dynamicCast(type);
276
- if(proxy)
277
- {
278
- string mName = moduleName(findModule(proxy->_class()));
279
- return "id<" + mName + (proxy->_class()->name()) + "Prx>";
280
- }
281
-
282
- SequencePtr seq = SequencePtr::dynamicCast(type);
283
- if(seq)
284
- {
285
- return fixName(seq);
286
- }
287
-
288
- DictionaryPtr d = DictionaryPtr::dynamicCast(type);
289
- if(d)
290
- {
291
- return fixName(d);
292
- }
293
-
294
- ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type);
295
- if(cl)
296
- {
297
- if(cl->isInterface())
298
- {
299
- if(cl->isLocal())
300
- {
301
- return "id<" + fixName(cl) + ">";
302
- }
303
- else
304
- {
305
- return "ICEObject";
306
- }
307
- }
308
- else if(cl->isLocal())
309
- {
310
- string name = fixName(cl);
311
- return name + "<" + name + ">";
312
- }
313
- }
314
-
315
- ContainedPtr contained = ContainedPtr::dynamicCast(type);
316
- if(contained)
317
- {
318
- return fixName(contained);
319
- }
320
-
321
- return "???";
322
- }
323
-
324
- string
325
- Slice::ObjCGenerator::inTypeToString(const TypePtr& type, bool optional, bool autoreleasing, bool reference)
326
- {
327
- string s;
328
- if(optional)
329
- {
330
- s = "id";
331
- }
332
- else
333
- {
334
- s = typeToString(type);
335
- if(mapsToPointerType(type))
336
- {
337
- s += "*";
338
- }
339
- }
340
- if(autoreleasing && !isValueType(type))
341
- {
342
- s += " ICE_AUTORELEASING_QUALIFIER";
343
- }
344
- if(reference)
345
- {
346
- s += "*";
347
- }
348
- return s;
349
- }
350
-
351
- string
352
- Slice::ObjCGenerator::outTypeToString(const TypePtr& type, bool optional, bool autoreleasing, bool reference)
353
- {
354
- if(!type)
355
- {
356
- return "void";
357
- }
358
-
359
- string s;
360
- if(optional)
361
- {
362
- s = "id";
363
- }
364
- else
365
- {
366
- SequencePtr seq = SequencePtr::dynamicCast(type);
367
- DictionaryPtr d = DictionaryPtr::dynamicCast(type);
368
- if(isString(type))
369
- {
370
- s = "NSMutableString";
371
- }
372
- else if(seq)
373
- {
374
- string prefix = moduleName(findModule(seq));
375
- s = prefix + "Mutable" + seq->name();
376
- }
377
- else if(d)
378
- {
379
- string prefix = moduleName(findModule(d));
380
- s = prefix + "Mutable" + d->name();
381
- }
382
- else
383
- {
384
- s = typeToString(type);
385
- }
386
- if(mapsToPointerType(type))
387
- {
388
- s += "*";
389
- }
390
- }
391
- if(autoreleasing && (!isValueType(type) || optional))
392
- {
393
- s += " ICE_AUTORELEASING_QUALIFIER";
394
- }
395
- if(reference)
396
- {
397
- s += "*";
398
- }
399
- return s;
400
- }
401
-
402
- string
403
- Slice::ObjCGenerator::typeToObjCTypeString(const TypePtr& type)
404
- {
405
- ProxyPtr proxy = ProxyPtr::dynamicCast(type);
406
- if(proxy)
407
- {
408
- return moduleName(findModule(proxy->_class())) + (proxy->_class()->name()) + "Prx";
409
- }
410
- else
411
- {
412
- return typeToString(type);
413
- }
414
- }
415
-
416
- bool
417
- Slice::ObjCGenerator::isValueType(const TypePtr& type)
418
- {
419
- if(!type)
420
- {
421
- return true;
422
- }
423
- BuiltinPtr builtin = BuiltinPtr::dynamicCast(type);
424
- if(builtin)
425
- {
426
- switch(builtin->kind())
427
- {
428
- case Builtin::KindString:
429
- case Builtin::KindObject:
430
- case Builtin::KindObjectProxy:
431
- case Builtin::KindLocalObject:
432
- {
433
- return false;
434
- break;
435
- }
436
- default:
437
- {
438
- return true;
439
- break;
440
- }
441
- }
442
- }
443
- if(EnumPtr::dynamicCast(type))
444
- {
445
- return true;
446
- }
447
- return false;
448
- }
449
-
450
- bool
451
- Slice::ObjCGenerator::isString(const TypePtr& type)
452
- {
453
- if(!type)
454
- {
455
- return false;
456
- }
457
- BuiltinPtr builtin = BuiltinPtr::dynamicCast(type);
458
- return builtin && builtin->kind() == Builtin::KindString;
459
- }
460
- bool
461
- Slice::ObjCGenerator::isClass(const TypePtr& type)
462
- {
463
- BuiltinPtr builtin = BuiltinPtr::dynamicCast(type);
464
- if(builtin)
465
- {
466
- return builtin->kind() == Builtin::KindObject;
467
- }
468
- return ClassDeclPtr::dynamicCast(type);
469
- }
470
-
471
- bool
472
- Slice::ObjCGenerator::mapsToPointerType(const TypePtr& type)
473
- {
474
- if(isValueType(type))
475
- {
476
- return false;
477
- }
478
- BuiltinPtr builtin = BuiltinPtr::dynamicCast(type);
479
- if(builtin)
480
- {
481
- return builtin->kind() != Builtin::KindObjectProxy && builtin->kind() != Builtin::KindLocalObject;
482
- }
483
- ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type);
484
- if(cl && cl->isInterface())
485
- {
486
- if(cl->isLocal())
487
- {
488
- return false;
489
- }
490
- else
491
- {
492
- return true;
493
- }
494
- }
495
- return !ProxyPtr::dynamicCast(type);
496
- }
497
-
498
- string
499
- Slice::ObjCGenerator::getBuiltinName(const BuiltinPtr& builtin)
500
- {
501
- switch(builtin->kind())
502
- {
503
- case Builtin::KindByte:
504
- {
505
- return "Byte";
506
- }
507
- case Builtin::KindBool:
508
- {
509
- return "Bool";
510
- }
511
- case Builtin::KindShort:
512
- {
513
- return "Short";
514
- }
515
- case Builtin::KindInt:
516
- {
517
- return "Int";
518
- }
519
- case Builtin::KindLong:
520
- {
521
- return "Long";
522
- }
523
- case Builtin::KindFloat:
524
- {
525
- return "Float";
526
- }
527
- case Builtin::KindDouble:
528
- {
529
- return "Double";
530
- }
531
- case Builtin::KindString:
532
- {
533
- return "String";
534
- }
535
- case Builtin::KindObject:
536
- {
537
- return "Object";
538
- }
539
- case Builtin::KindObjectProxy:
540
- {
541
- return "Proxy";
542
- }
543
- default:
544
- {
545
- assert(false);
546
- }
547
- }
548
- return "NO__SUCH__TYPE";
549
- }
550
-
551
- string
552
- Slice::ObjCGenerator::getOptionalHelperGetter(const TypePtr& type)
553
- {
554
- if(isValueType(type))
555
- {
556
- BuiltinPtr builtin = BuiltinPtr::dynamicCast(type);
557
- if(builtin)
558
- {
559
- return "get" + getBuiltinName(builtin);
560
- }
561
- if(EnumPtr::dynamicCast(type))
562
- {
563
- return "getInt";
564
- }
565
- }
566
- return "get";
567
- }
568
-
569
- //
570
- // Split a scoped name into its components and return the components as a list of (unscoped) identifiers.
571
- //
572
- StringList
573
- Slice::ObjCGenerator::splitScopedName(const string& scoped)
574
- {
575
- assert(scoped[0] == ':');
576
- StringList ids;
577
- string::size_type next = 0;
578
- string::size_type pos;
579
- while((pos = scoped.find("::", next)) != string::npos)
580
- {
581
- pos += 2;
582
- if(pos != scoped.size())
583
- {
584
- string::size_type endpos = scoped.find("::", pos);
585
- if(endpos != string::npos)
586
- {
587
- ids.push_back(scoped.substr(pos, endpos - pos));
588
- }
589
- }
590
- next = pos;
591
- }
592
- if(next != scoped.size())
593
- {
594
- ids.push_back(scoped.substr(next));
595
- }
596
- else
597
- {
598
- ids.push_back("");
599
- }
600
-
601
- return ids;
602
- }
603
-
604
- string
605
- Slice::ObjCGenerator::getOptionalFormat(const TypePtr& type)
606
- {
607
- BuiltinPtr bp = BuiltinPtr::dynamicCast(type);
608
- if(bp)
609
- {
610
- switch(bp->kind())
611
- {
612
- case Builtin::KindByte:
613
- case Builtin::KindBool:
614
- {
615
- return "ICEOptionalFormatF1";
616
- }
617
- case Builtin::KindShort:
618
- {
619
- return "ICEOptionalFormatF2";
620
- }
621
- case Builtin::KindInt:
622
- case Builtin::KindFloat:
623
- {
624
- return "ICEOptionalFormatF4";
625
- }
626
- case Builtin::KindLong:
627
- case Builtin::KindDouble:
628
- {
629
- return "ICEOptionalFormatF8";
630
- }
631
- case Builtin::KindString:
632
- {
633
- return "ICEOptionalFormatVSize";
634
- }
635
- case Builtin::KindObject:
636
- {
637
- return "ICEOptionalFormatClass";
638
- }
639
- case Builtin::KindObjectProxy:
640
- {
641
- return "ICEOptionalFormatFSize";
642
- }
643
- case Builtin::KindLocalObject:
644
- {
645
- assert(false);
646
- break;
647
- }
648
- }
649
- }
650
-
651
- if(EnumPtr::dynamicCast(type))
652
- {
653
- return "ICEOptionalFormatSize";
654
- }
655
-
656
- SequencePtr seq = SequencePtr::dynamicCast(type);
657
- if(seq)
658
- {
659
- return seq->type()->isVariableLength() ? "ICEOptionalFormatFSize" : "ICEOptionalFormatVSize";
660
- }
661
-
662
- DictionaryPtr d = DictionaryPtr::dynamicCast(type);
663
- if(d)
664
- {
665
- return (d->keyType()->isVariableLength() || d->valueType()->isVariableLength()) ?
666
- "ICEOptionalFormatFSize" : "ICEOptionalFormatVSize";
667
- }
668
-
669
- StructPtr st = StructPtr::dynamicCast(type);
670
- if(st)
671
- {
672
- return st->isVariableLength() ? "ICEOptionalFormatFSize" : "ICEOptionalFormatVSize";
673
- }
674
-
675
- if(ProxyPtr::dynamicCast(type))
676
- {
677
- return "ICEOptionalFormatFSize";
678
- }
679
-
680
- ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type);
681
- assert(cl);
682
- return "ICEOptionalFormatClass";
683
- }
684
-
685
- void
686
- Slice::ObjCGenerator::writeMarshalUnmarshalCode(Output &out, const TypePtr& type, const string& param,
687
- bool marshal, bool autoreleased) const
688
- {
689
- string stream = marshal ? "os_" : "is_";
690
- BuiltinPtr builtin = BuiltinPtr::dynamicCast(type);
691
-
692
- if(builtin)
693
- {
694
- string name;
695
- if(builtin->kind() == Builtin::KindObject)
696
- {
697
- if(marshal)
698
- {
699
- out << nl << "[" << stream << " writeObject:" << param << "];";
700
- }
701
- else
702
- {
703
- if(autoreleased)
704
- {
705
- out << nl << "[" << stream << " readObject:&" << param << "];";
706
- }
707
- else
708
- {
709
- out << nl << "[" << stream << " newObject:&" << param << "];";
710
- }
711
- }
712
- }
713
- else if(builtin->kind() == Builtin::KindObjectProxy)
714
- {
715
- if(marshal)
716
- {
717
- out << nl << "[" << stream << " writeProxy:" << param << "];";
718
- }
719
- else
720
- {
721
- if(autoreleased)
722
- {
723
- out << nl << param << " = [" << stream << " readProxy:[ICEObjectPrx class]];";
724
- }
725
- else
726
- {
727
- out << nl << param << " = [" << stream << " newProxy:[ICEObjectPrx class]];";
728
- }
729
- }
730
- }
731
- else
732
- {
733
- if(marshal)
734
- {
735
- out << nl << "[" << stream << " write" << getBuiltinName(builtin) << ":" << param << "];";
736
- }
737
- else
738
- {
739
- if(autoreleased || isValueType(builtin))
740
- {
741
- out << nl << param << " = [" << stream << " read" << getBuiltinName(builtin) << "];";
742
- }
743
- else
744
- {
745
- out << nl << param << " = [" << stream << " new" << getBuiltinName(builtin) << "];";
746
- }
747
- }
748
- }
749
- return;
750
- }
751
-
752
- ProxyPtr prx = ProxyPtr::dynamicCast(type);
753
- if(prx)
754
- {
755
- if(marshal)
756
- {
757
- out << nl << "[" << stream << " writeProxy:(id<ICEObjectPrx>)" << param << "];";
758
- }
759
- else
760
- {
761
- string name = moduleName(findModule(prx->_class())) + prx->_class()->name() + "Prx";
762
- out << nl << param << " = (id<" << name << ">)[" << stream;
763
- if(autoreleased)
764
- {
765
- out << " readProxy:";
766
- }
767
- else
768
- {
769
- out << " newProxy:";
770
- }
771
- //
772
- // We use objc_getClass to get the proxy class instead of [name class]. This is to avoid
773
- // a warning if the proxy is forward declared.
774
- //
775
- if(prx->_class()->definition())
776
- {
777
- out << "[" << name << " class]];";
778
- }
779
- else
780
- {
781
- out << "objc_getClass(\"" << name << "\")];";
782
- }
783
- }
784
- return;
785
- }
786
-
787
- ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type);
788
- if(cl)
789
- {
790
- if(marshal)
791
- {
792
- // Cast avoids warning for forward-declared classes.
793
- out << nl << "[" << stream << " writeObject:(ICEObject*)" << param << "];";
794
- }
795
- else
796
- {
797
- if(autoreleased)
798
- {
799
- out << nl << "[" << stream << " " << "readObject:(ICEObject**)&" << param;
800
- }
801
- else
802
- {
803
- out << nl << "[" << stream << " " << "newObject:(ICEObject**)&" << param;
804
- }
805
-
806
- if(cl->isInterface())
807
- {
808
- out << "];";
809
- }
810
- else
811
- {
812
- string name = moduleName(findModule(cl)) + cl->name();
813
- if(cl->definition())
814
- {
815
- out << " expectedType:[" << name << " class]];";
816
- }
817
- else
818
- {
819
- out << " expectedType:objc_getClass(\"" << name << "\")];";
820
- }
821
- }
822
- }
823
- return;
824
- }
825
-
826
- EnumPtr en = EnumPtr::dynamicCast(type);
827
- if(en)
828
- {
829
- if(marshal)
830
- {
831
- out << nl << "[" << stream << " writeEnumerator:" << param << " min:" << en->minValue()
832
- << " max:" << en->maxValue() << "];";
833
- }
834
- else
835
- {
836
- out << nl << param << " = " << "[" << stream << " readEnumerator:" << en->minValue()
837
- << " max:" << en->maxValue() << "];";
838
- }
839
- return;
840
- }
841
-
842
- ContainedPtr c = ContainedPtr::dynamicCast(type);
843
- assert(c);
844
- string name = moduleName(findModule(c)) + c->name() + "Helper";
845
- if(marshal)
846
- {
847
- out << nl << "[" + name << " write:" << param << " stream:" << stream << "];";
848
- }
849
- else
850
- {
851
- if(StructPtr::dynamicCast(type))
852
- {
853
- if(autoreleased)
854
- {
855
- out << nl << param << " = [" << name << " read:" << stream << " value:" << param << "];";
856
- }
857
- else
858
- {
859
- out << nl << param << " = [" << name << " readRetained:" << stream << " value:" << param << "];";
860
- }
861
- }
862
- else
863
- {
864
- if(autoreleased)
865
- {
866
- out << nl << param << " = [" << name << " read:" << stream << "];";
867
- }
868
- else
869
- {
870
- out << nl << param << " = [" << name << " readRetained:" << stream << "];";
871
- }
872
- }
873
- }
874
- }
875
-
876
- void
877
- Slice::ObjCGenerator::writeOptMemberMarshalUnmarshalCode(Output &out, const TypePtr& type, const string& param,
878
- bool marshal) const
879
- {
880
- string stream = marshal ? "os_" : "is_";
881
- string optionalHelper;
882
- string helper;
883
-
884
- BuiltinPtr builtin = BuiltinPtr::dynamicCast(type);
885
- if(builtin)
886
- {
887
- if(builtin->kind() == Builtin::KindObjectProxy)
888
- {
889
- optionalHelper = "ICEVarLengthOptionalHelper";
890
- helper = "[ICEProxyHelper class]";
891
- }
892
- else
893
- {
894
- writeMarshalUnmarshalCode(out, type, param, marshal, false);
895
- return;
896
- }
897
- }
898
-
899
- ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type);
900
- if(cl)
901
- {
902
- writeMarshalUnmarshalCode(out, type, param, marshal, false);
903
- return;
904
- }
905
-
906
- EnumPtr en = EnumPtr::dynamicCast(type);
907
- if(en)
908
- {
909
- writeMarshalUnmarshalCode(out, type, param, marshal, false);
910
- return;
911
- }
912
-
913
- ProxyPtr prx = ProxyPtr::dynamicCast(type);
914
- if(prx)
915
- {
916
- optionalHelper = "ICEVarLengthOptionalHelper";
917
- helper = "objc_getClass(\"" + moduleName(findModule(prx->_class())) + prx->_class()->name() + "PrxHelper\")";
918
- }
919
-
920
- StructPtr st = StructPtr::dynamicCast(type);
921
- if(st)
922
- {
923
- if(st->isVariableLength())
924
- {
925
- optionalHelper = "ICEVarLengthOptionalHelper";
926
- }
927
- else
928
- {
929
- optionalHelper = "ICEFixedLengthOptionalHelper";
930
- }
931
- helper = "[" + typeToString(st) + "Helper class]";
932
- }
933
-
934
- SequencePtr seq = SequencePtr::dynamicCast(type);
935
- if(seq)
936
- {
937
- TypePtr element = seq->type();
938
- if(element->isVariableLength())
939
- {
940
- optionalHelper = "ICEVarLengthOptionalHelper";
941
- }
942
- else if(element->minWireSize() == 1)
943
- {
944
- writeMarshalUnmarshalCode(out, type, param, marshal, false);
945
- return;
946
- }
947
- else
948
- {
949
- optionalHelper = "ICEFixedSequenceOptionalHelper";
950
- }
951
- helper = "[" + moduleName(findModule(seq)) + seq->name() + "Helper class]";
952
- }
953
-
954
- DictionaryPtr d = DictionaryPtr::dynamicCast(type);
955
- if(d)
956
- {
957
- if(d->keyType()->isVariableLength() || d->valueType()->isVariableLength())
958
- {
959
- optionalHelper = "ICEVarLengthOptionalHelper";
960
- }
961
- else
962
- {
963
- optionalHelper = "ICEFixedDictionaryOptionalHelper";
964
- }
965
- helper = "[" + moduleName(findModule(d)) + d->name() + "Helper class]";
966
- }
967
-
968
- out << nl;
969
- if(marshal)
970
- {
971
- out << "[" << optionalHelper << " write:" << param << " stream:" << stream << " helper:" << helper << "];";
972
- }
973
- else
974
- {
975
- out << param << " = [" << optionalHelper << " readRetained:" << stream << " helper:" << helper << "];";
976
- }
977
-
978
- }
979
-
980
- void
981
- Slice::ObjCGenerator::writeOptParamMarshalUnmarshalCode(Output &out, const TypePtr& type, const string& param,
982
- int tag, bool marshal) const
983
- {
984
- string helper;
985
- BuiltinPtr builtin = BuiltinPtr::dynamicCast(type);
986
- ProxyPtr proxy = ProxyPtr::dynamicCast(type);
987
- if(builtin)
988
- {
989
- helper = "ICE" + getBuiltinName(builtin) + "Helper";
990
- }
991
- else if(proxy)
992
- {
993
- helper = moduleName(findModule(proxy->_class())) + (proxy->_class()->name()) + "PrxHelper";
994
- }
995
- else
996
- {
997
- helper = typeToString(type) + "Helper";
998
- }
999
-
1000
- ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type);
1001
- if(cl)
1002
- {
1003
- out << nl;
1004
- if(marshal)
1005
- {
1006
- out << "[" << helper << " writeOpt:" << param << " stream:os_ tag:" << tag << "];";
1007
- }
1008
- else
1009
- {
1010
- out << "[" << helper << " readOpt:&" << param << " stream:is_ tag:" << tag << "];";
1011
- }
1012
- return;
1013
- }
1014
-
1015
- out << nl;
1016
- if(marshal)
1017
- {
1018
- out << "[" << helper << " writeOpt:" << param << " stream:os_ tag:" << tag << "];";
1019
- }
1020
- else
1021
- {
1022
- out << param << " = [" << helper << " readOpt:is_ tag:" << tag << "];";
1023
- }
1024
- }
1025
-
1026
- void
1027
- Slice::ObjCGenerator::validateMetaData(const UnitPtr& u)
1028
- {
1029
- MetaDataVisitor visitor;
1030
- u->visit(&visitor, true);
1031
- }
1032
-
1033
- const string Slice::ObjCGenerator::MetaDataVisitor::_objcPrefix = "objc:";
1034
- const string Slice::ObjCGenerator::MetaDataVisitor::_msg = "ignoring invalid metadata";
1035
-
1036
- Slice::ObjCGenerator::MetaDataVisitor::MetaDataVisitor()
1037
- {
1038
- }
1039
-
1040
- bool
1041
- Slice::ObjCGenerator::MetaDataVisitor::visitUnitStart(const UnitPtr& p)
1042
- {
1043
- //
1044
- // Validate global metadata in the top-level file and all included files.
1045
- //
1046
- StringList files = p->allFiles();
1047
-
1048
- for(StringList::iterator q = files.begin(); q != files.end(); ++q)
1049
- {
1050
- string file = *q;
1051
- DefinitionContextPtr dc = p->findDefinitionContext(file);
1052
- assert(dc);
1053
- StringList globalMetaData = dc->getMetaData();
1054
- int headerDir = 0;
1055
- for(StringList::const_iterator r = globalMetaData.begin(); r != globalMetaData.end(); ++r)
1056
- {
1057
- string s = *r;
1058
- if(_history.count(s) == 0)
1059
- {
1060
- if(s.find(_objcPrefix) == 0)
1061
- {
1062
- static const string objcHeaderDirPrefix = "objc:header-dir:";
1063
- if(s.find(objcHeaderDirPrefix) == 0 && s.size() > objcHeaderDirPrefix.size())
1064
- {
1065
- headerDir++;
1066
- if(headerDir > 1)
1067
- {
1068
- ostringstream ostr;
1069
- ostr << "ignoring invalid global metadata `" << s
1070
- << "': directive can appear only once per file";
1071
- emitWarning(file, -1, ostr.str());
1072
- _history.insert(s);
1073
- }
1074
- continue;
1075
- }
1076
- ostringstream ostr;
1077
- ostr << "ignoring invalid global metadata `" << s << "'";
1078
- emitWarning(file, -1, ostr.str());
1079
- }
1080
- _history.insert(s);
1081
- }
1082
- }
1083
- }
1084
-
1085
- return true;
1086
- }
1087
-
1088
- bool
1089
- Slice::ObjCGenerator::MetaDataVisitor::visitModuleStart(const ModulePtr& p)
1090
- {
1091
- validate(p);
1092
- return true;
1093
- }
1094
-
1095
- void
1096
- Slice::ObjCGenerator::MetaDataVisitor::visitModuleEnd(const ModulePtr&)
1097
- {
1098
- }
1099
-
1100
- void
1101
- Slice::ObjCGenerator::MetaDataVisitor::visitClassDecl(const ClassDeclPtr& p)
1102
- {
1103
- validate(p);
1104
- }
1105
-
1106
- bool
1107
- Slice::ObjCGenerator::MetaDataVisitor::visitClassDefStart(const ClassDefPtr& p)
1108
- {
1109
- validate(p);
1110
- return true;
1111
- }
1112
-
1113
- void
1114
- Slice::ObjCGenerator::MetaDataVisitor::visitClassDefEnd(const ClassDefPtr&)
1115
- {
1116
- }
1117
-
1118
- bool
1119
- Slice::ObjCGenerator::MetaDataVisitor::visitExceptionStart(const ExceptionPtr& p)
1120
- {
1121
- validate(p);
1122
- return true;
1123
- }
1124
-
1125
- void
1126
- Slice::ObjCGenerator::MetaDataVisitor::visitExceptionEnd(const ExceptionPtr&)
1127
- {
1128
- }
1129
-
1130
- bool
1131
- Slice::ObjCGenerator::MetaDataVisitor::visitStructStart(const StructPtr& p)
1132
- {
1133
- validate(p);
1134
- return true;
1135
- }
1136
-
1137
- void
1138
- Slice::ObjCGenerator::MetaDataVisitor::visitStructEnd(const StructPtr&)
1139
- {
1140
- }
1141
-
1142
- void
1143
- Slice::ObjCGenerator::MetaDataVisitor::visitOperation(const OperationPtr& p)
1144
- {
1145
- if(p->hasMetaData("UserException"))
1146
- {
1147
- ClassDefPtr cl = ClassDefPtr::dynamicCast(p->container());
1148
- if(!cl->isLocal())
1149
- {
1150
- ostringstream os;
1151
- os << "ignoring invalid metadata `UserException': directive applies only to local operations "
1152
- << ": warning: metadata directive `UserException' applies only to local operations "
1153
- << "but enclosing " << (cl->isInterface() ? "interface" : "class") << "`" << cl->name()
1154
- << "' is not local";
1155
- emitWarning(p->file(), p->line(), os.str());
1156
- }
1157
- }
1158
- validate(p);
1159
- }
1160
-
1161
- void
1162
- Slice::ObjCGenerator::MetaDataVisitor::visitParamDecl(const ParamDeclPtr& p)
1163
- {
1164
- validate(p);
1165
- }
1166
-
1167
- void
1168
- Slice::ObjCGenerator::MetaDataVisitor::visitDataMember(const DataMemberPtr& p)
1169
- {
1170
- validate(p);
1171
- }
1172
-
1173
- void
1174
- Slice::ObjCGenerator::MetaDataVisitor::visitSequence(const SequencePtr& p)
1175
- {
1176
- validate(p);
1177
- }
1178
-
1179
- void
1180
- Slice::ObjCGenerator::MetaDataVisitor::visitDictionary(const DictionaryPtr& p)
1181
- {
1182
- validate(p);
1183
- }
1184
-
1185
- void
1186
- Slice::ObjCGenerator::MetaDataVisitor::visitEnum(const EnumPtr& p)
1187
- {
1188
- validate(p);
1189
- }
1190
-
1191
- void
1192
- Slice::ObjCGenerator::MetaDataVisitor::visitConst(const ConstPtr& p)
1193
- {
1194
- validate(p);
1195
- }
1196
-
1197
- void
1198
- Slice::ObjCGenerator::MetaDataVisitor::validate(const ContainedPtr& cont)
1199
- {
1200
- ModulePtr m = ModulePtr::dynamicCast(cont);
1201
- if(m)
1202
- {
1203
- bool error = false;
1204
- bool foundPrefix = false;
1205
-
1206
- StringList meta = getMetaData(m);
1207
- StringList::const_iterator p;
1208
-
1209
- for(p = meta.begin(); p != meta.end(); ++p)
1210
- {
1211
- const string prefix = "prefix:";
1212
- string name;
1213
- if(p->substr(_objcPrefix.size(), prefix.size()) == prefix)
1214
- {
1215
- foundPrefix = true;
1216
- name = trim(p->substr(_objcPrefix.size() + prefix.size()));
1217
- if(name.empty())
1218
- {
1219
- if(_history.count(*p) == 0)
1220
- {
1221
- string file = m->definitionContext()->filename();
1222
- ostringstream os;
1223
- os << _msg << " `" << *p << "'" << endl;
1224
- emitWarning(file, m->line(), os.str());
1225
- _history.insert(*p);
1226
- }
1227
- error = true;
1228
- }
1229
- else
1230
- {
1231
- if(!addModule(m, name))
1232
- {
1233
- modulePrefixError(m, *p);
1234
- }
1235
- }
1236
- }
1237
- else
1238
- {
1239
- if(_history.count(*p) == 0)
1240
- {
1241
- string file = m->definitionContext()->filename();
1242
- ostringstream os;
1243
- os << _msg << " `" << *p << "'" << endl;
1244
- emitWarning(file, m->line(), os.str());
1245
- _history.insert(*p);
1246
- }
1247
- error = true;
1248
- }
1249
- }
1250
-
1251
- if(!error && !foundPrefix)
1252
- {
1253
- StringList names = splitScopedName(m->scoped());
1254
- string name;
1255
- for(StringList::const_iterator i = names.begin(); i != names.end(); ++i)
1256
- {
1257
- name += *i;
1258
- }
1259
- if(!addModule(m, name))
1260
- {
1261
- modulePrefixError(m, "");
1262
- }
1263
- }
1264
- }
1265
- }
1266
-
1267
- StringList
1268
- Slice::ObjCGenerator::MetaDataVisitor::getMetaData(const ContainedPtr& cont)
1269
- {
1270
- StringList ret;
1271
- StringList localMetaData = cont->getMetaData();
1272
- StringList::const_iterator p;
1273
-
1274
- for(p = localMetaData.begin(); p != localMetaData.end(); ++p)
1275
- {
1276
- if(p->find(_objcPrefix) != string::npos)
1277
- {
1278
- ret.push_back(*p);
1279
- }
1280
- }
1281
-
1282
- return ret;
1283
- }
1284
-
1285
- void
1286
- Slice::ObjCGenerator::MetaDataVisitor::modulePrefixError(const ModulePtr& m, const string& metadata)
1287
- {
1288
- string file = m->definitionContext()->filename();
1289
- string line = m->line();
1290
- ModulePrefix mp = modulePrefix(m);
1291
- string old_file = mp.m->definitionContext()->filename();
1292
- string old_line = mp.m->line();
1293
- ostringstream os;
1294
- if(!metadata.empty())
1295
- {
1296
- os << _msg << " `" << metadata << "': ";
1297
- }
1298
- os << "inconsistent module prefix previously defined ";
1299
- if(old_file != file)
1300
- {
1301
- os << "in " << old_file << ":";
1302
- }
1303
- else
1304
- {
1305
- os << "at line ";
1306
- }
1307
- os << line;
1308
- os << " as `" << mp.name << "'" << endl;
1309
- emitWarning(file, line, os.str());
1310
- }