zeroc-ice 3.7.0 → 3.7.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (691) hide show
  1. checksums.yaml +5 -5
  2. data/ICE_LICENSE +1 -1
  3. data/bin/slice2rb +1 -6
  4. data/ext/Communicator.cpp +78 -10
  5. data/ext/Communicator.h +1 -6
  6. data/ext/Config.h +35 -6
  7. data/ext/Connection.cpp +22 -11
  8. data/ext/Connection.h +4 -6
  9. data/ext/Endpoint.cpp +1 -10
  10. data/ext/Endpoint.h +1 -6
  11. data/ext/ImplicitContext.cpp +1 -6
  12. data/ext/ImplicitContext.h +1 -6
  13. data/ext/Init.cpp +1 -6
  14. data/ext/Logger.cpp +1 -6
  15. data/ext/Logger.h +1 -6
  16. data/ext/Operation.cpp +6 -11
  17. data/ext/Operation.h +1 -6
  18. data/ext/Properties.cpp +3 -8
  19. data/ext/Properties.h +1 -6
  20. data/ext/Proxy.cpp +90 -14
  21. data/ext/Proxy.h +1 -6
  22. data/ext/Slice.cpp +3 -18
  23. data/ext/Slice.h +1 -6
  24. data/ext/Types.cpp +92 -60
  25. data/ext/Types.h +1 -6
  26. data/ext/Util.cpp +61 -32
  27. data/ext/Util.h +108 -33
  28. data/ext/ValueFactoryManager.cpp +2 -7
  29. data/ext/ValueFactoryManager.h +2 -7
  30. data/ext/extconf.rb +5 -3
  31. data/ext/ice/cpp/include/Ice/Application.h +234 -81
  32. data/ext/ice/cpp/include/Ice/AsyncResult.h +77 -6
  33. data/ext/ice/cpp/include/Ice/AsyncResultF.h +1 -6
  34. data/ext/ice/cpp/include/Ice/BatchRequestInterceptor.h +35 -7
  35. data/ext/ice/cpp/include/Ice/BatchRequestQueueF.h +1 -6
  36. data/ext/ice/cpp/include/Ice/Buffer.h +1 -6
  37. data/ext/ice/cpp/include/Ice/CommunicatorAsync.h +43 -6
  38. data/ext/ice/cpp/include/Ice/Comparable.h +81 -6
  39. data/ext/ice/cpp/include/Ice/Config.h +12 -6
  40. data/ext/ice/cpp/include/Ice/ConnectionAsync.h +97 -6
  41. data/ext/ice/cpp/include/Ice/ConnectionIF.h +3 -6
  42. data/ext/ice/cpp/include/Ice/ConsoleUtil.h +1 -6
  43. data/ext/ice/cpp/include/Ice/DefaultValueFactory.h +1 -6
  44. data/ext/ice/cpp/include/Ice/DispatchInterceptor.h +17 -7
  45. data/ext/ice/cpp/include/Ice/Dispatcher.h +22 -7
  46. data/ext/ice/cpp/include/Ice/DynamicLibrary.h +1 -6
  47. data/ext/ice/cpp/include/Ice/DynamicLibraryF.h +1 -6
  48. data/ext/ice/cpp/include/Ice/Exception.h +57 -20
  49. data/ext/ice/cpp/include/Ice/ExceptionHelpers.h +11 -6
  50. data/ext/ice/cpp/include/Ice/FactoryTable.h +12 -7
  51. data/ext/ice/cpp/include/Ice/FactoryTableInit.h +2 -7
  52. data/ext/ice/cpp/include/Ice/Format.h +13 -19
  53. data/ext/ice/cpp/include/Ice/Functional.h +6 -6
  54. data/ext/ice/cpp/include/Ice/GCObject.h +1 -6
  55. data/ext/ice/cpp/include/Ice/Handle.h +1 -6
  56. data/ext/ice/cpp/include/Ice/Ice.h +1 -6
  57. data/ext/ice/cpp/include/Ice/IconvStringConverter.h +47 -18
  58. data/ext/ice/cpp/include/Ice/Incoming.h +27 -9
  59. data/ext/ice/cpp/include/Ice/IncomingAsync.h +47 -9
  60. data/ext/ice/cpp/include/Ice/IncomingAsyncF.h +1 -6
  61. data/ext/ice/cpp/include/Ice/Initialize.h +775 -103
  62. data/ext/ice/cpp/include/Ice/InputStream.h +642 -122
  63. data/ext/ice/cpp/include/Ice/InstanceF.h +1 -6
  64. data/ext/ice/cpp/include/Ice/InterfaceByValue.h +17 -6
  65. data/ext/ice/cpp/include/Ice/LocalObject.h +5 -6
  66. data/ext/ice/cpp/include/Ice/LocalObjectF.h +1 -6
  67. data/ext/ice/cpp/include/Ice/LoggerUtil.h +37 -11
  68. data/ext/ice/cpp/include/Ice/MetricsAdminI.h +11 -7
  69. data/ext/ice/cpp/include/Ice/MetricsFunctional.h +3 -6
  70. data/ext/ice/cpp/include/Ice/MetricsObserverI.h +18 -7
  71. data/ext/ice/cpp/include/Ice/NativePropertiesAdmin.h +46 -28
  72. data/ext/ice/cpp/include/Ice/Object.h +338 -52
  73. data/ext/ice/cpp/include/Ice/ObjectF.h +5 -6
  74. data/ext/ice/cpp/include/Ice/ObserverHelper.h +1 -6
  75. data/ext/ice/cpp/include/Ice/Optional.h +42 -12
  76. data/ext/ice/cpp/include/Ice/OutgoingAsync.h +32 -8
  77. data/ext/ice/cpp/include/Ice/OutgoingAsyncF.h +1 -6
  78. data/ext/ice/cpp/include/Ice/OutputStream.h +441 -102
  79. data/ext/ice/cpp/include/Ice/Protocol.h +31 -6
  80. data/ext/ice/cpp/include/Ice/Proxy.h +2288 -207
  81. data/ext/ice/cpp/include/Ice/ProxyF.h +3 -6
  82. data/ext/ice/cpp/include/Ice/ProxyFactoryF.h +1 -6
  83. data/ext/ice/cpp/include/Ice/ProxyHandle.h +10 -6
  84. data/ext/ice/cpp/include/Ice/ReferenceF.h +1 -6
  85. data/ext/ice/cpp/include/Ice/RegisterPlugins.h +67 -14
  86. data/ext/ice/cpp/include/Ice/RequestHandlerF.h +1 -6
  87. data/ext/ice/cpp/include/Ice/ResponseHandlerF.h +1 -6
  88. data/ext/ice/cpp/include/Ice/SHA1.h +1 -6
  89. data/ext/ice/cpp/include/Ice/ServantManagerF.h +1 -6
  90. data/ext/ice/cpp/include/Ice/Service.h +267 -143
  91. data/ext/ice/cpp/include/Ice/SliceChecksums.h +5 -6
  92. data/ext/ice/cpp/include/Ice/SlicedData.h +80 -38
  93. data/ext/ice/cpp/include/Ice/SlicedDataF.h +4 -6
  94. data/ext/ice/cpp/include/Ice/StreamHelpers.h +325 -122
  95. data/ext/ice/cpp/include/Ice/StringConverter.h +32 -6
  96. data/ext/ice/cpp/include/Ice/ThreadPoolF.h +1 -6
  97. data/ext/ice/cpp/include/Ice/UUID.h +2 -6
  98. data/ext/ice/cpp/include/Ice/UniquePtr.h +2 -7
  99. data/ext/ice/cpp/include/Ice/UniqueRef.h +6 -7
  100. data/ext/ice/cpp/include/Ice/UserExceptionFactory.h +6 -6
  101. data/ext/ice/cpp/include/Ice/Value.h +41 -6
  102. data/ext/ice/cpp/include/Ice/ValueF.h +3 -6
  103. data/ext/ice/cpp/include/IceSSL/Config.h +1 -6
  104. data/ext/ice/cpp/include/IceSSL/IceSSL.h +1 -6
  105. data/ext/ice/cpp/include/IceSSL/OpenSSL.h +75 -58
  106. data/ext/ice/cpp/include/IceSSL/Plugin.h +323 -223
  107. data/ext/ice/cpp/include/IceSSL/SChannel.h +41 -35
  108. data/ext/ice/cpp/include/IceSSL/SecureTransport.h +39 -33
  109. data/ext/ice/cpp/include/IceSSL/UWP.h +33 -29
  110. data/ext/ice/cpp/include/IceUtil/Atomic.h +2 -7
  111. data/ext/ice/cpp/include/IceUtil/Cond.h +1 -6
  112. data/ext/ice/cpp/include/IceUtil/Config.h +35 -14
  113. data/ext/ice/cpp/include/IceUtil/ConsoleUtil.h +5 -10
  114. data/ext/ice/cpp/include/IceUtil/CountDownLatch.h +1 -6
  115. data/ext/ice/cpp/include/IceUtil/CtrlCHandler.h +52 -36
  116. data/ext/ice/cpp/include/IceUtil/DisableWarnings.h +5 -11
  117. data/ext/ice/cpp/include/IceUtil/Exception.h +130 -11
  118. data/ext/ice/cpp/include/IceUtil/FileUtil.h +1 -6
  119. data/ext/ice/cpp/include/IceUtil/Functional.h +5 -6
  120. data/ext/ice/cpp/include/IceUtil/Handle.h +1 -6
  121. data/ext/ice/cpp/include/IceUtil/IceUtil.h +1 -6
  122. data/ext/ice/cpp/include/IceUtil/InputUtil.h +1 -6
  123. data/ext/ice/cpp/include/IceUtil/Iterator.h +1 -6
  124. data/ext/ice/cpp/include/IceUtil/Lock.h +1 -6
  125. data/ext/ice/cpp/include/IceUtil/Monitor.h +1 -6
  126. data/ext/ice/cpp/include/IceUtil/Mutex.h +3 -13
  127. data/ext/ice/cpp/include/IceUtil/MutexProtocol.h +1 -6
  128. data/ext/ice/cpp/include/IceUtil/MutexPtrLock.h +1 -6
  129. data/ext/ice/cpp/include/IceUtil/MutexPtrTryLock.h +1 -6
  130. data/ext/ice/cpp/include/IceUtil/Optional.h +103 -6
  131. data/ext/ice/cpp/include/IceUtil/Options.h +1 -6
  132. data/ext/ice/cpp/include/IceUtil/OutputUtil.h +18 -20
  133. data/ext/ice/cpp/include/IceUtil/PopDisableWarnings.h +1 -6
  134. data/ext/ice/cpp/include/IceUtil/PushDisableWarnings.h +8 -6
  135. data/ext/ice/cpp/include/IceUtil/Random.h +37 -6
  136. data/ext/ice/cpp/include/IceUtil/RecMutex.h +1 -6
  137. data/ext/ice/cpp/include/IceUtil/ResourceConfig.h +4 -9
  138. data/ext/ice/cpp/include/IceUtil/ScannerConfig.h +12 -9
  139. data/ext/ice/cpp/include/IceUtil/ScopedArray.h +1 -6
  140. data/ext/ice/cpp/include/IceUtil/Shared.h +1 -6
  141. data/ext/ice/cpp/include/IceUtil/StopWatch.h +1 -6
  142. data/ext/ice/cpp/include/IceUtil/StringConverter.h +107 -92
  143. data/ext/ice/cpp/include/IceUtil/StringUtil.h +1 -6
  144. data/ext/ice/cpp/include/IceUtil/Thread.h +1 -6
  145. data/ext/ice/cpp/include/IceUtil/ThreadException.h +1 -6
  146. data/ext/ice/cpp/include/IceUtil/Time.h +1 -6
  147. data/ext/ice/cpp/include/IceUtil/Timer.h +5 -6
  148. data/ext/ice/cpp/include/IceUtil/UUID.h +5 -6
  149. data/ext/ice/cpp/include/IceUtil/UndefSysMacros.h +1 -6
  150. data/ext/ice/cpp/include/generated/Ice/BuiltinSequences.h +81 -26
  151. data/ext/ice/cpp/include/generated/Ice/Communicator.h +928 -136
  152. data/ext/ice/cpp/include/generated/Ice/CommunicatorF.h +14 -11
  153. data/ext/ice/cpp/include/generated/Ice/Connection.h +968 -180
  154. data/ext/ice/cpp/include/generated/Ice/ConnectionF.h +22 -15
  155. data/ext/ice/cpp/include/generated/Ice/Current.h +166 -9
  156. data/ext/ice/cpp/include/generated/Ice/Endpoint.h +476 -115
  157. data/ext/ice/cpp/include/generated/Ice/EndpointF.h +42 -23
  158. data/ext/ice/cpp/include/generated/Ice/EndpointTypes.h +30 -9
  159. data/ext/ice/cpp/include/generated/Ice/FacetMap.h +12 -11
  160. data/ext/ice/cpp/include/generated/Ice/Identity.h +56 -13
  161. data/ext/ice/cpp/include/generated/Ice/ImplicitContext.h +151 -34
  162. data/ext/ice/cpp/include/generated/Ice/ImplicitContextF.h +14 -11
  163. data/ext/ice/cpp/include/generated/Ice/Instrumentation.h +630 -89
  164. data/ext/ice/cpp/include/generated/Ice/InstrumentationF.h +20 -13
  165. data/ext/ice/cpp/include/generated/Ice/LocalException.h +5009 -770
  166. data/ext/ice/cpp/include/generated/Ice/Locator.h +2255 -441
  167. data/ext/ice/cpp/include/generated/Ice/LocatorF.h +32 -19
  168. data/ext/ice/cpp/include/generated/Ice/Logger.h +105 -32
  169. data/ext/ice/cpp/include/generated/Ice/LoggerF.h +14 -11
  170. data/ext/ice/cpp/include/generated/Ice/Metrics.h +2539 -471
  171. data/ext/ice/cpp/include/generated/Ice/ObjectAdapter.h +1005 -132
  172. data/ext/ice/cpp/include/generated/Ice/ObjectAdapterF.h +14 -11
  173. data/ext/ice/cpp/include/generated/Ice/ObjectFactory.h +73 -18
  174. data/ext/ice/cpp/include/generated/Ice/Plugin.h +143 -34
  175. data/ext/ice/cpp/include/generated/Ice/PluginF.h +18 -13
  176. data/ext/ice/cpp/include/generated/Ice/Process.h +514 -79
  177. data/ext/ice/cpp/include/generated/Ice/ProcessF.h +21 -14
  178. data/ext/ice/cpp/include/generated/Ice/Properties.h +307 -64
  179. data/ext/ice/cpp/include/generated/Ice/PropertiesAdmin.h +738 -127
  180. data/ext/ice/cpp/include/generated/Ice/PropertiesF.h +25 -16
  181. data/ext/ice/cpp/include/generated/Ice/RemoteLogger.h +1524 -284
  182. data/ext/ice/cpp/include/generated/Ice/Router.h +1007 -201
  183. data/ext/ice/cpp/include/generated/Ice/RouterF.h +21 -14
  184. data/ext/ice/cpp/include/generated/Ice/ServantLocator.h +175 -24
  185. data/ext/ice/cpp/include/generated/Ice/ServantLocatorF.h +14 -11
  186. data/ext/ice/cpp/include/generated/Ice/SliceChecksumDict.h +14 -9
  187. data/ext/ice/cpp/include/generated/Ice/ValueFactory.h +178 -29
  188. data/ext/ice/cpp/include/generated/Ice/Version.h +32 -9
  189. data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfo.h +72 -21
  190. data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfoF.h +14 -11
  191. data/ext/ice/cpp/include/generated/IceSSL/EndpointInfo.h +40 -15
  192. data/ext/ice/cpp/src/Ice/ACM.cpp +21 -14
  193. data/ext/ice/cpp/src/Ice/ACM.h +1 -6
  194. data/ext/ice/cpp/src/Ice/ACMF.h +1 -6
  195. data/ext/ice/cpp/src/Ice/Acceptor.cpp +1 -6
  196. data/ext/ice/cpp/src/Ice/Acceptor.h +1 -6
  197. data/ext/ice/cpp/src/Ice/AcceptorF.h +1 -6
  198. data/ext/ice/cpp/src/Ice/ArgVector.cpp +8 -13
  199. data/ext/ice/cpp/src/Ice/ArgVector.h +1 -6
  200. data/ext/ice/cpp/src/Ice/AsyncResult.cpp +1 -7
  201. data/ext/ice/cpp/src/Ice/Base64.cpp +12 -18
  202. data/ext/ice/cpp/src/Ice/Base64.h +1 -6
  203. data/ext/ice/cpp/src/Ice/BatchRequestQueue.cpp +2 -7
  204. data/ext/ice/cpp/src/Ice/BatchRequestQueue.h +1 -6
  205. data/ext/ice/cpp/src/Ice/Buffer.cpp +3 -8
  206. data/ext/ice/cpp/src/Ice/BuiltinSequences.cpp +4 -9
  207. data/ext/ice/cpp/src/Ice/CollocatedRequestHandler.cpp +2 -8
  208. data/ext/ice/cpp/src/Ice/CollocatedRequestHandler.h +1 -6
  209. data/ext/ice/cpp/src/Ice/Communicator.cpp +7 -10
  210. data/ext/ice/cpp/src/Ice/CommunicatorF.cpp +4 -9
  211. data/ext/ice/cpp/src/Ice/CommunicatorI.cpp +56 -22
  212. data/ext/ice/cpp/src/Ice/CommunicatorI.h +15 -16
  213. data/ext/ice/cpp/src/Ice/Cond.cpp +1 -6
  214. data/ext/ice/cpp/src/Ice/ConnectRequestHandler.cpp +11 -11
  215. data/ext/ice/cpp/src/Ice/ConnectRequestHandler.h +5 -10
  216. data/ext/ice/cpp/src/Ice/ConnectRequestHandlerF.h +1 -6
  217. data/ext/ice/cpp/src/Ice/Connection.cpp +28 -17
  218. data/ext/ice/cpp/src/Ice/ConnectionF.cpp +4 -9
  219. data/ext/ice/cpp/src/Ice/ConnectionFactory.cpp +167 -52
  220. data/ext/ice/cpp/src/Ice/ConnectionFactory.h +4 -6
  221. data/ext/ice/cpp/src/Ice/ConnectionFactoryF.h +1 -6
  222. data/ext/ice/cpp/src/Ice/ConnectionI.cpp +78 -60
  223. data/ext/ice/cpp/src/Ice/ConnectionI.h +10 -13
  224. data/ext/ice/cpp/src/Ice/ConnectionRequestHandler.cpp +1 -6
  225. data/ext/ice/cpp/src/Ice/ConnectionRequestHandler.h +2 -7
  226. data/ext/ice/cpp/src/Ice/Connector.cpp +1 -6
  227. data/ext/ice/cpp/src/Ice/Connector.h +1 -6
  228. data/ext/ice/cpp/src/Ice/ConnectorF.h +1 -6
  229. data/ext/ice/cpp/src/Ice/CountDownLatch.cpp +1 -6
  230. data/ext/ice/cpp/src/Ice/Current.cpp +4 -9
  231. data/ext/ice/cpp/src/Ice/DefaultsAndOverrides.cpp +5 -12
  232. data/ext/ice/cpp/src/Ice/DefaultsAndOverrides.h +1 -6
  233. data/ext/ice/cpp/src/Ice/DefaultsAndOverridesF.h +1 -6
  234. data/ext/ice/cpp/src/Ice/DispatchInterceptor.cpp +14 -6
  235. data/ext/ice/cpp/src/Ice/DynamicLibrary.cpp +7 -11
  236. data/ext/ice/cpp/src/Ice/Endpoint.cpp +25 -16
  237. data/ext/ice/cpp/src/Ice/EndpointF.cpp +4 -9
  238. data/ext/ice/cpp/src/Ice/EndpointFactory.cpp +1 -6
  239. data/ext/ice/cpp/src/Ice/EndpointFactory.h +1 -6
  240. data/ext/ice/cpp/src/Ice/EndpointFactoryF.h +1 -6
  241. data/ext/ice/cpp/src/Ice/EndpointFactoryManager.cpp +7 -18
  242. data/ext/ice/cpp/src/Ice/EndpointFactoryManager.h +1 -6
  243. data/ext/ice/cpp/src/Ice/EndpointFactoryManagerF.h +1 -6
  244. data/ext/ice/cpp/src/Ice/EndpointI.cpp +2 -7
  245. data/ext/ice/cpp/src/Ice/EndpointI.h +5 -10
  246. data/ext/ice/cpp/src/Ice/EndpointIF.h +1 -6
  247. data/ext/ice/cpp/src/Ice/EndpointTypes.cpp +4 -9
  248. data/ext/ice/cpp/src/Ice/EventHandler.cpp +1 -6
  249. data/ext/ice/cpp/src/Ice/EventHandler.h +1 -6
  250. data/ext/ice/cpp/src/Ice/EventHandlerF.h +1 -6
  251. data/ext/ice/cpp/src/Ice/Exception.cpp +8 -13
  252. data/ext/ice/cpp/src/Ice/FacetMap.cpp +4 -9
  253. data/ext/ice/cpp/src/Ice/FactoryTable.cpp +1 -6
  254. data/ext/ice/cpp/src/Ice/FactoryTableInit.cpp +1 -6
  255. data/ext/ice/cpp/src/Ice/GCObject.cpp +2 -7
  256. data/ext/ice/cpp/src/Ice/HashUtil.h +2 -7
  257. data/ext/ice/cpp/src/Ice/HttpParser.cpp +1 -6
  258. data/ext/ice/cpp/src/Ice/HttpParser.h +1 -6
  259. data/ext/ice/cpp/src/Ice/IPEndpointI.cpp +37 -59
  260. data/ext/ice/cpp/src/Ice/IPEndpointI.h +5 -10
  261. data/ext/ice/cpp/src/Ice/IPEndpointIF.h +1 -6
  262. data/ext/ice/cpp/src/Ice/IconvStringConverter.cpp +1 -6
  263. data/ext/ice/cpp/src/Ice/Identity.cpp +4 -9
  264. data/ext/ice/cpp/src/Ice/ImplicitContext.cpp +7 -10
  265. data/ext/ice/cpp/src/Ice/ImplicitContextF.cpp +4 -9
  266. data/ext/ice/cpp/src/Ice/ImplicitContextI.cpp +3 -20
  267. data/ext/ice/cpp/src/Ice/ImplicitContextI.h +1 -6
  268. data/ext/ice/cpp/src/Ice/Incoming.cpp +11 -13
  269. data/ext/ice/cpp/src/Ice/IncomingAsync.cpp +1 -6
  270. data/ext/ice/cpp/src/Ice/IncomingRequest.h +1 -6
  271. data/ext/ice/cpp/src/Ice/Initialize.cpp +15 -26
  272. data/ext/ice/cpp/src/Ice/InputStream.cpp +45 -77
  273. data/ext/ice/cpp/src/Ice/Instance.cpp +70 -46
  274. data/ext/ice/cpp/src/Ice/Instance.h +3 -6
  275. data/ext/ice/cpp/src/Ice/Instrumentation.cpp +34 -19
  276. data/ext/ice/cpp/src/Ice/InstrumentationF.cpp +4 -9
  277. data/ext/ice/cpp/src/Ice/InstrumentationI.cpp +2 -7
  278. data/ext/ice/cpp/src/Ice/InstrumentationI.h +1 -6
  279. data/ext/ice/cpp/src/Ice/LocalException.cpp +280 -285
  280. data/ext/ice/cpp/src/Ice/LocalObject.cpp +1 -6
  281. data/ext/ice/cpp/src/Ice/Locator.cpp +274 -166
  282. data/ext/ice/cpp/src/Ice/LocatorF.cpp +4 -9
  283. data/ext/ice/cpp/src/Ice/LocatorInfo.cpp +28 -30
  284. data/ext/ice/cpp/src/Ice/LocatorInfo.h +3 -8
  285. data/ext/ice/cpp/src/Ice/LocatorInfoF.h +1 -6
  286. data/ext/ice/cpp/src/Ice/Logger.cpp +7 -10
  287. data/ext/ice/cpp/src/Ice/LoggerAdminI.cpp +8 -19
  288. data/ext/ice/cpp/src/Ice/LoggerAdminI.h +1 -6
  289. data/ext/ice/cpp/src/Ice/LoggerF.cpp +4 -9
  290. data/ext/ice/cpp/src/Ice/LoggerI.cpp +13 -12
  291. data/ext/ice/cpp/src/Ice/LoggerI.h +1 -6
  292. data/ext/ice/cpp/src/Ice/LoggerUtil.cpp +1 -6
  293. data/ext/ice/cpp/src/Ice/Metrics.cpp +296 -113
  294. data/ext/ice/cpp/src/Ice/MetricsAdminI.cpp +10 -15
  295. data/ext/ice/cpp/src/Ice/MetricsObserverI.cpp +1 -6
  296. data/ext/ice/cpp/src/Ice/Network.cpp +252 -271
  297. data/ext/ice/cpp/src/Ice/Network.h +6 -20
  298. data/ext/ice/cpp/src/Ice/NetworkF.h +1 -6
  299. data/ext/ice/cpp/src/Ice/NetworkProxy.cpp +2 -8
  300. data/ext/ice/cpp/src/Ice/NetworkProxy.h +1 -6
  301. data/ext/ice/cpp/src/Ice/NetworkProxyF.h +1 -6
  302. data/ext/ice/cpp/src/Ice/OSLogLoggerI.cpp +57 -0
  303. data/ext/ice/cpp/src/Ice/OSLogLoggerI.h +40 -0
  304. data/ext/ice/cpp/src/Ice/Object.cpp +16 -17
  305. data/ext/ice/cpp/src/Ice/ObjectAdapter.cpp +7 -10
  306. data/ext/ice/cpp/src/Ice/ObjectAdapterF.cpp +4 -9
  307. data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.cpp +53 -24
  308. data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.h +1 -6
  309. data/ext/ice/cpp/src/Ice/ObjectAdapterFactoryF.h +1 -6
  310. data/ext/ice/cpp/src/Ice/ObjectAdapterI.cpp +137 -156
  311. data/ext/ice/cpp/src/Ice/ObjectAdapterI.h +15 -16
  312. data/ext/ice/cpp/src/Ice/ObjectFactory.cpp +7 -10
  313. data/ext/ice/cpp/src/Ice/ObserverHelper.cpp +1 -6
  314. data/ext/ice/cpp/src/Ice/OpaqueEndpointI.cpp +29 -51
  315. data/ext/ice/cpp/src/Ice/OpaqueEndpointI.h +2 -7
  316. data/ext/ice/cpp/src/Ice/OutgoingAsync.cpp +6 -9
  317. data/ext/ice/cpp/src/Ice/OutputStream.cpp +29 -61
  318. data/ext/ice/cpp/src/Ice/Plugin.cpp +10 -11
  319. data/ext/ice/cpp/src/Ice/PluginF.cpp +4 -9
  320. data/ext/ice/cpp/src/Ice/PluginManagerI.cpp +15 -39
  321. data/ext/ice/cpp/src/Ice/PluginManagerI.h +3 -8
  322. data/ext/ice/cpp/src/Ice/Process.cpp +66 -42
  323. data/ext/ice/cpp/src/Ice/ProcessF.cpp +4 -9
  324. data/ext/ice/cpp/src/Ice/Properties.cpp +7 -10
  325. data/ext/ice/cpp/src/Ice/PropertiesAdmin.cpp +84 -54
  326. data/ext/ice/cpp/src/Ice/PropertiesAdminI.cpp +3 -8
  327. data/ext/ice/cpp/src/Ice/PropertiesAdminI.h +1 -6
  328. data/ext/ice/cpp/src/Ice/PropertiesF.cpp +4 -9
  329. data/ext/ice/cpp/src/Ice/PropertiesI.cpp +25 -35
  330. data/ext/ice/cpp/src/Ice/PropertiesI.h +10 -15
  331. data/ext/ice/cpp/src/Ice/PropertyNames.cpp +45 -8
  332. data/ext/ice/cpp/src/Ice/PropertyNames.h +2 -7
  333. data/ext/ice/cpp/src/Ice/Protocol.cpp +5 -18
  334. data/ext/ice/cpp/src/Ice/ProtocolInstance.cpp +1 -6
  335. data/ext/ice/cpp/src/Ice/ProtocolInstance.h +1 -6
  336. data/ext/ice/cpp/src/Ice/ProtocolInstanceF.h +1 -6
  337. data/ext/ice/cpp/src/Ice/ProtocolPluginFacade.cpp +1 -6
  338. data/ext/ice/cpp/src/Ice/ProtocolPluginFacade.h +1 -6
  339. data/ext/ice/cpp/src/Ice/ProtocolPluginFacadeF.h +1 -6
  340. data/ext/ice/cpp/src/Ice/Proxy.cpp +54 -8
  341. data/ext/ice/cpp/src/Ice/ProxyFactory.cpp +11 -7
  342. data/ext/ice/cpp/src/Ice/ProxyFactory.h +1 -6
  343. data/ext/ice/cpp/src/Ice/Reference.cpp +116 -38
  344. data/ext/ice/cpp/src/Ice/Reference.h +13 -7
  345. data/ext/ice/cpp/src/Ice/ReferenceFactory.cpp +52 -98
  346. data/ext/ice/cpp/src/Ice/ReferenceFactory.h +1 -6
  347. data/ext/ice/cpp/src/Ice/ReferenceFactoryF.h +1 -6
  348. data/ext/ice/cpp/src/Ice/RegisterPluginsInit.cpp +4 -8
  349. data/ext/ice/cpp/src/Ice/RegisterPluginsInit.h +1 -6
  350. data/ext/ice/cpp/src/Ice/RemoteLogger.cpp +194 -113
  351. data/ext/ice/cpp/src/Ice/ReplyStatus.h +1 -6
  352. data/ext/ice/cpp/src/Ice/RequestHandler.cpp +1 -6
  353. data/ext/ice/cpp/src/Ice/RequestHandler.h +1 -6
  354. data/ext/ice/cpp/src/Ice/RequestHandlerFactory.cpp +1 -6
  355. data/ext/ice/cpp/src/Ice/RequestHandlerFactory.h +1 -6
  356. data/ext/ice/cpp/src/Ice/ResponseHandler.cpp +1 -6
  357. data/ext/ice/cpp/src/Ice/ResponseHandler.h +1 -6
  358. data/ext/ice/cpp/src/Ice/RetryQueue.cpp +7 -9
  359. data/ext/ice/cpp/src/Ice/RetryQueue.h +1 -6
  360. data/ext/ice/cpp/src/Ice/RetryQueueF.h +1 -6
  361. data/ext/ice/cpp/src/Ice/Router.cpp +160 -87
  362. data/ext/ice/cpp/src/Ice/RouterF.cpp +4 -9
  363. data/ext/ice/cpp/src/Ice/RouterInfo.cpp +8 -35
  364. data/ext/ice/cpp/src/Ice/RouterInfo.h +1 -8
  365. data/ext/ice/cpp/src/Ice/RouterInfoF.h +1 -6
  366. data/ext/ice/cpp/src/Ice/SHA1.cpp +3 -8
  367. data/ext/ice/cpp/src/Ice/Selector.cpp +76 -49
  368. data/ext/ice/cpp/src/Ice/Selector.h +1 -6
  369. data/ext/ice/cpp/src/Ice/ServantLocator.cpp +7 -10
  370. data/ext/ice/cpp/src/Ice/ServantLocatorF.cpp +4 -9
  371. data/ext/ice/cpp/src/Ice/ServantManager.cpp +21 -42
  372. data/ext/ice/cpp/src/Ice/ServantManager.h +1 -6
  373. data/ext/ice/cpp/src/Ice/SharedContext.h +1 -6
  374. data/ext/ice/cpp/src/Ice/SliceChecksumDict.cpp +4 -9
  375. data/ext/ice/cpp/src/Ice/SliceChecksums.cpp +1 -6
  376. data/ext/ice/cpp/src/Ice/SlicedData.cpp +1 -6
  377. data/ext/ice/cpp/src/Ice/StreamSocket.cpp +46 -69
  378. data/ext/ice/cpp/src/Ice/StreamSocket.h +1 -6
  379. data/ext/ice/cpp/src/Ice/StringConverterPlugin.cpp +10 -6
  380. data/ext/ice/cpp/src/Ice/StringUtil.h +1 -6
  381. data/ext/ice/cpp/src/Ice/SysLoggerI.cpp +3 -8
  382. data/ext/ice/cpp/src/Ice/SysLoggerI.h +1 -6
  383. data/ext/ice/cpp/src/Ice/SystemdJournalI.cpp +66 -0
  384. data/ext/ice/cpp/src/Ice/SystemdJournalI.h +39 -0
  385. data/ext/ice/cpp/src/Ice/TcpAcceptor.cpp +13 -19
  386. data/ext/ice/cpp/src/Ice/TcpAcceptor.h +1 -6
  387. data/ext/ice/cpp/src/Ice/TcpConnector.cpp +6 -6
  388. data/ext/ice/cpp/src/Ice/TcpConnector.h +1 -6
  389. data/ext/ice/cpp/src/Ice/TcpEndpointI.cpp +13 -16
  390. data/ext/ice/cpp/src/Ice/TcpEndpointI.h +2 -7
  391. data/ext/ice/cpp/src/Ice/TcpTransceiver.cpp +6 -6
  392. data/ext/ice/cpp/src/Ice/TcpTransceiver.h +1 -6
  393. data/ext/ice/cpp/src/Ice/Thread.cpp +18 -14
  394. data/ext/ice/cpp/src/Ice/ThreadPool.cpp +79 -19
  395. data/ext/ice/cpp/src/Ice/ThreadPool.h +11 -12
  396. data/ext/ice/cpp/src/Ice/Timer.cpp +11 -6
  397. data/ext/ice/cpp/src/Ice/TraceLevels.cpp +1 -6
  398. data/ext/ice/cpp/src/Ice/TraceLevels.h +1 -6
  399. data/ext/ice/cpp/src/Ice/TraceLevelsF.h +1 -6
  400. data/ext/ice/cpp/src/Ice/TraceUtil.cpp +1 -6
  401. data/ext/ice/cpp/src/Ice/TraceUtil.h +1 -6
  402. data/ext/ice/cpp/src/Ice/Transceiver.cpp +1 -6
  403. data/ext/ice/cpp/src/Ice/Transceiver.h +1 -6
  404. data/ext/ice/cpp/src/Ice/TransceiverF.h +3 -8
  405. data/ext/ice/cpp/src/Ice/UdpConnector.cpp +4 -6
  406. data/ext/ice/cpp/src/Ice/UdpConnector.h +1 -6
  407. data/ext/ice/cpp/src/Ice/UdpEndpointI.cpp +30 -33
  408. data/ext/ice/cpp/src/Ice/UdpEndpointI.h +2 -7
  409. data/ext/ice/cpp/src/Ice/UdpTransceiver.cpp +49 -79
  410. data/ext/ice/cpp/src/Ice/UdpTransceiver.h +1 -6
  411. data/ext/ice/cpp/src/Ice/Value.cpp +1 -6
  412. data/ext/ice/cpp/src/Ice/ValueFactory.cpp +10 -11
  413. data/ext/ice/cpp/src/Ice/ValueFactoryManagerI.cpp +3 -12
  414. data/ext/ice/cpp/src/Ice/ValueFactoryManagerI.h +2 -7
  415. data/ext/ice/cpp/src/Ice/Version.cpp +4 -9
  416. data/ext/ice/cpp/src/Ice/VirtualShared.h +1 -6
  417. data/ext/ice/cpp/src/Ice/WSAcceptor.cpp +1 -6
  418. data/ext/ice/cpp/src/Ice/WSAcceptor.h +1 -6
  419. data/ext/ice/cpp/src/Ice/WSConnector.cpp +1 -6
  420. data/ext/ice/cpp/src/Ice/WSConnector.h +1 -6
  421. data/ext/ice/cpp/src/Ice/WSEndpoint.cpp +4 -10
  422. data/ext/ice/cpp/src/Ice/WSEndpoint.h +2 -7
  423. data/ext/ice/cpp/src/Ice/WSTransceiver.cpp +25 -30
  424. data/ext/ice/cpp/src/Ice/WSTransceiver.h +1 -7
  425. data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.cpp +86 -33
  426. data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.h +1083 -129
  427. data/ext/ice/cpp/src/IceDiscovery/LocatorI.cpp +4 -7
  428. data/ext/ice/cpp/src/IceDiscovery/LocatorI.h +1 -6
  429. data/ext/ice/cpp/src/IceDiscovery/LookupI.cpp +5 -10
  430. data/ext/ice/cpp/src/IceDiscovery/LookupI.h +1 -6
  431. data/ext/ice/cpp/src/IceDiscovery/PluginI.cpp +1 -6
  432. data/ext/ice/cpp/src/IceDiscovery/PluginI.h +1 -6
  433. data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.cpp +71 -30
  434. data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.h +640 -79
  435. data/ext/ice/cpp/src/IceLocatorDiscovery/Plugin.h +1 -6
  436. data/ext/ice/cpp/src/IceLocatorDiscovery/PluginI.cpp +122 -25
  437. data/ext/ice/cpp/src/IceSSL/AcceptorI.cpp +2 -9
  438. data/ext/ice/cpp/src/IceSSL/AcceptorI.h +1 -6
  439. data/ext/ice/cpp/src/IceSSL/CertificateI.cpp +4 -9
  440. data/ext/ice/cpp/src/IceSSL/CertificateI.h +1 -6
  441. data/ext/ice/cpp/src/IceSSL/ConnectionInfo.cpp +7 -10
  442. data/ext/ice/cpp/src/IceSSL/ConnectionInfoF.cpp +4 -9
  443. data/ext/ice/cpp/src/IceSSL/ConnectorI.cpp +2 -9
  444. data/ext/ice/cpp/src/IceSSL/ConnectorI.h +1 -6
  445. data/ext/ice/cpp/src/IceSSL/EndpointI.cpp +9 -14
  446. data/ext/ice/cpp/src/IceSSL/EndpointI.h +3 -8
  447. data/ext/ice/cpp/src/IceSSL/EndpointInfo.cpp +7 -10
  448. data/ext/ice/cpp/src/IceSSL/Instance.cpp +1 -6
  449. data/ext/ice/cpp/src/IceSSL/Instance.h +1 -6
  450. data/ext/ice/cpp/src/IceSSL/InstanceF.h +1 -6
  451. data/ext/ice/cpp/src/IceSSL/OpenSSLCertificateI.cpp +11 -19
  452. data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.cpp +100 -46
  453. data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.h +3 -8
  454. data/ext/ice/cpp/src/IceSSL/OpenSSLEngineF.h +1 -6
  455. data/ext/ice/cpp/src/IceSSL/OpenSSLPluginI.cpp +1 -6
  456. data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.cpp +190 -206
  457. data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.h +2 -11
  458. data/ext/ice/cpp/src/IceSSL/OpenSSLUtil.cpp +1 -6
  459. data/ext/ice/cpp/src/IceSSL/OpenSSLUtil.h +1 -6
  460. data/ext/ice/cpp/src/IceSSL/PluginI.cpp +1 -6
  461. data/ext/ice/cpp/src/IceSSL/PluginI.h +1 -6
  462. data/ext/ice/cpp/src/IceSSL/RFC2253.cpp +1 -7
  463. data/ext/ice/cpp/src/IceSSL/RFC2253.h +1 -6
  464. data/ext/ice/cpp/src/IceSSL/SChannelCertificateI.cpp +5 -10
  465. data/ext/ice/cpp/src/IceSSL/SChannelEngine.cpp +69 -36
  466. data/ext/ice/cpp/src/IceSSL/SChannelEngine.h +5 -8
  467. data/ext/ice/cpp/src/IceSSL/SChannelEngineF.h +5 -6
  468. data/ext/ice/cpp/src/IceSSL/SChannelPluginI.cpp +1 -6
  469. data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.cpp +71 -62
  470. data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.h +7 -6
  471. data/ext/ice/cpp/src/IceSSL/SSLEngine.cpp +26 -28
  472. data/ext/ice/cpp/src/IceSSL/SSLEngine.h +3 -6
  473. data/ext/ice/cpp/src/IceSSL/SSLEngineF.h +1 -6
  474. data/ext/ice/cpp/src/IceSSL/SecureTransportCertificateI.cpp +37 -31
  475. data/ext/ice/cpp/src/IceSSL/SecureTransportEngine.cpp +44 -18
  476. data/ext/ice/cpp/src/IceSSL/SecureTransportEngine.h +5 -6
  477. data/ext/ice/cpp/src/IceSSL/SecureTransportEngineF.h +4 -6
  478. data/ext/ice/cpp/src/IceSSL/SecureTransportPluginI.cpp +1 -6
  479. data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.cpp +47 -27
  480. data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.h +6 -7
  481. data/ext/ice/cpp/src/IceSSL/SecureTransportUtil.cpp +41 -34
  482. data/ext/ice/cpp/src/IceSSL/SecureTransportUtil.h +5 -6
  483. data/ext/ice/cpp/src/IceSSL/TrustManager.cpp +4 -10
  484. data/ext/ice/cpp/src/IceSSL/TrustManager.h +1 -6
  485. data/ext/ice/cpp/src/IceSSL/TrustManagerF.h +1 -6
  486. data/ext/ice/cpp/src/IceSSL/UWPCertificateI.cpp +4 -9
  487. data/ext/ice/cpp/src/IceSSL/UWPEngine.cpp +4 -9
  488. data/ext/ice/cpp/src/IceSSL/UWPEngine.h +1 -6
  489. data/ext/ice/cpp/src/IceSSL/UWPEngineF.h +1 -6
  490. data/ext/ice/cpp/src/IceSSL/UWPPluginI.cpp +1 -6
  491. data/ext/ice/cpp/src/IceSSL/UWPTransceiverI.cpp +5 -10
  492. data/ext/ice/cpp/src/IceSSL/UWPTransceiverI.h +1 -6
  493. data/ext/ice/cpp/src/IceSSL/Util.cpp +12 -11
  494. data/ext/ice/cpp/src/IceSSL/Util.h +1 -6
  495. data/ext/ice/cpp/src/IceUtil/ConsoleUtil.cpp +1 -6
  496. data/ext/ice/cpp/src/IceUtil/ConvertUTF.cpp +1 -6
  497. data/ext/ice/cpp/src/IceUtil/ConvertUTF.h +1 -6
  498. data/ext/ice/cpp/src/IceUtil/CtrlCHandler.cpp +3 -6
  499. data/ext/ice/cpp/src/IceUtil/FileUtil.cpp +6 -11
  500. data/ext/ice/cpp/src/IceUtil/InputUtil.cpp +1 -6
  501. data/ext/ice/cpp/src/IceUtil/MutexProtocol.cpp +1 -6
  502. data/ext/ice/cpp/src/IceUtil/Options.cpp +25 -15
  503. data/ext/ice/cpp/src/IceUtil/OutputUtil.cpp +41 -16
  504. data/ext/ice/cpp/src/IceUtil/Random.cpp +3 -8
  505. data/ext/ice/cpp/src/IceUtil/RecMutex.cpp +2 -11
  506. data/ext/ice/cpp/src/IceUtil/Shared.cpp +1 -6
  507. data/ext/ice/cpp/src/IceUtil/StringConverter.cpp +6 -11
  508. data/ext/ice/cpp/src/IceUtil/StringUtil.cpp +45 -12
  509. data/ext/ice/cpp/src/IceUtil/ThreadException.cpp +1 -6
  510. data/ext/ice/cpp/src/IceUtil/Time.cpp +10 -17
  511. data/ext/ice/cpp/src/IceUtil/UUID.cpp +8 -13
  512. data/ext/ice/cpp/src/IceUtil/Unicode.cpp +1 -6
  513. data/ext/ice/cpp/src/IceUtil/Unicode.h +1 -6
  514. data/ext/ice/cpp/src/IceUtil/UtilException.cpp +17 -16
  515. data/ext/ice/cpp/src/Slice/CPlusPlusUtil.cpp +178 -170
  516. data/ext/ice/cpp/src/Slice/CPlusPlusUtil.h +8 -12
  517. data/ext/ice/cpp/src/Slice/Checksum.cpp +1 -6
  518. data/ext/ice/cpp/src/Slice/Checksum.h +1 -6
  519. data/ext/ice/cpp/src/Slice/FileTracker.cpp +1 -6
  520. data/ext/ice/cpp/src/Slice/FileTracker.h +1 -6
  521. data/ext/ice/cpp/src/Slice/Grammar.cpp +424 -438
  522. data/ext/ice/cpp/src/Slice/Grammar.h +7 -7
  523. data/ext/ice/cpp/src/Slice/GrammarUtil.h +1 -7
  524. data/ext/ice/cpp/src/Slice/JavaUtil.cpp +195 -122
  525. data/ext/ice/cpp/src/Slice/JavaUtil.h +12 -12
  526. data/ext/ice/cpp/src/Slice/MD5.cpp +1 -6
  527. data/ext/ice/cpp/src/Slice/MD5.h +1 -6
  528. data/ext/ice/cpp/src/Slice/MD5I.cpp +8 -0
  529. data/ext/ice/cpp/src/Slice/PHPUtil.cpp +6 -6
  530. data/ext/ice/cpp/src/Slice/PHPUtil.h +1 -6
  531. data/ext/ice/cpp/src/Slice/Parser.cpp +535 -266
  532. data/ext/ice/cpp/src/Slice/Parser.h +72 -12
  533. data/ext/ice/cpp/src/Slice/Preprocessor.cpp +26 -17
  534. data/ext/ice/cpp/src/Slice/Preprocessor.h +2 -7
  535. data/ext/ice/cpp/src/Slice/Python.cpp +28 -42
  536. data/ext/ice/cpp/src/Slice/PythonUtil.cpp +137 -53
  537. data/ext/ice/cpp/src/Slice/PythonUtil.h +2 -7
  538. data/ext/ice/cpp/src/Slice/Ruby.cpp +5 -10
  539. data/ext/ice/cpp/src/Slice/RubyUtil.cpp +13 -15
  540. data/ext/ice/cpp/src/Slice/RubyUtil.h +1 -6
  541. data/ext/ice/cpp/src/Slice/Scanner.cpp +296 -217
  542. data/ext/ice/cpp/src/Slice/SliceUtil.cpp +2 -8
  543. data/ext/ice/cpp/src/Slice/StringLiteralUtil.cpp +109 -27
  544. data/ext/ice/cpp/src/Slice/Util.h +5 -9
  545. data/ext/ice/mcpp/Makefile +2 -5
  546. data/ice.gemspec +3 -5
  547. data/lib/Glacier2.rb +1 -6
  548. data/lib/Glacier2/Metrics.rb +3 -8
  549. data/lib/Glacier2/PermissionsVerifier.rb +3 -8
  550. data/lib/Glacier2/PermissionsVerifierF.rb +3 -8
  551. data/lib/Glacier2/Router.rb +3 -8
  552. data/lib/Glacier2/RouterF.rb +3 -8
  553. data/lib/Glacier2/SSLInfo.rb +3 -8
  554. data/lib/Glacier2/Session.rb +3 -8
  555. data/lib/Ice.rb +2 -7
  556. data/lib/Ice/BuiltinSequences.rb +3 -8
  557. data/lib/Ice/Communicator.rb +3 -8
  558. data/lib/Ice/CommunicatorF.rb +3 -8
  559. data/lib/Ice/Connection.rb +3 -8
  560. data/lib/Ice/ConnectionF.rb +3 -8
  561. data/lib/Ice/Current.rb +3 -8
  562. data/lib/Ice/Endpoint.rb +3 -8
  563. data/lib/Ice/EndpointF.rb +3 -8
  564. data/lib/Ice/EndpointTypes.rb +3 -8
  565. data/lib/Ice/FacetMap.rb +3 -8
  566. data/lib/Ice/Identity.rb +3 -8
  567. data/lib/Ice/ImplicitContext.rb +3 -8
  568. data/lib/Ice/ImplicitContextF.rb +3 -8
  569. data/lib/Ice/Instrumentation.rb +3 -8
  570. data/lib/Ice/InstrumentationF.rb +3 -8
  571. data/lib/Ice/LocalException.rb +3 -8
  572. data/lib/Ice/Locator.rb +3 -8
  573. data/lib/Ice/LocatorF.rb +3 -8
  574. data/lib/Ice/Logger.rb +3 -8
  575. data/lib/Ice/LoggerF.rb +3 -8
  576. data/lib/Ice/Metrics.rb +3 -8
  577. data/lib/Ice/ObjectAdapter.rb +3 -8
  578. data/lib/Ice/ObjectAdapterF.rb +3 -8
  579. data/lib/Ice/ObjectFactory.rb +3 -8
  580. data/lib/Ice/Plugin.rb +3 -8
  581. data/lib/Ice/PluginF.rb +3 -8
  582. data/lib/Ice/Process.rb +3 -8
  583. data/lib/Ice/ProcessF.rb +3 -8
  584. data/lib/Ice/Properties.rb +3 -8
  585. data/lib/Ice/PropertiesAdmin.rb +3 -8
  586. data/lib/Ice/PropertiesF.rb +3 -8
  587. data/lib/Ice/RemoteLogger.rb +3 -8
  588. data/lib/Ice/Router.rb +3 -8
  589. data/lib/Ice/RouterF.rb +3 -8
  590. data/lib/Ice/ServantLocator.rb +3 -8
  591. data/lib/Ice/ServantLocatorF.rb +3 -8
  592. data/lib/Ice/SliceChecksumDict.rb +3 -8
  593. data/lib/Ice/ValueFactory.rb +3 -8
  594. data/lib/Ice/Version.rb +3 -8
  595. data/lib/IceBox.rb +1 -6
  596. data/lib/IceBox/IceBox.rb +3 -8
  597. data/lib/IceGrid.rb +1 -6
  598. data/lib/IceGrid/Admin.rb +3 -8
  599. data/lib/IceGrid/Descriptor.rb +3 -8
  600. data/lib/IceGrid/Exception.rb +3 -8
  601. data/lib/IceGrid/FileParser.rb +3 -8
  602. data/lib/IceGrid/PluginFacade.rb +3 -8
  603. data/lib/IceGrid/Registry.rb +3 -8
  604. data/lib/IceGrid/Session.rb +3 -8
  605. data/lib/IceGrid/UserAccountMapper.rb +3 -8
  606. data/lib/IcePatch2.rb +1 -6
  607. data/lib/IcePatch2/FileInfo.rb +3 -8
  608. data/lib/IcePatch2/FileServer.rb +3 -8
  609. data/lib/IceStorm.rb +1 -6
  610. data/lib/IceStorm/IceStorm.rb +3 -8
  611. data/lib/IceStorm/Metrics.rb +3 -8
  612. data/slice/Glacier2/Metrics.ice +14 -8
  613. data/slice/Glacier2/PermissionsVerifier.ice +11 -7
  614. data/slice/Glacier2/PermissionsVerifierF.ice +11 -7
  615. data/slice/Glacier2/Router.ice +12 -8
  616. data/slice/Glacier2/RouterF.ice +11 -7
  617. data/slice/Glacier2/SSLInfo.ice +11 -7
  618. data/slice/Glacier2/Session.ice +11 -7
  619. data/slice/Ice/BuiltinSequences.ice +13 -7
  620. data/slice/Ice/Communicator.ice +143 -102
  621. data/slice/Ice/CommunicatorF.ice +13 -7
  622. data/slice/Ice/Connection.ice +65 -29
  623. data/slice/Ice/ConnectionF.ice +13 -7
  624. data/slice/Ice/Current.ice +31 -26
  625. data/slice/Ice/Endpoint.ice +24 -21
  626. data/slice/Ice/EndpointF.ice +14 -8
  627. data/slice/Ice/EndpointTypes.ice +15 -9
  628. data/slice/Ice/FacetMap.ice +14 -8
  629. data/slice/Ice/Identity.ice +13 -7
  630. data/slice/Ice/ImplicitContext.ice +31 -25
  631. data/slice/Ice/ImplicitContextF.ice +12 -7
  632. data/slice/Ice/Instrumentation.ice +19 -13
  633. data/slice/Ice/InstrumentationF.ice +13 -7
  634. data/slice/Ice/LocalException.ice +35 -29
  635. data/slice/Ice/Locator.ice +14 -8
  636. data/slice/Ice/LocatorF.ice +13 -7
  637. data/slice/Ice/Logger.ice +19 -13
  638. data/slice/Ice/LoggerF.ice +13 -7
  639. data/slice/Ice/Metrics.ice +26 -18
  640. data/slice/Ice/ObjectAdapter.ice +63 -45
  641. data/slice/Ice/ObjectAdapterF.ice +13 -7
  642. data/slice/Ice/ObjectFactory.ice +20 -12
  643. data/slice/Ice/Plugin.ice +19 -10
  644. data/slice/Ice/PluginF.ice +17 -7
  645. data/slice/Ice/Process.ice +13 -7
  646. data/slice/Ice/ProcessF.ice +13 -7
  647. data/slice/Ice/Properties.ice +35 -24
  648. data/slice/Ice/PropertiesAdmin.ice +13 -7
  649. data/slice/Ice/PropertiesF.ice +13 -7
  650. data/slice/Ice/RemoteLogger.ice +23 -28
  651. data/slice/Ice/Router.ice +14 -8
  652. data/slice/Ice/RouterF.ice +13 -7
  653. data/slice/Ice/ServantLocator.ice +31 -23
  654. data/slice/Ice/ServantLocatorF.ice +13 -7
  655. data/slice/Ice/SliceChecksumDict.ice +13 -7
  656. data/slice/Ice/ValueFactory.ice +31 -26
  657. data/slice/Ice/Version.ice +13 -7
  658. data/slice/IceBT/ConnectionInfo.ice +12 -7
  659. data/slice/IceBT/EndpointInfo.ice +13 -8
  660. data/slice/IceBT/Types.ice +12 -7
  661. data/slice/IceBox/IceBox.ice +30 -11
  662. data/slice/IceDiscovery/IceDiscovery.ice +68 -7
  663. data/slice/IceGrid/Admin.ice +41 -35
  664. data/slice/IceGrid/Descriptor.ice +15 -10
  665. data/slice/IceGrid/Exception.ice +15 -10
  666. data/slice/IceGrid/FileParser.ice +14 -8
  667. data/slice/IceGrid/PluginFacade.ice +17 -11
  668. data/slice/IceGrid/Registry.ice +13 -7
  669. data/slice/IceGrid/Session.ice +18 -12
  670. data/slice/IceGrid/UserAccountMapper.ice +16 -10
  671. data/slice/IceIAP/ConnectionInfo.ice +11 -8
  672. data/slice/IceIAP/EndpointInfo.ice +11 -8
  673. data/slice/IceLocatorDiscovery/IceLocatorDiscovery.ice +12 -7
  674. data/slice/IcePatch2/FileInfo.ice +12 -7
  675. data/slice/IcePatch2/FileServer.ice +13 -8
  676. data/slice/IceSSL/ConnectionInfo.ice +16 -9
  677. data/slice/IceSSL/ConnectionInfoF.ice +14 -8
  678. data/slice/IceSSL/EndpointInfo.ice +14 -8
  679. data/slice/IceStorm/IceStorm.ice +20 -15
  680. data/slice/IceStorm/Metrics.ice +12 -8
  681. metadata +7 -13
  682. data/BZIP2_LICENSE +0 -42
  683. data/ext/ice/bzip2/blocksort.c +0 -1094
  684. data/ext/ice/bzip2/bzlib.c +0 -1572
  685. data/ext/ice/bzip2/bzlib.h +0 -282
  686. data/ext/ice/bzip2/bzlib_private.h +0 -509
  687. data/ext/ice/bzip2/compress.c +0 -672
  688. data/ext/ice/bzip2/crctable.c +0 -104
  689. data/ext/ice/bzip2/decompress.c +0 -646
  690. data/ext/ice/bzip2/huffman.c +0 -205
  691. data/ext/ice/bzip2/randtable.c +0 -84
