zeroc-ice 3.6b1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (675) hide show
  1. checksums.yaml +7 -0
  2. data/ICE_LICENSE +54 -0
  3. data/LICENSE +339 -0
  4. data/bin/slice2rb +17 -0
  5. data/ext/Communicator.cpp +596 -0
  6. data/ext/Communicator.h +25 -0
  7. data/ext/Config.h +111 -0
  8. data/ext/Connection.cpp +381 -0
  9. data/ext/Connection.h +26 -0
  10. data/ext/Endpoint.cpp +311 -0
  11. data/ext/Endpoint.h +27 -0
  12. data/ext/ImplicitContext.cpp +152 -0
  13. data/ext/ImplicitContext.h +25 -0
  14. data/ext/Init.cpp +52 -0
  15. data/ext/Logger.cpp +151 -0
  16. data/ext/Logger.h +28 -0
  17. data/ext/ObjectFactory.cpp +140 -0
  18. data/ext/ObjectFactory.h +50 -0
  19. data/ext/Operation.cpp +676 -0
  20. data/ext/Operation.h +36 -0
  21. data/ext/Properties.cpp +369 -0
  22. data/ext/Properties.h +25 -0
  23. data/ext/Proxy.cpp +1354 -0
  24. data/ext/Proxy.h +27 -0
  25. data/ext/Slice.cpp +223 -0
  26. data/ext/Slice.h +22 -0
  27. data/ext/Types.cpp +3160 -0
  28. data/ext/Types.h +545 -0
  29. data/ext/Util.cpp +792 -0
  30. data/ext/Util.h +511 -0
  31. data/ext/extconf.rb +118 -0
  32. data/ext/ice/BZIP_LICENSE +42 -0
  33. data/ext/ice/MCPP_LICENSE +36 -0
  34. data/ext/ice/bzip2/blocksort.c +1094 -0
  35. data/ext/ice/bzip2/bzlib.c +1572 -0
  36. data/ext/ice/bzip2/bzlib.h +282 -0
  37. data/ext/ice/bzip2/bzlib_private.h +509 -0
  38. data/ext/ice/bzip2/compress.c +672 -0
  39. data/ext/ice/bzip2/crctable.c +104 -0
  40. data/ext/ice/bzip2/decompress.c +646 -0
  41. data/ext/ice/bzip2/huffman.c +205 -0
  42. data/ext/ice/bzip2/randtable.c +84 -0
  43. data/ext/ice/cpp/include/Ice/ACMF.h +30 -0
  44. data/ext/ice/cpp/include/Ice/Application.h +156 -0
  45. data/ext/ice/cpp/include/Ice/AsyncResult.h +363 -0
  46. data/ext/ice/cpp/include/Ice/AsyncResultF.h +26 -0
  47. data/ext/ice/cpp/include/Ice/BasicStream.h +1315 -0
  48. data/ext/ice/cpp/include/Ice/Buffer.h +159 -0
  49. data/ext/ice/cpp/include/Ice/BuiltinSequences.h +74 -0
  50. data/ext/ice/cpp/include/Ice/Communicator.h +194 -0
  51. data/ext/ice/cpp/include/Ice/CommunicatorAsync.h +115 -0
  52. data/ext/ice/cpp/include/Ice/CommunicatorF.h +60 -0
  53. data/ext/ice/cpp/include/Ice/Config.h +97 -0
  54. data/ext/ice/cpp/include/Ice/Connection.h +495 -0
  55. data/ext/ice/cpp/include/Ice/ConnectionAsync.h +115 -0
  56. data/ext/ice/cpp/include/Ice/ConnectionF.h +72 -0
  57. data/ext/ice/cpp/include/Ice/ConnectionFactoryF.h +30 -0
  58. data/ext/ice/cpp/include/Ice/ConnectionIF.h +37 -0
  59. data/ext/ice/cpp/include/Ice/Current.h +94 -0
  60. data/ext/ice/cpp/include/Ice/DefaultObjectFactory.h +48 -0
  61. data/ext/ice/cpp/include/Ice/DeprecatedStringConverter.h +62 -0
  62. data/ext/ice/cpp/include/Ice/DispatchInterceptor.h +33 -0
  63. data/ext/ice/cpp/include/Ice/Dispatcher.h +51 -0
  64. data/ext/ice/cpp/include/Ice/DynamicLibrary.h +105 -0
  65. data/ext/ice/cpp/include/Ice/DynamicLibraryF.h +29 -0
  66. data/ext/ice/cpp/include/Ice/Endpoint.h +350 -0
  67. data/ext/ice/cpp/include/Ice/EndpointF.h +97 -0
  68. data/ext/ice/cpp/include/Ice/EndpointTypes.h +74 -0
  69. data/ext/ice/cpp/include/Ice/Exception.h +114 -0
  70. data/ext/ice/cpp/include/Ice/FacetMap.h +56 -0
  71. data/ext/ice/cpp/include/Ice/FactoryTable.h +69 -0
  72. data/ext/ice/cpp/include/Ice/FactoryTableInit.h +87 -0
  73. data/ext/ice/cpp/include/Ice/Format.h +39 -0
  74. data/ext/ice/cpp/include/Ice/Functional.h +138 -0
  75. data/ext/ice/cpp/include/Ice/GCObject.h +73 -0
  76. data/ext/ice/cpp/include/Ice/Handle.h +192 -0
  77. data/ext/ice/cpp/include/Ice/Ice.h +54 -0
  78. data/ext/ice/cpp/include/Ice/Identity.h +160 -0
  79. data/ext/ice/cpp/include/Ice/ImplicitContext.h +96 -0
  80. data/ext/ice/cpp/include/Ice/ImplicitContextF.h +60 -0
  81. data/ext/ice/cpp/include/Ice/Incoming.h +131 -0
  82. data/ext/ice/cpp/include/Ice/IncomingAsync.h +108 -0
  83. data/ext/ice/cpp/include/Ice/IncomingAsyncF.h +35 -0
  84. data/ext/ice/cpp/include/Ice/Initialize.h +141 -0
  85. data/ext/ice/cpp/include/Ice/InstanceF.h +26 -0
  86. data/ext/ice/cpp/include/Ice/Instrumentation.h +377 -0
  87. data/ext/ice/cpp/include/Ice/InstrumentationF.h +71 -0
  88. data/ext/ice/cpp/include/Ice/LocalException.h +1022 -0
  89. data/ext/ice/cpp/include/Ice/LocalObject.h +36 -0
  90. data/ext/ice/cpp/include/Ice/LocalObjectF.h +26 -0
  91. data/ext/ice/cpp/include/Ice/Locator.h +2191 -0
  92. data/ext/ice/cpp/include/Ice/LocatorF.h +89 -0
  93. data/ext/ice/cpp/include/Ice/Logger.h +94 -0
  94. data/ext/ice/cpp/include/Ice/LoggerF.h +60 -0
  95. data/ext/ice/cpp/include/Ice/LoggerUtil.h +153 -0
  96. data/ext/ice/cpp/include/Ice/Makefile +26 -0
  97. data/ext/ice/cpp/include/Ice/Metrics.h +2989 -0
  98. data/ext/ice/cpp/include/Ice/MetricsAdminI.h +662 -0
  99. data/ext/ice/cpp/include/Ice/MetricsFunctional.h +144 -0
  100. data/ext/ice/cpp/include/Ice/MetricsObserverI.h +576 -0
  101. data/ext/ice/cpp/include/Ice/NativePropertiesAdmin.h +55 -0
  102. data/ext/ice/cpp/include/Ice/Object.h +165 -0
  103. data/ext/ice/cpp/include/Ice/ObjectAdapter.h +162 -0
  104. data/ext/ice/cpp/include/Ice/ObjectAdapterF.h +60 -0
  105. data/ext/ice/cpp/include/Ice/ObjectAdapterFactoryF.h +26 -0
  106. data/ext/ice/cpp/include/Ice/ObjectF.h +26 -0
  107. data/ext/ice/cpp/include/Ice/ObjectFactory.h +86 -0
  108. data/ext/ice/cpp/include/Ice/ObjectFactoryF.h +60 -0
  109. data/ext/ice/cpp/include/Ice/ObjectFactoryManagerF.h +26 -0
  110. data/ext/ice/cpp/include/Ice/ObserverHelper.h +177 -0
  111. data/ext/ice/cpp/include/Ice/Outgoing.h +197 -0
  112. data/ext/ice/cpp/include/Ice/OutgoingAsync.h +264 -0
  113. data/ext/ice/cpp/include/Ice/OutgoingAsyncF.h +38 -0
  114. data/ext/ice/cpp/include/Ice/Plugin.h +121 -0
  115. data/ext/ice/cpp/include/Ice/PluginF.h +66 -0
  116. data/ext/ice/cpp/include/Ice/Process.h +568 -0
  117. data/ext/ice/cpp/include/Ice/ProcessF.h +77 -0
  118. data/ext/ice/cpp/include/Ice/Properties.h +130 -0
  119. data/ext/ice/cpp/include/Ice/PropertiesAdmin.h +824 -0
  120. data/ext/ice/cpp/include/Ice/PropertiesF.h +83 -0
  121. data/ext/ice/cpp/include/Ice/Protocol.h +242 -0
  122. data/ext/ice/cpp/include/Ice/Proxy.h +2448 -0
  123. data/ext/ice/cpp/include/Ice/ProxyF.h +78 -0
  124. data/ext/ice/cpp/include/Ice/ProxyFactoryF.h +26 -0
  125. data/ext/ice/cpp/include/Ice/ProxyHandle.h +330 -0
  126. data/ext/ice/cpp/include/Ice/ReferenceF.h +34 -0
  127. data/ext/ice/cpp/include/Ice/RemoteLogger.h +1496 -0
  128. data/ext/ice/cpp/include/Ice/RequestHandlerF.h +29 -0
  129. data/ext/ice/cpp/include/Ice/ResponseHandlerF.h +25 -0
  130. data/ext/ice/cpp/include/Ice/Router.h +1155 -0
  131. data/ext/ice/cpp/include/Ice/RouterF.h +77 -0
  132. data/ext/ice/cpp/include/Ice/ServantLocator.h +90 -0
  133. data/ext/ice/cpp/include/Ice/ServantLocatorF.h +60 -0
  134. data/ext/ice/cpp/include/Ice/ServantManagerF.h +26 -0
  135. data/ext/ice/cpp/include/Ice/Service.h +260 -0
  136. data/ext/ice/cpp/include/Ice/SliceChecksumDict.h +56 -0
  137. data/ext/ice/cpp/include/Ice/SliceChecksums.h +34 -0
  138. data/ext/ice/cpp/include/Ice/SlicedData.h +103 -0
  139. data/ext/ice/cpp/include/Ice/SlicedDataF.h +34 -0
  140. data/ext/ice/cpp/include/Ice/Stream.h +449 -0
  141. data/ext/ice/cpp/include/Ice/StreamF.h +30 -0
  142. data/ext/ice/cpp/include/Ice/StreamHelpers.h +877 -0
  143. data/ext/ice/cpp/include/Ice/ThreadPoolF.h +28 -0
  144. data/ext/ice/cpp/include/Ice/UserExceptionFactory.h +56 -0
  145. data/ext/ice/cpp/include/Ice/Version.h +254 -0
  146. data/ext/ice/cpp/include/IceSSL/Config.h +23 -0
  147. data/ext/ice/cpp/include/IceSSL/ConnectionInfo.h +119 -0
  148. data/ext/ice/cpp/include/IceSSL/EndpointInfo.h +101 -0
  149. data/ext/ice/cpp/include/IceSSL/IceSSL.h +22 -0
  150. data/ext/ice/cpp/include/IceSSL/Makefile +26 -0
  151. data/ext/ice/cpp/include/IceSSL/Plugin.h +558 -0
  152. data/ext/ice/cpp/include/IceUtil/AbstractMutex.h +119 -0
  153. data/ext/ice/cpp/include/IceUtil/Cache.h +362 -0
  154. data/ext/ice/cpp/include/IceUtil/Cond.h +323 -0
  155. data/ext/ice/cpp/include/IceUtil/Config.h +234 -0
  156. data/ext/ice/cpp/include/IceUtil/CountDownLatch.h +50 -0
  157. data/ext/ice/cpp/include/IceUtil/CtrlCHandler.h +70 -0
  158. data/ext/ice/cpp/include/IceUtil/DisableWarnings.h +45 -0
  159. data/ext/ice/cpp/include/IceUtil/Exception.h +184 -0
  160. data/ext/ice/cpp/include/IceUtil/Functional.h +389 -0
  161. data/ext/ice/cpp/include/IceUtil/Handle.h +266 -0
  162. data/ext/ice/cpp/include/IceUtil/IceUtil.h +51 -0
  163. data/ext/ice/cpp/include/IceUtil/IconvStringConverter.h +302 -0
  164. data/ext/ice/cpp/include/IceUtil/InputUtil.h +47 -0
  165. data/ext/ice/cpp/include/IceUtil/Iterator.h +36 -0
  166. data/ext/ice/cpp/include/IceUtil/Lock.h +135 -0
  167. data/ext/ice/cpp/include/IceUtil/Makefile +26 -0
  168. data/ext/ice/cpp/include/IceUtil/Monitor.h +249 -0
  169. data/ext/ice/cpp/include/IceUtil/Mutex.h +357 -0
  170. data/ext/ice/cpp/include/IceUtil/MutexProtocol.h +28 -0
  171. data/ext/ice/cpp/include/IceUtil/MutexPtrLock.h +83 -0
  172. data/ext/ice/cpp/include/IceUtil/MutexPtrTryLock.h +82 -0
  173. data/ext/ice/cpp/include/IceUtil/Optional.h +322 -0
  174. data/ext/ice/cpp/include/IceUtil/Options.h +141 -0
  175. data/ext/ice/cpp/include/IceUtil/OutputUtil.h +362 -0
  176. data/ext/ice/cpp/include/IceUtil/PopDisableWarnings.h +19 -0
  177. data/ext/ice/cpp/include/IceUtil/PushDisableWarnings.h +26 -0
  178. data/ext/ice/cpp/include/IceUtil/Random.h +24 -0
  179. data/ext/ice/cpp/include/IceUtil/RecMutex.h +113 -0
  180. data/ext/ice/cpp/include/IceUtil/SHA1.h +65 -0
  181. data/ext/ice/cpp/include/IceUtil/ScannerConfig.h +44 -0
  182. data/ext/ice/cpp/include/IceUtil/ScopedArray.h +97 -0
  183. data/ext/ice/cpp/include/IceUtil/Shared.h +168 -0
  184. data/ext/ice/cpp/include/IceUtil/StringConverter.h +175 -0
  185. data/ext/ice/cpp/include/IceUtil/StringUtil.h +91 -0
  186. data/ext/ice/cpp/include/IceUtil/Thread.h +181 -0
  187. data/ext/ice/cpp/include/IceUtil/ThreadException.h +108 -0
  188. data/ext/ice/cpp/include/IceUtil/Time.h +209 -0
  189. data/ext/ice/cpp/include/IceUtil/Timer.h +143 -0
  190. data/ext/ice/cpp/include/IceUtil/UUID.h +22 -0
  191. data/ext/ice/cpp/include/IceUtil/UndefSysMacros.h +42 -0
  192. data/ext/ice/cpp/include/IceUtil/UniquePtr.h +101 -0
  193. data/ext/ice/cpp/include/Slice/CPlusPlusUtil.h +64 -0
  194. data/ext/ice/cpp/include/Slice/Checksum.h +26 -0
  195. data/ext/ice/cpp/include/Slice/CsUtil.h +92 -0
  196. data/ext/ice/cpp/include/Slice/DotNetNames.h +34 -0
  197. data/ext/ice/cpp/include/Slice/FileTracker.h +71 -0
  198. data/ext/ice/cpp/include/Slice/JavaUtil.h +277 -0
  199. data/ext/ice/cpp/include/Slice/Makefile +26 -0
  200. data/ext/ice/cpp/include/Slice/PHPUtil.h +50 -0
  201. data/ext/ice/cpp/include/Slice/Parser.h +1116 -0
  202. data/ext/ice/cpp/include/Slice/Preprocessor.h +68 -0
  203. data/ext/ice/cpp/include/Slice/PythonUtil.h +64 -0
  204. data/ext/ice/cpp/include/Slice/RubyUtil.h +54 -0
  205. data/ext/ice/cpp/include/Slice/Util.h +33 -0
  206. data/ext/ice/cpp/src/Ice/ACM.cpp +343 -0
  207. data/ext/ice/cpp/src/Ice/ACM.h +117 -0
  208. data/ext/ice/cpp/src/Ice/Acceptor.cpp +16 -0
  209. data/ext/ice/cpp/src/Ice/Acceptor.h +41 -0
  210. data/ext/ice/cpp/src/Ice/AcceptorF.h +30 -0
  211. data/ext/ice/cpp/src/Ice/Application.cpp +760 -0
  212. data/ext/ice/cpp/src/Ice/AsyncResult.cpp +599 -0
  213. data/ext/ice/cpp/src/Ice/Base64.cpp +269 -0
  214. data/ext/ice/cpp/src/Ice/Base64.h +36 -0
  215. data/ext/ice/cpp/src/Ice/BasicStream.cpp +3393 -0
  216. data/ext/ice/cpp/src/Ice/Buffer.cpp +98 -0
  217. data/ext/ice/cpp/src/Ice/BuiltinSequences.cpp +34 -0
  218. data/ext/ice/cpp/src/Ice/CollocatedRequestHandler.cpp +718 -0
  219. data/ext/ice/cpp/src/Ice/CollocatedRequestHandler.h +106 -0
  220. data/ext/ice/cpp/src/Ice/Communicator.cpp +45 -0
  221. data/ext/ice/cpp/src/Ice/CommunicatorF.cpp +38 -0
  222. data/ext/ice/cpp/src/Ice/CommunicatorI.cpp +386 -0
  223. data/ext/ice/cpp/src/Ice/CommunicatorI.h +112 -0
  224. data/ext/ice/cpp/src/Ice/ConnectRequestHandler.cpp +546 -0
  225. data/ext/ice/cpp/src/Ice/ConnectRequestHandler.h +97 -0
  226. data/ext/ice/cpp/src/Ice/Connection.cpp +58 -0
  227. data/ext/ice/cpp/src/Ice/ConnectionF.cpp +38 -0
  228. data/ext/ice/cpp/src/Ice/ConnectionFactory.cpp +1639 -0
  229. data/ext/ice/cpp/src/Ice/ConnectionFactory.h +236 -0
  230. data/ext/ice/cpp/src/Ice/ConnectionI.cpp +3876 -0
  231. data/ext/ice/cpp/src/Ice/ConnectionI.h +364 -0
  232. data/ext/ice/cpp/src/Ice/ConnectionRequestHandler.cpp +115 -0
  233. data/ext/ice/cpp/src/Ice/ConnectionRequestHandler.h +50 -0
  234. data/ext/ice/cpp/src/Ice/Connector.cpp +16 -0
  235. data/ext/ice/cpp/src/Ice/Connector.h +36 -0
  236. data/ext/ice/cpp/src/Ice/ConnectorF.h +26 -0
  237. data/ext/ice/cpp/src/Ice/Current.cpp +38 -0
  238. data/ext/ice/cpp/src/Ice/DefaultsAndOverrides.cpp +168 -0
  239. data/ext/ice/cpp/src/Ice/DefaultsAndOverrides.h +57 -0
  240. data/ext/ice/cpp/src/Ice/DefaultsAndOverridesF.h +26 -0
  241. data/ext/ice/cpp/src/Ice/DeprecatedStringConverter.cpp +60 -0
  242. data/ext/ice/cpp/src/Ice/DispatchInterceptor.cpp +49 -0
  243. data/ext/ice/cpp/src/Ice/DynamicLibrary.cpp +281 -0
  244. data/ext/ice/cpp/src/Ice/Endpoint.cpp +53 -0
  245. data/ext/ice/cpp/src/Ice/EndpointF.cpp +38 -0
  246. data/ext/ice/cpp/src/Ice/EndpointFactory.cpp +25 -0
  247. data/ext/ice/cpp/src/Ice/EndpointFactory.h +44 -0
  248. data/ext/ice/cpp/src/Ice/EndpointFactoryF.h +26 -0
  249. data/ext/ice/cpp/src/Ice/EndpointFactoryManager.cpp +208 -0
  250. data/ext/ice/cpp/src/Ice/EndpointFactoryManager.h +46 -0
  251. data/ext/ice/cpp/src/Ice/EndpointFactoryManagerF.h +26 -0
  252. data/ext/ice/cpp/src/Ice/EndpointI.cpp +87 -0
  253. data/ext/ice/cpp/src/Ice/EndpointI.h +165 -0
  254. data/ext/ice/cpp/src/Ice/EndpointIF.h +41 -0
  255. data/ext/ice/cpp/src/Ice/EndpointTypes.cpp +38 -0
  256. data/ext/ice/cpp/src/Ice/EventHandler.cpp +35 -0
  257. data/ext/ice/cpp/src/Ice/EventHandler.h +78 -0
  258. data/ext/ice/cpp/src/Ice/EventHandlerF.h +26 -0
  259. data/ext/ice/cpp/src/Ice/EventLoggerMsg.h +53 -0
  260. data/ext/ice/cpp/src/Ice/Exception.cpp +832 -0
  261. data/ext/ice/cpp/src/Ice/FacetMap.cpp +34 -0
  262. data/ext/ice/cpp/src/Ice/FactoryTable.cpp +158 -0
  263. data/ext/ice/cpp/src/Ice/FactoryTableInit.cpp +95 -0
  264. data/ext/ice/cpp/src/Ice/GCObject.cpp +444 -0
  265. data/ext/ice/cpp/src/Ice/HashUtil.h +59 -0
  266. data/ext/ice/cpp/src/Ice/HttpParser.cpp +680 -0
  267. data/ext/ice/cpp/src/Ice/HttpParser.h +124 -0
  268. data/ext/ice/cpp/src/Ice/IPEndpointI.cpp +733 -0
  269. data/ext/ice/cpp/src/Ice/IPEndpointI.h +157 -0
  270. data/ext/ice/cpp/src/Ice/IPEndpointIF.h +29 -0
  271. data/ext/ice/cpp/src/Ice/Identity.cpp +42 -0
  272. data/ext/ice/cpp/src/Ice/ImplicitContext.cpp +41 -0
  273. data/ext/ice/cpp/src/Ice/ImplicitContextF.cpp +38 -0
  274. data/ext/ice/cpp/src/Ice/ImplicitContextI.cpp +639 -0
  275. data/ext/ice/cpp/src/Ice/ImplicitContextI.h +51 -0
  276. data/ext/ice/cpp/src/Ice/Incoming.cpp +757 -0
  277. data/ext/ice/cpp/src/Ice/IncomingAsync.cpp +340 -0
  278. data/ext/ice/cpp/src/Ice/IncomingRequest.h +37 -0
  279. data/ext/ice/cpp/src/Ice/Initialize.cpp +401 -0
  280. data/ext/ice/cpp/src/Ice/Instance.cpp +1928 -0
  281. data/ext/ice/cpp/src/Ice/Instance.h +198 -0
  282. data/ext/ice/cpp/src/Ice/Instrumentation.cpp +68 -0
  283. data/ext/ice/cpp/src/Ice/InstrumentationF.cpp +43 -0
  284. data/ext/ice/cpp/src/Ice/InstrumentationI.cpp +1083 -0
  285. data/ext/ice/cpp/src/Ice/InstrumentationI.h +262 -0
  286. data/ext/ice/cpp/src/Ice/LocalException.cpp +2091 -0
  287. data/ext/ice/cpp/src/Ice/LocalObject.cpp +29 -0
  288. data/ext/ice/cpp/src/Ice/Locator.cpp +1946 -0
  289. data/ext/ice/cpp/src/Ice/LocatorF.cpp +39 -0
  290. data/ext/ice/cpp/src/Ice/LocatorInfo.cpp +917 -0
  291. data/ext/ice/cpp/src/Ice/LocatorInfo.h +193 -0
  292. data/ext/ice/cpp/src/Ice/LocatorInfoF.h +34 -0
  293. data/ext/ice/cpp/src/Ice/Logger.cpp +40 -0
  294. data/ext/ice/cpp/src/Ice/LoggerAdminI.cpp +862 -0
  295. data/ext/ice/cpp/src/Ice/LoggerAdminI.h +46 -0
  296. data/ext/ice/cpp/src/Ice/LoggerF.cpp +38 -0
  297. data/ext/ice/cpp/src/Ice/LoggerI.cpp +199 -0
  298. data/ext/ice/cpp/src/Ice/LoggerI.h +57 -0
  299. data/ext/ice/cpp/src/Ice/LoggerUtil.cpp +107 -0
  300. data/ext/ice/cpp/src/Ice/Makefile +190 -0
  301. data/ext/ice/cpp/src/Ice/Metrics.cpp +2159 -0
  302. data/ext/ice/cpp/src/Ice/MetricsAdminI.cpp +669 -0
  303. data/ext/ice/cpp/src/Ice/MetricsObserverI.cpp +14 -0
  304. data/ext/ice/cpp/src/Ice/Network.cpp +2694 -0
  305. data/ext/ice/cpp/src/Ice/Network.h +291 -0
  306. data/ext/ice/cpp/src/Ice/NetworkF.h +28 -0
  307. data/ext/ice/cpp/src/Ice/NetworkProxy.cpp +325 -0
  308. data/ext/ice/cpp/src/Ice/NetworkProxy.h +74 -0
  309. data/ext/ice/cpp/src/Ice/NetworkProxyF.h +26 -0
  310. data/ext/ice/cpp/src/Ice/Object.cpp +440 -0
  311. data/ext/ice/cpp/src/Ice/ObjectAdapter.cpp +41 -0
  312. data/ext/ice/cpp/src/Ice/ObjectAdapterF.cpp +38 -0
  313. data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.cpp +241 -0
  314. data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.h +52 -0
  315. data/ext/ice/cpp/src/Ice/ObjectAdapterI.cpp +1498 -0
  316. data/ext/ice/cpp/src/Ice/ObjectAdapterI.h +155 -0
  317. data/ext/ice/cpp/src/Ice/ObjectFactory.cpp +41 -0
  318. data/ext/ice/cpp/src/Ice/ObjectFactoryF.cpp +38 -0
  319. data/ext/ice/cpp/src/Ice/ObjectFactoryManager.cpp +140 -0
  320. data/ext/ice/cpp/src/Ice/ObjectFactoryManager.h +43 -0
  321. data/ext/ice/cpp/src/Ice/ObserverHelper.cpp +84 -0
  322. data/ext/ice/cpp/src/Ice/OpaqueEndpointI.cpp +407 -0
  323. data/ext/ice/cpp/src/Ice/OpaqueEndpointI.h +70 -0
  324. data/ext/ice/cpp/src/Ice/Outgoing.cpp +737 -0
  325. data/ext/ice/cpp/src/Ice/OutgoingAsync.cpp +874 -0
  326. data/ext/ice/cpp/src/Ice/Plugin.cpp +43 -0
  327. data/ext/ice/cpp/src/Ice/PluginF.cpp +38 -0
  328. data/ext/ice/cpp/src/Ice/PluginManagerI.cpp +503 -0
  329. data/ext/ice/cpp/src/Ice/PluginManagerI.h +67 -0
  330. data/ext/ice/cpp/src/Ice/Process.cpp +299 -0
  331. data/ext/ice/cpp/src/Ice/ProcessF.cpp +39 -0
  332. data/ext/ice/cpp/src/Ice/Properties.cpp +45 -0
  333. data/ext/ice/cpp/src/Ice/PropertiesAdmin.cpp +555 -0
  334. data/ext/ice/cpp/src/Ice/PropertiesAdminI.cpp +207 -0
  335. data/ext/ice/cpp/src/Ice/PropertiesAdminI.h +45 -0
  336. data/ext/ice/cpp/src/Ice/PropertiesF.cpp +39 -0
  337. data/ext/ice/cpp/src/Ice/PropertiesI.cpp +759 -0
  338. data/ext/ice/cpp/src/Ice/PropertiesI.h +78 -0
  339. data/ext/ice/cpp/src/Ice/PropertyNames.cpp +1293 -0
  340. data/ext/ice/cpp/src/Ice/PropertyNames.h +81 -0
  341. data/ext/ice/cpp/src/Ice/Protocol.cpp +137 -0
  342. data/ext/ice/cpp/src/Ice/ProtocolInstance.cpp +98 -0
  343. data/ext/ice/cpp/src/Ice/ProtocolInstance.h +91 -0
  344. data/ext/ice/cpp/src/Ice/ProtocolInstanceF.h +26 -0
  345. data/ext/ice/cpp/src/Ice/ProtocolPluginFacade.cpp +51 -0
  346. data/ext/ice/cpp/src/Ice/ProtocolPluginFacade.h +67 -0
  347. data/ext/ice/cpp/src/Ice/ProtocolPluginFacadeF.h +26 -0
  348. data/ext/ice/cpp/src/Ice/Proxy.cpp +1810 -0
  349. data/ext/ice/cpp/src/Ice/ProxyFactory.cpp +305 -0
  350. data/ext/ice/cpp/src/Ice/ProxyFactory.h +57 -0
  351. data/ext/ice/cpp/src/Ice/Reference.cpp +1947 -0
  352. data/ext/ice/cpp/src/Ice/Reference.h +305 -0
  353. data/ext/ice/cpp/src/Ice/ReferenceFactory.cpp +937 -0
  354. data/ext/ice/cpp/src/Ice/ReferenceFactory.h +81 -0
  355. data/ext/ice/cpp/src/Ice/ReferenceFactoryF.h +24 -0
  356. data/ext/ice/cpp/src/Ice/RemoteLogger.cpp +958 -0
  357. data/ext/ice/cpp/src/Ice/ReplyStatus.h +29 -0
  358. data/ext/ice/cpp/src/Ice/RequestHandler.cpp +40 -0
  359. data/ext/ice/cpp/src/Ice/RequestHandler.h +90 -0
  360. data/ext/ice/cpp/src/Ice/RequestHandlerFactory.cpp +70 -0
  361. data/ext/ice/cpp/src/Ice/RequestHandlerFactory.h +41 -0
  362. data/ext/ice/cpp/src/Ice/ResponseHandler.cpp +20 -0
  363. data/ext/ice/cpp/src/Ice/ResponseHandler.h +39 -0
  364. data/ext/ice/cpp/src/Ice/RetryQueue.cpp +154 -0
  365. data/ext/ice/cpp/src/Ice/RetryQueue.h +69 -0
  366. data/ext/ice/cpp/src/Ice/RetryQueueF.h +24 -0
  367. data/ext/ice/cpp/src/Ice/Router.cpp +849 -0
  368. data/ext/ice/cpp/src/Ice/RouterF.cpp +39 -0
  369. data/ext/ice/cpp/src/Ice/RouterInfo.cpp +381 -0
  370. data/ext/ice/cpp/src/Ice/RouterInfo.h +148 -0
  371. data/ext/ice/cpp/src/Ice/RouterInfoF.h +30 -0
  372. data/ext/ice/cpp/src/Ice/Selector.cpp +926 -0
  373. data/ext/ice/cpp/src/Ice/Selector.h +231 -0
  374. data/ext/ice/cpp/src/Ice/ServantLocator.cpp +41 -0
  375. data/ext/ice/cpp/src/Ice/ServantLocatorF.cpp +38 -0
  376. data/ext/ice/cpp/src/Ice/ServantManager.cpp +495 -0
  377. data/ext/ice/cpp/src/Ice/ServantManager.h +74 -0
  378. data/ext/ice/cpp/src/Ice/Service.cpp +1897 -0
  379. data/ext/ice/cpp/src/Ice/SharedContext.h +51 -0
  380. data/ext/ice/cpp/src/Ice/SliceChecksumDict.cpp +34 -0
  381. data/ext/ice/cpp/src/Ice/SliceChecksums.cpp +80 -0
  382. data/ext/ice/cpp/src/Ice/SlicedData.cpp +80 -0
  383. data/ext/ice/cpp/src/Ice/Stream.cpp +53 -0
  384. data/ext/ice/cpp/src/Ice/StreamI.cpp +832 -0
  385. data/ext/ice/cpp/src/Ice/StreamI.h +198 -0
  386. data/ext/ice/cpp/src/Ice/StreamSocket.cpp +521 -0
  387. data/ext/ice/cpp/src/Ice/StreamSocket.h +85 -0
  388. data/ext/ice/cpp/src/Ice/StringConverterPlugin.cpp +145 -0
  389. data/ext/ice/cpp/src/Ice/SysLoggerI.cpp +167 -0
  390. data/ext/ice/cpp/src/Ice/SysLoggerI.h +43 -0
  391. data/ext/ice/cpp/src/Ice/TcpAcceptor.cpp +235 -0
  392. data/ext/ice/cpp/src/Ice/TcpAcceptor.h +67 -0
  393. data/ext/ice/cpp/src/Ice/TcpConnector.cpp +133 -0
  394. data/ext/ice/cpp/src/Ice/TcpConnector.h +51 -0
  395. data/ext/ice/cpp/src/Ice/TcpEndpointI.cpp +397 -0
  396. data/ext/ice/cpp/src/Ice/TcpEndpointI.h +93 -0
  397. data/ext/ice/cpp/src/Ice/TcpTransceiver.cpp +127 -0
  398. data/ext/ice/cpp/src/Ice/TcpTransceiver.h +61 -0
  399. data/ext/ice/cpp/src/Ice/ThreadPool.cpp +1357 -0
  400. data/ext/ice/cpp/src/Ice/ThreadPool.h +399 -0
  401. data/ext/ice/cpp/src/Ice/TraceLevels.cpp +43 -0
  402. data/ext/ice/cpp/src/Ice/TraceLevels.h +50 -0
  403. data/ext/ice/cpp/src/Ice/TraceLevelsF.h +26 -0
  404. data/ext/ice/cpp/src/Ice/TraceUtil.cpp +452 -0
  405. data/ext/ice/cpp/src/Ice/TraceUtil.h +28 -0
  406. data/ext/ice/cpp/src/Ice/Transceiver.cpp +24 -0
  407. data/ext/ice/cpp/src/Ice/Transceiver.h +52 -0
  408. data/ext/ice/cpp/src/Ice/TransceiverF.h +38 -0
  409. data/ext/ice/cpp/src/Ice/UdpConnector.cpp +144 -0
  410. data/ext/ice/cpp/src/Ice/UdpConnector.h +51 -0
  411. data/ext/ice/cpp/src/Ice/UdpEndpointI.cpp +483 -0
  412. data/ext/ice/cpp/src/Ice/UdpEndpointI.h +95 -0
  413. data/ext/ice/cpp/src/Ice/UdpTransceiver.cpp +1156 -0
  414. data/ext/ice/cpp/src/Ice/UdpTransceiver.h +123 -0
  415. data/ext/ice/cpp/src/Ice/Version.cpp +46 -0
  416. data/ext/ice/cpp/src/Ice/WSAcceptor.cpp +103 -0
  417. data/ext/ice/cpp/src/Ice/WSAcceptor.h +61 -0
  418. data/ext/ice/cpp/src/Ice/WSConnector.cpp +113 -0
  419. data/ext/ice/cpp/src/Ice/WSConnector.h +51 -0
  420. data/ext/ice/cpp/src/Ice/WSEndpoint.cpp +441 -0
  421. data/ext/ice/cpp/src/Ice/WSEndpoint.h +97 -0
  422. data/ext/ice/cpp/src/Ice/WSTransceiver.cpp +1728 -0
  423. data/ext/ice/cpp/src/Ice/WSTransceiver.h +149 -0
  424. data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.cpp +594 -0
  425. data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.h +1035 -0
  426. data/ext/ice/cpp/src/IceDiscovery/LocatorI.cpp +208 -0
  427. data/ext/ice/cpp/src/IceDiscovery/LocatorI.h +78 -0
  428. data/ext/ice/cpp/src/IceDiscovery/LookupI.cpp +308 -0
  429. data/ext/ice/cpp/src/IceDiscovery/LookupI.h +183 -0
  430. data/ext/ice/cpp/src/IceDiscovery/Makefile +61 -0
  431. data/ext/ice/cpp/src/IceDiscovery/PluginI.cpp +148 -0
  432. data/ext/ice/cpp/src/IceDiscovery/PluginI.h +39 -0
  433. data/ext/ice/cpp/src/IceSSL/AcceptorI.cpp +258 -0
  434. data/ext/ice/cpp/src/IceSSL/AcceptorI.h +66 -0
  435. data/ext/ice/cpp/src/IceSSL/Certificate.cpp +1334 -0
  436. data/ext/ice/cpp/src/IceSSL/ConnectionInfo.cpp +42 -0
  437. data/ext/ice/cpp/src/IceSSL/ConnectorI.cpp +151 -0
  438. data/ext/ice/cpp/src/IceSSL/ConnectorI.h +56 -0
  439. data/ext/ice/cpp/src/IceSSL/EndpointI.cpp +397 -0
  440. data/ext/ice/cpp/src/IceSSL/EndpointI.h +96 -0
  441. data/ext/ice/cpp/src/IceSSL/EndpointInfo.cpp +41 -0
  442. data/ext/ice/cpp/src/IceSSL/Instance.cpp +38 -0
  443. data/ext/ice/cpp/src/IceSSL/Instance.h +42 -0
  444. data/ext/ice/cpp/src/IceSSL/InstanceF.h +34 -0
  445. data/ext/ice/cpp/src/IceSSL/Makefile +82 -0
  446. data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.cpp +1001 -0
  447. data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.cpp +607 -0
  448. data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.h +75 -0
  449. data/ext/ice/cpp/src/IceSSL/PluginI.cpp +102 -0
  450. data/ext/ice/cpp/src/IceSSL/PluginI.h +56 -0
  451. data/ext/ice/cpp/src/IceSSL/RFC2253.cpp +541 -0
  452. data/ext/ice/cpp/src/IceSSL/RFC2253.h +67 -0
  453. data/ext/ice/cpp/src/IceSSL/SChannelEngine.cpp +729 -0
  454. data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.cpp +1062 -0
  455. data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.h +130 -0
  456. data/ext/ice/cpp/src/IceSSL/SSLEngine.cpp +291 -0
  457. data/ext/ice/cpp/src/IceSSL/SSLEngine.h +264 -0
  458. data/ext/ice/cpp/src/IceSSL/SSLEngineF.h +41 -0
  459. data/ext/ice/cpp/src/IceSSL/SecureTransportEngine.cpp +1514 -0
  460. data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.cpp +609 -0
  461. data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.h +91 -0
  462. data/ext/ice/cpp/src/IceSSL/TrustManager.cpp +246 -0
  463. data/ext/ice/cpp/src/IceSSL/TrustManager.h +51 -0
  464. data/ext/ice/cpp/src/IceSSL/TrustManagerF.h +26 -0
  465. data/ext/ice/cpp/src/IceSSL/Util.cpp +1423 -0
  466. data/ext/ice/cpp/src/IceSSL/Util.h +136 -0
  467. data/ext/ice/cpp/src/IceUtil/ArgVector.cpp +65 -0
  468. data/ext/ice/cpp/src/IceUtil/ArgVector.h +41 -0
  469. data/ext/ice/cpp/src/IceUtil/Cond.cpp +386 -0
  470. data/ext/ice/cpp/src/IceUtil/ConvertUTF.cpp +477 -0
  471. data/ext/ice/cpp/src/IceUtil/ConvertUTF.h +144 -0
  472. data/ext/ice/cpp/src/IceUtil/CountDownLatch.cpp +184 -0
  473. data/ext/ice/cpp/src/IceUtil/CtrlCHandler.cpp +273 -0
  474. data/ext/ice/cpp/src/IceUtil/Exception.cpp +782 -0
  475. data/ext/ice/cpp/src/IceUtil/FileUtil.cpp +532 -0
  476. data/ext/ice/cpp/src/IceUtil/FileUtil.h +159 -0
  477. data/ext/ice/cpp/src/IceUtil/InputUtil.cpp +41 -0
  478. data/ext/ice/cpp/src/IceUtil/Makefile +68 -0
  479. data/ext/ice/cpp/src/IceUtil/MutexProtocol.cpp +24 -0
  480. data/ext/ice/cpp/src/IceUtil/Options.cpp +1049 -0
  481. data/ext/ice/cpp/src/IceUtil/OutputUtil.cpp +591 -0
  482. data/ext/ice/cpp/src/IceUtil/Random.cpp +185 -0
  483. data/ext/ice/cpp/src/IceUtil/RecMutex.cpp +257 -0
  484. data/ext/ice/cpp/src/IceUtil/SHA1.cpp +126 -0
  485. data/ext/ice/cpp/src/IceUtil/Shared.cpp +200 -0
  486. data/ext/ice/cpp/src/IceUtil/StopWatch.h +54 -0
  487. data/ext/ice/cpp/src/IceUtil/StringConverter.cpp +450 -0
  488. data/ext/ice/cpp/src/IceUtil/StringUtil.cpp +842 -0
  489. data/ext/ice/cpp/src/IceUtil/Thread.cpp +809 -0
  490. data/ext/ice/cpp/src/IceUtil/ThreadException.cpp +172 -0
  491. data/ext/ice/cpp/src/IceUtil/Time.cpp +306 -0
  492. data/ext/ice/cpp/src/IceUtil/Timer.cpp +251 -0
  493. data/ext/ice/cpp/src/IceUtil/UUID.cpp +174 -0
  494. data/ext/ice/cpp/src/IceUtil/Unicode.cpp +131 -0
  495. data/ext/ice/cpp/src/IceUtil/Unicode.h +49 -0
  496. data/ext/ice/cpp/src/Slice/CPlusPlusUtil.cpp +1139 -0
  497. data/ext/ice/cpp/src/Slice/Checksum.cpp +452 -0
  498. data/ext/ice/cpp/src/Slice/CsUtil.cpp +2650 -0
  499. data/ext/ice/cpp/src/Slice/DotNetNames.cpp +146 -0
  500. data/ext/ice/cpp/src/Slice/FileTracker.cpp +203 -0
  501. data/ext/ice/cpp/src/Slice/Grammar.cpp +4755 -0
  502. data/ext/ice/cpp/src/Slice/Grammar.h +98 -0
  503. data/ext/ice/cpp/src/Slice/GrammarUtil.h +234 -0
  504. data/ext/ice/cpp/src/Slice/JavaUtil.cpp +4376 -0
  505. data/ext/ice/cpp/src/Slice/MD5.cpp +57 -0
  506. data/ext/ice/cpp/src/Slice/MD5.h +44 -0
  507. data/ext/ice/cpp/src/Slice/MD5I.cpp +385 -0
  508. data/ext/ice/cpp/src/Slice/MD5I.h +91 -0
  509. data/ext/ice/cpp/src/Slice/Makefile +65 -0
  510. data/ext/ice/cpp/src/Slice/PHPUtil.cpp +156 -0
  511. data/ext/ice/cpp/src/Slice/Parser.cpp +6386 -0
  512. data/ext/ice/cpp/src/Slice/Preprocessor.cpp +686 -0
  513. data/ext/ice/cpp/src/Slice/Python.cpp +675 -0
  514. data/ext/ice/cpp/src/Slice/PythonUtil.cpp +2614 -0
  515. data/ext/ice/cpp/src/Slice/Ruby.cpp +317 -0
  516. data/ext/ice/cpp/src/Slice/RubyUtil.cpp +1774 -0
  517. data/ext/ice/cpp/src/Slice/Scanner.cpp +2426 -0
  518. data/ext/ice/cpp/src/Slice/Util.cpp +325 -0
  519. data/ext/ice/mcpp/config.h.Darwin +227 -0
  520. data/ext/ice/mcpp/config.h.Linux +227 -0
  521. data/ext/ice/mcpp/config.h.MINGW +7 -0
  522. data/ext/ice/mcpp/configed.H +382 -0
  523. data/ext/ice/mcpp/directive.c +1699 -0
  524. data/ext/ice/mcpp/eval.c +1673 -0
  525. data/ext/ice/mcpp/expand.c +2980 -0
  526. data/ext/ice/mcpp/internal.H +564 -0
  527. data/ext/ice/mcpp/main.c +1131 -0
  528. data/ext/ice/mcpp/mbchar.c +869 -0
  529. data/ext/ice/mcpp/mcpp_lib.h +31 -0
  530. data/ext/ice/mcpp/mcpp_out.h +13 -0
  531. data/ext/ice/mcpp/support.c +2811 -0
  532. data/ext/ice/mcpp/system.H +396 -0
  533. data/ext/ice/mcpp/system.c +4940 -0
  534. data/ice.gemspec +41 -0
  535. data/lib/Glacier2.rb +12 -0
  536. data/lib/Glacier2/Metrics.rb +99 -0
  537. data/lib/Glacier2/PermissionsVerifier.rb +168 -0
  538. data/lib/Glacier2/PermissionsVerifierF.rb +34 -0
  539. data/lib/Glacier2/Router.rb +141 -0
  540. data/lib/Glacier2/RouterF.rb +29 -0
  541. data/lib/Glacier2/SSLInfo.rb +79 -0
  542. data/lib/Glacier2/Session.rb +470 -0
  543. data/lib/Ice.rb +659 -0
  544. data/lib/Ice/BuiltinSequences.rb +64 -0
  545. data/lib/Ice/Communicator.rb +93 -0
  546. data/lib/Ice/CommunicatorF.rb +28 -0
  547. data/lib/Ice/Connection.rb +414 -0
  548. data/lib/Ice/ConnectionF.rb +36 -0
  549. data/lib/Ice/Current.rb +152 -0
  550. data/lib/Ice/Endpoint.rb +265 -0
  551. data/lib/Ice/EndpointF.rb +52 -0
  552. data/lib/Ice/EndpointTypes.rb +77 -0
  553. data/lib/Ice/FacetMap.rb +28 -0
  554. data/lib/Ice/Identity.rb +70 -0
  555. data/lib/Ice/ImplicitContext.rb +59 -0
  556. data/lib/Ice/ImplicitContextF.rb +28 -0
  557. data/lib/Ice/Instrumentation.rb +425 -0
  558. data/lib/Ice/InstrumentationF.rb +35 -0
  559. data/lib/Ice/LocalException.rb +1081 -0
  560. data/lib/Ice/Locator.rb +314 -0
  561. data/lib/Ice/LocatorF.rb +34 -0
  562. data/lib/Ice/Logger.rb +57 -0
  563. data/lib/Ice/LoggerF.rb +28 -0
  564. data/lib/Ice/Metrics.rb +696 -0
  565. data/lib/Ice/ObjectAdapterF.rb +28 -0
  566. data/lib/Ice/ObjectFactory.rb +53 -0
  567. data/lib/Ice/ObjectFactoryF.rb +28 -0
  568. data/lib/Ice/Plugin.rb +87 -0
  569. data/lib/Ice/PluginF.rb +32 -0
  570. data/lib/Ice/Process.rb +93 -0
  571. data/lib/Ice/ProcessF.rb +29 -0
  572. data/lib/Ice/Properties.rb +65 -0
  573. data/lib/Ice/PropertiesAdmin.rb +104 -0
  574. data/lib/Ice/PropertiesF.rb +33 -0
  575. data/lib/Ice/Router.rb +163 -0
  576. data/lib/Ice/RouterF.rb +29 -0
  577. data/lib/Ice/SliceChecksumDict.rb +28 -0
  578. data/lib/Ice/Version.rb +100 -0
  579. data/lib/IceBox.rb +10 -0
  580. data/lib/IceBox/IceBox.rb +272 -0
  581. data/lib/IceGrid.rb +17 -0
  582. data/lib/IceGrid/Admin.rb +1076 -0
  583. data/lib/IceGrid/Descriptor.rb +1505 -0
  584. data/lib/IceGrid/Exception.rb +401 -0
  585. data/lib/IceGrid/FileParser.rb +105 -0
  586. data/lib/IceGrid/Locator.rb +105 -0
  587. data/lib/IceGrid/Observer.rb +571 -0
  588. data/lib/IceGrid/Query.rb +168 -0
  589. data/lib/IceGrid/Registry.rb +120 -0
  590. data/lib/IceGrid/Session.rb +114 -0
  591. data/lib/IceGrid/UserAccountMapper.rb +101 -0
  592. data/lib/IcePatch2.rb +10 -0
  593. data/lib/IcePatch2/FileInfo.rb +75 -0
  594. data/lib/IcePatch2/FileServer.rb +141 -0
  595. data/lib/IceStorm.rb +11 -0
  596. data/lib/IceStorm/IceStorm.rb +463 -0
  597. data/lib/IceStorm/Metrics.rb +155 -0
  598. data/slice/Freeze/BackgroundSaveEvictor.ice +111 -0
  599. data/slice/Freeze/CatalogData.ice +49 -0
  600. data/slice/Freeze/Connection.ice +111 -0
  601. data/slice/Freeze/ConnectionF.ice +20 -0
  602. data/slice/Freeze/DB.ice +37 -0
  603. data/slice/Freeze/Evictor.ice +339 -0
  604. data/slice/Freeze/EvictorF.ice +22 -0
  605. data/slice/Freeze/EvictorStorage.ice +72 -0
  606. data/slice/Freeze/Exception.ice +100 -0
  607. data/slice/Freeze/Transaction.ice +57 -0
  608. data/slice/Freeze/TransactionalEvictor.ice +50 -0
  609. data/slice/Glacier2/Metrics.ice +77 -0
  610. data/slice/Glacier2/PermissionsVerifier.ice +105 -0
  611. data/slice/Glacier2/PermissionsVerifierF.ice +21 -0
  612. data/slice/Glacier2/Router.ice +178 -0
  613. data/slice/Glacier2/RouterF.ice +20 -0
  614. data/slice/Glacier2/SSLInfo.ice +50 -0
  615. data/slice/Glacier2/Session.ice +273 -0
  616. data/slice/Ice/BuiltinSequences.ice +48 -0
  617. data/slice/Ice/Communicator.ice +567 -0
  618. data/slice/Ice/CommunicatorF.ice +20 -0
  619. data/slice/Ice/Connection.ice +323 -0
  620. data/slice/Ice/ConnectionF.ice +22 -0
  621. data/slice/Ice/Current.ice +160 -0
  622. data/slice/Ice/Endpoint.ice +227 -0
  623. data/slice/Ice/EndpointF.ice +32 -0
  624. data/slice/Ice/EndpointTypes.ice +38 -0
  625. data/slice/Ice/FacetMap.ice +25 -0
  626. data/slice/Ice/Identity.ice +59 -0
  627. data/slice/Ice/ImplicitContext.ice +109 -0
  628. data/slice/Ice/ImplicitContextF.ice +20 -0
  629. data/slice/Ice/Instrumentation.ice +499 -0
  630. data/slice/Ice/InstrumentationF.ice +26 -0
  631. data/slice/Ice/LocalException.ice +1015 -0
  632. data/slice/Ice/Locator.ice +227 -0
  633. data/slice/Ice/LocatorF.ice +21 -0
  634. data/slice/Ice/Logger.ice +86 -0
  635. data/slice/Ice/LoggerF.ice +20 -0
  636. data/slice/Ice/Metrics.ice +422 -0
  637. data/slice/Ice/ObjectAdapter.ice +673 -0
  638. data/slice/Ice/ObjectAdapterF.ice +20 -0
  639. data/slice/Ice/ObjectFactory.ice +60 -0
  640. data/slice/Ice/ObjectFactoryF.ice +20 -0
  641. data/slice/Ice/Plugin.ice +117 -0
  642. data/slice/Ice/PluginF.ice +21 -0
  643. data/slice/Ice/Process.ice +54 -0
  644. data/slice/Ice/ProcessF.ice +20 -0
  645. data/slice/Ice/Properties.ice +228 -0
  646. data/slice/Ice/PropertiesAdmin.ice +75 -0
  647. data/slice/Ice/PropertiesF.ice +21 -0
  648. data/slice/Ice/RemoteLogger.ice +232 -0
  649. data/slice/Ice/Router.ice +83 -0
  650. data/slice/Ice/RouterF.ice +20 -0
  651. data/slice/Ice/ServantLocator.ice +117 -0
  652. data/slice/Ice/ServantLocatorF.ice +20 -0
  653. data/slice/Ice/SliceChecksumDict.ice +25 -0
  654. data/slice/Ice/Version.ice +39 -0
  655. data/slice/IceBox/IceBox.ice +194 -0
  656. data/slice/IceDiscovery/IceDiscovery.ice +32 -0
  657. data/slice/IceGrid/Admin.ice +1578 -0
  658. data/slice/IceGrid/Descriptor.ice +1079 -0
  659. data/slice/IceGrid/Discovery.ice +73 -0
  660. data/slice/IceGrid/Exception.ice +383 -0
  661. data/slice/IceGrid/FileParser.ice +61 -0
  662. data/slice/IceGrid/Locator.ice +56 -0
  663. data/slice/IceGrid/Observer.ice +394 -0
  664. data/slice/IceGrid/PluginFacade.ice +316 -0
  665. data/slice/IceGrid/Query.ice +130 -0
  666. data/slice/IceGrid/Registry.ice +138 -0
  667. data/slice/IceGrid/Session.ice +124 -0
  668. data/slice/IceGrid/UserAccountMapper.ice +58 -0
  669. data/slice/IcePatch2/FileInfo.ice +49 -0
  670. data/slice/IcePatch2/FileServer.ice +129 -0
  671. data/slice/IceSSL/ConnectionInfo.ice +34 -0
  672. data/slice/IceSSL/EndpointInfo.ice +41 -0
  673. data/slice/IceStorm/IceStorm.ice +405 -0
  674. data/slice/IceStorm/Metrics.ice +71 -0
  675. metadata +737 -0
