zeroc-ice 3.7.11 → 3.8.1
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/dist/IceRuby/Communicator.cpp +159 -376
- data/dist/IceRuby/Communicator.h +8 -9
- data/dist/IceRuby/Config.h +23 -89
- data/dist/IceRuby/Connection.cpp +111 -219
- data/dist/IceRuby/Connection.h +8 -12
- data/dist/IceRuby/DefaultSliceLoader.cpp +45 -0
- data/dist/IceRuby/DefaultSliceLoader.h +25 -0
- data/dist/IceRuby/Endpoint.cpp +63 -65
- data/dist/IceRuby/Endpoint.h +7 -11
- data/dist/IceRuby/ImplicitContext.cpp +26 -31
- data/dist/IceRuby/ImplicitContext.h +6 -10
- data/dist/IceRuby/Init.cpp +27 -40
- data/dist/IceRuby/Logger.cpp +23 -28
- data/dist/IceRuby/Logger.h +8 -12
- data/dist/IceRuby/Operation.cpp +177 -219
- data/dist/IceRuby/Operation.h +15 -18
- data/dist/IceRuby/Properties.cpp +133 -89
- data/dist/IceRuby/Properties.h +6 -10
- data/dist/IceRuby/Proxy.cpp +179 -649
- data/dist/IceRuby/Proxy.h +11 -12
- data/dist/IceRuby/RubySliceLoader.cpp +39 -0
- data/dist/IceRuby/RubySliceLoader.h +27 -0
- data/dist/IceRuby/Slice.cpp +88 -94
- data/dist/IceRuby/Slice.h +3 -7
- data/dist/IceRuby/Types.cpp +987 -1190
- data/dist/IceRuby/Types.h +390 -461
- data/dist/IceRuby/Util.cpp +214 -473
- data/dist/IceRuby/Util.h +378 -479
- data/dist/ice/cpp/include/Ice/AsyncResponseHandler.h +85 -0
- data/dist/ice/cpp/include/Ice/BatchRequest.h +39 -0
- data/dist/ice/cpp/include/Ice/BatchRequestQueueF.h +4 -10
- data/dist/ice/cpp/include/Ice/Buffer.h +116 -111
- data/dist/ice/cpp/include/Ice/Communicator.h +411 -0
- data/dist/ice/cpp/include/Ice/CommunicatorF.h +16 -0
- data/dist/ice/cpp/include/Ice/Config.h +46 -62
- data/dist/ice/cpp/include/Ice/Connection.h +410 -0
- data/dist/ice/cpp/include/Ice/ConnectionF.h +36 -0
- data/dist/ice/cpp/include/Ice/ConnectionIF.h +6 -28
- data/dist/ice/cpp/include/Ice/CtrlCHandler.h +56 -0
- data/dist/ice/cpp/include/Ice/Current.h +60 -0
- data/dist/ice/cpp/include/Ice/DefaultSliceLoader.h +160 -0
- data/dist/ice/cpp/include/Ice/Demangle.h +17 -0
- data/dist/ice/cpp/include/Ice/Endpoint.h +298 -0
- data/dist/ice/cpp/include/Ice/EndpointF.h +44 -0
- data/dist/ice/cpp/include/Ice/EndpointSelectionType.h +21 -0
- data/dist/ice/cpp/include/Ice/Exception.h +46 -151
- data/dist/ice/cpp/include/Ice/FacetMap.h +16 -0
- data/dist/ice/cpp/include/Ice/Format.h +11 -27
- data/dist/ice/cpp/include/Ice/Ice.h +53 -48
- data/dist/ice/cpp/include/Ice/IconvStringConverter.h +165 -326
- data/dist/ice/cpp/include/Ice/ImplicitContext.h +76 -0
- data/dist/ice/cpp/include/Ice/IncomingRequest.h +75 -0
- data/dist/ice/cpp/include/Ice/Initialize.h +113 -927
- data/dist/ice/cpp/include/Ice/InputStream.h +748 -1320
- data/dist/ice/cpp/include/Ice/InstanceF.h +4 -10
- data/dist/ice/cpp/include/Ice/Instrumentation.h +319 -0
- data/dist/ice/cpp/include/Ice/LocalException.h +58 -0
- data/dist/ice/cpp/include/Ice/LocalExceptions.h +870 -0
- data/dist/ice/cpp/include/Ice/Logger.h +62 -0
- data/dist/ice/cpp/include/Ice/LoggerUtil.h +124 -147
- data/dist/ice/cpp/include/Ice/MarshaledResult.h +50 -0
- data/dist/ice/cpp/include/Ice/NativePropertiesAdmin.h +41 -71
- data/dist/ice/cpp/include/Ice/Object.h +151 -490
- data/dist/ice/cpp/include/Ice/ObjectAdapter.h +324 -0
- data/dist/ice/cpp/include/Ice/ObjectAdapterF.h +16 -0
- data/dist/ice/cpp/include/Ice/ObjectF.h +5 -19
- data/dist/ice/cpp/include/Ice/ObserverHelper.h +115 -132
- data/dist/ice/cpp/include/Ice/OutgoingAsync.h +392 -748
- data/dist/ice/cpp/include/Ice/OutgoingResponse.h +129 -0
- data/dist/ice/cpp/include/Ice/OutputStream.h +756 -956
- data/dist/ice/cpp/include/Ice/Plugin.h +73 -0
- data/dist/ice/cpp/include/Ice/PluginFactory.h +77 -0
- data/dist/ice/cpp/include/{IceUtil → Ice}/PopDisableWarnings.h +8 -6
- data/dist/ice/cpp/include/Ice/Properties.h +307 -0
- data/dist/ice/cpp/include/Ice/PropertiesF.h +19 -0
- data/dist/ice/cpp/include/Ice/Proxy.h +665 -5094
- data/dist/ice/cpp/include/Ice/ProxyF.h +2 -44
- data/dist/ice/cpp/include/Ice/ProxyFunctions.h +209 -0
- data/dist/ice/cpp/include/Ice/PushDisableWarnings.h +29 -0
- data/dist/ice/cpp/include/Ice/ReferenceF.h +4 -19
- data/dist/ice/cpp/include/Ice/RequestHandlerF.h +8 -18
- data/dist/ice/cpp/include/Ice/SSL/ClientAuthenticationOptions.h +276 -0
- data/dist/ice/cpp/include/Ice/SSL/Config.h +54 -0
- data/dist/ice/cpp/include/Ice/SSL/ConnectionInfo.h +107 -0
- data/dist/ice/cpp/include/Ice/SSL/ConnectionInfoF.h +39 -0
- data/dist/ice/cpp/include/Ice/SSL/EndpointInfo.h +40 -0
- data/dist/ice/cpp/include/Ice/SSL/SSLException.h +32 -0
- data/dist/ice/cpp/include/Ice/SSL/ServerAuthenticationOptions.h +286 -0
- data/dist/ice/cpp/include/Ice/ServantLocator.h +51 -0
- data/dist/ice/cpp/include/Ice/Service.h +182 -342
- data/dist/ice/cpp/include/Ice/SliceLoader.h +67 -0
- data/dist/ice/cpp/include/Ice/SlicedData.h +113 -160
- data/dist/ice/cpp/include/Ice/SlicedDataF.h +17 -27
- data/dist/ice/cpp/include/Ice/StreamHelpers.h +532 -1070
- data/dist/ice/cpp/include/Ice/StreamableTraits.h +291 -0
- data/dist/ice/cpp/include/Ice/StringConverter.h +152 -63
- data/dist/ice/cpp/include/Ice/StringUtil.h +114 -0
- data/dist/ice/cpp/include/Ice/TimerTask.h +24 -0
- data/dist/ice/cpp/include/Ice/TupleCompare.h +103 -0
- data/dist/ice/cpp/include/Ice/UUID.h +6 -9
- data/dist/ice/cpp/include/Ice/UserException.h +46 -0
- data/dist/ice/cpp/include/Ice/UserExceptionFactory.h +4 -79
- data/dist/ice/cpp/include/Ice/Value.h +103 -115
- data/dist/ice/cpp/include/Ice/ValueF.h +6 -11
- data/dist/ice/cpp/include/IceDiscovery/IceDiscovery.h +16 -1877
- data/dist/ice/cpp/include/IceLocatorDiscovery/IceLocatorDiscovery.h +16 -1185
- data/dist/ice/cpp/include/generated/Ice/BuiltinSequences.h +46 -146
- data/dist/ice/cpp/include/generated/Ice/Context.h +40 -0
- data/dist/ice/cpp/include/generated/Ice/EndpointTypes.h +49 -93
- data/dist/ice/cpp/include/generated/Ice/Identity.h +70 -226
- data/dist/ice/cpp/include/generated/Ice/Locator.h +494 -3850
- data/dist/ice/cpp/include/generated/Ice/LocatorRegistry.h +443 -0
- data/dist/ice/cpp/include/generated/Ice/Metrics.h +937 -4603
- data/dist/ice/cpp/include/generated/Ice/OperationMode.h +73 -0
- data/dist/ice/cpp/include/generated/Ice/Process.h +197 -929
- data/dist/ice/cpp/include/generated/Ice/PropertiesAdmin.h +249 -1301
- data/dist/ice/cpp/include/generated/Ice/PropertyDict.h +39 -0
- data/dist/ice/cpp/include/generated/Ice/RemoteLogger.h +637 -2620
- data/dist/ice/cpp/include/generated/Ice/ReplyStatus.h +94 -0
- data/dist/ice/cpp/include/generated/Ice/Router.h +429 -1783
- data/dist/ice/cpp/include/generated/Ice/SliceChecksumDict.h +18 -65
- data/dist/ice/cpp/include/generated/Ice/Version.h +73 -318
- data/dist/ice/cpp/include/generated/IceDiscovery/Lookup.h +498 -0
- data/dist/ice/cpp/include/generated/IceLocatorDiscovery/Lookup.h +387 -0
- data/dist/ice/cpp/src/Ice/Acceptor.h +28 -24
- data/dist/ice/cpp/src/Ice/AcceptorF.h +6 -14
- data/dist/ice/cpp/src/Ice/AddDefaultPluginFactories.h +16 -0
- data/dist/ice/cpp/src/Ice/AddDefaultPluginFactories_all.cpp +43 -0
- data/dist/ice/cpp/src/Ice/AddDefaultPluginFactories_min.cpp +17 -0
- data/dist/ice/cpp/src/Ice/ArgVector.cpp +17 -18
- data/dist/ice/cpp/src/Ice/ArgVector.h +19 -25
- data/dist/ice/cpp/src/Ice/Base64.cpp +66 -66
- data/dist/ice/cpp/src/Ice/Base64.h +14 -19
- data/dist/ice/cpp/src/Ice/BatchRequestQueue.cpp +70 -121
- data/dist/ice/cpp/src/Ice/BatchRequestQueue.h +37 -47
- data/dist/ice/cpp/src/Ice/Buffer.cpp +73 -41
- data/dist/ice/cpp/src/Ice/CheckIdentity.h +21 -0
- data/dist/ice/cpp/src/Ice/CollocatedRequestHandler.cpp +215 -249
- data/dist/ice/cpp/src/Ice/CollocatedRequestHandler.h +38 -60
- data/dist/ice/cpp/src/Ice/Communicator.cpp +399 -0
- data/dist/ice/cpp/src/Ice/CommunicatorFlushBatchAsync.cpp +140 -0
- data/dist/ice/cpp/src/Ice/CommunicatorFlushBatchAsync.h +39 -0
- data/dist/ice/cpp/src/Ice/ConnectRequestHandler.cpp +63 -184
- data/dist/ice/cpp/src/Ice/ConnectRequestHandler.h +30 -51
- data/dist/ice/cpp/src/Ice/ConnectRequestHandlerF.h +4 -14
- data/dist/ice/cpp/src/Ice/Connection.cpp +44 -0
- data/dist/ice/cpp/src/Ice/ConnectionFactory.cpp +578 -792
- data/dist/ice/cpp/src/Ice/ConnectionFactory.h +200 -200
- data/dist/ice/cpp/src/Ice/ConnectionFactoryF.h +6 -19
- data/dist/ice/cpp/src/Ice/ConnectionI.cpp +1674 -1782
- data/dist/ice/cpp/src/Ice/ConnectionI.h +333 -293
- data/dist/ice/cpp/src/Ice/ConnectionOptions.h +22 -0
- data/dist/ice/cpp/src/Ice/Connector.h +25 -19
- data/dist/ice/cpp/src/Ice/ConnectorF.h +4 -11
- data/dist/ice/cpp/src/{IceUtil → Ice}/ConsoleUtil.cpp +32 -53
- data/dist/ice/cpp/src/Ice/ConsoleUtil.h +79 -0
- data/dist/ice/cpp/src/Ice/CtrlCHandler.cpp +189 -0
- data/dist/ice/cpp/src/Ice/Current.cpp +29 -0
- data/dist/ice/cpp/src/Ice/DLLMain.cpp +25 -35
- data/dist/ice/cpp/src/Ice/DefaultSliceLoader.cpp +39 -0
- data/dist/ice/cpp/src/Ice/DefaultsAndOverrides.cpp +41 -119
- data/dist/ice/cpp/src/Ice/DefaultsAndOverrides.h +27 -41
- data/dist/ice/cpp/src/Ice/DefaultsAndOverridesF.h +4 -11
- data/dist/ice/cpp/src/Ice/Demangle.cpp +26 -0
- data/dist/ice/cpp/src/Ice/DisableWarnings.h +31 -0
- data/dist/ice/cpp/src/Ice/DynamicLibrary.cpp +44 -112
- data/dist/ice/cpp/src/Ice/DynamicLibrary.h +91 -0
- data/dist/ice/cpp/src/Ice/Endian.h +40 -0
- data/dist/ice/cpp/src/Ice/EndpointFactory.cpp +35 -59
- data/dist/ice/cpp/src/Ice/EndpointFactory.h +82 -103
- data/dist/ice/cpp/src/Ice/EndpointFactoryF.h +4 -11
- data/dist/ice/cpp/src/Ice/EndpointFactoryManager.cpp +54 -87
- data/dist/ice/cpp/src/Ice/EndpointFactoryManager.h +28 -33
- data/dist/ice/cpp/src/Ice/EndpointFactoryManagerF.h +4 -11
- data/dist/ice/cpp/src/Ice/EndpointI.cpp +53 -23
- data/dist/ice/cpp/src/Ice/EndpointI.h +132 -200
- data/dist/ice/cpp/src/Ice/EndpointIF.h +11 -39
- data/dist/ice/cpp/src/Ice/EventHandler.cpp +3 -26
- data/dist/ice/cpp/src/Ice/EventHandler.h +46 -56
- data/dist/ice/cpp/src/Ice/EventHandlerF.h +4 -14
- data/dist/ice/cpp/src/Ice/Exception.cpp +3 -816
- data/dist/ice/cpp/src/Ice/FileUtil.cpp +476 -0
- data/dist/ice/cpp/src/Ice/FileUtil.h +152 -0
- data/dist/ice/cpp/src/Ice/FixedRequestHandler.cpp +34 -0
- data/dist/ice/cpp/src/Ice/FixedRequestHandler.h +29 -0
- data/dist/ice/cpp/src/Ice/HashUtil.h +46 -32
- data/dist/ice/cpp/src/Ice/HttpParser.cpp +431 -431
- data/dist/ice/cpp/src/Ice/HttpParser.h +95 -100
- data/dist/ice/cpp/src/Ice/IPEndpointI.cpp +207 -324
- data/dist/ice/cpp/src/Ice/IPEndpointI.h +80 -126
- data/dist/ice/cpp/src/Ice/IPEndpointIF.h +6 -17
- data/dist/ice/cpp/src/Ice/IdleTimeoutTransceiverDecorator.cpp +172 -0
- data/dist/ice/cpp/src/Ice/IdleTimeoutTransceiverDecorator.h +89 -0
- data/dist/ice/cpp/src/Ice/ImplicitContext.cpp +109 -0
- data/dist/ice/cpp/src/Ice/IncomingRequest.cpp +66 -0
- data/dist/ice/cpp/src/Ice/Initialize.cpp +48 -542
- data/dist/ice/cpp/src/Ice/InputStream.cpp +848 -1385
- data/dist/ice/cpp/src/Ice/Instance.cpp +816 -827
- data/dist/ice/cpp/src/Ice/Instance.h +202 -212
- data/dist/ice/cpp/src/Ice/InstrumentationI.cpp +526 -661
- data/dist/ice/cpp/src/Ice/InstrumentationI.h +171 -192
- data/dist/ice/cpp/src/Ice/LocalException.cpp +518 -0
- data/dist/ice/cpp/src/Ice/LocalExceptions.cpp +577 -0
- data/dist/ice/cpp/src/Ice/LocatorInfo.cpp +291 -329
- data/dist/ice/cpp/src/Ice/LocatorInfo.h +144 -157
- data/dist/ice/cpp/src/Ice/LocatorInfoF.h +8 -17
- data/dist/ice/cpp/src/Ice/LoggerAdminI.cpp +561 -743
- data/dist/ice/cpp/src/Ice/LoggerAdminI.h +18 -28
- data/dist/ice/cpp/src/Ice/LoggerI.cpp +66 -91
- data/dist/ice/cpp/src/Ice/LoggerI.h +36 -41
- data/dist/ice/cpp/src/Ice/LoggerMiddleware.cpp +176 -0
- data/dist/ice/cpp/src/Ice/LoggerMiddleware.h +42 -0
- data/dist/ice/cpp/src/Ice/LoggerUtil.cpp +14 -38
- data/dist/ice/cpp/src/Ice/MarshaledResult.cpp +20 -0
- data/dist/ice/cpp/src/Ice/MetricsAdminI.cpp +194 -280
- data/dist/ice/cpp/src/Ice/MetricsAdminI.h +600 -0
- data/dist/ice/cpp/src/Ice/MetricsFunctional.h +92 -0
- data/dist/ice/cpp/src/Ice/MetricsObserverI.h +587 -0
- data/dist/ice/cpp/src/Ice/NativePropertiesAdmin.cpp +185 -0
- data/dist/ice/cpp/src/Ice/Network.cpp +595 -917
- data/dist/ice/cpp/src/Ice/Network.h +189 -213
- data/dist/ice/cpp/src/Ice/NetworkF.h +2 -10
- data/dist/ice/cpp/src/Ice/NetworkProxy.cpp +99 -104
- data/dist/ice/cpp/src/Ice/NetworkProxy.h +49 -54
- data/dist/ice/cpp/src/Ice/NetworkProxyF.h +4 -11
- data/dist/ice/cpp/src/Ice/OSLogLoggerI.cpp +16 -18
- data/dist/ice/cpp/src/Ice/OSLogLoggerI.h +22 -27
- data/dist/ice/cpp/src/Ice/Object.cpp +152 -338
- data/dist/ice/cpp/src/Ice/ObjectAdapterFactory.cpp +170 -113
- data/dist/ice/cpp/src/Ice/ObjectAdapterFactory.h +41 -41
- data/dist/ice/cpp/src/Ice/ObjectAdapterFactoryF.h +4 -15
- data/dist/ice/cpp/src/Ice/ObjectAdapterI.cpp +580 -727
- data/dist/ice/cpp/src/Ice/ObjectAdapterI.h +149 -145
- data/dist/ice/cpp/src/Ice/ObserverHelper.cpp +36 -17
- data/dist/ice/cpp/src/Ice/ObserverMiddleware.cpp +96 -0
- data/dist/ice/cpp/src/Ice/ObserverMiddleware.h +25 -0
- data/dist/ice/cpp/src/Ice/OpaqueEndpointI.cpp +147 -187
- data/dist/ice/cpp/src/Ice/OpaqueEndpointI.h +56 -64
- data/dist/ice/cpp/src/{IceUtil → Ice}/Options.cpp +187 -258
- data/dist/ice/cpp/src/Ice/Options.h +119 -0
- data/dist/ice/cpp/src/Ice/OutgoingAsync.cpp +516 -732
- data/dist/ice/cpp/src/Ice/OutgoingResponse.cpp +276 -0
- data/dist/ice/cpp/src/Ice/OutputStream.cpp +610 -543
- data/dist/ice/cpp/src/Ice/OutputUtil.cpp +344 -0
- data/dist/ice/cpp/src/Ice/OutputUtil.h +173 -0
- data/dist/ice/cpp/src/Ice/PluginManagerI.cpp +118 -277
- data/dist/ice/cpp/src/Ice/PluginManagerI.h +41 -48
- data/dist/ice/cpp/src/Ice/Properties.cpp +931 -0
- data/dist/ice/cpp/src/Ice/PropertyNames.cpp +519 -1341
- data/dist/ice/cpp/src/Ice/PropertyNames.h +49 -64
- data/dist/ice/cpp/src/Ice/PropertyUtil.cpp +103 -0
- data/dist/ice/cpp/src/Ice/PropertyUtil.h +31 -0
- data/dist/ice/cpp/src/Ice/Protocol.cpp +129 -94
- data/dist/ice/cpp/src/Ice/Protocol.h +116 -0
- data/dist/ice/cpp/src/Ice/ProtocolInstance.cpp +117 -62
- data/dist/ice/cpp/src/Ice/ProtocolInstance.h +63 -82
- data/dist/ice/cpp/src/Ice/ProtocolInstanceF.h +4 -11
- data/dist/ice/cpp/src/Ice/ProtocolPluginFacade.cpp +10 -32
- data/dist/ice/cpp/src/Ice/ProtocolPluginFacade.h +25 -54
- data/dist/ice/cpp/src/Ice/Proxy.cpp +294 -1357
- data/dist/ice/cpp/src/Ice/ProxyAsync.cpp +684 -0
- data/dist/ice/cpp/src/Ice/ProxyFunctions.cpp +90 -0
- data/dist/ice/cpp/src/Ice/PushDisableDeprecatedWarnings.h +15 -0
- data/dist/ice/cpp/src/Ice/Random.cpp +29 -0
- data/dist/ice/cpp/src/Ice/Random.h +23 -0
- data/dist/ice/cpp/src/Ice/Reference.cpp +635 -1097
- data/dist/ice/cpp/src/Ice/Reference.h +314 -298
- data/dist/ice/cpp/src/Ice/ReferenceFactory.cpp +320 -378
- data/dist/ice/cpp/src/Ice/ReferenceFactory.h +48 -66
- data/dist/ice/cpp/src/Ice/ReferenceFactoryF.h +4 -9
- data/dist/ice/cpp/src/Ice/RequestHandler.cpp +15 -24
- data/dist/ice/cpp/src/Ice/RequestHandler.h +43 -68
- data/dist/ice/cpp/src/Ice/RequestHandlerCache.cpp +76 -0
- data/dist/ice/cpp/src/Ice/RequestHandlerCache.h +33 -0
- data/dist/ice/cpp/src/Ice/ResourceConfig.h +27 -0
- data/dist/ice/cpp/src/Ice/RetryQueue.cpp +51 -57
- data/dist/ice/cpp/src/Ice/RetryQueue.h +39 -46
- data/dist/ice/cpp/src/Ice/RetryQueueF.h +4 -9
- data/dist/ice/cpp/src/Ice/RouterInfo.cpp +97 -201
- data/dist/ice/cpp/src/Ice/RouterInfo.h +61 -118
- data/dist/ice/cpp/src/Ice/RouterInfoF.h +6 -14
- data/dist/ice/cpp/src/Ice/SHA1.cpp +86 -60
- data/dist/ice/cpp/src/Ice/SHA1.h +35 -0
- data/dist/ice/cpp/src/Ice/SSL/DistinguishedName.cpp +89 -0
- data/dist/ice/cpp/src/Ice/SSL/DistinguishedName.h +87 -0
- data/dist/ice/cpp/src/Ice/SSL/OpenSSLEngine.cpp +521 -0
- data/dist/ice/cpp/src/Ice/SSL/OpenSSLEngine.h +40 -0
- data/dist/ice/cpp/src/Ice/SSL/OpenSSLEngineF.h +13 -0
- data/dist/ice/cpp/src/Ice/SSL/OpenSSLTransceiverI.cpp +646 -0
- data/dist/ice/cpp/src/Ice/SSL/OpenSSLTransceiverI.h +80 -0
- data/dist/ice/cpp/src/{IceSSL → Ice/SSL}/RFC2253.cpp +85 -88
- data/dist/ice/cpp/src/Ice/SSL/RFC2253.h +58 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLAcceptorI.cpp +124 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLAcceptorI.h +52 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLConnectorI.cpp +92 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLConnectorI.h +38 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLEndpointI.cpp +377 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLEndpointI.h +84 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLEngine.cpp +115 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLEngine.h +69 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLEngineF.h +14 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLException.cpp +18 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLInstance.cpp +27 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLInstance.h +26 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLInstanceF.h +19 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLUtil.cpp +673 -0
- data/dist/ice/cpp/src/Ice/SSL/SSLUtil.h +118 -0
- data/dist/ice/cpp/src/Ice/SSL/SchannelEngine.cpp +1449 -0
- data/dist/ice/cpp/src/Ice/SSL/SchannelEngine.h +58 -0
- data/dist/ice/cpp/src/Ice/SSL/SchannelEngineF.h +18 -0
- data/dist/ice/cpp/src/Ice/SSL/SchannelTransceiverI.cpp +1088 -0
- data/dist/ice/cpp/src/Ice/SSL/SchannelTransceiverI.h +118 -0
- data/dist/ice/cpp/src/Ice/SSL/SecureTransportEngine.cpp +825 -0
- data/dist/ice/cpp/src/Ice/SSL/SecureTransportEngine.h +44 -0
- data/dist/ice/cpp/src/Ice/SSL/SecureTransportEngineF.h +18 -0
- data/dist/ice/cpp/src/Ice/SSL/SecureTransportTransceiverI.cpp +621 -0
- data/dist/ice/cpp/src/Ice/SSL/SecureTransportTransceiverI.h +91 -0
- data/dist/ice/cpp/src/Ice/SSL/SecureTransportUtil.cpp +1048 -0
- data/dist/ice/cpp/src/Ice/SSL/SecureTransportUtil.h +40 -0
- data/dist/ice/cpp/src/Ice/SSL/TrustManager.cpp +233 -0
- data/dist/ice/cpp/src/Ice/SSL/TrustManager.h +42 -0
- data/dist/ice/cpp/src/Ice/SSL/TrustManagerF.h +14 -0
- data/dist/ice/cpp/src/Ice/ScannerConfig.h +35 -0
- data/dist/ice/cpp/src/Ice/Selector.cpp +341 -606
- data/dist/ice/cpp/src/Ice/Selector.h +167 -224
- data/dist/ice/cpp/src/Ice/ServantManager.cpp +195 -128
- data/dist/ice/cpp/src/Ice/ServantManager.h +52 -55
- data/dist/ice/cpp/src/Ice/ServantManagerF.h +14 -0
- data/dist/ice/cpp/src/Ice/Service.cpp +548 -641
- data/dist/ice/cpp/src/Ice/SharedContext.h +13 -26
- data/dist/ice/cpp/src/Ice/SliceLoader.cpp +53 -0
- data/dist/ice/cpp/src/Ice/SlicedData.cpp +17 -96
- data/dist/ice/cpp/src/Ice/StreamSocket.cpp +104 -151
- data/dist/ice/cpp/src/Ice/StreamSocket.h +48 -60
- data/dist/ice/cpp/src/Ice/StringConverter.cpp +586 -0
- data/dist/ice/cpp/src/Ice/StringUtil.cpp +1137 -0
- data/dist/ice/cpp/src/Ice/SysLoggerI.cpp +41 -47
- data/dist/ice/cpp/src/Ice/SysLoggerI.h +24 -27
- data/dist/ice/cpp/src/Ice/SystemdJournalI.cpp +16 -17
- data/dist/ice/cpp/src/Ice/SystemdJournalI.h +19 -25
- data/dist/ice/cpp/src/Ice/TargetCompare.h +96 -0
- data/dist/ice/cpp/src/Ice/TcpAcceptor.cpp +67 -88
- data/dist/ice/cpp/src/Ice/TcpAcceptor.h +34 -40
- data/dist/ice/cpp/src/Ice/TcpConnector.cpp +42 -41
- data/dist/ice/cpp/src/Ice/TcpConnector.h +26 -35
- data/dist/ice/cpp/src/Ice/TcpEndpointI.cpp +172 -146
- data/dist/ice/cpp/src/Ice/TcpEndpointI.h +76 -80
- data/dist/ice/cpp/src/Ice/TcpTransceiver.cpp +38 -26
- data/dist/ice/cpp/src/Ice/TcpTransceiver.h +40 -45
- data/dist/ice/cpp/src/Ice/ThreadPool.cpp +333 -515
- data/dist/ice/cpp/src/Ice/ThreadPool.h +202 -290
- data/dist/ice/cpp/src/Ice/ThreadPoolF.h +14 -0
- data/dist/ice/cpp/src/Ice/TimeUtil.cpp +47 -0
- data/dist/ice/cpp/src/Ice/TimeUtil.h +21 -0
- data/dist/ice/cpp/src/Ice/Timer.cpp +73 -167
- data/dist/ice/cpp/src/Ice/Timer.h +212 -0
- data/dist/ice/cpp/src/Ice/TraceLevels.cpp +11 -29
- data/dist/ice/cpp/src/Ice/TraceLevels.h +22 -28
- data/dist/ice/cpp/src/Ice/TraceLevelsF.h +4 -11
- data/dist/ice/cpp/src/Ice/TraceUtil.cpp +136 -215
- data/dist/ice/cpp/src/Ice/TraceUtil.h +27 -16
- data/dist/ice/cpp/src/Ice/Transceiver.cpp +3 -7
- data/dist/ice/cpp/src/Ice/Transceiver.h +35 -32
- data/dist/ice/cpp/src/Ice/TransceiverF.h +10 -20
- data/dist/ice/cpp/src/Ice/UUID.cpp +79 -0
- data/dist/ice/cpp/src/Ice/UdpConnector.cpp +39 -39
- data/dist/ice/cpp/src/Ice/UdpConnector.h +27 -36
- data/dist/ice/cpp/src/Ice/UdpEndpointI.cpp +178 -213
- data/dist/ice/cpp/src/Ice/UdpEndpointI.h +82 -85
- data/dist/ice/cpp/src/Ice/UdpTransceiver.cpp +201 -221
- data/dist/ice/cpp/src/Ice/UdpTransceiver.h +68 -74
- data/dist/ice/cpp/{include/IceUtil → src/Ice}/UndefSysMacros.h +12 -12
- data/dist/ice/cpp/src/Ice/UniqueRef.h +77 -0
- data/dist/ice/cpp/src/Ice/UserException.cpp +58 -0
- data/dist/ice/cpp/src/Ice/Value.cpp +107 -38
- data/dist/ice/cpp/src/Ice/WSAcceptor.cpp +10 -15
- data/dist/ice/cpp/src/Ice/WSAcceptor.h +31 -37
- data/dist/ice/cpp/src/Ice/WSConnector.cpp +25 -40
- data/dist/ice/cpp/src/Ice/WSConnector.h +26 -33
- data/dist/ice/cpp/src/Ice/WSEndpoint.cpp +164 -217
- data/dist/ice/cpp/src/Ice/WSEndpoint.h +72 -83
- data/dist/ice/cpp/src/Ice/WSTransceiver.cpp +469 -458
- data/dist/ice/cpp/src/Ice/WSTransceiver.h +117 -123
- data/dist/ice/cpp/src/Ice/generated/BuiltinSequences.cpp +20 -29
- data/dist/ice/cpp/src/Ice/generated/Context.cpp +40 -0
- data/dist/ice/cpp/src/Ice/generated/EndpointTypes.cpp +20 -31
- data/dist/ice/cpp/src/Ice/generated/Identity.cpp +24 -34
- data/dist/ice/cpp/src/Ice/generated/Locator.cpp +454 -1744
- data/dist/ice/cpp/src/Ice/generated/LocatorRegistry.cpp +577 -0
- data/dist/ice/cpp/src/Ice/generated/Metrics.cpp +824 -1971
- data/dist/ice/cpp/src/Ice/generated/OperationMode.cpp +56 -0
- data/dist/ice/cpp/src/Ice/generated/Process.cpp +190 -331
- data/dist/ice/cpp/src/Ice/generated/PropertiesAdmin.cpp +289 -449
- data/dist/ice/cpp/src/Ice/generated/PropertyDict.cpp +40 -0
- data/dist/ice/cpp/src/Ice/generated/RemoteLogger.cpp +547 -867
- data/dist/ice/cpp/src/Ice/generated/ReplyStatus.cpp +70 -0
- data/dist/ice/cpp/src/Ice/generated/Router.cpp +406 -723
- data/dist/ice/cpp/src/Ice/generated/SliceChecksumDict.cpp +19 -29
- data/dist/ice/cpp/src/Ice/generated/Version.cpp +28 -31
- data/dist/ice/cpp/src/IceDiscovery/LocatorI.cpp +76 -139
- data/dist/ice/cpp/src/IceDiscovery/LocatorI.h +55 -96
- data/dist/ice/cpp/src/IceDiscovery/LookupI.cpp +190 -303
- data/dist/ice/cpp/src/IceDiscovery/LookupI.h +126 -185
- data/dist/ice/cpp/src/IceDiscovery/PluginI.cpp +56 -77
- data/dist/ice/cpp/src/IceDiscovery/PluginI.h +20 -25
- data/dist/ice/cpp/src/IceDiscovery/generated/Lookup.cpp +638 -0
- data/dist/ice/cpp/src/IceLocatorDiscovery/Plugin.h +14 -37
- data/dist/ice/cpp/src/IceLocatorDiscovery/PluginI.cpp +411 -649
- data/dist/ice/cpp/src/IceLocatorDiscovery/generated/Lookup.cpp +468 -0
- data/dist/ice/cpp/src/Slice/DeprecationReporter.cpp +172 -0
- data/dist/ice/cpp/src/Slice/DeprecationReporter.h +14 -0
- data/dist/ice/cpp/src/Slice/DocCommentParser.cpp +736 -0
- data/dist/ice/cpp/src/Slice/DocCommentParser.h +61 -0
- data/dist/ice/cpp/src/Slice/FileTracker.cpp +25 -75
- data/dist/ice/cpp/src/Slice/FileTracker.h +35 -56
- data/dist/ice/cpp/src/Slice/Grammar.cpp +2711 -3382
- data/dist/ice/cpp/src/Slice/Grammar.h +95 -75
- data/dist/ice/cpp/src/Slice/GrammarUtil.h +117 -217
- data/dist/ice/cpp/src/Slice/MetadataValidation.cpp +486 -0
- data/dist/ice/cpp/src/Slice/MetadataValidation.h +106 -0
- data/dist/ice/cpp/src/Slice/Parser.cpp +3068 -5223
- data/dist/ice/cpp/src/Slice/Parser.h +1086 -1065
- data/dist/ice/cpp/src/Slice/Preprocessor.cpp +97 -599
- data/dist/ice/cpp/src/Slice/Preprocessor.h +26 -42
- data/dist/ice/cpp/src/Slice/Scanner.cpp +1562 -924
- data/dist/ice/cpp/src/Slice/SliceUtil.cpp +517 -113
- data/dist/ice/cpp/src/Slice/StringLiteralUtil.cpp +254 -269
- data/dist/ice/cpp/src/Slice/Util.h +126 -35
- data/dist/ice/cpp/src/slice2rb/Main.cpp +13 -15
- data/dist/ice/cpp/src/slice2rb/Ruby.cpp +250 -0
- data/dist/ice/cpp/src/slice2rb/RubyUtil.cpp +1197 -0
- data/dist/ice/cpp/src/slice2rb/RubyUtil.h +56 -0
- data/dist/ice/slice/Glacier2/Metrics.ice +34 -75
- data/dist/ice/slice/Glacier2/PermissionsVerifier.ice +42 -98
- data/dist/ice/slice/Glacier2/Router.ice +80 -173
- data/dist/ice/slice/Glacier2/SSLInfo.ice +23 -40
- data/dist/ice/slice/Glacier2/Session.ice +120 -261
- data/dist/ice/slice/Ice/BuiltinSequences.ice +33 -38
- data/dist/ice/slice/Ice/Context.ice +24 -0
- data/dist/ice/slice/Ice/EndpointTypes.ice +35 -33
- data/dist/ice/slice/Ice/Identity.ice +24 -63
- data/dist/ice/slice/Ice/Locator.ice +61 -226
- data/dist/ice/slice/Ice/LocatorRegistry.ice +77 -0
- data/dist/ice/slice/Ice/Metrics.ice +189 -424
- data/dist/ice/slice/Ice/OperationMode.ice +38 -0
- data/dist/ice/slice/Ice/Process.ice +16 -52
- data/dist/ice/slice/Ice/PropertiesAdmin.ice +25 -75
- data/dist/ice/slice/Ice/PropertyDict.ice +23 -0
- data/dist/ice/slice/Ice/RemoteLogger.ice +113 -213
- data/dist/ice/slice/Ice/ReplyStatus.ice +65 -0
- data/dist/ice/slice/Ice/Router.ice +42 -91
- data/dist/ice/slice/Ice/SliceChecksumDict.ice +7 -25
- data/dist/ice/slice/Ice/Version.ice +31 -39
- data/dist/ice/slice/IceBox/ServiceManager.ice +79 -0
- data/dist/ice/slice/IceGrid/Admin.ice +942 -1918
- data/dist/ice/slice/IceGrid/Descriptor.ice +476 -1051
- data/dist/ice/slice/IceGrid/Exception.ice +86 -384
- data/dist/ice/slice/IceGrid/FileParser.ice +23 -59
- data/dist/ice/slice/IceGrid/Registry.ice +117 -256
- data/dist/ice/slice/IceGrid/Session.ice +46 -110
- data/dist/ice/slice/IceGrid/UserAccountMapper.ice +22 -57
- data/dist/ice/slice/IceStorm/IceStorm.ice +173 -401
- data/dist/ice/slice/IceStorm/Metrics.ice +28 -70
- data/dist/lib/Glacier2/Metrics.rb +16 -31
- data/dist/lib/Glacier2/PermissionsVerifier.rb +18 -50
- data/dist/lib/Glacier2/Router.rb +20 -42
- data/dist/lib/Glacier2/SSLInfo.rb +14 -22
- data/dist/lib/Glacier2/Session.rb +53 -113
- data/dist/lib/Glacier2.rb +6 -6
- data/dist/lib/Ice/BuiltinSequences.rb +14 -26
- data/dist/lib/Ice/CompressBatch.rb +50 -0
- data/dist/lib/Ice/Context.rb +12 -0
- data/dist/lib/Ice/EndpointSelectionType.rb +49 -0
- data/dist/lib/Ice/EndpointTypes.rb +14 -55
- data/dist/lib/Ice/Exception.rb +20 -0
- data/dist/lib/Ice/Identity.rb +10 -26
- data/dist/lib/Ice/IdentitySpaceship.rb +16 -0
- data/dist/lib/Ice/InitializationData.rb +12 -0
- data/dist/lib/Ice/LocalExceptions.rb +168 -0
- data/dist/lib/Ice/Locator.rb +21 -134
- data/dist/lib/Ice/LocatorRegistry.rb +73 -0
- data/dist/lib/Ice/Metrics.rb +85 -132
- data/dist/lib/Ice/OperationMode.rb +58 -0
- data/dist/lib/Ice/Process.rb +12 -31
- data/dist/lib/Ice/PropertiesAdmin.rb +12 -36
- data/dist/lib/Ice/PropertyDict.rb +12 -0
- data/dist/lib/Ice/Proxy.rb +85 -0
- data/dist/lib/Ice/ProxyFunctions.rb +69 -0
- data/dist/lib/Ice/RemoteLogger.rb +29 -60
- data/dist/lib/Ice/ReplyStatus.rb +65 -0
- data/dist/lib/Ice/Router.rb +19 -47
- data/dist/lib/Ice/SliceChecksumDict.rb +5 -17
- data/dist/lib/Ice/SliceUtil.rb +41 -0
- data/dist/lib/Ice/Struct.rb +11 -0
- data/dist/lib/Ice/ToStringMode.rb +50 -0
- data/dist/lib/Ice/Value.rb +93 -0
- data/dist/lib/Ice/Version.rb +12 -24
- data/dist/lib/Ice.rb +29 -665
- data/dist/lib/IceBox/ServiceManager.rb +104 -0
- data/dist/lib/IceBox.rb +2 -4
- data/dist/lib/IceGrid/Admin.rb +303 -291
- data/dist/lib/IceGrid/Descriptor.rb +147 -192
- data/dist/lib/IceGrid/Exception.rb +26 -257
- data/dist/lib/IceGrid/FileParser.rb +12 -36
- data/dist/lib/IceGrid/Registry.rb +35 -76
- data/dist/lib/IceGrid/Session.rb +19 -34
- data/dist/lib/IceGrid/UserAccountMapper.rb +11 -34
- data/dist/lib/IceGrid.rb +3 -3
- data/dist/lib/IceStorm/IceStorm.rb +51 -132
- data/dist/lib/IceStorm/Metrics.rb +19 -37
- data/dist/lib/IceStorm.rb +3 -5
- data/extconf.rb +6 -8
- data/ice.gemspec +3 -3
- data/scripts/slice2rb +1 -3
- metadata +206 -386
- data/dist/IceRuby/ValueFactoryManager.cpp +0 -445
- data/dist/IceRuby/ValueFactoryManager.h +0 -95
- data/dist/ice/cpp/include/Ice/Application.h +0 -326
- data/dist/ice/cpp/include/Ice/AsyncResult.h +0 -155
- data/dist/ice/cpp/include/Ice/AsyncResultF.h +0 -23
- data/dist/ice/cpp/include/Ice/BatchRequestInterceptor.h +0 -75
- data/dist/ice/cpp/include/Ice/CommunicatorAsync.h +0 -154
- data/dist/ice/cpp/include/Ice/Comparable.h +0 -205
- data/dist/ice/cpp/include/Ice/ConnectionAsync.h +0 -302
- data/dist/ice/cpp/include/Ice/ConsoleUtil.h +0 -23
- data/dist/ice/cpp/include/Ice/DefaultValueFactory.h +0 -57
- data/dist/ice/cpp/include/Ice/DispatchInterceptor.h +0 -41
- data/dist/ice/cpp/include/Ice/Dispatcher.h +0 -67
- data/dist/ice/cpp/include/Ice/DynamicLibrary.h +0 -102
- data/dist/ice/cpp/include/Ice/DynamicLibraryF.h +0 -24
- data/dist/ice/cpp/include/Ice/ExceptionHelpers.h +0 -74
- data/dist/ice/cpp/include/Ice/FactoryTable.h +0 -73
- data/dist/ice/cpp/include/Ice/FactoryTableInit.h +0 -84
- data/dist/ice/cpp/include/Ice/Functional.h +0 -140
- data/dist/ice/cpp/include/Ice/GCObject.h +0 -76
- data/dist/ice/cpp/include/Ice/Handle.h +0 -182
- data/dist/ice/cpp/include/Ice/Incoming.h +0 -225
- data/dist/ice/cpp/include/Ice/IncomingAsync.h +0 -186
- data/dist/ice/cpp/include/Ice/IncomingAsyncF.h +0 -36
- data/dist/ice/cpp/include/Ice/InterfaceByValue.h +0 -57
- data/dist/ice/cpp/include/Ice/LocalObject.h +0 -35
- data/dist/ice/cpp/include/Ice/LocalObjectF.h +0 -21
- data/dist/ice/cpp/include/Ice/MetricsAdminI.h +0 -715
- data/dist/ice/cpp/include/Ice/MetricsFunctional.h +0 -159
- data/dist/ice/cpp/include/Ice/MetricsObserverI.h +0 -669
- data/dist/ice/cpp/include/Ice/Optional.h +0 -1114
- data/dist/ice/cpp/include/Ice/OutgoingAsyncF.h +0 -39
- data/dist/ice/cpp/include/Ice/Protocol.h +0 -274
- data/dist/ice/cpp/include/Ice/ProxyFactoryF.h +0 -21
- data/dist/ice/cpp/include/Ice/ProxyHandle.h +0 -318
- data/dist/ice/cpp/include/Ice/RegisterPlugins.h +0 -127
- data/dist/ice/cpp/include/Ice/ResponseHandlerF.h +0 -25
- data/dist/ice/cpp/include/Ice/SHA1.h +0 -40
- data/dist/ice/cpp/include/Ice/ServantManagerF.h +0 -21
- data/dist/ice/cpp/include/Ice/SliceChecksums.h +0 -33
- data/dist/ice/cpp/include/Ice/ThreadPoolF.h +0 -23
- data/dist/ice/cpp/include/Ice/UniquePtr.h +0 -95
- data/dist/ice/cpp/include/Ice/UniqueRef.h +0 -97
- data/dist/ice/cpp/include/IceSSL/Config.h +0 -21
- data/dist/ice/cpp/include/IceSSL/IceSSL.h +0 -24
- data/dist/ice/cpp/include/IceSSL/OpenSSL.h +0 -147
- data/dist/ice/cpp/include/IceSSL/Plugin.h +0 -712
- data/dist/ice/cpp/include/IceSSL/SChannel.h +0 -72
- data/dist/ice/cpp/include/IceSSL/SecureTransport.h +0 -72
- data/dist/ice/cpp/include/IceUtil/Atomic.h +0 -179
- data/dist/ice/cpp/include/IceUtil/Cond.h +0 -317
- data/dist/ice/cpp/include/IceUtil/Config.h +0 -392
- data/dist/ice/cpp/include/IceUtil/ConsoleUtil.h +0 -92
- data/dist/ice/cpp/include/IceUtil/CountDownLatch.h +0 -45
- data/dist/ice/cpp/include/IceUtil/CtrlCHandler.h +0 -96
- data/dist/ice/cpp/include/IceUtil/DisableWarnings.h +0 -44
- data/dist/ice/cpp/include/IceUtil/Exception.h +0 -394
- data/dist/ice/cpp/include/IceUtil/FileUtil.h +0 -140
- data/dist/ice/cpp/include/IceUtil/Functional.h +0 -389
- data/dist/ice/cpp/include/IceUtil/Handle.h +0 -261
- data/dist/ice/cpp/include/IceUtil/IceUtil.h +0 -40
- data/dist/ice/cpp/include/IceUtil/InputUtil.h +0 -42
- data/dist/ice/cpp/include/IceUtil/Iterator.h +0 -31
- data/dist/ice/cpp/include/IceUtil/Lock.h +0 -128
- data/dist/ice/cpp/include/IceUtil/Monitor.h +0 -243
- data/dist/ice/cpp/include/IceUtil/Mutex.h +0 -349
- data/dist/ice/cpp/include/IceUtil/MutexProtocol.h +0 -23
- data/dist/ice/cpp/include/IceUtil/MutexPtrLock.h +0 -78
- data/dist/ice/cpp/include/IceUtil/MutexPtrTryLock.h +0 -77
- data/dist/ice/cpp/include/IceUtil/Optional.h +0 -433
- data/dist/ice/cpp/include/IceUtil/Options.h +0 -135
- data/dist/ice/cpp/include/IceUtil/OutputUtil.h +0 -383
- data/dist/ice/cpp/include/IceUtil/PushDisableWarnings.h +0 -33
- data/dist/ice/cpp/include/IceUtil/Random.h +0 -55
- data/dist/ice/cpp/include/IceUtil/RecMutex.h +0 -107
- data/dist/ice/cpp/include/IceUtil/ResourceConfig.h +0 -37
- data/dist/ice/cpp/include/IceUtil/ScannerConfig.h +0 -40
- data/dist/ice/cpp/include/IceUtil/ScopedArray.h +0 -98
- data/dist/ice/cpp/include/IceUtil/Shared.h +0 -127
- data/dist/ice/cpp/include/IceUtil/StopWatch.h +0 -49
- data/dist/ice/cpp/include/IceUtil/StringConverter.h +0 -195
- data/dist/ice/cpp/include/IceUtil/StringUtil.h +0 -97
- data/dist/ice/cpp/include/IceUtil/Thread.h +0 -160
- data/dist/ice/cpp/include/IceUtil/ThreadException.h +0 -94
- data/dist/ice/cpp/include/IceUtil/Time.h +0 -205
- data/dist/ice/cpp/include/IceUtil/Timer.h +0 -153
- data/dist/ice/cpp/include/IceUtil/UUID.h +0 -21
- data/dist/ice/cpp/include/generated/Glacier2/Metrics.h +0 -475
- data/dist/ice/cpp/include/generated/Glacier2/PermissionsVerifier.h +0 -1430
- data/dist/ice/cpp/include/generated/Glacier2/PermissionsVerifierF.h +0 -147
- data/dist/ice/cpp/include/generated/Glacier2/Router.h +0 -3260
- data/dist/ice/cpp/include/generated/Glacier2/RouterF.h +0 -125
- data/dist/ice/cpp/include/generated/Glacier2/SSLInfo.h +0 -223
- data/dist/ice/cpp/include/generated/Glacier2/Session.h +0 -5894
- data/dist/ice/cpp/include/generated/Ice/Communicator.h +0 -1162
- data/dist/ice/cpp/include/generated/Ice/CommunicatorF.h +0 -101
- data/dist/ice/cpp/include/generated/Ice/Connection.h +0 -1703
- data/dist/ice/cpp/include/generated/Ice/ConnectionF.h +0 -119
- data/dist/ice/cpp/include/generated/Ice/Current.h +0 -322
- data/dist/ice/cpp/include/generated/Ice/Endpoint.h +0 -979
- data/dist/ice/cpp/include/generated/Ice/EndpointF.h +0 -166
- data/dist/ice/cpp/include/generated/Ice/FacetMap.h +0 -80
- data/dist/ice/cpp/include/generated/Ice/ImplicitContext.h +0 -284
- data/dist/ice/cpp/include/generated/Ice/ImplicitContextF.h +0 -101
- data/dist/ice/cpp/include/generated/Ice/Instrumentation.h +0 -1203
- data/dist/ice/cpp/include/generated/Ice/InstrumentationF.h +0 -128
- data/dist/ice/cpp/include/generated/Ice/LocalException.h +0 -7437
- data/dist/ice/cpp/include/generated/Ice/LocatorF.h +0 -147
- data/dist/ice/cpp/include/generated/Ice/Logger.h +0 -237
- data/dist/ice/cpp/include/generated/Ice/LoggerF.h +0 -101
- data/dist/ice/cpp/include/generated/Ice/ObjectAdapter.h +0 -1181
- data/dist/ice/cpp/include/generated/Ice/ObjectAdapterF.h +0 -101
- data/dist/ice/cpp/include/generated/Ice/ObjectFactory.h +0 -203
- data/dist/ice/cpp/include/generated/Ice/Plugin.h +0 -318
- data/dist/ice/cpp/include/generated/Ice/PluginF.h +0 -110
- data/dist/ice/cpp/include/generated/Ice/ProcessF.h +0 -125
- data/dist/ice/cpp/include/generated/Ice/Properties.h +0 -452
- data/dist/ice/cpp/include/generated/Ice/PropertiesF.h +0 -134
- data/dist/ice/cpp/include/generated/Ice/RouterF.h +0 -125
- data/dist/ice/cpp/include/generated/Ice/ServantLocator.h +0 -305
- data/dist/ice/cpp/include/generated/Ice/ServantLocatorF.h +0 -101
- data/dist/ice/cpp/include/generated/Ice/ValueFactory.h +0 -330
- data/dist/ice/cpp/include/generated/IceBox/IceBox.h +0 -3269
- data/dist/ice/cpp/include/generated/IceGrid/Admin.h +0 -33773
- data/dist/ice/cpp/include/generated/IceGrid/Descriptor.h +0 -5254
- data/dist/ice/cpp/include/generated/IceGrid/Exception.h +0 -2834
- data/dist/ice/cpp/include/generated/IceGrid/FileParser.h +0 -824
- data/dist/ice/cpp/include/generated/IceGrid/PluginFacade.h +0 -635
- data/dist/ice/cpp/include/generated/IceGrid/Registry.h +0 -5089
- data/dist/ice/cpp/include/generated/IceGrid/Session.h +0 -2240
- data/dist/ice/cpp/include/generated/IceGrid/UserAccountMapper.h +0 -800
- data/dist/ice/cpp/include/generated/IcePatch2/FileInfo.h +0 -325
- data/dist/ice/cpp/include/generated/IcePatch2/FileServer.h +0 -2891
- data/dist/ice/cpp/include/generated/IceSSL/ConnectionInfo.h +0 -228
- data/dist/ice/cpp/include/generated/IceSSL/ConnectionInfoF.h +0 -101
- data/dist/ice/cpp/include/generated/IceSSL/EndpointInfo.h +0 -186
- data/dist/ice/cpp/include/generated/IceStorm/IceStorm.h +0 -6627
- data/dist/ice/cpp/include/generated/IceStorm/Metrics.h +0 -665
- data/dist/ice/cpp/src/Ice/ACM.cpp +0 -380
- data/dist/ice/cpp/src/Ice/ACM.h +0 -119
- data/dist/ice/cpp/src/Ice/ACMF.h +0 -30
- data/dist/ice/cpp/src/Ice/Acceptor.cpp +0 -16
- data/dist/ice/cpp/src/Ice/Application.cpp +0 -661
- data/dist/ice/cpp/src/Ice/AsyncResult.cpp +0 -70
- data/dist/ice/cpp/src/Ice/CommunicatorI.cpp +0 -586
- data/dist/ice/cpp/src/Ice/CommunicatorI.h +0 -167
- data/dist/ice/cpp/src/Ice/Cond.cpp +0 -381
- data/dist/ice/cpp/src/Ice/ConnectionRequestHandler.cpp +0 -73
- data/dist/ice/cpp/src/Ice/ConnectionRequestHandler.h +0 -41
- data/dist/ice/cpp/src/Ice/Connector.cpp +0 -16
- data/dist/ice/cpp/src/Ice/CountDownLatch.cpp +0 -171
- data/dist/ice/cpp/src/Ice/DispatchInterceptor.cpp +0 -37
- data/dist/ice/cpp/src/Ice/FactoryTable.cpp +0 -162
- data/dist/ice/cpp/src/Ice/FactoryTableInit.cpp +0 -88
- data/dist/ice/cpp/src/Ice/GCObject.cpp +0 -442
- data/dist/ice/cpp/src/Ice/IconvStringConverter.cpp +0 -51
- data/dist/ice/cpp/src/Ice/ImplicitContextI.cpp +0 -655
- data/dist/ice/cpp/src/Ice/ImplicitContextI.h +0 -48
- data/dist/ice/cpp/src/Ice/Incoming.cpp +0 -795
- data/dist/ice/cpp/src/Ice/IncomingAsync.cpp +0 -230
- data/dist/ice/cpp/src/Ice/IncomingRequest.h +0 -33
- data/dist/ice/cpp/src/Ice/LocalObject.cpp +0 -23
- data/dist/ice/cpp/src/Ice/MetricsObserverI.cpp +0 -8
- data/dist/ice/cpp/src/Ice/PropertiesAdminI.cpp +0 -265
- data/dist/ice/cpp/src/Ice/PropertiesAdminI.h +0 -64
- data/dist/ice/cpp/src/Ice/PropertiesI.cpp +0 -739
- data/dist/ice/cpp/src/Ice/PropertiesI.h +0 -70
- data/dist/ice/cpp/src/Ice/ProtocolPluginFacadeF.h +0 -21
- data/dist/ice/cpp/src/Ice/ProxyFactory.cpp +0 -300
- data/dist/ice/cpp/src/Ice/ProxyFactory.h +0 -57
- data/dist/ice/cpp/src/Ice/RegisterPluginsInit.cpp +0 -38
- data/dist/ice/cpp/src/Ice/RegisterPluginsInit.h +0 -20
- data/dist/ice/cpp/src/Ice/ReplyStatus.h +0 -24
- data/dist/ice/cpp/src/Ice/RequestHandlerFactory.cpp +0 -77
- data/dist/ice/cpp/src/Ice/RequestHandlerFactory.h +0 -37
- data/dist/ice/cpp/src/Ice/ResponseHandler.cpp +0 -12
- data/dist/ice/cpp/src/Ice/ResponseHandler.h +0 -43
- data/dist/ice/cpp/src/Ice/SliceChecksums.cpp +0 -75
- data/dist/ice/cpp/src/Ice/StringConverterPlugin.cpp +0 -192
- data/dist/ice/cpp/src/Ice/StringUtil.h +0 -30
- data/dist/ice/cpp/src/Ice/Thread.cpp +0 -569
- data/dist/ice/cpp/src/Ice/ValueFactoryManagerI.cpp +0 -61
- data/dist/ice/cpp/src/Ice/ValueFactoryManagerI.h +0 -37
- data/dist/ice/cpp/src/Ice/VirtualShared.h +0 -38
- data/dist/ice/cpp/src/Ice/generated/Communicator.cpp +0 -79
- data/dist/ice/cpp/src/Ice/generated/CommunicatorF.cpp +0 -61
- data/dist/ice/cpp/src/Ice/generated/Connection.cpp +0 -155
- data/dist/ice/cpp/src/Ice/generated/ConnectionF.cpp +0 -61
- data/dist/ice/cpp/src/Ice/generated/Current.cpp +0 -62
- data/dist/ice/cpp/src/Ice/generated/Endpoint.cpp +0 -147
- data/dist/ice/cpp/src/Ice/generated/EndpointF.cpp +0 -61
- data/dist/ice/cpp/src/Ice/generated/FacetMap.cpp +0 -49
- data/dist/ice/cpp/src/Ice/generated/ImplicitContext.cpp +0 -75
- data/dist/ice/cpp/src/Ice/generated/ImplicitContextF.cpp +0 -61
- data/dist/ice/cpp/src/Ice/generated/Instrumentation.cpp +0 -188
- data/dist/ice/cpp/src/Ice/generated/InstrumentationF.cpp +0 -66
- data/dist/ice/cpp/src/Ice/generated/LocalException.cpp +0 -3262
- data/dist/ice/cpp/src/Ice/generated/LocatorF.cpp +0 -63
- data/dist/ice/cpp/src/Ice/generated/Logger.cpp +0 -73
- data/dist/ice/cpp/src/Ice/generated/LoggerF.cpp +0 -61
- data/dist/ice/cpp/src/Ice/generated/ObjectAdapter.cpp +0 -79
- data/dist/ice/cpp/src/Ice/generated/ObjectAdapterF.cpp +0 -61
- data/dist/ice/cpp/src/Ice/generated/ObjectFactory.cpp +0 -75
- data/dist/ice/cpp/src/Ice/generated/Plugin.cpp +0 -87
- data/dist/ice/cpp/src/Ice/generated/PluginF.cpp +0 -61
- data/dist/ice/cpp/src/Ice/generated/ProcessF.cpp +0 -63
- data/dist/ice/cpp/src/Ice/generated/Properties.cpp +0 -78
- data/dist/ice/cpp/src/Ice/generated/PropertiesF.cpp +0 -63
- data/dist/ice/cpp/src/Ice/generated/RouterF.cpp +0 -63
- data/dist/ice/cpp/src/Ice/generated/ServantLocator.cpp +0 -75
- data/dist/ice/cpp/src/Ice/generated/ServantLocatorF.cpp +0 -61
- data/dist/ice/cpp/src/Ice/generated/ValueFactory.cpp +0 -83
- data/dist/ice/cpp/src/Ice/ios/StreamAcceptor.cpp +0 -154
- data/dist/ice/cpp/src/Ice/ios/StreamAcceptor.h +0 -49
- data/dist/ice/cpp/src/Ice/ios/StreamConnector.cpp +0 -146
- data/dist/ice/cpp/src/Ice/ios/StreamConnector.h +0 -52
- data/dist/ice/cpp/src/Ice/ios/StreamEndpointI.cpp +0 -477
- data/dist/ice/cpp/src/Ice/ios/StreamEndpointI.h +0 -156
- data/dist/ice/cpp/src/Ice/ios/StreamTransceiver.cpp +0 -570
- data/dist/ice/cpp/src/Ice/ios/StreamTransceiver.h +0 -93
- data/dist/ice/cpp/src/IceDiscovery/generated/IceDiscovery/IceDiscovery.h +0 -1889
- data/dist/ice/cpp/src/IceDiscovery/generated/IceDiscovery.cpp +0 -915
- data/dist/ice/cpp/src/IceLocatorDiscovery/generated/IceLocatorDiscovery/IceLocatorDiscovery.h +0 -1197
- data/dist/ice/cpp/src/IceLocatorDiscovery/generated/IceLocatorDiscovery.cpp +0 -730
- data/dist/ice/cpp/src/IceSSL/AcceptorI.cpp +0 -105
- data/dist/ice/cpp/src/IceSSL/AcceptorI.h +0 -52
- data/dist/ice/cpp/src/IceSSL/CertificateI.cpp +0 -301
- data/dist/ice/cpp/src/IceSSL/CertificateI.h +0 -64
- data/dist/ice/cpp/src/IceSSL/ConnectorI.cpp +0 -102
- data/dist/ice/cpp/src/IceSSL/ConnectorI.h +0 -44
- data/dist/ice/cpp/src/IceSSL/EndpointI.cpp +0 -372
- data/dist/ice/cpp/src/IceSSL/EndpointI.h +0 -100
- data/dist/ice/cpp/src/IceSSL/Instance.cpp +0 -28
- data/dist/ice/cpp/src/IceSSL/Instance.h +0 -37
- data/dist/ice/cpp/src/IceSSL/InstanceF.h +0 -33
- data/dist/ice/cpp/src/IceSSL/OpenSSLCertificateI.cpp +0 -688
- data/dist/ice/cpp/src/IceSSL/OpenSSLEngine.cpp +0 -1147
- data/dist/ice/cpp/src/IceSSL/OpenSSLEngine.h +0 -59
- data/dist/ice/cpp/src/IceSSL/OpenSSLEngineF.h +0 -27
- data/dist/ice/cpp/src/IceSSL/OpenSSLPluginI.cpp +0 -127
- data/dist/ice/cpp/src/IceSSL/OpenSSLTransceiverI.cpp +0 -1092
- data/dist/ice/cpp/src/IceSSL/OpenSSLTransceiverI.h +0 -90
- data/dist/ice/cpp/src/IceSSL/OpenSSLUtil.cpp +0 -288
- data/dist/ice/cpp/src/IceSSL/OpenSSLUtil.h +0 -58
- data/dist/ice/cpp/src/IceSSL/PluginI.cpp +0 -246
- data/dist/ice/cpp/src/IceSSL/PluginI.h +0 -67
- data/dist/ice/cpp/src/IceSSL/RFC2253.h +0 -62
- data/dist/ice/cpp/src/IceSSL/SChannelCertificateI.cpp +0 -721
- data/dist/ice/cpp/src/IceSSL/SChannelEngine.cpp +0 -1283
- data/dist/ice/cpp/src/IceSSL/SChannelEngine.h +0 -123
- data/dist/ice/cpp/src/IceSSL/SChannelEngineF.h +0 -31
- data/dist/ice/cpp/src/IceSSL/SChannelPluginI.cpp +0 -73
- data/dist/ice/cpp/src/IceSSL/SChannelTransceiverI.cpp +0 -1174
- data/dist/ice/cpp/src/IceSSL/SChannelTransceiverI.h +0 -133
- data/dist/ice/cpp/src/IceSSL/SSLEngine.cpp +0 -313
- data/dist/ice/cpp/src/IceSSL/SSLEngine.h +0 -100
- data/dist/ice/cpp/src/IceSSL/SSLEngineF.h +0 -21
- data/dist/ice/cpp/src/IceSSL/SecureTransportCertificateI.cpp +0 -999
- data/dist/ice/cpp/src/IceSSL/SecureTransportEngine.cpp +0 -1308
- data/dist/ice/cpp/src/IceSSL/SecureTransportEngine.h +0 -59
- data/dist/ice/cpp/src/IceSSL/SecureTransportEngineF.h +0 -29
- data/dist/ice/cpp/src/IceSSL/SecureTransportPluginI.cpp +0 -75
- data/dist/ice/cpp/src/IceSSL/SecureTransportTransceiverI.cpp +0 -719
- data/dist/ice/cpp/src/IceSSL/SecureTransportTransceiverI.h +0 -92
- data/dist/ice/cpp/src/IceSSL/SecureTransportUtil.cpp +0 -868
- data/dist/ice/cpp/src/IceSSL/SecureTransportUtil.h +0 -45
- data/dist/ice/cpp/src/IceSSL/TrustManager.cpp +0 -236
- data/dist/ice/cpp/src/IceSSL/TrustManager.h +0 -46
- data/dist/ice/cpp/src/IceSSL/TrustManagerF.h +0 -21
- data/dist/ice/cpp/src/IceSSL/Util.cpp +0 -192
- data/dist/ice/cpp/src/IceSSL/Util.h +0 -99
- data/dist/ice/cpp/src/IceSSL/generated/ConnectionInfo.cpp +0 -75
- data/dist/ice/cpp/src/IceSSL/generated/ConnectionInfoF.cpp +0 -61
- data/dist/ice/cpp/src/IceSSL/generated/EndpointInfo.cpp +0 -75
- data/dist/ice/cpp/src/IceUtil/ConvertUTF.cpp +0 -472
- data/dist/ice/cpp/src/IceUtil/ConvertUTF.h +0 -147
- data/dist/ice/cpp/src/IceUtil/CtrlCHandler.cpp +0 -259
- data/dist/ice/cpp/src/IceUtil/FileUtil.cpp +0 -471
- data/dist/ice/cpp/src/IceUtil/InputUtil.cpp +0 -36
- data/dist/ice/cpp/src/IceUtil/MutexProtocol.cpp +0 -19
- data/dist/ice/cpp/src/IceUtil/OutputUtil.cpp +0 -609
- data/dist/ice/cpp/src/IceUtil/Random.cpp +0 -180
- data/dist/ice/cpp/src/IceUtil/RecMutex.cpp +0 -238
- data/dist/ice/cpp/src/IceUtil/Shared.cpp +0 -71
- data/dist/ice/cpp/src/IceUtil/StringConverter.cpp +0 -690
- data/dist/ice/cpp/src/IceUtil/StringUtil.cpp +0 -1135
- data/dist/ice/cpp/src/IceUtil/ThreadException.cpp +0 -130
- data/dist/ice/cpp/src/IceUtil/Time.cpp +0 -307
- data/dist/ice/cpp/src/IceUtil/UUID.cpp +0 -165
- data/dist/ice/cpp/src/IceUtil/Unicode.cpp +0 -183
- data/dist/ice/cpp/src/IceUtil/Unicode.h +0 -43
- data/dist/ice/cpp/src/IceUtil/UtilException.cpp +0 -839
- data/dist/ice/cpp/src/Slice/CPlusPlusUtil.cpp +0 -1810
- data/dist/ice/cpp/src/Slice/CPlusPlusUtil.h +0 -72
- data/dist/ice/cpp/src/Slice/Checksum.cpp +0 -447
- data/dist/ice/cpp/src/Slice/Checksum.h +0 -21
- data/dist/ice/cpp/src/Slice/JavaUtil.cpp +0 -5183
- data/dist/ice/cpp/src/Slice/JavaUtil.h +0 -407
- data/dist/ice/cpp/src/Slice/MD5.cpp +0 -52
- data/dist/ice/cpp/src/Slice/MD5.h +0 -39
- data/dist/ice/cpp/src/Slice/MD5I.cpp +0 -393
- data/dist/ice/cpp/src/Slice/MD5I.h +0 -91
- data/dist/ice/cpp/src/Slice/PHPUtil.cpp +0 -157
- data/dist/ice/cpp/src/Slice/PHPUtil.h +0 -36
- data/dist/ice/cpp/src/Slice/Python.cpp +0 -830
- data/dist/ice/cpp/src/Slice/PythonUtil.cpp +0 -3439
- data/dist/ice/cpp/src/Slice/PythonUtil.h +0 -70
- data/dist/ice/cpp/src/Slice/Ruby.cpp +0 -350
- data/dist/ice/cpp/src/Slice/RubyUtil.cpp +0 -1571
- data/dist/ice/cpp/src/Slice/RubyUtil.h +0 -49
- data/dist/ice/slice/Glacier2/PermissionsVerifierF.ice +0 -30
- data/dist/ice/slice/Glacier2/RouterF.ice +0 -29
- data/dist/ice/slice/Ice/Communicator.ice +0 -676
- data/dist/ice/slice/Ice/CommunicatorF.ice +0 -31
- data/dist/ice/slice/Ice/Connection.ice +0 -516
- data/dist/ice/slice/Ice/ConnectionF.ice +0 -33
- data/dist/ice/slice/Ice/Current.ice +0 -170
- data/dist/ice/slice/Ice/Endpoint.ice +0 -291
- data/dist/ice/slice/Ice/EndpointF.ice +0 -43
- data/dist/ice/slice/Ice/FacetMap.ice +0 -36
- data/dist/ice/slice/Ice/ImplicitContext.ice +0 -119
- data/dist/ice/slice/Ice/ImplicitContextF.ice +0 -30
- data/dist/ice/slice/Ice/Instrumentation.ice +0 -509
- data/dist/ice/slice/Ice/InstrumentationF.ice +0 -38
- data/dist/ice/slice/Ice/LocalException.ice +0 -1040
- data/dist/ice/slice/Ice/LocatorF.ice +0 -32
- data/dist/ice/slice/Ice/Logger.ice +0 -99
- data/dist/ice/slice/Ice/LoggerF.ice +0 -31
- data/dist/ice/slice/Ice/ObjectAdapter.ice +0 -710
- data/dist/ice/slice/Ice/ObjectAdapterF.ice +0 -31
- data/dist/ice/slice/Ice/ObjectFactory.ice +0 -71
- data/dist/ice/slice/Ice/Plugin.ice +0 -131
- data/dist/ice/slice/Ice/PluginF.ice +0 -36
- data/dist/ice/slice/Ice/ProcessF.ice +0 -31
- data/dist/ice/slice/Ice/Properties.ice +0 -244
- data/dist/ice/slice/Ice/PropertiesF.ice +0 -32
- data/dist/ice/slice/Ice/RouterF.ice +0 -31
- data/dist/ice/slice/Ice/ServantLocator.ice +0 -136
- data/dist/ice/slice/Ice/ServantLocatorF.ice +0 -31
- data/dist/ice/slice/Ice/ValueFactory.ice +0 -133
- data/dist/ice/slice/IceBox/IceBox.ice +0 -216
- data/dist/ice/slice/IceGrid/PluginFacade.ice +0 -329
- data/dist/ice/slice/IcePatch2/FileInfo.ice +0 -85
- data/dist/ice/slice/IcePatch2/FileServer.ice +0 -191
- data/dist/lib/Glacier2/PermissionsVerifierF.rb +0 -30
- data/dist/lib/Glacier2/RouterF.rb +0 -25
- data/dist/lib/Ice/Communicator.rb +0 -87
- data/dist/lib/Ice/CommunicatorF.rb +0 -24
- data/dist/lib/Ice/Connection.rb +0 -413
- data/dist/lib/Ice/ConnectionF.rb +0 -32
- data/dist/lib/Ice/Current.rb +0 -141
- data/dist/lib/Ice/Endpoint.rb +0 -187
- data/dist/lib/Ice/EndpointF.rb +0 -48
- data/dist/lib/Ice/FacetMap.rb +0 -24
- data/dist/lib/Ice/ImplicitContext.rb +0 -26
- data/dist/lib/Ice/ImplicitContextF.rb +0 -24
- data/dist/lib/Ice/Instrumentation.rb +0 -169
- data/dist/lib/Ice/InstrumentationF.rb +0 -31
- data/dist/lib/Ice/LocalException.rb +0 -1031
- data/dist/lib/Ice/LocatorF.rb +0 -30
- data/dist/lib/Ice/Logger.rb +0 -24
- data/dist/lib/Ice/LoggerF.rb +0 -24
- data/dist/lib/Ice/ObjectAdapter.rb +0 -29
- data/dist/lib/Ice/ObjectAdapterF.rb +0 -24
- data/dist/lib/Ice/ObjectFactory.rb +0 -24
- data/dist/lib/Ice/Plugin.rb +0 -30
- data/dist/lib/Ice/PluginF.rb +0 -28
- data/dist/lib/Ice/ProcessF.rb +0 -25
- data/dist/lib/Ice/Properties.rb +0 -25
- data/dist/lib/Ice/PropertiesF.rb +0 -29
- data/dist/lib/Ice/RouterF.rb +0 -25
- data/dist/lib/Ice/ServantLocator.rb +0 -26
- data/dist/lib/Ice/ServantLocatorF.rb +0 -24
- data/dist/lib/Ice/ValueFactory.rb +0 -28
- data/dist/lib/IceBox/IceBox.rb +0 -164
- data/dist/lib/IceGrid/PluginFacade.rb +0 -35
- data/dist/lib/IcePatch2/FileInfo.rb +0 -115
- data/dist/lib/IcePatch2/FileServer.rb +0 -123
- data/dist/lib/IcePatch2.rb +0 -5
|
@@ -1,1174 +1,1195 @@
|
|
|
1
|
-
//
|
|
2
|
-
// Copyright (c) ZeroC, Inc. All rights reserved.
|
|
3
|
-
//
|
|
1
|
+
// Copyright (c) ZeroC, Inc.
|
|
4
2
|
|
|
5
3
|
#ifndef SLICE_PARSER_H
|
|
6
4
|
#define SLICE_PARSER_H
|
|
7
5
|
|
|
8
|
-
#include <
|
|
9
|
-
#include <
|
|
10
|
-
#include <
|
|
11
|
-
#include <
|
|
12
|
-
#include <vector>
|
|
6
|
+
#include <array>
|
|
7
|
+
#include <cstdint>
|
|
8
|
+
#include <functional>
|
|
9
|
+
#include <limits>
|
|
13
10
|
#include <list>
|
|
14
|
-
#include <stack>
|
|
15
11
|
#include <map>
|
|
12
|
+
#include <memory>
|
|
13
|
+
#include <optional>
|
|
14
|
+
#include <ostream>
|
|
16
15
|
#include <set>
|
|
16
|
+
#include <stack>
|
|
17
17
|
#include <stdio.h>
|
|
18
|
+
#include <string>
|
|
19
|
+
#include <string_view>
|
|
18
20
|
|
|
19
21
|
namespace Slice
|
|
20
22
|
{
|
|
21
|
-
|
|
22
|
-
class CompilerException : public ::IceUtil::Exception
|
|
23
|
-
{
|
|
24
|
-
public:
|
|
25
|
-
|
|
26
|
-
CompilerException(const char*, int, const std::string&);
|
|
27
|
-
#ifndef ICE_CPP11_COMPILER
|
|
28
|
-
~CompilerException() throw();
|
|
29
|
-
#endif
|
|
30
|
-
virtual std::string ice_id() const;
|
|
31
|
-
virtual void ice_print(std::ostream&) const;
|
|
32
|
-
#ifndef ICE_CPP11_MAPPING
|
|
33
|
-
virtual CompilerException* ice_clone() const;
|
|
34
|
-
#endif
|
|
35
|
-
virtual void ice_throw() const;
|
|
36
|
-
|
|
37
|
-
std::string reason() const;
|
|
38
|
-
|
|
39
|
-
private:
|
|
40
|
-
|
|
41
|
-
static const char* _name;
|
|
42
|
-
const std::string _reason;
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
#if defined(_WIN32) && !defined(__MINGW32__)
|
|
46
|
-
|
|
47
|
-
const IceUtil::Int64 Int32Max = 0x7fffffffi64;
|
|
48
|
-
const IceUtil::Int64 Int32Min = -Int32Max - 1i64;
|
|
49
|
-
|
|
50
|
-
#else
|
|
51
|
-
|
|
52
|
-
# if defined(INT32_MIN) && defined(INT32_MAX)
|
|
53
|
-
|
|
54
|
-
const IceUtil::Int64 Int32Max = INT32_MAX;
|
|
55
|
-
const IceUtil::Int64 Int32Min = INT32_MIN;
|
|
56
|
-
|
|
57
|
-
# else
|
|
58
|
-
|
|
59
|
-
const IceUtil::Int64 Int32Max = 0x7fffffffLL;
|
|
60
|
-
const IceUtil::Int64 Int32Min = -Int32Max - 1LL;
|
|
61
|
-
|
|
62
|
-
# endif
|
|
63
|
-
|
|
64
|
-
#endif
|
|
65
|
-
|
|
66
|
-
const IceUtil::Int64 Int16Max = 0x7fff;
|
|
67
|
-
const IceUtil::Int64 Int16Min = -Int16Max - 1;
|
|
68
|
-
const IceUtil::Int64 ByteMax = 0xff;
|
|
69
|
-
const IceUtil::Int64 ByteMin = 0x00;
|
|
70
|
-
|
|
71
|
-
enum NodeType
|
|
72
|
-
{
|
|
73
|
-
Dummy,
|
|
74
|
-
Real
|
|
75
|
-
};
|
|
76
|
-
|
|
77
|
-
//
|
|
78
|
-
// Format preference for classes and exceptions.
|
|
79
|
-
//
|
|
80
|
-
enum FormatType
|
|
81
|
-
{
|
|
82
|
-
DefaultFormat, // No preference was specified.
|
|
83
|
-
CompactFormat, // Minimal format.
|
|
84
|
-
SlicedFormat // Full format.
|
|
85
|
-
};
|
|
86
|
-
|
|
87
|
-
enum WarningCategory
|
|
88
|
-
{
|
|
89
|
-
All,
|
|
90
|
-
Deprecated,
|
|
91
|
-
InvalidMetaData
|
|
92
|
-
};
|
|
93
|
-
|
|
94
|
-
class GrammarBase;
|
|
95
|
-
class SyntaxTreeBase;
|
|
96
|
-
class Type;
|
|
97
|
-
class Builtin;
|
|
98
|
-
class Contained;
|
|
99
|
-
class Container;
|
|
100
|
-
class Module;
|
|
101
|
-
class Constructed;
|
|
102
|
-
class ClassDecl;
|
|
103
|
-
class ClassDef;
|
|
104
|
-
class Proxy;
|
|
105
|
-
class Exception;
|
|
106
|
-
class Struct;
|
|
107
|
-
class Operation;
|
|
108
|
-
class ParamDecl;
|
|
109
|
-
class DataMember;
|
|
110
|
-
class Sequence;
|
|
111
|
-
class Dictionary;
|
|
112
|
-
class Enum;
|
|
113
|
-
class Enumerator;
|
|
114
|
-
class Const;
|
|
115
|
-
class Unit;
|
|
116
|
-
class CICompare;
|
|
117
|
-
class DerivedToBaseCompare;
|
|
118
|
-
class ModulePartialCompare;
|
|
119
|
-
|
|
120
|
-
typedef ::IceUtil::Handle<GrammarBase> GrammarBasePtr;
|
|
121
|
-
typedef ::IceUtil::Handle<SyntaxTreeBase> SyntaxTreeBasePtr;
|
|
122
|
-
typedef ::IceUtil::Handle<Type> TypePtr;
|
|
123
|
-
typedef ::IceUtil::Handle<Builtin> BuiltinPtr;
|
|
124
|
-
typedef ::IceUtil::Handle<Contained> ContainedPtr;
|
|
125
|
-
typedef ::IceUtil::Handle<Container> ContainerPtr;
|
|
126
|
-
typedef ::IceUtil::Handle<Module> ModulePtr;
|
|
127
|
-
typedef ::IceUtil::Handle<Constructed> ConstructedPtr;
|
|
128
|
-
typedef ::IceUtil::Handle<ClassDecl> ClassDeclPtr;
|
|
129
|
-
typedef ::IceUtil::Handle<ClassDef> ClassDefPtr;
|
|
130
|
-
typedef ::IceUtil::Handle<Proxy> ProxyPtr;
|
|
131
|
-
typedef ::IceUtil::Handle<Exception> ExceptionPtr;
|
|
132
|
-
typedef ::IceUtil::Handle<Struct> StructPtr;
|
|
133
|
-
typedef ::IceUtil::Handle<Operation> OperationPtr;
|
|
134
|
-
typedef ::IceUtil::Handle<ParamDecl> ParamDeclPtr;
|
|
135
|
-
typedef ::IceUtil::Handle<DataMember> DataMemberPtr;
|
|
136
|
-
typedef ::IceUtil::Handle<Sequence> SequencePtr;
|
|
137
|
-
typedef ::IceUtil::Handle<Dictionary> DictionaryPtr;
|
|
138
|
-
typedef ::IceUtil::Handle<Enum> EnumPtr;
|
|
139
|
-
typedef ::IceUtil::Handle<Enumerator> EnumeratorPtr;
|
|
140
|
-
typedef ::IceUtil::Handle<Const> ConstPtr;
|
|
141
|
-
typedef ::IceUtil::Handle<Unit> UnitPtr;
|
|
142
|
-
|
|
143
|
-
typedef std::list<TypePtr> TypeList;
|
|
144
|
-
typedef std::list<ExceptionPtr> ExceptionList;
|
|
145
|
-
typedef std::set<std::string> StringSet;
|
|
146
|
-
typedef std::list<std::string> StringList;
|
|
147
|
-
typedef std::pair<TypePtr, std::string> TypeString;
|
|
148
|
-
typedef std::list<TypeString> TypeStringList;
|
|
149
|
-
typedef std::list<ContainedPtr> ContainedList;
|
|
150
|
-
typedef std::list<ModulePtr> ModuleList;
|
|
151
|
-
typedef std::list<ConstructedPtr> ConstructedList;
|
|
152
|
-
typedef std::list<ClassDefPtr> ClassList;
|
|
153
|
-
typedef std::list<ExceptionPtr> ExceptionList;
|
|
154
|
-
typedef std::list<StructPtr> StructList;
|
|
155
|
-
typedef std::list<SequencePtr> SequenceList;
|
|
156
|
-
typedef std::list<DictionaryPtr> DictionaryList;
|
|
157
|
-
typedef std::list<EnumPtr> EnumList;
|
|
158
|
-
typedef std::list<ConstPtr> ConstList;
|
|
159
|
-
typedef std::list<OperationPtr> OperationList;
|
|
160
|
-
typedef std::list<DataMemberPtr> DataMemberList;
|
|
161
|
-
typedef std::list<ParamDeclPtr> ParamDeclList;
|
|
162
|
-
typedef std::list<EnumeratorPtr> EnumeratorList;
|
|
163
|
-
|
|
164
|
-
struct ConstDef
|
|
165
|
-
{
|
|
166
|
-
TypePtr type;
|
|
167
|
-
SyntaxTreeBasePtr value;
|
|
168
|
-
std::string valueAsString;
|
|
169
|
-
std::string valueAsLiteral;
|
|
170
|
-
};
|
|
171
|
-
|
|
172
|
-
struct OptionalDef
|
|
173
|
-
{
|
|
174
|
-
TypePtr type;
|
|
175
|
-
std::string name;
|
|
176
|
-
bool optional;
|
|
177
|
-
int tag;
|
|
178
|
-
};
|
|
179
|
-
|
|
180
|
-
// ----------------------------------------------------------------------
|
|
181
|
-
// CICompare -- function object to do case-insensitive string comparison.
|
|
182
|
-
// ----------------------------------------------------------------------
|
|
183
|
-
|
|
184
|
-
class CICompare
|
|
185
|
-
{
|
|
186
|
-
public:
|
|
187
|
-
|
|
188
|
-
bool operator()(const std::string&, const std::string&) const;
|
|
189
|
-
};
|
|
190
|
-
|
|
191
|
-
#if defined(__SUNPRO_CC)
|
|
192
|
-
bool cICompare(const std::string&, const std::string&);
|
|
193
|
-
#endif
|
|
194
|
-
|
|
195
|
-
// ----------------------------------------------------------------------
|
|
196
|
-
// DerivedToBaseCompare -- function object to do sort exceptions into
|
|
197
|
-
// most-derived to least-derived order.
|
|
198
|
-
// ----------------------------------------------------------------------
|
|
199
|
-
|
|
200
|
-
class DerivedToBaseCompare
|
|
201
|
-
{
|
|
202
|
-
public:
|
|
203
|
-
|
|
204
|
-
bool operator()(const ExceptionPtr&, const ExceptionPtr&) const;
|
|
205
|
-
};
|
|
206
|
-
|
|
207
|
-
#if defined(__SUNPRO_CC)
|
|
208
|
-
bool derivedToBaseCompare(const ExceptionPtr&, const ExceptionPtr&);
|
|
209
|
-
#endif
|
|
210
|
-
|
|
211
|
-
// ----------------------------------------------------------------------
|
|
212
|
-
// ParserVisitor
|
|
213
|
-
// ----------------------------------------------------------------------
|
|
214
|
-
|
|
215
|
-
class ParserVisitor
|
|
216
|
-
{
|
|
217
|
-
public:
|
|
218
|
-
|
|
219
|
-
virtual ~ParserVisitor() { }
|
|
220
|
-
virtual bool visitUnitStart(const UnitPtr&) { return true; }
|
|
221
|
-
virtual void visitUnitEnd(const UnitPtr&) { }
|
|
222
|
-
virtual bool visitModuleStart(const ModulePtr&) { return true; }
|
|
223
|
-
virtual void visitModuleEnd(const ModulePtr&) { }
|
|
224
|
-
virtual void visitClassDecl(const ClassDeclPtr&) { }
|
|
225
|
-
virtual bool visitClassDefStart(const ClassDefPtr&) { return true; }
|
|
226
|
-
virtual void visitClassDefEnd(const ClassDefPtr&) { }
|
|
227
|
-
virtual bool visitExceptionStart(const ExceptionPtr&) { return true; }
|
|
228
|
-
virtual void visitExceptionEnd(const ExceptionPtr&) { }
|
|
229
|
-
virtual bool visitStructStart(const StructPtr&) { return true; }
|
|
230
|
-
virtual void visitStructEnd(const StructPtr&) { }
|
|
231
|
-
virtual void visitOperation(const OperationPtr&) { }
|
|
232
|
-
virtual void visitParamDecl(const ParamDeclPtr&) { }
|
|
233
|
-
virtual void visitDataMember(const DataMemberPtr&) { }
|
|
234
|
-
virtual void visitSequence(const SequencePtr&) { }
|
|
235
|
-
virtual void visitDictionary(const DictionaryPtr&) { }
|
|
236
|
-
virtual void visitEnum(const EnumPtr&) { }
|
|
237
|
-
virtual void visitConst(const ConstPtr&) { }
|
|
238
|
-
};
|
|
239
|
-
|
|
240
|
-
// ----------------------------------------------------------------------
|
|
241
|
-
// DefinitionContext
|
|
242
|
-
// ----------------------------------------------------------------------
|
|
243
|
-
|
|
244
|
-
class DefinitionContext : public ::IceUtil::SimpleShared
|
|
245
|
-
{
|
|
246
|
-
public:
|
|
247
|
-
|
|
248
|
-
DefinitionContext(int, const StringList&);
|
|
249
|
-
|
|
250
|
-
std::string filename() const;
|
|
251
|
-
int includeLevel() const;
|
|
252
|
-
bool seenDefinition() const;
|
|
253
|
-
|
|
254
|
-
void setFilename(const std::string&);
|
|
255
|
-
void setSeenDefinition();
|
|
256
|
-
|
|
257
|
-
bool hasMetaData() const;
|
|
258
|
-
void setMetaData(const StringList&);
|
|
259
|
-
std::string findMetaData(const std::string&) const;
|
|
260
|
-
StringList getMetaData() const;
|
|
261
|
-
|
|
262
23
|
//
|
|
263
|
-
//
|
|
24
|
+
// Format to use when marshaling a class instance.
|
|
264
25
|
//
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
private:
|
|
272
|
-
|
|
273
|
-
bool suppressWarning(WarningCategory) const;
|
|
274
|
-
void initSuppressedWarnings();
|
|
275
|
-
|
|
276
|
-
int _includeLevel;
|
|
277
|
-
StringList _metaData;
|
|
278
|
-
std::string _filename;
|
|
279
|
-
bool _seenDefinition;
|
|
280
|
-
std::set<WarningCategory> _suppressedWarnings;
|
|
281
|
-
};
|
|
282
|
-
typedef ::IceUtil::Handle<DefinitionContext> DefinitionContextPtr;
|
|
283
|
-
|
|
284
|
-
// ----------------------------------------------------------------------
|
|
285
|
-
// Comment
|
|
286
|
-
// ----------------------------------------------------------------------
|
|
287
|
-
|
|
288
|
-
class Comment : public ::IceUtil::SimpleShared
|
|
289
|
-
{
|
|
290
|
-
public:
|
|
291
|
-
|
|
292
|
-
bool isDeprecated() const;
|
|
293
|
-
StringList deprecated() const;
|
|
294
|
-
|
|
295
|
-
StringList overview() const; // Contains all introductory lines up to the first tag.
|
|
296
|
-
StringList misc() const; // Contains unrecognized tags.
|
|
297
|
-
StringList seeAlso() const; // Targets of @see tags.
|
|
298
|
-
|
|
299
|
-
StringList returns() const; // Description of an operation's return value.
|
|
300
|
-
std::map<std::string, StringList> parameters() const; // Parameter descriptions for an op. Key is parameter name.
|
|
301
|
-
std::map<std::string, StringList> exceptions() const; // Exception descriptions for an op. Key is exception name.
|
|
302
|
-
|
|
303
|
-
private:
|
|
304
|
-
|
|
305
|
-
Comment();
|
|
306
|
-
|
|
307
|
-
bool _isDeprecated;
|
|
308
|
-
StringList _deprecated;
|
|
309
|
-
StringList _overview;
|
|
310
|
-
StringList _misc;
|
|
311
|
-
StringList _seeAlso;
|
|
26
|
+
enum FormatType
|
|
27
|
+
{
|
|
28
|
+
CompactFormat, // Minimal format.
|
|
29
|
+
SlicedFormat // Full format.
|
|
30
|
+
};
|
|
312
31
|
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
32
|
+
enum WarningCategory
|
|
33
|
+
{
|
|
34
|
+
All,
|
|
35
|
+
Deprecated,
|
|
36
|
+
InvalidMetadata,
|
|
37
|
+
InvalidComment
|
|
38
|
+
};
|
|
316
39
|
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
40
|
+
class GrammarBase;
|
|
41
|
+
class SyntaxTreeBase;
|
|
42
|
+
class Metadata;
|
|
43
|
+
class Type;
|
|
44
|
+
class Builtin;
|
|
45
|
+
class Contained;
|
|
46
|
+
class Container;
|
|
47
|
+
class Module;
|
|
48
|
+
class ClassDecl;
|
|
49
|
+
class ClassDef;
|
|
50
|
+
class InterfaceDecl;
|
|
51
|
+
class InterfaceDef;
|
|
52
|
+
class Exception;
|
|
53
|
+
class Struct;
|
|
54
|
+
class Operation;
|
|
55
|
+
class Parameter;
|
|
56
|
+
class DataMember;
|
|
57
|
+
class Sequence;
|
|
58
|
+
class Dictionary;
|
|
59
|
+
class Enum;
|
|
60
|
+
class Enumerator;
|
|
61
|
+
class Const;
|
|
62
|
+
class Unit;
|
|
63
|
+
|
|
64
|
+
using GrammarBasePtr = std::shared_ptr<GrammarBase>;
|
|
65
|
+
using SyntaxTreeBasePtr = std::shared_ptr<SyntaxTreeBase>;
|
|
66
|
+
using MetadataPtr = std::shared_ptr<Metadata>;
|
|
67
|
+
using TypePtr = std::shared_ptr<Type>;
|
|
68
|
+
using BuiltinPtr = std::shared_ptr<Builtin>;
|
|
69
|
+
using ContainedPtr = std::shared_ptr<Contained>;
|
|
70
|
+
using ContainerPtr = std::shared_ptr<Container>;
|
|
71
|
+
using ModulePtr = std::shared_ptr<Module>;
|
|
72
|
+
using ClassDeclPtr = std::shared_ptr<ClassDecl>;
|
|
73
|
+
using ClassDefPtr = std::shared_ptr<ClassDef>;
|
|
74
|
+
using InterfaceDeclPtr = std::shared_ptr<InterfaceDecl>;
|
|
75
|
+
using InterfaceDefPtr = std::shared_ptr<InterfaceDef>;
|
|
76
|
+
using ExceptionPtr = std::shared_ptr<Exception>;
|
|
77
|
+
using StructPtr = std::shared_ptr<Struct>;
|
|
78
|
+
using OperationPtr = std::shared_ptr<Operation>;
|
|
79
|
+
using ParameterPtr = std::shared_ptr<Parameter>;
|
|
80
|
+
using DataMemberPtr = std::shared_ptr<DataMember>;
|
|
81
|
+
using SequencePtr = std::shared_ptr<Sequence>;
|
|
82
|
+
using DictionaryPtr = std::shared_ptr<Dictionary>;
|
|
83
|
+
using EnumPtr = std::shared_ptr<Enum>;
|
|
84
|
+
using EnumeratorPtr = std::shared_ptr<Enumerator>;
|
|
85
|
+
using ConstPtr = std::shared_ptr<Const>;
|
|
86
|
+
using UnitPtr = std::shared_ptr<Unit>;
|
|
87
|
+
|
|
88
|
+
using StringList = std::list<std::string>;
|
|
89
|
+
using MetadataList = std::list<MetadataPtr>;
|
|
90
|
+
using TypeList = std::list<TypePtr>;
|
|
91
|
+
using ContainedList = std::list<ContainedPtr>;
|
|
92
|
+
using ModuleList = std::list<ModulePtr>;
|
|
93
|
+
using ClassList = std::list<ClassDefPtr>;
|
|
94
|
+
using InterfaceList = std::list<InterfaceDefPtr>;
|
|
95
|
+
using ExceptionList = std::list<ExceptionPtr>;
|
|
96
|
+
using EnumList = std::list<EnumPtr>;
|
|
97
|
+
using OperationList = std::list<OperationPtr>;
|
|
98
|
+
using DataMemberList = std::list<DataMemberPtr>;
|
|
99
|
+
using ParameterList = std::list<ParameterPtr>;
|
|
100
|
+
using EnumeratorList = std::list<EnumeratorPtr>;
|
|
101
|
+
|
|
102
|
+
bool containedCompare(const ContainedPtr& lhs, const ContainedPtr& rhs);
|
|
103
|
+
bool containedEqual(const ContainedPtr& lhs, const ContainedPtr& rhs);
|
|
104
|
+
|
|
105
|
+
template<typename T> bool compareTag(const T& lhs, const T& rhs) { return lhs->tag() < rhs->tag(); }
|
|
106
|
+
|
|
107
|
+
// ----------------------------------------------------------------------
|
|
108
|
+
// CICompare -- function object to do case-insensitive string comparison.
|
|
109
|
+
// ----------------------------------------------------------------------
|
|
110
|
+
|
|
111
|
+
class CICompare
|
|
112
|
+
{
|
|
113
|
+
public:
|
|
114
|
+
bool operator()(const std::string& lhs, const std::string& rhs) const;
|
|
115
|
+
};
|
|
320
116
|
|
|
321
|
-
// ----------------------------------------------------------------------
|
|
322
|
-
//
|
|
323
|
-
//
|
|
117
|
+
// ----------------------------------------------------------------------
|
|
118
|
+
// DerivedToBaseCompare -- function object to do sort exceptions into
|
|
119
|
+
// most-derived to least-derived order.
|
|
120
|
+
// ----------------------------------------------------------------------
|
|
324
121
|
|
|
325
|
-
class
|
|
326
|
-
{
|
|
327
|
-
|
|
122
|
+
class DerivedToBaseCompare
|
|
123
|
+
{
|
|
124
|
+
public:
|
|
125
|
+
bool operator()(const ExceptionPtr& lhs, const ExceptionPtr& rhs) const;
|
|
126
|
+
};
|
|
328
127
|
|
|
329
|
-
// ----------------------------------------------------------------------
|
|
330
|
-
//
|
|
331
|
-
// ----------------------------------------------------------------------
|
|
128
|
+
// ----------------------------------------------------------------------
|
|
129
|
+
// ParserVisitor
|
|
130
|
+
// ----------------------------------------------------------------------
|
|
332
131
|
|
|
333
|
-
class
|
|
334
|
-
{
|
|
335
|
-
public:
|
|
132
|
+
class ParserVisitor
|
|
133
|
+
{
|
|
134
|
+
public:
|
|
135
|
+
virtual ~ParserVisitor() = default;
|
|
136
|
+
virtual bool visitUnitStart(const UnitPtr& /*unit*/) { return true; }
|
|
137
|
+
virtual void visitUnitEnd(const UnitPtr& /*unit*/) {}
|
|
138
|
+
virtual bool visitModuleStart(const ModulePtr& /*module*/) { return true; }
|
|
139
|
+
virtual void visitModuleEnd(const ModulePtr& /*module*/) {}
|
|
140
|
+
virtual void visitClassDecl(const ClassDeclPtr& /*classDecl*/) {}
|
|
141
|
+
virtual bool visitClassDefStart(const ClassDefPtr& /*classDef*/) { return true; }
|
|
142
|
+
virtual void visitClassDefEnd(const ClassDefPtr& /*classDef*/) {}
|
|
143
|
+
virtual void visitInterfaceDecl(const InterfaceDeclPtr& /*interfaceDecl*/) {}
|
|
144
|
+
virtual bool visitInterfaceDefStart(const InterfaceDefPtr& /*interfaceDef*/) { return true; }
|
|
145
|
+
virtual void visitInterfaceDefEnd(const InterfaceDefPtr& /*interfaceDef*/) {}
|
|
146
|
+
virtual bool visitExceptionStart(const ExceptionPtr& /*exceptionDef*/) { return true; }
|
|
147
|
+
virtual void visitExceptionEnd(const ExceptionPtr& /*exceptionDef*/) {}
|
|
148
|
+
virtual bool visitStructStart(const StructPtr& /*structDef*/) { return true; }
|
|
149
|
+
virtual void visitStructEnd(const StructPtr& /*structDef*/) {}
|
|
150
|
+
virtual void visitOperation(const OperationPtr& /*operation*/) {}
|
|
151
|
+
virtual void visitParameter(const ParameterPtr& /*parameter*/) {}
|
|
152
|
+
virtual void visitDataMember(const DataMemberPtr& /*member*/) {}
|
|
153
|
+
virtual void visitSequence(const SequencePtr& /*sequence*/) {}
|
|
154
|
+
virtual void visitDictionary(const DictionaryPtr& /*dictionary*/) {}
|
|
155
|
+
virtual void visitEnum(const EnumPtr& /*enumDef*/) {}
|
|
156
|
+
virtual void visitConst(const ConstPtr& /*constDef*/) {}
|
|
157
|
+
|
|
158
|
+
[[nodiscard]] virtual bool shouldVisitIncludedDefinitions() const { return false; }
|
|
159
|
+
};
|
|
336
160
|
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
virtual void visit(ParserVisitor*, bool);
|
|
161
|
+
// ----------------------------------------------------------------------
|
|
162
|
+
// GrammarBase
|
|
163
|
+
// ----------------------------------------------------------------------
|
|
341
164
|
|
|
342
|
-
|
|
165
|
+
class GrammarBase
|
|
166
|
+
{
|
|
167
|
+
public:
|
|
168
|
+
virtual ~GrammarBase() = default;
|
|
169
|
+
};
|
|
343
170
|
|
|
344
|
-
|
|
171
|
+
// ----------------------------------------------------------------------
|
|
172
|
+
// Metadata
|
|
173
|
+
// ----------------------------------------------------------------------
|
|
345
174
|
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
175
|
+
class Metadata final : public GrammarBase
|
|
176
|
+
{
|
|
177
|
+
public:
|
|
178
|
+
Metadata(std::string rawMetadata, std::string file, int line);
|
|
179
|
+
[[nodiscard]] const std::string& directive() const;
|
|
180
|
+
[[nodiscard]] const std::string& arguments() const;
|
|
349
181
|
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
// ----------------------------------------------------------------------
|
|
182
|
+
[[nodiscard]] const std::string& file() const;
|
|
183
|
+
[[nodiscard]] int line() const;
|
|
353
184
|
|
|
354
|
-
|
|
355
|
-
{
|
|
356
|
-
public:
|
|
185
|
+
friend std::ostream& operator<<(std::ostream& out, const Metadata& metadata);
|
|
357
186
|
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
virtual size_t minWireSize() const = 0;
|
|
362
|
-
virtual bool isVariableLength() const = 0;
|
|
187
|
+
private:
|
|
188
|
+
std::string _directive;
|
|
189
|
+
std::string _arguments;
|
|
363
190
|
|
|
364
|
-
|
|
191
|
+
std::string _file;
|
|
192
|
+
int _line;
|
|
193
|
+
};
|
|
365
194
|
|
|
366
|
-
|
|
367
|
-
|
|
195
|
+
inline std::ostream& operator<<(std::ostream& ostr, const Metadata& metadata)
|
|
196
|
+
{
|
|
197
|
+
ostr << metadata._directive;
|
|
198
|
+
if (!metadata._arguments.empty())
|
|
199
|
+
{
|
|
200
|
+
ostr << ":" << metadata._arguments;
|
|
201
|
+
}
|
|
202
|
+
return ostr;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
// ----------------------------------------------------------------------
|
|
206
|
+
// DefinitionContext
|
|
207
|
+
// ----------------------------------------------------------------------
|
|
208
|
+
|
|
209
|
+
class DefinitionContext final
|
|
210
|
+
{
|
|
211
|
+
public:
|
|
212
|
+
DefinitionContext(int includeLevel);
|
|
213
|
+
|
|
214
|
+
/// Returns the file name of the definition context, as reported by the preprocessor.
|
|
215
|
+
/// This may be an absolute or relative path.
|
|
216
|
+
///
|
|
217
|
+
/// @return A reference to the file name.
|
|
218
|
+
[[nodiscard]] const std::string& filename() const;
|
|
219
|
+
|
|
220
|
+
/// Returns the resolved file name of the definition context. This is always an absolute path.
|
|
221
|
+
///
|
|
222
|
+
/// @return A reference to the resolved file name.
|
|
223
|
+
[[nodiscard]] const std::string& resolvedFilename() const;
|
|
224
|
+
[[nodiscard]] int includeLevel() const;
|
|
225
|
+
[[nodiscard]] bool seenDefinition() const;
|
|
226
|
+
|
|
227
|
+
void setFilename(std::string filename, std::string resolvedFilename);
|
|
228
|
+
void setSeenDefinition();
|
|
229
|
+
|
|
230
|
+
[[nodiscard]] const MetadataList& getMetadata() const;
|
|
231
|
+
void setMetadata(MetadataList metadata);
|
|
232
|
+
void appendMetadata(MetadataList metadata);
|
|
233
|
+
[[nodiscard]] bool hasMetadata(std::string_view directive) const;
|
|
234
|
+
[[nodiscard]] std::optional<std::string> getMetadataArgs(std::string_view directive) const;
|
|
235
|
+
|
|
236
|
+
[[nodiscard]] bool isSuppressed(WarningCategory category) const;
|
|
237
|
+
|
|
238
|
+
private:
|
|
239
|
+
void initSuppressedWarnings();
|
|
240
|
+
|
|
241
|
+
int _includeLevel;
|
|
242
|
+
MetadataList _metadata;
|
|
243
|
+
std::string _filename;
|
|
244
|
+
std::string _resolvedFilename;
|
|
245
|
+
bool _seenDefinition{false};
|
|
246
|
+
std::set<WarningCategory> _suppressedWarnings;
|
|
247
|
+
};
|
|
248
|
+
using DefinitionContextPtr = std::shared_ptr<DefinitionContext>;
|
|
368
249
|
|
|
369
|
-
// ----------------------------------------------------------------------
|
|
370
|
-
//
|
|
371
|
-
// ----------------------------------------------------------------------
|
|
250
|
+
// ----------------------------------------------------------------------
|
|
251
|
+
// DocComment
|
|
252
|
+
// ----------------------------------------------------------------------
|
|
372
253
|
|
|
373
|
-
class
|
|
374
|
-
{
|
|
375
|
-
public:
|
|
254
|
+
class DocCommentParser;
|
|
376
255
|
|
|
377
|
-
|
|
256
|
+
class DocComment final
|
|
378
257
|
{
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
258
|
+
public:
|
|
259
|
+
/// Returns an unparsed 'DocComment' instance containing the provided string.
|
|
260
|
+
/// If the provided string is empty or only contains whitespace, this returns 'nullopt' instead.
|
|
261
|
+
[[nodiscard]] static std::optional<DocComment> createUnparsed(const std::string& rawDocComment);
|
|
262
|
+
|
|
263
|
+
[[nodiscard]] bool isDeprecated() const;
|
|
264
|
+
[[nodiscard]] const StringList& deprecated() const;
|
|
265
|
+
|
|
266
|
+
/// Contains all introductory lines up to the first tag.
|
|
267
|
+
[[nodiscard]] const StringList& overview() const;
|
|
268
|
+
/// Returns the contents of any '@remark' or '@remarks' tags.
|
|
269
|
+
[[nodiscard]] const StringList& remarks() const;
|
|
270
|
+
/// Targets of '@see' tags.
|
|
271
|
+
[[nodiscard]] const StringList& seeAlso() const;
|
|
272
|
+
|
|
273
|
+
/// Description of an operation's return value.
|
|
274
|
+
[[nodiscard]] const StringList& returns() const;
|
|
275
|
+
/// Parameter descriptions for an op. Key is parameter name.
|
|
276
|
+
[[nodiscard]] const std::map<std::string, StringList>& parameters() const;
|
|
277
|
+
/// Exception descriptions for an op. Key is exception name.
|
|
278
|
+
[[nodiscard]] const std::map<std::string, StringList>& exceptions() const;
|
|
279
|
+
|
|
280
|
+
private:
|
|
281
|
+
friend class DocCommentParser;
|
|
282
|
+
|
|
283
|
+
StringList _rawDocCommentLines;
|
|
284
|
+
|
|
285
|
+
bool _isDeprecated{false};
|
|
286
|
+
StringList _deprecated;
|
|
287
|
+
StringList _overview;
|
|
288
|
+
StringList _remarks;
|
|
289
|
+
StringList _seeAlso;
|
|
290
|
+
|
|
291
|
+
StringList _returns;
|
|
292
|
+
std::map<std::string, StringList> _parameters;
|
|
293
|
+
std::map<std::string, StringList> _exceptions;
|
|
391
294
|
};
|
|
392
295
|
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
virtual size_t minWireSize() const;
|
|
397
|
-
virtual bool isVariableLength() const;
|
|
296
|
+
// ----------------------------------------------------------------------
|
|
297
|
+
// SyntaxTreeBase
|
|
298
|
+
// ----------------------------------------------------------------------
|
|
398
299
|
|
|
399
|
-
|
|
400
|
-
|
|
300
|
+
class SyntaxTreeBase : public GrammarBase
|
|
301
|
+
{
|
|
302
|
+
public:
|
|
303
|
+
[[nodiscard]] virtual UnitPtr unit() const = 0;
|
|
304
|
+
};
|
|
401
305
|
|
|
402
|
-
|
|
306
|
+
// ----------------------------------------------------------------------
|
|
307
|
+
// Type
|
|
308
|
+
// ----------------------------------------------------------------------
|
|
403
309
|
|
|
404
|
-
|
|
310
|
+
class Type : public virtual SyntaxTreeBase
|
|
311
|
+
{
|
|
312
|
+
public:
|
|
313
|
+
[[nodiscard]] virtual bool isClassType() const;
|
|
314
|
+
[[nodiscard]] virtual bool usesClasses() const;
|
|
315
|
+
[[nodiscard]] virtual size_t minWireSize() const = 0;
|
|
316
|
+
[[nodiscard]] virtual std::string getOptionalFormat() const = 0;
|
|
317
|
+
[[nodiscard]] virtual bool isVariableLength() const = 0;
|
|
318
|
+
};
|
|
405
319
|
|
|
406
|
-
|
|
407
|
-
|
|
320
|
+
// ----------------------------------------------------------------------
|
|
321
|
+
// Builtin
|
|
322
|
+
// ----------------------------------------------------------------------
|
|
408
323
|
|
|
409
|
-
|
|
410
|
-
|
|
324
|
+
class Builtin final : public Type
|
|
325
|
+
{
|
|
326
|
+
public:
|
|
327
|
+
enum Kind
|
|
328
|
+
{
|
|
329
|
+
KindByte,
|
|
330
|
+
KindBool,
|
|
331
|
+
KindShort,
|
|
332
|
+
KindInt,
|
|
333
|
+
KindLong,
|
|
334
|
+
KindFloat,
|
|
335
|
+
KindDouble,
|
|
336
|
+
KindString,
|
|
337
|
+
KindObjectProxy,
|
|
338
|
+
KindValue
|
|
339
|
+
};
|
|
340
|
+
|
|
341
|
+
Builtin(UnitPtr unit, Kind kind);
|
|
342
|
+
void destroy();
|
|
343
|
+
[[nodiscard]] UnitPtr unit() const final;
|
|
344
|
+
|
|
345
|
+
[[nodiscard]] bool isClassType() const final;
|
|
346
|
+
[[nodiscard]] size_t minWireSize() const final;
|
|
347
|
+
[[nodiscard]] std::string getOptionalFormat() const final;
|
|
348
|
+
[[nodiscard]] bool isVariableLength() const final;
|
|
349
|
+
|
|
350
|
+
[[nodiscard]] bool isNumericType() const;
|
|
351
|
+
[[nodiscard]] bool isIntegralType() const;
|
|
352
|
+
|
|
353
|
+
[[nodiscard]] Kind kind() const;
|
|
354
|
+
[[nodiscard]] std::string kindAsString() const;
|
|
355
|
+
static std::optional<Kind> kindFromString(std::string_view str);
|
|
356
|
+
|
|
357
|
+
// NOLINTNEXTLINE(cert-err58-cpp)
|
|
358
|
+
inline static const std::array<std::string, 10> builtinTable =
|
|
359
|
+
{"byte", "bool", "short", "int", "long", "float", "double", "string", "Object*", "Value"};
|
|
360
|
+
|
|
361
|
+
private:
|
|
362
|
+
const Kind _kind;
|
|
363
|
+
UnitPtr _unit;
|
|
364
|
+
};
|
|
411
365
|
|
|
412
|
-
// ----------------------------------------------------------------------
|
|
413
|
-
// Contained
|
|
414
|
-
// ----------------------------------------------------------------------
|
|
366
|
+
// ----------------------------------------------------------------------
|
|
367
|
+
// Contained
|
|
368
|
+
// ----------------------------------------------------------------------
|
|
415
369
|
|
|
416
|
-
class Contained : public virtual SyntaxTreeBase
|
|
417
|
-
{
|
|
418
|
-
public:
|
|
419
|
-
|
|
420
|
-
ContainerPtr container() const;
|
|
421
|
-
std::string name() const;
|
|
422
|
-
std::string scoped() const;
|
|
423
|
-
std::string scope() const;
|
|
424
|
-
std::string flattenedScope() const;
|
|
425
|
-
std::string file() const;
|
|
426
|
-
std::string line() const;
|
|
427
|
-
std::string comment() const;
|
|
428
|
-
CommentPtr parseComment(bool) const;
|
|
429
|
-
|
|
430
|
-
int includeLevel() const;
|
|
431
|
-
void updateIncludeLevel();
|
|
432
|
-
|
|
433
|
-
bool hasMetaData(const std::string&) const;
|
|
434
|
-
bool findMetaData(const std::string&, std::string&) const;
|
|
435
|
-
std::list<std::string> getMetaData() const;
|
|
436
|
-
void setMetaData(const std::list<std::string>&);
|
|
437
|
-
void addMetaData(const std::string&); // TODO: remove this method once "cs:" and "vb:" are hard errors.
|
|
438
|
-
|
|
439
|
-
static FormatType parseFormatMetaData(const std::list<std::string>&);
|
|
440
|
-
|
|
441
|
-
enum ContainedType
|
|
370
|
+
class Contained : public virtual SyntaxTreeBase
|
|
442
371
|
{
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
ContainedTypeClass,
|
|
449
|
-
ContainedTypeException,
|
|
450
|
-
ContainedTypeStruct,
|
|
451
|
-
ContainedTypeOperation,
|
|
452
|
-
ContainedTypeParamDecl,
|
|
453
|
-
ContainedTypeDataMember,
|
|
454
|
-
ContainedTypeConstant
|
|
455
|
-
};
|
|
456
|
-
virtual ContainedType containedType() const = 0;
|
|
372
|
+
public:
|
|
373
|
+
virtual void destroy() {}
|
|
374
|
+
[[nodiscard]] ContainerPtr container() const;
|
|
375
|
+
[[nodiscard]] bool isTopLevel() const;
|
|
376
|
+
[[nodiscard]] virtual ModulePtr getTopLevelModule() const;
|
|
457
377
|
|
|
458
|
-
|
|
459
|
-
virtual std::string kindOf() const = 0;
|
|
378
|
+
// Functions for getting the Slice name of an element.
|
|
460
379
|
|
|
461
|
-
|
|
462
|
-
|
|
380
|
+
/// Returns the Slice identifier of this element.
|
|
381
|
+
[[nodiscard]] std::string name() const;
|
|
463
382
|
|
|
464
|
-
|
|
383
|
+
/// Returns the Slice scope that this element is contained within (with a trailing '::').
|
|
384
|
+
[[nodiscard]] std::string scope() const;
|
|
465
385
|
|
|
466
|
-
|
|
467
|
-
|
|
386
|
+
/// Returns the fully-scoped Slice identifier of this element (equivalent to `scope() + name()`).
|
|
387
|
+
[[nodiscard]] std::string scoped() const;
|
|
468
388
|
|
|
469
|
-
|
|
470
|
-
std::string _name;
|
|
471
|
-
std::string _scoped;
|
|
472
|
-
std::string _file;
|
|
473
|
-
std::string _line;
|
|
474
|
-
std::string _comment;
|
|
475
|
-
int _includeLevel;
|
|
476
|
-
std::list<std::string> _metaData;
|
|
477
|
-
};
|
|
389
|
+
// Functions for getting the mapped name of an element.
|
|
478
390
|
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
// ----------------------------------------------------------------------
|
|
391
|
+
/// Returns the mapped identifier that this element will use in the target language.
|
|
392
|
+
[[nodiscard]] std::string mappedName() const;
|
|
482
393
|
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
virtual void destroy();
|
|
488
|
-
ModulePtr createModule(const std::string&);
|
|
489
|
-
ClassDefPtr createClassDef(const std::string&, int, bool, const ClassList&, bool);
|
|
490
|
-
ClassDeclPtr createClassDecl(const std::string&, bool, bool);
|
|
491
|
-
ExceptionPtr createException(const std::string&, const ExceptionPtr&, bool, NodeType = Real);
|
|
492
|
-
StructPtr createStruct(const std::string&, bool, NodeType = Real);
|
|
493
|
-
SequencePtr createSequence(const std::string&, const TypePtr&, const StringList&, bool, NodeType = Real);
|
|
494
|
-
DictionaryPtr createDictionary(const std::string&, const TypePtr&, const StringList&, const TypePtr&,
|
|
495
|
-
const StringList&, bool, NodeType = Real);
|
|
496
|
-
EnumPtr createEnum(const std::string&, bool, NodeType = Real);
|
|
497
|
-
EnumeratorPtr createEnumerator(const std::string&);
|
|
498
|
-
EnumeratorPtr createEnumerator(const std::string&, int);
|
|
499
|
-
ConstPtr createConst(const std::string, const TypePtr&, const StringList&, const SyntaxTreeBasePtr&,
|
|
500
|
-
const std::string&, const std::string&, NodeType = Real);
|
|
501
|
-
TypeList lookupType(const std::string&, bool = true);
|
|
502
|
-
TypeList lookupTypeNoBuiltin(const std::string&, bool = true, bool = false);
|
|
503
|
-
ContainedList lookupContained(const std::string&, bool = true);
|
|
504
|
-
ExceptionPtr lookupException(const std::string&, bool = true);
|
|
505
|
-
UnitPtr unit() const;
|
|
506
|
-
ModuleList modules() const;
|
|
507
|
-
ClassList classes() const;
|
|
508
|
-
ExceptionList exceptions() const;
|
|
509
|
-
StructList structs() const;
|
|
510
|
-
SequenceList sequences() const;
|
|
511
|
-
DictionaryList dictionaries() const;
|
|
512
|
-
EnumList enums() const;
|
|
513
|
-
EnumeratorList enumerators() const;
|
|
514
|
-
EnumeratorList enumerators(const std::string&) const;
|
|
515
|
-
ConstList consts() const;
|
|
516
|
-
ContainedList contents() const;
|
|
517
|
-
bool hasNonLocalClassDecls() const;
|
|
518
|
-
bool hasNonLocalClassDefs() const;
|
|
519
|
-
bool hasLocalClassDefsWithAsync() const;
|
|
520
|
-
bool hasNonLocalSequences() const;
|
|
521
|
-
bool hasNonLocalExceptions() const;
|
|
522
|
-
bool hasStructs() const;
|
|
523
|
-
bool hasExceptions() const;
|
|
524
|
-
bool hasDictionaries() const;
|
|
525
|
-
bool hasOnlyDictionaries(DictionaryList&) const;
|
|
526
|
-
bool hasClassDecls() const;
|
|
527
|
-
bool hasClassDefs() const;
|
|
528
|
-
bool hasLocalClassDefs() const;
|
|
529
|
-
bool hasNonLocalInterfaceDefs() const;
|
|
530
|
-
bool hasValueDefs() const;
|
|
531
|
-
bool hasOnlyClassDecls() const;
|
|
532
|
-
bool hasOperations() const; // interfaces or classes with operations
|
|
533
|
-
bool hasNonLocalAbstractClassDefs() const; // interfaces or abstract classes
|
|
534
|
-
bool hasNonLocalDataOnlyClasses() const;
|
|
535
|
-
bool hasOtherConstructedOrExceptions() const; // Exceptions or constructed types other than classes.
|
|
536
|
-
bool hasContentsWithMetaData(const std::string&) const;
|
|
537
|
-
bool hasAsyncOps() const;
|
|
538
|
-
bool hasNonLocalContained(Contained::ContainedType) const;
|
|
539
|
-
std::string thisScope() const;
|
|
540
|
-
void mergeModules();
|
|
541
|
-
void sort();
|
|
542
|
-
void sortContents(bool);
|
|
543
|
-
virtual void visit(ParserVisitor*, bool);
|
|
544
|
-
void containerRecDependencies(std::set<ConstructedPtr>&); // Internal operation, don't use directly.
|
|
545
|
-
|
|
546
|
-
bool checkIntroduced(const std::string&, ContainedPtr = 0);
|
|
547
|
-
bool nameIsLegal(const std::string&, const char *);
|
|
548
|
-
bool checkForGlobalDef(const std::string&, const char *);
|
|
549
|
-
|
|
550
|
-
protected:
|
|
551
|
-
|
|
552
|
-
Container(const UnitPtr&);
|
|
553
|
-
|
|
554
|
-
bool checkInterfaceAndLocal(const std::string&, bool, bool, bool, bool, bool);
|
|
555
|
-
bool checkGlobalMetaData(const StringList&, const StringList&);
|
|
556
|
-
bool validateConstant(const std::string&, const TypePtr&, SyntaxTreeBasePtr&, const std::string&, bool);
|
|
557
|
-
EnumeratorPtr validateEnumerator(const std::string&);
|
|
558
|
-
|
|
559
|
-
ContainedList _contents;
|
|
560
|
-
std::map<std::string, ContainedPtr, CICompare> _introducedMap;
|
|
561
|
-
};
|
|
562
|
-
|
|
563
|
-
// ----------------------------------------------------------------------
|
|
564
|
-
// Module
|
|
565
|
-
// ----------------------------------------------------------------------
|
|
566
|
-
|
|
567
|
-
class Module : public virtual Container, public virtual Contained
|
|
568
|
-
{
|
|
569
|
-
public:
|
|
394
|
+
/// Returns the mapped name for this element in the target language if it has been customized with the
|
|
395
|
+
/// 'lang:name' metadata, or `nullopt` if it doesn't have a custom name.
|
|
396
|
+
[[nodiscard]] std::optional<std::string> customMappedName() const;
|
|
570
397
|
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
398
|
+
/// Returns the mapped fully-scoped identifier that this element will use in the target language.
|
|
399
|
+
/// @param separator This string will be used to separate scope segments.
|
|
400
|
+
/// @param leading If true, the returned string will have a leading `separator` (defaults to false).
|
|
401
|
+
/// @remark Equivalent to `mappedScope(separator, leading) + mappedName()`.
|
|
402
|
+
[[nodiscard]] std::string mappedScoped(const std::string& separator, bool leading = false) const;
|
|
575
403
|
|
|
576
|
-
|
|
404
|
+
/// Returns the mapped scope that this element will be generated in in the target language.
|
|
405
|
+
/// @param separator This string will be used to separate scope segments.
|
|
406
|
+
/// @param leading If true, the returned string will have a leading `separator` (defaults to false).
|
|
407
|
+
[[nodiscard]] std::string mappedScope(const std::string& separator, bool leading = false) const;
|
|
577
408
|
|
|
578
|
-
|
|
579
|
-
friend class Container;
|
|
580
|
-
};
|
|
409
|
+
// Functions to get information about where a Slice element was defined at.
|
|
581
410
|
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
// ----------------------------------------------------------------------
|
|
411
|
+
[[nodiscard]] const std::string& file() const;
|
|
412
|
+
[[nodiscard]] int line() const;
|
|
585
413
|
|
|
586
|
-
|
|
587
|
-
{
|
|
588
|
-
public:
|
|
414
|
+
[[nodiscard]] const std::optional<DocComment>& docComment() const;
|
|
589
415
|
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
ConstructedList dependencies();
|
|
594
|
-
virtual void recDependencies(std::set<ConstructedPtr>&) = 0; // Internal operation, don't use directly.
|
|
416
|
+
[[nodiscard]] int includeLevel() const;
|
|
417
|
+
[[nodiscard]] DefinitionContextPtr definitionContext() const;
|
|
418
|
+
[[nodiscard]] UnitPtr unit() const final;
|
|
595
419
|
|
|
596
|
-
|
|
420
|
+
[[nodiscard]] virtual const MetadataList& getMetadata() const;
|
|
421
|
+
virtual void setMetadata(MetadataList metadata);
|
|
422
|
+
virtual void appendMetadata(MetadataList metadata);
|
|
423
|
+
[[nodiscard]] bool hasMetadata(std::string_view directive) const;
|
|
424
|
+
[[nodiscard]] std::optional<std::string> getMetadataArgs(std::string_view directive) const;
|
|
597
425
|
|
|
598
|
-
|
|
426
|
+
[[nodiscard]] std::optional<FormatType> parseFormatMetadata() const;
|
|
599
427
|
|
|
600
|
-
|
|
601
|
-
|
|
428
|
+
/// Returns true if this item is deprecated, due to the presence of 'deprecated' metadata.
|
|
429
|
+
/// @return `true` if this item has 'deprecated' metadata on it, `false` otherwise.
|
|
430
|
+
[[nodiscard]] bool isDeprecated() const;
|
|
602
431
|
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
432
|
+
/// If this item is deprecated, return its deprecation message (if present).
|
|
433
|
+
/// This is the string argument that can be optionally provided with 'deprecated' metadata.
|
|
434
|
+
/// @return The message provided to the 'deprecated' metadata, if present.
|
|
435
|
+
[[nodiscard]] std::optional<std::string> getDeprecationReason() const;
|
|
606
436
|
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
public:
|
|
437
|
+
virtual void visit(ParserVisitor* visitor) = 0;
|
|
438
|
+
[[nodiscard]] virtual std::string kindOf() const = 0;
|
|
610
439
|
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
bool isInterface() const;
|
|
614
|
-
virtual ContainedType containedType() const;
|
|
615
|
-
virtual bool uses(const ContainedPtr&) const;
|
|
616
|
-
virtual bool usesClasses() const;
|
|
617
|
-
virtual size_t minWireSize() const;
|
|
618
|
-
virtual bool isVariableLength() const;
|
|
619
|
-
virtual void visit(ParserVisitor*, bool);
|
|
620
|
-
virtual std::string kindOf() const;
|
|
621
|
-
virtual void recDependencies(std::set<ConstructedPtr>&); // Internal operation, don't use directly.
|
|
440
|
+
protected:
|
|
441
|
+
friend class DocCommentParser;
|
|
622
442
|
|
|
623
|
-
|
|
443
|
+
Contained(const ContainerPtr& container, std::string name);
|
|
624
444
|
|
|
625
|
-
|
|
445
|
+
ContainerPtr _container;
|
|
446
|
+
std::string _name;
|
|
447
|
+
std::string _file;
|
|
448
|
+
int _line;
|
|
449
|
+
std::optional<DocComment> _docComment;
|
|
450
|
+
int _includeLevel;
|
|
451
|
+
DefinitionContextPtr _definitionContext;
|
|
452
|
+
MetadataList _metadata;
|
|
453
|
+
};
|
|
626
454
|
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
455
|
+
// ----------------------------------------------------------------------
|
|
456
|
+
// Container
|
|
457
|
+
// ----------------------------------------------------------------------
|
|
630
458
|
|
|
631
|
-
|
|
632
|
-
|
|
459
|
+
class Container : public virtual SyntaxTreeBase, public std::enable_shared_from_this<Container>
|
|
460
|
+
{
|
|
461
|
+
public:
|
|
462
|
+
void destroyContents();
|
|
463
|
+
ModulePtr createModule(const std::string& name, bool nestedSyntax);
|
|
464
|
+
[[nodiscard]] ClassDefPtr createClassDef(const std::string& name, std::int32_t id, const ClassDefPtr& base);
|
|
465
|
+
[[nodiscard]] ClassDeclPtr createClassDecl(const std::string& name);
|
|
466
|
+
[[nodiscard]] InterfaceDefPtr createInterfaceDef(const std::string& name, const InterfaceList& bases);
|
|
467
|
+
[[nodiscard]] InterfaceDeclPtr createInterfaceDecl(const std::string& name);
|
|
468
|
+
[[nodiscard]] ExceptionPtr createException(const std::string& name, const ExceptionPtr& base);
|
|
469
|
+
[[nodiscard]] StructPtr createStruct(const std::string& name);
|
|
470
|
+
[[nodiscard]] SequencePtr createSequence(const std::string& name, const TypePtr& type, MetadataList metadata);
|
|
471
|
+
[[nodiscard]] DictionaryPtr createDictionary(
|
|
472
|
+
const std::string& name,
|
|
473
|
+
const TypePtr& keyType,
|
|
474
|
+
MetadataList keyMetadata,
|
|
475
|
+
const TypePtr& valueType,
|
|
476
|
+
MetadataList valueMetadata);
|
|
477
|
+
[[nodiscard]] EnumPtr createEnum(const std::string& name);
|
|
478
|
+
[[nodiscard]] ConstPtr createConst(
|
|
479
|
+
const std::string& name,
|
|
480
|
+
const TypePtr& constType,
|
|
481
|
+
MetadataList metadata,
|
|
482
|
+
const SyntaxTreeBasePtr& valueType,
|
|
483
|
+
const std::string& value);
|
|
484
|
+
[[nodiscard]] TypePtr lookupType(const std::string& identifier);
|
|
485
|
+
[[nodiscard]] TypePtr
|
|
486
|
+
lookupTypeNoBuiltin(const std::string& identifier, bool emitErrors, bool ignoreUndefined = false);
|
|
487
|
+
[[nodiscard]] ContainedList lookupContained(const std::string& identifier, bool emitErrors);
|
|
488
|
+
[[nodiscard]] InterfaceDefPtr lookupInterfaceDef(const std::string& identifier, bool emitErrors);
|
|
489
|
+
[[nodiscard]] ExceptionPtr lookupException(const std::string& identifier, bool emitErrors);
|
|
490
|
+
[[nodiscard]] ModuleList modules() const;
|
|
491
|
+
[[nodiscard]] InterfaceList interfaces() const;
|
|
492
|
+
[[nodiscard]] EnumList enums() const;
|
|
493
|
+
[[nodiscard]] EnumeratorList enumerators() const;
|
|
494
|
+
[[nodiscard]] EnumeratorList enumerators(const std::string& identifier) const;
|
|
495
|
+
[[nodiscard]] ContainedList contents() const;
|
|
496
|
+
void visitContents(ParserVisitor* visitor);
|
|
497
|
+
|
|
498
|
+
/// Reports an error when a Slice definition would retroactively change the meaning of an identifier.
|
|
499
|
+
/// For example:
|
|
500
|
+
/// ```
|
|
501
|
+
/// module Outer {
|
|
502
|
+
/// const int H = 12;
|
|
503
|
+
/// module Inner {
|
|
504
|
+
/// const int G = H;
|
|
505
|
+
/// class H {} // error: retroactively changes the meaning of 'H'
|
|
506
|
+
/// }
|
|
507
|
+
/// }
|
|
508
|
+
/// ```
|
|
509
|
+
/// Because the parser parses in order, the meaning of 'H' in 'Inner' is ordering dependent, which is not good.
|
|
510
|
+
/// The user should disambiguate by qualifying the type-reference as 'Outer::H'.
|
|
511
|
+
void checkHasChangedMeaning(const std::string& name, ContainedPtr namedThing = nullptr);
|
|
512
|
+
|
|
513
|
+
/// Returns `true` if this container is the global scope (i.e. it's of type `Unit`), and `false` otherwise.
|
|
514
|
+
/// If false, we emit an error message. So this function should only be called for types which cannot appear at
|
|
515
|
+
/// global scope... so everything except for `Module`s.
|
|
516
|
+
bool checkForGlobalDefinition(const char* definitionKindPlural);
|
|
517
|
+
|
|
518
|
+
/// Returns true if this contains elements of the specified type.
|
|
519
|
+
/// This check is recursive, so it will still return true even if the type is only contained indirectly.
|
|
520
|
+
template<typename T> [[nodiscard]] bool contains() const
|
|
521
|
+
{
|
|
522
|
+
for (const auto& p : contents())
|
|
523
|
+
{
|
|
524
|
+
if (std::dynamic_pointer_cast<T>(p))
|
|
525
|
+
{
|
|
526
|
+
return true;
|
|
527
|
+
}
|
|
528
|
+
ContainerPtr childContainer = std::dynamic_pointer_cast<Container>(p);
|
|
529
|
+
if (childContainer && childContainer->contains<T>())
|
|
530
|
+
{
|
|
531
|
+
return true;
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
return false;
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
[[nodiscard]] std::string thisScope() const;
|
|
538
|
+
|
|
539
|
+
protected:
|
|
540
|
+
bool validateConstant(
|
|
541
|
+
const std::string& name,
|
|
542
|
+
const TypePtr& type,
|
|
543
|
+
SyntaxTreeBasePtr& valueType,
|
|
544
|
+
const std::string& valueString,
|
|
545
|
+
bool isConstant);
|
|
546
|
+
|
|
547
|
+
ContainedList _contents;
|
|
548
|
+
std::map<std::string, ContainedPtr, CICompare> _introducedMap;
|
|
549
|
+
};
|
|
633
550
|
|
|
634
|
-
|
|
551
|
+
// ----------------------------------------------------------------------
|
|
552
|
+
// Module
|
|
553
|
+
// ----------------------------------------------------------------------
|
|
635
554
|
|
|
636
|
-
|
|
637
|
-
|
|
555
|
+
class Module final : public Container, public Contained
|
|
556
|
+
{
|
|
557
|
+
public:
|
|
558
|
+
Module(const ContainerPtr& container, const std::string& name, bool nestedSyntax);
|
|
559
|
+
[[nodiscard]] std::string kindOf() const final;
|
|
560
|
+
[[nodiscard]] ModulePtr getTopLevelModule() const final;
|
|
561
|
+
void visit(ParserVisitor* visitor) final;
|
|
562
|
+
void destroy() final;
|
|
563
|
+
|
|
564
|
+
const bool usesNestedSyntax;
|
|
565
|
+
};
|
|
638
566
|
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
static void checkPairIntersections(const StringPartitionList&, const std::string&, const UnitPtr&);
|
|
643
|
-
};
|
|
567
|
+
// ----------------------------------------------------------------------
|
|
568
|
+
// ClassDecl
|
|
569
|
+
// ----------------------------------------------------------------------
|
|
644
570
|
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
571
|
+
class ClassDecl final : public Contained, public Type, public std::enable_shared_from_this<ClassDecl>
|
|
572
|
+
{
|
|
573
|
+
public:
|
|
574
|
+
ClassDecl(const ContainerPtr& container, const std::string& name);
|
|
575
|
+
void destroy() final;
|
|
576
|
+
[[nodiscard]] ClassDefPtr definition() const;
|
|
577
|
+
[[nodiscard]] bool isClassType() const final;
|
|
578
|
+
[[nodiscard]] size_t minWireSize() const final;
|
|
579
|
+
[[nodiscard]] std::string getOptionalFormat() const final;
|
|
580
|
+
[[nodiscard]] bool isVariableLength() const final;
|
|
581
|
+
void visit(ParserVisitor* visitor) final;
|
|
582
|
+
[[nodiscard]] std::string kindOf() const final;
|
|
583
|
+
|
|
584
|
+
private:
|
|
585
|
+
friend class Container;
|
|
586
|
+
|
|
587
|
+
ClassDefPtr _definition;
|
|
588
|
+
};
|
|
648
589
|
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
590
|
+
// ----------------------------------------------------------------------
|
|
591
|
+
// ClassDef
|
|
592
|
+
// ----------------------------------------------------------------------
|
|
652
593
|
|
|
653
594
|
//
|
|
654
|
-
// Note:
|
|
655
|
-
//
|
|
595
|
+
// Note: For the purpose of this parser, a class definition is not
|
|
596
|
+
// considered to be a type, but a class declaration is. And each class
|
|
597
|
+
// definition has at least one class declaration (but not vice versa),
|
|
598
|
+
// so if you need the class as a "type", use the
|
|
599
|
+
// declaration() operation to navigate to the class declaration.
|
|
656
600
|
//
|
|
657
|
-
|
|
601
|
+
class ClassDef final : public Container, public Contained
|
|
658
602
|
{
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
603
|
+
public:
|
|
604
|
+
ClassDef(const ContainerPtr& container, const std::string& name, std::int32_t id, ClassDefPtr base);
|
|
605
|
+
void destroy() final;
|
|
606
|
+
[[nodiscard]] DataMemberPtr createDataMember(
|
|
607
|
+
const std::string& name,
|
|
608
|
+
const TypePtr& type,
|
|
609
|
+
bool isOptional,
|
|
610
|
+
std::int32_t tag,
|
|
611
|
+
SyntaxTreeBasePtr defaultValueType,
|
|
612
|
+
std::optional<std::string> defaultValueString);
|
|
613
|
+
[[nodiscard]] ClassDeclPtr declaration() const;
|
|
614
|
+
[[nodiscard]] ClassDefPtr base() const;
|
|
615
|
+
[[nodiscard]] ClassList allBases() const;
|
|
616
|
+
[[nodiscard]] DataMemberList dataMembers() const;
|
|
617
|
+
[[nodiscard]] DataMemberList orderedOptionalDataMembers() const;
|
|
618
|
+
[[nodiscard]] DataMemberList allDataMembers() const;
|
|
619
|
+
[[nodiscard]] DataMemberList classDataMembers() const;
|
|
620
|
+
[[nodiscard]] bool canBeCyclic() const;
|
|
621
|
+
void visit(ParserVisitor* visitor) final;
|
|
622
|
+
[[nodiscard]] std::int32_t compactId() const;
|
|
623
|
+
[[nodiscard]] std::string kindOf() const final;
|
|
624
|
+
|
|
625
|
+
// Class metadata is always stored on the underlying decl type, not the definition.
|
|
626
|
+
// So we override these `xMetadata` functions to forward to `_declarations->xMetadata()` instead.
|
|
627
|
+
[[nodiscard]] const MetadataList& getMetadata() const final;
|
|
628
|
+
void setMetadata(MetadataList metadata) final;
|
|
629
|
+
void appendMetadata(MetadataList metadata) final;
|
|
630
|
+
|
|
631
|
+
private:
|
|
632
|
+
friend class Container;
|
|
633
|
+
|
|
634
|
+
ClassDeclPtr _declaration;
|
|
635
|
+
ClassDefPtr _base;
|
|
636
|
+
std::int32_t _compactId;
|
|
662
637
|
};
|
|
663
638
|
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
Mode mode() const;
|
|
668
|
-
Mode sendMode() const;
|
|
669
|
-
bool hasMarshaledResult() const;
|
|
670
|
-
ParamDeclPtr createParamDecl(const std::string&, const TypePtr&, bool, bool, int);
|
|
671
|
-
ParamDeclList parameters() const;
|
|
672
|
-
ParamDeclList inParameters() const;
|
|
673
|
-
void inParameters(ParamDeclList&, ParamDeclList&) const;
|
|
674
|
-
ParamDeclList outParameters() const;
|
|
675
|
-
void outParameters(ParamDeclList&, ParamDeclList&) const;
|
|
676
|
-
ExceptionList throws() const;
|
|
677
|
-
void setExceptionList(const ExceptionList&);
|
|
678
|
-
virtual ContainedType containedType() const;
|
|
679
|
-
virtual bool uses(const ContainedPtr&) const;
|
|
680
|
-
bool sendsClasses(bool) const;
|
|
681
|
-
bool returnsClasses(bool) const;
|
|
682
|
-
bool returnsData() const;
|
|
683
|
-
bool returnsMultipleValues() const;
|
|
684
|
-
bool sendsOptionals() const;
|
|
685
|
-
int attributes() const;
|
|
686
|
-
FormatType format() const;
|
|
687
|
-
virtual std::string kindOf() const;
|
|
688
|
-
virtual void visit(ParserVisitor*, bool);
|
|
689
|
-
|
|
690
|
-
protected:
|
|
691
|
-
|
|
692
|
-
Operation(const ContainerPtr&, const std::string&, const TypePtr&, bool, int, Mode);
|
|
693
|
-
friend class ClassDef;
|
|
694
|
-
|
|
695
|
-
TypePtr _returnType;
|
|
696
|
-
bool _returnIsOptional;
|
|
697
|
-
int _returnTag;
|
|
698
|
-
ExceptionList _throws;
|
|
699
|
-
Mode _mode;
|
|
700
|
-
};
|
|
701
|
-
|
|
702
|
-
// ----------------------------------------------------------------------
|
|
703
|
-
// ClassDef
|
|
704
|
-
// ----------------------------------------------------------------------
|
|
705
|
-
|
|
706
|
-
//
|
|
707
|
-
// Note: For the purpose of this parser, a class definition is not
|
|
708
|
-
// considered to be a type, but a class declaration is. And each class
|
|
709
|
-
// definition has at least one class declaration (but not vice versa),
|
|
710
|
-
// so if you need the class as a "constructed type", use the
|
|
711
|
-
// declaration() operation to navigate to the class declaration.
|
|
712
|
-
//
|
|
713
|
-
class ClassDef : public virtual Container, public virtual Contained
|
|
714
|
-
{
|
|
715
|
-
public:
|
|
716
|
-
|
|
717
|
-
virtual void destroy();
|
|
718
|
-
OperationPtr createOperation(const std::string&, const TypePtr&, bool, int, Operation::Mode = Operation::Normal);
|
|
719
|
-
DataMemberPtr createDataMember(const std::string&, const TypePtr&, bool, int, const SyntaxTreeBasePtr&,
|
|
720
|
-
const std::string&, const std::string&);
|
|
721
|
-
ClassDeclPtr declaration() const;
|
|
722
|
-
ClassList bases() const;
|
|
723
|
-
ClassList allBases() const;
|
|
724
|
-
OperationList operations() const;
|
|
725
|
-
OperationList allOperations() const;
|
|
726
|
-
DataMemberList dataMembers() const;
|
|
727
|
-
DataMemberList orderedOptionalDataMembers() const;
|
|
728
|
-
DataMemberList allDataMembers() const;
|
|
729
|
-
DataMemberList classDataMembers() const;
|
|
730
|
-
DataMemberList allClassDataMembers() const;
|
|
731
|
-
bool canBeCyclic() const;
|
|
732
|
-
bool isAbstract() const;
|
|
733
|
-
bool isInterface() const;
|
|
734
|
-
bool isA(const std::string&) const;
|
|
735
|
-
virtual bool isLocal() const;
|
|
736
|
-
bool hasDataMembers() const;
|
|
737
|
-
bool hasOperations() const;
|
|
738
|
-
bool hasDefaultValues() const;
|
|
739
|
-
bool inheritsMetaData(const std::string&) const;
|
|
740
|
-
bool hasBaseDataMembers() const;
|
|
741
|
-
virtual ContainedType containedType() const;
|
|
742
|
-
virtual bool uses(const ContainedPtr&) const;
|
|
743
|
-
virtual std::string kindOf() const;
|
|
744
|
-
virtual void visit(ParserVisitor*, bool);
|
|
745
|
-
int compactId() const;
|
|
746
|
-
bool isDelegate() const;
|
|
747
|
-
|
|
748
|
-
protected:
|
|
749
|
-
|
|
750
|
-
ClassDef(const ContainerPtr&, const std::string&, int, bool, const ClassList&, bool);
|
|
751
|
-
friend class Container;
|
|
752
|
-
|
|
753
|
-
ClassDeclPtr _declaration;
|
|
754
|
-
bool _interface;
|
|
755
|
-
bool _hasDataMembers;
|
|
756
|
-
bool _hasOperations;
|
|
757
|
-
ClassList _bases;
|
|
758
|
-
bool _local;
|
|
759
|
-
int _compactId;
|
|
760
|
-
};
|
|
761
|
-
|
|
762
|
-
// ----------------------------------------------------------------------
|
|
763
|
-
// Proxy
|
|
764
|
-
// ----------------------------------------------------------------------
|
|
765
|
-
|
|
766
|
-
class Proxy : public virtual Type
|
|
767
|
-
{
|
|
768
|
-
public:
|
|
769
|
-
|
|
770
|
-
virtual bool isLocal() const;
|
|
771
|
-
virtual std::string typeId() const;
|
|
772
|
-
virtual bool usesClasses() const;
|
|
773
|
-
virtual size_t minWireSize() const;
|
|
774
|
-
virtual bool isVariableLength() const;
|
|
775
|
-
|
|
776
|
-
ClassDeclPtr _class() const;
|
|
777
|
-
|
|
778
|
-
Proxy(const ClassDeclPtr&);
|
|
779
|
-
|
|
780
|
-
protected:
|
|
781
|
-
|
|
782
|
-
ClassDeclPtr _classDecl;
|
|
783
|
-
};
|
|
639
|
+
// ----------------------------------------------------------------------
|
|
640
|
+
// InterfaceDecl
|
|
641
|
+
// ----------------------------------------------------------------------
|
|
784
642
|
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
ExceptionPtr _base;
|
|
821
|
-
bool _local;
|
|
822
|
-
};
|
|
823
|
-
|
|
824
|
-
// ----------------------------------------------------------------------
|
|
825
|
-
// Struct
|
|
826
|
-
// ----------------------------------------------------------------------
|
|
827
|
-
|
|
828
|
-
class Struct : public virtual Container, public virtual Constructed
|
|
829
|
-
{
|
|
830
|
-
public:
|
|
831
|
-
|
|
832
|
-
DataMemberPtr createDataMember(const std::string&, const TypePtr&, bool, int, const SyntaxTreeBasePtr&,
|
|
833
|
-
const std::string&, const std::string&);
|
|
834
|
-
DataMemberList dataMembers() const;
|
|
835
|
-
DataMemberList classDataMembers() const;
|
|
836
|
-
virtual ContainedType containedType() const;
|
|
837
|
-
virtual bool uses(const ContainedPtr&) const;
|
|
838
|
-
virtual bool usesClasses() const;
|
|
839
|
-
virtual size_t minWireSize() const;
|
|
840
|
-
virtual bool isVariableLength() const;
|
|
841
|
-
bool hasDefaultValues() const;
|
|
842
|
-
virtual std::string kindOf() const;
|
|
843
|
-
virtual void visit(ParserVisitor*, bool);
|
|
844
|
-
virtual void recDependencies(std::set<ConstructedPtr>&); // Internal operation, don't use directly.
|
|
845
|
-
|
|
846
|
-
protected:
|
|
847
|
-
|
|
848
|
-
Struct(const ContainerPtr&, const std::string&, bool);
|
|
849
|
-
friend class Container;
|
|
850
|
-
};
|
|
851
|
-
|
|
852
|
-
// ----------------------------------------------------------------------
|
|
853
|
-
// Sequence
|
|
854
|
-
// ----------------------------------------------------------------------
|
|
855
|
-
|
|
856
|
-
class Sequence : public virtual Constructed
|
|
857
|
-
{
|
|
858
|
-
public:
|
|
859
|
-
|
|
860
|
-
TypePtr type() const;
|
|
861
|
-
StringList typeMetaData() const;
|
|
862
|
-
virtual ContainedType containedType() const;
|
|
863
|
-
virtual bool uses(const ContainedPtr&) const;
|
|
864
|
-
virtual bool usesClasses() const;
|
|
865
|
-
virtual size_t minWireSize() const;
|
|
866
|
-
virtual bool isVariableLength() const;
|
|
867
|
-
virtual std::string kindOf() const;
|
|
868
|
-
virtual void visit(ParserVisitor*, bool);
|
|
869
|
-
virtual void recDependencies(std::set<ConstructedPtr>&); // Internal operation, don't use directly.
|
|
870
|
-
|
|
871
|
-
protected:
|
|
872
|
-
|
|
873
|
-
Sequence(const ContainerPtr&, const std::string&, const TypePtr&, const StringList&, bool);
|
|
874
|
-
friend class Container;
|
|
875
|
-
|
|
876
|
-
TypePtr _type;
|
|
877
|
-
StringList _typeMetaData;
|
|
878
|
-
};
|
|
879
|
-
|
|
880
|
-
// ----------------------------------------------------------------------
|
|
881
|
-
// Dictionary
|
|
882
|
-
// ----------------------------------------------------------------------
|
|
643
|
+
class InterfaceDecl final : public Contained, public Type, public std::enable_shared_from_this<InterfaceDecl>
|
|
644
|
+
{
|
|
645
|
+
public:
|
|
646
|
+
InterfaceDecl(const ContainerPtr& container, const std::string& name);
|
|
647
|
+
void destroy() final;
|
|
648
|
+
[[nodiscard]] InterfaceDefPtr definition() const;
|
|
649
|
+
[[nodiscard]] size_t minWireSize() const final;
|
|
650
|
+
[[nodiscard]] std::string getOptionalFormat() const final;
|
|
651
|
+
[[nodiscard]] bool isVariableLength() const final;
|
|
652
|
+
void visit(ParserVisitor* visitor) final;
|
|
653
|
+
[[nodiscard]] std::string kindOf() const final;
|
|
654
|
+
|
|
655
|
+
static void checkBasesAreLegal(const std::string& name, const InterfaceList& bases, const UnitPtr& unit);
|
|
656
|
+
|
|
657
|
+
private:
|
|
658
|
+
friend class Container;
|
|
659
|
+
|
|
660
|
+
InterfaceDefPtr _definition;
|
|
661
|
+
|
|
662
|
+
using GraphPartitionList = std::list<InterfaceList>;
|
|
663
|
+
using StringPartitionList = std::list<StringList>;
|
|
664
|
+
|
|
665
|
+
static bool isInList(const GraphPartitionList& gpl, const InterfaceDefPtr& interfaceDef);
|
|
666
|
+
|
|
667
|
+
static void addPartition(
|
|
668
|
+
GraphPartitionList& partitions,
|
|
669
|
+
const GraphPartitionList::reverse_iterator& tail,
|
|
670
|
+
const InterfaceDefPtr& base);
|
|
671
|
+
static StringPartitionList toStringPartitionList(const GraphPartitionList& partitions);
|
|
672
|
+
static void checkPairIntersections(
|
|
673
|
+
const StringPartitionList& stringPartitions,
|
|
674
|
+
const std::string& name,
|
|
675
|
+
const UnitPtr& unit);
|
|
676
|
+
};
|
|
883
677
|
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
TypePtr keyType() const;
|
|
889
|
-
TypePtr valueType() const;
|
|
890
|
-
StringList keyMetaData() const;
|
|
891
|
-
StringList valueMetaData() const;
|
|
892
|
-
virtual ContainedType containedType() const;
|
|
893
|
-
virtual bool uses(const ContainedPtr&) const;
|
|
894
|
-
virtual bool usesClasses() const;
|
|
895
|
-
virtual size_t minWireSize() const;
|
|
896
|
-
virtual bool isVariableLength() const;
|
|
897
|
-
virtual std::string kindOf() const;
|
|
898
|
-
virtual void visit(ParserVisitor*, bool);
|
|
899
|
-
virtual void recDependencies(std::set<ConstructedPtr>&); // Internal operation, don't use directly.
|
|
900
|
-
|
|
901
|
-
static bool legalKeyType(const TypePtr&, bool&);
|
|
902
|
-
|
|
903
|
-
protected:
|
|
904
|
-
|
|
905
|
-
Dictionary(const ContainerPtr&, const std::string&, const TypePtr&, const StringList&, const TypePtr&,
|
|
906
|
-
const StringList&, bool);
|
|
907
|
-
friend class Container;
|
|
908
|
-
|
|
909
|
-
TypePtr _keyType;
|
|
910
|
-
TypePtr _valueType;
|
|
911
|
-
StringList _keyMetaData;
|
|
912
|
-
StringList _valueMetaData;
|
|
913
|
-
};
|
|
914
|
-
|
|
915
|
-
// ----------------------------------------------------------------------
|
|
916
|
-
// Enum
|
|
917
|
-
// ----------------------------------------------------------------------
|
|
918
|
-
|
|
919
|
-
class Enum : public virtual Container, public virtual Constructed
|
|
920
|
-
{
|
|
921
|
-
public:
|
|
922
|
-
|
|
923
|
-
virtual void destroy();
|
|
924
|
-
bool explicitValue() const;
|
|
925
|
-
int minValue() const;
|
|
926
|
-
int maxValue() const;
|
|
927
|
-
virtual ContainedType containedType() const;
|
|
928
|
-
virtual bool uses(const ContainedPtr&) const;
|
|
929
|
-
virtual bool usesClasses() const;
|
|
930
|
-
virtual size_t minWireSize() const;
|
|
931
|
-
virtual bool isVariableLength() const;
|
|
932
|
-
virtual std::string kindOf() const;
|
|
933
|
-
virtual void visit(ParserVisitor*, bool);
|
|
934
|
-
virtual void recDependencies(std::set<ConstructedPtr>&); // Internal operation, don't use directly.
|
|
935
|
-
|
|
936
|
-
protected:
|
|
937
|
-
|
|
938
|
-
Enum(const ContainerPtr&, const std::string&, bool);
|
|
939
|
-
int newEnumerator(const EnumeratorPtr&);
|
|
940
|
-
|
|
941
|
-
friend class Container;
|
|
942
|
-
friend class Enumerator;
|
|
943
|
-
|
|
944
|
-
bool _explicitValue;
|
|
945
|
-
IceUtil::Int64 _minValue;
|
|
946
|
-
IceUtil::Int64 _maxValue;
|
|
947
|
-
int _lastValue;
|
|
948
|
-
};
|
|
949
|
-
|
|
950
|
-
// ----------------------------------------------------------------------
|
|
951
|
-
// Enumerator
|
|
952
|
-
// ----------------------------------------------------------------------
|
|
953
|
-
|
|
954
|
-
class Enumerator : public virtual Contained
|
|
955
|
-
{
|
|
956
|
-
public:
|
|
678
|
+
// ----------------------------------------------------------------------
|
|
679
|
+
// Operation
|
|
680
|
+
// ----------------------------------------------------------------------
|
|
957
681
|
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
682
|
+
class Operation final : public Container, public Contained
|
|
683
|
+
{
|
|
684
|
+
public:
|
|
685
|
+
//
|
|
686
|
+
// Note: The values of enumerators here *must* match the values for
|
|
687
|
+
// enumerators of Ice::OperationMode in slice/Ice/OperationMode.ice!
|
|
688
|
+
//
|
|
689
|
+
enum Mode
|
|
690
|
+
{
|
|
691
|
+
Normal = 0,
|
|
692
|
+
Idempotent = 2
|
|
693
|
+
};
|
|
694
|
+
|
|
695
|
+
Operation(const ContainerPtr&, const std::string&, TypePtr, bool, std::int32_t, Mode);
|
|
696
|
+
[[nodiscard]] InterfaceDefPtr interface() const;
|
|
697
|
+
[[nodiscard]] TypePtr returnType() const;
|
|
698
|
+
[[nodiscard]] bool returnIsOptional() const;
|
|
699
|
+
[[nodiscard]] std::int32_t returnTag() const;
|
|
700
|
+
[[nodiscard]] Mode mode() const;
|
|
701
|
+
[[nodiscard]] bool hasMarshaledResult() const;
|
|
702
|
+
|
|
703
|
+
ParameterPtr createParameter(const std::string& name, const TypePtr& type, bool isOptional, std::int32_t tag);
|
|
704
|
+
|
|
705
|
+
/// Returns all parameters of this operation.
|
|
706
|
+
[[nodiscard]] ParameterList parameters() const;
|
|
707
|
+
|
|
708
|
+
/// Returns a list of all this operation's in-parameters (all parameters not marked with 'out').
|
|
709
|
+
[[nodiscard]] ParameterList inParameters() const;
|
|
710
|
+
|
|
711
|
+
/// Returns all of this operation's in-parameters sorted in this order: '(required..., optional...)'.
|
|
712
|
+
/// Required parameters are kept in definition order and optional parameters are sorted by tag.
|
|
713
|
+
[[nodiscard]] ParameterList sortedInParameters() const;
|
|
714
|
+
|
|
715
|
+
/// Returns a list of all this operation's out-parameters (all parameters marked with 'out').
|
|
716
|
+
[[nodiscard]] ParameterList outParameters() const;
|
|
717
|
+
|
|
718
|
+
/// Creates a temporary Parameter that represents this operation's return value.
|
|
719
|
+
/// @param name The name of the return parameter.
|
|
720
|
+
/// @return A dummy Parameter that represents this operation's return value, or nullptr if this operation is
|
|
721
|
+
/// void.
|
|
722
|
+
/// @remark The returned Parameter is not "saved" by this operation - it's completely ephemeral.
|
|
723
|
+
/// The provided name is not checked for uniqueness: the caller must ensure it's unique enough for its purpose.
|
|
724
|
+
/// Furthermore, there is no way to specify a lang:identifier metadata for this parameter, so the mapped
|
|
725
|
+
/// parameter name is always the default (i.e., simply name).
|
|
726
|
+
[[nodiscard]] ParameterPtr returnParameter(const std::string& name);
|
|
727
|
+
|
|
728
|
+
/// Returns this operation's out parameters and return type sorted in this order: '(required..., optional...)'.
|
|
729
|
+
/// If the this operation's return type is non-void and non-optional, it is at the end of the 'required' list.
|
|
730
|
+
/// Otherwise, required parameters are kept in definition order and optional parameters are sorted by tag.
|
|
731
|
+
///
|
|
732
|
+
/// For convenience, non-void return types are represented by a dummy `Parameter` in this list.
|
|
733
|
+
/// However it's important to note that it is not _actually_ a parameter.
|
|
734
|
+
///
|
|
735
|
+
// Creating this temporary Parameter doesn't introduce cycles, since nothing from the AST points to it,
|
|
736
|
+
// even if it points back into the AST. So it will be destroyed when the returned list goes out of scope.
|
|
737
|
+
/// @param returnName The name of the return parameter. See #returnParameter for more details.
|
|
738
|
+
/// @return A list of all this operation's out-parameters and return type, sorted in the order described above.
|
|
739
|
+
[[nodiscard]] ParameterList sortedReturnAndOutParameters(const std::string& returnName);
|
|
740
|
+
|
|
741
|
+
[[nodiscard]] ExceptionList throws() const;
|
|
742
|
+
void setExceptionList(const ExceptionList& exceptions);
|
|
743
|
+
[[nodiscard]] bool sendsClasses() const;
|
|
744
|
+
[[nodiscard]] bool returnsClasses() const;
|
|
745
|
+
[[nodiscard]] bool returnsData() const;
|
|
746
|
+
|
|
747
|
+
/// Returns true if this operation has any out parameters or a non-void return type.
|
|
748
|
+
[[nodiscard]] bool returnsAnyValues() const;
|
|
749
|
+
/// Returns true if this operation's output parameters, plus any non-void return type, is greater than 1.
|
|
750
|
+
[[nodiscard]] bool returnsMultipleValues() const;
|
|
751
|
+
|
|
752
|
+
[[nodiscard]] bool sendsOptionals() const;
|
|
753
|
+
[[nodiscard]] bool receivesOptionals() const;
|
|
754
|
+
[[nodiscard]] std::optional<FormatType> format() const;
|
|
755
|
+
[[nodiscard]] std::string kindOf() const final;
|
|
756
|
+
void visit(ParserVisitor* visitor) final;
|
|
757
|
+
void destroy() final;
|
|
758
|
+
|
|
759
|
+
private:
|
|
760
|
+
TypePtr _returnType;
|
|
761
|
+
bool _returnIsOptional;
|
|
762
|
+
std::int32_t _returnTag;
|
|
763
|
+
ExceptionList _throws;
|
|
764
|
+
Mode _mode;
|
|
765
|
+
};
|
|
962
766
|
|
|
963
|
-
|
|
964
|
-
|
|
767
|
+
// ----------------------------------------------------------------------
|
|
768
|
+
// InterfaceDef
|
|
769
|
+
// ----------------------------------------------------------------------
|
|
965
770
|
|
|
966
|
-
|
|
771
|
+
//
|
|
772
|
+
// Note: For the purpose of this parser, an interface definition is not
|
|
773
|
+
// considered to be a type, but an interface declaration is. And each interface
|
|
774
|
+
// definition has at least one interface declaration (but not vice versa),
|
|
775
|
+
// so if you need the interface as a "type", use the
|
|
776
|
+
// declaration() function to navigate to the interface declaration.
|
|
777
|
+
//
|
|
778
|
+
class InterfaceDef final : public Container, public Contained
|
|
779
|
+
{
|
|
780
|
+
public:
|
|
781
|
+
InterfaceDef(const ContainerPtr& container, const std::string& name, InterfaceList bases);
|
|
782
|
+
void destroy() final;
|
|
783
|
+
OperationPtr createOperation(
|
|
784
|
+
const std::string& name,
|
|
785
|
+
const TypePtr& returnType,
|
|
786
|
+
bool isOptional,
|
|
787
|
+
std::int32_t tag,
|
|
788
|
+
Operation::Mode mode = Operation::Normal);
|
|
789
|
+
|
|
790
|
+
[[nodiscard]] InterfaceDeclPtr declaration() const;
|
|
791
|
+
[[nodiscard]] InterfaceList bases() const;
|
|
792
|
+
[[nodiscard]] InterfaceList allBases() const;
|
|
793
|
+
[[nodiscard]] OperationList operations() const;
|
|
794
|
+
[[nodiscard]] OperationList allOperations() const;
|
|
795
|
+
[[nodiscard]] std::string kindOf() const final;
|
|
796
|
+
void visit(ParserVisitor* visitor) final;
|
|
797
|
+
|
|
798
|
+
// Returns the type IDs of all the interfaces in the inheritance tree, in alphabetical order.
|
|
799
|
+
[[nodiscard]] StringList ids() const;
|
|
800
|
+
|
|
801
|
+
// Interface metadata is always stored on the underlying decl type, not the definition.
|
|
802
|
+
// So we override these `xMetadata` functions to forward to `_declarations->xMetadata()` instead.
|
|
803
|
+
[[nodiscard]] const MetadataList& getMetadata() const final;
|
|
804
|
+
void setMetadata(MetadataList metadata) final;
|
|
805
|
+
void appendMetadata(MetadataList metadata) final;
|
|
806
|
+
|
|
807
|
+
private:
|
|
808
|
+
friend class Container;
|
|
809
|
+
|
|
810
|
+
// Returns true if name does not collide with any base name; otherwise, false.
|
|
811
|
+
bool checkBaseOperationNames(const std::string& name, const std::vector<std::string>& baseNames);
|
|
812
|
+
|
|
813
|
+
InterfaceDeclPtr _declaration;
|
|
814
|
+
InterfaceList _bases;
|
|
815
|
+
};
|
|
967
816
|
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
817
|
+
// ----------------------------------------------------------------------
|
|
818
|
+
// Exception
|
|
819
|
+
// ----------------------------------------------------------------------
|
|
820
|
+
class Exception final : public Container, public Contained
|
|
821
|
+
{
|
|
822
|
+
public:
|
|
823
|
+
Exception(const ContainerPtr& container, const std::string& name, ExceptionPtr base);
|
|
824
|
+
void destroy() final;
|
|
825
|
+
[[nodiscard]] DataMemberPtr createDataMember(
|
|
826
|
+
const std::string& name,
|
|
827
|
+
const TypePtr& type,
|
|
828
|
+
bool isOptional,
|
|
829
|
+
std::int32_t tag,
|
|
830
|
+
SyntaxTreeBasePtr defaultValueType,
|
|
831
|
+
std::optional<std::string> defaultValueString);
|
|
832
|
+
[[nodiscard]] DataMemberList dataMembers() const;
|
|
833
|
+
[[nodiscard]] DataMemberList orderedOptionalDataMembers() const;
|
|
834
|
+
[[nodiscard]] DataMemberList allDataMembers() const;
|
|
835
|
+
[[nodiscard]] DataMemberList classDataMembers() const;
|
|
836
|
+
[[nodiscard]] ExceptionPtr base() const;
|
|
837
|
+
[[nodiscard]] ExceptionList allBases() const;
|
|
838
|
+
[[nodiscard]] bool isBaseOf(const ExceptionPtr& otherException) const;
|
|
839
|
+
[[nodiscard]] bool usesClasses() const;
|
|
840
|
+
[[nodiscard]] std::string kindOf() const final;
|
|
841
|
+
void visit(ParserVisitor* visitor) final;
|
|
842
|
+
|
|
843
|
+
private:
|
|
844
|
+
ExceptionPtr _base;
|
|
845
|
+
};
|
|
971
846
|
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
847
|
+
// ----------------------------------------------------------------------
|
|
848
|
+
// Struct
|
|
849
|
+
// ----------------------------------------------------------------------
|
|
975
850
|
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
851
|
+
class Struct final : public Container, public Contained, public Type
|
|
852
|
+
{
|
|
853
|
+
public:
|
|
854
|
+
Struct(const ContainerPtr& container, const std::string& name);
|
|
855
|
+
[[nodiscard]] DataMemberPtr createDataMember(
|
|
856
|
+
const std::string& name,
|
|
857
|
+
const TypePtr& type,
|
|
858
|
+
SyntaxTreeBasePtr defaultValueType,
|
|
859
|
+
std::optional<std::string> defaultValueString);
|
|
860
|
+
[[nodiscard]] DataMemberList dataMembers() const;
|
|
861
|
+
[[nodiscard]] DataMemberList classDataMembers() const;
|
|
862
|
+
[[nodiscard]] bool usesClasses() const final;
|
|
863
|
+
[[nodiscard]] size_t minWireSize() const final;
|
|
864
|
+
[[nodiscard]] std::string getOptionalFormat() const final;
|
|
865
|
+
[[nodiscard]] bool isVariableLength() const final;
|
|
866
|
+
[[nodiscard]] std::string kindOf() const final;
|
|
867
|
+
void visit(ParserVisitor* visitor) final;
|
|
868
|
+
void destroy() final;
|
|
869
|
+
};
|
|
979
870
|
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
TypePtr type() const;
|
|
985
|
-
StringList typeMetaData() const;
|
|
986
|
-
SyntaxTreeBasePtr valueType() const;
|
|
987
|
-
std::string value() const;
|
|
988
|
-
std::string literal() const;
|
|
989
|
-
virtual bool uses(const ContainedPtr&) const;
|
|
990
|
-
virtual ContainedType containedType() const;
|
|
991
|
-
virtual std::string kindOf() const;
|
|
992
|
-
virtual void visit(ParserVisitor*, bool);
|
|
993
|
-
|
|
994
|
-
protected:
|
|
995
|
-
|
|
996
|
-
Const(const ContainerPtr&, const std::string&, const TypePtr&, const StringList&, const SyntaxTreeBasePtr&,
|
|
997
|
-
const std::string&, const std::string&);
|
|
998
|
-
friend class Container;
|
|
999
|
-
|
|
1000
|
-
TypePtr _type;
|
|
1001
|
-
StringList _typeMetaData;
|
|
1002
|
-
SyntaxTreeBasePtr _valueType;
|
|
1003
|
-
std::string _value;
|
|
1004
|
-
std::string _literal;
|
|
1005
|
-
};
|
|
1006
|
-
|
|
1007
|
-
// ----------------------------------------------------------------------
|
|
1008
|
-
// ParamDecl
|
|
1009
|
-
// ----------------------------------------------------------------------
|
|
1010
|
-
|
|
1011
|
-
class ParamDecl : public virtual Contained
|
|
1012
|
-
{
|
|
1013
|
-
public:
|
|
871
|
+
// ----------------------------------------------------------------------
|
|
872
|
+
// Sequence
|
|
873
|
+
// ----------------------------------------------------------------------
|
|
1014
874
|
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
875
|
+
class Sequence final : public Contained, public Type, public std::enable_shared_from_this<Sequence>
|
|
876
|
+
{
|
|
877
|
+
public:
|
|
878
|
+
Sequence(const ContainerPtr& container, const std::string& name, TypePtr type, MetadataList typeMetadata);
|
|
879
|
+
[[nodiscard]] TypePtr type() const;
|
|
880
|
+
[[nodiscard]] MetadataList typeMetadata() const;
|
|
881
|
+
void setTypeMetadata(MetadataList metadata);
|
|
882
|
+
[[nodiscard]] bool usesClasses() const final;
|
|
883
|
+
[[nodiscard]] size_t minWireSize() const final;
|
|
884
|
+
[[nodiscard]] std::string getOptionalFormat() const final;
|
|
885
|
+
[[nodiscard]] bool isVariableLength() const final;
|
|
886
|
+
[[nodiscard]] std::string kindOf() const final;
|
|
887
|
+
void visit(ParserVisitor* visitor) final;
|
|
888
|
+
|
|
889
|
+
private:
|
|
890
|
+
TypePtr _type;
|
|
891
|
+
MetadataList _typeMetadata;
|
|
892
|
+
};
|
|
1023
893
|
|
|
1024
|
-
|
|
894
|
+
// ----------------------------------------------------------------------
|
|
895
|
+
// Dictionary
|
|
896
|
+
// ----------------------------------------------------------------------
|
|
1025
897
|
|
|
1026
|
-
|
|
1027
|
-
|
|
898
|
+
class Dictionary final : public Contained, public Type, public std::enable_shared_from_this<Dictionary>
|
|
899
|
+
{
|
|
900
|
+
public:
|
|
901
|
+
Dictionary(
|
|
902
|
+
const ContainerPtr& container,
|
|
903
|
+
const std::string& name,
|
|
904
|
+
TypePtr keyType,
|
|
905
|
+
MetadataList keyMetadata,
|
|
906
|
+
TypePtr valueType,
|
|
907
|
+
MetadataList valueMetadata);
|
|
908
|
+
[[nodiscard]] TypePtr keyType() const;
|
|
909
|
+
[[nodiscard]] TypePtr valueType() const;
|
|
910
|
+
[[nodiscard]] MetadataList keyMetadata() const;
|
|
911
|
+
[[nodiscard]] MetadataList valueMetadata() const;
|
|
912
|
+
void setKeyMetadata(MetadataList metadata);
|
|
913
|
+
void setValueMetadata(MetadataList metadata);
|
|
914
|
+
[[nodiscard]] bool usesClasses() const final;
|
|
915
|
+
[[nodiscard]] size_t minWireSize() const final;
|
|
916
|
+
[[nodiscard]] std::string getOptionalFormat() const final;
|
|
917
|
+
[[nodiscard]] bool isVariableLength() const final;
|
|
918
|
+
[[nodiscard]] std::string kindOf() const final;
|
|
919
|
+
void visit(ParserVisitor* visitor) final;
|
|
920
|
+
|
|
921
|
+
static bool isLegalKeyType(const TypePtr& type);
|
|
922
|
+
|
|
923
|
+
private:
|
|
924
|
+
TypePtr _keyType;
|
|
925
|
+
TypePtr _valueType;
|
|
926
|
+
MetadataList _keyMetadata;
|
|
927
|
+
MetadataList _valueMetadata;
|
|
928
|
+
};
|
|
1028
929
|
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
int _tag;
|
|
1033
|
-
};
|
|
930
|
+
// ----------------------------------------------------------------------
|
|
931
|
+
// Enum
|
|
932
|
+
// ----------------------------------------------------------------------
|
|
1034
933
|
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
934
|
+
class Enum final : public Container, public Contained, public Type
|
|
935
|
+
{
|
|
936
|
+
public:
|
|
937
|
+
Enum(const ContainerPtr& container, const std::string& name);
|
|
938
|
+
EnumeratorPtr createEnumerator(const std::string& name, std::optional<std::int32_t> explicitValue);
|
|
939
|
+
[[nodiscard]] bool hasExplicitValues() const;
|
|
940
|
+
[[nodiscard]] std::int32_t minValue() const;
|
|
941
|
+
[[nodiscard]] std::int32_t maxValue() const;
|
|
942
|
+
[[nodiscard]] size_t minWireSize() const final;
|
|
943
|
+
[[nodiscard]] std::string getOptionalFormat() const final;
|
|
944
|
+
[[nodiscard]] bool isVariableLength() const final;
|
|
945
|
+
[[nodiscard]] std::string kindOf() const final;
|
|
946
|
+
void visit(ParserVisitor* visitor) final;
|
|
947
|
+
void destroy() final;
|
|
948
|
+
|
|
949
|
+
private:
|
|
950
|
+
bool _hasExplicitValues{false};
|
|
951
|
+
std::int32_t _minValue{std::numeric_limits<std::int32_t>::max()};
|
|
952
|
+
std::int32_t _maxValue{0};
|
|
953
|
+
std::int32_t _lastValue{-1};
|
|
954
|
+
};
|
|
1038
955
|
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
TypePtr type() const;
|
|
1044
|
-
bool optional() const;
|
|
1045
|
-
int tag() const;
|
|
1046
|
-
std::string defaultValue() const;
|
|
1047
|
-
std::string defaultLiteral() const;
|
|
1048
|
-
SyntaxTreeBasePtr defaultValueType() const;
|
|
1049
|
-
virtual ContainedType containedType() const;
|
|
1050
|
-
virtual bool uses(const ContainedPtr&) const;
|
|
1051
|
-
virtual std::string kindOf() const;
|
|
1052
|
-
virtual void visit(ParserVisitor*, bool);
|
|
1053
|
-
|
|
1054
|
-
protected:
|
|
1055
|
-
|
|
1056
|
-
DataMember(const ContainerPtr&, const std::string&, const TypePtr&, bool, int, const SyntaxTreeBasePtr&,
|
|
1057
|
-
const std::string&, const std::string&);
|
|
1058
|
-
friend class ClassDef;
|
|
1059
|
-
friend class Struct;
|
|
1060
|
-
friend class Exception;
|
|
1061
|
-
|
|
1062
|
-
TypePtr _type;
|
|
1063
|
-
bool _optional;
|
|
1064
|
-
int _tag;
|
|
1065
|
-
SyntaxTreeBasePtr _defaultValueType;
|
|
1066
|
-
std::string _defaultValue;
|
|
1067
|
-
std::string _defaultLiteral;
|
|
1068
|
-
};
|
|
1069
|
-
|
|
1070
|
-
// ----------------------------------------------------------------------
|
|
1071
|
-
// Unit
|
|
1072
|
-
// ----------------------------------------------------------------------
|
|
1073
|
-
|
|
1074
|
-
class Unit : public virtual Container
|
|
1075
|
-
{
|
|
1076
|
-
public:
|
|
956
|
+
// ----------------------------------------------------------------------
|
|
957
|
+
// Enumerator
|
|
958
|
+
// ----------------------------------------------------------------------
|
|
1077
959
|
|
|
1078
|
-
|
|
960
|
+
class Enumerator final : public Contained
|
|
961
|
+
{
|
|
962
|
+
public:
|
|
963
|
+
Enumerator(const ContainerPtr& container, const std::string& name, std::int32_t value, bool hasExplicitValue);
|
|
964
|
+
[[nodiscard]] EnumPtr type() const;
|
|
965
|
+
[[nodiscard]] std::string kindOf() const final;
|
|
1079
966
|
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
bool allowUnderscore() const;
|
|
967
|
+
[[nodiscard]] bool hasExplicitValue() const;
|
|
968
|
+
[[nodiscard]] std::int32_t value() const;
|
|
1083
969
|
|
|
1084
|
-
|
|
1085
|
-
std::string currentComment(); // Not const, as this function removes the current comment.
|
|
1086
|
-
std::string currentFile() const;
|
|
1087
|
-
std::string topLevelFile() const;
|
|
1088
|
-
int currentLine() const;
|
|
970
|
+
void visit(ParserVisitor* visitor) final;
|
|
1089
971
|
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
972
|
+
private:
|
|
973
|
+
bool _hasExplicitValue;
|
|
974
|
+
std::int32_t _value;
|
|
975
|
+
};
|
|
1093
976
|
|
|
1094
|
-
|
|
977
|
+
// ----------------------------------------------------------------------
|
|
978
|
+
// Const
|
|
979
|
+
// ----------------------------------------------------------------------
|
|
1095
980
|
|
|
1096
|
-
|
|
981
|
+
class Const final : public Contained, public std::enable_shared_from_this<Const>
|
|
982
|
+
{
|
|
983
|
+
public:
|
|
984
|
+
Const(
|
|
985
|
+
const ContainerPtr& container,
|
|
986
|
+
const std::string& name,
|
|
987
|
+
TypePtr type,
|
|
988
|
+
MetadataList typeMetadata,
|
|
989
|
+
SyntaxTreeBasePtr valueType,
|
|
990
|
+
std::string valueString);
|
|
991
|
+
[[nodiscard]] TypePtr type() const;
|
|
992
|
+
[[nodiscard]] MetadataList typeMetadata() const;
|
|
993
|
+
void setTypeMetadata(MetadataList metadata);
|
|
994
|
+
[[nodiscard]] SyntaxTreeBasePtr valueType() const;
|
|
995
|
+
[[nodiscard]] std::string value() const;
|
|
996
|
+
[[nodiscard]] std::string kindOf() const final;
|
|
997
|
+
void visit(ParserVisitor* visitor) final;
|
|
998
|
+
|
|
999
|
+
private:
|
|
1000
|
+
TypePtr _type;
|
|
1001
|
+
MetadataList _typeMetadata;
|
|
1002
|
+
SyntaxTreeBasePtr _valueType;
|
|
1003
|
+
std::string _value;
|
|
1004
|
+
};
|
|
1097
1005
|
|
|
1098
|
-
|
|
1099
|
-
|
|
1006
|
+
// ----------------------------------------------------------------------
|
|
1007
|
+
// Parameter
|
|
1008
|
+
// ----------------------------------------------------------------------
|
|
1100
1009
|
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1010
|
+
class Parameter final : public Contained, public std::enable_shared_from_this<Parameter>
|
|
1011
|
+
{
|
|
1012
|
+
public:
|
|
1013
|
+
Parameter(
|
|
1014
|
+
const ContainerPtr& container,
|
|
1015
|
+
const std::string& name,
|
|
1016
|
+
TypePtr type,
|
|
1017
|
+
bool isOptional,
|
|
1018
|
+
std::int32_t tag);
|
|
1019
|
+
[[nodiscard]] TypePtr type() const;
|
|
1020
|
+
[[nodiscard]] bool isOutParam() const;
|
|
1021
|
+
void setIsOutParam();
|
|
1022
|
+
[[nodiscard]] bool optional() const;
|
|
1023
|
+
[[nodiscard]] std::int32_t tag() const;
|
|
1024
|
+
[[nodiscard]] std::string kindOf() const final;
|
|
1025
|
+
|
|
1026
|
+
void visit(ParserVisitor* visitor) final;
|
|
1027
|
+
|
|
1028
|
+
private:
|
|
1029
|
+
TypePtr _type;
|
|
1030
|
+
bool _isOutParam{false};
|
|
1031
|
+
bool _optional;
|
|
1032
|
+
std::int32_t _tag;
|
|
1033
|
+
};
|
|
1104
1034
|
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
DefinitionContextPtr findDefinitionContext(const std::string&) const;
|
|
1035
|
+
// ----------------------------------------------------------------------
|
|
1036
|
+
// DataMember
|
|
1037
|
+
// ----------------------------------------------------------------------
|
|
1109
1038
|
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1039
|
+
class DataMember final : public Contained, public std::enable_shared_from_this<DataMember>
|
|
1040
|
+
{
|
|
1041
|
+
public:
|
|
1042
|
+
DataMember(
|
|
1043
|
+
const ContainerPtr& container,
|
|
1044
|
+
const std::string& name,
|
|
1045
|
+
TypePtr type,
|
|
1046
|
+
bool isOptional,
|
|
1047
|
+
std::int32_t tag,
|
|
1048
|
+
SyntaxTreeBasePtr defaultValueType,
|
|
1049
|
+
std::optional<std::string> defaultValueString);
|
|
1050
|
+
[[nodiscard]] TypePtr type() const;
|
|
1051
|
+
[[nodiscard]] bool optional() const;
|
|
1052
|
+
[[nodiscard]] std::int32_t tag() const;
|
|
1053
|
+
|
|
1054
|
+
// defaultValue() and defaultValueType() are either both null (no default value) or both non-null.
|
|
1055
|
+
[[nodiscard]] std::optional<std::string> defaultValue() const;
|
|
1056
|
+
[[nodiscard]] SyntaxTreeBasePtr defaultValueType() const;
|
|
1057
|
+
[[nodiscard]] std::string kindOf() const final;
|
|
1058
|
+
|
|
1059
|
+
void visit(ParserVisitor* visitor) final;
|
|
1060
|
+
|
|
1061
|
+
private:
|
|
1062
|
+
TypePtr _type;
|
|
1063
|
+
bool _optional;
|
|
1064
|
+
std::int32_t _tag;
|
|
1065
|
+
SyntaxTreeBasePtr _defaultValueType;
|
|
1066
|
+
std::optional<std::string> _defaultValue;
|
|
1067
|
+
};
|
|
1116
1068
|
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1069
|
+
// ----------------------------------------------------------------------
|
|
1070
|
+
// Unit
|
|
1071
|
+
// ----------------------------------------------------------------------
|
|
1120
1072
|
|
|
1121
|
-
|
|
1122
|
-
|
|
1073
|
+
/// Options for creating a Unit.
|
|
1074
|
+
struct UnitOptions
|
|
1075
|
+
{
|
|
1076
|
+
/// When true, generate code for Slice definitions in included files.
|
|
1077
|
+
bool all{false};
|
|
1123
1078
|
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1079
|
+
/// Provides a function that returns the default mapped name for a Contained element. nullptr, the default,
|
|
1080
|
+
/// is equivalent to using the element's Slice name as its mapped name.
|
|
1081
|
+
std::function<std::string(const Contained&)> defaultMappedName{nullptr};
|
|
1082
|
+
};
|
|
1128
1083
|
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1084
|
+
class Unit final : public Container
|
|
1085
|
+
{
|
|
1086
|
+
public:
|
|
1087
|
+
static UnitPtr createUnit(std::string languageName, UnitOptions options = {});
|
|
1088
|
+
|
|
1089
|
+
Unit(std::string languageName, UnitOptions options);
|
|
1090
|
+
|
|
1091
|
+
[[nodiscard]] std::string languageName() const;
|
|
1092
|
+
[[nodiscard]] std::string defaultMappedName(const Contained& contained) const;
|
|
1093
|
+
|
|
1094
|
+
/// Sets `_currentDocComment` to the provided string, erasing anything currently stored in it.
|
|
1095
|
+
/// @param comment The raw comment string. It can span multiple lines and include comment formatting characters
|
|
1096
|
+
/// like '/**' and leading '*'. All such comment formatting will be removed by this function though.
|
|
1097
|
+
// Note that this is only called for JavaDoc style comments, where the comment is set in one-shot.
|
|
1098
|
+
void setDocComment(const std::string& comment);
|
|
1099
|
+
/// Appends the provided comment to `_currentDocComment` with a newline separator.
|
|
1100
|
+
/// @param comment The raw comment string. It shouldn't contain newlines, nor any comment formatting characters.
|
|
1101
|
+
/// Unlike `setDocComment`, this function doesn't process the comment string in any way.
|
|
1102
|
+
// Note that this is only called for triple-slash style comments, where each line is added separately.
|
|
1103
|
+
void appendToDocComment(const std::string& comment);
|
|
1104
|
+
/// Returns the current doc-comment string. This function uses move semantics. After calling it, the currently
|
|
1105
|
+
/// stored doc-comment will be cleared. This string can span multiple lines, and won't include formatting like
|
|
1106
|
+
/// leading '///' or opening '/**' etc.
|
|
1107
|
+
std::string currentDocComment();
|
|
1108
|
+
|
|
1109
|
+
[[nodiscard]] std::string currentFile() const;
|
|
1110
|
+
[[nodiscard]] const std::string& topLevelFile() const;
|
|
1111
|
+
[[nodiscard]] int currentLine() const;
|
|
1112
|
+
|
|
1113
|
+
int setCurrentFile(std::string currentFile, int lineNumber);
|
|
1114
|
+
[[nodiscard]] int currentIncludeLevel() const;
|
|
1115
|
+
|
|
1116
|
+
void addFileMetadata(MetadataList metadata);
|
|
1117
|
+
|
|
1118
|
+
void setSeenDefinition();
|
|
1119
|
+
|
|
1120
|
+
void error(std::string_view message);
|
|
1121
|
+
void error(std::string_view file, int line, std::string_view message);
|
|
1122
|
+
void warning(WarningCategory category, std::string_view message) const;
|
|
1123
|
+
void warning(std::string_view file, int line, WarningCategory category, std::string_view message) const;
|
|
1124
|
+
|
|
1125
|
+
[[nodiscard]] ContainerPtr currentContainer() const;
|
|
1126
|
+
void pushContainer(const ContainerPtr& container);
|
|
1127
|
+
void popContainer();
|
|
1128
|
+
|
|
1129
|
+
[[nodiscard]] DefinitionContextPtr currentDefinitionContext() const;
|
|
1130
|
+
|
|
1131
|
+
/// Returns the definition context for the given file, or nullptr if none exists.
|
|
1132
|
+
/// This method only checks `DefinitionContext::filename` and does not consider
|
|
1133
|
+
/// `DefinitionContext::resolvedFilename`.
|
|
1134
|
+
///
|
|
1135
|
+
/// @param file The file name to search for.
|
|
1136
|
+
/// @return A pointer to the matching definition context, or nullptr if not found.
|
|
1137
|
+
[[nodiscard]] DefinitionContextPtr findDefinitionContext(std::string_view file) const;
|
|
1138
|
+
|
|
1139
|
+
void addContent(const ContainedPtr& contained);
|
|
1140
|
+
[[nodiscard]] ContainedList findContents(const std::string& scopedName) const;
|
|
1141
|
+
|
|
1142
|
+
void addTypeId(std::int32_t compactId, const std::string& typeId);
|
|
1143
|
+
[[nodiscard]] std::string getTypeId(std::int32_t compactId) const;
|
|
1144
|
+
|
|
1145
|
+
// Returns the path names of the files included directly by the top-level file.
|
|
1146
|
+
[[nodiscard]] StringList includeFiles() const;
|
|
1147
|
+
|
|
1148
|
+
/// Returns the absolute paths of all files parsed by this unit.
|
|
1149
|
+
/// The first entry is the top-level file, followed by its direct and transitive dependencies in the order they
|
|
1150
|
+
/// were parsed.
|
|
1151
|
+
///
|
|
1152
|
+
/// @return A list of absolute paths to the parsed files.
|
|
1153
|
+
[[nodiscard]] StringList allFiles() const;
|
|
1154
|
+
|
|
1155
|
+
int parse(const std::string& filename, FILE* file, bool debugMode);
|
|
1156
|
+
|
|
1157
|
+
void destroy();
|
|
1158
|
+
void visit(ParserVisitor* visitor);
|
|
1159
|
+
[[nodiscard]] UnitPtr unit() const final;
|
|
1160
|
+
|
|
1161
|
+
/// Returns `EXIT_FAILURE` if 1 or more errors have been reported and `EXIT_SUCCESS` otherwise.
|
|
1162
|
+
[[nodiscard]] int getStatus() const;
|
|
1163
|
+
|
|
1164
|
+
// Not const, as builtins are created on the fly. (Lazy initialization.)
|
|
1165
|
+
BuiltinPtr createBuiltin(Builtin::Kind kind);
|
|
1166
|
+
|
|
1167
|
+
void addTopLevelModule(const std::string& file, const std::string& module);
|
|
1168
|
+
[[nodiscard]] std::set<std::string> getTopLevelModules(const std::string& file) const;
|
|
1169
|
+
|
|
1170
|
+
private:
|
|
1171
|
+
void pushDefinitionContext();
|
|
1172
|
+
void popDefinitionContext();
|
|
1173
|
+
|
|
1174
|
+
const std::string _languageName;
|
|
1175
|
+
bool _all;
|
|
1176
|
+
std::function<std::string(const Contained&)> _defaultMappedName;
|
|
1177
|
+
int _errors{0};
|
|
1178
|
+
std::string _currentDocComment;
|
|
1179
|
+
int _currentIncludeLevel{0};
|
|
1180
|
+
std::string _topLevelFile;
|
|
1181
|
+
std::stack<DefinitionContextPtr> _definitionContextStack;
|
|
1182
|
+
StringList _includeFiles;
|
|
1183
|
+
std::stack<ContainerPtr> _containerStack;
|
|
1184
|
+
std::map<Builtin::Kind, BuiltinPtr> _builtins;
|
|
1185
|
+
std::map<std::string, ContainedList> _contentMap;
|
|
1186
|
+
std::map<std::string, DefinitionContextPtr, std::less<>> _definitionContextMap;
|
|
1187
|
+
std::map<std::int32_t, std::string> _typeIds;
|
|
1188
|
+
std::map<std::string, std::set<std::string>> _fileTopLevelModules;
|
|
1189
|
+
StringList _allFiles;
|
|
1190
|
+
};
|
|
1171
1191
|
|
|
1192
|
+
extern Unit* currentUnit; // The current parser for bison/flex
|
|
1172
1193
|
}
|
|
1173
1194
|
|
|
1174
1195
|
#endif
|