@@ -1,15 +1,21 @@
1
- // **********************************************************************
2
1
  //
3
- // Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
2
+ // Copyright (c) ZeroC, Inc. All rights reserved.
4
3
  //
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
4
 
10
5
  #pragma once
11
6
 
12
- [["ice-prefix", "cpp:header-ext:h", "cpp:dll-export:ICESSL_API", "objc:header-dir:objc", "objc:dll-export:ICESSL_API", "js:ice-build", "python:pkgdir:IceSSL"]]
7
+ [["cpp:dll-export:ICESSL_API"]]
8
+ [["cpp:doxygen:include:IceSSL/IceSSL.h"]]
9
+ [["cpp:header-ext:h"]]
10
+
11
+ [["ice-prefix"]]
12
+
13
+ [["js:module:ice"]]
14
+
15
+ [["objc:dll-export:ICESSL_API"]]
16
+ [["objc:header-dir:objc"]]
17
+
18
+ [["python:pkgdir:IceSSL"]]
13
19
 
14
20
  [["cpp:include:IceSSL/Plugin.h"]]
15
21
 
@@ -19,7 +25,7 @@
19
25
  [["java:package:com.zeroc"]]
20
26
  #endif
21
27
 
22
- ["objc:prefix:ICESSL"]
28
+ ["objc:prefix:ICESSL", "swift:module:Ice:SSL"]
23
29
  module IceSSL