@@ -0,0 +1,869 @@
1
+ /*-
2
+ * Copyright (c) 1998, 2002-2008 Kiyoshi Matsui <kmatsui@t3.rim.or.jp>
3
+ * All rights reserved.
4
+ *
5
+ * Some parts of this code are derived from the public domain software
6
+ * DECUS cpp (1984,1985) written by Martin Minow.
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
+ * 1. Redistributions of source code must retain the above copyright
12
+ * notice, this list of conditions and the following disclaimer.
13
+ * 2. Redistributions in binary form must reproduce the above copyright
14
+ * notice, this list of conditions and the following disclaimer in the
15
+ * documentation and/or other materials provided with the distribution.
16
+ *
17
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND
18
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE
21
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27
+ * SUCH DAMAGE.
28
+ */
29
+
30
+ /*
31
+ * M B C H A R . C
32
+ * C h a r a c t e r h a n d l i n g R o u t i n e s
33
+ *
34
+ * Character handling and multi-byte character handling routines are
35
+ * placed here.
36
+ */
37
+
38
+ #if PREPROCESSED
39
+ #include "mcpp.H"
40
+ #else
41
+ #include "system.H"
42
+ #include "internal.H"
43
+ #endif
44
+
45
+ /*
46
+ * Tables of character types and multi-byte character types.
47
+ *
48
+ * Some of these character attributes will be overwritten by
49
+ * execution time option '-@post' or '-@old'.
50
+ * Warning on erroneous sequence will be issued from the caller routines:
51
+ * scan_quote(), scan_id() or scan_number().
52
+ */
53
+
54
+ /* Non-ASCII characters are always checked by mb_read(). */
55
+ #define NA 0x4000 /* Non-ASCII characters */
56
+
57
+ /* Horizontal spaces (' ', '\t' and TOK_SEP) */
58
+ #define HSPA (SPA | HSP)
59
+
60
+ short * char_type; /* Pointer to one of the following type_*[]. */
61
+
62
+ #define EJ1 0x100 /* 1st byte of EUC_JP */
63
+ #define EJ2 0x200 /* 2nd byte of EUC_JP */
64
+ #define GB1 0x400 /* 1st byte of GB2312 */
65
+ #define GB2 0x800 /* 2nd byte of GB2312 */
66
+ #define KS1 0x1000 /* 1st byte of KSC5601 */
67
+ #define KS2 0x2000 /* 2nd byte of KSC5601 */
68
+
69
+ #define EJ12 (EJ1 | EJ2) /* 1st byte or 2nd byte of EUC_JP */
70
+ #define GB12 (GB1 | GB2)
71
+ #define KS12 (KS1 | KS2)
72
+ #define EJ1N (NA | EJ1)
73
+ #define EU12N (NA | EJ12 | GB12 | KS12)
74
+ /* 1st or 2nd byte of EUC_JP, GB2312 or KSC5601, or any other non-ASCII */
75
+
76
+ static short type_euc[ UCHARMAX + 1] = {
77
+ /*
78
+ * For EUC_JP, GB2312, KSC5601 or other similar multi-byte char encodings.
79
+ */
80
+
81
+ /* Character type codes */
82
+ /* 0, 1, 2, 3, 4, 5, 6, 7, */
83
+ /* 8, 9, A, B, C, D, E, F, Hex */
84
+
85
+ 000, 000, 000, 000, 000, 000, 000, 000, /* 00 */
86
+ 000, HSPA, SPA, SPA, SPA, SPA, 000, 000, /* 08 */
87
+ 000, 000, 000, 000, 000, 000, 000, 000, /* 10 */
88
+ /* 0x17-0x1A and 0x1F will be cleared in some modes by chk_opts() */
89
+ 000, LET, LET, 000, 000, 000, 000, HSPA, /* 18 */
90
+ HSPA, PUNC, QUO, PUNC, 000, PUNC, PUNC, QUO, /* 20 !"#$%&' */
91
+ PUNC, PUNC, PUNC, PUNC, PUNC, PUNC, DOT, PUNC, /* 28 ()*+,-./ */
92
+ DIG, DIG, DIG, DIG, DIG, DIG, DIG, DIG, /* 30 01234567 */
93
+ DIG, DIG, PUNC, PUNC, PUNC, PUNC, PUNC, PUNC, /* 38 89:;<=>? */
94
+
95
+ 000, LET, LET, LET, LET, LET, LET, LET, /* 40 @ABCDEFG */
96
+ LET, LET, LET, LET, LET, LET, LET, LET, /* 48 HIJKLMNO */
97
+ LET, LET, LET, LET, LET, LET, LET, LET, /* 50 PQRSTUVW */
98
+ LET, LET, LET, PUNC, 000, PUNC, PUNC, LET, /* 58 XYZ[\]^_ */
99
+ 000, LET, LET, LET, LET, LET, LET, LET, /* 60 `abcdefg */
100
+ LET, LET, LET, LET, LET, LET, LET, LET, /* 68 hijklmno */
101
+ LET, LET, LET, LET, LET, LET, LET, LET, /* 70 pqrstuvw */
102
+ LET, LET, LET, PUNC, PUNC, PUNC, PUNC, 000, /* 78 xyz{|}~ */
103
+
104
+ NA, NA, NA, NA, NA, NA, NA, NA, /* 80 .. 87 */
105
+ NA, NA, NA, NA, NA, NA, EJ1N, NA, /* 88 .. 8F */
106
+ NA, NA, NA, NA, NA, NA, NA, NA, /* 90 .. 97 */
107
+ NA, NA, NA, NA, NA, NA, NA, NA, /* 98 .. 9F */
108
+ NA, EU12N, EU12N, EU12N, EU12N, EU12N, EU12N, EU12N, /* A0 .. A7 */
109
+ EU12N, EU12N, EU12N, EU12N, EU12N, EU12N, EU12N, EU12N, /* A8 .. AF */
110
+ EU12N, EU12N, EU12N, EU12N, EU12N, EU12N, EU12N, EU12N, /* B0 .. B7 */
111
+ EU12N, EU12N, EU12N, EU12N, EU12N, EU12N, EU12N, EU12N, /* B8 .. BF */
112
+ EU12N, EU12N, EU12N, EU12N, EU12N, EU12N, EU12N, EU12N, /* C0 .. C7 */
113
+ EU12N, EU12N, EU12N, EU12N, EU12N, EU12N, EU12N, EU12N, /* C8 .. CF */
114
+ EU12N, EU12N, EU12N, EU12N, EU12N, EU12N, EU12N, EU12N, /* D0 .. D7 */
115
+ EU12N, EU12N, EU12N, EU12N, EU12N, EU12N, EU12N, EU12N, /* D8 .. DF */
116
+ EU12N, EU12N, EU12N, EU12N, EU12N, EU12N, EU12N, EU12N, /* E0 .. E7 */
117
+ EU12N, EU12N, EU12N, EU12N, EU12N, EU12N, EU12N, EU12N, /* E8 .. EF */
118
+ EU12N, EU12N, EU12N, EU12N, EU12N, EU12N, EU12N, EU12N, /* F0 .. F7 */
119
+ EU12N, EU12N, EU12N, EU12N, EU12N, EU12N, EU12N, NA, /* F8 .. FF */
120
+ };
121
+
122
+ static short type_bsl[ UCHARMAX + 1] = {
123
+ /*
124
+ * For SJIS, BIGFIVE or other similar encodings which may have '\\' value as
125
+ * the second byte of multi-byte character.
126
+ */
127
+
128
+ #define SJ1 0x100 /* 1st byte of SJIS */
129
+ #define SJ2 0x200 /* 2nd byte of SJIS */
130
+ #define BF1 0x400 /* 1st byte of BIGFIVE */
131
+ #define BF2 0x800 /* 2nd byte of BIGFIVE */
132
+
133
+ #define SB2 (SJ2 | BF2)
134
+ #define SJ2N (NA | SJ2)
135
+ #define SB2N (NA | SJ2 | BF2)
136
+ #define SJ12N (NA | SJ1 | SJ2)
137
+ #define BF12N (NA | BF1 | BF2)
138
+ #define SB12N (NA | SJ1 | SJ2 | BF1 | BF2)
139
+ #define S2B12N (NA | SJ2 | BF1 | BF2)
140
+
141
+ #define LSB2 (LET | SB2)
142
+ #define PSB2 (PUNC| SB2)
143
+
144
+ /* Character type codes */
145
+ /* 0, 1, 2, 3, 4, 5, 6, 7, */
146
+ /* 8, 9, A, B, C, D, E, F, Hex */
147
+
148
+ 000, 000, 000, 000, 000, 000, 000, 000, /* 00 */
149
+ 000, HSPA, SPA, SPA, SPA, SPA, 000, 000, /* 08 */
150
+ 000, 000, 000, 000, 000, 000, 000, 000, /* 10 */
151
+ /* 0x17-0x1A and 0x1F will be cleared in some modes by chk_opts() */
152
+ 000, LET, LET, 000, 000, 000, 000, HSPA, /* 18 */
153
+ HSPA, PUNC, QUO, PUNC, 000, PUNC, PUNC, QUO, /* 20 !"#$%&' */
154
+ PUNC, PUNC, PUNC, PUNC, PUNC, PUNC, DOT, PUNC, /* 28 ()*+,-./ */
155
+ DIG, DIG, DIG, DIG, DIG, DIG, DIG, DIG, /* 30 01234567 */
156
+ DIG, DIG, PUNC, PUNC, PUNC, PUNC, PUNC, PUNC, /* 38 89:;<=>? */
157
+
158
+ SB2, LSB2, LSB2, LSB2, LSB2, LSB2, LSB2, LSB2, /* 40 @ABCDEFG */
159
+ LSB2, LSB2, LSB2, LSB2, LSB2, LSB2, LSB2, LSB2, /* 48 HIJKLMNO */
160
+ LSB2, LSB2, LSB2, LSB2, LSB2, LSB2, LSB2, LSB2, /* 50 PQRSTUVW */
161
+ LSB2, LSB2, LSB2, PSB2, SB2, PSB2, PSB2, LSB2, /* 58 XYZ[\]^_ */
162
+ SB2, LSB2, LSB2, LSB2, LSB2, LSB2, LSB2, LSB2, /* 60 `abcdefg */
163
+ LSB2, LSB2, LSB2, LSB2, LSB2, LSB2, LSB2, LSB2, /* 68 hijklmno */
164
+ LSB2, LSB2, LSB2, LSB2, LSB2, LSB2, LSB2, LSB2, /* 70 pqrstuvw */
165
+ LSB2, LSB2, LSB2, PSB2, PSB2, PSB2, PSB2, 000, /* 78 xyz{|}~ */
166
+
167
+ SB2N, SJ12N, SJ12N, SJ12N, SJ12N, SJ12N, SJ12N, SJ12N, /* 80 .. 87 */
168
+ SJ12N, SJ12N, SJ12N, SJ12N, SJ12N, SJ12N, SJ12N, SJ12N, /* 88 .. 8F */
169
+ SJ12N, SJ12N, SJ12N, SJ12N, SJ12N, SJ12N, SJ12N, SJ12N, /* 90 .. 97 */
170
+ SJ12N, SJ12N, SJ12N, SJ12N, SJ12N, SJ12N, SJ12N, SJ12N, /* 98 .. 9F */
171
+ SJ2N, S2B12N,S2B12N,S2B12N,S2B12N,S2B12N,S2B12N,S2B12N, /* A0 .. A7 */
172
+ S2B12N,S2B12N,S2B12N,S2B12N,S2B12N,S2B12N,S2B12N,S2B12N, /* A8 .. AF */
173
+ S2B12N,S2B12N,S2B12N,S2B12N,S2B12N,S2B12N,S2B12N,S2B12N, /* B0 .. B7 */
174
+ S2B12N,S2B12N,S2B12N,S2B12N,S2B12N,S2B12N,S2B12N,S2B12N, /* B8 .. BF */
175
+ S2B12N,S2B12N,S2B12N,S2B12N,S2B12N,S2B12N,S2B12N,S2B12N, /* C0 .. C7 */
176
+ S2B12N,S2B12N,S2B12N,S2B12N,S2B12N,S2B12N,S2B12N,S2B12N, /* C8 .. CF */
177
+ S2B12N,S2B12N,S2B12N,S2B12N,S2B12N,S2B12N,S2B12N,S2B12N, /* D0 .. D7 */
178
+ S2B12N,S2B12N,S2B12N,S2B12N,S2B12N,S2B12N,S2B12N,S2B12N, /* D8 .. DF */
179
+ SB12N, SB12N, SB12N, SB12N, SB12N, SB12N, SB12N, SB12N, /* E0 .. E7 */
180
+ SB12N, SB12N, SB12N, SB12N, SB12N, SB12N, SB12N, SB12N, /* E8 .. EF */
181
+ SB12N, SB12N, SB12N, SB12N, SB12N, SB12N, SB12N, SB12N, /* F0 .. F7 */
182
+ SB12N, SB12N, SB12N, SB12N, SB12N, BF12N, BF12N, NA, /* F8 .. FF */
183
+ };
184
+
185
+ /*
186
+ * For ISO2022_JP multi-byte character encoding.
187
+ */
188
+
189
+ #define IS1 0x100 /* 1st byte of shift-sequence */
190
+ #define IS2 0x200 /* 2nd byte of shift-sequence */
191
+ #define IS3 0x400 /* 3rd byte of shift-sequence */
192
+ #define IS4 0x800 /* 4th byte of shift-sequence */
193
+ #define IJP 0x1000 /* 1st or 2nd byte of ISO-2022-JP (ISO-2022-JP1) */
194
+
195
+ #define PIJP (PUNC | IJP)
196
+ #define QIJP (QUO | IJP)
197
+ #define DTJP (DOT | IJP)
198
+ #define DGJP (DIG | IJP)
199
+ #define LIJP (LET | IJP)
200
+
201
+ #define JPS2 (IJP | IS2)
202
+ #define PJPS23 (PIJP | IS2 | IS3)
203
+ #define LJPS3 (LIJP | IS3)
204
+ #define LJPS4 (LIJP | IS4)
205
+
206
+ static short type_iso2022_jp[ UCHARMAX + 1] = {
207
+
208
+ /* Character type codes */
209
+ /* 0, 1, 2, 3, 4, 5, 6, 7, */
210
+ /* 8, 9, A, B, C, D, E, F, Hex */
211
+
212
+ 000, 000, 000, 000, 000, 000, 000, 000, /* 00 */
213
+ 000, HSPA, SPA, SPA, SPA, SPA, 000, 000, /* 08 */
214
+ 000, 000, 000, 000, 000, 000, 000, 000, /* 10 */
215
+ /* 0x17-0x1A and 0x1F will be cleared in some modes by chk_opts() */
216
+ 000, LET, LET, IS1, 000, 000, 000, HSPA, /* 18 */
217
+ HSPA, PIJP, QIJP, PIJP, JPS2, PIJP, PIJP, QIJP, /* 20 !"#$%&' */
218
+ PJPS23,PIJP, PIJP, PIJP, PIJP, PIJP, DTJP, PIJP, /* 28 ()*+,-./ */
219
+ DGJP, DGJP, DGJP, DGJP, DGJP, DGJP, DGJP, DGJP, /* 30 01234567 */
220
+ DGJP, DGJP, PIJP, PIJP, PIJP, PIJP, PIJP, PIJP, /* 38 89:;<=>? */
221
+
222
+ IJP, LIJP, LJPS3, LIJP, LJPS4, LIJP, LIJP, LIJP, /* 40 @ABCDEFG */
223
+ LIJP, LIJP, LIJP, LIJP, LIJP, LIJP, LIJP, LIJP, /* 48 HIJKLMNO */
224
+ LIJP, LIJP, LIJP, LIJP, LIJP, LIJP, LIJP, LIJP, /* 50 PQRSTUVW */
225
+ LIJP, LIJP, LIJP, PIJP, IJP, PIJP, PIJP, LIJP, /* 58 XYZ[\]^_ */
226
+ IJP, LIJP, LIJP, LIJP, LIJP, LIJP, LIJP, LIJP, /* 60 `abcdefg */
227
+ LIJP, LIJP, LIJP, LIJP, LIJP, LIJP, LIJP, LIJP, /* 68 hijklmno */
228
+ LIJP, LIJP, LIJP, LIJP, LIJP, LIJP, LIJP, LIJP, /* 70 pqrstuvw */
229
+ LIJP, LIJP, LIJP, PIJP, PIJP, PIJP, PIJP, 000, /* 78 xyz{|}~ */
230
+
231
+ NA, NA, NA, NA, NA, NA, NA, NA, /* 80 .. 87 */
232
+ NA, NA, NA, NA, NA, NA, NA, NA, /* 88 .. 8F */
233
+ NA, NA, NA, NA, NA, NA, NA, NA, /* 90 .. 97 */
234
+ NA, NA, NA, NA, NA, NA, NA, NA, /* 98 .. 9F */
235
+ NA, NA, NA, NA, NA, NA, NA, NA, /* A0 .. A7 */
236
+ NA, NA, NA, NA, NA, NA, NA, NA, /* A8 .. AF */
237
+ NA, NA, NA, NA, NA, NA, NA, NA, /* B0 .. B7 */
238
+ NA, NA, NA, NA, NA, NA, NA, NA, /* B8 .. BF */
239
+ NA, NA, NA, NA, NA, NA, NA, NA, /* C0 .. C7 */
240
+ NA, NA, NA, NA, NA, NA, NA, NA, /* C8 .. CF */
241
+ NA, NA, NA, NA, NA, NA, NA, NA, /* D0 .. D7 */
242
+ NA, NA, NA, NA, NA, NA, NA, NA, /* D8 .. DF */
243
+ NA, NA, NA, NA, NA, NA, NA, NA, /* E0 .. E7 */
244
+ NA, NA, NA, NA, NA, NA, NA, NA, /* E8 .. EF */
245
+ NA, NA, NA, NA, NA, NA, NA, NA, /* F0 .. F7 */
246
+ NA, NA, NA, NA, NA, NA, NA, NA, /* F8 .. FF */
247
+ };
248
+
249
+ /*
250
+ * For UTF8 multi-byte character encoding.
251
+ */
252
+
253
+ #define U2_1 0x100 /* 1st byte of 2-byte encoding of UTF8 */
254
+ #define U3_1 0x200 /* 1st byte of 3-byte encoding of UTF8 */
255
+ #define U4_1 0x400 /* 1st byte of 4-byte encoding of UTF8 */
256
+ #define UCONT 0x800 /* Continuation of a 2, 3, or 4 byte UTF8 sequence */
257
+ #define U2_1N (NA | U2_1)
258
+ #define U3_1N (NA | U3_1)
259
+ #define U4_1N (NA | U4_1)
260
+ #define UCONTN (NA | UCONT)
261
+
262
+ static short type_utf8[ UCHARMAX + 1] = {
263
+
264
+ /* Character type codes */
265
+ /* 0, 1, 2, 3, 4, 5, 6, 7, */
266
+ /* 8, 9, A, B, C, D, E, F, Hex */
267
+
268
+ 000, 000, 000, 000, 000, 000, 000, 000, /* 00 */
269
+ 000, HSPA, SPA, SPA, SPA, SPA, 000, 000, /* 08 */
270
+ 000, 000, 000, 000, 000, 000, 000, 000, /* 10 */
271
+ /* 0x17-0x1A and 0x1F will be cleared in some modes by chk_opts() */
272
+ 000, LET, LET, 000, 000, 000, 000, HSPA, /* 18 */
273
+ HSPA, PUNC, QUO, PUNC, 000, PUNC, PUNC, QUO, /* 20 !"#$%&' */
274
+ PUNC, PUNC, PUNC, PUNC, PUNC, PUNC, DOT, PUNC, /* 28 ()*+,-./ */
275
+ DIG, DIG, DIG, DIG, DIG, DIG, DIG, DIG, /* 30 01234567 */
276
+ DIG, DIG, PUNC, PUNC, PUNC, PUNC, PUNC, PUNC, /* 38 89:;<=>? */
277
+
278
+ 000, LET, LET, LET, LET, LET, LET, LET, /* 40 @ABCDEFG */
279
+ LET, LET, LET, LET, LET, LET, LET, LET, /* 48 HIJKLMNO */
280
+ LET, LET, LET, LET, LET, LET, LET, LET, /* 50 PQRSTUVW */
281
+ LET, LET, LET, PUNC, 000, PUNC, PUNC, LET, /* 58 XYZ[\]^_ */
282
+ 000, LET, LET, LET, LET, LET, LET, LET, /* 60 `abcdefg */
283
+ LET, LET, LET, LET, LET, LET, LET, LET, /* 68 hijklmno */
284
+ LET, LET, LET, LET, LET, LET, LET, LET, /* 70 pqrstuvw */
285
+ LET, LET, LET, PUNC, PUNC, PUNC, PUNC, 000, /* 78 xyz{|}~ */
286
+
287
+ UCONTN,UCONTN,UCONTN,UCONTN,UCONTN,UCONTN,UCONTN,UCONTN, /* 80 .. 87 */
288
+ UCONTN,UCONTN,UCONTN,UCONTN,UCONTN,UCONTN,UCONTN,UCONTN, /* 88 .. 8F */
289
+ UCONTN,UCONTN,UCONTN,UCONTN,UCONTN,UCONTN,UCONTN,UCONTN, /* 90 .. 97 */
290
+ UCONTN,UCONTN,UCONTN,UCONTN,UCONTN,UCONTN,UCONTN,UCONTN, /* 98 .. 9F */
291
+ UCONTN,UCONTN,UCONTN,UCONTN,UCONTN,UCONTN,UCONTN,UCONTN, /* A0 .. A7 */
292
+ UCONTN,UCONTN,UCONTN,UCONTN,UCONTN,UCONTN,UCONTN,UCONTN, /* A8 .. AF */
293
+ UCONTN,UCONTN,UCONTN,UCONTN,UCONTN,UCONTN,UCONTN,UCONTN, /* B0 .. B7 */
294
+ UCONTN,UCONTN,UCONTN,UCONTN,UCONTN,UCONTN,UCONTN,UCONTN, /* B8 .. BF */
295
+ NA, NA, U2_1N, U2_1N, U2_1N, U2_1N, U2_1N, U2_1N, /* C0 .. C7 */
296
+ U2_1N, U2_1N, U2_1N, U2_1N, U2_1N, U2_1N, U2_1N, U2_1N, /* C8 .. CF */
297
+ U2_1N, U2_1N, U2_1N, U2_1N, U2_1N, U2_1N, U2_1N, U2_1N, /* D0 .. D7 */
298
+ U2_1N, U2_1N, U2_1N, U2_1N, U2_1N, U2_1N, U2_1N, U2_1N, /* D8 .. DF */
299
+ U3_1N, U3_1N, U3_1N, U3_1N, U3_1N, U3_1N, U3_1N, U3_1N, /* E0 .. E7 */
300
+ U3_1N, U3_1N, U3_1N, U3_1N, U3_1N, U3_1N, U3_1N, U3_1N, /* E8 .. EF */
301
+ U4_1N, U4_1N, U4_1N, U4_1N, U4_1N, NA, NA, NA, /* F0 .. F7 */
302
+ NA, NA, NA, NA, NA, NA, NA, NA, /* F8 .. FF */
303
+ };
304
+
305
+ #define SETLOCALE 2 /* #pragma setlocale (not __setlocale) */
306
+
307
+ #define NUM_ENCODING 8
308
+ #define NUM_ALIAS 6
309
+
310
+ /* Names of encoding recognized. Table for search_encoding(). */
311
+ static const char * const encoding_name[ NUM_ENCODING][ NUM_ALIAS] = {
312
+ /* Visual C full, Visual C short
313
+ , 4 miscellaneous */
314
+ { "english", "c"
315
+ , "c", "en", "latin", "iso8859"},
316
+ { "", ""
317
+ , "eucjp", "euc", "ujis", ""},
318
+ { "chinesesimplified", "chs"
319
+ , "gb2312", "cngb", "euccn", ""},
320
+ { "korean", "kor"
321
+ , "ksc5601", "ksx1001", "wansung", "euckr"},
322
+ { "japanese", "jpn"
323
+ , "sjis", "shiftjis", "mskanji", ""},
324
+ { "chinesetraditional", "cht"
325
+ , "bigfive", "big5", "cnbig5", "euctw"},
326
+ { "", ""
327
+ , "iso2022jp", "iso2022jp1", "jis", ""},
328
+ { "", ""
329
+ , "utf8", "utf", "", ""},
330
+ };
331
+
332
+ static int mbstart;
333
+ static int mb2;
334
+
335
+ static size_t mb_read_2byte( int c1, char ** in_pp, char ** out_pp);
336
+ /* For 2-byte encodings of mbchar */
337
+ static const char * search_encoding( char * norm, int alias);
338
+ /* Search encoding_name[][] table */
339
+ static void strip_bar( char * string);
340
+ /* Remove '_', '-' or '.' in the string */
341
+ static void conv_case( char * name, char * lim, int upper);
342
+ /* Convert to upper/lower case */
343
+ static size_t mb_read_iso2022_jp( int c1, char ** in_pp, char ** out_pp);
344
+ /* For ISO2022_JP encoding */
345
+ static size_t mb_read_utf8( int c1, char ** in_pp, char ** out_pp);
346
+ /* For UTF8 mbchar encoding */
347
+
348
+ #define NAMLEN 20
349
+ #define UPPER 1 /* To upper */
350
+ #define LOWER 0 /* To lower */
351
+
352
+
353
+ const char * set_encoding(
354
+ char * name, /* Name of encoding specified */
355
+ char * env, /* Name of environment variable */
356
+ int pragma
357
+ /* 2: #pragma setlocale, 1: #pragma __setlocale, 0: not #pragma */
358
+ )
359
+ /*
360
+ * Search the encoding specified and re-initialize mbchar settings.
361
+ */
362
+ {
363
+ const char * unknown_encoding
364
+ = "Unknown encoding: %s%.0ld%.0s"; /* _W1_ */
365
+ const char * too_long
366
+ = "Too long encoding name: %s%.0ld%.0s"; /* _E_ */
367
+ const char * loc = "";
368
+ int alias;
369
+ char norm[ NAMLEN];
370
+ /*
371
+ * Normalized name (removed 'xxxxx.', stripped '_', '-', '.'
372
+ * and lowered.
373
+ */
374
+
375
+ if (strlen( name) >= NAMLEN) {
376
+ if ((env || pragma) && (warn_level & 1)) {
377
+ cwarn( too_long, name, 0L, NULL);
378
+ } else {
379
+ mcpp_fprintf( ERR, too_long, name);
380
+ mcpp_fputc( '\n', ERR);
381
+ }
382
+ }
383
+ strcpy( norm, name);
384
+ if (norm[ 5] == '.')
385
+ memmove( norm, norm + 5, strlen( norm + 5) + 1);
386
+ /* Remove initial 'xxxxx.' as 'ja_JP.', 'en_US.' or any other */
387
+ conv_case( norm, norm + strlen( norm), LOWER);
388
+ strip_bar( norm);
389
+
390
+ if (strlen( name) == 0) { /* "" */
391
+ mbchar = MBCHAR; /* Restore to the default encoding */
392
+ } else if (memcmp( norm, "iso8859", 7) == 0 /* iso8859* */
393
+ || memcmp( norm, "latin", 5) == 0 /* latin* */
394
+ || memcmp( norm, "en", 2) == 0) { /* en* */
395
+ mbchar = 0; /* No multi-byte character */
396
+ } else {
397
+ alias = 2;
398
+ #if COMPILER == MSC
399
+ if (pragma == SETLOCALE) /* #pragma setlocale */
400
+ alias = 0;
401
+ #endif
402
+ loc = search_encoding( norm, alias); /* Search the name */
403
+ }
404
+ if (loc == NULL) {
405
+ if ((env || pragma) && (warn_level & 1)) {
406
+ cwarn( unknown_encoding, name, 0L, NULL);
407
+ } else { /* -m option */
408
+ mcpp_fprintf( ERR, unknown_encoding, name);
409
+ mcpp_fputc( '\n', ERR);
410
+ }
411
+ } else {
412
+ mb_init(); /* Re-initialize */
413
+ }
414
+ return loc;
415
+ }
416
+
417
+ static const char * search_encoding(
418
+ char * norm, /* The name of encoding specified */
419
+ int alias /* The number of alias to start searching */
420
+ )
421
+ {
422
+ const char * loc;
423
+ int lo, al;
424
+
425
+ for (lo = 0; lo < NUM_ENCODING; lo++) {
426
+ for (al = alias ; al < NUM_ALIAS; al++) {
427
+ loc = encoding_name[ lo][ al];
428
+ if (str_eq( loc, norm)) {
429
+ switch (lo) {
430
+ case 0 : mbchar = 0; break;
431
+ case 1 : mbchar = EUC_JP; break;
432
+ case 2 : mbchar = GB2312; break;
433
+ case 3 : mbchar = KSC5601; break;
434
+ case 4 : mbchar = SJIS; break;
435
+ case 5 : mbchar = BIGFIVE; break;
436
+ case 6 : mbchar = ISO2022_JP; break;
437
+ case 7 : mbchar = UTF8; break;
438
+ }
439
+ return loc;
440
+ }
441
+ }
442
+ }
443
+ return NULL;
444
+ }
445
+
446
+ static void strip_bar(
447
+ char * string
448
+ )
449
+ /*
450
+ * Strip '_', '-' or '.' in the string.
451
+ */
452
+ {
453
+ char * cp = string;
454
+
455
+ while (*cp != EOS) {
456
+ if (*cp == '_' || *cp == '-' || *cp == '.')
457
+ memmove( cp, cp + 1, strlen( cp));
458
+ else
459
+ cp++;
460
+ }
461
+ }
462
+
463
+ static void conv_case(
464
+ char * name, /* (diretory) Name */
465
+ char * lim, /* End of (directory) name */
466
+ int upper /* TRUE if to upper */
467
+ )
468
+ /* Convert a string to upper-case letters or lower-case letters in-place */
469
+ {
470
+ int c;
471
+ char * sp;
472
+
473
+ for (sp = name; sp < lim; sp++) {
474
+ c = *sp & UCHARMAX;
475
+ #if MBCHAR
476
+ if ((char_type[ c] & mbstart)) {
477
+ char tmp[ PATHMAX+1];
478
+ char * tp = tmp;
479
+ *tp++ = *sp++;
480
+ mb_read( c, &sp, &tp);
481
+ } else
482
+ #endif
483
+ {
484
+ if (upper)
485
+ *sp = toupper( c);
486
+ else
487
+ *sp = tolower( c);
488
+ }
489
+ }
490
+ }
491
+
492
+ void mb_init( void)
493
+ /*
494
+ * Initialize multi-byte character settings.
495
+ * First called prior to setting the 'mcpp_mode'.
496
+ * Will be called again each time the multibyte character encoding is changed.
497
+ */
498
+ {
499
+ /*
500
+ * Select the character classification table, select the multi-byte
501
+ * character reading routine and decide whether multi-byte character
502
+ * may contain the byte of value 0x5c.
503
+ */
504
+ switch (mbchar) {
505
+ case 0 :
506
+ case EUC_JP :
507
+ case GB2312 :
508
+ case KSC5601 :
509
+ char_type = type_euc;
510
+ bsl_in_mbchar = FALSE;
511
+ mb_read = mb_read_2byte;
512
+ break;
513
+ case SJIS :
514
+ case BIGFIVE :
515
+ char_type = type_bsl;
516
+ bsl_in_mbchar = TRUE;
517
+ mb_read = mb_read_2byte;
518
+ break;
519
+ case ISO2022_JP :
520
+ char_type = type_iso2022_jp;
521
+ bsl_in_mbchar = TRUE;
522
+ mb_read = mb_read_iso2022_jp;
523
+ break;
524
+ case UTF8 :
525
+ char_type = type_utf8;
526
+ bsl_in_mbchar = FALSE;
527
+ mb_read = mb_read_utf8;
528
+ break;
529
+ }
530
+
531
+ /* Set the bit patterns for character classification. */
532
+ switch (mbchar) {
533
+ case 0 :
534
+ mbstart = 0;
535
+ break;
536
+ case EUC_JP :
537
+ mbstart = EJ1;
538
+ mb2 = EJ2;
539
+ break;
540
+ case GB2312 :
541
+ mbstart = GB1;
542
+ mb2 = GB2;
543
+ break;
544
+ case KSC5601:
545
+ mbstart = KS1;
546
+ mb2 = KS2;
547
+ break;
548
+ case SJIS :
549
+ mbstart = SJ1;
550
+ mb2 = SJ2;
551
+ break;
552
+ case BIGFIVE:
553
+ mbstart = BF1;
554
+ mb2 = BF2;
555
+ break;
556
+ case ISO2022_JP :
557
+ mbstart = IS1;
558
+ break;
559
+ case UTF8 :
560
+ mbstart = (U2_1 | U3_1 | U4_1);
561
+ break;
562
+ }
563
+ switch (mbchar) {
564
+ case 0 :
565
+ mbchk = 0;
566
+ break;
567
+ case EUC_JP :
568
+ case GB2312 :
569
+ case KSC5601:
570
+ case SJIS :
571
+ case BIGFIVE:
572
+ case UTF8 :
573
+ mbchk = NA;
574
+ break;
575
+ case ISO2022_JP :
576
+ mbchk = (IS1 | NA);
577
+ break;
578
+ }
579
+
580
+ /*
581
+ * Set special handling for some encodings to supplement some compiler's
582
+ * deficiency.
583
+ */
584
+ switch (mbchar) {
585
+ case SJIS :
586
+ #if ! SJIS_IS_ESCAPE_FREE
587
+ bsl_need_escape = TRUE;
588
+ #endif
589
+ break;
590
+ case BIGFIVE:
591
+ #if ! BIGFIVE_IS_ESCAPE_FREE
592
+ bsl_need_escape = TRUE;
593
+ #endif
594
+ break;
595
+ case ISO2022_JP :
596
+ #if ! ISO2022_JP_IS_ESCAPE_FREE
597
+ bsl_need_escape = TRUE;
598
+ #endif
599
+ break;
600
+ default :
601
+ bsl_need_escape = FALSE;
602
+ break;
603
+ }
604
+
605
+ /*
606
+ * Modify magic characters in character type table.
607
+ * char_type[] table should be rewritten in accordance with the 'mcpp_mode'
608
+ * whenever the encoding is changed.
609
+ */
610
+ if (mcpp_mode) { /* If mcpp_mode is already set */
611
+ char_type[ DEF_MAGIC] = standard ? LET : 0;
612
+ char_type[ IN_SRC] = (mcpp_mode == STD) ? LET : 0;
613
+ char_type[ TOK_SEP] = (mcpp_mode == STD || mcpp_mode == OLD_PREP)
614
+ ? HSPA: 0; /* TOK_SEP equals to COM_SEP */
615
+ }
616
+ }
617
+
618
+ static size_t mb_read_2byte(
619
+ int c1, /* The 1st byte of mbchar sequence (already read) */
620
+ char ** in_pp, /* Pointer to input */
621
+ char ** out_pp /* Pointer to output */
622
+ )
623
+ /*
624
+ * Multi-byte character reading routine for 2-byte encodings.
625
+ */
626
+ {
627
+ int error = FALSE;
628
+ size_t len = 0; /* Number of multi-byte characters read. */
629
+ char * in_p = *in_pp;
630
+ char * out_p = *out_pp;
631
+
632
+ if (! (char_type[ c1 & UCHARMAX] & mbstart))
633
+ return MB_ERROR; /* Not a multi-byte character */
634
+
635
+ do {
636
+ if (! (char_type[ (*out_p++ = *in_p++) & UCHARMAX] & mb2)) {
637
+ error = TRUE;
638
+ break;
639
+ }
640
+ len++;
641
+ } while (char_type[ (*out_p++ = *in_p++) & UCHARMAX] & mbstart);
642
+ *in_pp = --in_p;
643
+ *(--out_p) = EOS;
644
+ *out_pp = out_p;
645
+ return error ? (len | MB_ERROR) : len;
646
+ }
647
+
648
+ static size_t mb_read_iso2022_jp(
649
+ int c1, /* The 1st byte of the sequence already read (always 0x1b). */
650
+ char ** in_pp,
651
+ char ** out_pp
652
+ )
653
+ /*
654
+ * Multi-byte character reading routine for ISO2022_JP.
655
+ */
656
+ {
657
+ int error = FALSE;
658
+ size_t len = 0;
659
+ char * in_p = *in_pp;
660
+ char * out_p = *out_pp;
661
+ int c2, c3, c4;
662
+
663
+ if (! (char_type[ c1 & UCHARMAX] & mbstart))
664
+ return MB_ERROR;
665
+
666
+ do {
667
+
668
+ *out_p++ = c2 = *in_p++;
669
+ if (! (char_type[ c2 & UCHARMAX] & IS2)) {
670
+ error = TRUE;
671
+ break;
672
+ }
673
+ *out_p++ = c3 = *in_p++;
674
+ if (! (char_type[ c3 & UCHARMAX] & IS3)) {
675
+ error = TRUE;
676
+ break;
677
+ }
678
+
679
+ switch (c2) {
680
+ case 0x24 :
681
+ switch (c3) {
682
+ case 0x42 : /* 0x1b 0x24 0x42: JIS X 0208-1983 */
683
+ break;
684
+ case 0x28 :
685
+ *out_p++ = c4 = *in_p++;
686
+ if (! (char_type[ c4 & UCHARMAX] & IS4))
687
+ error = TRUE;
688
+ /* else: 0x1b 0x24 0x28 0x44: JIS X 0212 */
689
+ break;
690
+ default :
691
+ error = TRUE;
692
+ }
693
+ break;
694
+ case 0x28 :
695
+ switch (c3) {
696
+ case 0x42 : /* 0x1b 0x28 0x42: ASCII */
697
+ c1 = *out_p++ = *in_p++ & UCHARMAX;
698
+ continue;
699
+ default :
700
+ error = TRUE;
701
+ }
702
+ break;
703
+ }
704
+ if (error)
705
+ break;
706
+
707
+ while (char_type[ c1 = *out_p++ = (*in_p++ & UCHARMAX)] & IJP) {
708
+ if (! (char_type[ *out_p++ = (*in_p++ & UCHARMAX)] & IJP)) {
709
+ error = TRUE;
710
+ break;
711
+ }
712
+ len++; /* String of multi-byte characters */
713
+ }
714
+ if (error)
715
+ break;
716
+
717
+ } while (char_type[ c1] & IS1); /* 0x1b: start of shift-sequence */
718
+
719
+ *in_pp = --in_p;
720
+ *(--out_p) = EOS;
721
+ *out_pp = out_p;
722
+ return error ? (len | MB_ERROR) : len;
723
+ }
724
+
725
+ static size_t mb_read_utf8(
726
+ int c1,
727
+ char ** in_pp,
728
+ char ** out_pp
729
+ )
730
+ /*
731
+ * Multi-byte character reading routine for UTF8.
732
+ */
733
+ {
734
+ int error = FALSE;
735
+ size_t len = 0;
736
+ char * in_p = *in_pp;
737
+ char * out_p = *out_pp;
738
+
739
+ if (! (char_type[ c1 & UCHARMAX] & mbstart))
740
+ return MB_ERROR;
741
+
742
+ do {
743
+ unsigned int codepoint;
744
+ int i, bytes;
745
+
746
+ if ((char_type[ c1 & UCHARMAX] & U4_1) == U4_1)
747
+ bytes = 4; /* 4-byte character */
748
+ else if ((char_type[ c1 & UCHARMAX] & U3_1) == U3_1)
749
+ bytes = 3; /* 3-byte character */
750
+ else if ((char_type[ c1 & UCHARMAX] & U2_1) == U2_1)
751
+ bytes = 2; /* 2-byte character */
752
+
753
+ /* Must ensure that the sequence is not reserved as a surrogate */
754
+ codepoint = ((2 << (6-bytes)) - 1) & c1; /* mask off top bits */
755
+
756
+ /* All bytes left in the sequence must be in 0x80 - 0xBF */
757
+ for (i = bytes - 1; i && !error; i--) {
758
+ codepoint = (codepoint << 6) + ((*in_p) & 0x3fU);
759
+ if (! (char_type[ (*out_p++ = *in_p++) & UCHARMAX] & UCONT))
760
+ error = TRUE;
761
+ }
762
+
763
+ /* Check for overlong/underlong sequences */
764
+ if ((bytes == 2 && (codepoint < 0x80 || codepoint > 0x7FF))
765
+ || (bytes == 3 && (codepoint < 0x800 || codepoint > 0xFFFF))
766
+ || (bytes == 4 && (codepoint < 0x10000 || codepoint > 0x10FFFF)))
767
+ error = TRUE;
768
+ if ((codepoint >= 0xD800 && codepoint <= 0xDFFF)
769
+ /* Check for reserved surrogate codepoints */
770
+ || (codepoint >= 0xFFFE && codepoint <= 0xFFFF))
771
+ /* Illegal */
772
+ error = TRUE;
773
+ #if 0
774
+ printf( "codepoint:0x%x\n", codepoint);
775
+ #endif
776
+ if (error)
777
+ break;
778
+ len++;
779
+ } while (char_type[ (*out_p++ = c1 = *in_p++) & UCHARMAX] & mbstart);
780
+ /* Start of the next multi-byte character */
781
+ *in_pp = --in_p;
782
+ *(--out_p) = EOS;
783
+ *out_pp = out_p;
784
+ return error ? (len | MB_ERROR) : len;
785
+ }
786
+
787
+ uexpr_t mb_eval(
788
+ char ** seq_pp
789
+ )
790
+ /*
791
+ * Evaluate the value of a multi-byte character.
792
+ * This routine does not check the legality of the sequence.
793
+ * This routine is called from eval_char().
794
+ * This routine is never called in POST_STD mode.
795
+ */
796
+ {
797
+ char * seq = *seq_pp;
798
+ uexpr_t val = 0;
799
+ int c, c1;
800
+
801
+ if (! (char_type[ c = *seq++ & UCHARMAX] & mbstart)) {
802
+ *seq_pp = seq;
803
+ return c; /* Not a multi-byte character */
804
+ }
805
+
806
+ switch (mbchar) {
807
+ case EUC_JP :
808
+ case GB2312 :
809
+ case KSC5601:
810
+ case SJIS :
811
+ case BIGFIVE:
812
+ val = (c << 8) + (*seq++ & UCHARMAX);
813
+ /* Evaluate the 2-byte sequence */
814
+ break;
815
+ case ISO2022_JP :
816
+ if (char_type[ c & UCHARMAX] & IS1) { /* Skip shift-sequence */
817
+ if (char_type[ c = *seq++ & UCHARMAX] & IS2) {
818
+ if (char_type[ c1 = *seq++ & UCHARMAX] & IS3) {
819
+ if (c1 == 0x28)
820
+ seq++;
821
+ if (c == 0x28 && c1 == 0x42) { /* Shift-out sequence */
822
+ val = 0;
823
+ break;
824
+ }
825
+ c = *seq++ & UCHARMAX;
826
+ }
827
+ }
828
+ }
829
+ val = (c << 8) + (*seq++ & UCHARMAX); /* Evaluate the 2-bytes */
830
+ break;
831
+ case UTF8 : /* Evaluate the sequence of 2, 3 or 4 bytes as it is */
832
+ val = (c << 8) + (*seq++ & UCHARMAX);
833
+ if (char_type[ c & UCHARMAX] & U3_1) {
834
+ val = (val << 8) + (*seq++ & UCHARMAX);
835
+ } else if (char_type[ c & UCHARMAX] & U4_1) {
836
+ val = (val << 8) + (*seq++ & UCHARMAX);
837
+ val = (val << 8) + (*seq++ & UCHARMAX);
838
+ }
839
+ break;
840
+ }
841
+
842
+ *seq_pp = seq;
843
+ return val;
844
+ }
845
+
846
+ int last_is_mbchar(
847
+ const char * in, /* Input physical line */
848
+ int len /* Length of the line minus 2 */
849
+ )
850
+ /*
851
+ * Return 2, if the last char of the line is second byte of SJIS or BIGFIVE,
852
+ * else return 0.
853
+ */
854
+ {
855
+ const char * cp = in + len;
856
+ const char * const endp = in + len; /* -> the char befor '\n' */
857
+
858
+ if ((mbchar & (SJIS | BIGFIVE)) == 0)
859
+ return 0;
860
+ while (in <= --cp) { /* Search backwardly */
861
+ if ((char_type[ *cp & UCHARMAX] & mbstart) == 0)
862
+ break; /* Not the first byte of MBCHAR */
863
+ }
864
+ if ((endp - cp) & 1)
865
+ return 0;
866
+ else
867
+ return 2;
868
+ }
869
+