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.
|
|
@@ -63,6 +63,72 @@ filterOrderedOptionalDataMembers(const DataMemberList& members)
|
|
|
63
63
|
return result;
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
+
void
|
|
67
|
+
sortOptionalParameters(ParamDeclList& params)
|
|
68
|
+
{
|
|
69
|
+
//
|
|
70
|
+
// Sort optional parameters by tag.
|
|
71
|
+
//
|
|
72
|
+
class SortFn
|
|
73
|
+
{
|
|
74
|
+
public:
|
|
75
|
+
static bool compare(const ParamDeclPtr& lhs, const ParamDeclPtr& rhs)
|
|
76
|
+
{
|
|
77
|
+
return lhs->tag() < rhs->tag();
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
params.sort(SortFn::compare);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
bool
|
|
84
|
+
isMutableAfterReturnType(const TypePtr& type)
|
|
85
|
+
{
|
|
86
|
+
//
|
|
87
|
+
// Returns true if the type contains data types which can be referenced by user code
|
|
88
|
+
// and mutated after a dispatch returns.
|
|
89
|
+
//
|
|
90
|
+
|
|
91
|
+
if(ClassDeclPtr::dynamicCast(type))
|
|
92
|
+
{
|
|
93
|
+
return true;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
BuiltinPtr builtin = BuiltinPtr::dynamicCast(type);
|
|
97
|
+
if(builtin && (builtin->kind() == Builtin::KindObject || builtin->kind() == Builtin::KindValue))
|
|
98
|
+
{
|
|
99
|
+
return true;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
if(SequencePtr::dynamicCast(type) || DictionaryPtr::dynamicCast(type))
|
|
103
|
+
{
|
|
104
|
+
return true;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
StructPtr s = StructPtr::dynamicCast(type);
|
|
108
|
+
if(s)
|
|
109
|
+
{
|
|
110
|
+
return true;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
return false;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
void
|
|
117
|
+
checkDeprecatedType(const UnitPtr& unit, const TypePtr& type)
|
|
118
|
+
{
|
|
119
|
+
ClassDeclPtr decl = ClassDeclPtr::dynamicCast(type);
|
|
120
|
+
if(decl && !decl->isLocal() && decl->isInterface())
|
|
121
|
+
{
|
|
122
|
+
unit->warning(Deprecated, "interface by value is deprecated");
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
ProxyPtr proxy = ProxyPtr::dynamicCast(type);
|
|
126
|
+
if(proxy && !proxy->_class()->isInterface())
|
|
127
|
+
{
|
|
128
|
+
unit->warning(Deprecated, "proxy for a class is deprecated");
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
66
132
|
}
|
|
67
133
|
|
|
68
134
|
namespace Slice
|
|
@@ -79,6 +145,7 @@ Unit* unit;
|
|
|
79
145
|
Slice::DefinitionContext::DefinitionContext(int includeLevel, const StringList& metaData) :
|
|
80
146
|
_includeLevel(includeLevel), _metaData(metaData), _seenDefinition(false)
|
|
81
147
|
{
|
|
148
|
+
initSuppressedWarnings();
|
|
82
149
|
}
|
|
83
150
|
|
|
84
151
|
string
|
|
@@ -121,6 +188,7 @@ void
|
|
|
121
188
|
Slice::DefinitionContext::setMetaData(const StringList& metaData)
|
|
122
189
|
{
|
|
123
190
|
_metaData = metaData;
|
|
191
|
+
initSuppressedWarnings();
|
|
124
192
|
}
|
|
125
193
|
|
|
126
194
|
string
|
|
@@ -143,6 +211,74 @@ Slice::DefinitionContext::getMetaData() const
|
|
|
143
211
|
return _metaData;
|
|
144
212
|
}
|
|
145
213
|
|
|
214
|
+
void
|
|
215
|
+
Slice::DefinitionContext::warning(WarningCategory category, const string& file, int line, const string& msg) const
|
|
216
|
+
{
|
|
217
|
+
if(!suppressWarning(category))
|
|
218
|
+
{
|
|
219
|
+
emitWarning(file, line, msg);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
void
|
|
224
|
+
Slice::DefinitionContext::warning(WarningCategory category, const string& file, const string& line, const string& msg) const
|
|
225
|
+
{
|
|
226
|
+
if(!suppressWarning(category))
|
|
227
|
+
{
|
|
228
|
+
emitWarning(file, line, msg);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
bool
|
|
233
|
+
Slice::DefinitionContext::suppressWarning(WarningCategory category) const
|
|
234
|
+
{
|
|
235
|
+
return _suppressedWarnings.find(category) != _suppressedWarnings.end() ||
|
|
236
|
+
_suppressedWarnings.find(All) != _suppressedWarnings.end();
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
void
|
|
240
|
+
Slice::DefinitionContext::initSuppressedWarnings()
|
|
241
|
+
{
|
|
242
|
+
_suppressedWarnings.clear();
|
|
243
|
+
const string prefix = "suppress-warning";
|
|
244
|
+
string value = findMetaData(prefix);
|
|
245
|
+
if(value == prefix)
|
|
246
|
+
{
|
|
247
|
+
_suppressedWarnings.insert(All);
|
|
248
|
+
}
|
|
249
|
+
else if(!value.empty())
|
|
250
|
+
{
|
|
251
|
+
assert(value.length() > prefix.length());
|
|
252
|
+
if(value[prefix.length()] == ':')
|
|
253
|
+
{
|
|
254
|
+
value = value.substr(prefix.length() + 1);
|
|
255
|
+
vector<string> result;
|
|
256
|
+
IceUtilInternal::splitString(value, ",", result);
|
|
257
|
+
for(vector<string>::iterator p = result.begin(); p != result.end(); ++p)
|
|
258
|
+
{
|
|
259
|
+
string s = IceUtilInternal::trim(*p);
|
|
260
|
+
if(s == "all")
|
|
261
|
+
{
|
|
262
|
+
_suppressedWarnings.insert(All);
|
|
263
|
+
}
|
|
264
|
+
else if(s == "deprecated")
|
|
265
|
+
{
|
|
266
|
+
_suppressedWarnings.insert(Deprecated);
|
|
267
|
+
}
|
|
268
|
+
else if(s == "invalid-metadata")
|
|
269
|
+
{
|
|
270
|
+
_suppressedWarnings.insert(InvalidMetaData);
|
|
271
|
+
}
|
|
272
|
+
else
|
|
273
|
+
{
|
|
274
|
+
warning(InvalidMetaData, "", "", string("invalid category `") + s +
|
|
275
|
+
"' in global metadata suppress-warning");
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
|
|
146
282
|
// ----------------------------------------------------------------------
|
|
147
283
|
// SyntaxTreeBase
|
|
148
284
|
// ----------------------------------------------------------------------
|
|
@@ -258,6 +394,11 @@ Slice::Builtin::typeId() const
|
|
|
258
394
|
return "::Ice::LocalObject";
|
|
259
395
|
break;
|
|
260
396
|
}
|
|
397
|
+
case KindValue:
|
|
398
|
+
{
|
|
399
|
+
return "::Ice::Value";
|
|
400
|
+
break;
|
|
401
|
+
}
|
|
261
402
|
}
|
|
262
403
|
assert(false);
|
|
263
404
|
return ""; // Keep the compiler happy.
|
|
@@ -266,7 +407,7 @@ Slice::Builtin::typeId() const
|
|
|
266
407
|
bool
|
|
267
408
|
Slice::Builtin::usesClasses() const
|
|
268
409
|
{
|
|
269
|
-
return _kind == KindObject;
|
|
410
|
+
return _kind == KindObject || _kind == KindValue;
|
|
270
411
|
}
|
|
271
412
|
|
|
272
413
|
size_t
|
|
@@ -283,7 +424,8 @@ Slice::Builtin::minWireSize() const
|
|
|
283
424
|
8, // KindDouble
|
|
284
425
|
1, // KindString: at least one byte for an empty string.
|
|
285
426
|
1, // KindObject: at least one byte (to marshal an index instead of an instance).
|
|
286
|
-
2
|
|
427
|
+
2, // KindObjectProxy: at least an empty identity for a nil proxy, that is, 2 bytes.
|
|
428
|
+
1 // KindValue: at least one byte (to marshal an index instead of an instance).
|
|
287
429
|
};
|
|
288
430
|
|
|
289
431
|
assert(_kind != KindLocalObject);
|
|
@@ -293,7 +435,7 @@ Slice::Builtin::minWireSize() const
|
|
|
293
435
|
bool
|
|
294
436
|
Slice::Builtin::isVariableLength() const
|
|
295
437
|
{
|
|
296
|
-
return _kind == KindString || _kind == KindObject || _kind == KindObjectProxy;
|
|
438
|
+
return _kind == KindString || _kind == KindObject || _kind == KindObjectProxy || _kind == KindValue;
|
|
297
439
|
}
|
|
298
440
|
|
|
299
441
|
Builtin::Kind
|
|
@@ -320,7 +462,8 @@ const char* Slice::Builtin::builtinTable[] =
|
|
|
320
462
|
"string",
|
|
321
463
|
"Object",
|
|
322
464
|
"Object*",
|
|
323
|
-
"LocalObject"
|
|
465
|
+
"LocalObject",
|
|
466
|
+
"Value"
|
|
324
467
|
};
|
|
325
468
|
|
|
326
469
|
Slice::Builtin::Builtin(const UnitPtr& unit, Kind kind) :
|
|
@@ -368,12 +511,13 @@ string
|
|
|
368
511
|
Slice::Contained::flattenedScope() const
|
|
369
512
|
{
|
|
370
513
|
string s = scope();
|
|
371
|
-
string
|
|
372
|
-
|
|
514
|
+
string::size_type pos = 0;
|
|
515
|
+
while((pos = s.find("::", pos)) != string::npos)
|
|
373
516
|
{
|
|
374
|
-
|
|
517
|
+
s.replace(pos, 2, "_");
|
|
518
|
+
|
|
375
519
|
}
|
|
376
|
-
return
|
|
520
|
+
return s;
|
|
377
521
|
}
|
|
378
522
|
|
|
379
523
|
string
|
|
@@ -496,12 +640,6 @@ Slice::Contained::operator==(const Contained& rhs) const
|
|
|
496
640
|
return _scoped == rhs._scoped;
|
|
497
641
|
}
|
|
498
642
|
|
|
499
|
-
bool
|
|
500
|
-
Slice::Contained::operator!=(const Contained& rhs) const
|
|
501
|
-
{
|
|
502
|
-
return _scoped != rhs._scoped;
|
|
503
|
-
}
|
|
504
|
-
|
|
505
643
|
Slice::Contained::Contained(const ContainerPtr& container, const string& name) :
|
|
506
644
|
SyntaxTreeBase(container->unit()),
|
|
507
645
|
_container(container),
|
|
@@ -876,17 +1014,6 @@ Slice::Container::createSequence(const string& name, const TypePtr& type, const
|
|
|
876
1014
|
{
|
|
877
1015
|
checkIdentifier(name);
|
|
878
1016
|
|
|
879
|
-
if(_unit->profile() == IceE && !local)
|
|
880
|
-
{
|
|
881
|
-
BuiltinPtr builtin = BuiltinPtr::dynamicCast(type);
|
|
882
|
-
if((builtin && builtin->kind() == Builtin::KindObject) || ClassDeclPtr::dynamicCast(type))
|
|
883
|
-
{
|
|
884
|
-
string msg = "Sequence `" + name + "' cannot contain object values.";
|
|
885
|
-
_unit->error(msg);
|
|
886
|
-
return 0;
|
|
887
|
-
}
|
|
888
|
-
}
|
|
889
|
-
|
|
890
1017
|
ContainedList matches = _unit->findContents(thisScope() + name);
|
|
891
1018
|
if(!matches.empty())
|
|
892
1019
|
{
|
|
@@ -930,6 +1057,8 @@ Slice::Container::createSequence(const string& name, const TypePtr& type, const
|
|
|
930
1057
|
_unit->error(msg);
|
|
931
1058
|
}
|
|
932
1059
|
|
|
1060
|
+
checkDeprecatedType(_unit, type);
|
|
1061
|
+
|
|
933
1062
|
SequencePtr p = new Sequence(this, name, type, metaData, local);
|
|
934
1063
|
_contents.push_back(p);
|
|
935
1064
|
return p;
|
|
@@ -942,17 +1071,6 @@ Slice::Container::createDictionary(const string& name, const TypePtr& keyType, c
|
|
|
942
1071
|
{
|
|
943
1072
|
checkIdentifier(name);
|
|
944
1073
|
|
|
945
|
-
if(_unit->profile() == IceE && !local)
|
|
946
|
-
{
|
|
947
|
-
BuiltinPtr builtin = BuiltinPtr::dynamicCast(valueType);
|
|
948
|
-
if((builtin && builtin->kind() == Builtin::KindObject) || ClassDeclPtr::dynamicCast(valueType))
|
|
949
|
-
{
|
|
950
|
-
string msg = "Dictionary `" + name + "' cannot contain object values.";
|
|
951
|
-
_unit->error(msg);
|
|
952
|
-
return 0;
|
|
953
|
-
}
|
|
954
|
-
}
|
|
955
|
-
|
|
956
1074
|
ContainedList matches = _unit->findContents(thisScope() + name);
|
|
957
1075
|
if(!matches.empty())
|
|
958
1076
|
{
|
|
@@ -997,7 +1115,7 @@ Slice::Container::createDictionary(const string& name, const TypePtr& keyType, c
|
|
|
997
1115
|
}
|
|
998
1116
|
if(containsSequence)
|
|
999
1117
|
{
|
|
1000
|
-
_unit->warning("use of sequences in dictionary keys has been deprecated");
|
|
1118
|
+
_unit->warning(Deprecated, "use of sequences in dictionary keys has been deprecated");
|
|
1001
1119
|
}
|
|
1002
1120
|
}
|
|
1003
1121
|
|
|
@@ -1015,6 +1133,8 @@ Slice::Container::createDictionary(const string& name, const TypePtr& keyType, c
|
|
|
1015
1133
|
}
|
|
1016
1134
|
}
|
|
1017
1135
|
|
|
1136
|
+
checkDeprecatedType(_unit, valueType);
|
|
1137
|
+
|
|
1018
1138
|
DictionaryPtr p = new Dictionary(this, name, keyType, keyMetaData, valueType, valueMetaData, local);
|
|
1019
1139
|
_contents.push_back(p);
|
|
1020
1140
|
return p;
|
|
@@ -1068,13 +1188,11 @@ EnumeratorPtr
|
|
|
1068
1188
|
Slice::Container::createEnumerator(const string& name)
|
|
1069
1189
|
{
|
|
1070
1190
|
EnumeratorPtr p = validateEnumerator(name);
|
|
1071
|
-
if(p)
|
|
1191
|
+
if(!p)
|
|
1072
1192
|
{
|
|
1073
|
-
|
|
1193
|
+
p = new Enumerator(this, name);
|
|
1194
|
+
_contents.push_back(p);
|
|
1074
1195
|
}
|
|
1075
|
-
|
|
1076
|
-
p = new Enumerator(this, name);
|
|
1077
|
-
_contents.push_back(p);
|
|
1078
1196
|
return p;
|
|
1079
1197
|
}
|
|
1080
1198
|
|
|
@@ -1082,13 +1200,11 @@ EnumeratorPtr
|
|
|
1082
1200
|
Slice::Container::createEnumerator(const string& name, int value)
|
|
1083
1201
|
{
|
|
1084
1202
|
EnumeratorPtr p = validateEnumerator(name);
|
|
1085
|
-
if(p)
|
|
1203
|
+
if(!p)
|
|
1086
1204
|
{
|
|
1087
|
-
|
|
1205
|
+
p = new Enumerator(this, name, value);
|
|
1206
|
+
_contents.push_back(p);
|
|
1088
1207
|
}
|
|
1089
|
-
|
|
1090
|
-
p = new Enumerator(this, name, value);
|
|
1091
|
-
_contents.push_back(p);
|
|
1092
1208
|
return p;
|
|
1093
1209
|
}
|
|
1094
1210
|
|
|
@@ -1133,15 +1249,17 @@ Slice::Container::createConst(const string name, const TypePtr& constType, const
|
|
|
1133
1249
|
checkForGlobalDef(name, "constant"); // Don't return here -- we create the constant anyway.
|
|
1134
1250
|
}
|
|
1135
1251
|
|
|
1252
|
+
SyntaxTreeBasePtr resolvedValueType = valueType;
|
|
1253
|
+
|
|
1136
1254
|
//
|
|
1137
|
-
// Validate the constant and its value
|
|
1255
|
+
// Validate the constant and its value; for enums, find enumerator
|
|
1138
1256
|
//
|
|
1139
|
-
if(nt == Real && !validateConstant(name, constType,
|
|
1257
|
+
if(nt == Real && !validateConstant(name, constType, resolvedValueType, value, true))
|
|
1140
1258
|
{
|
|
1141
1259
|
return 0;
|
|
1142
1260
|
}
|
|
1143
1261
|
|
|
1144
|
-
ConstPtr p = new Const(this, name, constType, metaData,
|
|
1262
|
+
ConstPtr p = new Const(this, name, constType, metaData, resolvedValueType, value, literal);
|
|
1145
1263
|
_contents.push_back(p);
|
|
1146
1264
|
return p;
|
|
1147
1265
|
}
|
|
@@ -1178,16 +1296,8 @@ Slice::Container::lookupType(const string& scoped, bool printError)
|
|
|
1178
1296
|
return lookupTypeNoBuiltin(scoped, printError);
|
|
1179
1297
|
}
|
|
1180
1298
|
|
|
1181
|
-
//
|
|
1182
|
-
// TODO: Hack to keep binary compatibility with Ice 3.6.0, fix properly in Ice 3.7
|
|
1183
|
-
//
|
|
1184
|
-
namespace
|
|
1185
|
-
{
|
|
1186
|
-
bool ignoreUndefined = false;
|
|
1187
|
-
}
|
|
1188
|
-
|
|
1189
1299
|
TypeList
|
|
1190
|
-
Slice::Container::lookupTypeNoBuiltin(const string& scoped, bool printError)
|
|
1300
|
+
Slice::Container::lookupTypeNoBuiltin(const string& scoped, bool printError, bool ignoreUndefined)
|
|
1191
1301
|
{
|
|
1192
1302
|
//
|
|
1193
1303
|
// Remove whitespace.
|
|
@@ -1304,12 +1414,7 @@ Slice::Container::lookupTypeNoBuiltin(const string& scoped, bool printError)
|
|
|
1304
1414
|
ContainedPtr contained = ContainedPtr::dynamicCast(this);
|
|
1305
1415
|
if(contained)
|
|
1306
1416
|
{
|
|
1307
|
-
|
|
1308
|
-
{
|
|
1309
|
-
ignoreUndefined = true;
|
|
1310
|
-
}
|
|
1311
|
-
results = contained->container()->lookupTypeNoBuiltin(sc, printError);
|
|
1312
|
-
ignoreUndefined = false;
|
|
1417
|
+
results = contained->container()->lookupTypeNoBuiltin(sc, printError, typeError || ignoreUndefined);
|
|
1313
1418
|
}
|
|
1314
1419
|
else if(!typeError)
|
|
1315
1420
|
{
|
|
@@ -1433,7 +1538,6 @@ Slice::Container::unit() const
|
|
|
1433
1538
|
return SyntaxTreeBase::unit();
|
|
1434
1539
|
}
|
|
1435
1540
|
|
|
1436
|
-
|
|
1437
1541
|
ModuleList
|
|
1438
1542
|
Slice::Container::modules() const
|
|
1439
1543
|
{
|
|
@@ -1539,6 +1643,86 @@ Slice::Container::enums() const
|
|
|
1539
1643
|
return result;
|
|
1540
1644
|
}
|
|
1541
1645
|
|
|
1646
|
+
EnumeratorList
|
|
1647
|
+
Slice::Container::enumerators() const
|
|
1648
|
+
{
|
|
1649
|
+
EnumeratorList result;
|
|
1650
|
+
for(ContainedList::const_iterator p = _contents.begin(); p != _contents.end(); ++p)
|
|
1651
|
+
{
|
|
1652
|
+
EnumeratorPtr q = EnumeratorPtr::dynamicCast(*p);
|
|
1653
|
+
if(q)
|
|
1654
|
+
{
|
|
1655
|
+
result.push_back(q);
|
|
1656
|
+
}
|
|
1657
|
+
}
|
|
1658
|
+
return result;
|
|
1659
|
+
}
|
|
1660
|
+
|
|
1661
|
+
//
|
|
1662
|
+
// Find enumerators using the old unscoped enumerators lookup
|
|
1663
|
+
//
|
|
1664
|
+
EnumeratorList
|
|
1665
|
+
Slice::Container::enumerators(const string& scoped) const
|
|
1666
|
+
{
|
|
1667
|
+
EnumeratorList result;
|
|
1668
|
+
string::size_type lastColon = scoped.rfind(':');
|
|
1669
|
+
|
|
1670
|
+
if(lastColon == string::npos)
|
|
1671
|
+
{
|
|
1672
|
+
// check all enclosing scopes
|
|
1673
|
+
ContainerPtr container = const_cast<Container*>(this);
|
|
1674
|
+
do
|
|
1675
|
+
{
|
|
1676
|
+
EnumList enums = container->enums();
|
|
1677
|
+
for(EnumList::iterator p = enums.begin(); p != enums.end(); ++p)
|
|
1678
|
+
{
|
|
1679
|
+
ContainedList cl = (*p)->lookupContained(scoped, false);
|
|
1680
|
+
if(!cl.empty())
|
|
1681
|
+
{
|
|
1682
|
+
result.push_back(EnumeratorPtr::dynamicCast(cl.front()));
|
|
1683
|
+
}
|
|
1684
|
+
}
|
|
1685
|
+
|
|
1686
|
+
ContainedPtr contained = ContainedPtr::dynamicCast(container);
|
|
1687
|
+
if(contained)
|
|
1688
|
+
{
|
|
1689
|
+
container = contained->container();
|
|
1690
|
+
}
|
|
1691
|
+
else
|
|
1692
|
+
{
|
|
1693
|
+
container = 0;
|
|
1694
|
+
}
|
|
1695
|
+
}
|
|
1696
|
+
while(result.empty() && container);
|
|
1697
|
+
}
|
|
1698
|
+
else
|
|
1699
|
+
{
|
|
1700
|
+
// Find the referenced scope
|
|
1701
|
+
ContainerPtr container = const_cast<Container*>(this);
|
|
1702
|
+
string scope = scoped.substr(0, scoped.rfind("::"));
|
|
1703
|
+
ContainedList cl = container->lookupContained(scope, false);
|
|
1704
|
+
if(!cl.empty())
|
|
1705
|
+
{
|
|
1706
|
+
container = ContainerPtr::dynamicCast(cl.front());
|
|
1707
|
+
if(container)
|
|
1708
|
+
{
|
|
1709
|
+
EnumList enums = container->enums();
|
|
1710
|
+
string name = scoped.substr(lastColon + 1);
|
|
1711
|
+
for(EnumList::iterator p = enums.begin(); p != enums.end(); ++p)
|
|
1712
|
+
{
|
|
1713
|
+
ContainedList cl = (*p)->lookupContained(name, false);
|
|
1714
|
+
if(!cl.empty())
|
|
1715
|
+
{
|
|
1716
|
+
result.push_back(EnumeratorPtr::dynamicCast(cl.front()));
|
|
1717
|
+
}
|
|
1718
|
+
}
|
|
1719
|
+
}
|
|
1720
|
+
}
|
|
1721
|
+
}
|
|
1722
|
+
|
|
1723
|
+
return result;
|
|
1724
|
+
}
|
|
1725
|
+
|
|
1542
1726
|
ConstList
|
|
1543
1727
|
Slice::Container::consts() const
|
|
1544
1728
|
{
|
|
@@ -1610,7 +1794,7 @@ Slice::Container::hasLocalClassDefsWithAsync() const
|
|
|
1610
1794
|
ClassDefPtr cl = ClassDefPtr::dynamicCast(*p);
|
|
1611
1795
|
if(cl && cl->isLocal())
|
|
1612
1796
|
{
|
|
1613
|
-
if(cl->hasMetaData("async"))
|
|
1797
|
+
if(cl->hasMetaData("async-oneway"))
|
|
1614
1798
|
{
|
|
1615
1799
|
return true;
|
|
1616
1800
|
}
|
|
@@ -1618,7 +1802,7 @@ Slice::Container::hasLocalClassDefsWithAsync() const
|
|
|
1618
1802
|
OperationList ol = cl->operations();
|
|
1619
1803
|
for(OperationList::const_iterator q = ol.begin(); q != ol.end(); ++q)
|
|
1620
1804
|
{
|
|
1621
|
-
if((*q)->hasMetaData("async"))
|
|
1805
|
+
if((*q)->hasMetaData("async-oneway"))
|
|
1622
1806
|
{
|
|
1623
1807
|
return true;
|
|
1624
1808
|
}
|
|
@@ -1677,7 +1861,47 @@ Slice::Container::hasNonLocalExceptions() const
|
|
|
1677
1861
|
return false;
|
|
1678
1862
|
}
|
|
1679
1863
|
|
|
1864
|
+
bool
|
|
1865
|
+
Slice::Container::hasStructs() const
|
|
1866
|
+
{
|
|
1867
|
+
for(ContainedList::const_iterator p = _contents.begin(); p != _contents.end(); ++p)
|
|
1868
|
+
{
|
|
1869
|
+
StructPtr q = StructPtr::dynamicCast(*p);
|
|
1870
|
+
if(q)
|
|
1871
|
+
{
|
|
1872
|
+
return true;
|
|
1873
|
+
}
|
|
1874
|
+
|
|
1875
|
+
ContainerPtr container = ContainerPtr::dynamicCast(*p);
|
|
1876
|
+
if(container && container->hasStructs())
|
|
1877
|
+
{
|
|
1878
|
+
return true;
|
|
1879
|
+
}
|
|
1880
|
+
}
|
|
1881
|
+
|
|
1882
|
+
return false;
|
|
1883
|
+
}
|
|
1884
|
+
|
|
1885
|
+
bool
|
|
1886
|
+
Slice::Container::hasExceptions() const
|
|
1887
|
+
{
|
|
1888
|
+
for(ContainedList::const_iterator p = _contents.begin(); p != _contents.end(); ++p)
|
|
1889
|
+
{
|
|
1890
|
+
ExceptionPtr q = ExceptionPtr::dynamicCast(*p);
|
|
1891
|
+
if(q)
|
|
1892
|
+
{
|
|
1893
|
+
return true;
|
|
1894
|
+
}
|
|
1895
|
+
|
|
1896
|
+
ContainerPtr container = ContainerPtr::dynamicCast(*p);
|
|
1897
|
+
if(container && container->hasExceptions())
|
|
1898
|
+
{
|
|
1899
|
+
return true;
|
|
1900
|
+
}
|
|
1901
|
+
}
|
|
1680
1902
|
|
|
1903
|
+
return false;
|
|
1904
|
+
}
|
|
1681
1905
|
|
|
1682
1906
|
bool
|
|
1683
1907
|
Slice::Container::hasClassDecls() const
|
|
@@ -1774,6 +1998,66 @@ Slice::Container::hasClassDefs() const
|
|
|
1774
1998
|
return false;
|
|
1775
1999
|
}
|
|
1776
2000
|
|
|
2001
|
+
bool
|
|
2002
|
+
Slice::Container::hasLocalClassDefs() const
|
|
2003
|
+
{
|
|
2004
|
+
for(ContainedList::const_iterator p = _contents.begin(); p != _contents.end(); ++p)
|
|
2005
|
+
{
|
|
2006
|
+
ClassDefPtr cl = ClassDefPtr::dynamicCast(*p);
|
|
2007
|
+
if(cl && cl->isLocal())
|
|
2008
|
+
{
|
|
2009
|
+
return true;
|
|
2010
|
+
}
|
|
2011
|
+
|
|
2012
|
+
ContainerPtr container = ContainerPtr::dynamicCast(*p);
|
|
2013
|
+
if(container && container->hasLocalClassDefs())
|
|
2014
|
+
{
|
|
2015
|
+
return true;
|
|
2016
|
+
}
|
|
2017
|
+
}
|
|
2018
|
+
return false;
|
|
2019
|
+
}
|
|
2020
|
+
|
|
2021
|
+
bool
|
|
2022
|
+
Slice::Container::hasNonLocalInterfaceDefs() const
|
|
2023
|
+
{
|
|
2024
|
+
for(ContainedList::const_iterator p = _contents.begin(); p != _contents.end(); ++p)
|
|
2025
|
+
{
|
|
2026
|
+
ClassDefPtr cl = ClassDefPtr::dynamicCast(*p);
|
|
2027
|
+
if(cl && !cl->isLocal() && (cl->isInterface() || !cl->allOperations().empty()))
|
|
2028
|
+
{
|
|
2029
|
+
return true;
|
|
2030
|
+
}
|
|
2031
|
+
|
|
2032
|
+
ContainerPtr container = ContainerPtr::dynamicCast(*p);
|
|
2033
|
+
if(container && container->hasNonLocalInterfaceDefs())
|
|
2034
|
+
{
|
|
2035
|
+
return true;
|
|
2036
|
+
}
|
|
2037
|
+
}
|
|
2038
|
+
return false;
|
|
2039
|
+
}
|
|
2040
|
+
|
|
2041
|
+
bool
|
|
2042
|
+
Slice::Container::hasValueDefs() const
|
|
2043
|
+
{
|
|
2044
|
+
for(ContainedList::const_iterator p = _contents.begin(); p != _contents.end(); ++p)
|
|
2045
|
+
{
|
|
2046
|
+
ClassDefPtr cl = ClassDefPtr::dynamicCast(*p);
|
|
2047
|
+
if(cl && !cl->isLocal() && !cl->isInterface())
|
|
2048
|
+
{
|
|
2049
|
+
return true;
|
|
2050
|
+
}
|
|
2051
|
+
|
|
2052
|
+
ContainerPtr container = ContainerPtr::dynamicCast(*p);
|
|
2053
|
+
if(container && container->hasValueDefs())
|
|
2054
|
+
{
|
|
2055
|
+
return true;
|
|
2056
|
+
}
|
|
2057
|
+
}
|
|
2058
|
+
return false;
|
|
2059
|
+
}
|
|
2060
|
+
|
|
1777
2061
|
bool
|
|
1778
2062
|
Slice::Container::hasOnlyClassDecls() const
|
|
1779
2063
|
{
|
|
@@ -2001,7 +2285,7 @@ Slice::Container::mergeModules()
|
|
|
2001
2285
|
metaData2.unique();
|
|
2002
2286
|
if(!checkGlobalMetaData(metaData1, metaData2))
|
|
2003
2287
|
{
|
|
2004
|
-
unit()->warning("global metadata mismatch for module `" + mod1->name() + "' in files " +
|
|
2288
|
+
unit()->warning(All, "global metadata mismatch for module `" + mod1->name() + "' in files " +
|
|
2005
2289
|
dc1->filename() + " and " + dc2->filename());
|
|
2006
2290
|
}
|
|
2007
2291
|
|
|
@@ -2310,23 +2594,34 @@ Slice::Container::checkIdentifier(const string& name) const
|
|
|
2310
2594
|
//
|
|
2311
2595
|
// For rules controlled by a translator option, we don't complain about included files.
|
|
2312
2596
|
//
|
|
2313
|
-
|
|
2597
|
+
|
|
2598
|
+
DefinitionContextPtr dc = _unit->currentDefinitionContext();
|
|
2599
|
+
assert(dc);
|
|
2600
|
+
if(dc->findMetaData("underscore") != "underscore") // no "underscore" global metadata
|
|
2601
|
+
{
|
|
2602
|
+
_unit->error("illegal underscore in identifier `" + name + "'");
|
|
2603
|
+
}
|
|
2314
2604
|
}
|
|
2315
2605
|
|
|
2606
|
+
//
|
|
2607
|
+
// For rules controlled by a translator option, we don't complain about included files.
|
|
2608
|
+
//
|
|
2316
2609
|
if(_unit->currentIncludeLevel() == 0 && !_unit->allowIcePrefix())
|
|
2317
2610
|
{
|
|
2318
|
-
|
|
2319
|
-
|
|
2320
|
-
//
|
|
2321
|
-
if(name.size() >= 3)
|
|
2611
|
+
DefinitionContextPtr dc = _unit->currentDefinitionContext();
|
|
2612
|
+
assert(dc);
|
|
2613
|
+
if(dc->findMetaData("ice-prefix") != "ice-prefix") // no "ice-prefix" global metadata
|
|
2322
2614
|
{
|
|
2323
|
-
|
|
2324
|
-
prefix3 += ::tolower(static_cast<unsigned char>(name[0]));
|
|
2325
|
-
prefix3 += ::tolower(static_cast<unsigned char>(name[1]));
|
|
2326
|
-
prefix3 += ::tolower(static_cast<unsigned char>(name[2]));
|
|
2327
|
-
if(prefix3 == "ice")
|
|
2615
|
+
if(name.size() >= 3)
|
|
2328
2616
|
{
|
|
2329
|
-
|
|
2617
|
+
string prefix3;
|
|
2618
|
+
prefix3 += ::tolower(static_cast<unsigned char>(name[0]));
|
|
2619
|
+
prefix3 += ::tolower(static_cast<unsigned char>(name[1]));
|
|
2620
|
+
prefix3 += ::tolower(static_cast<unsigned char>(name[2]));
|
|
2621
|
+
if(prefix3 == "ice")
|
|
2622
|
+
{
|
|
2623
|
+
_unit->error("illegal identifier `" + name + "': `" + name.substr(0, 3) + "' prefix is reserved");
|
|
2624
|
+
}
|
|
2330
2625
|
}
|
|
2331
2626
|
}
|
|
2332
2627
|
}
|
|
@@ -2429,7 +2724,7 @@ Slice::Container::checkGlobalMetaData(const StringList& m1, const StringList& m2
|
|
|
2429
2724
|
}
|
|
2430
2725
|
|
|
2431
2726
|
bool
|
|
2432
|
-
Slice::Container::validateConstant(const string& name, const TypePtr& type,
|
|
2727
|
+
Slice::Container::validateConstant(const string& name, const TypePtr& type, SyntaxTreeBasePtr& valueType,
|
|
2433
2728
|
const string& value, bool isConstant)
|
|
2434
2729
|
{
|
|
2435
2730
|
//
|
|
@@ -2575,6 +2870,7 @@ Slice::Container::validateConstant(const string& name, const TypePtr& type, cons
|
|
|
2575
2870
|
case Builtin::KindObject:
|
|
2576
2871
|
case Builtin::KindObjectProxy:
|
|
2577
2872
|
case Builtin::KindLocalObject:
|
|
2873
|
+
case Builtin::KindValue:
|
|
2578
2874
|
{
|
|
2579
2875
|
assert(false);
|
|
2580
2876
|
break;
|
|
@@ -2657,20 +2953,57 @@ Slice::Container::validateConstant(const string& name, const TypePtr& type, cons
|
|
|
2657
2953
|
}
|
|
2658
2954
|
else
|
|
2659
2955
|
{
|
|
2660
|
-
|
|
2661
|
-
|
|
2662
|
-
if(!lte)
|
|
2956
|
+
if(valueType)
|
|
2663
2957
|
{
|
|
2664
|
-
|
|
2665
|
-
|
|
2666
|
-
|
|
2958
|
+
EnumeratorPtr lte = EnumeratorPtr::dynamicCast(valueType);
|
|
2959
|
+
|
|
2960
|
+
if(!lte)
|
|
2961
|
+
{
|
|
2962
|
+
string msg = "type of initializer is incompatible with the type of " + desc + " `" + name + "'";
|
|
2963
|
+
_unit->error(msg);
|
|
2964
|
+
return false;
|
|
2965
|
+
}
|
|
2966
|
+
EnumeratorList elist = e->enumerators();
|
|
2967
|
+
if(find(elist.begin(), elist.end(), lte) == elist.end())
|
|
2968
|
+
{
|
|
2969
|
+
string msg = "enumerator `" + value + "' is not defined in enumeration `" + e->scoped() + "'";
|
|
2970
|
+
_unit->error(msg);
|
|
2971
|
+
return false;
|
|
2972
|
+
}
|
|
2667
2973
|
}
|
|
2668
|
-
|
|
2669
|
-
if(find(elist.begin(), elist.end(), lte) == elist.end())
|
|
2974
|
+
else
|
|
2670
2975
|
{
|
|
2671
|
-
|
|
2672
|
-
|
|
2673
|
-
|
|
2976
|
+
// Check if value designates an enumerator of e
|
|
2977
|
+
string newVal = value;
|
|
2978
|
+
string::size_type lastColon = value.rfind(':');
|
|
2979
|
+
if(lastColon != string::npos && lastColon + 1 < value.length())
|
|
2980
|
+
{
|
|
2981
|
+
newVal = value.substr(0, lastColon + 1) + e->name() + "::" + value.substr(lastColon + 1);
|
|
2982
|
+
}
|
|
2983
|
+
|
|
2984
|
+
ContainedList clist = e->lookupContained(newVal, false);
|
|
2985
|
+
if(clist.empty())
|
|
2986
|
+
{
|
|
2987
|
+
string msg = "`" + value + "' does not designate an enumerator of `" + e->scoped() + "'";
|
|
2988
|
+
_unit->error(msg);
|
|
2989
|
+
return false;
|
|
2990
|
+
}
|
|
2991
|
+
EnumeratorPtr lte = EnumeratorPtr::dynamicCast(clist.front());
|
|
2992
|
+
if(lte)
|
|
2993
|
+
{
|
|
2994
|
+
valueType = lte;
|
|
2995
|
+
if(lastColon != string::npos)
|
|
2996
|
+
{
|
|
2997
|
+
_unit->warning(Deprecated, string("referencing enumerator `") + lte->name() +
|
|
2998
|
+
"' in its enumeration's enclosing scope is deprecated");
|
|
2999
|
+
}
|
|
3000
|
+
}
|
|
3001
|
+
else
|
|
3002
|
+
{
|
|
3003
|
+
string msg = "type of initializer is incompatible with the type of " + desc + " `" + name + "'";
|
|
3004
|
+
_unit->error(msg);
|
|
3005
|
+
return false;
|
|
3006
|
+
}
|
|
2674
3007
|
}
|
|
2675
3008
|
}
|
|
2676
3009
|
}
|
|
@@ -2697,20 +3030,17 @@ Slice::Container::validateEnumerator(const string& name)
|
|
|
2697
3030
|
}
|
|
2698
3031
|
if(matches.front()->name() == name)
|
|
2699
3032
|
{
|
|
2700
|
-
string
|
|
2701
|
-
msg += "' as enumerator";
|
|
2702
|
-
_unit->error(msg);
|
|
3033
|
+
_unit->error(string("redefinition of enumerator `") + name + "'");
|
|
2703
3034
|
}
|
|
2704
3035
|
else
|
|
2705
3036
|
{
|
|
2706
3037
|
string msg = "enumerator `" + name + "' differs only in capitalization from ";
|
|
2707
|
-
msg +=
|
|
3038
|
+
msg += "`" + matches.front()->name() + "'";
|
|
2708
3039
|
_unit->error(msg);
|
|
2709
3040
|
}
|
|
2710
3041
|
}
|
|
2711
3042
|
|
|
2712
|
-
nameIsLegal(name, "enumerator"); //
|
|
2713
|
-
|
|
3043
|
+
nameIsLegal(name, "enumerator"); // Ignore return value.
|
|
2714
3044
|
return 0;
|
|
2715
3045
|
}
|
|
2716
3046
|
|
|
@@ -3186,6 +3516,12 @@ Slice::ClassDef::createOperation(const string& name,
|
|
|
3186
3516
|
_unit->error(msg);
|
|
3187
3517
|
}
|
|
3188
3518
|
|
|
3519
|
+
if(!isInterface() && !isLocal() && !_hasOperations)
|
|
3520
|
+
{
|
|
3521
|
+
// Only warn for the first operation
|
|
3522
|
+
_unit->warning(Deprecated, "classes with operations are deprecated");
|
|
3523
|
+
}
|
|
3524
|
+
|
|
3189
3525
|
_hasOperations = true;
|
|
3190
3526
|
OperationPtr op = new Operation(this, name, returnType, optional, tag, mode);
|
|
3191
3527
|
_contents.push_back(op);
|
|
@@ -3199,28 +3535,6 @@ Slice::ClassDef::createDataMember(const string& name, const TypePtr& type, bool
|
|
|
3199
3535
|
{
|
|
3200
3536
|
checkIdentifier(name);
|
|
3201
3537
|
|
|
3202
|
-
if(_unit->profile() == IceE)
|
|
3203
|
-
{
|
|
3204
|
-
if(!isLocal())
|
|
3205
|
-
{
|
|
3206
|
-
BuiltinPtr builtin = BuiltinPtr::dynamicCast(type);
|
|
3207
|
-
if((builtin && builtin->kind() == Builtin::KindObject))
|
|
3208
|
-
{
|
|
3209
|
-
string msg = "Class data member `" + name + "' cannot be a value object.";
|
|
3210
|
-
_unit->error(msg);
|
|
3211
|
-
return 0;
|
|
3212
|
-
}
|
|
3213
|
-
|
|
3214
|
-
ClassDeclPtr classDecl = ClassDeclPtr::dynamicCast(type);
|
|
3215
|
-
if(classDecl != 0 && !classDecl->isLocal())
|
|
3216
|
-
{
|
|
3217
|
-
string msg = "Class data member `" + name + "' cannot be a value object.";
|
|
3218
|
-
_unit->error(msg);
|
|
3219
|
-
return 0;
|
|
3220
|
-
}
|
|
3221
|
-
}
|
|
3222
|
-
}
|
|
3223
|
-
|
|
3224
3538
|
assert(!isInterface());
|
|
3225
3539
|
ContainedList matches = _unit->findContents(thisScope() + name);
|
|
3226
3540
|
if(!matches.empty())
|
|
@@ -3303,7 +3617,7 @@ Slice::ClassDef::createDataMember(const string& name, const TypePtr& type, bool
|
|
|
3303
3617
|
string dv = defaultValue;
|
|
3304
3618
|
string dl = defaultLiteral;
|
|
3305
3619
|
|
|
3306
|
-
if(dlt)
|
|
3620
|
+
if(dlt || (EnumPtr::dynamicCast(type) && !dv.empty()))
|
|
3307
3621
|
{
|
|
3308
3622
|
//
|
|
3309
3623
|
// Validate the default value.
|
|
@@ -3336,6 +3650,8 @@ Slice::ClassDef::createDataMember(const string& name, const TypePtr& type, bool
|
|
|
3336
3650
|
}
|
|
3337
3651
|
}
|
|
3338
3652
|
|
|
3653
|
+
checkDeprecatedType(_unit, type);
|
|
3654
|
+
|
|
3339
3655
|
_hasDataMembers = true;
|
|
3340
3656
|
DataMemberPtr member = new DataMember(this, name, type, optional, tag, dlt, dv, dl);
|
|
3341
3657
|
_contents.push_back(member);
|
|
@@ -3456,7 +3772,9 @@ Slice::ClassDef::classDataMembers() const
|
|
|
3456
3772
|
if(q)
|
|
3457
3773
|
{
|
|
3458
3774
|
BuiltinPtr builtin = BuiltinPtr::dynamicCast(q->type());
|
|
3459
|
-
if((builtin && builtin->kind() == Builtin::KindObject) ||
|
|
3775
|
+
if((builtin && builtin->kind() == Builtin::KindObject) ||
|
|
3776
|
+
(builtin && builtin->kind() == Builtin::KindValue) ||
|
|
3777
|
+
ClassDeclPtr::dynamicCast(q->type()))
|
|
3460
3778
|
{
|
|
3461
3779
|
result.push_back(q);
|
|
3462
3780
|
}
|
|
@@ -3603,6 +3921,17 @@ Slice::ClassDef::inheritsMetaData(const string& meta) const
|
|
|
3603
3921
|
return false;
|
|
3604
3922
|
}
|
|
3605
3923
|
|
|
3924
|
+
bool
|
|
3925
|
+
Slice::ClassDef::hasBaseDataMembers() const
|
|
3926
|
+
{
|
|
3927
|
+
if(!_bases.empty() && !_bases.front()->isInterface())
|
|
3928
|
+
{
|
|
3929
|
+
return !_bases.front()->allDataMembers().empty();
|
|
3930
|
+
}
|
|
3931
|
+
|
|
3932
|
+
return false;
|
|
3933
|
+
}
|
|
3934
|
+
|
|
3606
3935
|
Contained::ContainedType
|
|
3607
3936
|
Slice::ClassDef::containedType() const
|
|
3608
3937
|
{
|
|
@@ -3645,6 +3974,11 @@ Slice::ClassDef::compactId() const
|
|
|
3645
3974
|
return _compactId;
|
|
3646
3975
|
}
|
|
3647
3976
|
|
|
3977
|
+
bool
|
|
3978
|
+
Slice::ClassDef::isDelegate() const
|
|
3979
|
+
{
|
|
3980
|
+
return isLocal() && isInterface() && hasMetaData("delegate") && allOperations().size() == 1;
|
|
3981
|
+
}
|
|
3648
3982
|
Slice::ClassDef::ClassDef(const ContainerPtr& container, const string& name, int id, bool intf, const ClassList& bases,
|
|
3649
3983
|
bool local) :
|
|
3650
3984
|
SyntaxTreeBase(container->unit()),
|
|
@@ -3657,6 +3991,17 @@ Slice::ClassDef::ClassDef(const ContainerPtr& container, const string& name, int
|
|
|
3657
3991
|
_local(local),
|
|
3658
3992
|
_compactId(id)
|
|
3659
3993
|
{
|
|
3994
|
+
if(!local && !intf)
|
|
3995
|
+
{
|
|
3996
|
+
for(ClassList::const_iterator p = _bases.begin(); p != _bases.end(); ++p)
|
|
3997
|
+
{
|
|
3998
|
+
if((*p)->isInterface())
|
|
3999
|
+
{
|
|
4000
|
+
_unit->warning(Deprecated, "classes implementing interfaces are deprecated");
|
|
4001
|
+
break;
|
|
4002
|
+
}
|
|
4003
|
+
}
|
|
4004
|
+
}
|
|
3660
4005
|
//
|
|
3661
4006
|
// First element of bases may be a class, all others must be
|
|
3662
4007
|
// interfaces.
|
|
@@ -3681,13 +4026,13 @@ Slice::ClassDef::ClassDef(const ContainerPtr& container, const string& name, int
|
|
|
3681
4026
|
bool
|
|
3682
4027
|
Slice::Proxy::isLocal() const
|
|
3683
4028
|
{
|
|
3684
|
-
return
|
|
4029
|
+
return _classDecl->isLocal();
|
|
3685
4030
|
}
|
|
3686
4031
|
|
|
3687
4032
|
string
|
|
3688
4033
|
Slice::Proxy::typeId() const
|
|
3689
4034
|
{
|
|
3690
|
-
return
|
|
4035
|
+
return _classDecl->scoped();
|
|
3691
4036
|
}
|
|
3692
4037
|
|
|
3693
4038
|
bool
|
|
@@ -3711,13 +4056,13 @@ Slice::Proxy::isVariableLength() const
|
|
|
3711
4056
|
ClassDeclPtr
|
|
3712
4057
|
Slice::Proxy::_class() const
|
|
3713
4058
|
{
|
|
3714
|
-
return
|
|
4059
|
+
return _classDecl;
|
|
3715
4060
|
}
|
|
3716
4061
|
|
|
3717
4062
|
Slice::Proxy::Proxy(const ClassDeclPtr& cl) :
|
|
3718
4063
|
SyntaxTreeBase(cl->unit()),
|
|
3719
4064
|
Type(cl->unit()),
|
|
3720
|
-
|
|
4065
|
+
_classDecl(cl)
|
|
3721
4066
|
{
|
|
3722
4067
|
}
|
|
3723
4068
|
|
|
@@ -3739,28 +4084,6 @@ Slice::Exception::createDataMember(const string& name, const TypePtr& type, bool
|
|
|
3739
4084
|
{
|
|
3740
4085
|
checkIdentifier(name);
|
|
3741
4086
|
|
|
3742
|
-
if(_unit->profile() == IceE)
|
|
3743
|
-
{
|
|
3744
|
-
if(!isLocal())
|
|
3745
|
-
{
|
|
3746
|
-
BuiltinPtr builtin = BuiltinPtr::dynamicCast(type);
|
|
3747
|
-
if((builtin && builtin->kind() == Builtin::KindObject))
|
|
3748
|
-
{
|
|
3749
|
-
string msg = "Exception data member `" + name + "' cannot be a value object.";
|
|
3750
|
-
_unit->error(msg);
|
|
3751
|
-
return 0;
|
|
3752
|
-
}
|
|
3753
|
-
|
|
3754
|
-
ClassDeclPtr classDecl = ClassDeclPtr::dynamicCast(type);
|
|
3755
|
-
if(classDecl != 0 && !classDecl->isLocal())
|
|
3756
|
-
{
|
|
3757
|
-
string msg = "Exception data member `" + name + "' cannot be a value object.";
|
|
3758
|
-
_unit->error(msg);
|
|
3759
|
-
return 0;
|
|
3760
|
-
}
|
|
3761
|
-
}
|
|
3762
|
-
}
|
|
3763
|
-
|
|
3764
4087
|
ContainedList matches = _unit->findContents(thisScope() + name);
|
|
3765
4088
|
if(!matches.empty())
|
|
3766
4089
|
{
|
|
@@ -3830,7 +4153,7 @@ Slice::Exception::createDataMember(const string& name, const TypePtr& type, bool
|
|
|
3830
4153
|
string dv = defaultValue;
|
|
3831
4154
|
string dl = defaultLiteral;
|
|
3832
4155
|
|
|
3833
|
-
if(dlt)
|
|
4156
|
+
if(dlt || (EnumPtr::dynamicCast(type) && !dv.empty()))
|
|
3834
4157
|
{
|
|
3835
4158
|
//
|
|
3836
4159
|
// Validate the default value.
|
|
@@ -3863,6 +4186,8 @@ Slice::Exception::createDataMember(const string& name, const TypePtr& type, bool
|
|
|
3863
4186
|
}
|
|
3864
4187
|
}
|
|
3865
4188
|
|
|
4189
|
+
checkDeprecatedType(_unit, type);
|
|
4190
|
+
|
|
3866
4191
|
DataMemberPtr p = new DataMember(this, name, type, optional, tag, dlt, dv, dl);
|
|
3867
4192
|
_contents.push_back(p);
|
|
3868
4193
|
return p;
|
|
@@ -3925,7 +4250,9 @@ Slice::Exception::classDataMembers() const
|
|
|
3925
4250
|
if(q)
|
|
3926
4251
|
{
|
|
3927
4252
|
BuiltinPtr builtin = BuiltinPtr::dynamicCast(q->type());
|
|
3928
|
-
if((builtin && builtin->kind() == Builtin::KindObject) ||
|
|
4253
|
+
if((builtin && builtin->kind() == Builtin::KindObject) ||
|
|
4254
|
+
(builtin && builtin->kind() == Builtin::KindValue) ||
|
|
4255
|
+
ClassDeclPtr::dynamicCast(q->type()))
|
|
3929
4256
|
{
|
|
3930
4257
|
result.push_back(q);
|
|
3931
4258
|
}
|
|
@@ -4059,6 +4386,12 @@ Slice::Exception::inheritsMetaData(const string& meta) const
|
|
|
4059
4386
|
return false;
|
|
4060
4387
|
}
|
|
4061
4388
|
|
|
4389
|
+
bool
|
|
4390
|
+
Slice::Exception::hasBaseDataMembers() const
|
|
4391
|
+
{
|
|
4392
|
+
return _base && !_base->allDataMembers().empty();
|
|
4393
|
+
}
|
|
4394
|
+
|
|
4062
4395
|
string
|
|
4063
4396
|
Slice::Exception::kindOf() const
|
|
4064
4397
|
{
|
|
@@ -4093,29 +4426,6 @@ Slice::Struct::createDataMember(const string& name, const TypePtr& type, bool op
|
|
|
4093
4426
|
const SyntaxTreeBasePtr& defaultValueType, const string& defaultValue,
|
|
4094
4427
|
const string& defaultLiteral)
|
|
4095
4428
|
{
|
|
4096
|
-
checkIdentifier(name);
|
|
4097
|
-
|
|
4098
|
-
if(_unit->profile() == IceE)
|
|
4099
|
-
{
|
|
4100
|
-
if(!isLocal())
|
|
4101
|
-
{
|
|
4102
|
-
BuiltinPtr builtin = BuiltinPtr::dynamicCast(type);
|
|
4103
|
-
if((builtin && builtin->kind() == Builtin::KindObject))
|
|
4104
|
-
{
|
|
4105
|
-
string msg = "Struct data member `" + name + "' cannot be a value object.";
|
|
4106
|
-
_unit->error(msg);
|
|
4107
|
-
return 0;
|
|
4108
|
-
}
|
|
4109
|
-
ClassDeclPtr classDecl = ClassDeclPtr::dynamicCast(type);
|
|
4110
|
-
if(classDecl != 0 && !classDecl->isLocal())
|
|
4111
|
-
{
|
|
4112
|
-
string msg = "Struct data member `" + name + "' cannot be a value object.";
|
|
4113
|
-
_unit->error(msg);
|
|
4114
|
-
return 0;
|
|
4115
|
-
}
|
|
4116
|
-
}
|
|
4117
|
-
}
|
|
4118
|
-
|
|
4119
4429
|
ContainedList matches = _unit->findContents(thisScope() + name);
|
|
4120
4430
|
if(!matches.empty())
|
|
4121
4431
|
{
|
|
@@ -4167,7 +4477,7 @@ Slice::Struct::createDataMember(const string& name, const TypePtr& type, bool op
|
|
|
4167
4477
|
string dv = defaultValue;
|
|
4168
4478
|
string dl = defaultLiteral;
|
|
4169
4479
|
|
|
4170
|
-
if(dlt)
|
|
4480
|
+
if(dlt || (EnumPtr::dynamicCast(type) && !dv.empty()))
|
|
4171
4481
|
{
|
|
4172
4482
|
//
|
|
4173
4483
|
// Validate the default value.
|
|
@@ -4200,6 +4510,8 @@ Slice::Struct::createDataMember(const string& name, const TypePtr& type, bool op
|
|
|
4200
4510
|
}
|
|
4201
4511
|
}
|
|
4202
4512
|
|
|
4513
|
+
checkDeprecatedType(_unit, type);
|
|
4514
|
+
|
|
4203
4515
|
DataMemberPtr p = new DataMember(this, name, type, optional, tag, dlt, dv, dl);
|
|
4204
4516
|
_contents.push_back(p);
|
|
4205
4517
|
return p;
|
|
@@ -4230,7 +4542,9 @@ Slice::Struct::classDataMembers() const
|
|
|
4230
4542
|
if(q)
|
|
4231
4543
|
{
|
|
4232
4544
|
BuiltinPtr builtin = BuiltinPtr::dynamicCast(q->type());
|
|
4233
|
-
if((builtin && builtin->kind() == Builtin::KindObject) ||
|
|
4545
|
+
if((builtin && builtin->kind() == Builtin::KindObject) ||
|
|
4546
|
+
(builtin && builtin->kind() == Builtin::KindValue) ||
|
|
4547
|
+
ClassDeclPtr::dynamicCast(q->type()))
|
|
4234
4548
|
{
|
|
4235
4549
|
result.push_back(q);
|
|
4236
4550
|
}
|
|
@@ -4569,6 +4883,7 @@ Slice::Dictionary::legalKeyType(const TypePtr& type, bool& containsSequence)
|
|
|
4569
4883
|
case Builtin::KindObject:
|
|
4570
4884
|
case Builtin::KindObjectProxy:
|
|
4571
4885
|
case Builtin::KindLocalObject:
|
|
4886
|
+
case Builtin::KindValue:
|
|
4572
4887
|
{
|
|
4573
4888
|
return false;
|
|
4574
4889
|
break;
|
|
@@ -4630,71 +4945,9 @@ Slice::Dictionary::Dictionary(const ContainerPtr& container, const string& name,
|
|
|
4630
4945
|
void
|
|
4631
4946
|
Slice::Enum::destroy()
|
|
4632
4947
|
{
|
|
4633
|
-
_enumerators.clear();
|
|
4634
4948
|
SyntaxTreeBase::destroy();
|
|
4635
4949
|
}
|
|
4636
4950
|
|
|
4637
|
-
EnumeratorList
|
|
4638
|
-
Slice::Enum::getEnumerators()
|
|
4639
|
-
{
|
|
4640
|
-
return _enumerators;
|
|
4641
|
-
}
|
|
4642
|
-
|
|
4643
|
-
void
|
|
4644
|
-
Slice::Enum::setEnumerators(const EnumeratorList& ens)
|
|
4645
|
-
{
|
|
4646
|
-
_enumerators = ens;
|
|
4647
|
-
int lastValue = -1;
|
|
4648
|
-
set<int> values;
|
|
4649
|
-
for(EnumeratorList::iterator p = _enumerators.begin(); p != _enumerators.end(); ++p)
|
|
4650
|
-
{
|
|
4651
|
-
(*p)->_type = this;
|
|
4652
|
-
|
|
4653
|
-
if((*p)->_explicitValue)
|
|
4654
|
-
{
|
|
4655
|
-
_explicitValue = true;
|
|
4656
|
-
|
|
4657
|
-
if((*p)->_value < 0)
|
|
4658
|
-
{
|
|
4659
|
-
string msg = "value for enumerator `" + (*p)->name() + "' is out of range";
|
|
4660
|
-
_unit->error(msg);
|
|
4661
|
-
}
|
|
4662
|
-
}
|
|
4663
|
-
else
|
|
4664
|
-
{
|
|
4665
|
-
if(lastValue == Int32Max)
|
|
4666
|
-
{
|
|
4667
|
-
string msg = "value for enumerator `" + (*p)->name() + "' is out of range";
|
|
4668
|
-
_unit->error(msg);
|
|
4669
|
-
}
|
|
4670
|
-
|
|
4671
|
-
//
|
|
4672
|
-
// If the enumerator was not assigned an explicit value, we automatically assign
|
|
4673
|
-
// it one more than the previous enumerator.
|
|
4674
|
-
//
|
|
4675
|
-
(*p)->_value = lastValue + 1;
|
|
4676
|
-
}
|
|
4677
|
-
|
|
4678
|
-
if(values.count((*p)->_value) != 0)
|
|
4679
|
-
{
|
|
4680
|
-
string msg = "enumerator `" + (*p)->name() + "' has a duplicate value";
|
|
4681
|
-
_unit->error(msg);
|
|
4682
|
-
}
|
|
4683
|
-
values.insert((*p)->_value);
|
|
4684
|
-
|
|
4685
|
-
lastValue = (*p)->_value;
|
|
4686
|
-
|
|
4687
|
-
if(lastValue > _maxValue)
|
|
4688
|
-
{
|
|
4689
|
-
_maxValue = lastValue;
|
|
4690
|
-
}
|
|
4691
|
-
if(lastValue < _minValue)
|
|
4692
|
-
{
|
|
4693
|
-
_minValue = lastValue;
|
|
4694
|
-
}
|
|
4695
|
-
}
|
|
4696
|
-
}
|
|
4697
|
-
|
|
4698
4951
|
bool
|
|
4699
4952
|
Slice::Enum::explicitValue() const
|
|
4700
4953
|
{
|
|
@@ -4763,15 +5016,77 @@ Slice::Enum::recDependencies(set<ConstructedPtr>&)
|
|
|
4763
5016
|
|
|
4764
5017
|
Slice::Enum::Enum(const ContainerPtr& container, const string& name, bool local) :
|
|
4765
5018
|
SyntaxTreeBase(container->unit()),
|
|
5019
|
+
Container(container->unit()),
|
|
4766
5020
|
Type(container->unit()),
|
|
4767
5021
|
Contained(container, name),
|
|
4768
5022
|
Constructed(container, name, local),
|
|
4769
5023
|
_explicitValue(false),
|
|
4770
5024
|
_minValue(Int32Max),
|
|
4771
|
-
_maxValue(0)
|
|
5025
|
+
_maxValue(0),
|
|
5026
|
+
_lastValue(-1)
|
|
4772
5027
|
{
|
|
4773
5028
|
}
|
|
4774
5029
|
|
|
5030
|
+
int
|
|
5031
|
+
Slice::Enum::newEnumerator(const EnumeratorPtr& p)
|
|
5032
|
+
{
|
|
5033
|
+
if(p->explicitValue())
|
|
5034
|
+
{
|
|
5035
|
+
_explicitValue = true;
|
|
5036
|
+
_lastValue = p->value();
|
|
5037
|
+
|
|
5038
|
+
if(_lastValue < 0)
|
|
5039
|
+
{
|
|
5040
|
+
string msg = "value for enumerator `" + p->name() + "' is out of range";
|
|
5041
|
+
_unit->error(msg);
|
|
5042
|
+
}
|
|
5043
|
+
}
|
|
5044
|
+
else
|
|
5045
|
+
{
|
|
5046
|
+
if(_lastValue == Int32Max)
|
|
5047
|
+
{
|
|
5048
|
+
string msg = "value for enumerator `" + p->name() + "' is out of range";
|
|
5049
|
+
_unit->error(msg);
|
|
5050
|
+
}
|
|
5051
|
+
else
|
|
5052
|
+
{
|
|
5053
|
+
//
|
|
5054
|
+
// If the enumerator was not assigned an explicit value, we automatically assign
|
|
5055
|
+
// it one more than the previous enumerator.
|
|
5056
|
+
//
|
|
5057
|
+
++_lastValue;
|
|
5058
|
+
}
|
|
5059
|
+
}
|
|
5060
|
+
|
|
5061
|
+
bool checkForDuplicates = true;
|
|
5062
|
+
if(_lastValue > _maxValue)
|
|
5063
|
+
{
|
|
5064
|
+
_maxValue = _lastValue;
|
|
5065
|
+
checkForDuplicates = false;
|
|
5066
|
+
}
|
|
5067
|
+
if(_lastValue < _minValue)
|
|
5068
|
+
{
|
|
5069
|
+
_minValue = _lastValue;
|
|
5070
|
+
checkForDuplicates = false;
|
|
5071
|
+
}
|
|
5072
|
+
|
|
5073
|
+
if(checkForDuplicates)
|
|
5074
|
+
{
|
|
5075
|
+
EnumeratorList enl = enumerators();
|
|
5076
|
+
for(EnumeratorList::iterator q = enl.begin(); q != enl.end(); ++q)
|
|
5077
|
+
{
|
|
5078
|
+
EnumeratorPtr& r = *q;
|
|
5079
|
+
if(r != p && r->value() == _lastValue)
|
|
5080
|
+
{
|
|
5081
|
+
_unit->error(string("enumerator `") + p->name() + "' has the same value as enumerator `" +
|
|
5082
|
+
r->name() + "'");
|
|
5083
|
+
}
|
|
5084
|
+
}
|
|
5085
|
+
}
|
|
5086
|
+
|
|
5087
|
+
return _lastValue;
|
|
5088
|
+
}
|
|
5089
|
+
|
|
4775
5090
|
// ----------------------------------------------------------------------
|
|
4776
5091
|
// Enumerator
|
|
4777
5092
|
// ----------------------------------------------------------------------
|
|
@@ -4779,7 +5094,7 @@ Slice::Enum::Enum(const ContainerPtr& container, const string& name, bool local)
|
|
|
4779
5094
|
EnumPtr
|
|
4780
5095
|
Slice::Enumerator::type() const
|
|
4781
5096
|
{
|
|
4782
|
-
return
|
|
5097
|
+
return EnumPtr::dynamicCast(container());
|
|
4783
5098
|
}
|
|
4784
5099
|
|
|
4785
5100
|
Contained::ContainedType
|
|
@@ -4818,6 +5133,7 @@ Slice::Enumerator::Enumerator(const ContainerPtr& container, const string& name)
|
|
|
4818
5133
|
_explicitValue(false),
|
|
4819
5134
|
_value(-1)
|
|
4820
5135
|
{
|
|
5136
|
+
_value = EnumPtr::dynamicCast(container)->newEnumerator(this);
|
|
4821
5137
|
}
|
|
4822
5138
|
|
|
4823
5139
|
Slice::Enumerator::Enumerator(const ContainerPtr& container, const string& name, int value) :
|
|
@@ -4826,6 +5142,7 @@ Slice::Enumerator::Enumerator(const ContainerPtr& container, const string& name,
|
|
|
4826
5142
|
_explicitValue(true),
|
|
4827
5143
|
_value(value)
|
|
4828
5144
|
{
|
|
5145
|
+
EnumPtr::dynamicCast(container)->newEnumerator(this);
|
|
4829
5146
|
}
|
|
4830
5147
|
|
|
4831
5148
|
// ----------------------------------------------------------------------
|
|
@@ -4898,6 +5215,11 @@ Slice::Const::Const(const ContainerPtr& container, const string& name, const Typ
|
|
|
4898
5215
|
_value(value),
|
|
4899
5216
|
_literal(literal)
|
|
4900
5217
|
{
|
|
5218
|
+
if(valueType == 0)
|
|
5219
|
+
{
|
|
5220
|
+
cerr << "const " << name << " created with null valueType" << endl;
|
|
5221
|
+
}
|
|
5222
|
+
|
|
4901
5223
|
}
|
|
4902
5224
|
|
|
4903
5225
|
// ----------------------------------------------------------------------
|
|
@@ -4941,33 +5263,33 @@ Slice::Operation::sendMode() const
|
|
|
4941
5263
|
}
|
|
4942
5264
|
}
|
|
4943
5265
|
|
|
4944
|
-
|
|
4945
|
-
Slice::Operation::
|
|
5266
|
+
bool
|
|
5267
|
+
Slice::Operation::hasMarshaledResult() const
|
|
4946
5268
|
{
|
|
4947
|
-
|
|
4948
|
-
|
|
4949
|
-
if(
|
|
5269
|
+
ClassDefPtr cl = ClassDefPtr::dynamicCast(container());
|
|
5270
|
+
assert(cl);
|
|
5271
|
+
if(cl->hasMetaData("marshaled-result") || hasMetaData("marshaled-result"))
|
|
4950
5272
|
{
|
|
4951
|
-
|
|
4952
|
-
assert(cl);
|
|
4953
|
-
if(!cl->isLocal())
|
|
5273
|
+
if(returnType() && isMutableAfterReturnType(returnType()))
|
|
4954
5274
|
{
|
|
4955
|
-
|
|
4956
|
-
|
|
4957
|
-
|
|
4958
|
-
|
|
4959
|
-
|
|
4960
|
-
|
|
4961
|
-
}
|
|
4962
|
-
ClassDeclPtr classDecl = ClassDeclPtr::dynamicCast(type);
|
|
4963
|
-
if(classDecl != 0 && !classDecl->isLocal())
|
|
5275
|
+
return true;
|
|
5276
|
+
}
|
|
5277
|
+
for(ContainedList::const_iterator p = _contents.begin(); p != _contents.end(); ++p)
|
|
5278
|
+
{
|
|
5279
|
+
ParamDeclPtr q = ParamDeclPtr::dynamicCast(*p);
|
|
5280
|
+
if(q->isOutParam() && isMutableAfterReturnType(q->type()))
|
|
4964
5281
|
{
|
|
4965
|
-
|
|
4966
|
-
_unit->error(msg);
|
|
4967
|
-
return 0;
|
|
5282
|
+
return true;
|
|
4968
5283
|
}
|
|
4969
5284
|
}
|
|
4970
5285
|
}
|
|
5286
|
+
return false;
|
|
5287
|
+
}
|
|
5288
|
+
|
|
5289
|
+
ParamDeclPtr
|
|
5290
|
+
Slice::Operation::createParamDecl(const string& name, const TypePtr& type, bool isOutParam, bool optional, int tag)
|
|
5291
|
+
{
|
|
5292
|
+
checkIdentifier(name);
|
|
4971
5293
|
|
|
4972
5294
|
ContainedList matches = _unit->findContents(thisScope() + name);
|
|
4973
5295
|
if(!matches.empty())
|
|
@@ -5023,6 +5345,11 @@ Slice::Operation::createParamDecl(const string& name, const TypePtr& type, bool
|
|
|
5023
5345
|
_unit->error(msg);
|
|
5024
5346
|
}
|
|
5025
5347
|
|
|
5348
|
+
//
|
|
5349
|
+
// Issue a warning for a deprecated parameter type.
|
|
5350
|
+
//
|
|
5351
|
+
checkDeprecatedType(_unit, type);
|
|
5352
|
+
|
|
5026
5353
|
if(optional)
|
|
5027
5354
|
{
|
|
5028
5355
|
//
|
|
@@ -5067,6 +5394,74 @@ Slice::Operation::parameters() const
|
|
|
5067
5394
|
return result;
|
|
5068
5395
|
}
|
|
5069
5396
|
|
|
5397
|
+
ParamDeclList
|
|
5398
|
+
Slice::Operation::inParameters() const
|
|
5399
|
+
{
|
|
5400
|
+
ParamDeclList result;
|
|
5401
|
+
for(ContainedList::const_iterator p = _contents.begin(); p != _contents.end(); ++p)
|
|
5402
|
+
{
|
|
5403
|
+
ParamDeclPtr q = ParamDeclPtr::dynamicCast(*p);
|
|
5404
|
+
if(q && !q->isOutParam())
|
|
5405
|
+
{
|
|
5406
|
+
result.push_back(q);
|
|
5407
|
+
}
|
|
5408
|
+
}
|
|
5409
|
+
return result;
|
|
5410
|
+
}
|
|
5411
|
+
|
|
5412
|
+
void
|
|
5413
|
+
Slice::Operation::inParameters(ParamDeclList& required, ParamDeclList& optional) const
|
|
5414
|
+
{
|
|
5415
|
+
const ParamDeclList params = inParameters();
|
|
5416
|
+
for(ParamDeclList::const_iterator pli = params.begin(); pli != params.end(); ++pli)
|
|
5417
|
+
{
|
|
5418
|
+
if((*pli)->optional())
|
|
5419
|
+
{
|
|
5420
|
+
optional.push_back(*pli);
|
|
5421
|
+
}
|
|
5422
|
+
else
|
|
5423
|
+
{
|
|
5424
|
+
required.push_back(*pli);
|
|
5425
|
+
}
|
|
5426
|
+
}
|
|
5427
|
+
|
|
5428
|
+
sortOptionalParameters(optional);
|
|
5429
|
+
}
|
|
5430
|
+
|
|
5431
|
+
ParamDeclList
|
|
5432
|
+
Slice::Operation::outParameters() const
|
|
5433
|
+
{
|
|
5434
|
+
ParamDeclList result;
|
|
5435
|
+
for(ContainedList::const_iterator p = _contents.begin(); p != _contents.end(); ++p)
|
|
5436
|
+
{
|
|
5437
|
+
ParamDeclPtr q = ParamDeclPtr::dynamicCast(*p);
|
|
5438
|
+
if(q && q->isOutParam())
|
|
5439
|
+
{
|
|
5440
|
+
result.push_back(q);
|
|
5441
|
+
}
|
|
5442
|
+
}
|
|
5443
|
+
return result;
|
|
5444
|
+
}
|
|
5445
|
+
|
|
5446
|
+
void
|
|
5447
|
+
Slice::Operation::outParameters(ParamDeclList& required, ParamDeclList& optional) const
|
|
5448
|
+
{
|
|
5449
|
+
const ParamDeclList params = outParameters();
|
|
5450
|
+
for(ParamDeclList::const_iterator pli = params.begin(); pli != params.end(); ++pli)
|
|
5451
|
+
{
|
|
5452
|
+
if((*pli)->optional())
|
|
5453
|
+
{
|
|
5454
|
+
optional.push_back(*pli);
|
|
5455
|
+
}
|
|
5456
|
+
else
|
|
5457
|
+
{
|
|
5458
|
+
required.push_back(*pli);
|
|
5459
|
+
}
|
|
5460
|
+
}
|
|
5461
|
+
|
|
5462
|
+
sortOptionalParameters(optional);
|
|
5463
|
+
}
|
|
5464
|
+
|
|
5070
5465
|
ExceptionList
|
|
5071
5466
|
Slice::Operation::throws() const
|
|
5072
5467
|
{
|
|
@@ -5218,13 +5613,26 @@ Slice::Operation::returnsData() const
|
|
|
5218
5613
|
return false;
|
|
5219
5614
|
}
|
|
5220
5615
|
|
|
5616
|
+
bool
|
|
5617
|
+
Slice::Operation::returnsMultipleValues() const
|
|
5618
|
+
{
|
|
5619
|
+
size_t count = outParameters().size();
|
|
5620
|
+
|
|
5621
|
+
if(returnType())
|
|
5622
|
+
{
|
|
5623
|
+
++count;
|
|
5624
|
+
}
|
|
5625
|
+
|
|
5626
|
+
return count > 1;
|
|
5627
|
+
}
|
|
5628
|
+
|
|
5221
5629
|
bool
|
|
5222
5630
|
Slice::Operation::sendsOptionals() const
|
|
5223
5631
|
{
|
|
5224
|
-
ParamDeclList pdl =
|
|
5632
|
+
ParamDeclList pdl = inParameters();
|
|
5225
5633
|
for(ParamDeclList::const_iterator i = pdl.begin(); i != pdl.end(); ++i)
|
|
5226
5634
|
{
|
|
5227
|
-
if(
|
|
5635
|
+
if((*i)->optional())
|
|
5228
5636
|
{
|
|
5229
5637
|
return true;
|
|
5230
5638
|
}
|
|
@@ -5263,7 +5671,7 @@ Slice::Operation::attributes() const
|
|
|
5263
5671
|
}
|
|
5264
5672
|
if(i == 2)
|
|
5265
5673
|
{
|
|
5266
|
-
|
|
5674
|
+
_unit->warning(InvalidMetaData, "invalid freeze metadata for operation");
|
|
5267
5675
|
}
|
|
5268
5676
|
else
|
|
5269
5677
|
{
|
|
@@ -5284,7 +5692,7 @@ Slice::Operation::attributes() const
|
|
|
5284
5692
|
{
|
|
5285
5693
|
if(result != 0 && (i == int(Supports) || i == int(Never)))
|
|
5286
5694
|
{
|
|
5287
|
-
|
|
5695
|
+
_unit->warning(InvalidMetaData, "invalid freeze metadata for operation");
|
|
5288
5696
|
}
|
|
5289
5697
|
else
|
|
5290
5698
|
{
|
|
@@ -5298,7 +5706,7 @@ Slice::Operation::attributes() const
|
|
|
5298
5706
|
|
|
5299
5707
|
if(i == 4)
|
|
5300
5708
|
{
|
|
5301
|
-
|
|
5709
|
+
_unit->warning(InvalidMetaData, "invalid freeze metadata for operation");
|
|
5302
5710
|
|
|
5303
5711
|
//
|
|
5304
5712
|
// Set default
|
|
@@ -5356,25 +5764,9 @@ Slice::Operation::Operation(const ContainerPtr& container,
|
|
|
5356
5764
|
_returnTag(returnTag),
|
|
5357
5765
|
_mode(mode)
|
|
5358
5766
|
{
|
|
5359
|
-
if(
|
|
5767
|
+
if(returnType)
|
|
5360
5768
|
{
|
|
5361
|
-
|
|
5362
|
-
assert(cl);
|
|
5363
|
-
if(!cl->isLocal())
|
|
5364
|
-
{
|
|
5365
|
-
BuiltinPtr builtin = BuiltinPtr::dynamicCast(returnType);
|
|
5366
|
-
if((builtin && builtin->kind() == Builtin::KindObject))
|
|
5367
|
-
{
|
|
5368
|
-
string msg = "Method `" + name + "' cannot return an object by value.";
|
|
5369
|
-
_unit->error(msg);
|
|
5370
|
-
}
|
|
5371
|
-
ClassDeclPtr classDecl = ClassDeclPtr::dynamicCast(returnType);
|
|
5372
|
-
if(classDecl != 0 && !classDecl->isLocal())
|
|
5373
|
-
{
|
|
5374
|
-
string msg = "Method `" + name + "' cannot return an object by value.";
|
|
5375
|
-
_unit->error(msg);
|
|
5376
|
-
}
|
|
5377
|
-
}
|
|
5769
|
+
checkDeprecatedType(_unit, returnType);
|
|
5378
5770
|
}
|
|
5379
5771
|
}
|
|
5380
5772
|
|
|
@@ -5800,13 +6192,6 @@ Slice::Unit::setSeenDefinition()
|
|
|
5800
6192
|
dc->setSeenDefinition();
|
|
5801
6193
|
}
|
|
5802
6194
|
|
|
5803
|
-
void
|
|
5804
|
-
Slice::Unit::error(const char* s)
|
|
5805
|
-
{
|
|
5806
|
-
emitError(currentFile(), _currentLine, s);
|
|
5807
|
-
_errors++;
|
|
5808
|
-
}
|
|
5809
|
-
|
|
5810
6195
|
void
|
|
5811
6196
|
Slice::Unit::error(const string& s)
|
|
5812
6197
|
{
|
|
@@ -5815,15 +6200,16 @@ Slice::Unit::error(const string& s)
|
|
|
5815
6200
|
}
|
|
5816
6201
|
|
|
5817
6202
|
void
|
|
5818
|
-
Slice::Unit::warning(const
|
|
5819
|
-
{
|
|
5820
|
-
emitWarning(currentFile(), _currentLine, s);
|
|
5821
|
-
}
|
|
5822
|
-
|
|
5823
|
-
void
|
|
5824
|
-
Slice::Unit::warning(const string& s) const
|
|
6203
|
+
Slice::Unit::warning(WarningCategory category, const string& msg) const
|
|
5825
6204
|
{
|
|
5826
|
-
|
|
6205
|
+
if(_definitionContextStack.empty())
|
|
6206
|
+
{
|
|
6207
|
+
emitWarning(currentFile(), _currentLine, msg);
|
|
6208
|
+
}
|
|
6209
|
+
else
|
|
6210
|
+
{
|
|
6211
|
+
_definitionContextStack.top()->warning(category, currentFile(), _currentLine, msg);
|
|
6212
|
+
}
|
|
5827
6213
|
}
|
|
5828
6214
|
|
|
5829
6215
|
ContainerPtr
|
|
@@ -6038,6 +6424,11 @@ Slice::Unit::usesNonLocals() const
|
|
|
6038
6424
|
return true;
|
|
6039
6425
|
}
|
|
6040
6426
|
|
|
6427
|
+
if(_builtins.find(Builtin::KindValue) != _builtins.end())
|
|
6428
|
+
{
|
|
6429
|
+
return true;
|
|
6430
|
+
}
|
|
6431
|
+
|
|
6041
6432
|
return false;
|
|
6042
6433
|
}
|
|
6043
6434
|
|
|
@@ -6059,12 +6450,6 @@ Slice::Unit::usesConsts() const
|
|
|
6059
6450
|
return false;
|
|
6060
6451
|
}
|
|
6061
6452
|
|
|
6062
|
-
FeatureProfile
|
|
6063
|
-
Slice::Unit::profile() const
|
|
6064
|
-
{
|
|
6065
|
-
return _featureProfile;
|
|
6066
|
-
}
|
|
6067
|
-
|
|
6068
6453
|
StringList
|
|
6069
6454
|
Slice::Unit::includeFiles() const
|
|
6070
6455
|
{
|
|
@@ -6084,7 +6469,7 @@ Slice::Unit::allFiles() const
|
|
|
6084
6469
|
}
|
|
6085
6470
|
|
|
6086
6471
|
int
|
|
6087
|
-
Slice::Unit::parse(const string& filename, FILE* file, bool debug
|
|
6472
|
+
Slice::Unit::parse(const string& filename, FILE* file, bool debug)
|
|
6088
6473
|
{
|
|
6089
6474
|
slice_debug = debug ? 1 : 0;
|
|
6090
6475
|
|
|
@@ -6094,7 +6479,6 @@ Slice::Unit::parse(const string& filename, FILE* file, bool debug, Slice::Featur
|
|
|
6094
6479
|
_currentComment = "";
|
|
6095
6480
|
_currentLine = 1;
|
|
6096
6481
|
_currentIncludeLevel = 0;
|
|
6097
|
-
_featureProfile = profile;
|
|
6098
6482
|
_topLevelFile = fullPath(filename);
|
|
6099
6483
|
pushContainer(this);
|
|
6100
6484
|
pushDefinitionContext();
|
|
@@ -6130,6 +6514,11 @@ Slice::Unit::parse(const string& filename, FILE* file, bool debug, Slice::Featur
|
|
|
6130
6514
|
popContainer();
|
|
6131
6515
|
assert(_definitionContextStack.size() == 1);
|
|
6132
6516
|
popDefinitionContext();
|
|
6517
|
+
|
|
6518
|
+
if(!checkUndefinedTypes())
|
|
6519
|
+
{
|
|
6520
|
+
status = EXIT_FAILURE;
|
|
6521
|
+
}
|
|
6133
6522
|
}
|
|
6134
6523
|
|
|
6135
6524
|
Slice::unit = 0;
|
|
@@ -6228,6 +6617,113 @@ Slice::Unit::eraseWhiteSpace(string& s)
|
|
|
6228
6617
|
}
|
|
6229
6618
|
}
|
|
6230
6619
|
|
|
6620
|
+
bool
|
|
6621
|
+
Slice::Unit::checkUndefinedTypes()
|
|
6622
|
+
{
|
|
6623
|
+
class Visitor : public ParserVisitor
|
|
6624
|
+
{
|
|
6625
|
+
public:
|
|
6626
|
+
|
|
6627
|
+
Visitor(int& errors) :
|
|
6628
|
+
_errors(errors),
|
|
6629
|
+
_local(false)
|
|
6630
|
+
{
|
|
6631
|
+
}
|
|
6632
|
+
|
|
6633
|
+
virtual bool visitClassDefStart(const ClassDefPtr& p)
|
|
6634
|
+
{
|
|
6635
|
+
_local = p->isLocal();
|
|
6636
|
+
return true;
|
|
6637
|
+
}
|
|
6638
|
+
|
|
6639
|
+
virtual bool visitExceptionStart(const ExceptionPtr& p)
|
|
6640
|
+
{
|
|
6641
|
+
_local = p->isLocal();
|
|
6642
|
+
return true;
|
|
6643
|
+
}
|
|
6644
|
+
|
|
6645
|
+
virtual bool visitStructStart(const StructPtr& p)
|
|
6646
|
+
{
|
|
6647
|
+
_local = p->isLocal();
|
|
6648
|
+
return true;
|
|
6649
|
+
}
|
|
6650
|
+
|
|
6651
|
+
virtual void visitOperation(const OperationPtr& p)
|
|
6652
|
+
{
|
|
6653
|
+
if(p->returnType())
|
|
6654
|
+
{
|
|
6655
|
+
checkUndefined(p->returnType(), "return type", p->file(), p->line());
|
|
6656
|
+
}
|
|
6657
|
+
ParamDeclList params = p->parameters();
|
|
6658
|
+
for(ParamDeclList::const_iterator q = params.begin(); q != params.end(); ++q)
|
|
6659
|
+
{
|
|
6660
|
+
checkUndefined((*q)->type(), "parameter " + (*q)->name(), (*q)->file(), (*q)->line());
|
|
6661
|
+
}
|
|
6662
|
+
}
|
|
6663
|
+
|
|
6664
|
+
virtual void visitParamDecl(const ParamDeclPtr& p)
|
|
6665
|
+
{
|
|
6666
|
+
checkUndefined(p->type(), "parameter " + p->name(), p->file(), p->line());
|
|
6667
|
+
}
|
|
6668
|
+
|
|
6669
|
+
virtual void visitDataMember(const DataMemberPtr& p)
|
|
6670
|
+
{
|
|
6671
|
+
checkUndefined(p->type(), "member " + p->name(), p->file(), p->line());
|
|
6672
|
+
}
|
|
6673
|
+
|
|
6674
|
+
virtual void visitSequence(const SequencePtr& p)
|
|
6675
|
+
{
|
|
6676
|
+
_local = p->isLocal();
|
|
6677
|
+
checkUndefined(p->type(), "element type", p->file(), p->line());
|
|
6678
|
+
}
|
|
6679
|
+
|
|
6680
|
+
virtual void visitDictionary(const DictionaryPtr& p)
|
|
6681
|
+
{
|
|
6682
|
+
_local = p->isLocal();
|
|
6683
|
+
checkUndefined(p->keyType(), "key type", p->file(), p->line());
|
|
6684
|
+
checkUndefined(p->valueType(), "value type", p->file(), p->line());
|
|
6685
|
+
}
|
|
6686
|
+
|
|
6687
|
+
private:
|
|
6688
|
+
|
|
6689
|
+
void checkUndefined(const TypePtr& type, const string& desc, const string& file, const string& line)
|
|
6690
|
+
{
|
|
6691
|
+
//
|
|
6692
|
+
// See ICE-6867. Any use of a proxy requires the full type definition, as does any
|
|
6693
|
+
// use of a class in a non-local context.
|
|
6694
|
+
//
|
|
6695
|
+
ProxyPtr p = ProxyPtr::dynamicCast(type);
|
|
6696
|
+
if(p)
|
|
6697
|
+
{
|
|
6698
|
+
const ClassDeclPtr cl = p->_class();
|
|
6699
|
+
if(!cl->definition())
|
|
6700
|
+
{
|
|
6701
|
+
ostringstream ostr;
|
|
6702
|
+
ostr << desc << " uses a proxy for undefined type `" << cl->scoped() << "'";
|
|
6703
|
+
emitError(file, line, ostr.str());
|
|
6704
|
+
_errors++;
|
|
6705
|
+
}
|
|
6706
|
+
}
|
|
6707
|
+
|
|
6708
|
+
ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type);
|
|
6709
|
+
if(cl && !cl->definition() && !_local)
|
|
6710
|
+
{
|
|
6711
|
+
ostringstream ostr;
|
|
6712
|
+
ostr << desc << " refers to undefined type `" << cl->scoped() << "'";
|
|
6713
|
+
emitError(file, line, ostr.str());
|
|
6714
|
+
_errors++;
|
|
6715
|
+
}
|
|
6716
|
+
}
|
|
6717
|
+
|
|
6718
|
+
int& _errors;
|
|
6719
|
+
bool _local;
|
|
6720
|
+
};
|
|
6721
|
+
|
|
6722
|
+
Visitor v(_errors);
|
|
6723
|
+
visit(&v, true);
|
|
6724
|
+
return _errors == 0;
|
|
6725
|
+
}
|
|
6726
|
+
|
|
6231
6727
|
// ----------------------------------------------------------------------
|
|
6232
6728
|
// CICompare
|
|
6233
6729
|
// ----------------------------------------------------------------------
|
|
@@ -6270,7 +6766,6 @@ Slice::cICompare(const std::string& s1, const std::string& s2)
|
|
|
6270
6766
|
}
|
|
6271
6767
|
#endif
|
|
6272
6768
|
|
|
6273
|
-
|
|
6274
6769
|
// ----------------------------------------------------------------------
|
|
6275
6770
|
// DerivedToBaseCompare
|
|
6276
6771
|
// ----------------------------------------------------------------------
|