24
30
  {
25
31
 
@@ -36,7 +42,8 @@ local class ConnectionInfo extends Ice::ConnectionInfo
36
42
  /** The certificate chain. */
37
43
  ["cpp:type:std::vector<CertificatePtr>",
38
44
  "java:type:java.security.cert.Certificate[]",
39
- "cs:type:System.Security.Cryptography.X509Certificates.X509Certificate2[]"]
45
+ "cs:type:System.Security.Cryptography.X509Certificates.X509Certificate2[]",
46
+ "swift:type:[SecCertificate]"]
40
47
  Ice::StringSeq certs;
41
48
 
42
49
  /** The certificate chain verification status. */
@@ -1,21 +1,27 @@
1
- // **********************************************************************
2
1
  //
3
- // Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
2
+ // Copyright (c) ZeroC, Inc. All rights reserved.
4
3
  //
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
4
 
10
5
  #pragma once
11
6
 
12
- [["ice-prefix", "cpp:header-ext:h", "cpp:dll-export:ICESSL_API", "objc:header-dir:objc", "objc:dll-export:ICESSL_API", "js:ice-build", "python:pkgdir:IceSSL"]]
7
+ [["cpp:dll-export:ICESSL_API"]]
8
+ [["cpp:doxygen:include:IceSSL/IceSSL.h"]]
9
+ [["cpp:header-ext:h"]]
10
+
11
+ [["ice-prefix"]]
12
+
13
+ [["js:module:ice"]]
14
+
15
+ [["objc:dll-export:ICESSL_API"]]
16
+ [["objc:header-dir:objc"]]
17
+
18
+ [["python:pkgdir:IceSSL"]]
13
19
 
