zeroc-ice 3.6.5 → 3.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/BZIP2_LICENSE +42 -0
- data/ICE_LICENSE +17 -17
- data/LICENSE +12 -12
- data/bin/slice2rb +1 -1
- data/ext/Communicator.cpp +150 -53
- data/ext/Communicator.h +1 -1
- data/ext/Config.h +2 -12
- data/ext/Connection.cpp +89 -68
- data/ext/Connection.h +1 -1
- data/ext/Endpoint.cpp +16 -45
- data/ext/Endpoint.h +1 -1
- data/ext/ImplicitContext.cpp +1 -5
- data/ext/ImplicitContext.h +1 -1
- data/ext/Init.cpp +4 -1
- data/ext/Logger.cpp +1 -1
- data/ext/Logger.h +1 -1
- data/ext/Operation.cpp +33 -44
- data/ext/Operation.h +1 -1
- data/ext/Properties.cpp +1 -1
- data/ext/Properties.h +1 -1
- data/ext/Proxy.cpp +22 -57
- data/ext/Proxy.h +1 -1
- data/ext/Slice.cpp +5 -5
- data/ext/Slice.h +1 -1
- data/ext/Types.cpp +244 -171
- data/ext/Types.h +118 -66
- data/ext/Util.cpp +13 -9
- data/ext/Util.h +10 -10
- data/ext/ValueFactoryManager.cpp +445 -0
- data/ext/ValueFactoryManager.h +100 -0
- data/ext/extconf.rb +47 -45
- data/ext/ice/bzip2/blocksort.c +1094 -0
- data/ext/ice/bzip2/bzlib.c +1572 -0
- data/ext/ice/bzip2/bzlib.h +282 -0
- data/ext/ice/bzip2/bzlib_private.h +509 -0
- data/ext/ice/bzip2/compress.c +672 -0
- data/ext/ice/bzip2/crctable.c +104 -0
- data/ext/ice/bzip2/decompress.c +646 -0
- data/ext/ice/bzip2/huffman.c +205 -0
- data/ext/ice/bzip2/randtable.c +84 -0
- data/ext/ice/cpp/include/Ice/Application.h +77 -60
- data/ext/ice/cpp/include/Ice/AsyncResult.h +34 -318
- data/ext/ice/cpp/include/Ice/AsyncResultF.h +4 -2
- data/ext/ice/cpp/include/Ice/BatchRequestInterceptor.h +5 -10
- data/ext/ice/cpp/include/Ice/BatchRequestQueueF.h +1 -1
- data/ext/ice/cpp/include/Ice/Buffer.h +10 -10
- data/ext/ice/cpp/include/Ice/CommunicatorAsync.h +14 -12
- data/ext/ice/cpp/include/Ice/Comparable.h +130 -0
- data/ext/ice/cpp/include/Ice/Config.h +7 -36
- data/ext/ice/cpp/include/Ice/ConnectionAsync.h +107 -11
- data/ext/ice/cpp/include/Ice/ConnectionIF.h +5 -1
- data/ext/ice/cpp/include/Ice/ConsoleUtil.h +28 -0
- data/ext/ice/cpp/include/Ice/{DefaultObjectFactory.h → DefaultValueFactory.h} +28 -14
- data/ext/ice/cpp/include/Ice/DispatchInterceptor.h +4 -6
- data/ext/ice/cpp/include/Ice/Dispatcher.h +14 -13
- data/ext/ice/cpp/include/Ice/DynamicLibrary.h +7 -5
- data/ext/ice/cpp/include/Ice/DynamicLibraryF.h +1 -1
- data/ext/ice/cpp/include/Ice/Exception.h +66 -56
- data/ext/ice/cpp/include/Ice/ExceptionHelpers.h +69 -0
- data/ext/ice/cpp/include/Ice/FactoryTable.h +11 -12
- data/ext/ice/cpp/include/Ice/FactoryTableInit.h +27 -25
- data/ext/ice/cpp/include/Ice/Format.h +6 -1
- data/ext/ice/cpp/include/Ice/Functional.h +33 -33
- data/ext/ice/cpp/include/Ice/GCObject.h +9 -5
- data/ext/ice/cpp/include/Ice/Handle.h +6 -11
- data/ext/ice/cpp/include/Ice/Ice.h +9 -5
- data/ext/ice/cpp/include/{IceUtil → Ice}/IconvStringConverter.h +108 -62
- data/ext/ice/cpp/include/Ice/Incoming.h +109 -33
- data/ext/ice/cpp/include/Ice/IncomingAsync.h +63 -23
- data/ext/ice/cpp/include/Ice/IncomingAsyncF.h +7 -1
- data/ext/ice/cpp/include/Ice/Initialize.h +178 -38
- data/ext/ice/cpp/include/Ice/InputStream.h +994 -0
- data/ext/ice/cpp/include/Ice/InstanceF.h +1 -2
- data/ext/ice/cpp/include/Ice/InterfaceByValue.h +46 -0
- data/ext/ice/cpp/include/Ice/LocalObject.h +9 -9
- data/ext/ice/cpp/include/Ice/LocalObjectF.h +1 -1
- data/ext/ice/cpp/include/Ice/LoggerUtil.h +20 -14
- data/ext/ice/cpp/include/Ice/MetricsAdminI.h +114 -65
- data/ext/ice/cpp/include/Ice/MetricsFunctional.h +23 -5
- data/ext/ice/cpp/include/Ice/MetricsObserverI.h +99 -26
- data/ext/ice/cpp/include/Ice/NativePropertiesAdmin.h +17 -4
- data/ext/ice/cpp/include/Ice/Object.h +105 -56
- data/ext/ice/cpp/include/Ice/ObjectF.h +8 -3
- data/ext/ice/cpp/include/Ice/ObserverHelper.h +18 -8
- data/ext/ice/cpp/include/Ice/Optional.h +1084 -0
- data/ext/ice/cpp/include/Ice/OutgoingAsync.h +655 -84
- data/ext/ice/cpp/include/Ice/OutgoingAsyncF.h +12 -6
- data/ext/ice/cpp/include/Ice/OutputStream.h +753 -0
- data/ext/ice/cpp/include/Ice/Protocol.h +19 -12
- data/ext/ice/cpp/include/Ice/Proxy.h +1329 -717
- data/ext/ice/cpp/include/Ice/ProxyF.h +11 -33
- data/ext/ice/cpp/include/Ice/ProxyFactoryF.h +1 -1
- data/ext/ice/cpp/include/Ice/ProxyHandle.h +34 -50
- data/ext/ice/cpp/include/Ice/ReferenceF.h +1 -1
- data/ext/ice/cpp/include/Ice/RegisterPlugins.h +22 -3
- data/ext/ice/cpp/include/Ice/RequestHandlerF.h +10 -4
- data/ext/ice/cpp/include/Ice/ResponseHandlerF.h +6 -1
- data/ext/ice/cpp/include/{IceUtil → Ice}/SHA1.h +16 -16
- data/ext/ice/cpp/include/Ice/ServantManagerF.h +1 -1
- data/ext/ice/cpp/include/Ice/Service.h +13 -18
- data/ext/ice/cpp/include/Ice/SliceChecksums.h +1 -1
- data/ext/ice/cpp/include/Ice/SlicedData.h +46 -20
- data/ext/ice/cpp/include/Ice/SlicedDataF.h +14 -6
- data/ext/ice/cpp/include/Ice/StreamHelpers.h +159 -49
- data/ext/ice/cpp/include/Ice/StringConverter.h +52 -0
- data/ext/ice/cpp/include/Ice/ThreadPoolF.h +1 -1
- data/{slice/Ice/ObjectFactoryF.ice → ext/ice/cpp/include/Ice/UUID.h} +9 -7
- data/ext/ice/cpp/include/{IceUtil → Ice}/UniquePtr.h +21 -22
- data/ext/ice/cpp/include/Ice/UniqueRef.h +98 -0
- data/ext/ice/cpp/include/Ice/UserExceptionFactory.h +40 -8
- data/ext/ice/cpp/include/Ice/Value.h +104 -0
- data/{slice/Freeze/ConnectionF.ice → ext/ice/cpp/include/Ice/ValueF.h} +11 -7
- data/ext/ice/cpp/include/IceSSL/Config.h +8 -23
- data/ext/ice/cpp/include/IceSSL/IceSSL.h +17 -6
- data/ext/ice/cpp/include/IceSSL/OpenSSL.h +130 -0
- data/ext/ice/cpp/include/IceSSL/Plugin.h +172 -259
- data/ext/ice/cpp/include/IceSSL/SChannel.h +66 -0
- data/ext/ice/cpp/include/IceSSL/SecureTransport.h +66 -0
- data/ext/ice/cpp/include/IceSSL/UWP.h +58 -0
- data/ext/ice/cpp/include/IceUtil/Atomic.h +8 -10
- data/ext/ice/cpp/include/IceUtil/Cond.h +17 -18
- data/ext/ice/cpp/include/IceUtil/Config.h +138 -39
- data/ext/ice/cpp/include/IceUtil/ConsoleUtil.h +97 -0
- data/ext/ice/cpp/include/IceUtil/CountDownLatch.h +5 -5
- data/ext/ice/cpp/include/IceUtil/CtrlCHandler.h +23 -17
- data/ext/ice/cpp/include/IceUtil/DisableWarnings.h +1 -3
- data/ext/ice/cpp/include/IceUtil/Exception.h +157 -67
- data/ext/ice/cpp/include/IceUtil/FileUtil.h +148 -0
- data/ext/ice/cpp/include/IceUtil/Functional.h +1 -2
- data/ext/ice/cpp/include/IceUtil/Handle.h +11 -11
- data/ext/ice/cpp/include/IceUtil/IceUtil.h +4 -10
- data/ext/ice/cpp/include/IceUtil/InputUtil.h +3 -3
- data/ext/ice/cpp/include/IceUtil/Iterator.h +2 -2
- data/ext/ice/cpp/include/IceUtil/Lock.h +8 -10
- data/ext/ice/cpp/include/IceUtil/Monitor.h +1 -2
- data/ext/ice/cpp/include/IceUtil/Mutex.h +17 -11
- data/ext/ice/cpp/include/IceUtil/MutexProtocol.h +2 -2
- data/ext/ice/cpp/include/IceUtil/MutexPtrLock.h +4 -4
- data/ext/ice/cpp/include/IceUtil/MutexPtrTryLock.h +4 -4
- data/ext/ice/cpp/include/IceUtil/Optional.h +32 -18
- data/ext/ice/cpp/include/IceUtil/Options.h +17 -18
- data/ext/ice/cpp/include/IceUtil/OutputUtil.h +55 -29
- data/ext/ice/cpp/include/IceUtil/PopDisableWarnings.h +6 -6
- data/ext/ice/cpp/include/IceUtil/PushDisableWarnings.h +11 -10
- data/ext/ice/cpp/include/IceUtil/Random.h +3 -3
- data/ext/ice/cpp/include/IceUtil/RecMutex.h +7 -8
- data/ext/ice/cpp/include/IceUtil/ResourceConfig.h +58 -0
- data/ext/ice/cpp/include/IceUtil/ScannerConfig.h +1 -9
- data/ext/ice/cpp/include/IceUtil/ScopedArray.h +8 -2
- data/ext/ice/cpp/include/IceUtil/Shared.h +5 -7
- data/ext/ice/cpp/{src → include}/IceUtil/StopWatch.h +2 -2
- data/ext/ice/cpp/include/IceUtil/StringConverter.h +77 -72
- data/ext/ice/cpp/include/IceUtil/StringUtil.h +32 -21
- data/ext/ice/cpp/include/IceUtil/Thread.h +10 -12
- data/ext/ice/cpp/include/IceUtil/ThreadException.h +33 -42
- data/ext/ice/cpp/include/IceUtil/Time.h +3 -3
- data/ext/ice/cpp/include/IceUtil/Timer.h +14 -13
- data/ext/ice/cpp/include/IceUtil/UUID.h +2 -2
- data/ext/ice/cpp/include/IceUtil/UndefSysMacros.h +1 -1
- data/ext/ice/cpp/include/{Ice → generated/Ice}/BuiltinSequences.h +41 -8
- data/ext/ice/cpp/include/generated/Ice/Communicator.h +364 -0
- data/ext/ice/cpp/include/{Ice → generated/Ice}/CommunicatorF.h +40 -8
- data/ext/ice/cpp/include/generated/Ice/Connection.h +872 -0
- data/ext/ice/cpp/include/{Ice → generated/Ice}/ConnectionF.h +46 -8
- data/ext/ice/cpp/include/{Ice → generated/Ice}/Current.h +71 -8
- data/ext/ice/cpp/include/generated/Ice/Endpoint.h +582 -0
- data/ext/ice/cpp/include/{Ice → generated/Ice}/EndpointF.h +62 -8
- data/ext/ice/cpp/include/{Ice → generated/Ice}/EndpointTypes.h +31 -16
- data/ext/ice/cpp/include/{Ice → generated/Ice}/FacetMap.h +23 -8
- data/ext/ice/cpp/include/generated/Ice/Identity.h +221 -0
- data/ext/ice/cpp/include/{Ice → generated/Ice}/ImplicitContext.h +72 -13
- data/ext/ice/cpp/include/{Ice → generated/Ice}/ImplicitContextF.h +40 -8
- data/ext/ice/cpp/include/generated/Ice/Instrumentation.h +602 -0
- data/ext/ice/cpp/include/{Ice → generated/Ice}/InstrumentationF.h +54 -8
- data/ext/ice/cpp/include/generated/Ice/LocalException.h +2802 -0
- data/ext/ice/cpp/include/generated/Ice/Locator.h +2036 -0
- data/ext/ice/cpp/include/{Ice → generated/Ice}/LocatorF.h +53 -12
- data/ext/ice/cpp/include/{Ice → generated/Ice}/Logger.h +71 -13
- data/ext/ice/cpp/include/{Ice → generated/Ice}/LoggerF.h +40 -8
- data/ext/ice/cpp/include/generated/Ice/Metrics.h +2649 -0
- data/ext/ice/cpp/include/generated/Ice/ObjectAdapter.h +302 -0
- data/ext/ice/cpp/include/{Ice → generated/Ice}/ObjectAdapterF.h +40 -8
- data/ext/ice/cpp/include/generated/Ice/ObjectFactory.h +142 -0
- data/ext/ice/cpp/include/generated/Ice/Plugin.h +197 -0
- data/ext/ice/cpp/include/{Ice → generated/Ice}/PluginF.h +43 -8
- data/ext/ice/cpp/include/generated/Ice/Process.h +536 -0
- data/ext/ice/cpp/include/{Ice → generated/Ice}/ProcessF.h +45 -10
- data/ext/ice/cpp/include/{Ice → generated/Ice}/Properties.h +88 -21
- data/ext/ice/cpp/include/generated/Ice/PropertiesAdmin.h +749 -0
- data/ext/ice/cpp/include/{Ice → generated/Ice}/PropertiesF.h +48 -10
- data/ext/ice/cpp/include/generated/Ice/RemoteLogger.h +1449 -0
- data/ext/ice/cpp/include/generated/Ice/Router.h +1032 -0
- data/ext/ice/cpp/include/{Ice → generated/Ice}/RouterF.h +45 -10
- data/ext/ice/cpp/include/{Ice → generated/Ice}/ServantLocator.h +65 -13
- data/ext/ice/cpp/include/{Ice → generated/Ice}/ServantLocatorF.h +40 -8
- data/ext/ice/cpp/include/{Ice → generated/Ice}/SliceChecksumDict.h +23 -8
- data/ext/ice/cpp/include/generated/Ice/ValueFactory.h +169 -0
- data/ext/ice/cpp/include/generated/Ice/Version.h +334 -0
- data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfo.h +172 -0
- data/ext/ice/cpp/include/generated/IceSSL/ConnectionInfoF.h +98 -0
- data/ext/ice/cpp/include/generated/IceSSL/EndpointInfo.h +156 -0
- data/ext/ice/cpp/src/Ice/ACM.cpp +18 -14
- data/ext/ice/cpp/src/Ice/ACM.h +9 -2
- data/ext/ice/cpp/{include → src}/Ice/ACMF.h +10 -5
- data/ext/ice/cpp/src/Ice/Acceptor.cpp +6 -1
- data/ext/ice/cpp/src/Ice/Acceptor.h +4 -3
- data/ext/ice/cpp/src/Ice/AcceptorF.h +1 -1
- data/ext/ice/cpp/src/{IceUtil → Ice}/ArgVector.cpp +9 -9
- data/ext/ice/cpp/src/{IceUtil → Ice}/ArgVector.h +7 -7
- data/ext/ice/cpp/src/Ice/AsyncResult.cpp +15 -538
- data/ext/ice/cpp/src/Ice/Base64.cpp +11 -11
- data/ext/ice/cpp/src/Ice/Base64.h +1 -1
- data/ext/ice/cpp/src/Ice/BatchRequestQueue.cpp +40 -12
- data/ext/ice/cpp/src/Ice/BatchRequestQueue.h +15 -10
- data/ext/ice/cpp/src/Ice/Buffer.cpp +74 -12
- data/ext/ice/cpp/src/Ice/BuiltinSequences.cpp +20 -6
- data/ext/ice/cpp/src/Ice/CollocatedRequestHandler.cpp +85 -190
- data/ext/ice/cpp/src/Ice/CollocatedRequestHandler.h +17 -18
- data/ext/ice/cpp/src/Ice/Communicator.cpp +39 -8
- data/ext/ice/cpp/src/Ice/CommunicatorF.cpp +27 -5
- data/ext/ice/cpp/src/Ice/CommunicatorI.cpp +271 -104
- data/ext/ice/cpp/src/Ice/CommunicatorI.h +84 -28
- data/ext/ice/cpp/src/{IceUtil → Ice}/Cond.cpp +3 -3
- data/ext/ice/cpp/src/Ice/ConnectRequestHandler.cpp +58 -125
- data/ext/ice/cpp/src/Ice/ConnectRequestHandler.h +11 -22
- data/ext/ice/cpp/src/Ice/ConnectRequestHandlerF.h +6 -2
- data/ext/ice/cpp/src/Ice/Connection.cpp +88 -8
- data/ext/ice/cpp/src/Ice/ConnectionF.cpp +27 -5
- data/ext/ice/cpp/src/Ice/ConnectionFactory.cpp +158 -80
- data/ext/ice/cpp/src/Ice/ConnectionFactory.h +41 -23
- data/ext/ice/cpp/{include → src}/Ice/ConnectionFactoryF.h +8 -3
- data/ext/ice/cpp/src/Ice/ConnectionI.cpp +707 -653
- data/ext/ice/cpp/src/Ice/ConnectionI.h +97 -69
- data/ext/ice/cpp/src/Ice/ConnectionRequestHandler.cpp +2 -15
- data/ext/ice/cpp/src/Ice/ConnectionRequestHandler.h +4 -3
- data/ext/ice/cpp/src/Ice/Connector.cpp +6 -1
- data/ext/ice/cpp/src/Ice/Connector.h +4 -3
- data/ext/ice/cpp/src/Ice/ConnectorF.h +1 -1
- data/ext/ice/cpp/src/{IceUtil → Ice}/CountDownLatch.cpp +4 -4
- data/ext/ice/cpp/src/Ice/Current.cpp +29 -6
- data/ext/ice/cpp/src/Ice/DefaultsAndOverrides.cpp +6 -5
- data/ext/ice/cpp/src/Ice/DefaultsAndOverrides.h +1 -1
- data/ext/ice/cpp/src/Ice/DefaultsAndOverridesF.h +1 -1
- data/ext/ice/cpp/src/Ice/DispatchInterceptor.cpp +5 -25
- data/ext/ice/cpp/src/Ice/DynamicLibrary.cpp +29 -19
- data/ext/ice/cpp/src/Ice/Endpoint.cpp +85 -6
- data/ext/ice/cpp/src/Ice/EndpointF.cpp +27 -5
- data/ext/ice/cpp/src/Ice/EndpointFactory.cpp +152 -1
- data/ext/ice/cpp/src/Ice/EndpointFactory.h +72 -6
- data/ext/ice/cpp/src/Ice/EndpointFactoryF.h +1 -1
- data/ext/ice/cpp/src/Ice/EndpointFactoryManager.cpp +35 -19
- data/ext/ice/cpp/src/Ice/EndpointFactoryManager.h +10 -4
- data/ext/ice/cpp/src/Ice/EndpointFactoryManagerF.h +1 -1
- data/ext/ice/cpp/src/Ice/EndpointI.cpp +17 -1
- data/ext/ice/cpp/src/Ice/EndpointI.h +35 -9
- data/ext/ice/cpp/src/Ice/EndpointIF.h +18 -5
- data/ext/ice/cpp/src/Ice/EndpointTypes.cpp +18 -6
- data/ext/ice/cpp/src/Ice/EventHandler.cpp +6 -4
- data/ext/ice/cpp/src/Ice/EventHandler.h +13 -8
- data/ext/ice/cpp/src/Ice/EventHandlerF.h +5 -2
- data/ext/ice/cpp/src/Ice/Exception.cpp +95 -86
- data/ext/ice/cpp/src/Ice/FacetMap.cpp +20 -6
- data/ext/ice/cpp/src/Ice/FactoryTable.cpp +37 -28
- data/ext/ice/cpp/src/Ice/FactoryTableInit.cpp +2 -4
- data/ext/ice/cpp/src/Ice/GCObject.cpp +28 -25
- data/ext/ice/cpp/src/Ice/HashUtil.h +2 -3
- data/ext/ice/cpp/src/Ice/HttpParser.cpp +1 -2
- data/ext/ice/cpp/src/Ice/HttpParser.h +1 -1
- data/ext/ice/cpp/src/Ice/IPEndpointI.cpp +92 -53
- data/ext/ice/cpp/src/Ice/IPEndpointI.h +19 -10
- data/ext/ice/cpp/src/Ice/IPEndpointIF.h +6 -2
- data/ext/ice/cpp/src/Ice/IconvStringConverter.cpp +56 -0
- data/ext/ice/cpp/src/Ice/Identity.cpp +24 -10
- data/ext/ice/cpp/src/Ice/ImplicitContext.cpp +37 -6
- data/ext/ice/cpp/src/Ice/ImplicitContextF.cpp +27 -5
- data/ext/ice/cpp/src/Ice/ImplicitContextI.cpp +14 -14
- data/ext/ice/cpp/src/Ice/ImplicitContextI.h +7 -5
- data/ext/ice/cpp/src/Ice/Incoming.cpp +276 -245
- data/ext/ice/cpp/src/Ice/IncomingAsync.cpp +104 -209
- data/ext/ice/cpp/src/Ice/IncomingRequest.h +5 -4
- data/ext/ice/cpp/src/Ice/Initialize.cpp +299 -172
- data/ext/ice/cpp/src/Ice/InputStream.cpp +2773 -0
- data/ext/ice/cpp/src/Ice/Instance.cpp +191 -231
- data/ext/ice/cpp/src/Ice/Instance.h +30 -18
- data/ext/ice/cpp/src/Ice/Instrumentation.cpp +106 -7
- data/ext/ice/cpp/src/Ice/InstrumentationF.cpp +27 -5
- data/ext/ice/cpp/src/Ice/InstrumentationI.cpp +117 -99
- data/ext/ice/cpp/src/Ice/InstrumentationI.h +30 -31
- data/ext/ice/cpp/src/Ice/LocalException.cpp +1190 -416
- data/ext/ice/cpp/src/Ice/LocalObject.cpp +1 -2
- data/ext/ice/cpp/src/Ice/Locator.cpp +1167 -1215
- data/ext/ice/cpp/src/Ice/LocatorF.cpp +29 -6
- data/ext/ice/cpp/src/Ice/LocatorInfo.cpp +129 -163
- data/ext/ice/cpp/src/Ice/LocatorInfo.h +29 -29
- data/ext/ice/cpp/src/Ice/LocatorInfoF.h +1 -1
- data/ext/ice/cpp/src/Ice/Logger.cpp +35 -5
- data/ext/ice/cpp/src/Ice/LoggerAdminI.cpp +178 -73
- data/ext/ice/cpp/src/Ice/LoggerAdminI.h +4 -4
- data/ext/ice/cpp/src/Ice/LoggerF.cpp +27 -5
- data/ext/ice/cpp/src/Ice/LoggerI.cpp +14 -44
- data/ext/ice/cpp/src/Ice/LoggerI.h +7 -13
- data/ext/ice/cpp/src/Ice/LoggerUtil.cpp +10 -12
- data/ext/ice/cpp/src/Ice/Metrics.cpp +1059 -1069
- data/ext/ice/cpp/src/Ice/MetricsAdminI.cpp +49 -19
- data/ext/ice/cpp/src/Ice/MetricsObserverI.cpp +1 -2
- data/ext/ice/cpp/src/Ice/Network.cpp +534 -170
- data/ext/ice/cpp/src/Ice/Network.h +100 -23
- data/ext/ice/cpp/src/Ice/NetworkF.h +2 -2
- data/ext/ice/cpp/src/Ice/NetworkProxy.cpp +21 -14
- data/ext/ice/cpp/src/Ice/NetworkProxy.h +5 -2
- data/ext/ice/cpp/src/Ice/NetworkProxyF.h +1 -1
- data/ext/ice/cpp/src/Ice/Object.cpp +217 -221
- data/ext/ice/cpp/src/Ice/ObjectAdapter.cpp +41 -6
- data/ext/ice/cpp/src/Ice/ObjectAdapterF.cpp +27 -5
- data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.cpp +35 -14
- data/ext/ice/cpp/src/Ice/ObjectAdapterFactory.h +13 -7
- data/ext/ice/cpp/{include → src}/Ice/ObjectAdapterFactoryF.h +5 -1
- data/ext/ice/cpp/src/Ice/ObjectAdapterI.cpp +184 -58
- data/ext/ice/cpp/src/Ice/ObjectAdapterI.h +32 -26
- data/ext/ice/cpp/src/Ice/ObjectFactory.cpp +37 -6
- data/ext/ice/cpp/src/Ice/ObserverHelper.cpp +9 -32
- data/ext/ice/cpp/src/Ice/OpaqueEndpointI.cpp +40 -18
- data/ext/ice/cpp/src/Ice/OpaqueEndpointI.h +14 -5
- data/ext/ice/cpp/src/Ice/OutgoingAsync.cpp +803 -365
- data/ext/ice/cpp/src/Ice/OutputStream.cpp +1399 -0
- data/ext/ice/cpp/src/Ice/Plugin.cpp +45 -6
- data/ext/ice/cpp/src/Ice/PluginF.cpp +27 -5
- data/ext/ice/cpp/src/Ice/PluginManagerI.cpp +13 -13
- data/ext/ice/cpp/src/Ice/PluginManagerI.h +5 -6
- data/ext/ice/cpp/src/Ice/Process.cpp +256 -114
- data/ext/ice/cpp/src/Ice/ProcessF.cpp +29 -6
- data/ext/ice/cpp/src/Ice/Properties.cpp +38 -8
- data/ext/ice/cpp/src/Ice/PropertiesAdmin.cpp +340 -328
- data/ext/ice/cpp/src/Ice/PropertiesAdminI.cpp +81 -17
- data/ext/ice/cpp/src/Ice/PropertiesAdminI.h +29 -5
- data/ext/ice/cpp/src/Ice/PropertiesF.cpp +29 -6
- data/ext/ice/cpp/src/Ice/PropertiesI.cpp +25 -26
- data/ext/ice/cpp/src/Ice/PropertiesI.h +8 -11
- data/ext/ice/cpp/src/Ice/PropertyNames.cpp +107 -50
- data/ext/ice/cpp/src/Ice/PropertyNames.h +4 -2
- data/ext/ice/cpp/src/Ice/Protocol.cpp +2 -2
- data/ext/ice/cpp/src/Ice/ProtocolInstance.cpp +37 -2
- data/ext/ice/cpp/src/Ice/ProtocolInstance.h +9 -20
- data/ext/ice/cpp/src/Ice/ProtocolInstanceF.h +1 -1
- data/ext/ice/cpp/src/Ice/ProtocolPluginFacade.cpp +6 -1
- data/ext/ice/cpp/src/Ice/ProtocolPluginFacade.h +3 -1
- data/ext/ice/cpp/src/Ice/ProtocolPluginFacadeF.h +1 -1
- data/ext/ice/cpp/src/Ice/Proxy.cpp +690 -964
- data/ext/ice/cpp/src/Ice/ProxyFactory.cpp +23 -32
- data/ext/ice/cpp/src/Ice/ProxyFactory.h +16 -11
- data/ext/ice/cpp/src/Ice/Reference.cpp +75 -69
- data/ext/ice/cpp/src/Ice/Reference.h +27 -22
- data/ext/ice/cpp/src/Ice/ReferenceFactory.cpp +18 -21
- data/ext/ice/cpp/src/Ice/ReferenceFactory.h +12 -12
- data/ext/ice/cpp/src/Ice/ReferenceFactoryF.h +1 -1
- data/ext/ice/cpp/src/Ice/RegisterPluginsInit.cpp +18 -4
- data/ext/ice/cpp/src/Ice/RegisterPluginsInit.h +1 -1
- data/ext/ice/cpp/src/Ice/RemoteLogger.cpp +672 -552
- data/ext/ice/cpp/src/Ice/ReplyStatus.h +1 -1
- data/ext/ice/cpp/src/Ice/RequestHandler.cpp +5 -3
- data/ext/ice/cpp/src/Ice/RequestHandler.h +10 -13
- data/ext/ice/cpp/src/Ice/RequestHandlerFactory.cpp +10 -6
- data/ext/ice/cpp/src/Ice/RequestHandlerFactory.h +2 -2
- data/ext/ice/cpp/src/Ice/ResponseHandler.cpp +3 -6
- data/ext/ice/cpp/src/Ice/ResponseHandler.h +16 -7
- data/ext/ice/cpp/src/Ice/RetryQueue.cpp +6 -12
- data/ext/ice/cpp/src/Ice/RetryQueue.h +7 -6
- data/ext/ice/cpp/src/Ice/RetryQueueF.h +1 -1
- data/ext/ice/cpp/src/Ice/Router.cpp +523 -474
- data/ext/ice/cpp/src/Ice/RouterF.cpp +29 -6
- data/ext/ice/cpp/src/Ice/RouterInfo.cpp +91 -70
- data/ext/ice/cpp/src/Ice/RouterInfo.h +43 -32
- data/ext/ice/cpp/src/Ice/RouterInfoF.h +1 -1
- data/ext/ice/cpp/src/{IceUtil → Ice}/SHA1.cpp +21 -21
- data/ext/ice/cpp/src/Ice/Selector.cpp +989 -923
- data/ext/ice/cpp/src/Ice/Selector.h +100 -147
- data/ext/ice/cpp/src/Ice/ServantLocator.cpp +37 -6
- data/ext/ice/cpp/src/Ice/ServantLocatorF.cpp +27 -5
- data/ext/ice/cpp/src/Ice/ServantManager.cpp +9 -9
- data/ext/ice/cpp/src/Ice/ServantManager.h +1 -1
- data/ext/ice/cpp/src/Ice/SharedContext.h +2 -2
- data/ext/ice/cpp/src/Ice/SliceChecksumDict.cpp +20 -6
- data/ext/ice/cpp/src/Ice/SliceChecksums.cpp +2 -2
- data/ext/ice/cpp/src/Ice/SlicedData.cpp +72 -20
- data/ext/ice/cpp/src/Ice/StreamSocket.cpp +173 -18
- data/ext/ice/cpp/src/Ice/StreamSocket.h +13 -4
- data/ext/ice/cpp/src/Ice/StringConverterPlugin.cpp +48 -17
- data/ext/ice/cpp/src/Ice/StringUtil.h +35 -0
- data/ext/ice/cpp/src/Ice/SysLoggerI.cpp +8 -4
- data/ext/ice/cpp/src/Ice/SysLoggerI.h +2 -3
- data/ext/ice/cpp/src/Ice/TcpAcceptor.cpp +158 -32
- data/ext/ice/cpp/src/Ice/TcpAcceptor.h +12 -5
- data/ext/ice/cpp/src/Ice/TcpConnector.cpp +1 -7
- data/ext/ice/cpp/src/Ice/TcpConnector.h +1 -2
- data/ext/ice/cpp/src/Ice/TcpEndpointI.cpp +40 -32
- data/ext/ice/cpp/src/Ice/TcpEndpointI.h +11 -8
- data/ext/ice/cpp/src/Ice/TcpTransceiver.cpp +12 -27
- data/ext/ice/cpp/src/Ice/TcpTransceiver.h +7 -10
- data/ext/ice/cpp/src/{IceUtil → Ice}/Thread.cpp +24 -41
- data/ext/ice/cpp/src/Ice/ThreadPool.cpp +175 -267
- data/ext/ice/cpp/src/Ice/ThreadPool.h +38 -43
- data/ext/ice/cpp/src/{IceUtil → Ice}/Timer.cpp +28 -21
- data/ext/ice/cpp/src/Ice/TraceLevels.cpp +2 -2
- data/ext/ice/cpp/src/Ice/TraceLevels.h +1 -1
- data/ext/ice/cpp/src/Ice/TraceLevelsF.h +2 -2
- data/ext/ice/cpp/src/Ice/TraceUtil.cpp +53 -31
- data/ext/ice/cpp/src/Ice/TraceUtil.h +13 -6
- data/ext/ice/cpp/src/Ice/Transceiver.cpp +1 -2
- data/ext/ice/cpp/src/Ice/Transceiver.h +8 -7
- data/ext/ice/cpp/src/Ice/TransceiverF.h +1 -1
- data/ext/ice/cpp/src/Ice/UdpConnector.cpp +2 -8
- data/ext/ice/cpp/src/Ice/UdpConnector.h +1 -2
- data/ext/ice/cpp/src/Ice/UdpEndpointI.cpp +92 -31
- data/ext/ice/cpp/src/Ice/UdpEndpointI.h +12 -4
- data/ext/ice/cpp/src/Ice/UdpTransceiver.cpp +150 -179
- data/ext/ice/cpp/src/Ice/UdpTransceiver.h +15 -17
- data/ext/ice/cpp/src/Ice/Value.cpp +81 -0
- data/ext/ice/cpp/src/Ice/ValueFactory.cpp +84 -0
- data/ext/ice/cpp/src/Ice/ValueFactoryManagerI.cpp +70 -0
- data/ext/ice/cpp/src/Ice/ValueFactoryManagerI.h +42 -0
- data/ext/ice/cpp/src/Ice/Version.cpp +24 -14
- data/ext/ice/cpp/src/Ice/VirtualShared.h +43 -0
- data/ext/ice/cpp/src/Ice/WSAcceptor.cpp +3 -9
- data/ext/ice/cpp/src/Ice/WSAcceptor.h +3 -7
- data/ext/ice/cpp/src/Ice/WSConnector.cpp +5 -11
- data/ext/ice/cpp/src/Ice/WSConnector.h +3 -6
- data/ext/ice/cpp/src/Ice/WSEndpoint.cpp +185 -80
- data/ext/ice/cpp/src/Ice/WSEndpoint.h +21 -31
- data/ext/ice/cpp/src/Ice/WSTransceiver.cpp +41 -37
- data/ext/ice/cpp/src/Ice/WSTransceiver.h +7 -21
- data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.cpp +526 -264
- data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.h +341 -455
- data/ext/ice/cpp/src/IceDiscovery/LocatorI.cpp +86 -26
- data/ext/ice/cpp/src/IceDiscovery/LocatorI.h +59 -23
- data/ext/ice/cpp/src/IceDiscovery/LookupI.cpp +315 -61
- data/ext/ice/cpp/src/IceDiscovery/LookupI.h +83 -36
- data/ext/ice/cpp/src/IceDiscovery/PluginI.cpp +57 -59
- data/ext/ice/cpp/src/IceDiscovery/PluginI.h +3 -3
- data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.cpp +396 -159
- data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.h +251 -355
- data/ext/ice/cpp/src/IceLocatorDiscovery/Plugin.h +52 -0
- data/ext/ice/cpp/src/IceLocatorDiscovery/PluginI.cpp +526 -131
- data/ext/ice/cpp/src/IceSSL/AcceptorI.cpp +19 -165
- data/ext/ice/cpp/src/IceSSL/AcceptorI.h +8 -17
- data/ext/ice/cpp/src/IceSSL/CertificateI.cpp +284 -0
- data/ext/ice/cpp/src/IceSSL/CertificateI.h +69 -0
- data/ext/ice/cpp/src/IceSSL/ConnectionInfo.cpp +39 -11
- data/ext/ice/cpp/src/{Ice/ObjectFactoryF.cpp → IceSSL/ConnectionInfoF.cpp} +31 -9
- data/ext/ice/cpp/src/IceSSL/ConnectorI.cpp +14 -56
- data/ext/ice/cpp/src/IceSSL/ConnectorI.h +6 -13
- data/ext/ice/cpp/src/IceSSL/EndpointI.cpp +205 -197
- data/ext/ice/cpp/src/IceSSL/EndpointI.h +41 -33
- data/ext/ice/cpp/src/IceSSL/EndpointInfo.cpp +39 -10
- data/ext/ice/cpp/src/IceSSL/Instance.cpp +1 -6
- data/ext/ice/cpp/src/IceSSL/Instance.h +7 -7
- data/ext/ice/cpp/src/IceSSL/InstanceF.h +11 -7
- data/ext/ice/cpp/src/IceSSL/OpenSSLCertificateI.cpp +588 -0
- data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.cpp +117 -152
- data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.h +64 -0
- data/ext/ice/cpp/src/IceSSL/OpenSSLEngineF.h +32 -0
- data/ext/ice/cpp/src/IceSSL/OpenSSLPluginI.cpp +132 -0
- data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.cpp +400 -89
- data/ext/ice/cpp/src/IceSSL/OpenSSLTransceiverI.h +36 -21
- data/ext/ice/cpp/src/IceSSL/OpenSSLUtil.cpp +291 -0
- data/ext/ice/cpp/src/IceSSL/OpenSSLUtil.h +63 -0
- data/ext/ice/cpp/src/IceSSL/PluginI.cpp +71 -41
- data/ext/ice/cpp/src/IceSSL/PluginI.h +13 -18
- data/ext/ice/cpp/src/IceSSL/RFC2253.cpp +9 -54
- data/ext/ice/cpp/src/IceSSL/RFC2253.h +7 -7
- data/ext/ice/cpp/src/IceSSL/SChannelCertificateI.cpp +585 -0
- data/ext/ice/cpp/src/IceSSL/SChannelEngine.cpp +491 -75
- data/ext/ice/cpp/src/IceSSL/SChannelEngine.h +126 -0
- data/ext/ice/cpp/src/IceSSL/SChannelEngineF.h +32 -0
- data/ext/ice/cpp/src/IceSSL/SChannelPluginI.cpp +78 -0
- data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.cpp +126 -169
- data/ext/ice/cpp/src/IceSSL/SChannelTransceiverI.h +19 -22
- data/ext/ice/cpp/src/IceSSL/SSLEngine.cpp +79 -74
- data/ext/ice/cpp/src/IceSSL/SSLEngine.h +24 -187
- data/ext/ice/cpp/src/IceSSL/SSLEngineF.h +4 -19
- data/ext/ice/cpp/src/IceSSL/SecureTransportCertificateI.cpp +862 -0
- data/ext/ice/cpp/src/IceSSL/SecureTransportEngine.cpp +56 -214
- data/ext/ice/cpp/src/IceSSL/SecureTransportEngine.h +60 -0
- data/ext/ice/cpp/src/IceSSL/SecureTransportEngineF.h +31 -0
- data/ext/ice/cpp/src/IceSSL/SecureTransportPluginI.cpp +80 -0
- data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.cpp +137 -144
- data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.h +25 -28
- data/ext/ice/cpp/src/IceSSL/SecureTransportUtil.cpp +857 -0
- data/ext/ice/cpp/src/IceSSL/SecureTransportUtil.h +46 -0
- data/ext/ice/cpp/src/IceSSL/TrustManager.cpp +9 -13
- data/ext/ice/cpp/src/IceSSL/TrustManager.h +4 -4
- data/ext/ice/cpp/src/IceSSL/TrustManagerF.h +3 -3
- data/ext/ice/cpp/src/IceSSL/UWPCertificateI.cpp +271 -0
- data/ext/ice/cpp/src/IceSSL/UWPEngine.cpp +343 -0
- data/ext/ice/cpp/src/IceSSL/UWPEngine.h +46 -0
- data/ext/ice/cpp/{include/Ice/ObjectFactoryManagerF.h → src/IceSSL/UWPEngineF.h} +13 -8
- data/ext/ice/cpp/src/IceSSL/UWPPluginI.cpp +94 -0
- data/ext/ice/cpp/src/IceSSL/UWPTransceiverI.cpp +388 -0
- data/ext/ice/cpp/src/IceSSL/UWPTransceiverI.h +76 -0
- data/ext/ice/cpp/src/IceSSL/Util.cpp +66 -1256
- data/ext/ice/cpp/src/IceSSL/Util.h +48 -137
- data/ext/ice/cpp/src/IceUtil/ConsoleUtil.cpp +162 -0
- data/ext/ice/cpp/src/IceUtil/ConvertUTF.cpp +22 -22
- data/ext/ice/cpp/src/IceUtil/ConvertUTF.h +34 -26
- data/ext/ice/cpp/src/IceUtil/CtrlCHandler.cpp +20 -31
- data/ext/ice/cpp/src/IceUtil/FileUtil.cpp +25 -116
- data/ext/ice/cpp/src/IceUtil/InputUtil.cpp +1 -1
- data/ext/ice/cpp/src/IceUtil/MutexProtocol.cpp +1 -1
- data/ext/ice/cpp/src/IceUtil/Options.cpp +23 -46
- data/ext/ice/cpp/src/IceUtil/OutputUtil.cpp +7 -6
- data/ext/ice/cpp/src/IceUtil/Random.cpp +13 -13
- data/ext/ice/cpp/src/IceUtil/RecMutex.cpp +3 -9
- data/ext/ice/cpp/src/IceUtil/Shared.cpp +8 -3
- data/ext/ice/cpp/src/IceUtil/StringConverter.cpp +501 -264
- data/ext/ice/cpp/src/IceUtil/StringUtil.cpp +540 -235
- data/ext/ice/cpp/src/IceUtil/ThreadException.cpp +37 -74
- data/ext/ice/cpp/src/IceUtil/Time.cpp +1 -1
- data/ext/ice/cpp/src/IceUtil/UUID.cpp +10 -10
- data/ext/ice/cpp/src/IceUtil/Unicode.cpp +98 -97
- data/ext/ice/cpp/src/IceUtil/Unicode.h +21 -35
- data/ext/ice/cpp/src/IceUtil/UtilException.cpp +838 -0
- data/ext/ice/cpp/src/Slice/CPlusPlusUtil.cpp +815 -163
- data/ext/ice/cpp/src/Slice/CPlusPlusUtil.h +76 -0
- data/ext/ice/cpp/src/Slice/Checksum.cpp +2 -2
- data/ext/ice/cpp/{include → src}/Slice/Checksum.h +2 -2
- data/ext/ice/cpp/src/Slice/FileTracker.cpp +25 -78
- data/ext/ice/cpp/{include → src}/Slice/FileTracker.h +9 -9
- data/ext/ice/cpp/src/Slice/Grammar.cpp +1994 -1943
- data/ext/ice/cpp/src/Slice/Grammar.h +44 -24
- data/ext/ice/cpp/src/Slice/GrammarUtil.h +14 -14
- data/ext/ice/cpp/src/Slice/JavaUtil.cpp +2658 -1927
- data/ext/ice/cpp/{include → src}/Slice/JavaUtil.h +178 -59
- data/ext/ice/cpp/src/Slice/MD5.cpp +1 -1
- data/ext/ice/cpp/src/Slice/MD5.h +1 -1
- data/ext/ice/cpp/src/Slice/MD5I.cpp +0 -1
- data/ext/ice/cpp/src/Slice/MD5I.h +1 -1
- data/ext/ice/cpp/src/Slice/PHPUtil.cpp +12 -15
- data/ext/ice/cpp/{include → src}/Slice/PHPUtil.h +6 -15
- data/ext/ice/cpp/src/Slice/Parser.cpp +802 -307
- data/ext/ice/cpp/{include → src}/Slice/Parser.h +76 -84
- data/ext/ice/cpp/src/Slice/Preprocessor.cpp +43 -21
- data/ext/ice/cpp/{include → src}/Slice/Preprocessor.h +7 -12
- data/ext/ice/cpp/src/Slice/Python.cpp +207 -86
- data/ext/ice/cpp/src/Slice/PythonUtil.cpp +683 -679
- data/ext/ice/cpp/{include → src}/Slice/PythonUtil.h +19 -8
- data/ext/ice/cpp/src/Slice/Ruby.cpp +38 -34
- data/ext/ice/cpp/src/Slice/RubyUtil.cpp +177 -445
- data/ext/ice/cpp/{include → src}/Slice/RubyUtil.h +6 -6
- data/ext/ice/cpp/src/Slice/Scanner.cpp +218 -306
- data/ext/ice/cpp/src/Slice/{Util.cpp → SliceUtil.cpp} +37 -64
- data/ext/ice/cpp/src/Slice/StringLiteralUtil.cpp +374 -0
- data/ext/ice/cpp/src/Slice/Util.h +54 -0
- data/ext/ice/mcpp/Makefile +5 -2
- data/ice.gemspec +2 -7
- data/lib/Glacier2.rb +1 -1
- data/lib/Glacier2/Metrics.rb +7 -46
- data/lib/Glacier2/PermissionsVerifier.rb +24 -95
- data/lib/Glacier2/PermissionsVerifierF.rb +3 -3
- data/lib/Glacier2/Router.rb +32 -74
- data/lib/Glacier2/RouterF.rb +3 -3
- data/lib/Glacier2/SSLInfo.rb +4 -7
- data/lib/Glacier2/Session.rb +88 -307
- data/lib/Ice.rb +83 -52
- data/lib/Ice/BuiltinSequences.rb +4 -4
- data/lib/Ice/Communicator.rb +56 -58
- data/lib/Ice/CommunicatorF.rb +3 -3
- data/lib/Ice/Connection.rb +153 -162
- data/lib/Ice/ConnectionF.rb +3 -3
- data/lib/Ice/Current.rb +4 -11
- data/lib/Ice/Endpoint.rb +57 -133
- data/lib/Ice/EndpointF.rb +3 -3
- data/lib/Ice/EndpointTypes.rb +3 -7
- data/lib/Ice/FacetMap.rb +4 -4
- data/lib/Ice/Identity.rb +5 -8
- data/lib/Ice/ImplicitContext.rb +5 -34
- data/lib/Ice/ImplicitContextF.rb +3 -3
- data/lib/Ice/Instrumentation.rb +23 -275
- data/lib/Ice/InstrumentationF.rb +3 -3
- data/lib/Ice/LocalException.rb +95 -141
- data/lib/Ice/Locator.rb +51 -165
- data/lib/Ice/LocatorF.rb +3 -3
- data/lib/Ice/Logger.rb +5 -34
- data/lib/Ice/LoggerF.rb +3 -3
- data/lib/Ice/Metrics.rb +61 -416
- data/lib/Ice/ObjectAdapter.rb +34 -0
- data/lib/Ice/ObjectAdapterF.rb +3 -3
- data/lib/Ice/ObjectFactory.rb +5 -30
- data/lib/Ice/Plugin.rb +7 -60
- data/lib/Ice/PluginF.rb +3 -3
- data/lib/Ice/Process.rb +16 -52
- data/lib/Ice/ProcessF.rb +3 -3
- data/lib/Ice/Properties.rb +5 -41
- data/lib/Ice/PropertiesAdmin.rb +19 -56
- data/lib/Ice/PropertiesF.rb +3 -3
- data/lib/Ice/RemoteLogger.rb +34 -115
- data/lib/Ice/Router.rb +29 -101
- data/lib/Ice/RouterF.rb +3 -3
- data/lib/Ice/ServantLocator.rb +31 -0
- data/lib/Ice/{ObjectFactoryF.rb → ServantLocatorF.rb} +6 -6
- data/lib/Ice/SliceChecksumDict.rb +3 -3
- data/lib/Ice/ValueFactory.rb +33 -0
- data/lib/Ice/Version.rb +5 -11
- data/lib/IceBox.rb +1 -1
- data/lib/IceBox/IceBox.rb +44 -148
- data/lib/IceGrid.rb +1 -4
- data/lib/IceGrid/Admin.rb +551 -427
- data/lib/IceGrid/Descriptor.rb +62 -529
- data/lib/IceGrid/Exception.rb +24 -45
- data/lib/IceGrid/FileParser.rb +14 -50
- data/lib/IceGrid/PluginFacade.rb +40 -0
- data/lib/IceGrid/Registry.rb +151 -58
- data/lib/IceGrid/Session.rb +25 -64
- data/lib/IceGrid/UserAccountMapper.rb +14 -50
- data/lib/IcePatch2.rb +1 -1
- data/lib/IcePatch2/FileInfo.rb +5 -11
- data/lib/IcePatch2/FileServer.rb +33 -76
- data/lib/IceStorm.rb +1 -1
- data/lib/IceStorm/IceStorm.rb +79 -206
- data/lib/IceStorm/Metrics.rb +11 -89
- data/slice/Glacier2/Metrics.ice +8 -4
- data/slice/Glacier2/PermissionsVerifier.ice +10 -7
- data/slice/Glacier2/PermissionsVerifierF.ice +7 -4
- data/slice/Glacier2/Router.ice +10 -8
- data/slice/Glacier2/RouterF.ice +7 -4
- data/slice/Glacier2/SSLInfo.ice +8 -5
- data/slice/Glacier2/Session.ice +15 -13
- data/slice/Ice/BuiltinSequences.ice +7 -4
- data/slice/Ice/Communicator.ice +141 -66
- data/slice/Ice/CommunicatorF.ice +7 -4
- data/slice/Ice/Connection.ice +183 -86
- data/slice/Ice/ConnectionF.ice +7 -4
- data/slice/Ice/Current.ice +13 -9
- data/slice/Ice/Endpoint.ice +63 -14
- data/slice/Ice/EndpointF.ice +7 -4
- data/slice/Ice/EndpointTypes.ice +8 -6
- data/slice/Ice/FacetMap.ice +7 -4
- data/slice/Ice/Identity.ice +13 -5
- data/slice/Ice/ImplicitContext.ice +20 -18
- data/slice/Ice/ImplicitContextF.ice +7 -4
- data/slice/Ice/Instrumentation.ice +20 -19
- data/slice/Ice/InstrumentationF.ice +8 -5
- data/slice/Ice/LocalException.ice +87 -87
- data/slice/Ice/Locator.ice +19 -18
- data/slice/Ice/LocatorF.ice +7 -4
- data/slice/Ice/Logger.ice +9 -7
- data/slice/Ice/LoggerF.ice +7 -4
- data/slice/Ice/Metrics.ice +18 -14
- data/slice/Ice/ObjectAdapter.ice +30 -13
- data/slice/Ice/ObjectAdapterF.ice +7 -4
- data/slice/Ice/ObjectFactory.ice +15 -12
- data/slice/Ice/Plugin.ice +9 -6
- data/slice/Ice/PluginF.ice +8 -5
- data/slice/Ice/Process.ice +9 -6
- data/slice/Ice/ProcessF.ice +7 -4
- data/slice/Ice/Properties.ice +15 -12
- data/slice/Ice/PropertiesAdmin.ice +9 -5
- data/slice/Ice/PropertiesF.ice +7 -4
- data/slice/Ice/RemoteLogger.ice +33 -24
- data/slice/Ice/Router.ice +16 -7
- data/slice/Ice/RouterF.ice +7 -4
- data/slice/Ice/ServantLocator.ice +13 -10
- data/slice/Ice/ServantLocatorF.ice +7 -4
- data/slice/Ice/SliceChecksumDict.ice +7 -4
- data/slice/Ice/ValueFactory.ice +127 -0
- data/slice/Ice/Version.ice +9 -5
- data/slice/IceBT/ConnectionInfo.ice +53 -0
- data/slice/IceBT/EndpointInfo.ice +51 -0
- data/slice/IceBT/Types.ice +39 -0
- data/slice/IceBox/IceBox.ice +20 -21
- data/slice/IceDiscovery/IceDiscovery.ice +9 -5
- data/slice/IceGrid/Admin.ice +390 -30
- data/slice/IceGrid/Descriptor.ice +37 -29
- data/slice/IceGrid/Exception.ice +33 -27
- data/slice/IceGrid/FileParser.ice +9 -6
- data/slice/IceGrid/PluginFacade.ice +11 -9
- data/slice/IceGrid/Registry.ice +139 -16
- data/slice/IceGrid/Session.ice +10 -8
- data/slice/IceGrid/UserAccountMapper.ice +9 -6
- data/slice/IceIAP/ConnectionInfo.ice +70 -0
- data/slice/IceIAP/EndpointInfo.ice +64 -0
- data/slice/IceLocatorDiscovery/IceLocatorDiscovery.ice +9 -7
- data/slice/IcePatch2/FileInfo.ice +9 -8
- data/slice/IcePatch2/FileServer.ice +17 -13
- data/slice/IceSSL/ConnectionInfo.ice +14 -17
- data/slice/IceSSL/ConnectionInfoF.ice +24 -0
- data/slice/IceSSL/EndpointInfo.ice +9 -30
- data/slice/IceStorm/IceStorm.ice +22 -18
- data/slice/IceStorm/Metrics.ice +9 -5
- metadata +154 -120
- data/ext/ObjectFactory.cpp +0 -140
- data/ext/ObjectFactory.h +0 -50
- data/ext/ice/cpp/include/Ice/BasicStream.h +0 -1335
- data/ext/ice/cpp/include/Ice/Communicator.h +0 -200
- data/ext/ice/cpp/include/Ice/Connection.h +0 -497
- data/ext/ice/cpp/include/Ice/DeprecatedStringConverter.h +0 -62
- data/ext/ice/cpp/include/Ice/Endpoint.h +0 -341
- data/ext/ice/cpp/include/Ice/Identity.h +0 -168
- data/ext/ice/cpp/include/Ice/Instrumentation.h +0 -365
- data/ext/ice/cpp/include/Ice/LocalException.h +0 -1030
- data/ext/ice/cpp/include/Ice/Locator.h +0 -2193
- data/ext/ice/cpp/include/Ice/Metrics.h +0 -2974
- data/ext/ice/cpp/include/Ice/ObjectAdapter.h +0 -168
- data/ext/ice/cpp/include/Ice/ObjectFactory.h +0 -92
- data/ext/ice/cpp/include/Ice/ObjectFactoryF.h +0 -66
- data/ext/ice/cpp/include/Ice/Outgoing.h +0 -225
- data/ext/ice/cpp/include/Ice/Plugin.h +0 -125
- data/ext/ice/cpp/include/Ice/Process.h +0 -574
- data/ext/ice/cpp/include/Ice/PropertiesAdmin.h +0 -830
- data/ext/ice/cpp/include/Ice/RemoteLogger.h +0 -1500
- data/ext/ice/cpp/include/Ice/Router.h +0 -1159
- data/ext/ice/cpp/include/Ice/Stream.h +0 -447
- data/ext/ice/cpp/include/Ice/StreamF.h +0 -30
- data/ext/ice/cpp/include/Ice/Version.h +0 -262
- data/ext/ice/cpp/include/IceSSL/ConnectionInfo.h +0 -158
- data/ext/ice/cpp/include/IceSSL/EndpointInfo.h +0 -142
- data/ext/ice/cpp/include/IceUtil/AbstractMutex.h +0 -119
- data/ext/ice/cpp/include/IceUtil/Cache.h +0 -362
- data/ext/ice/cpp/include/Slice/CPlusPlusUtil.h +0 -65
- data/ext/ice/cpp/include/Slice/CsUtil.h +0 -92
- data/ext/ice/cpp/include/Slice/DotNetNames.h +0 -34
- data/ext/ice/cpp/include/Slice/ObjCUtil.h +0 -127
- data/ext/ice/cpp/include/Slice/Util.h +0 -56
- data/ext/ice/cpp/src/Ice/BasicStream.cpp +0 -3428
- data/ext/ice/cpp/src/Ice/DeprecatedStringConverter.cpp +0 -62
- data/ext/ice/cpp/src/Ice/ObjectFactoryManager.cpp +0 -139
- data/ext/ice/cpp/src/Ice/ObjectFactoryManager.h +0 -43
- data/ext/ice/cpp/src/Ice/Outgoing.cpp +0 -694
- data/ext/ice/cpp/src/Ice/Stream.cpp +0 -53
- data/ext/ice/cpp/src/Ice/StreamI.cpp +0 -832
- data/ext/ice/cpp/src/Ice/StreamI.h +0 -198
- data/ext/ice/cpp/src/IceSSL/Certificate.cpp +0 -1336
- data/ext/ice/cpp/src/IceUtil/Exception.cpp +0 -792
- data/ext/ice/cpp/src/IceUtil/FileUtil.h +0 -185
- data/ext/ice/cpp/src/Slice/CsUtil.cpp +0 -2660
- data/ext/ice/cpp/src/Slice/DotNetNames.cpp +0 -146
- data/ext/ice/cpp/src/Slice/ObjCUtil.cpp +0 -1310
- data/lib/IceGrid/Locator.rb +0 -106
- data/lib/IceGrid/Observer.rb +0 -572
- data/lib/IceGrid/Query.rb +0 -169
- data/slice/Freeze/BackgroundSaveEvictor.ice +0 -111
- data/slice/Freeze/CatalogData.ice +0 -49
- data/slice/Freeze/Connection.ice +0 -121
- data/slice/Freeze/DB.ice +0 -37
- data/slice/Freeze/Evictor.ice +0 -346
- data/slice/Freeze/EvictorF.ice +0 -22
- data/slice/Freeze/EvictorStorage.ice +0 -72
- data/slice/Freeze/Exception.ice +0 -100
- data/slice/Freeze/Transaction.ice +0 -58
- data/slice/Freeze/TransactionalEvictor.ice +0 -50
- data/slice/IceGrid/Locator.ice +0 -57
- data/slice/IceGrid/Observer.ice +0 -395
- data/slice/IceGrid/Query.ice +0 -131
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// **********************************************************************
|
|
2
2
|
//
|
|
3
|
-
// Copyright (c) 2003-
|
|
3
|
+
// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
|
|
4
4
|
//
|
|
5
5
|
// This copy of Ice is licensed to you under the terms described in the
|
|
6
6
|
// ICE_LICENSE file included in this distribution.
|
|
@@ -24,6 +24,12 @@ using namespace IceUtilInternal;
|
|
|
24
24
|
namespace
|
|
25
25
|
{
|
|
26
26
|
|
|
27
|
+
string
|
|
28
|
+
condString(bool ok, const string& str)
|
|
29
|
+
{
|
|
30
|
+
return ok ? str : "";
|
|
31
|
+
}
|
|
32
|
+
|
|
27
33
|
string toTemplateArg(const string& arg)
|
|
28
34
|
{
|
|
29
35
|
if(arg.empty())
|
|
@@ -42,20 +48,32 @@ string toTemplateArg(const string& arg)
|
|
|
42
48
|
return fixed;
|
|
43
49
|
}
|
|
44
50
|
|
|
51
|
+
string
|
|
52
|
+
toOptional(const string& s, int typeCtx)
|
|
53
|
+
{
|
|
54
|
+
bool cpp11 = (typeCtx & TypeContextCpp11) != 0;
|
|
55
|
+
string result = cpp11 ? "Ice::optional" : "IceUtil::Optional";
|
|
56
|
+
result += '<';
|
|
57
|
+
if(cpp11)
|
|
58
|
+
{
|
|
59
|
+
result += s;
|
|
60
|
+
}
|
|
61
|
+
else
|
|
62
|
+
{
|
|
63
|
+
result += toTemplateArg(s);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
result += '>';
|
|
67
|
+
return result;
|
|
68
|
+
}
|
|
69
|
+
|
|
45
70
|
string
|
|
46
71
|
stringTypeToString(const TypePtr& type, const StringList& metaData, int typeCtx)
|
|
47
72
|
{
|
|
48
73
|
string strType = findMetaData(metaData, typeCtx);
|
|
49
74
|
if(strType == "wstring" || (typeCtx & TypeContextUseWstring && strType == ""))
|
|
50
75
|
{
|
|
51
|
-
|
|
52
|
-
{
|
|
53
|
-
return "::Ice::Wstring";
|
|
54
|
-
}
|
|
55
|
-
else
|
|
56
|
-
{
|
|
57
|
-
return "::std::wstring";
|
|
58
|
-
}
|
|
76
|
+
return "::std::wstring";
|
|
59
77
|
}
|
|
60
78
|
else if(strType != "" && strType != "string")
|
|
61
79
|
{
|
|
@@ -99,7 +117,7 @@ sequenceTypeToString(const SequencePtr& seq, const StringList& metaData, int typ
|
|
|
99
117
|
return "::std::vector<" + s + '>';
|
|
100
118
|
}
|
|
101
119
|
}
|
|
102
|
-
string s = typeToString(seq->type(), seq->typeMetaData(), inWstringModule(seq) ? TypeContextUseWstring : 0);
|
|
120
|
+
string s = typeToString(seq->type(), seq->typeMetaData(), typeCtx | (inWstringModule(seq) ? TypeContextUseWstring : 0));
|
|
103
121
|
return "::std::pair<const " + s + "*, const " + s + "*>";
|
|
104
122
|
}
|
|
105
123
|
else if(seqType.find("%range") == 0)
|
|
@@ -148,7 +166,6 @@ dictionaryTypeToString(const DictionaryPtr& dict, const StringList& metaData, in
|
|
|
148
166
|
}
|
|
149
167
|
}
|
|
150
168
|
|
|
151
|
-
|
|
152
169
|
void
|
|
153
170
|
writeParamAllocateCode(Output& out, const TypePtr& type, bool optional, const string& fixedName,
|
|
154
171
|
const StringList& metaData, int typeCtx, bool endArg)
|
|
@@ -156,11 +173,11 @@ writeParamAllocateCode(Output& out, const TypePtr& type, bool optional, const st
|
|
|
156
173
|
string s = typeToString(type, metaData, typeCtx);
|
|
157
174
|
if(optional)
|
|
158
175
|
{
|
|
159
|
-
s =
|
|
176
|
+
s = toOptional(s, typeCtx);
|
|
160
177
|
}
|
|
161
178
|
out << nl << s << ' ' << fixedName << ';';
|
|
162
179
|
|
|
163
|
-
if(!(typeCtx & TypeContextInParam) || !endArg)
|
|
180
|
+
if((typeCtx & TypeContextCpp11) || !(typeCtx & TypeContextInParam) || !endArg)
|
|
164
181
|
{
|
|
165
182
|
return; // We're done.
|
|
166
183
|
}
|
|
@@ -190,23 +207,28 @@ writeParamAllocateCode(Output& out, const TypePtr& type, bool optional, const st
|
|
|
190
207
|
{
|
|
191
208
|
md.push_back("cpp:type:" + seqType.substr(strlen("%range:")));
|
|
192
209
|
}
|
|
193
|
-
s = typeToString(seq, md);
|
|
210
|
+
s = typeToString(seq, md, 0);
|
|
194
211
|
}
|
|
195
212
|
|
|
196
213
|
if(!s.empty())
|
|
197
214
|
{
|
|
198
215
|
if(optional)
|
|
199
216
|
{
|
|
200
|
-
s =
|
|
217
|
+
s = toOptional(s, typeCtx);
|
|
201
218
|
}
|
|
202
|
-
out << nl << s <<
|
|
219
|
+
out << nl << s << ' ' << fixedName << "_tmp_;";
|
|
203
220
|
}
|
|
204
221
|
}
|
|
205
222
|
}
|
|
206
223
|
|
|
207
224
|
void
|
|
208
|
-
writeParamEndCode(Output& out, const TypePtr& type, bool optional, const string& fixedName, const StringList& metaData
|
|
225
|
+
writeParamEndCode(Output& out, const TypePtr& type, bool optional, const string& fixedName, const StringList& metaData,
|
|
226
|
+
const string& obj = "")
|
|
209
227
|
{
|
|
228
|
+
string objPrefix = obj.empty() ? obj : obj + ".";
|
|
229
|
+
string paramName = objPrefix + fixedName;
|
|
230
|
+
string escapedParamName = objPrefix + fixedName + "_tmp_";
|
|
231
|
+
|
|
210
232
|
SequencePtr seq = SequencePtr::dynamicCast(type);
|
|
211
233
|
if(seq)
|
|
212
234
|
{
|
|
@@ -227,14 +249,14 @@ writeParamEndCode(Output& out, const TypePtr& type, bool optional, const string&
|
|
|
227
249
|
{
|
|
228
250
|
if(optional)
|
|
229
251
|
{
|
|
230
|
-
out << nl << "if(
|
|
252
|
+
out << nl << "if(" << escapedParamName << ")";
|
|
231
253
|
out << sb;
|
|
232
|
-
out << nl <<
|
|
233
|
-
|
|
254
|
+
out << nl << paramName << " = " << escapedParamName << "->second;";
|
|
255
|
+
out << eb;
|
|
234
256
|
}
|
|
235
257
|
else
|
|
236
258
|
{
|
|
237
|
-
out << nl <<
|
|
259
|
+
out << nl << paramName << " = " << escapedParamName << ".second;";
|
|
238
260
|
}
|
|
239
261
|
}
|
|
240
262
|
else if(!builtin ||
|
|
@@ -244,32 +266,30 @@ writeParamEndCode(Output& out, const TypePtr& type, bool optional, const string&
|
|
|
244
266
|
{
|
|
245
267
|
if(optional)
|
|
246
268
|
{
|
|
247
|
-
out << nl << "if(
|
|
269
|
+
out << nl << "if(" << escapedParamName << ")";
|
|
248
270
|
out << sb;
|
|
249
|
-
out << nl <<
|
|
250
|
-
out << nl << "if(!
|
|
271
|
+
out << nl << paramName << ".__setIsSet();";
|
|
272
|
+
out << nl << "if(!" << escapedParamName << "->empty())";
|
|
251
273
|
out << sb;
|
|
252
|
-
out << nl <<
|
|
253
|
-
out << nl <<
|
|
254
|
-
<< fixedName << "->size();";
|
|
274
|
+
out << nl << paramName << "->first" << " = &(*" << escapedParamName << ")[0];";
|
|
275
|
+
out << nl << paramName << "->second" << " = " << paramName << "->first + " << escapedParamName << "->size();";
|
|
255
276
|
out << eb;
|
|
256
277
|
out << nl << "else";
|
|
257
278
|
out << sb;
|
|
258
|
-
out << nl <<
|
|
279
|
+
out << nl << paramName << "->first" << " = " << paramName << "->second" << " = 0;";
|
|
259
280
|
out << eb;
|
|
260
281
|
out << eb;
|
|
261
282
|
}
|
|
262
283
|
else
|
|
263
284
|
{
|
|
264
|
-
out << nl << "if(!
|
|
285
|
+
out << nl << "if(!" << escapedParamName << ".empty())";
|
|
265
286
|
out << sb;
|
|
266
|
-
out << nl <<
|
|
267
|
-
out << nl <<
|
|
268
|
-
<< fixedName << ".size();";
|
|
287
|
+
out << nl << paramName << ".first" << " = &" << escapedParamName << "[0];";
|
|
288
|
+
out << nl << paramName << ".second" << " = " << paramName << ".first + " << escapedParamName << ".size();";
|
|
269
289
|
out << eb;
|
|
270
290
|
out << nl << "else";
|
|
271
291
|
out << sb;
|
|
272
|
-
out << nl <<
|
|
292
|
+
out << nl << paramName << ".first" << " = " << paramName << ".second" << " = 0;";
|
|
273
293
|
out << eb;
|
|
274
294
|
}
|
|
275
295
|
}
|
|
@@ -278,30 +298,42 @@ writeParamEndCode(Output& out, const TypePtr& type, bool optional, const string&
|
|
|
278
298
|
{
|
|
279
299
|
if(optional)
|
|
280
300
|
{
|
|
281
|
-
out << nl << "if(
|
|
301
|
+
out << nl << "if(" << escapedParamName << ")";
|
|
282
302
|
out << sb;
|
|
283
|
-
out << nl <<
|
|
284
|
-
out << nl <<
|
|
285
|
-
out << nl <<
|
|
303
|
+
out << nl << paramName << ".__setIsSet();";
|
|
304
|
+
out << nl << paramName << "->first = (*" << escapedParamName << ").begin();";
|
|
305
|
+
out << nl << paramName << "->second = (*" << escapedParamName << ").end();";
|
|
286
306
|
out << eb;
|
|
287
307
|
}
|
|
288
308
|
else
|
|
289
309
|
{
|
|
290
|
-
out << nl <<
|
|
291
|
-
out << nl <<
|
|
310
|
+
out << nl << paramName << ".first = " << escapedParamName << ".begin();";
|
|
311
|
+
out << nl << paramName << ".second = " << escapedParamName << ".end();";
|
|
292
312
|
}
|
|
293
313
|
}
|
|
294
314
|
}
|
|
295
315
|
}
|
|
296
316
|
|
|
297
317
|
void
|
|
298
|
-
writeMarshalUnmarshalParams(Output& out, const ParamDeclList& params, const OperationPtr& op, bool marshal,
|
|
318
|
+
writeMarshalUnmarshalParams(Output& out, const ParamDeclList& params, const OperationPtr& op, bool marshal,
|
|
319
|
+
bool prepend, int typeCtx, const string& customStream = "", const string& retP = "", const string& obj = "")
|
|
299
320
|
{
|
|
300
321
|
string prefix = prepend ? paramPrefix : "";
|
|
322
|
+
string returnValueS = retP.empty() ? string("ret") : retP;
|
|
323
|
+
string objPrefix = obj.empty() ? obj : obj + ".";
|
|
324
|
+
|
|
325
|
+
string stream = customStream;
|
|
326
|
+
if(stream.empty())
|
|
327
|
+
{
|
|
328
|
+
stream = marshal ? "ostr" : "istr";
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
bool cpp11 = (typeCtx & TypeContextCpp11) != 0;
|
|
301
332
|
|
|
302
333
|
//
|
|
303
334
|
// Marshal non optional parameters.
|
|
304
335
|
//
|
|
336
|
+
ParamDeclList requiredParams;
|
|
305
337
|
ParamDeclList optionals;
|
|
306
338
|
for(ParamDeclList::const_iterator p = params.begin(); p != params.end(); ++p)
|
|
307
339
|
{
|
|
@@ -311,57 +343,160 @@ writeMarshalUnmarshalParams(Output& out, const ParamDeclList& params, const Oper
|
|
|
311
343
|
}
|
|
312
344
|
else
|
|
313
345
|
{
|
|
314
|
-
|
|
315
|
-
typeCtx);
|
|
346
|
+
requiredParams.push_back(*p);
|
|
316
347
|
}
|
|
317
348
|
}
|
|
318
|
-
|
|
349
|
+
|
|
350
|
+
if(!requiredParams.empty() || (op && op->returnType() && !op->returnIsOptional()))
|
|
319
351
|
{
|
|
320
|
-
if(
|
|
352
|
+
if(cpp11)
|
|
321
353
|
{
|
|
322
|
-
|
|
354
|
+
out << nl;
|
|
355
|
+
if(marshal)
|
|
356
|
+
{
|
|
357
|
+
out << stream << "->writeAll";
|
|
358
|
+
}
|
|
359
|
+
else
|
|
360
|
+
{
|
|
361
|
+
out << stream << "->readAll";
|
|
362
|
+
}
|
|
363
|
+
out << spar;
|
|
364
|
+
for(ParamDeclList::const_iterator p = requiredParams.begin(); p != requiredParams.end(); ++p)
|
|
365
|
+
{
|
|
366
|
+
out << objPrefix + fixKwd(prefix + (*p)->name());
|
|
367
|
+
}
|
|
368
|
+
if(op && op->returnType() && !op->returnIsOptional())
|
|
369
|
+
{
|
|
370
|
+
out << objPrefix + returnValueS;
|
|
371
|
+
}
|
|
372
|
+
out << epar << ";";
|
|
373
|
+
}
|
|
374
|
+
else
|
|
375
|
+
{
|
|
376
|
+
for(ParamDeclList::const_iterator p = requiredParams.begin(); p != requiredParams.end(); ++p)
|
|
377
|
+
{
|
|
378
|
+
writeMarshalUnmarshalCode(out, (*p)->type(), false, 0, fixKwd(prefix + (*p)->name()), marshal, (*p)->getMetaData(),
|
|
379
|
+
typeCtx, customStream, true, obj);
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
if(op && op->returnType())
|
|
383
|
+
{
|
|
384
|
+
if(!op->returnIsOptional())
|
|
385
|
+
{
|
|
386
|
+
writeMarshalUnmarshalCode(out, op->returnType(), false, 0, returnValueS, marshal, op->getMetaData(), typeCtx,
|
|
387
|
+
customStream, true, obj);
|
|
388
|
+
}
|
|
389
|
+
}
|
|
323
390
|
}
|
|
324
391
|
}
|
|
325
392
|
|
|
326
|
-
|
|
327
|
-
// Sort optional parameters by tag.
|
|
328
|
-
//
|
|
329
|
-
class SortFn
|
|
393
|
+
if(!optionals.empty() || (op && op->returnType() && op->returnIsOptional()))
|
|
330
394
|
{
|
|
331
|
-
|
|
332
|
-
|
|
395
|
+
//
|
|
396
|
+
// Sort optional parameters by tag.
|
|
397
|
+
//
|
|
398
|
+
class SortFn
|
|
333
399
|
{
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
400
|
+
public:
|
|
401
|
+
static bool compare(const ParamDeclPtr& lhs, const ParamDeclPtr& rhs)
|
|
402
|
+
{
|
|
403
|
+
return lhs->tag() < rhs->tag();
|
|
404
|
+
}
|
|
405
|
+
};
|
|
406
|
+
optionals.sort(SortFn::compare);
|
|
338
407
|
|
|
339
|
-
|
|
340
|
-
// Marshal optional parameters.
|
|
341
|
-
//
|
|
342
|
-
bool checkReturnType = op && op->returnIsOptional();
|
|
343
|
-
for(ParamDeclList::const_iterator p = optionals.begin(); p != optionals.end(); ++p)
|
|
344
|
-
{
|
|
345
|
-
if(checkReturnType && op->returnTag() < (*p)->tag())
|
|
408
|
+
if(cpp11)
|
|
346
409
|
{
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
410
|
+
out << nl;
|
|
411
|
+
if(marshal)
|
|
412
|
+
{
|
|
413
|
+
out << stream << "->writeAll";
|
|
414
|
+
}
|
|
415
|
+
else
|
|
416
|
+
{
|
|
417
|
+
out << stream << "->readAll";
|
|
418
|
+
}
|
|
419
|
+
out << spar;
|
|
420
|
+
|
|
421
|
+
{
|
|
422
|
+
//
|
|
423
|
+
// Tags
|
|
424
|
+
//
|
|
425
|
+
ostringstream os;
|
|
426
|
+
os << '{';
|
|
427
|
+
bool checkReturnType = op && op->returnIsOptional();
|
|
428
|
+
bool insertComma = false;
|
|
429
|
+
for(ParamDeclList::const_iterator p = optionals.begin(); p != optionals.end(); ++p)
|
|
430
|
+
{
|
|
431
|
+
if(checkReturnType && op->returnTag() < (*p)->tag())
|
|
432
|
+
{
|
|
433
|
+
os << condString(insertComma, ", ") << op->returnTag();
|
|
434
|
+
checkReturnType = false;
|
|
435
|
+
insertComma = true;
|
|
436
|
+
}
|
|
437
|
+
os << condString(insertComma, ", ") << (*p)->tag();
|
|
438
|
+
insertComma = true;
|
|
439
|
+
}
|
|
440
|
+
if(checkReturnType)
|
|
441
|
+
{
|
|
442
|
+
os << condString(insertComma, ", ") << op->returnTag();
|
|
443
|
+
}
|
|
444
|
+
os << '}';
|
|
445
|
+
out << os.str();
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
{
|
|
449
|
+
//
|
|
450
|
+
// Parameters
|
|
451
|
+
//
|
|
452
|
+
bool checkReturnType = op && op->returnIsOptional();
|
|
453
|
+
for(ParamDeclList::const_iterator p = optionals.begin(); p != optionals.end(); ++p)
|
|
454
|
+
{
|
|
455
|
+
if(checkReturnType && op->returnTag() < (*p)->tag())
|
|
456
|
+
{
|
|
457
|
+
out << objPrefix + returnValueS;
|
|
458
|
+
checkReturnType = false;
|
|
459
|
+
}
|
|
460
|
+
out << objPrefix + fixKwd(prefix + (*p)->name());
|
|
461
|
+
}
|
|
462
|
+
if(checkReturnType)
|
|
463
|
+
{
|
|
464
|
+
out << objPrefix + returnValueS;
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
out << epar << ";";
|
|
468
|
+
}
|
|
469
|
+
else
|
|
470
|
+
{
|
|
471
|
+
|
|
472
|
+
//
|
|
473
|
+
// Marshal optional parameters.
|
|
474
|
+
//
|
|
475
|
+
|
|
476
|
+
bool checkReturnType = op && op->returnIsOptional();
|
|
477
|
+
for(ParamDeclList::const_iterator p = optionals.begin(); p != optionals.end(); ++p)
|
|
478
|
+
{
|
|
479
|
+
if(checkReturnType && op->returnTag() < (*p)->tag())
|
|
480
|
+
{
|
|
481
|
+
writeMarshalUnmarshalCode(out, op->returnType(), true, op->returnTag(), returnValueS, marshal,
|
|
482
|
+
op->getMetaData(), typeCtx, customStream, true, obj);
|
|
483
|
+
|
|
484
|
+
checkReturnType = false;
|
|
485
|
+
}
|
|
486
|
+
writeMarshalUnmarshalCode(out, (*p)->type(), true, (*p)->tag(), fixKwd(prefix + (*p)->name()), marshal,
|
|
487
|
+
(*p)->getMetaData(), typeCtx, customStream, true, obj);
|
|
488
|
+
}
|
|
489
|
+
if(checkReturnType)
|
|
490
|
+
{
|
|
491
|
+
writeMarshalUnmarshalCode(out, op->returnType(), true, op->returnTag(), returnValueS, marshal, op->getMetaData(),
|
|
492
|
+
typeCtx, customStream, true, obj);
|
|
493
|
+
}
|
|
350
494
|
}
|
|
351
|
-
writeMarshalUnmarshalCode(out, (*p)->type(), true, (*p)->tag(), fixKwd(prefix + (*p)->name()), marshal,
|
|
352
|
-
(*p)->getMetaData(), typeCtx);
|
|
353
|
-
}
|
|
354
|
-
if(checkReturnType)
|
|
355
|
-
{
|
|
356
|
-
writeMarshalUnmarshalCode(out, op->returnType(), true, op->returnTag(), "__ret", marshal, op->getMetaData(),
|
|
357
|
-
typeCtx);
|
|
358
495
|
}
|
|
359
496
|
}
|
|
360
|
-
|
|
361
497
|
}
|
|
362
498
|
|
|
363
|
-
|
|
364
|
-
string Slice::paramPrefix = "__p_";
|
|
499
|
+
string Slice::paramPrefix = "iceP_";
|
|
365
500
|
|
|
366
501
|
char
|
|
367
502
|
Slice::ToIfdef::operator()(char c)
|
|
@@ -376,14 +511,13 @@ Slice::ToIfdef::operator()(char c)
|
|
|
376
511
|
}
|
|
377
512
|
}
|
|
378
513
|
|
|
379
|
-
|
|
380
514
|
void
|
|
381
515
|
Slice::printHeader(Output& out)
|
|
382
516
|
{
|
|
383
517
|
static const char* header =
|
|
384
518
|
"// **********************************************************************\n"
|
|
385
519
|
"//\n"
|
|
386
|
-
"// Copyright (c) 2003-
|
|
520
|
+
"// Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.\n"
|
|
387
521
|
"//\n"
|
|
388
522
|
"// This copy of Ice is licensed to you under the terms described in the\n"
|
|
389
523
|
"// ICE_LICENSE file included in this distribution.\n"
|
|
@@ -439,10 +573,10 @@ Slice::printDllExportStuff(Output& out, const string& dllExport)
|
|
|
439
573
|
{
|
|
440
574
|
out << sp;
|
|
441
575
|
out << "\n#ifndef " << dllExport;
|
|
442
|
-
out << "\n#
|
|
443
|
-
out << "\n# define " << dllExport << " ICE_DECLSPEC_EXPORT";
|
|
444
|
-
out << "\n# elif defined(ICE_STATIC_LIBS)";
|
|
576
|
+
out << "\n# if defined(ICE_STATIC_LIBS)";
|
|
445
577
|
out << "\n# define " << dllExport << " /**/";
|
|
578
|
+
out << "\n# elif defined(" << dllExport << "_EXPORTS)";
|
|
579
|
+
out << "\n# define " << dllExport << " ICE_DECLSPEC_EXPORT";
|
|
446
580
|
out << "\n# else";
|
|
447
581
|
out << "\n# define " << dllExport << " ICE_DECLSPEC_IMPORT";
|
|
448
582
|
out << "\n# endif";
|
|
@@ -450,10 +584,36 @@ Slice::printDllExportStuff(Output& out, const string& dllExport)
|
|
|
450
584
|
}
|
|
451
585
|
}
|
|
452
586
|
|
|
587
|
+
bool
|
|
588
|
+
Slice::isMovable(const TypePtr& type)
|
|
589
|
+
{
|
|
590
|
+
BuiltinPtr builtin = BuiltinPtr::dynamicCast(type);
|
|
591
|
+
if(builtin)
|
|
592
|
+
{
|
|
593
|
+
switch(builtin->kind())
|
|
594
|
+
{
|
|
595
|
+
case Builtin::KindString:
|
|
596
|
+
case Builtin::KindObject:
|
|
597
|
+
case Builtin::KindObjectProxy:
|
|
598
|
+
case Builtin::KindLocalObject:
|
|
599
|
+
case Builtin::KindValue:
|
|
600
|
+
{
|
|
601
|
+
return true;
|
|
602
|
+
}
|
|
603
|
+
default:
|
|
604
|
+
{
|
|
605
|
+
return false;
|
|
606
|
+
}
|
|
607
|
+
}
|
|
608
|
+
}
|
|
609
|
+
return !EnumPtr::dynamicCast(type);
|
|
610
|
+
}
|
|
453
611
|
|
|
454
612
|
string
|
|
455
613
|
Slice::typeToString(const TypePtr& type, const StringList& metaData, int typeCtx)
|
|
456
614
|
{
|
|
615
|
+
bool cpp11 = (typeCtx & TypeContextCpp11) != 0;
|
|
616
|
+
|
|
457
617
|
static const char* builtinTable[] =
|
|
458
618
|
{
|
|
459
619
|
"::Ice::Byte",
|
|
@@ -466,9 +626,40 @@ Slice::typeToString(const TypePtr& type, const StringList& metaData, int typeCtx
|
|
|
466
626
|
"::std::string",
|
|
467
627
|
"::Ice::ObjectPtr",
|
|
468
628
|
"::Ice::ObjectPrx",
|
|
469
|
-
"::Ice::LocalObjectPtr"
|
|
629
|
+
"::Ice::LocalObjectPtr",
|
|
630
|
+
"::Ice::ValuePtr"
|
|
470
631
|
};
|
|
471
632
|
|
|
633
|
+
static const char* cpp11BuiltinTable[] =
|
|
634
|
+
{
|
|
635
|
+
"::Ice::Byte",
|
|
636
|
+
"bool",
|
|
637
|
+
"short",
|
|
638
|
+
"int",
|
|
639
|
+
"long long int",
|
|
640
|
+
"float",
|
|
641
|
+
"double",
|
|
642
|
+
"::std::string",
|
|
643
|
+
"::std::shared_ptr<::Ice::Object>",
|
|
644
|
+
"::std::shared_ptr<::Ice::ObjectPrx>",
|
|
645
|
+
"::std::shared_ptr<void>",
|
|
646
|
+
"::std::shared_ptr<::Ice::Value>"
|
|
647
|
+
};
|
|
648
|
+
|
|
649
|
+
if((typeCtx & TypeContextLocal) != 0)
|
|
650
|
+
{
|
|
651
|
+
for(StringList::const_iterator i = metaData.begin(); i != metaData.end(); ++i)
|
|
652
|
+
{
|
|
653
|
+
const string cppType = "cpp:type:";
|
|
654
|
+
const string meta = *i;
|
|
655
|
+
|
|
656
|
+
if(meta.find(cppType) == 0)
|
|
657
|
+
{
|
|
658
|
+
return meta.substr(cppType.size());
|
|
659
|
+
}
|
|
660
|
+
}
|
|
661
|
+
}
|
|
662
|
+
|
|
472
663
|
BuiltinPtr builtin = BuiltinPtr::dynamicCast(type);
|
|
473
664
|
if(builtin)
|
|
474
665
|
{
|
|
@@ -478,20 +669,55 @@ Slice::typeToString(const TypePtr& type, const StringList& metaData, int typeCtx
|
|
|
478
669
|
}
|
|
479
670
|
else
|
|
480
671
|
{
|
|
481
|
-
|
|
672
|
+
if(cpp11)
|
|
673
|
+
{
|
|
674
|
+
if(builtin->kind() == Builtin::KindObject && !(typeCtx & TypeContextLocal))
|
|
675
|
+
{
|
|
676
|
+
return "::std::shared_ptr<::Ice::Value>";
|
|
677
|
+
}
|
|
678
|
+
else
|
|
679
|
+
{
|
|
680
|
+
return cpp11BuiltinTable[builtin->kind()];
|
|
681
|
+
}
|
|
682
|
+
}
|
|
683
|
+
else
|
|
684
|
+
{
|
|
685
|
+
return builtinTable[builtin->kind()];
|
|
686
|
+
}
|
|
482
687
|
}
|
|
483
688
|
}
|
|
484
689
|
|
|
485
690
|
ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type);
|
|
486
691
|
if(cl)
|
|
487
692
|
{
|
|
488
|
-
|
|
693
|
+
if(cpp11)
|
|
694
|
+
{
|
|
695
|
+
if(cl->definition() && cl->definition()->isDelegate())
|
|
696
|
+
{
|
|
697
|
+
return fixKwd(cl->scoped());
|
|
698
|
+
}
|
|
699
|
+
else if(cl->isInterface() && !cl->isLocal())
|
|
700
|
+
{
|
|
701
|
+
return "::std::shared_ptr<::Ice::Value>";
|
|
702
|
+
}
|
|
703
|
+
else
|
|
704
|
+
{
|
|
705
|
+
return "::std::shared_ptr<" + cl->scoped() + ">";
|
|
706
|
+
}
|
|
707
|
+
}
|
|
708
|
+
else
|
|
709
|
+
{
|
|
710
|
+
return cl->scoped() + "Ptr";
|
|
711
|
+
}
|
|
489
712
|
}
|
|
490
713
|
|
|
491
714
|
StructPtr st = StructPtr::dynamicCast(type);
|
|
492
715
|
if(st)
|
|
493
716
|
{
|
|
494
|
-
|
|
717
|
+
//
|
|
718
|
+
// C++11 mapping doesn't accept cpp:class metadata
|
|
719
|
+
//
|
|
720
|
+
if(!cpp11 && findMetaData(st->getMetaData()) == "%class")
|
|
495
721
|
{
|
|
496
722
|
return fixKwd(st->scoped() + "Ptr");
|
|
497
723
|
}
|
|
@@ -501,7 +727,26 @@ Slice::typeToString(const TypePtr& type, const StringList& metaData, int typeCtx
|
|
|
501
727
|
ProxyPtr proxy = ProxyPtr::dynamicCast(type);
|
|
502
728
|
if(proxy)
|
|
503
729
|
{
|
|
504
|
-
|
|
730
|
+
if(cpp11)
|
|
731
|
+
{
|
|
732
|
+
ClassDefPtr def = proxy->_class()->definition();
|
|
733
|
+
//
|
|
734
|
+
// Non local classes without operations map to the base
|
|
735
|
+
// proxy class shared_ptr<Ice::ObjectPrx>
|
|
736
|
+
//
|
|
737
|
+
if(def && !def->isInterface() && def->allOperations().empty())
|
|
738
|
+
{
|
|
739
|
+
return "::std::shared_ptr<::Ice::ObjectPrx>";
|
|
740
|
+
}
|
|
741
|
+
else
|
|
742
|
+
{
|
|
743
|
+
return "::std::shared_ptr<" + fixKwd(proxy->_class()->scoped() + "Prx") + ">";
|
|
744
|
+
}
|
|
745
|
+
}
|
|
746
|
+
else
|
|
747
|
+
{
|
|
748
|
+
return fixKwd(proxy->_class()->scoped() + "Prx");
|
|
749
|
+
}
|
|
505
750
|
}
|
|
506
751
|
|
|
507
752
|
SequencePtr seq = SequencePtr::dynamicCast(type);
|
|
@@ -536,7 +781,7 @@ Slice::typeToString(const TypePtr& type, bool optional, const StringList& metaDa
|
|
|
536
781
|
{
|
|
537
782
|
if(optional)
|
|
538
783
|
{
|
|
539
|
-
return
|
|
784
|
+
return toOptional(typeToString(type, metaData, typeCtx), typeCtx);
|
|
540
785
|
}
|
|
541
786
|
else
|
|
542
787
|
{
|
|
@@ -554,7 +799,7 @@ Slice::returnTypeToString(const TypePtr& type, bool optional, const StringList&
|
|
|
554
799
|
|
|
555
800
|
if(optional)
|
|
556
801
|
{
|
|
557
|
-
return
|
|
802
|
+
return toOptional(typeToString(type, metaData, typeCtx), typeCtx);
|
|
558
803
|
}
|
|
559
804
|
|
|
560
805
|
return typeToString(type, metaData, typeCtx);
|
|
@@ -563,7 +808,9 @@ Slice::returnTypeToString(const TypePtr& type, bool optional, const StringList&
|
|
|
563
808
|
string
|
|
564
809
|
Slice::inputTypeToString(const TypePtr& type, bool optional, const StringList& metaData, int typeCtx)
|
|
565
810
|
{
|
|
566
|
-
|
|
811
|
+
bool cpp11 = (typeCtx & TypeContextCpp11) != 0;
|
|
812
|
+
|
|
813
|
+
static const char* cpp98InputBuiltinTable[] =
|
|
567
814
|
{
|
|
568
815
|
"::Ice::Byte",
|
|
569
816
|
"bool",
|
|
@@ -575,14 +822,31 @@ Slice::inputTypeToString(const TypePtr& type, bool optional, const StringList& m
|
|
|
575
822
|
"const ::std::string&",
|
|
576
823
|
"const ::Ice::ObjectPtr&",
|
|
577
824
|
"const ::Ice::ObjectPrx&",
|
|
578
|
-
"const ::Ice::LocalObjectPtr&"
|
|
825
|
+
"const ::Ice::LocalObjectPtr&",
|
|
826
|
+
"const ::Ice::ValuePtr&"
|
|
827
|
+
};
|
|
828
|
+
|
|
829
|
+
static const char* cpp11InputBuiltinTable[] =
|
|
830
|
+
{
|
|
831
|
+
"::Ice::Byte",
|
|
832
|
+
"bool",
|
|
833
|
+
"short",
|
|
834
|
+
"int",
|
|
835
|
+
"long long int",
|
|
836
|
+
"float",
|
|
837
|
+
"double",
|
|
838
|
+
"const ::std::string&",
|
|
839
|
+
"const ::std::shared_ptr<::Ice::Object>&",
|
|
840
|
+
"const ::std::shared_ptr<::Ice::ObjectPrx>&",
|
|
841
|
+
"const ::std::shared_ptr<void>&",
|
|
842
|
+
"const ::std::shared_ptr<::Ice::Value>&"
|
|
579
843
|
};
|
|
580
844
|
|
|
581
845
|
typeCtx |= TypeContextInParam;
|
|
582
846
|
|
|
583
847
|
if(optional)
|
|
584
848
|
{
|
|
585
|
-
return "const
|
|
849
|
+
return "const " + toOptional(typeToString(type, metaData, typeCtx), typeCtx) + '&';
|
|
586
850
|
}
|
|
587
851
|
|
|
588
852
|
BuiltinPtr builtin = BuiltinPtr::dynamicCast(type);
|
|
@@ -590,34 +854,91 @@ Slice::inputTypeToString(const TypePtr& type, bool optional, const StringList& m
|
|
|
590
854
|
{
|
|
591
855
|
if(builtin->kind() == Builtin::KindString)
|
|
592
856
|
{
|
|
593
|
-
return string("const ") + stringTypeToString(type, metaData, typeCtx) +
|
|
857
|
+
return string("const ") + stringTypeToString(type, metaData, typeCtx) + '&';
|
|
594
858
|
}
|
|
595
859
|
else
|
|
596
860
|
{
|
|
597
|
-
|
|
861
|
+
if(cpp11)
|
|
862
|
+
{
|
|
863
|
+
if(builtin->kind() == Builtin::KindObject && !(typeCtx & TypeContextLocal))
|
|
864
|
+
{
|
|
865
|
+
return "const ::std::shared_ptr<::Ice::Value>&";
|
|
866
|
+
}
|
|
867
|
+
else
|
|
868
|
+
{
|
|
869
|
+
return cpp11InputBuiltinTable[builtin->kind()];
|
|
870
|
+
}
|
|
871
|
+
}
|
|
872
|
+
else
|
|
873
|
+
{
|
|
874
|
+
return cpp98InputBuiltinTable[builtin->kind()];
|
|
875
|
+
}
|
|
598
876
|
}
|
|
599
877
|
}
|
|
600
878
|
|
|
601
879
|
ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type);
|
|
602
880
|
if(cl)
|
|
603
881
|
{
|
|
604
|
-
|
|
882
|
+
if(cpp11)
|
|
883
|
+
{
|
|
884
|
+
if(cl->definition() && cl->definition()->isDelegate())
|
|
885
|
+
{
|
|
886
|
+
return fixKwd(cl->scoped());
|
|
887
|
+
}
|
|
888
|
+
else if(cl->isInterface() && !cl->isLocal())
|
|
889
|
+
{
|
|
890
|
+
return "const ::std::shared_ptr<::Ice::Value>&";
|
|
891
|
+
}
|
|
892
|
+
else
|
|
893
|
+
{
|
|
894
|
+
return "const ::std::shared_ptr<" + fixKwd(cl->scoped()) + ">&";
|
|
895
|
+
}
|
|
896
|
+
}
|
|
897
|
+
else
|
|
898
|
+
{
|
|
899
|
+
return "const " + fixKwd(cl->scoped() + "Ptr&");
|
|
900
|
+
}
|
|
605
901
|
}
|
|
606
902
|
|
|
607
903
|
StructPtr st = StructPtr::dynamicCast(type);
|
|
608
904
|
if(st)
|
|
609
905
|
{
|
|
610
|
-
if(
|
|
906
|
+
if(cpp11)
|
|
611
907
|
{
|
|
612
|
-
return "const " + fixKwd(st->scoped() + "
|
|
908
|
+
return "const " + fixKwd(st->scoped()) + "&";
|
|
909
|
+
}
|
|
910
|
+
else
|
|
911
|
+
{
|
|
912
|
+
if(findMetaData(st->getMetaData()) == "%class")
|
|
913
|
+
{
|
|
914
|
+
return "const " + fixKwd(st->scoped() + "Ptr&");
|
|
915
|
+
}
|
|
916
|
+
else
|
|
917
|
+
{
|
|
918
|
+
return "const " + fixKwd(st->scoped()) + "&";
|
|
919
|
+
}
|
|
613
920
|
}
|
|
614
|
-
return "const " + fixKwd(st->scoped()) + "&";
|
|
615
921
|
}
|
|
616
922
|
|
|
617
923
|
ProxyPtr proxy = ProxyPtr::dynamicCast(type);
|
|
618
924
|
if(proxy)
|
|
619
925
|
{
|
|
620
|
-
|
|
926
|
+
if(cpp11)
|
|
927
|
+
{
|
|
928
|
+
ClassDefPtr def = proxy->_class()->definition();
|
|
929
|
+
if(def && !def->isInterface() && def->allOperations().empty())
|
|
930
|
+
{
|
|
931
|
+
return "const ::std::shared_ptr<::Ice::ObjectPrx>&";
|
|
932
|
+
}
|
|
933
|
+
else
|
|
934
|
+
{
|
|
935
|
+
return "const ::std::shared_ptr<" + fixKwd(proxy->_class()->scoped() + "Prx") + ">&";
|
|
936
|
+
}
|
|
937
|
+
}
|
|
938
|
+
else
|
|
939
|
+
{
|
|
940
|
+
return "const " + fixKwd(proxy->_class()->scoped() + "Prx&");
|
|
941
|
+
}
|
|
621
942
|
}
|
|
622
943
|
|
|
623
944
|
EnumPtr en = EnumPtr::dynamicCast(type);
|
|
@@ -650,6 +971,8 @@ Slice::inputTypeToString(const TypePtr& type, bool optional, const StringList& m
|
|
|
650
971
|
string
|
|
651
972
|
Slice::outputTypeToString(const TypePtr& type, bool optional, const StringList& metaData, int typeCtx)
|
|
652
973
|
{
|
|
974
|
+
bool cpp11 = (typeCtx & TypeContextCpp11) != 0;
|
|
975
|
+
|
|
653
976
|
static const char* outputBuiltinTable[] =
|
|
654
977
|
{
|
|
655
978
|
"::Ice::Byte&",
|
|
@@ -661,13 +984,30 @@ Slice::outputTypeToString(const TypePtr& type, bool optional, const StringList&
|
|
|
661
984
|
"::Ice::Double&",
|
|
662
985
|
"::std::string&",
|
|
663
986
|
"::Ice::ObjectPtr&",
|
|
664
|
-
"::Ice::
|
|
665
|
-
"::Ice::LocalObjectPtr&"
|
|
987
|
+
"::Ice::ObjectPrxPtr&",
|
|
988
|
+
"::Ice::LocalObjectPtr&",
|
|
989
|
+
"::Ice::ValuePtr&"
|
|
990
|
+
};
|
|
991
|
+
|
|
992
|
+
static const char* cpp11OutputBuiltinTable[] =
|
|
993
|
+
{
|
|
994
|
+
"::Ice::Byte&",
|
|
995
|
+
"bool&",
|
|
996
|
+
"short&",
|
|
997
|
+
"int&",
|
|
998
|
+
"long long int&",
|
|
999
|
+
"float&",
|
|
1000
|
+
"double&",
|
|
1001
|
+
"::std::string&",
|
|
1002
|
+
"::std::shared_ptr<::Ice::Object>&",
|
|
1003
|
+
"::std::shared_ptr<::Ice::ObjectPrx>&",
|
|
1004
|
+
"::std::shared_ptr<void>&",
|
|
1005
|
+
"::std::shared_ptr<::Ice::Value>&"
|
|
666
1006
|
};
|
|
667
1007
|
|
|
668
1008
|
if(optional)
|
|
669
1009
|
{
|
|
670
|
-
return
|
|
1010
|
+
return toOptional(typeToString(type, metaData, typeCtx), typeCtx) + '&';
|
|
671
1011
|
}
|
|
672
1012
|
|
|
673
1013
|
BuiltinPtr builtin = BuiltinPtr::dynamicCast(type);
|
|
@@ -679,30 +1019,84 @@ Slice::outputTypeToString(const TypePtr& type, bool optional, const StringList&
|
|
|
679
1019
|
}
|
|
680
1020
|
else
|
|
681
1021
|
{
|
|
682
|
-
|
|
1022
|
+
if(cpp11)
|
|
1023
|
+
{
|
|
1024
|
+
if(builtin->kind() == Builtin::KindObject && !(typeCtx & TypeContextLocal))
|
|
1025
|
+
{
|
|
1026
|
+
return "::std::shared_ptr<::Ice::Value>";
|
|
1027
|
+
}
|
|
1028
|
+
else
|
|
1029
|
+
{
|
|
1030
|
+
return cpp11OutputBuiltinTable[builtin->kind()];
|
|
1031
|
+
}
|
|
1032
|
+
}
|
|
1033
|
+
else
|
|
1034
|
+
{
|
|
1035
|
+
return outputBuiltinTable[builtin->kind()];
|
|
1036
|
+
}
|
|
683
1037
|
}
|
|
684
1038
|
}
|
|
685
1039
|
|
|
686
1040
|
ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type);
|
|
687
1041
|
if(cl)
|
|
688
1042
|
{
|
|
689
|
-
|
|
1043
|
+
if(cpp11)
|
|
1044
|
+
{
|
|
1045
|
+
if(cl->definition() && cl->definition()->isDelegate())
|
|
1046
|
+
{
|
|
1047
|
+
return fixKwd(cl->scoped()) + "&";
|
|
1048
|
+
}
|
|
1049
|
+
else if(cl->isInterface() && !cl->isLocal())
|
|
1050
|
+
{
|
|
1051
|
+
return "::std::shared_ptr<::Ice::Value>&";
|
|
1052
|
+
}
|
|
1053
|
+
else
|
|
1054
|
+
{
|
|
1055
|
+
return "::std::shared_ptr<" + fixKwd(cl->scoped()) + ">&";
|
|
1056
|
+
}
|
|
1057
|
+
}
|
|
1058
|
+
else
|
|
1059
|
+
{
|
|
1060
|
+
return fixKwd(cl->scoped() + "Ptr&");
|
|
1061
|
+
}
|
|
690
1062
|
}
|
|
691
1063
|
|
|
692
1064
|
StructPtr st = StructPtr::dynamicCast(type);
|
|
693
1065
|
if(st)
|
|
694
1066
|
{
|
|
695
|
-
if(findMetaData(st->getMetaData()) == "%class")
|
|
1067
|
+
if(!cpp11 && findMetaData(st->getMetaData()) == "%class")
|
|
696
1068
|
{
|
|
697
1069
|
return fixKwd(st->scoped() + "Ptr&");
|
|
698
1070
|
}
|
|
699
|
-
|
|
1071
|
+
else
|
|
1072
|
+
{
|
|
1073
|
+
return fixKwd(st->scoped()) + "&";
|
|
1074
|
+
}
|
|
700
1075
|
}
|
|
701
1076
|
|
|
702
1077
|
ProxyPtr proxy = ProxyPtr::dynamicCast(type);
|
|
703
1078
|
if(proxy)
|
|
704
1079
|
{
|
|
705
|
-
|
|
1080
|
+
if(cpp11)
|
|
1081
|
+
{
|
|
1082
|
+
ClassDefPtr def = proxy->_class()->definition();
|
|
1083
|
+
//
|
|
1084
|
+
// Non local classes without operations map to the base
|
|
1085
|
+
// proxy class shared_ptr<Ice::ObjectPrx>
|
|
1086
|
+
//
|
|
1087
|
+
if(def && !def->isInterface() && def->allOperations().empty())
|
|
1088
|
+
{
|
|
1089
|
+
return "::std::shared_ptr<::Ice::ObjectPrx>";
|
|
1090
|
+
}
|
|
1091
|
+
else
|
|
1092
|
+
{
|
|
1093
|
+
return "::std::shared_ptr<" + fixKwd(proxy->_class()->scoped() + "Prx") + ">&";
|
|
1094
|
+
}
|
|
1095
|
+
}
|
|
1096
|
+
else
|
|
1097
|
+
{
|
|
1098
|
+
return fixKwd(proxy->_class()->scoped() + "Prx&");
|
|
1099
|
+
}
|
|
706
1100
|
}
|
|
707
1101
|
|
|
708
1102
|
SequencePtr seq = SequencePtr::dynamicCast(type);
|
|
@@ -727,25 +1121,25 @@ Slice::outputTypeToString(const TypePtr& type, bool optional, const StringList&
|
|
|
727
1121
|
}
|
|
728
1122
|
|
|
729
1123
|
string
|
|
730
|
-
Slice::operationModeToString(Operation::Mode mode)
|
|
1124
|
+
Slice::operationModeToString(Operation::Mode mode, bool cpp11)
|
|
731
1125
|
{
|
|
1126
|
+
string prefix = cpp11 ? "::Ice::OperationMode::" : "::Ice::";
|
|
732
1127
|
switch(mode)
|
|
733
1128
|
{
|
|
734
1129
|
case Operation::Normal:
|
|
735
1130
|
{
|
|
736
|
-
return "
|
|
1131
|
+
return prefix + "Normal";
|
|
737
1132
|
}
|
|
738
1133
|
|
|
739
1134
|
case Operation::Nonmutating:
|
|
740
1135
|
{
|
|
741
|
-
return "
|
|
1136
|
+
return prefix + "Nonmutating";
|
|
742
1137
|
}
|
|
743
1138
|
|
|
744
1139
|
case Operation::Idempotent:
|
|
745
1140
|
{
|
|
746
|
-
return "
|
|
1141
|
+
return prefix + "Idempotent";
|
|
747
1142
|
}
|
|
748
|
-
|
|
749
1143
|
default:
|
|
750
1144
|
{
|
|
751
1145
|
assert(false);
|
|
@@ -756,16 +1150,18 @@ Slice::operationModeToString(Operation::Mode mode)
|
|
|
756
1150
|
}
|
|
757
1151
|
|
|
758
1152
|
string
|
|
759
|
-
Slice::opFormatTypeToString(const OperationPtr& op)
|
|
1153
|
+
Slice::opFormatTypeToString(const OperationPtr& op, bool cpp11)
|
|
760
1154
|
{
|
|
1155
|
+
string prefix = cpp11 ? "::Ice::FormatType::" : "::Ice::";
|
|
1156
|
+
|
|
761
1157
|
switch(op->format())
|
|
762
1158
|
{
|
|
763
1159
|
case DefaultFormat:
|
|
764
|
-
return "
|
|
1160
|
+
return prefix + "DefaultFormat";
|
|
765
1161
|
case CompactFormat:
|
|
766
|
-
return "
|
|
1162
|
+
return prefix + "CompactFormat";
|
|
767
1163
|
case SlicedFormat:
|
|
768
|
-
return "
|
|
1164
|
+
return prefix + "SlicedFormat";
|
|
769
1165
|
|
|
770
1166
|
default:
|
|
771
1167
|
assert(false);
|
|
@@ -775,7 +1171,7 @@ Slice::opFormatTypeToString(const OperationPtr& op)
|
|
|
775
1171
|
}
|
|
776
1172
|
|
|
777
1173
|
//
|
|
778
|
-
// If the passed name is a keyword, return the name with a "
|
|
1174
|
+
// If the passed name is a keyword, return the name with a "_cpp_" prefix;
|
|
779
1175
|
// otherwise, return the name unchanged.
|
|
780
1176
|
//
|
|
781
1177
|
|
|
@@ -792,14 +1188,15 @@ lookupKwd(const string& name)
|
|
|
792
1188
|
//
|
|
793
1189
|
static const string keywordList[] =
|
|
794
1190
|
{
|
|
795
|
-
"and", "and_eq", "asm", "auto", "bit_and", "bit_or", "bool", "break",
|
|
796
|
-
"
|
|
797
|
-
"
|
|
798
|
-
"
|
|
799
|
-
"
|
|
800
|
-
"
|
|
801
|
-
"
|
|
802
|
-
"
|
|
1191
|
+
"alignas", "alignof", "and", "and_eq", "asm", "auto", "bit_and", "bit_or", "bool", "break",
|
|
1192
|
+
"case", "catch", "char", "char16_t", "char32_t", "class", "compl", "const", "const_exptr", "const_cast", "continue",
|
|
1193
|
+
"decltype", "default", "delete", "do", "double", "dynamic_cast",
|
|
1194
|
+
"else", "enum", "explicit", "export", "extern", "false", "float", "for", "friend",
|
|
1195
|
+
"goto", "if", "inline", "int", "long", "mutable", "namespace", "new", "noexcept", "not", "not_eq",
|
|
1196
|
+
"operator", "or", "or_eq", "private", "protected", "public", "register", "reinterpret_cast", "return",
|
|
1197
|
+
"short", "signed", "sizeof", "static", "static_assert", "static_cast", "struct", "switch",
|
|
1198
|
+
"template", "this", "thread_local", "throw", "true", "try", "typedef", "typeid", "typename",
|
|
1199
|
+
"union", "unsigned", "using", "virtual", "void", "volatile", "wchar_t", "while", "xor", "xor_eq"
|
|
803
1200
|
};
|
|
804
1201
|
bool found = binary_search(&keywordList[0],
|
|
805
1202
|
&keywordList[sizeof(keywordList) / sizeof(*keywordList)],
|
|
@@ -845,8 +1242,8 @@ splitScopedName(const string& scoped)
|
|
|
845
1242
|
//
|
|
846
1243
|
// If the passed name is a scoped name, return the identical scoped name,
|
|
847
1244
|
// but with all components that are C++ keywords replaced by
|
|
848
|
-
// their "
|
|
849
|
-
// not scoped, but a C++ keyword, return the "
|
|
1245
|
+
// their "_cpp_"-prefixed version; otherwise, if the passed name is
|
|
1246
|
+
// not scoped, but a C++ keyword, return the "_cpp_"-prefixed name;
|
|
850
1247
|
// otherwise, return the name unchanged.
|
|
851
1248
|
//
|
|
852
1249
|
string
|
|
@@ -868,16 +1265,19 @@ Slice::fixKwd(const string& name)
|
|
|
868
1265
|
|
|
869
1266
|
void
|
|
870
1267
|
Slice::writeMarshalUnmarshalCode(Output& out, const TypePtr& type, bool optional, int tag, const string& param,
|
|
871
|
-
bool marshal, const StringList& metaData, int typeCtx, const string&
|
|
1268
|
+
bool marshal, const StringList& metaData, int typeCtx, const string& customStream, bool pointer,
|
|
1269
|
+
const string& obj)
|
|
872
1270
|
{
|
|
1271
|
+
string objPrefix = obj.empty() ? obj : obj + ".";
|
|
1272
|
+
|
|
873
1273
|
ostringstream os;
|
|
874
|
-
if(
|
|
1274
|
+
if(customStream.empty())
|
|
875
1275
|
{
|
|
876
|
-
os << (marshal ? "
|
|
1276
|
+
os << (marshal ? "ostr" : "istr");
|
|
877
1277
|
}
|
|
878
1278
|
else
|
|
879
1279
|
{
|
|
880
|
-
os <<
|
|
1280
|
+
os << customStream;
|
|
881
1281
|
}
|
|
882
1282
|
|
|
883
1283
|
string deref;
|
|
@@ -916,52 +1316,63 @@ Slice::writeMarshalUnmarshalCode(Output& out, const TypePtr& type, bool optional
|
|
|
916
1316
|
BuiltinPtr builtin = BuiltinPtr::dynamicCast(seq->type());
|
|
917
1317
|
if(builtin && builtin->kind() == Builtin::KindByte)
|
|
918
1318
|
{
|
|
919
|
-
out << nl << func << param << ");";
|
|
1319
|
+
out << nl << func << objPrefix << param << ");";
|
|
920
1320
|
return;
|
|
921
1321
|
}
|
|
922
1322
|
|
|
923
|
-
out << nl << func <<
|
|
924
|
-
writeParamEndCode(out, seq, optional, param, metaData);
|
|
1323
|
+
out << nl << func << objPrefix << param << "_tmp_);";
|
|
1324
|
+
writeParamEndCode(out, seq, optional, param, metaData, obj);
|
|
925
1325
|
return;
|
|
926
1326
|
}
|
|
927
1327
|
else if(seqType.find("%range") == 0)
|
|
928
1328
|
{
|
|
929
|
-
out << nl << func <<
|
|
930
|
-
writeParamEndCode(out, seq, optional, param, metaData);
|
|
1329
|
+
out << nl << func << objPrefix << param << "_tmp_);";
|
|
1330
|
+
writeParamEndCode(out, seq, optional, param, metaData, obj);
|
|
931
1331
|
return;
|
|
932
1332
|
}
|
|
933
1333
|
}
|
|
934
1334
|
}
|
|
935
1335
|
|
|
936
|
-
out << nl << func << param << ");";
|
|
1336
|
+
out << nl << func << objPrefix << param << ");";
|
|
937
1337
|
}
|
|
938
1338
|
|
|
939
1339
|
void
|
|
940
|
-
Slice::writeMarshalCode(Output& out, const ParamDeclList& params, const OperationPtr& op, bool prepend, int typeCtx
|
|
1340
|
+
Slice::writeMarshalCode(Output& out, const ParamDeclList& params, const OperationPtr& op, bool prepend, int typeCtx,
|
|
1341
|
+
const string& customStream, const string& retP)
|
|
941
1342
|
{
|
|
942
|
-
writeMarshalUnmarshalParams(out, params, op, true, prepend, typeCtx);
|
|
1343
|
+
writeMarshalUnmarshalParams(out, params, op, true, prepend, typeCtx, customStream, retP);
|
|
943
1344
|
}
|
|
944
1345
|
|
|
945
1346
|
void
|
|
946
|
-
Slice::writeUnmarshalCode(Output& out, const ParamDeclList& params, const OperationPtr& op, bool prepend, int typeCtx
|
|
1347
|
+
Slice::writeUnmarshalCode(Output& out, const ParamDeclList& params, const OperationPtr& op, bool prepend, int typeCtx,
|
|
1348
|
+
const string& customStream, const string& retP, const string& obj)
|
|
947
1349
|
{
|
|
948
|
-
writeMarshalUnmarshalParams(out, params, op, false, prepend, typeCtx);
|
|
1350
|
+
writeMarshalUnmarshalParams(out, params, op, false, prepend, typeCtx, customStream, retP, obj);
|
|
949
1351
|
}
|
|
950
1352
|
|
|
951
1353
|
void
|
|
952
|
-
Slice::writeAllocateCode(Output& out, const ParamDeclList& params, const OperationPtr& op, bool prepend, int typeCtx
|
|
1354
|
+
Slice::writeAllocateCode(Output& out, const ParamDeclList& params, const OperationPtr& op, bool prepend, int typeCtx,
|
|
1355
|
+
const string& customRet)
|
|
953
1356
|
{
|
|
954
1357
|
string prefix = prepend ? paramPrefix : "";
|
|
1358
|
+
string returnValueS = customRet;
|
|
1359
|
+
if(returnValueS.empty())
|
|
1360
|
+
{
|
|
1361
|
+
returnValueS = "ret";
|
|
1362
|
+
}
|
|
1363
|
+
|
|
955
1364
|
for(ParamDeclList::const_iterator p = params.begin(); p != params.end(); ++p)
|
|
956
1365
|
{
|
|
957
1366
|
writeParamAllocateCode(out, (*p)->type(), (*p)->optional(), fixKwd(prefix + (*p)->name()), (*p)->getMetaData(),
|
|
958
|
-
typeCtx, getEndArg((*p)->type(),(*p)->getMetaData(), (*p)->name()) != (*p)->name());
|
|
1367
|
+
typeCtx, getEndArg((*p)->type(), (*p)->getMetaData(), (*p)->name()) != (*p)->name());
|
|
959
1368
|
}
|
|
1369
|
+
|
|
960
1370
|
if(op && op->returnType())
|
|
961
1371
|
{
|
|
962
|
-
writeParamAllocateCode(out, op->returnType(), op->returnIsOptional(),
|
|
963
|
-
getEndArg(op->returnType(), op->getMetaData(),
|
|
1372
|
+
writeParamAllocateCode(out, op->returnType(), op->returnIsOptional(), returnValueS, op->getMetaData(), typeCtx,
|
|
1373
|
+
getEndArg(op->returnType(), op->getMetaData(), returnValueS) != returnValueS);
|
|
964
1374
|
}
|
|
1375
|
+
|
|
965
1376
|
}
|
|
966
1377
|
|
|
967
1378
|
string
|
|
@@ -986,11 +1397,11 @@ Slice::getEndArg(const TypePtr& type, const StringList& metaData, const string&
|
|
|
986
1397
|
builtin->kind() != Builtin::KindObject &&
|
|
987
1398
|
builtin->kind() != Builtin::KindObjectProxy)
|
|
988
1399
|
{
|
|
989
|
-
endArg
|
|
1400
|
+
endArg += "_tmp_";
|
|
990
1401
|
}
|
|
991
1402
|
else if(!builtin || builtin->kind() != Builtin::KindByte)
|
|
992
1403
|
{
|
|
993
|
-
endArg
|
|
1404
|
+
endArg += "_tmp_";
|
|
994
1405
|
}
|
|
995
1406
|
}
|
|
996
1407
|
else if(seqType.find("%range") == 0)
|
|
@@ -1000,7 +1411,7 @@ Slice::getEndArg(const TypePtr& type, const StringList& metaData, const string&
|
|
|
1000
1411
|
{
|
|
1001
1412
|
md.push_back("cpp:type:" + seqType.substr(strlen("%range:")));
|
|
1002
1413
|
}
|
|
1003
|
-
endArg
|
|
1414
|
+
endArg += "_tmp_";
|
|
1004
1415
|
}
|
|
1005
1416
|
}
|
|
1006
1417
|
return endArg;
|
|
@@ -1016,8 +1427,247 @@ Slice::writeEndCode(Output& out, const ParamDeclList& params, const OperationPtr
|
|
|
1016
1427
|
}
|
|
1017
1428
|
if(op && op->returnType())
|
|
1018
1429
|
{
|
|
1019
|
-
writeParamEndCode(out, op->returnType(), op->returnIsOptional(), "
|
|
1430
|
+
writeParamEndCode(out, op->returnType(), op->returnIsOptional(), "ret", op->getMetaData());
|
|
1431
|
+
}
|
|
1432
|
+
}
|
|
1433
|
+
|
|
1434
|
+
void
|
|
1435
|
+
Slice::writeMarshalUnmarshalDataMemberInHolder(IceUtilInternal::Output& C,
|
|
1436
|
+
const string& holder,
|
|
1437
|
+
const DataMemberPtr& p,
|
|
1438
|
+
bool marshal)
|
|
1439
|
+
{
|
|
1440
|
+
writeMarshalUnmarshalCode(C, p->type(), p->optional(), p->tag(), holder + fixKwd(p->name()), marshal,
|
|
1441
|
+
p->getMetaData());
|
|
1442
|
+
}
|
|
1443
|
+
|
|
1444
|
+
void
|
|
1445
|
+
Slice::writeMarshalUnmarshalAllInHolder(IceUtilInternal::Output& out,
|
|
1446
|
+
const string& holder,
|
|
1447
|
+
const DataMemberList& dataMembers,
|
|
1448
|
+
bool optional,
|
|
1449
|
+
bool marshal)
|
|
1450
|
+
{
|
|
1451
|
+
if(dataMembers.empty())
|
|
1452
|
+
{
|
|
1453
|
+
return;
|
|
1454
|
+
}
|
|
1455
|
+
|
|
1456
|
+
string stream = marshal ? "ostr" : "istr";
|
|
1457
|
+
string streamOp = marshal ? "writeAll" : "readAll";
|
|
1458
|
+
|
|
1459
|
+
out << nl << stream << "->" << streamOp;
|
|
1460
|
+
out << spar;
|
|
1461
|
+
|
|
1462
|
+
if(optional)
|
|
1463
|
+
{
|
|
1464
|
+
ostringstream os;
|
|
1465
|
+
os << "{";
|
|
1466
|
+
for(DataMemberList::const_iterator q = dataMembers.begin(); q != dataMembers.end(); ++q)
|
|
1467
|
+
{
|
|
1468
|
+
if(q != dataMembers.begin())
|
|
1469
|
+
{
|
|
1470
|
+
os << ", ";
|
|
1471
|
+
}
|
|
1472
|
+
os << (*q)->tag();
|
|
1473
|
+
}
|
|
1474
|
+
os << "}";
|
|
1475
|
+
out << os.str();
|
|
1476
|
+
}
|
|
1477
|
+
|
|
1478
|
+
for(DataMemberList::const_iterator q = dataMembers.begin(); q != dataMembers.end(); ++q)
|
|
1479
|
+
{
|
|
1480
|
+
out << holder + fixKwd((*q)->name());
|
|
1481
|
+
}
|
|
1482
|
+
|
|
1483
|
+
out << epar << ";";
|
|
1484
|
+
|
|
1485
|
+
}
|
|
1486
|
+
|
|
1487
|
+
void
|
|
1488
|
+
Slice::writeStreamHelpers(Output& out,
|
|
1489
|
+
const ContainedPtr& c,
|
|
1490
|
+
DataMemberList dataMembers,
|
|
1491
|
+
bool hasBaseDataMembers,
|
|
1492
|
+
bool checkClassMetaData,
|
|
1493
|
+
bool cpp11)
|
|
1494
|
+
{
|
|
1495
|
+
// If c is a C++11 class/exception whose base class contains data members (recursively), then we need to generate
|
|
1496
|
+
// an StreamWriter even if its implementation is empty. This is becuase our default marsaling uses ice_tuple() which
|
|
1497
|
+
// contains all of our class/exception's data members as well the base data members, which breaks marshaling. This
|
|
1498
|
+
// is not an issue for structs.
|
|
1499
|
+
if(dataMembers.empty() && !(cpp11 && hasBaseDataMembers))
|
|
1500
|
+
{
|
|
1501
|
+
return;
|
|
1502
|
+
}
|
|
1503
|
+
|
|
1504
|
+
DataMemberList requiredMembers;
|
|
1505
|
+
DataMemberList optionalMembers;
|
|
1506
|
+
|
|
1507
|
+
for(DataMemberList::const_iterator q = dataMembers.begin(); q != dataMembers.end(); ++q)
|
|
1508
|
+
{
|
|
1509
|
+
if((*q)->optional())
|
|
1510
|
+
{
|
|
1511
|
+
optionalMembers.push_back(*q);
|
|
1512
|
+
}
|
|
1513
|
+
else
|
|
1514
|
+
{
|
|
1515
|
+
requiredMembers.push_back(*q);
|
|
1516
|
+
}
|
|
1517
|
+
}
|
|
1518
|
+
|
|
1519
|
+
// Sort optional data members
|
|
1520
|
+
class SortFn
|
|
1521
|
+
{
|
|
1522
|
+
public:
|
|
1523
|
+
static bool compare(const DataMemberPtr& lhs, const DataMemberPtr& rhs)
|
|
1524
|
+
{
|
|
1525
|
+
return lhs->tag() < rhs->tag();
|
|
1526
|
+
}
|
|
1527
|
+
};
|
|
1528
|
+
optionalMembers.sort(SortFn::compare);
|
|
1529
|
+
|
|
1530
|
+
string scoped = c->scoped();
|
|
1531
|
+
bool classMetaData = checkClassMetaData ? (findMetaData(c->getMetaData(), false) == "%class") : false;
|
|
1532
|
+
string fullName = classMetaData ? fixKwd(scoped + "Ptr") : fixKwd(scoped);
|
|
1533
|
+
string holder = classMetaData ? "v->" : "v.";
|
|
1534
|
+
|
|
1535
|
+
//
|
|
1536
|
+
// Generate StreamWriter
|
|
1537
|
+
//
|
|
1538
|
+
// Only generate StreamWriter specializations if we are generating for C++98 or
|
|
1539
|
+
// we are generating for C++11 with optional data members and no base class data members
|
|
1540
|
+
//
|
|
1541
|
+
if(!cpp11 || !optionalMembers.empty() || hasBaseDataMembers)
|
|
1542
|
+
{
|
|
1543
|
+
out << nl << "template<typename S>";
|
|
1544
|
+
out << nl << "struct StreamWriter" << (cpp11 ? "<" : "< ") << fullName << ", S>";
|
|
1545
|
+
out << sb;
|
|
1546
|
+
if(requiredMembers.empty() && optionalMembers.empty())
|
|
1547
|
+
{
|
|
1548
|
+
out << nl << "static void write(S*, const " << fullName << "&)";
|
|
1549
|
+
}
|
|
1550
|
+
else
|
|
1551
|
+
{
|
|
1552
|
+
out << nl << "static void write(S* ostr, const " << fullName << "& v)";
|
|
1553
|
+
}
|
|
1554
|
+
|
|
1555
|
+
out << sb;
|
|
1556
|
+
|
|
1557
|
+
if(cpp11)
|
|
1558
|
+
{
|
|
1559
|
+
writeMarshalUnmarshalAllInHolder(out, holder, requiredMembers, false, true);
|
|
1560
|
+
writeMarshalUnmarshalAllInHolder(out, holder, optionalMembers, true, true);
|
|
1561
|
+
}
|
|
1562
|
+
else
|
|
1563
|
+
{
|
|
1564
|
+
for(DataMemberList::const_iterator q = requiredMembers.begin(); q != requiredMembers.end(); ++q)
|
|
1565
|
+
{
|
|
1566
|
+
writeMarshalUnmarshalDataMemberInHolder(out, holder, *q, true);
|
|
1567
|
+
}
|
|
1568
|
+
|
|
1569
|
+
for(DataMemberList::const_iterator q = optionalMembers.begin(); q != optionalMembers.end(); ++q)
|
|
1570
|
+
{
|
|
1571
|
+
writeMarshalUnmarshalDataMemberInHolder(out, holder, *q, true);
|
|
1572
|
+
}
|
|
1573
|
+
}
|
|
1574
|
+
|
|
1575
|
+
out << eb;
|
|
1576
|
+
out << eb << ";" << nl;
|
|
1020
1577
|
}
|
|
1578
|
+
|
|
1579
|
+
//
|
|
1580
|
+
// Generate StreamWriter
|
|
1581
|
+
//
|
|
1582
|
+
out << nl << "template<typename S>";
|
|
1583
|
+
out << nl << "struct StreamReader" << (cpp11 ? "<" : "< ") << fullName << ", S>";
|
|
1584
|
+
out << sb;
|
|
1585
|
+
if (requiredMembers.empty() && optionalMembers.empty())
|
|
1586
|
+
{
|
|
1587
|
+
out << nl << "static void read(S*, " << fullName << "&)";
|
|
1588
|
+
}
|
|
1589
|
+
else
|
|
1590
|
+
{
|
|
1591
|
+
out << nl << "static void read(S* istr, " << fullName << "& v)";
|
|
1592
|
+
}
|
|
1593
|
+
|
|
1594
|
+
out << sb;
|
|
1595
|
+
|
|
1596
|
+
if(cpp11)
|
|
1597
|
+
{
|
|
1598
|
+
writeMarshalUnmarshalAllInHolder(out, holder, requiredMembers, false, false);
|
|
1599
|
+
writeMarshalUnmarshalAllInHolder(out, holder, optionalMembers, true, false);
|
|
1600
|
+
}
|
|
1601
|
+
else
|
|
1602
|
+
{
|
|
1603
|
+
for(DataMemberList::const_iterator q = requiredMembers.begin(); q != requiredMembers.end(); ++q)
|
|
1604
|
+
{
|
|
1605
|
+
writeMarshalUnmarshalDataMemberInHolder(out, holder, *q, false);
|
|
1606
|
+
}
|
|
1607
|
+
|
|
1608
|
+
for(DataMemberList::const_iterator q = optionalMembers.begin(); q != optionalMembers.end(); ++q)
|
|
1609
|
+
{
|
|
1610
|
+
writeMarshalUnmarshalDataMemberInHolder(out, holder, *q, false);
|
|
1611
|
+
}
|
|
1612
|
+
}
|
|
1613
|
+
|
|
1614
|
+
out << eb;
|
|
1615
|
+
out << eb << ";" << nl;
|
|
1616
|
+
}
|
|
1617
|
+
|
|
1618
|
+
void
|
|
1619
|
+
Slice::writeIceTuple(::IceUtilInternal::Output& out, DataMemberList dataMembers, int typeCtx)
|
|
1620
|
+
{
|
|
1621
|
+
out << sp << nl << "std::tuple<";
|
|
1622
|
+
for(DataMemberList::const_iterator q = dataMembers.begin(); q != dataMembers.end(); ++q)
|
|
1623
|
+
{
|
|
1624
|
+
if(q != dataMembers.begin())
|
|
1625
|
+
{
|
|
1626
|
+
out << ", ";
|
|
1627
|
+
}
|
|
1628
|
+
out << "const ";
|
|
1629
|
+
out << typeToString((*q)->type(), (*q)->optional(), (*q)->getMetaData(), typeCtx | TypeContextCpp11) << "&";
|
|
1630
|
+
}
|
|
1631
|
+
out << "> ice_tuple() const";
|
|
1632
|
+
|
|
1633
|
+
out << sb;
|
|
1634
|
+
out << nl << "return std::tie(";
|
|
1635
|
+
for(DataMemberList::const_iterator pi = dataMembers.begin(); pi != dataMembers.end(); ++pi)
|
|
1636
|
+
{
|
|
1637
|
+
if(pi != dataMembers.begin())
|
|
1638
|
+
{
|
|
1639
|
+
out << ", ";
|
|
1640
|
+
}
|
|
1641
|
+
out << fixKwd((*pi)->name());
|
|
1642
|
+
}
|
|
1643
|
+
out << ");" << eb;
|
|
1644
|
+
}
|
|
1645
|
+
|
|
1646
|
+
bool
|
|
1647
|
+
Slice::findMetaData(const string& prefix, const ClassDeclPtr& cl, string& value)
|
|
1648
|
+
{
|
|
1649
|
+
if(findMetaData(prefix, cl->getMetaData(), value))
|
|
1650
|
+
{
|
|
1651
|
+
return true;
|
|
1652
|
+
}
|
|
1653
|
+
|
|
1654
|
+
ClassDefPtr def = cl->definition();
|
|
1655
|
+
return def ? findMetaData(prefix, def->getMetaData(), value) : false;
|
|
1656
|
+
}
|
|
1657
|
+
|
|
1658
|
+
bool
|
|
1659
|
+
Slice::findMetaData(const string& prefix, const StringList& metaData, string& value)
|
|
1660
|
+
{
|
|
1661
|
+
for(StringList::const_iterator i = metaData.begin(); i != metaData.end(); i++)
|
|
1662
|
+
{
|
|
1663
|
+
string s = *i;
|
|
1664
|
+
if(s.find(prefix) == 0)
|
|
1665
|
+
{
|
|
1666
|
+
value = s.substr(prefix.size());
|
|
1667
|
+
return true;
|
|
1668
|
+
}
|
|
1669
|
+
}
|
|
1670
|
+
return false;
|
|
1021
1671
|
}
|
|
1022
1672
|
|
|
1023
1673
|
string
|
|
@@ -1041,28 +1691,23 @@ Slice::findMetaData(const StringList& metaData, int typeCtx)
|
|
|
1041
1691
|
// the return value is % followed by the string after cpp:.
|
|
1042
1692
|
//
|
|
1043
1693
|
// The priority of the metadata is as follows:
|
|
1044
|
-
// 1:
|
|
1045
|
-
// 2:
|
|
1046
|
-
//
|
|
1694
|
+
// 1: array, range (C++98 only), view-type for "view" parameters
|
|
1695
|
+
// 2: class (C++98 only), scoped (C++98 only), unscoped (C++11 only)
|
|
1696
|
+
//
|
|
1047
1697
|
|
|
1048
1698
|
if(pos != string::npos)
|
|
1049
1699
|
{
|
|
1050
1700
|
string ss = str.substr(prefix.size());
|
|
1051
1701
|
|
|
1052
|
-
if(ss.find("protobuf:") == 0)
|
|
1053
|
-
{
|
|
1054
|
-
return str.substr(pos + 1);
|
|
1055
|
-
}
|
|
1056
|
-
|
|
1057
1702
|
if(typeCtx & (TypeContextInParam | TypeContextAMIPrivateEnd))
|
|
1058
1703
|
{
|
|
1059
|
-
if(ss.find("
|
|
1704
|
+
if(ss.find("view-type:") == 0)
|
|
1060
1705
|
{
|
|
1061
|
-
return
|
|
1706
|
+
return str.substr(pos + 1);
|
|
1062
1707
|
}
|
|
1063
|
-
else if(ss.find("
|
|
1708
|
+
else if(ss.find("range:") == 0 && !(typeCtx & TypeContextCpp11))
|
|
1064
1709
|
{
|
|
1065
|
-
return str.substr(
|
|
1710
|
+
return string("%") + str.substr(prefix.size());
|
|
1066
1711
|
}
|
|
1067
1712
|
}
|
|
1068
1713
|
|
|
@@ -1078,21 +1723,29 @@ Slice::findMetaData(const StringList& metaData, int typeCtx)
|
|
|
1078
1723
|
{
|
|
1079
1724
|
return "%array";
|
|
1080
1725
|
}
|
|
1081
|
-
else if(ss == "range")
|
|
1726
|
+
else if(ss == "range" && !(typeCtx & TypeContextCpp11))
|
|
1082
1727
|
{
|
|
1083
1728
|
return "%range";
|
|
1084
1729
|
}
|
|
1085
1730
|
}
|
|
1086
1731
|
//
|
|
1087
|
-
// Otherwise if the data is "class" it is returned.
|
|
1732
|
+
// Otherwise if the data is "class", "scoped" or "unscoped" it is returned.
|
|
1088
1733
|
//
|
|
1089
1734
|
else
|
|
1090
1735
|
{
|
|
1091
1736
|
string ss = str.substr(prefix.size());
|
|
1092
|
-
if(ss == "class")
|
|
1737
|
+
if(ss == "class" && !(typeCtx & TypeContextCpp11))
|
|
1093
1738
|
{
|
|
1094
1739
|
return "%class";
|
|
1095
1740
|
}
|
|
1741
|
+
else if(ss == "scoped" && !(typeCtx & TypeContextCpp11))
|
|
1742
|
+
{
|
|
1743
|
+
return "%scoped";
|
|
1744
|
+
}
|
|
1745
|
+
else if(ss == "unscoped" && (typeCtx & TypeContextCpp11))
|
|
1746
|
+
{
|
|
1747
|
+
return "%unscoped";
|
|
1748
|
+
}
|
|
1096
1749
|
}
|
|
1097
1750
|
}
|
|
1098
1751
|
}
|
|
@@ -1125,7 +1778,6 @@ Slice::inWstringModule(const SequencePtr& seq)
|
|
|
1125
1778
|
return false;
|
|
1126
1779
|
}
|
|
1127
1780
|
|
|
1128
|
-
|
|
1129
1781
|
string
|
|
1130
1782
|
Slice::getDataMemberRef(const DataMemberPtr& p)
|
|
1131
1783
|
{
|