14
20
  #ifndef __SLICE2JAVA_COMPAT__
15
21
  [["java:package:com.zeroc"]]
16
22
  #endif
17
23
 
18
- ["objc:prefix:ICESSL"]
24
+ ["objc:prefix:ICESSL", "swift:module:Ice:SSL"]
19
25
  module IceSSL
20
26
  {
21
27
 
@@ -1,15 +1,21 @@
1
- // **********************************************************************
2
1
  //
3
- // Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
2
+ // Copyright (c) ZeroC, Inc. All rights reserved.
4
3
  //
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
4
 
10
5
  #pragma once
11
6
 
12
- [["ice-prefix", "cpp:header-ext:h", "cpp:dll-export:ICESSL_API", "objc:header-dir:objc", "objc:dll-export:ICESSL_API", "js:ice-build", "python:pkgdir:IceSSL"]]
7
+ [["cpp:dll-export:ICESSL_API"]]
8
+ [["cpp:doxygen:include:IceSSL/IceSSL.h"]]
9
+ [["cpp:header-ext:h"]]
10
+
11
+ [["ice-prefix"]]
12
+
13
+ [["js:module:ice"]]
14
+
15
+ [["objc:dll-export:ICESSL_API"]]
16
+ [["objc:header-dir:objc"]]
17
+
18
+ [["python:pkgdir:IceSSL"]]
13
19
 
14
20
  #include <Ice/Endpoint.ice>
15
21
 
@@ -22,7 +28,7 @@
22
28
  [["java:package:com.zeroc"]]
23
29
  #endif
24
30
 
25
- ["objc:prefix:ICESSL"]
31
+ ["objc:prefix:ICESSL", "swift:module:Ice:SSL"]
26
32
  module IceSSL
27
33
  {
28
34
 
@@ -1,17 +1,23 @@
1
- // **********************************************************************
2
1
  //
3
- // Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
2
+ // Copyright (c) ZeroC, Inc. All rights reserved.
4
3
  //
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
4
 
10
5
  #pragma once
11
6
 
12
- [["ice-prefix", "cpp:header-ext:h", "cpp:dll-export:ICESTORM_API", "objc:header-dir:objc", "objc:dll-export:ICESTORM_API", "js:ice-build", "python:pkgdir:IceStorm"]]
7
+ [["cpp:dll-export:ICESTORM_API"]]
8
+ [["cpp:doxygen:include:IceStorm/IceStorm.h"]]
9
+ [["cpp:header-ext:h"]]
13
10
  [["cpp:include:IceStorm/Config.h"]]
14
11
 
12
+ [["ice-prefix"]]
13
+
14
+ [["js:module:ice"]]
15
+
16
+ [["objc:dll-export:ICESTORM_API"]]
17
+ [["objc:header-dir:objc"]]
18
+
19
+ [["python:pkgdir:IceStorm"]]
20
+
15
21
  #include <Ice/Identity.ice>
16
22
  #include <Ice/SliceChecksumDict.ice>
17
23
 
@@ -178,7 +184,7 @@ interface Topic
178
184
  /**
179
185
  *
180
186
  * Get a proxy to a publisher object for this topic. To publish
181
- * data to a topic, the publisher calls {@link Topic#getPublisher} and then
187
+ * data to a topic, the publisher calls getPublisher and then
182
188
  * casts to the topic type. An unchecked cast must be used on this
183
189
  * proxy. If a replicated IceStorm deployment is used this call
184
190
  * may return a replicated proxy.
@@ -192,7 +198,7 @@ interface Topic
192
198
  *
193
199
  * Get a non-replicated proxy to a publisher object for this
194
200
  * topic. To publish data to a topic, the publisher calls
195
- * {@link Topic#getPublisher} and then casts to the topic type. An unchecked
201
+ * getPublisher and then casts to the topic type. An unchecked
196
202
  * cast must be used on this proxy.
197
203
  *
198
204
  * @return A proxy to publish data on this topic.
@@ -202,7 +208,7 @@ interface Topic
202
208
 
203
209
  /**
204
210
  *
205
- * Subscribe with the given <tt>qos</tt> to this topic. A
211
+ * Subscribe with the given <code>qos</code> to this topic. A
206
212
  * per-subscriber publisher object is returned.
207
213
  *
208
214
  * @param theQoS The quality of service parameters for this
@@ -228,7 +234,7 @@ interface Topic
228
234
 
229
235
  /**
230
236
  *
231
- * Unsubscribe the given <tt>subscriber</tt>.
237
+ * Unsubscribe the given <code>subscriber</code>.
232
238
  *
233
239
  * @param subscriber The proxy of an existing subscriber.
234
240
  *
@@ -240,7 +246,7 @@ interface Topic
240
246
  /**
241
247
  *
242
248
  * Create a link to the given topic. All events originating
243
- * on this topic will also be sent to <tt>linkTo</tt>.
249
+ * on this topic will also be sent to <code>linkTo</code>.
244
250
  *
245
251
  * @param linkTo The topic to link to.
246
252
  *
@@ -254,7 +260,7 @@ interface Topic
254
260
 
255
261
  /**
256
262
  *
257
- * Destroy the link from this topic to the given topic <tt>linkTo</tt>.
263
+ * Destroy the link from this topic to the given topic <code>linkTo</code>.
258
264
  *
259
265
  * @param linkTo The topic to destroy the link to.
260
266
  *
@@ -339,8 +345,7 @@ interface TopicManager
339
345
  {
340
346
  /**
341
347
  *
342
- * Create a new topic. The topic name must be unique, otherwise
343
- * {@link TopicExists} is raised.
348
+ * Create a new topic. The topic name must be unique.
344
349
  *
345
350
  * @param name The name of the topic.
346
351
  *
@@ -1,24 +1,28 @@
1
- // **********************************************************************
2
1
  //
3
- // Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
2
+ // Copyright (c) ZeroC, Inc. All rights reserved.
4
3
  //
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
4
 
10
5
  #pragma once
11
6
 
12
- [["ice-prefix", "cpp:header-ext:h", "cpp:dll-export:ICESTORM_API", "objc:header-dir:objc", "objc:dll-export:ICESTORM_API", "js:ice-build", "python:pkgdir:IceStorm"]]
7
+ [["cpp:dll-export:ICESTORM_API"]]
8
+ [["cpp:doxygen:include:IceStorm/IceStorm.h"]]
9
+ [["cpp:header-ext:h"]]
13
10
  [["cpp:include:IceStorm/Config.h"]]
14
11
 
12
+ [["ice-prefix"]]
13
+
14
+ [["objc:dll-export:ICESTORM_API"]]
15
+ [["objc:header-dir:objc"]]
16
+
17
+ [["python:pkgdir:IceStorm"]]
18
+
15
19
  #include <Ice/Metrics.ice>
16
20
 
17
21
  #ifndef __SLICE2JAVA_COMPAT__
18
22
  [["java:package:com.zeroc"]]
19
23
  #endif
20
24
 
21
- ["objc:prefix:ICEMX"]
25
+ ["objc:prefix:ICEMX", "js:module:ice", "swift:module:IceStorm:MX"]
22
26
  module IceMX
23
27
  {
24
28
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zeroc-ice
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.7.0
4
+ version: 3.7.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - ZeroC, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-07-21 00:00:00.000000000 Z
11
+ date: 2021-01-22 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: |
14
14
  The Internet Communications Engine (Ice) provides a robust, proven
@@ -33,7 +33,6 @@ extensions:
33
33
  - ext/extconf.rb
34
34
  extra_rdoc_files: []
35
35
  files:
36
- - BZIP2_LICENSE
37
36
  - ICE_LICENSE
38
37
  - LICENSE
39
38
  - MCPP_LICENSE
@@ -65,15 +64,6 @@ files:
65
64
  - ext/ValueFactoryManager.cpp
66
65
  - ext/ValueFactoryManager.h
67
66
  - ext/extconf.rb
68
- - ext/ice/bzip2/blocksort.c
69
- - ext/ice/bzip2/bzlib.c
70
- - ext/ice/bzip2/bzlib.h
71
- - ext/ice/bzip2/bzlib_private.h
72
- - ext/ice/bzip2/compress.c
73
- - ext/ice/bzip2/crctable.c
74
- - ext/ice/bzip2/decompress.c
75
- - ext/ice/bzip2/huffman.c
76
- - ext/ice/bzip2/randtable.c
77
67
  - ext/ice/cpp/include/Ice/Application.h
78
68
  - ext/ice/cpp/include/Ice/AsyncResult.h
79
69
  - ext/ice/cpp/include/Ice/AsyncResultF.h
@@ -345,6 +335,8 @@ files:
345
335
  - ext/ice/cpp/src/Ice/NetworkProxy.cpp
346
336
  - ext/ice/cpp/src/Ice/NetworkProxy.h
347
337
  - ext/ice/cpp/src/Ice/NetworkProxyF.h
338
+ - ext/ice/cpp/src/Ice/OSLogLoggerI.cpp
339
+ - ext/ice/cpp/src/Ice/OSLogLoggerI.h
348
340
  - ext/ice/cpp/src/Ice/Object.cpp
349
341
  - ext/ice/cpp/src/Ice/ObjectAdapter.cpp
350
342
  - ext/ice/cpp/src/Ice/ObjectAdapterF.cpp
@@ -424,6 +416,8 @@ files:
424
416
  - ext/ice/cpp/src/Ice/StringUtil.h
425
417
  - ext/ice/cpp/src/Ice/SysLoggerI.cpp
426
418
  - ext/ice/cpp/src/Ice/SysLoggerI.h
419
+ - ext/ice/cpp/src/Ice/SystemdJournalI.cpp
420
+ - ext/ice/cpp/src/Ice/SystemdJournalI.h
427
421
  - ext/ice/cpp/src/Ice/TcpAcceptor.cpp
428
422
  - ext/ice/cpp/src/Ice/TcpAcceptor.h
429
423
  - ext/ice/cpp/src/Ice/TcpConnector.cpp
@@ -760,7 +754,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
760
754
  version: '0'
761
755
  requirements: []
762
756
  rubyforge_project:
763
- rubygems_version: 2.5.1
757
+ rubygems_version: 2.7.6
764
758
  signing_key:
765
759
  specification_version: 4
766
760
  summary: ZeroC Ice for Ruby
@@ -1,42 +0,0 @@
1
-
2
- --------------------------------------------------------------------------
3
-
4
- This program, "bzip2", the associated library "libbzip2", and all
5
- documentation, are copyright (C) 1996-2010 Julian R Seward. All
6
- rights reserved.
7
-
8
- Redistribution and use in source and binary forms, with or without
9
- modification, are permitted provided that the following conditions
10
- are met:
11
-
12
- 1. Redistributions of source code must retain the above copyright
13
- notice, this list of conditions and the following disclaimer.
14
-
15
- 2. The origin of this software must not be misrepresented; you must
16
- not claim that you wrote the original software. If you use this
17
- software in a product, an acknowledgment in the product
18
- documentation would be appreciated but is not required.
19
-
20
- 3. Altered source versions must be plainly marked as such, and must
21
- not be misrepresented as being the original software.
22
-
23
- 4. The name of the author may not be used to endorse or promote
24
- products derived from this software without specific prior written
25
- permission.
26
-
27
- THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
28
- OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
29
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
30
- ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
31
- DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
32
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
33
- GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
34
- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
35
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
36
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
37
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
38
-
39
- Julian Seward, jseward@bzip.org
40
- bzip2/libbzip2 version 1.0.6 of 6 September 2010
41
-
42
- --------------------------------------------------------------------------
@@ -1,1094 +0,0 @@
1
-
2
- /*-------------------------------------------------------------*/
3
- /*--- Block sorting machinery ---*/
4
- /*--- blocksort.c ---*/
5
- /*-------------------------------------------------------------*/
6
-
7
- /* ------------------------------------------------------------------
8
- This file is part of bzip2/libbzip2, a program and library for
9
- lossless, block-sorting data compression.
10
-
11
- bzip2/libbzip2 version 1.0.6 of 6 September 2010
12
- Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
13
-
14
- Please read the WARNING, DISCLAIMER and PATENTS sections in the
15
- README file.
16
-
17
- This program is released under the terms of the license contained
18
- in the file LICENSE.
19
- ------------------------------------------------------------------ */
20
-
21
-
22
- #include "bzlib_private.h"
23
-
24
- /*---------------------------------------------*/
25
- /*--- Fallback O(N log(N)^2) sorting ---*/
26
- /*--- algorithm, for repetitive blocks ---*/
27
- /*---------------------------------------------*/
28
-
29
- /*---------------------------------------------*/
30
- static
31
- __inline__
32
- void fallbackSimpleSort ( UInt32* fmap,
33
- UInt32* eclass,
34
- Int32 lo,
35
- Int32 hi )
36
- {
37
- Int32 i, j, tmp;
38
- UInt32 ec_tmp;
39
-
40
- if (lo == hi) return;
41
-
42
- if (hi - lo > 3) {
43
- for ( i = hi-4; i >= lo; i-- ) {
44
- tmp = fmap[i];
45
- ec_tmp = eclass[tmp];
46
- for ( j = i+4; j <= hi && ec_tmp > eclass[fmap[j]]; j += 4 )
47
- fmap[j-4] = fmap[j];
48
- fmap[j-4] = tmp;
49
- }
50
- }
51
-
52
- for ( i = hi-1; i >= lo; i-- ) {
53
- tmp = fmap[i];
54
- ec_tmp = eclass[tmp];
55
- for ( j = i+1; j <= hi && ec_tmp > eclass[fmap[j]]; j++ )
56
- fmap[j-1] = fmap[j];
57
- fmap[j-1] = tmp;
58
- }
59
- }
60
-
61
-
62
- /*---------------------------------------------*/
63
- #define fswap(zz1, zz2) \
64
- { Int32 zztmp = zz1; zz1 = zz2; zz2 = zztmp; }
65
-
66
- #define fvswap(zzp1, zzp2, zzn) \
67
- { \
68
- Int32 yyp1 = (zzp1); \
69
- Int32 yyp2 = (zzp2); \
70
- Int32 yyn = (zzn); \
71
- while (yyn > 0) { \
72
- fswap(fmap[yyp1], fmap[yyp2]); \
73
- yyp1++; yyp2++; yyn--; \
74
- } \
75
- }
76
-
77
-
78
- #define fmin(a,b) ((a) < (b)) ? (a) : (b)
79
-
80
- #define fpush(lz,hz) { stackLo[sp] = lz; \
81
- stackHi[sp] = hz; \
82
- sp++; }
83
-
84
- #define fpop(lz,hz) { sp--; \
85
- lz = stackLo[sp]; \
86
- hz = stackHi[sp]; }
87
-
88
- #define FALLBACK_QSORT_SMALL_THRESH 10
89
- #define FALLBACK_QSORT_STACK_SIZE 100
90
-
91
-
92
- static
93
- void fallbackQSort3 ( UInt32* fmap,
94
- UInt32* eclass,
95
- Int32 loSt,
96
- Int32 hiSt )
97
- {
98
- Int32 unLo, unHi, ltLo, gtHi, n, m;
99
- Int32 sp, lo, hi;
100
- UInt32 med, r, r3;
101
- Int32 stackLo[FALLBACK_QSORT_STACK_SIZE];
102
- Int32 stackHi[FALLBACK_QSORT_STACK_SIZE];
103
-
104
- r = 0;
105
-
106
- sp = 0;
107
- fpush ( loSt, hiSt );
108
-
109
- while (sp > 0) {
110
-
111
- AssertH ( sp < FALLBACK_QSORT_STACK_SIZE - 1, 1004 );
112
-
113
- fpop ( lo, hi );
114
- if (hi - lo < FALLBACK_QSORT_SMALL_THRESH) {
115
- fallbackSimpleSort ( fmap, eclass, lo, hi );
116
- continue;
117
- }
118
-
119
- /* Random partitioning. Median of 3 sometimes fails to
120
- avoid bad cases. Median of 9 seems to help but
121
- looks rather expensive. This too seems to work but
122
- is cheaper. Guidance for the magic constants
123
- 7621 and 32768 is taken from Sedgewick's algorithms
124
- book, chapter 35.
125
- */
126
- r = ((r * 7621) + 1) % 32768;
127
- r3 = r % 3;
128
- if (r3 == 0) med = eclass[fmap[lo]]; else
129
- if (r3 == 1) med = eclass[fmap[(lo+hi)>>1]]; else
130
- med = eclass[fmap[hi]];
131
-
132
- unLo = ltLo = lo;
133
- unHi = gtHi = hi;
134
-
135
- while (1) {
136
- while (1) {
137
- if (unLo > unHi) break;
138
- n = (Int32)eclass[fmap[unLo]] - (Int32)med;
139
- if (n == 0) {
140
- fswap(fmap[unLo], fmap[ltLo]);
141
- ltLo++; unLo++;
142
- continue;
143
- };
144
- if (n > 0) break;
145
- unLo++;
146
- }
147
- while (1) {
148
- if (unLo > unHi) break;
149
- n = (Int32)eclass[fmap[unHi]] - (Int32)med;
150
- if (n == 0) {
151
- fswap(fmap[unHi], fmap[gtHi]);
152
- gtHi--; unHi--;
153
- continue;
154
- };
155
- if (n < 0) break;
156
- unHi--;
157
- }
158
- if (unLo > unHi) break;
159
- fswap(fmap[unLo], fmap[unHi]); unLo++; unHi--;
160
- }
161
-
162
- AssertD ( unHi == unLo-1, "fallbackQSort3(2)" );
163
-
164
- if (gtHi < ltLo) continue;
165
-
166
- n = fmin(ltLo-lo, unLo-ltLo); fvswap(lo, unLo-n, n);
167
- m = fmin(hi-gtHi, gtHi-unHi); fvswap(unLo, hi-m+1, m);
168
-
169
- n = lo + unLo - ltLo - 1;
170
- m = hi - (gtHi - unHi) + 1;
171
-
172
- if (n - lo > hi - m) {
173
- fpush ( lo, n );
174
- fpush ( m, hi );
175
- } else {
176
- fpush ( m, hi );
177
- fpush ( lo, n );
178
- }
179
- }
180
- }
181
-
182
- #undef fmin
183
- #undef fpush
184
- #undef fpop
185
- #undef fswap
186
- #undef fvswap
187
- #undef FALLBACK_QSORT_SMALL_THRESH
188
- #undef FALLBACK_QSORT_STACK_SIZE
189
-
190
-
191
- /*---------------------------------------------*/
192
- /* Pre:
193
- nblock > 0
194
- eclass exists for [0 .. nblock-1]
195
- ((UChar*)eclass) [0 .. nblock-1] holds block
196
- ptr exists for [0 .. nblock-1]
197
-
198
- Post:
199
- ((UChar*)eclass) [0 .. nblock-1] holds block
200
- All other areas of eclass destroyed
201
- fmap [0 .. nblock-1] holds sorted order
202
- bhtab [ 0 .. 2+(nblock/32) ] destroyed
203
- */
204
-
205
- #define SET_BH(zz) bhtab[(zz) >> 5] |= (1 << ((zz) & 31))
206
- #define CLEAR_BH(zz) bhtab[(zz) >> 5] &= ~(1 << ((zz) & 31))
207
- #define ISSET_BH(zz) (bhtab[(zz) >> 5] & (1 << ((zz) & 31)))
208
- #define WORD_BH(zz) bhtab[(zz) >> 5]
209
- #define UNALIGNED_BH(zz) ((zz) & 0x01f)
210
-
211
- static
212
- void fallbackSort ( UInt32* fmap,
213
- UInt32* eclass,
214
- UInt32* bhtab,
215
- Int32 nblock,
216
- Int32 verb )
217
- {
218
- Int32 ftab[257];
219
- Int32 ftabCopy[256];
220
- Int32 H, i, j, k, l, r, cc, cc1;
221
- Int32 nNotDone;
222
- Int32 nBhtab;
223
- UChar* eclass8 = (UChar*)eclass;
224
-
225
- /*--
226
- Initial 1-char radix sort to generate
227
- initial fmap and initial BH bits.
228
- --*/
229
- if (verb >= 4)
230
- VPrintf0 ( " bucket sorting ...\n" );
231
- for (i = 0; i < 257; i++) ftab[i] = 0;
232
- for (i = 0; i < nblock; i++) ftab[eclass8[i]]++;
233
- for (i = 0; i < 256; i++) ftabCopy[i] = ftab[i];
234
- for (i = 1; i < 257; i++) ftab[i] += ftab[i-1];
235
-
236
- for (i = 0; i < nblock; i++) {
237
- j = eclass8[i];
238
- k = ftab[j] - 1;
239
- ftab[j] = k;
240
- fmap[k] = i;
241
- }
242
-
243
- nBhtab = 2 + (nblock / 32);
244
- for (i = 0; i < nBhtab; i++) bhtab[i] = 0;
245
- for (i = 0; i < 256; i++) SET_BH(ftab[i]);
246
-
247
- /*--
248
- Inductively refine the buckets. Kind-of an
249
- "exponential radix sort" (!), inspired by the
250
- Manber-Myers suffix array construction algorithm.
251
- --*/
252
-
253
- /*-- set sentinel bits for block-end detection --*/
254
- for (i = 0; i < 32; i++) {
255
- SET_BH(nblock + 2*i);
256
- CLEAR_BH(nblock + 2*i + 1);
257
- }
258
-
259
- /*-- the log(N) loop --*/
260
- H = 1;
261
- while (1) {
262
-
263
- if (verb >= 4)
264
- VPrintf1 ( " depth %6d has ", H );
265
-
266
- j = 0;
267
- for (i = 0; i < nblock; i++) {
268
- if (ISSET_BH(i)) j = i;
269
- k = fmap[i] - H; if (k < 0) k += nblock;
270
- eclass[k] = j;
271
- }
272
-
273
- nNotDone = 0;
274
- r = -1;
275
- while (1) {
276
-
277
- /*-- find the next non-singleton bucket --*/
278
- k = r + 1;
279
- while (ISSET_BH(k) && UNALIGNED_BH(k)) k++;
280
- if (ISSET_BH(k)) {
281
- while (WORD_BH(k) == 0xffffffff) k += 32;
282
- while (ISSET_BH(k)) k++;
283
- }
284
- l = k - 1;
285
- if (l >= nblock) break;
286
- while (!ISSET_BH(k) && UNALIGNED_BH(k)) k++;
287
- if (!ISSET_BH(k)) {
288
- while (WORD_BH(k) == 0x00000000) k += 32;
289
- while (!ISSET_BH(k)) k++;
290
- }
291
- r = k - 1;
292
- if (r >= nblock) break;
293
-
294
- /*-- now [l, r] bracket current bucket --*/
295
- if (r > l) {
296
- nNotDone += (r - l + 1);
297
- fallbackQSort3 ( fmap, eclass, l, r );
298
-
299
- /*-- scan bucket and generate header bits-- */
300
- cc = -1;
301
- for (i = l; i <= r; i++) {
302
- cc1 = eclass[fmap[i]];
303
- if (cc != cc1) { SET_BH(i); cc = cc1; };
304
- }
305
- }
306
- }
307
-
308
- if (verb >= 4)
309
- VPrintf1 ( "%6d unresolved strings\n", nNotDone );
310
-
311
- H *= 2;
312
- if (H > nblock || nNotDone == 0) break;
313
- }
314
-
315
- /*--
316
- Reconstruct the original block in
317
- eclass8 [0 .. nblock-1], since the
318
- previous phase destroyed it.
319
- --*/
320
- if (verb >= 4)
321
- VPrintf0 ( " reconstructing block ...\n" );
322
- j = 0;
323
- for (i = 0; i < nblock; i++) {
324
- while (ftabCopy[j] == 0) j++;
325
- ftabCopy[j]--;
326
- eclass8[fmap[i]] = (UChar)j;
327
- }
328
- AssertH ( j < 256, 1005 );
329
- }
330
-
331
- #undef SET_BH
332
- #undef CLEAR_BH
333
- #undef ISSET_BH
334
- #undef WORD_BH
335
- #undef UNALIGNED_BH
336
-
337
-
338
- /*---------------------------------------------*/
339
- /*--- The main, O(N^2 log(N)) sorting ---*/
340
- /*--- algorithm. Faster for "normal" ---*/
341
- /*--- non-repetitive blocks. ---*/
342
- /*---------------------------------------------*/
343
-
344
- /*---------------------------------------------*/
345
- static
346
- __inline__
347
- Bool mainGtU ( UInt32 i1,
348
- UInt32 i2,
349
- UChar* block,
350
- UInt16* quadrant,
351
- UInt32 nblock,
352
- Int32* budget )
353
- {
354
- Int32 k;
355
- UChar c1, c2;
356
- UInt16 s1, s2;
357
-
358
- AssertD ( i1 != i2, "mainGtU" );
359
- /* 1 */
360
- c1 = block[i1]; c2 = block[i2];
361
- if (c1 != c2) return (c1 > c2);
362
- i1++; i2++;
363
- /* 2 */
364
- c1 = block[i1]; c2 = block[i2];
365
- if (c1 != c2) return (c1 > c2);
366
- i1++; i2++;
367
- /* 3 */
368
- c1 = block[i1]; c2 = block[i2];
369
- if (c1 != c2) return (c1 > c2);
370
- i1++; i2++;
371
- /* 4 */
372
- c1 = block[i1]; c2 = block[i2];
373
- if (c1 != c2) return (c1 > c2);
374
- i1++; i2++;
375
- /* 5 */
376
- c1 = block[i1]; c2 = block[i2];
377
- if (c1 != c2) return (c1 > c2);
378
- i1++; i2++;
379
- /* 6 */
380
- c1 = block[i1]; c2 = block[i2];
381
- if (c1 != c2) return (c1 > c2);
382
- i1++; i2++;
383
- /* 7 */
384
- c1 = block[i1]; c2 = block[i2];
385
- if (c1 != c2) return (c1 > c2);
386
- i1++; i2++;
387
- /* 8 */
388
- c1 = block[i1]; c2 = block[i2];
389
- if (c1 != c2) return (c1 > c2);
390
- i1++; i2++;
391
- /* 9 */
392
- c1 = block[i1]; c2 = block[i2];
393
- if (c1 != c2) return (c1 > c2);
394
- i1++; i2++;
395
- /* 10 */
396
- c1 = block[i1]; c2 = block[i2];
397
- if (c1 != c2) return (c1 > c2);
398
- i1++; i2++;
399
- /* 11 */
400
- c1 = block[i1]; c2 = block[i2];
401
- if (c1 != c2) return (c1 > c2);
402
- i1++; i2++;
403
- /* 12 */
404
- c1 = block[i1]; c2 = block[i2];
405
- if (c1 != c2) return (c1 > c2);
406
- i1++; i2++;
407
-
408
- k = nblock + 8;
409
-
410
- do {
411
- /* 1 */
412
- c1 = block[i1]; c2 = block[i2];
413
- if (c1 != c2) return (c1 > c2);
414
- s1 = quadrant[i1]; s2 = quadrant[i2];
415
- if (s1 != s2) return (s1 > s2);
416
- i1++; i2++;
417
- /* 2 */
418
- c1 = block[i1]; c2 = block[i2];
419
- if (c1 != c2) return (c1 > c2);
420
- s1 = quadrant[i1]; s2 = quadrant[i2];
421
- if (s1 != s2) return (s1 > s2);
422
- i1++; i2++;
423
- /* 3 */
424
- c1 = block[i1]; c2 = block[i2];
425
- if (c1 != c2) return (c1 > c2);
426
- s1 = quadrant[i1]; s2 = quadrant[i2];
427
- if (s1 != s2) return (s1 > s2);
428
- i1++; i2++;
429
- /* 4 */
430
- c1 = block[i1]; c2 = block[i2];
431
- if (c1 != c2) return (c1 > c2);
432
- s1 = quadrant[i1]; s2 = quadrant[i2];
433
- if (s1 != s2) return (s1 > s2);
434
- i1++; i2++;
435
- /* 5 */
436
- c1 = block[i1]; c2 = block[i2];
437
- if (c1 != c2) return (c1 > c2);
438
- s1 = quadrant[i1]; s2 = quadrant[i2];
439
- if (s1 != s2) return (s1 > s2);
440
- i1++; i2++;
441
- /* 6 */
442
- c1 = block[i1]; c2 = block[i2];
443
- if (c1 != c2) return (c1 > c2);
444
- s1 = quadrant[i1]; s2 = quadrant[i2];
445
- if (s1 != s2) return (s1 > s2);
446
- i1++; i2++;
447
- /* 7 */
448
- c1 = block[i1]; c2 = block[i2];
449
- if (c1 != c2) return (c1 > c2);
450
- s1 = quadrant[i1]; s2 = quadrant[i2];
451
- if (s1 != s2) return (s1 > s2);
452
- i1++; i2++;
453
- /* 8 */
454
- c1 = block[i1]; c2 = block[i2];
455
- if (c1 != c2) return (c1 > c2);
456
- s1 = quadrant[i1]; s2 = quadrant[i2];
457
- if (s1 != s2) return (s1 > s2);
458
- i1++; i2++;
459
-
460
- if (i1 >= nblock) i1 -= nblock;
461
- if (i2 >= nblock) i2 -= nblock;
462
-
463
- k -= 8;
464
- (*budget)--;
465
- }
466
- while (k >= 0);
467
-
468
- return False;
469
- }
470
-
471
-
472
- /*---------------------------------------------*/
473
- /*--
474
- Knuth's increments seem to work better
475
- than Incerpi-Sedgewick here. Possibly
476
- because the number of elems to sort is
477
- usually small, typically <= 20.
478
- --*/
479
- static
480
- Int32 incs[14] = { 1, 4, 13, 40, 121, 364, 1093, 3280,
481
- 9841, 29524, 88573, 265720,
482
- 797161, 2391484 };
483
-
484
- static
485
- void mainSimpleSort ( UInt32* ptr,
486
- UChar* block,
487
- UInt16* quadrant,
488
- Int32 nblock,
489
- Int32 lo,
490
- Int32 hi,
491
- Int32 d,
492
- Int32* budget )
493
- {
494
- Int32 i, j, h, bigN, hp;
495
- UInt32 v;
496
-
497
- bigN = hi - lo + 1;
498
- if (bigN < 2) return;
499
-
500
- hp = 0;
501
- while (incs[hp] < bigN) hp++;
502
- hp--;
503
-
504
- for (; hp >= 0; hp--) {
505
- h = incs[hp];
506
-
507
- i = lo + h;
508
- while (True) {
509
-
510
- /*-- copy 1 --*/
511
- if (i > hi) break;
512
- v = ptr[i];
513
- j = i;
514
- while ( mainGtU (
515
- ptr[j-h]+d, v+d, block, quadrant, nblock, budget
516
- ) ) {
517
- ptr[j] = ptr[j-h];
518
- j = j - h;
519
- if (j <= (lo + h - 1)) break;
520
- }
521
- ptr[j] = v;
522
- i++;
523
-
524
- /*-- copy 2 --*/
525
- if (i > hi) break;
526
- v = ptr[i];
527
- j = i;
528
- while ( mainGtU (
529
- ptr[j-h]+d, v+d, block, quadrant, nblock, budget
530
- ) ) {
531
- ptr[j] = ptr[j-h];
532
- j = j - h;
533
- if (j <= (lo + h - 1)) break;
534
- }
535
- ptr[j] = v;
536
- i++;
537
-
538
- /*-- copy 3 --*/
539
- if (i > hi) break;
540
- v = ptr[i];
541
- j = i;
542
- while ( mainGtU (
543
- ptr[j-h]+d, v+d, block, quadrant, nblock, budget
544
- ) ) {
545
- ptr[j] = ptr[j-h];
546
- j = j - h;
547
- if (j <= (lo + h - 1)) break;
548
- }
549
- ptr[j] = v;
550
- i++;
551
-
552
- if (*budget < 0) return;
553
- }
554
- }
555
- }
556
-
557
-
558
- /*---------------------------------------------*/
559
- /*--
560
- The following is an implementation of
561
- an elegant 3-way quicksort for strings,
562
- described in a paper "Fast Algorithms for
563
- Sorting and Searching Strings", by Robert
564
- Sedgewick and Jon L. Bentley.
565
- --*/
566
-
567
- #define mswap(zz1, zz2) \
568
- { Int32 zztmp = zz1; zz1 = zz2; zz2 = zztmp; }
569
-
570
- #define mvswap(zzp1, zzp2, zzn) \
571
- { \
572
- Int32 yyp1 = (zzp1); \
573
- Int32 yyp2 = (zzp2); \
574
- Int32 yyn = (zzn); \
575
- while (yyn > 0) { \
576
- mswap(ptr[yyp1], ptr[yyp2]); \
577
- yyp1++; yyp2++; yyn--; \
578
- } \
579
- }
580
-
581
- static
582
- __inline__
583
- UChar mmed3 ( UChar a, UChar b, UChar c )
584
- {
585
- UChar t;
586
- if (a > b) { t = a; a = b; b = t; };
587
- if (b > c) {
588
- b = c;
589
- if (a > b) b = a;
590
- }
591
- return b;
592
- }
593
-
594
- #define mmin(a,b) ((a) < (b)) ? (a) : (b)
595
-
596
- #define mpush(lz,hz,dz) { stackLo[sp] = lz; \
597
- stackHi[sp] = hz; \
598
- stackD [sp] = dz; \
599
- sp++; }
600
-
601
- #define mpop(lz,hz,dz) { sp--; \
602
- lz = stackLo[sp]; \
603
- hz = stackHi[sp]; \
604
- dz = stackD [sp]; }
605
-
606
-
607
- #define mnextsize(az) (nextHi[az]-nextLo[az])
608
-
609
- #define mnextswap(az,bz) \
610
- { Int32 tz; \
611
- tz = nextLo[az]; nextLo[az] = nextLo[bz]; nextLo[bz] = tz; \
612
- tz = nextHi[az]; nextHi[az] = nextHi[bz]; nextHi[bz] = tz; \
613
- tz = nextD [az]; nextD [az] = nextD [bz]; nextD [bz] = tz; }
614
-
615
-
616
- #define MAIN_QSORT_SMALL_THRESH 20
617
- #define MAIN_QSORT_DEPTH_THRESH (BZ_N_RADIX + BZ_N_QSORT)
618
- #define MAIN_QSORT_STACK_SIZE 100
619
-
620
- static
621
- void mainQSort3 ( UInt32* ptr,
622
- UChar* block,
623
- UInt16* quadrant,
624
- Int32 nblock,
625
- Int32 loSt,
626
- Int32 hiSt,
627
- Int32 dSt,
628
- Int32* budget )
629
- {
630
- Int32 unLo, unHi, ltLo, gtHi, n, m, med;
631
- Int32 sp, lo, hi, d;
632
-
633
- Int32 stackLo[MAIN_QSORT_STACK_SIZE];
634
- Int32 stackHi[MAIN_QSORT_STACK_SIZE];
635
- Int32 stackD [MAIN_QSORT_STACK_SIZE];
636
-
637
- Int32 nextLo[3];
638
- Int32 nextHi[3];
639
- Int32 nextD [3];
640
-
641
- sp = 0;
642
- mpush ( loSt, hiSt, dSt );
643
-
644
- while (sp > 0) {
645
-
646
- AssertH ( sp < MAIN_QSORT_STACK_SIZE - 2, 1001 );
647
-
648
- mpop ( lo, hi, d );
649
- if (hi - lo < MAIN_QSORT_SMALL_THRESH ||
650
- d > MAIN_QSORT_DEPTH_THRESH) {
651
- mainSimpleSort ( ptr, block, quadrant, nblock, lo, hi, d, budget );
652
- if (*budget < 0) return;
653
- continue;
654
- }
655
-
656
- med = (Int32)
657
- mmed3 ( block[ptr[ lo ]+d],
658
- block[ptr[ hi ]+d],
659
- block[ptr[ (lo+hi)>>1 ]+d] );
660
-
661
- unLo = ltLo = lo;
662
- unHi = gtHi = hi;
663
-
664
- while (True) {
665
- while (True) {
666
- if (unLo > unHi) break;
667
- n = ((Int32)block[ptr[unLo]+d]) - med;
668
- if (n == 0) {
669
- mswap(ptr[unLo], ptr[ltLo]);
670
- ltLo++; unLo++; continue;
671
- };
672
- if (n > 0) break;
673
- unLo++;
674
- }
675
- while (True) {
676
- if (unLo > unHi) break;
677
- n = ((Int32)block[ptr[unHi]+d]) - med;
678
- if (n == 0) {
679
- mswap(ptr[unHi], ptr[gtHi]);
680
- gtHi--; unHi--; continue;
681
- };
682
- if (n < 0) break;
683
- unHi--;
684
- }
685
- if (unLo > unHi) break;
686
- mswap(ptr[unLo], ptr[unHi]); unLo++; unHi--;
687
- }
688
-
689
- AssertD ( unHi == unLo-1, "mainQSort3(2)" );
690
-
691
- if (gtHi < ltLo) {
692
- mpush(lo, hi, d+1 );
693
- continue;
694
- }
695
-
696
- n = mmin(ltLo-lo, unLo-ltLo); mvswap(lo, unLo-n, n);
697
- m = mmin(hi-gtHi, gtHi-unHi); mvswap(unLo, hi-m+1, m);
698
-
699
- n = lo + unLo - ltLo - 1;
700
- m = hi - (gtHi - unHi) + 1;
701
-
702
- nextLo[0] = lo; nextHi[0] = n; nextD[0] = d;
703
- nextLo[1] = m; nextHi[1] = hi; nextD[1] = d;
704
- nextLo[2] = n+1; nextHi[2] = m-1; nextD[2] = d+1;
705
-
706
- if (mnextsize(0) < mnextsize(1)) mnextswap(0,1);
707
- if (mnextsize(1) < mnextsize(2)) mnextswap(1,2);
708
- if (mnextsize(0) < mnextsize(1)) mnextswap(0,1);
709
-
710
- AssertD (mnextsize(0) >= mnextsize(1), "mainQSort3(8)" );
711
- AssertD (mnextsize(1) >= mnextsize(2), "mainQSort3(9)" );
712
-
713
- mpush (nextLo[0], nextHi[0], nextD[0]);
714
- mpush (nextLo[1], nextHi[1], nextD[1]);
715
- mpush (nextLo[2], nextHi[2], nextD[2]);
716
- }
717
- }
718
-
719
- #undef mswap
720
- #undef mvswap
721
- #undef mpush
722
- #undef mpop
723
- #undef mmin
724
- #undef mnextsize
725
- #undef mnextswap
726
- #undef MAIN_QSORT_SMALL_THRESH
727
- #undef MAIN_QSORT_DEPTH_THRESH
728
- #undef MAIN_QSORT_STACK_SIZE
729
-
730
-
731
- /*---------------------------------------------*/
732
- /* Pre:
733
- nblock > N_OVERSHOOT
734
- block32 exists for [0 .. nblock-1 +N_OVERSHOOT]
735
- ((UChar*)block32) [0 .. nblock-1] holds block
736
- ptr exists for [0 .. nblock-1]
737
-
738
- Post:
739
- ((UChar*)block32) [0 .. nblock-1] holds block
740
- All other areas of block32 destroyed
741
- ftab [0 .. 65536 ] destroyed
742
- ptr [0 .. nblock-1] holds sorted order
743
- if (*budget < 0), sorting was abandoned
744
- */
745
-
746
- #define BIGFREQ(b) (ftab[((b)+1) << 8] - ftab[(b) << 8])
747
- #define SETMASK (1 << 21)
748
- #define CLEARMASK (~(SETMASK))
749
-
750
- static
751
- void mainSort ( UInt32* ptr,
752
- UChar* block,
753
- UInt16* quadrant,
754
- UInt32* ftab,
755
- Int32 nblock,
756
- Int32 verb,
757
- Int32* budget )
758
- {
759
- Int32 i, j, k, ss, sb;
760
- Int32 runningOrder[256];
761
- Bool bigDone[256];
762
- Int32 copyStart[256];
763
- Int32 copyEnd [256];
764
- UChar c1;
765
- Int32 numQSorted;
766
- UInt16 s;
767
- if (verb >= 4) VPrintf0 ( " main sort initialise ...\n" );
768
-
769
- /*-- set up the 2-byte frequency table --*/
770
- for (i = 65536; i >= 0; i--) ftab[i] = 0;
771
-
772
- j = block[0] << 8;
773
- i = nblock-1;
774
- for (; i >= 3; i -= 4) {
775
- quadrant[i] = 0;
776
- j = (j >> 8) | ( ((UInt16)block[i]) << 8);
777
- ftab[j]++;
778
- quadrant[i-1] = 0;
779
- j = (j >> 8) | ( ((UInt16)block[i-1]) << 8);
780
- ftab[j]++;
781
- quadrant[i-2] = 0;
782
- j = (j >> 8) | ( ((UInt16)block[i-2]) << 8);
783
- ftab[j]++;
784
- quadrant[i-3] = 0;
785
- j = (j >> 8) | ( ((UInt16)block[i-3]) << 8);
786
- ftab[j]++;
787
- }
788
- for (; i >= 0; i--) {
789
- quadrant[i] = 0;
790
- j = (j >> 8) | ( ((UInt16)block[i]) << 8);
791
- ftab[j]++;
792
- }
793
-
794
- /*-- (emphasises close relationship of block & quadrant) --*/
795
- for (i = 0; i < BZ_N_OVERSHOOT; i++) {
796
- block [nblock+i] = block[i];
797
- quadrant[nblock+i] = 0;
798
- }
799
-
800
- if (verb >= 4) VPrintf0 ( " bucket sorting ...\n" );
801
-
802
- /*-- Complete the initial radix sort --*/
803
- for (i = 1; i <= 65536; i++) ftab[i] += ftab[i-1];
804
-
805
- s = block[0] << 8;
806
- i = nblock-1;
807
- for (; i >= 3; i -= 4) {
808
- s = (s >> 8) | (block[i] << 8);
809
- j = ftab[s] -1;
810
- ftab[s] = j;
811
- ptr[j] = i;
812
- s = (s >> 8) | (block[i-1] << 8);
813
- j = ftab[s] -1;
814
- ftab[s] = j;
815
- ptr[j] = i-1;
816
- s = (s >> 8) | (block[i-2] << 8);
817
- j = ftab[s] -1;
818
- ftab[s] = j;
819
- ptr[j] = i-2;
820
- s = (s >> 8) | (block[i-3] << 8);
821
- j = ftab[s] -1;
822
- ftab[s] = j;
823
- ptr[j] = i-3;
824
- }
825
- for (; i >= 0; i--) {
826
- s = (s >> 8) | (block[i] << 8);
827
- j = ftab[s] -1;
828
- ftab[s] = j;
829
- ptr[j] = i;
830
- }
831
-
832
- /*--
833
- Now ftab contains the first loc of every small bucket.
834
- Calculate the running order, from smallest to largest
835
- big bucket.
836
- --*/
837
- for (i = 0; i <= 255; i++) {
838
- bigDone [i] = False;
839
- runningOrder[i] = i;
840
- }
841
-
842
- {
843
- Int32 vv;
844
- Int32 h = 1;
845
- do h = 3 * h + 1; while (h <= 256);
846
- do {
847
- h = h / 3;
848
- for (i = h; i <= 255; i++) {
849
- vv = runningOrder[i];
850
- j = i;
851
- while ( BIGFREQ(runningOrder[j-h]) > BIGFREQ(vv) ) {
852
- runningOrder[j] = runningOrder[j-h];
853
- j = j - h;
854
- if (j <= (h - 1)) goto zero;
855
- }
856
- zero:
857
- runningOrder[j] = vv;
858
- }
859
- } while (h != 1);
860
- }
861
-
862
- /*--
863
- The main sorting loop.
864
- --*/
865
-
866
- numQSorted = 0;
867
-
868
- for (i = 0; i <= 255; i++) {
869
-
870
- /*--
871
- Process big buckets, starting with the least full.
872
- Basically this is a 3-step process in which we call
873
- mainQSort3 to sort the small buckets [ss, j], but
874
- also make a big effort to avoid the calls if we can.
875
- --*/
876
- ss = runningOrder[i];
877
-
878
- /*--
879
- Step 1:
880
- Complete the big bucket [ss] by quicksorting
881
- any unsorted small buckets [ss, j], for j != ss.
882
- Hopefully previous pointer-scanning phases have already
883
- completed many of the small buckets [ss, j], so
884
- we don't have to sort them at all.
885
- --*/
886
- for (j = 0; j <= 255; j++) {
887
- if (j != ss) {
888
- sb = (ss << 8) + j;
889
- if ( ! (ftab[sb] & SETMASK) ) {
890
- Int32 lo = ftab[sb] & CLEARMASK;
891
- Int32 hi = (ftab[sb+1] & CLEARMASK) - 1;
892
- if (hi > lo) {
893
- if (verb >= 4)
894
- VPrintf4 ( " qsort [0x%x, 0x%x] "
895
- "done %d this %d\n",
896
- ss, j, numQSorted, hi - lo + 1 );
897
- mainQSort3 (
898
- ptr, block, quadrant, nblock,
899
- lo, hi, BZ_N_RADIX, budget
900
- );
901
- numQSorted += (hi - lo + 1);
902
- if (*budget < 0) return;
903
- }
904
- }
905
- ftab[sb] |= SETMASK;
906
- }
907
- }
908
-
909
- AssertH ( !bigDone[ss], 1006 );
910
-
911
- /*--
912
- Step 2:
913
- Now scan this big bucket [ss] so as to synthesise the
914
- sorted order for small buckets [t, ss] for all t,
915
- including, magically, the bucket [ss,ss] too.
916
- This will avoid doing Real Work in subsequent Step 1's.
917
- --*/
918
- {
919
- for (j = 0; j <= 255; j++) {
920
- copyStart[j] = ftab[(j << 8) + ss] & CLEARMASK;
921
- copyEnd [j] = (ftab[(j << 8) + ss + 1] & CLEARMASK) - 1;
922
- }
923
- for (j = ftab[ss << 8] & CLEARMASK; j < copyStart[ss]; j++) {
924
- k = ptr[j]-1; if (k < 0) k += nblock;
925
- c1 = block[k];
926
- if (!bigDone[c1])
927
- ptr[ copyStart[c1]++ ] = k;
928
- }
929
- for (j = (ftab[(ss+1) << 8] & CLEARMASK) - 1; j > copyEnd[ss]; j--) {
930
- k = ptr[j]-1; if (k < 0) k += nblock;
931
- c1 = block[k];
932
- if (!bigDone[c1])
933
- ptr[ copyEnd[c1]-- ] = k;
934
- }
935
- }
936
-
937
- AssertH ( (copyStart[ss]-1 == copyEnd[ss])
938
- ||
939
- /* Extremely rare case missing in bzip2-1.0.0 and 1.0.1.
940
- Necessity for this case is demonstrated by compressing
941
- a sequence of approximately 48.5 million of character
942
- 251; 1.0.0/1.0.1 will then die here. */
943
- (copyStart[ss] == 0 && copyEnd[ss] == nblock-1),
944
- 1007 )
945
-
946
- for (j = 0; j <= 255; j++) ftab[(j << 8) + ss] |= SETMASK;
947
-
948
- /*--
949
- Step 3:
950
- The [ss] big bucket is now done. Record this fact,
951
- and update the quadrant descriptors. Remember to
952
- update quadrants in the overshoot area too, if
953
- necessary. The "if (i < 255)" test merely skips
954
- this updating for the last bucket processed, since
955
- updating for the last bucket is pointless.
956
-
957
- The quadrant array provides a way to incrementally
958
- cache sort orderings, as they appear, so as to
959
- make subsequent comparisons in fullGtU() complete
960
- faster. For repetitive blocks this makes a big
961
- difference (but not big enough to be able to avoid
962
- the fallback sorting mechanism, exponential radix sort).
963
-
964
- The precise meaning is: at all times:
965
-
966
- for 0 <= i < nblock and 0 <= j <= nblock
967
-
968
- if block[i] != block[j],
969
-
970
- then the relative values of quadrant[i] and
971
- quadrant[j] are meaningless.
972
-
973
- else {
974
- if quadrant[i] < quadrant[j]
975
- then the string starting at i lexicographically
976
- precedes the string starting at j
977
-
978
- else if quadrant[i] > quadrant[j]
979
- then the string starting at j lexicographically
980
- precedes the string starting at i
981
-
982
- else
983
- the relative ordering of the strings starting
984
- at i and j has not yet been determined.
985
- }
986
- --*/
987
- bigDone[ss] = True;
988
-
989
- if (i < 255) {
990
- Int32 bbStart = ftab[ss << 8] & CLEARMASK;
991
- Int32 bbSize = (ftab[(ss+1) << 8] & CLEARMASK) - bbStart;
992
- Int32 shifts = 0;
993
-
994
- while ((bbSize >> shifts) > 65534) shifts++;
995
-
996
- for (j = bbSize-1; j >= 0; j--) {
997
- Int32 a2update = ptr[bbStart + j];
998
- UInt16 qVal = (UInt16)(j >> shifts);
999
- quadrant[a2update] = qVal;
1000
- if (a2update < BZ_N_OVERSHOOT)
1001
- quadrant[a2update + nblock] = qVal;
1002
- }
1003
- AssertH ( ((bbSize-1) >> shifts) <= 65535, 1002 );
1004
- }
1005
-
1006
- }
1007
-
1008
- if (verb >= 4)
1009
- VPrintf3 ( " %d pointers, %d sorted, %d scanned\n",
1010
- nblock, numQSorted, nblock - numQSorted );
1011
- }
1012
-
1013
- #undef BIGFREQ
1014
- #undef SETMASK
1015
- #undef CLEARMASK
1016
-
1017
-
1018
- /*---------------------------------------------*/
1019
- /* Pre:
1020
- nblock > 0
1021
- arr2 exists for [0 .. nblock-1 +N_OVERSHOOT]
1022
- ((UChar*)arr2) [0 .. nblock-1] holds block
1023
- arr1 exists for [0 .. nblock-1]
1024
-
1025
- Post:
1026
- ((UChar*)arr2) [0 .. nblock-1] holds block
1027
- All other areas of block destroyed
1028
- ftab [ 0 .. 65536 ] destroyed
1029
- arr1 [0 .. nblock-1] holds sorted order
1030
- */
1031
- void BZ2_blockSort ( EState* s )
1032
- {
1033
- UInt32* ptr = s->ptr;
1034
- UChar* block = s->block;
1035
- UInt32* ftab = s->ftab;
1036
- Int32 nblock = s->nblock;
1037
- Int32 verb = s->verbosity;
1038
- Int32 wfact = s->workFactor;
1039
- UInt16* quadrant;
1040
- Int32 budget;
1041
- Int32 budgetInit;
1042
- Int32 i;
1043
-
1044
- if (nblock < 10000) {
1045
- fallbackSort ( s->arr1, s->arr2, ftab, nblock, verb );
1046
- } else {
1047
- /* Calculate the location for quadrant, remembering to get
1048
- the alignment right. Assumes that &(block[0]) is at least
1049
- 2-byte aligned -- this should be ok since block is really
1050
- the first section of arr2.
1051
- */
1052
- i = nblock+BZ_N_OVERSHOOT;
1053
- if (i & 1) i++;
1054
- quadrant = (UInt16*)(&(block[i]));
1055
-
1056
- /* (wfact-1) / 3 puts the default-factor-30
1057
- transition point at very roughly the same place as
1058
- with v0.1 and v0.9.0.
1059
- Not that it particularly matters any more, since the
1060
- resulting compressed stream is now the same regardless
1061
- of whether or not we use the main sort or fallback sort.
1062
- */
1063
- if (wfact < 1 ) wfact = 1;
1064
- if (wfact > 100) wfact = 100;
1065
- budgetInit = nblock * ((wfact-1) / 3);
1066
- budget = budgetInit;
1067
-
1068
- mainSort ( ptr, block, quadrant, ftab, nblock, verb, &budget );
1069
- if (verb >= 3)
1070
- VPrintf3 ( " %d work, %d block, ratio %5.2f\n",
1071
- budgetInit - budget,
1072
- nblock,
1073
- (float)(budgetInit - budget) /
1074
- (float)(nblock==0 ? 1 : nblock) );
1075
- if (budget < 0) {
1076
- if (verb >= 2)
1077
- VPrintf0 ( " too repetitive; using fallback"
1078
- " sorting algorithm\n" );
1079
- fallbackSort ( s->arr1, s->arr2, ftab, nblock, verb );
1080
- }
1081
- }
1082
-
1083
- s->origPtr = -1;
1084
- for (i = 0; i < s->nblock; i++)
1085
- if (ptr[i] == 0)
1086
- { s->origPtr = i; break; };
1087
-
1088
- AssertH( s->origPtr != -1, 1003 );
1089
- }
1090
-
1091
-
1092
- /*-------------------------------------------------------------*/
1093
- /*--- end blocksort.c ---*/
1094
- /*-------------------------------------------------------------*/