summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2009-03-24 11:45:18 +0100
committerBenoit Foucher <benoit@zeroc.com>2009-03-24 11:45:18 +0100
commit06a08ecf28e205277336a97a6173db7ccbed1adc (patch)
treea369a5044a63f8cdba9e7c0a461e24ae344486b4 /cpp/src
parentMerge branch 'R3_3_branch' (diff)
parentBug 3924: slice2py missing from VC60 installer (diff)
downloadice-06a08ecf28e205277336a97a6173db7ccbed1adc.tar.bz2
ice-06a08ecf28e205277336a97a6173db7ccbed1adc.tar.xz
ice-06a08ecf28e205277336a97a6173db7ccbed1adc.zip
Merge commit 'origin/R3_3_branch'
Conflicts: CHANGES cpp/demo/Freeze/backup/.depend cpp/demo/Freeze/bench/.depend cpp/demo/Freeze/casino/.depend cpp/demo/Freeze/customEvictor/.depend cpp/demo/Freeze/library/.depend cpp/demo/Freeze/phonebook/.depend cpp/demo/Freeze/transform/.depend cpp/demo/Glacier2/callback/.depend cpp/demo/Glacier2/chat/.depend cpp/demo/Ice/async/.depend cpp/demo/Ice/bidir/.depend cpp/demo/Ice/callback/.depend cpp/demo/Ice/converter/.depend cpp/demo/Ice/hello/.depend cpp/demo/Ice/invoke/.depend cpp/demo/Ice/latency/.depend cpp/demo/Ice/minimal/.depend cpp/demo/Ice/multicast/.depend cpp/demo/Ice/nested/.depend cpp/demo/Ice/nrvo/.depend cpp/demo/Ice/session/.depend cpp/demo/Ice/throughput/.depend cpp/demo/Ice/value/.depend cpp/demo/IceBox/hello/.depend cpp/demo/IceGrid/allocate/.depend cpp/demo/IceGrid/icebox/.depend cpp/demo/IceGrid/replication/.depend cpp/demo/IceGrid/sessionActivation/.depend cpp/demo/IceGrid/simple/.depend cpp/demo/IceStorm/clock/.depend cpp/demo/IceStorm/counter/.depend cpp/demo/IceStorm/replicated/.depend cpp/demo/IceStorm/replicated2/.depend cpp/demo/book/freeze_filesystem/.depend cpp/demo/book/lifecycle/.depend cpp/demo/book/printer/.depend cpp/demo/book/simple_filesystem/.depend cpp/src/Freeze/.depend cpp/src/FreezeScript/.depend cpp/src/Ice/.depend cpp/src/Ice/UdpTransceiver.cpp cpp/src/Ice/UdpTransceiver.h cpp/src/IceBox/.depend cpp/src/IceGrid/.depend cpp/src/IceGridLib/.depend cpp/src/IcePatch2/.depend cpp/src/IceStorm/.depend cpp/src/slice2freeze/.depend cpp/test/Freeze/complex/.depend cpp/test/Freeze/dbmap/.depend cpp/test/Freeze/evictor/.depend cpp/test/Freeze/oldevictor/.depend cpp/test/FreezeScript/dbmap/.depend cpp/test/FreezeScript/evictor/.depend cpp/test/Glacier2/attack/.depend cpp/test/Glacier2/dynamicFiltering/.depend cpp/test/Glacier2/router/.depend cpp/test/Glacier2/sessionControl/.depend cpp/test/Glacier2/ssl/.depend cpp/test/Glacier2/staticFiltering/.depend cpp/test/Ice/adapterDeactivation/.depend cpp/test/Ice/background/.depend cpp/test/Ice/binding/.depend cpp/test/Ice/checksum/.depend cpp/test/Ice/checksum/server/.depend cpp/test/Ice/custom/.depend cpp/test/Ice/exceptions/.depend cpp/test/Ice/facets/.depend cpp/test/Ice/faultTolerance/.depend cpp/test/Ice/gc/.depend cpp/test/Ice/hold/.depend cpp/test/Ice/inheritance/.depend cpp/test/Ice/interceptor/.depend cpp/test/Ice/location/.depend cpp/test/Ice/objects/.depend cpp/test/Ice/operations/.depend cpp/test/Ice/proxy/.depend cpp/test/Ice/retry/.depend cpp/test/Ice/servantLocator/.depend cpp/test/Ice/slicing/exceptions/.depend cpp/test/Ice/slicing/objects/.depend cpp/test/Ice/stream/.depend cpp/test/Ice/stringConverter/.depend cpp/test/Ice/timeout/.depend cpp/test/Ice/udp/.depend cpp/test/IceBox/configuration/.depend cpp/test/IceGrid/activation/.depend cpp/test/IceGrid/allocation/.depend cpp/test/IceGrid/deployer/.depend cpp/test/IceGrid/distribution/.depend cpp/test/IceGrid/replicaGroup/.depend cpp/test/IceGrid/replication/.depend cpp/test/IceGrid/session/.depend cpp/test/IceGrid/simple/.depend cpp/test/IceGrid/update/.depend cpp/test/IceSSL/configuration/.depend cpp/test/IceStorm/federation/.depend cpp/test/IceStorm/federation2/.depend cpp/test/IceStorm/rep1/.depend cpp/test/IceStorm/repgrid/.depend cpp/test/IceStorm/repstress/.depend cpp/test/IceStorm/single/.depend cpp/test/IceStorm/stress/.depend cpp/test/Slice/keyword/.depend cs/src/Ice/Instance.cs cs/src/IceSSL/ConnectorI.cs java/demo/book/simple_filesystem/Filesystem/DirectoryI.java java/demo/book/simple_filesystem/Filesystem/FileI.java java/src/IceInternal/TcpConnector.java java/src/IceSSL/ConnectorI.java py/modules/IcePy/.depend rb/src/IceRuby/.depend
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/Freeze/.depend4
-rw-r--r--cpp/src/Freeze/Makefile.mak4
-rw-r--r--cpp/src/Freeze/SharedDbEnv.cpp20
-rw-r--r--cpp/src/FreezeScript/.depend2
-rw-r--r--cpp/src/FreezeScript/Data.cpp6
-rw-r--r--cpp/src/FreezeScript/DumpDB.cpp3
-rw-r--r--cpp/src/FreezeScript/Makefile.mak4
-rw-r--r--cpp/src/FreezeScript/transformdb.cpp3
-rw-r--r--cpp/src/Glacier2/Blobject.cpp28
-rw-r--r--cpp/src/Glacier2/Glacier2Router.cpp30
-rw-r--r--cpp/src/Glacier2/Instance.cpp20
-rw-r--r--cpp/src/Glacier2/Makefile.mak6
-rw-r--r--cpp/src/Glacier2/RequestQueue.cpp41
-rw-r--r--cpp/src/Glacier2/RequestQueue.h8
-rw-r--r--cpp/src/Glacier2/SessionRouterI.cpp22
-rw-r--r--cpp/src/Ice/.depend5
-rw-r--r--cpp/src/Ice/BasicStream.cpp113
-rw-r--r--cpp/src/Ice/ConnectRequestHandler.cpp2
-rw-r--r--cpp/src/Ice/ConnectionFactory.cpp387
-rw-r--r--cpp/src/Ice/ConnectionFactory.h18
-rw-r--r--cpp/src/Ice/ConnectionI.cpp17
-rw-r--r--cpp/src/Ice/ConnectionI.h2
-rw-r--r--cpp/src/Ice/ConnectionMonitor.cpp3
-rw-r--r--cpp/src/Ice/Direct.cpp64
-rw-r--r--cpp/src/Ice/Incoming.cpp181
-rw-r--r--cpp/src/Ice/IncomingAsync.cpp53
-rw-r--r--cpp/src/Ice/Instance.cpp29
-rw-r--r--cpp/src/Ice/LocatorInfo.h2
-rw-r--r--cpp/src/Ice/Makefile.mak14
-rw-r--r--cpp/src/Ice/Network.cpp23
-rw-r--r--cpp/src/Ice/Network.h1
-rw-r--r--cpp/src/Ice/OutgoingAsync.cpp7
-rw-r--r--cpp/src/Ice/PluginManagerI.cpp11
-rw-r--r--cpp/src/Ice/PropertyNames.cpp23
-rw-r--r--cpp/src/Ice/PropertyNames.h2
-rw-r--r--cpp/src/Ice/Proxy.cpp26
-rw-r--r--cpp/src/Ice/ProxyFactory.cpp31
-rw-r--r--cpp/src/Ice/Reference.cpp94
-rw-r--r--cpp/src/Ice/RouterInfo.cpp3
-rw-r--r--cpp/src/Ice/Service.cpp9
-rw-r--r--cpp/src/Ice/StreamI.cpp10
-rw-r--r--cpp/src/Ice/TcpTransceiver.cpp3
-rw-r--r--cpp/src/Ice/TcpTransceiver.h2
-rw-r--r--cpp/src/Ice/ThreadPool.cpp114
-rw-r--r--cpp/src/Ice/TraceUtil.cpp2
-rw-r--r--cpp/src/Ice/UdpTransceiver.cpp14
-rw-r--r--cpp/src/Ice/UdpTransceiver.h4
-rw-r--r--cpp/src/IceBox/Admin.cpp3
-rw-r--r--cpp/src/IceBox/Makefile.mak4
-rw-r--r--cpp/src/IceBox/Service.cpp3
-rw-r--r--cpp/src/IceBox/ServiceManagerI.cpp301
-rw-r--r--cpp/src/IceBox/ServiceManagerI.h3
-rw-r--r--cpp/src/IceGrid/.depend6
-rw-r--r--cpp/src/IceGrid/Activator.cpp15
-rw-r--r--cpp/src/IceGrid/AdapterCache.cpp3
-rw-r--r--cpp/src/IceGrid/AdapterCache.h10
-rw-r--r--cpp/src/IceGrid/Client.cpp3
-rw-r--r--cpp/src/IceGrid/Database.cpp56
-rw-r--r--cpp/src/IceGrid/Database.h4
-rw-r--r--cpp/src/IceGrid/IceGridNode.cpp96
-rw-r--r--cpp/src/IceGrid/IceGridRegistry.cpp3
-rw-r--r--cpp/src/IceGrid/LocatorI.cpp29
-rw-r--r--cpp/src/IceGrid/LocatorRegistryI.cpp4
-rw-r--r--cpp/src/IceGrid/Makefile.mak8
-rw-r--r--cpp/src/IceGrid/NodeCache.cpp38
-rw-r--r--cpp/src/IceGrid/NodeI.cpp5
-rw-r--r--cpp/src/IceGrid/NodeSessionManager.cpp14
-rw-r--r--cpp/src/IceGrid/RegistryI.cpp36
-rw-r--r--cpp/src/IceGrid/RegistryI.h1
-rw-r--r--cpp/src/IceGrid/ReplicaSessionManager.cpp7
-rw-r--r--cpp/src/IceGrid/ServerAdapterI.cpp30
-rw-r--r--cpp/src/IceGrid/ServerAdapterI.h1
-rw-r--r--cpp/src/IceGrid/ServerCache.cpp7
-rw-r--r--cpp/src/IceGrid/ServerI.cpp174
-rw-r--r--cpp/src/IceGrid/ServerI.h2
-rw-r--r--cpp/src/IceGridLib/Makefile.mak4
-rw-r--r--cpp/src/IcePatch2/.depend2
-rw-r--r--cpp/src/IcePatch2/Calc.cpp3
-rw-r--r--cpp/src/IcePatch2/Client.cpp3
-rw-r--r--cpp/src/IcePatch2/FileServerI.cpp28
-rw-r--r--cpp/src/IcePatch2/Makefile.mak4
-rw-r--r--cpp/src/IcePatch2/Server.cpp3
-rw-r--r--cpp/src/IcePatch2/Util.cpp31
-rw-r--r--cpp/src/IceSSL/Makefile.mak6
-rw-r--r--cpp/src/IceStorm/.depend12
-rw-r--r--cpp/src/IceStorm/Admin.cpp7
-rw-r--r--cpp/src/IceStorm/Makefile.mak4
-rw-r--r--cpp/src/IceStorm/Service.cpp51
-rw-r--r--cpp/src/IceStorm/Subscriber.cpp3
-rw-r--r--cpp/src/IceUtil/Cond.cpp4
-rw-r--r--cpp/src/IceUtil/Makefile.mak4
-rw-r--r--cpp/src/IceUtil/StringUtil.cpp11
-rw-r--r--cpp/src/IceUtil/Thread.cpp2
-rw-r--r--cpp/src/IceXML/Makefile.mak4
-rw-r--r--cpp/src/Slice/.depend7
-rw-r--r--cpp/src/Slice/CPlusPlusUtil.cpp145
-rw-r--r--cpp/src/Slice/CsUtil.cpp136
-rw-r--r--cpp/src/Slice/FileTracker.cpp94
-rw-r--r--cpp/src/Slice/Grammar.cpp1938
-rw-r--r--cpp/src/Slice/Grammar.h33
-rw-r--r--cpp/src/Slice/Grammar.y2
-rw-r--r--cpp/src/Slice/JavaUtil.cpp388
-rw-r--r--cpp/src/Slice/Makefile.mak4
-rw-r--r--cpp/src/Slice/Parser.cpp85
-rw-r--r--cpp/src/Slice/Preprocessor.cpp86
-rw-r--r--cpp/src/Slice/PythonUtil.cpp229
-rw-r--r--cpp/src/Slice/RubyUtil.cpp11
-rw-r--r--cpp/src/Slice/Util.cpp167
-rwxr-xr-xcpp/src/ca/iceca28
-rw-r--r--cpp/src/iceserviceinstall/Install.cpp3
-rw-r--r--cpp/src/iceserviceinstall/Makefile.mak4
-rw-r--r--cpp/src/iceserviceinstall/ServiceInstaller.cpp6
-rw-r--r--cpp/src/slice2cpp/.depend4
-rw-r--r--cpp/src/slice2cpp/Gen.cpp513
-rw-r--r--cpp/src/slice2cpp/Gen.h29
-rw-r--r--cpp/src/slice2cpp/Main.cpp14
-rw-r--r--cpp/src/slice2cpp/Makefile.mak4
-rw-r--r--cpp/src/slice2cs/.depend4
-rw-r--r--cpp/src/slice2cs/Gen.cpp88
-rw-r--r--cpp/src/slice2cs/Gen.h9
-rw-r--r--cpp/src/slice2cs/Main.cpp12
-rw-r--r--cpp/src/slice2cs/Makefile.mak4
-rw-r--r--cpp/src/slice2docbook/.depend2
-rw-r--r--cpp/src/slice2docbook/Main.cpp14
-rw-r--r--cpp/src/slice2docbook/Makefile.mak4
-rw-r--r--cpp/src/slice2freeze/.depend2
-rw-r--r--cpp/src/slice2freeze/Main.cpp63
-rw-r--r--cpp/src/slice2freeze/Makefile.mak4
-rw-r--r--cpp/src/slice2freezej/.depend1
-rw-r--r--cpp/src/slice2freezej/Main.cpp51
-rw-r--r--cpp/src/slice2freezej/Makefile.mak4
-rw-r--r--cpp/src/slice2html/.depend4
-rw-r--r--cpp/src/slice2html/Gen.cpp20
-rw-r--r--cpp/src/slice2html/Main.cpp20
-rw-r--r--cpp/src/slice2html/Makefile.mak4
-rw-r--r--cpp/src/slice2java/.depend4
-rw-r--r--cpp/src/slice2java/Gen.cpp102
-rw-r--r--cpp/src/slice2java/Gen.h2
-rw-r--r--cpp/src/slice2java/Main.cpp80
-rw-r--r--cpp/src/slice2java/Makefile.mak4
-rw-r--r--cpp/src/slice2py/.depend2
-rw-r--r--cpp/src/slice2py/Main.cpp12
-rw-r--r--cpp/src/slice2py/Makefile.mak4
-rw-r--r--cpp/src/slice2rb/.depend2
-rw-r--r--cpp/src/slice2rb/Main.cpp10
-rw-r--r--cpp/src/slice2rb/Makefile.mak4
146 files changed, 4480 insertions, 2508 deletions
diff --git a/cpp/src/Freeze/.depend b/cpp/src/Freeze/.depend
index 47c39fe38ef..8958c771442 100644
--- a/cpp/src/Freeze/.depend
+++ b/cpp/src/Freeze/.depend
@@ -1,8 +1,8 @@
BackgroundSaveEvictor$(OBJEXT): BackgroundSaveEvictor.cpp $(includedir)/Freeze/BackgroundSaveEvictor.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Freeze/Evictor.h $(includedir)/Ice/ServantLocator.h $(includedir)/Freeze/Exception.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/DisableWarnings.h
BackgroundSaveEvictorI$(OBJEXT): BackgroundSaveEvictorI.cpp ../Freeze/BackgroundSaveEvictorI.h ../Freeze/EvictorI.h $(includedir)/IceUtil/IceUtil.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/AbstractMutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Cache.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/CountDownLatch.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/CtrlCHandler.h $(includedir)/IceUtil/Functional.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/RWRecMutex.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/UUID.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/Freeze/Freeze.h $(includedir)/Freeze/Initialize.h $(includedir)/Freeze/EvictorF.h $(includedir)/Freeze/ConnectionF.h $(includedir)/Freeze/Index.h $(includedir)/Freeze/DB.h $(includedir)/Freeze/Transaction.h $(includedir)/Freeze/BackgroundSaveEvictor.h $(includedir)/Freeze/Evictor.h $(includedir)/Freeze/Exception.h $(includedir)/Freeze/TransactionalEvictor.h $(includedir)/Freeze/Map.h $(includedir)/Freeze/Connection.h $(includedir)/Freeze/TransactionHolder.h $(includedir)/Freeze/Catalog.h $(includedir)/Freeze/CatalogData.h ../Freeze/ObjectStore.h $(includedir)/Freeze/EvictorStorage.h ../Freeze/TransactionI.h ../Freeze/EvictorIteratorI.h ../Freeze/SharedDbEnv.h $(includedir)/IceUtil/DisableWarnings.h $(includedir)/IceUtil/StringUtil.h ../Freeze/Util.h
CatalogData$(OBJEXT): CatalogData.cpp $(includedir)/Freeze/CatalogData.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Object.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/DisableWarnings.h
-Catalog$(OBJEXT): Catalog.cpp $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/Freeze/Catalog.h $(includedir)/Freeze/Map.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/Freeze/DB.h $(includedir)/Freeze/Exception.h $(includedir)/Freeze/Connection.h $(includedir)/Freeze/Transaction.h $(includedir)/Freeze/CatalogData.h
-CatalogIndexList$(OBJEXT): CatalogIndexList.cpp $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/Freeze/CatalogIndexList.h $(includedir)/Freeze/Map.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/Freeze/DB.h $(includedir)/Freeze/Exception.h $(includedir)/Freeze/Connection.h $(includedir)/Freeze/Transaction.h
+Catalog$(OBJEXT): Catalog.cpp $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/IceUtil/StringUtil.h $(includedir)/Freeze/Catalog.h $(includedir)/Freeze/Map.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/Freeze/DB.h $(includedir)/Freeze/Exception.h $(includedir)/Freeze/Connection.h $(includedir)/Freeze/Transaction.h $(includedir)/Freeze/CatalogData.h
+CatalogIndexList$(OBJEXT): CatalogIndexList.cpp $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/IceUtil/StringUtil.h $(includedir)/Freeze/CatalogIndexList.h $(includedir)/Freeze/Map.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/Freeze/DB.h $(includedir)/Freeze/Exception.h $(includedir)/Freeze/Connection.h $(includedir)/Freeze/Transaction.h
ConnectionI$(OBJEXT): ConnectionI.cpp ../Freeze/ConnectionI.h $(includedir)/Freeze/Connection.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Freeze/Transaction.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Freeze/Initialize.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/Freeze/EvictorF.h $(includedir)/Freeze/ConnectionF.h $(includedir)/Freeze/Index.h $(includedir)/Freeze/DB.h ../Freeze/TransactionI.h ../Freeze/SharedDbEnv.h $(includedir)/Freeze/Map.h $(includedir)/Freeze/Exception.h ../Freeze/MapI.h
Connection$(OBJEXT): Connection.cpp $(includedir)/Freeze/Connection.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Freeze/Transaction.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/CommunicatorF.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/DisableWarnings.h
DB$(OBJEXT): DB.cpp $(includedir)/Freeze/DB.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Object.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/DisableWarnings.h
diff --git a/cpp/src/Freeze/Makefile.mak b/cpp/src/Freeze/Makefile.mak
index 237d0d21580..f138f75bcb4 100644
--- a/cpp/src/Freeze/Makefile.mak
+++ b/cpp/src/Freeze/Makefile.mak
@@ -57,7 +57,7 @@ LINKWITH = $(LIBS) $(DB_LIBS)
PDBFLAGS = /pdb:$(DLLNAME:.dll=.pdb)
!endif
-!if "$(CPP_COMPILER)" == "BCC2007"
+!if "$(BCPLUSPLUS)" == "yes"
RES_FILE = ,, Freeze.res
!else
RES_FILE = Freeze.res
@@ -106,7 +106,7 @@ install:: all
copy $(DLLNAME) $(install_bindir)
-!if "$(CPP_COMPILER)" == "BCC2007" && "$(OPTIMIZE)" != "yes"
+!if "$(BCPLUSPLUS)" == "yes" && "$(OPTIMIZE)" != "yes"
install:: all
copy $(DLLNAME:.dll=.tds) $(install_bindir)
diff --git a/cpp/src/Freeze/SharedDbEnv.cpp b/cpp/src/Freeze/SharedDbEnv.cpp
index 88ca89dbedd..b163fbe3d6d 100644
--- a/cpp/src/Freeze/SharedDbEnv.cpp
+++ b/cpp/src/Freeze/SharedDbEnv.cpp
@@ -565,7 +565,25 @@ Freeze::SharedDbEnv::cleanup()
//
for(SharedDbMap::iterator p = _sharedDbMap.begin(); p != _sharedDbMap.end(); ++p)
{
- delete p->second;
+ try
+ {
+ delete p->second;
+ }
+ catch(const DatabaseException& ex)
+ {
+ Error out(_communicator->getLogger());
+ out << "Freeze map: \"" << p->first << "\" close error: " << ex;
+ }
+ catch(const std::exception& ex)
+ {
+ Error out(_communicator->getLogger());
+ out << "Freeze map: \"" << p->first << "\" close error: " << ex.what();
+ }
+ catch(...)
+ {
+ Error out(_communicator->getLogger());
+ out << "Freeze map: \"" << p->first << "\" close error: unknown exception.";
+ }
}
//
diff --git a/cpp/src/FreezeScript/.depend b/cpp/src/FreezeScript/.depend
index 8d7ce9c54d1..fb35a2a4ff0 100644
--- a/cpp/src/FreezeScript/.depend
+++ b/cpp/src/FreezeScript/.depend
@@ -3,7 +3,7 @@ Scanner$(OBJEXT): Scanner.cpp $(includedir)/IceUtil/Config.h ../FreezeScript/Gra
AssignVisitor$(OBJEXT): AssignVisitor.cpp ../FreezeScript/AssignVisitor.h ../FreezeScript/Data.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/Slice/Parser.h ../FreezeScript/Error.h ../FreezeScript/Util.h $(includedir)/Freeze/CatalogData.h
Data$(OBJEXT): Data.cpp $(includedir)/IceUtil/DisableWarnings.h ../FreezeScript/Data.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/Slice/Parser.h ../FreezeScript/Error.h ../FreezeScript/Util.h $(includedir)/Freeze/CatalogData.h ../FreezeScript/Exception.h $(includedir)/IceUtil/InputUtil.h
Error$(OBJEXT): Error.cpp ../FreezeScript/Error.h $(includedir)/Slice/Parser.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h ../FreezeScript/Exception.h ../FreezeScript/Util.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Freeze/CatalogData.h
-Functions$(OBJEXT): Functions.cpp ../FreezeScript/Functions.h ../FreezeScript/Data.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/Slice/Parser.h ../FreezeScript/Error.h ../FreezeScript/Util.h $(includedir)/Freeze/CatalogData.h $(includedir)/IceUtil/UUID.h
+Functions$(OBJEXT): Functions.cpp ../FreezeScript/Functions.h ../FreezeScript/Data.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/Slice/Parser.h ../FreezeScript/Error.h ../FreezeScript/Util.h $(includedir)/Freeze/CatalogData.h $(includedir)/IceUtil/UUID.h $(includedir)/IceUtil/StringUtil.h
Exception$(OBJEXT): Exception.cpp ../FreezeScript/Exception.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Config.h
Parser$(OBJEXT): Parser.cpp ../FreezeScript/Parser.h ../FreezeScript/Data.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/Slice/Parser.h ../FreezeScript/Error.h ../FreezeScript/GrammarUtil.h
Print$(OBJEXT): Print.cpp ../FreezeScript/Print.h ../FreezeScript/Data.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/Slice/Parser.h ../FreezeScript/Error.h ../FreezeScript/Util.h $(includedir)/Freeze/CatalogData.h $(includedir)/IceUtil/OutputUtil.h
diff --git a/cpp/src/FreezeScript/Data.cpp b/cpp/src/FreezeScript/Data.cpp
index 247141bf6c5..133fb1aa42f 100644
--- a/cpp/src/FreezeScript/Data.cpp
+++ b/cpp/src/FreezeScript/Data.cpp
@@ -859,8 +859,12 @@ string
FreezeScript::IntegerData::toString(Ice::Long value)
{
char buf[64];
-#if defined(_WIN32)
+#ifdef _WIN32
+#if defined(_MSC_VER) && (_MSC_VER >= 1400)
+ sprintf_s(buf, "%I64d", value);
+#else
sprintf(buf, "%I64d", value);
+#endif
#elif defined(ICE_64)
sprintf(buf, "%ld", value);
#else
diff --git a/cpp/src/FreezeScript/DumpDB.cpp b/cpp/src/FreezeScript/DumpDB.cpp
index e5958d57059..bf377926f8b 100644
--- a/cpp/src/FreezeScript/DumpDB.cpp
+++ b/cpp/src/FreezeScript/DumpDB.cpp
@@ -160,6 +160,9 @@ run(int argc, char** argv, const Ice::CommunicatorPtr& communicator)
vector<string> args;
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
args = opts.parse(argc, (const char**)argv);
}
catch(const IceUtilInternal::BadOptException& e)
diff --git a/cpp/src/FreezeScript/Makefile.mak b/cpp/src/FreezeScript/Makefile.mak
index 8f72c15194b..fb4cdcbb46c 100644
--- a/cpp/src/FreezeScript/Makefile.mak
+++ b/cpp/src/FreezeScript/Makefile.mak
@@ -47,7 +47,7 @@ TPDBFLAGS = /pdb:$(TRANSFORMDB:.exe=.pdb)
DPDBFLAGS = /pdb:$(DUMPDB:.exe=.pdb)
!endif
-!if "$(CPP_COMPILER)" == "BCC2007"
+!if "$(BCPLUSPLUS)" == "yes"
TRES_FILE = ,, TransformDB.res
DRES_FILE = ,, DumpDB.res
!else
@@ -91,7 +91,7 @@ install:: all
copy $(DUMPDB) $(install_bindir)
-!if "$(CPP_COMPILER)" == "BCC2007" && "$(OPTIMIZE)" != "yes"
+!if "$(BCPLUSPLUS)" == "yes" && "$(OPTIMIZE)" != "yes"
install:: all
copy $(TRANSFORMDB:.exe=.tds) $(install_bindir)
diff --git a/cpp/src/FreezeScript/transformdb.cpp b/cpp/src/FreezeScript/transformdb.cpp
index 432cf673029..98ebebb0537 100644
--- a/cpp/src/FreezeScript/transformdb.cpp
+++ b/cpp/src/FreezeScript/transformdb.cpp
@@ -259,6 +259,9 @@ run(int argc, char** argv, const Ice::CommunicatorPtr& communicator)
vector<string> args;
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
args = opts.parse(argc, (const char**)argv);
}
catch(const IceUtilInternal::BadOptException& e)
diff --git a/cpp/src/Glacier2/Blobject.cpp b/cpp/src/Glacier2/Blobject.cpp
index a0688d89b97..ae3ae5441b6 100644
--- a/cpp/src/Glacier2/Blobject.cpp
+++ b/cpp/src/Glacier2/Blobject.cpp
@@ -53,11 +53,9 @@ public:
//
if(_connection)
{
- try
- {
- ex.ice_throw();
- }
- catch(const Ice::ConnectionLostException&)
+ if(dynamic_cast<const Ice::SocketException*>(&ex) ||
+ dynamic_cast<const Ice::TimeoutException*>(&ex) ||
+ dynamic_cast<const Ice::ProtocolException*>(&ex))
{
try
{
@@ -67,9 +65,6 @@ public:
{
}
}
- catch(const Exception&)
- {
- }
}
_amdCB->ice_exception(ex);
@@ -115,11 +110,9 @@ public:
//
if(_connection)
{
- try
- {
- ex.ice_throw();
- }
- catch(const Ice::ConnectionLostException&)
+ if(dynamic_cast<const Ice::SocketException*>(&ex) ||
+ dynamic_cast<const Ice::TimeoutException*>(&ex) ||
+ dynamic_cast<const Ice::ProtocolException*>(&ex))
{
try
{
@@ -129,9 +122,6 @@ public:
{
}
}
- catch(const Exception&)
- {
- }
}
_amdCB->ice_exception(ex);
@@ -168,7 +158,7 @@ Glacier2::Blobject::Blobject(const InstancePtr& instance, const ConnectionPtr& r
_instance->clientRequestQueueThread();
if(t)
{
- const_cast<RequestQueuePtr&>(_requestQueue) = new RequestQueue(t, _instance);
+ const_cast<RequestQueuePtr&>(_requestQueue) = new RequestQueue(t, _instance, _reverseConnection);
}
}
@@ -347,8 +337,8 @@ Glacier2::Blobject::invoke(ObjectPrx& proxy, const AMD_Array_Object_ice_invokePt
bool override;
try
{
- override = _requestQueue->addRequest(
- new Request(proxy, inParams, current, _forwardContext, _sslContext, amdCB, _reverseConnection));
+ override = _requestQueue->addRequest(new Request(proxy, inParams, current, _forwardContext, _sslContext,
+ amdCB));
}
catch(const ObjectNotExistException& ex)
{
diff --git a/cpp/src/Glacier2/Glacier2Router.cpp b/cpp/src/Glacier2/Glacier2Router.cpp
index b86bc645cef..81f0e9d063e 100644
--- a/cpp/src/Glacier2/Glacier2Router.cpp
+++ b/cpp/src/Glacier2/Glacier2Router.cpp
@@ -105,6 +105,9 @@ Glacier2::RouterService::start(int argc, char* argv[])
vector<string> args;
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
args = opts.parse(argc, (const char**)argv);
}
catch(const IceUtilInternal::BadOptException& e)
@@ -196,6 +199,9 @@ Glacier2::RouterService::start(int argc, char* argv[])
{
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
obj = communicator()->propertyToProxy(verifierProperty);
}
catch(const Ice::ProxyParseException&)
@@ -234,6 +240,9 @@ Glacier2::RouterService::start(int argc, char* argv[])
{
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
verifier = PermissionsVerifierPrx::checkedCast(obj);
if(!verifier)
{
@@ -302,6 +311,9 @@ Glacier2::RouterService::start(int argc, char* argv[])
ObjectPrx obj;
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
obj = communicator()->propertyToProxy(sessionManagerProperty);
}
catch(const Ice::Exception& ex)
@@ -313,6 +325,9 @@ Glacier2::RouterService::start(int argc, char* argv[])
}
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
sessionManager = SessionManagerPrx::checkedCast(obj);
if(!sessionManager)
{
@@ -352,6 +367,9 @@ Glacier2::RouterService::start(int argc, char* argv[])
{
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
obj = communicator()->propertyToProxy(sslVerifierProperty);
}
catch(const Ice::ProxyParseException&)
@@ -392,6 +410,9 @@ Glacier2::RouterService::start(int argc, char* argv[])
{
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
sslVerifier = SSLPermissionsVerifierPrx::checkedCast(obj);
if(!sslVerifier)
{
@@ -424,6 +445,9 @@ Glacier2::RouterService::start(int argc, char* argv[])
ObjectPrx obj;
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
obj = communicator()->propertyToProxy(sslSessionManagerProperty);
}
catch(const Ice::Exception& ex)
@@ -435,6 +459,9 @@ Glacier2::RouterService::start(int argc, char* argv[])
}
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
sslSessionManager = SSLSessionManagerPrx::checkedCast(obj);
if(!sslSessionManager)
{
@@ -469,6 +496,9 @@ Glacier2::RouterService::start(int argc, char* argv[])
//
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
_instance = new Instance(communicator(), clientAdapter, serverAdapter);
}
catch(const Ice::InitializationException& ex)
diff --git a/cpp/src/Glacier2/Instance.cpp b/cpp/src/Glacier2/Instance.cpp
index 455b2a3ade5..1f65fc04f4f 100644
--- a/cpp/src/Glacier2/Instance.cpp
+++ b/cpp/src/Glacier2/Instance.cpp
@@ -30,14 +30,30 @@ Glacier2::Instance::Instance(const Ice::CommunicatorPtr& communicator, const Ice
{
IceUtil::Time sleepTime = IceUtil::Time::milliSeconds(_properties->getPropertyAsInt(serverSleepTime));
const_cast<RequestQueueThreadPtr&>(_serverRequestQueueThread) = new RequestQueueThread(sleepTime);
- _serverRequestQueueThread->start();
+ try
+ {
+ _serverRequestQueueThread->start();
+ }
+ catch(const IceUtil::Exception&)
+ {
+ _serverRequestQueueThread->destroy();
+ throw;
+ }
}
if(_properties->getPropertyAsIntWithDefault(clientBuffered, 1) > 0)
{
IceUtil::Time sleepTime = IceUtil::Time::milliSeconds(_properties->getPropertyAsInt(clientSleepTime));
const_cast<RequestQueueThreadPtr&>(_clientRequestQueueThread) = new RequestQueueThread(sleepTime);
- _clientRequestQueueThread->start();
+ try
+ {
+ _clientRequestQueueThread->start();
+ }
+ catch(const IceUtil::Exception&)
+ {
+ _clientRequestQueueThread->destroy();
+ throw;
+ }
}
const_cast<ProxyVerifierPtr&>(_proxyVerifier) = new ProxyVerifier(communicator);
diff --git a/cpp/src/Glacier2/Makefile.mak b/cpp/src/Glacier2/Makefile.mak
index e9d2253afb1..dbe652d05ae 100644
--- a/cpp/src/Glacier2/Makefile.mak
+++ b/cpp/src/Glacier2/Makefile.mak
@@ -45,7 +45,7 @@ SDIR = $(slicedir)\Glacier2
CPPFLAGS = -I.. $(CPPFLAGS) -DWIN32_LEAN_AND_MEAN
LINKWITH = $(LIBS) $(OPENSSL_LIBS) glacier2$(LIBSUFFIX).lib icessl$(LIBSUFFIX).lib
-!if "$(CPP_COMPILER)" != "BCC2007"
+!if "$(BCPLUSPLUS)" != "yes"
LINKWITH = $(LINKWITH) ws2_32.lib
!endif
@@ -54,7 +54,7 @@ PDBFLAGS = /pdb:$(DLLNAME:.dll=.pdb)
RPDBFLAGS = /pdb:$(ROUTER:.exe=.pdb)
!endif
-!if "$(CPP_COMPILER)" == "BCC2007"
+!if "$(BCPLUSPLUS)" == "yes"
RES_FILE = ,, Glacier2.res
RRES_FILE = ,, Glacier2Router.res
!else
@@ -95,7 +95,7 @@ install:: all
copy $(ROUTER) $(install_bindir)
-!if "$(CPP_COMPILER)" == "BCC2007" && "$(OPTIMIZE)" != "yes"
+!if "$(BCPLUSPLUS)" == "yes" && "$(OPTIMIZE)" != "yes"
install:: all
copy $(DLLNAME:.dll=.tds) $(install_bindir)
diff --git a/cpp/src/Glacier2/RequestQueue.cpp b/cpp/src/Glacier2/RequestQueue.cpp
index 8d8db6e264b..2113dc3faa2 100644
--- a/cpp/src/Glacier2/RequestQueue.cpp
+++ b/cpp/src/Glacier2/RequestQueue.cpp
@@ -51,11 +51,9 @@ public:
//
if(_connection)
{
- try
- {
- ex.ice_throw();
- }
- catch(const Ice::ConnectionLostException&)
+ if(dynamic_cast<const Ice::SocketException*>(&ex) ||
+ dynamic_cast<const Ice::TimeoutException*>(&ex) ||
+ dynamic_cast<const Ice::ProtocolException*>(&ex))
{
try
{
@@ -65,9 +63,6 @@ public:
{
}
}
- catch(const Exception&)
- {
- }
}
if(_amdCB)
@@ -87,14 +82,13 @@ private:
Glacier2::Request::Request(const ObjectPrx& proxy, const std::pair<const Byte*, const Byte*>& inParams,
const Current& current, bool forwardContext, const Ice::Context& sslContext,
- const AMD_Array_Object_ice_invokePtr& amdCB, const ConnectionPtr& connection) :
+ const AMD_Array_Object_ice_invokePtr& amdCB) :
_proxy(proxy),
_inParams(inParams.first, inParams.second),
_current(current),
_forwardContext(forwardContext),
_sslContext(sslContext),
- _amdCB(amdCB),
- _connection(connection)
+ _amdCB(amdCB)
{
//
// If this is not a twoway call, we can finish the AMD call right
@@ -114,7 +108,7 @@ Glacier2::Request::Request(const ObjectPrx& proxy, const std::pair<const Byte*,
bool
-Glacier2::Request::invoke(const InstancePtr& instance)
+Glacier2::Request::invoke(const InstancePtr& instance, const Ice::ConnectionPtr& connection)
{
pair<const Byte*, const Byte*> inPair;
if(_inParams.size() == 0)
@@ -161,11 +155,11 @@ Glacier2::Request::invoke(const InstancePtr& instance)
AMI_Array_Object_ice_invokePtr amiCB;
if(_proxy->ice_isTwoway())
{
- amiCB = new AMI_Array_Object_ice_invokeI(_amdCB, instance, _connection);
+ amiCB = new AMI_Array_Object_ice_invokeI(_amdCB, instance, connection);
}
else
{
- amiCB = new AMI_Array_Object_ice_invokeI(0, instance, _connection);
+ amiCB = new AMI_Array_Object_ice_invokeI(0, instance, connection);
}
if(_forwardContext)
@@ -227,10 +221,12 @@ Glacier2::Request::override(const RequestPtr& other) const
return _override == other->_override;
}
-Glacier2::RequestQueue::RequestQueue(const RequestQueueThreadPtr& requestQueueThread,
- const InstancePtr& instance) :
+Glacier2::RequestQueue::RequestQueue(const RequestQueueThreadPtr& requestQueueThread,
+ const InstancePtr& instance,
+ const Ice::ConnectionPtr& connection) :
_requestQueueThread(requestQueueThread),
- _instance(instance)
+ _instance(instance),
+ _connection(connection)
{
}
@@ -273,7 +269,7 @@ Glacier2::RequestQueue::flushRequests(set<Ice::ObjectPrx>& batchProxies)
{
try
{
- if((*p)->invoke(_instance)) // If batch invocation, add the proxy to the batch proxy set.
+ if((*p)->invoke(_instance, _connection)) // If batch invocation, add the proxy to the batch proxy set.
{
batchProxies.insert((*p)->getProxy());
}
@@ -311,7 +307,14 @@ Glacier2::RequestQueueThread::destroy()
notify();
}
- getThreadControl().join();
+ try
+ {
+ getThreadControl().join();
+ }
+ catch(const IceUtil::ThreadNotStartedException&)
+ {
+ // Expected if start() failed.
+ }
}
void
diff --git a/cpp/src/Glacier2/RequestQueue.h b/cpp/src/Glacier2/RequestQueue.h
index 53f5fd5befb..5bda90a5794 100644
--- a/cpp/src/Glacier2/RequestQueue.h
+++ b/cpp/src/Glacier2/RequestQueue.h
@@ -31,9 +31,9 @@ class Request : public IceUtil::Shared
public:
Request(const Ice::ObjectPrx&, const std::pair<const Ice::Byte*, const Ice::Byte*>&, const Ice::Current&, bool,
- const Ice::Context&, const Ice::AMD_Array_Object_ice_invokePtr&, const Ice::ConnectionPtr&);
+ const Ice::Context&, const Ice::AMD_Array_Object_ice_invokePtr&);
- bool invoke(const InstancePtr&);
+ bool invoke(const InstancePtr&, const Ice::ConnectionPtr&);
bool override(const RequestPtr&) const;
const Ice::ObjectPrx& getProxy() const { return _proxy; }
bool hasOverride() const { return !_override.empty(); }
@@ -47,14 +47,13 @@ private:
const Ice::Context _sslContext;
const std::string _override;
const Ice::AMD_Array_Object_ice_invokePtr _amdCB;
- const Ice::ConnectionPtr _connection;
};
class RequestQueue : public IceUtil::Mutex, public IceUtil::Shared
{
public:
- RequestQueue(const RequestQueueThreadPtr&, const InstancePtr&);
+ RequestQueue(const RequestQueueThreadPtr&, const InstancePtr&, const Ice::ConnectionPtr&);
bool addRequest(const RequestPtr&);
void flushRequests(std::set<Ice::ObjectPrx>&);
@@ -63,6 +62,7 @@ private:
const RequestQueueThreadPtr _requestQueueThread;
const InstancePtr _instance;
+ const Ice::ConnectionPtr _connection;
std::vector<RequestPtr> _requests;
};
typedef IceUtil::Handle<RequestQueue> RequestQueuePtr;
diff --git a/cpp/src/Glacier2/SessionRouterI.cpp b/cpp/src/Glacier2/SessionRouterI.cpp
index cfbb9082ebc..9bc16b9b66c 100644
--- a/cpp/src/Glacier2/SessionRouterI.cpp
+++ b/cpp/src/Glacier2/SessionRouterI.cpp
@@ -648,6 +648,23 @@ Glacier2::SessionRouterI::SessionRouterI(const InstancePtr& instance,
routerId.category = _instance->properties()->getPropertyWithDefault("Glacier2.InstanceName", "Glacier2");
routerId.name = "router";
+ if(_sessionThread)
+ {
+ __setNoDelete(true);
+ try
+ {
+ _sessionThread->start();
+ }
+ catch(const IceUtil::Exception&)
+ {
+ _sessionThread->destroy();
+ _sessionThread = 0;
+ __setNoDelete(false);
+ throw;
+ }
+ __setNoDelete(false);
+ }
+
try
{
_instance->clientObjectAdapter()->add(this, routerId);
@@ -673,11 +690,6 @@ Glacier2::SessionRouterI::SessionRouterI(const InstancePtr& instance,
// Ignore.
}
- if(_sessionThread)
- {
- _sessionThread->start();
- }
-
_instance->setSessionRouter(this);
}
diff --git a/cpp/src/Ice/.depend b/cpp/src/Ice/.depend
index 6c9e941d834..5ffb2218bd1 100644
--- a/cpp/src/Ice/.depend
+++ b/cpp/src/Ice/.depend
@@ -37,7 +37,7 @@ Initialize$(OBJEXT): Initialize.cpp $(includedir)/IceUtil/DisableWarnings.h $(in
Instance$(OBJEXT): Instance.cpp $(includedir)/IceUtil/DisableWarnings.h ../Ice/Instance.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/StatsF.h ../Ice/TraceLevelsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h $(includedir)/Ice/ProxyFactoryF.h ../Ice/ThreadPoolF.h ../Ice/SelectorThreadF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/BuiltinSequences.h ../Ice/SharedContext.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h ../Ice/TraceLevels.h ../Ice/DefaultsAndOverrides.h ../Ice/RouterInfo.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/Router.h ../Ice/LocatorInfo.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/Locator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h ../Ice/ReferenceFactory.h ../Ice/Reference.h ../Ice/ProxyFactory.h ../Ice/ThreadPool.h ../Ice/EventHandlerF.h ../Ice/Selector.h $(includedir)/IceUtil/StringUtil.h ../Ice/Network.h ../Ice/SelectorF.h $(includedir)/Ice/LoggerUtil.h ../Ice/SelectorThread.h ../Ice/SocketReadyCallback.h ../Ice/ConnectionFactory.h ../Ice/ConnectionI.h $(includedir)/Ice/Connection.h ../Ice/TransceiverF.h ../Ice/EventHandler.h ../Ice/ConnectorF.h ../Ice/AcceptorF.h ../Ice/EndpointI.h ../Ice/ConnectionMonitor.h ../Ice/ObjectFactoryManager.h ../Ice/ObjectAdapterFactory.h ../Ice/ObjectAdapterI.h $(includedir)/Ice/ObjectAdapter.h ../Ice/PropertiesI.h $(includedir)/Ice/Properties.h ../Ice/LoggerI.h $(includedir)/Ice/Logger.h ../Ice/EndpointFactoryManager.h $(includedir)/Ice/EndpointFactoryF.h ../Ice/RetryQueue.h ../Ice/TcpEndpointI.h $(includedir)/Ice/EndpointFactory.h ../Ice/UdpEndpointI.h $(includedir)/Ice/DynamicLibrary.h ../Ice/PluginManagerI.h $(includedir)/IceUtil/UUID.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/ImplicitContextF.h ../Ice/SysLoggerI.h
LocalException$(OBJEXT): LocalException.cpp $(includedir)/Ice/LocalException.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/DisableWarnings.h
LocalObject$(OBJEXT): LocalObject.cpp $(includedir)/Ice/LocalObject.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h
-LocatorInfo$(OBJEXT): LocatorInfo.cpp ../Ice/LocatorInfo.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h ../Ice/LocatorInfoF.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Locator.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Direct.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/BuiltinSequences.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/Ice/StatsF.h ../Ice/TraceLevelsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/ReferenceFactoryF.h ../Ice/ThreadPoolF.h ../Ice/SelectorThreadF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h ../Ice/SharedContext.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h ../Ice/TraceLevels.h $(includedir)/Ice/LoggerUtil.h ../Ice/EndpointI.h ../Ice/TransceiverF.h ../Ice/ConnectorF.h ../Ice/AcceptorF.h ../Ice/Reference.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h
+LocatorInfo$(OBJEXT): LocatorInfo.cpp ../Ice/LocatorInfo.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h ../Ice/LocatorInfoF.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Locator.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Direct.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/BuiltinSequences.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/Ice/StatsF.h ../Ice/TraceLevelsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/ReferenceFactoryF.h ../Ice/ThreadPoolF.h ../Ice/SelectorThreadF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h ../Ice/SharedContext.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h ../Ice/TraceLevels.h $(includedir)/Ice/LoggerUtil.h ../Ice/EndpointI.h ../Ice/TransceiverF.h ../Ice/ConnectorF.h ../Ice/AcceptorF.h ../Ice/Reference.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Properties.h
Locator$(OBJEXT): Locator.cpp $(includedir)/Ice/Locator.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Direct.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/ObjectFactory.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/DisableWarnings.h
LoggerI$(OBJEXT): LoggerI.cpp $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Config.h ../Ice/LoggerI.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h
Logger$(OBJEXT): Logger.cpp $(includedir)/Ice/Logger.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/DisableWarnings.h
@@ -74,7 +74,7 @@ Service$(OBJEXT): Service.cpp $(includedir)/IceUtil/DisableWarnings.h $(included
SliceChecksumDict$(OBJEXT): SliceChecksumDict.cpp $(includedir)/Ice/SliceChecksumDict.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Object.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/DisableWarnings.h
SliceChecksums$(OBJEXT): SliceChecksums.cpp $(includedir)/Ice/SliceChecksums.h $(includedir)/Ice/SliceChecksumDict.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h
Stats$(OBJEXT): Stats.cpp $(includedir)/Ice/Stats.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/DisableWarnings.h
-StreamI$(OBJEXT): StreamI.cpp ../Ice/StreamI.h $(includedir)/Ice/Stream.h $(includedir)/Ice/StreamF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/Object.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/BuiltinSequences.h
+StreamI$(OBJEXT): StreamI.cpp ../Ice/StreamI.h $(includedir)/Ice/Stream.h $(includedir)/Ice/StreamF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/Object.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h
Stream$(OBJEXT): Stream.cpp $(includedir)/Ice/Stream.h $(includedir)/Ice/StreamF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/Object.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h
StringConverter$(OBJEXT): StringConverter.cpp $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Config.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/IceUtil/IceUtil.h $(includedir)/IceUtil/AbstractMutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Cache.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/CountDownLatch.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/CtrlCHandler.h $(includedir)/IceUtil/Functional.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/RWRecMutex.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/UUID.h $(includedir)/IceUtil/StringUtil.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/BuiltinSequences.h ../Ice/Instance.h ../Ice/TraceLevelsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h ../Ice/ThreadPoolF.h ../Ice/SelectorThreadF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h ../Ice/SharedContext.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/IconvStringConverter.h
SysLoggerI$(OBJEXT): SysLoggerI.cpp ../Ice/SysLoggerI.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h
@@ -88,7 +88,6 @@ TraceUtil$(OBJEXT): TraceUtil.cpp $(includedir)/IceUtil/StaticMutex.h $(included
Transceiver$(OBJEXT): Transceiver.cpp ../Ice/Transceiver.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h ../Ice/TransceiverF.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h ../Ice/SelectorF.h
UdpConnector$(OBJEXT): UdpConnector.cpp ../Ice/UdpConnector.h ../Ice/TransceiverF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/InstanceF.h ../Ice/Connector.h ../Ice/ConnectorF.h $(includedir)/Ice/Protocol.h ../Ice/UdpTransceiver.h ../Ice/TraceLevelsF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/StatsF.h ../Ice/Transceiver.h ../Ice/SelectorF.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h ../Ice/UdpEndpointI.h ../Ice/EndpointI.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/EndpointIF.h ../Ice/AcceptorF.h $(includedir)/Ice/EndpointFactory.h $(includedir)/Ice/EndpointFactoryF.h ../Ice/Network.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/BuiltinSequences.h
UdpEndpointI$(OBJEXT): UdpEndpointI.cpp ../Ice/UdpEndpointI.h ../Ice/EndpointI.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/InstanceF.h ../Ice/TransceiverF.h ../Ice/ConnectorF.h ../Ice/AcceptorF.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/EndpointFactory.h $(includedir)/Ice/EndpointFactoryF.h ../Ice/Network.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/LoggerF.h ../Ice/UdpConnector.h ../Ice/Connector.h ../Ice/UdpTransceiver.h ../Ice/TraceLevelsF.h $(includedir)/Ice/StatsF.h ../Ice/Transceiver.h ../Ice/SelectorF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/BuiltinSequences.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Timer.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h ../Ice/ThreadPoolF.h ../Ice/SelectorThreadF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h ../Ice/SharedContext.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h ../Ice/DefaultsAndOverrides.h
-UdpTransceiver$(OBJEXT): UdpTransceiver.cpp ../Ice/UdpTransceiver.h $(includedir)/Ice/InstanceF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h ../Ice/TraceLevelsF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/StatsF.h ../Ice/Transceiver.h ../Ice/TransceiverF.h ../Ice/SelectorF.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/CommunicatorF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h $(includedir)/Ice/ProxyFactoryF.h ../Ice/ThreadPoolF.h ../Ice/SelectorThreadF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/BuiltinSequences.h ../Ice/SharedContext.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h ../Ice/TraceLevels.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h ../Ice/Network.h $(includedir)/Ice/Properties.h
UnknownEndpointI$(OBJEXT): UnknownEndpointI.cpp ../Ice/UnknownEndpointI.h ../Ice/EndpointI.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/InstanceF.h ../Ice/TransceiverF.h ../Ice/ConnectorF.h ../Ice/AcceptorF.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/EndpointFactory.h $(includedir)/Ice/EndpointFactoryF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h ../Ice/Instance.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Timer.h $(includedir)/Ice/StatsF.h ../Ice/TraceLevelsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h $(includedir)/Ice/ProxyFactoryF.h ../Ice/ThreadPoolF.h ../Ice/SelectorThreadF.h $(includedir)/Ice/ConnectionFactoryF.h $(includedir)/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h $(includedir)/Ice/ObjectAdapterFactoryF.h ../Ice/EndpointFactoryManagerF.h ../Ice/RetryQueueF.h $(includedir)/Ice/DynamicLibraryF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/BuiltinSequences.h ../Ice/SharedContext.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/Process.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h ../Ice/Base64.h
DLLMain$(OBJEXT): DLLMain.cpp ../Ice/EventLoggerI.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h ../Ice/ImplicitContextI.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/Service.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h
EventLoggerI$(OBJEXT): EventLoggerI.cpp $(includedir)/IceUtil/StringUtil.h $(includedir)/IceUtil/Config.h ../Ice/EventLoggerI.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h ../Ice/EventLoggerMsg.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/StaticMutex.h
diff --git a/cpp/src/Ice/BasicStream.cpp b/cpp/src/Ice/BasicStream.cpp
index c5c53947751..e1a475f8ee1 100644
--- a/cpp/src/Ice/BasicStream.cpp
+++ b/cpp/src/Ice/BasicStream.cpp
@@ -291,6 +291,26 @@ IceInternal::BasicStream::ReadEncaps::swap(ReadEncaps& other)
std::swap(previous, other.previous);
}
+void
+IceInternal::BasicStream::endWriteEncapsChecked()
+{
+ if(!_currentWriteEncaps)
+ {
+ throw EncapsulationException(__FILE__, __LINE__, "not in an encapsulation");
+ }
+ endWriteEncaps();
+}
+
+void
+IceInternal::BasicStream::endReadEncapsChecked()
+{
+ if(!_currentReadEncaps)
+ {
+ throw EncapsulationException(__FILE__, __LINE__, "not in an encapsulation");
+ }
+ endReadEncaps();
+}
+
Int
IceInternal::BasicStream::getReadEncapsSize()
{
@@ -377,6 +397,14 @@ IceInternal::BasicStream::skipSlice()
void
IceInternal::BasicStream::writeTypeId(const string& id)
{
+ if(!_currentWriteEncaps || !_currentWriteEncaps->typeIdMap)
+ {
+ //
+ // write(ObjectPtr) must be called first.
+ //
+ throw MarshalException(__FILE__, __LINE__, "type ids require an encapsulation");
+ }
+
TypeIdWriteMap::const_iterator k = _currentWriteEncaps->typeIdMap->find(id);
if(k != _currentWriteEncaps->typeIdMap->end())
{
@@ -394,6 +422,14 @@ IceInternal::BasicStream::writeTypeId(const string& id)
void
IceInternal::BasicStream::readTypeId(string& id)
{
+ if(!_currentReadEncaps || !_currentReadEncaps->typeIdMap)
+ {
+ //
+ // read(PatchFunc, void*) must be called first.
+ //
+ throw MarshalException(__FILE__, __LINE__, "type ids require an encapsulation");
+ }
+
bool isIndex;
read(isIndex);
if(isIndex)
@@ -1743,34 +1779,42 @@ IceInternal::BasicStream::read(PatchFunc patchFunc, void* patchAddr)
Int index;
read(index);
- if(index == 0)
+ if(patchAddr)
{
- patchFunc(patchAddr, v); // Null Ptr.
- return;
- }
+ if(index == 0)
+ {
+ // Calling the patch function for null instances is necessary for correct functioning of Ice for
+ // Python and Ruby.
+ patchFunc(patchAddr, v); // Null Ptr.
+ return;
+ }
- if(index < 0 && patchAddr)
- {
- PatchMap::iterator p = _currentReadEncaps->patchMap->find(-index);
- if(p == _currentReadEncaps->patchMap->end())
+ if(index < 0)
{
+ PatchMap::iterator p = _currentReadEncaps->patchMap->find(-index);
+ if(p == _currentReadEncaps->patchMap->end())
+ {
+ //
+ // We have no outstanding instances to be patched for this
+ // index, so make a new entry in the patch map.
+ //
+ p = _currentReadEncaps->patchMap->insert(make_pair(-index, PatchList())).first;
+ }
//
- // We have no outstanding instances to be patched for this
- // index, so make a new entry in the patch map.
+ // Append a patch entry for this instance.
//
- p = _currentReadEncaps->patchMap->insert(make_pair(-index, PatchList())).first;
+ PatchEntry e;
+ e.patchFunc = patchFunc;
+ e.patchAddr = patchAddr;
+ p->second.push_back(e);
+ patchPointers(-index, _currentReadEncaps->unmarshaledMap->end(), p);
+ return;
}
- //
- // Append a patch entry for this instance.
- //
- PatchEntry e;
- e.patchFunc = patchFunc;
- e.patchAddr = patchAddr;
- p->second.push_back(e);
- patchPointers(-index, _currentReadEncaps->unmarshaledMap->end(), p);
- return;
}
- assert(index > 0);
+ if(index <= 0)
+ {
+ throw MarshalException(__FILE__, __LINE__, "Invalid class instance index");
+ }
string mostDerivedId;
readTypeId(mostDerivedId);
@@ -1896,6 +1940,8 @@ IceInternal::BasicStream::throwException()
string id;
read(id, false);
+ const string origId = id;
+
for(;;)
{
//
@@ -1938,8 +1984,22 @@ IceInternal::BasicStream::throwException()
{
traceSlicing("exception", id, _slicingCat, _instance->initializationData().logger);
}
+
skipSlice(); // Slice off what we don't understand.
- read(id, false); // Read type id for next slice.
+
+ try
+ {
+ read(id, false); // Read type id for next slice.
+ }
+ catch(UnmarshalOutOfBoundsException& ex)
+ {
+ //
+ // When read() raises this exception it means we've seen the last slice,
+ // so we set the reason member to a more helpful message.
+ //
+ ex.reason = "unknown exception type `" + origId + "'";
+ throw;
+ }
}
}
@@ -2004,6 +2064,15 @@ IceInternal::BasicStream::readPendingObjects()
}
while(num);
+ if(_currentReadEncaps && _currentReadEncaps->patchMap && _currentReadEncaps->patchMap->size() != 0)
+ {
+ //
+ // If any entries remain in the patch map, the sender has sent an index for an object, but failed
+ // to supply the object.
+ //
+ throw MarshalException(__FILE__, __LINE__, "Index for class received, but no instance");
+ }
+
//
// Iterate over the object list and invoke ice_postUnmarshal on
// each object. We must do this after all objects have been
diff --git a/cpp/src/Ice/ConnectRequestHandler.cpp b/cpp/src/Ice/ConnectRequestHandler.cpp
index 41c06017486..7066e8eb84e 100644
--- a/cpp/src/Ice/ConnectRequestHandler.cpp
+++ b/cpp/src/Ice/ConnectRequestHandler.cpp
@@ -281,7 +281,7 @@ ConnectRequestHandler::getConnection(bool waitInit)
if(_exception.get())
{
_exception->ice_throw();
- return false; // Keep the compiler happy.
+ return 0; // Keep the compiler happy.
}
else
{
diff --git a/cpp/src/Ice/ConnectionFactory.cpp b/cpp/src/Ice/ConnectionFactory.cpp
index b00d915aae4..107887e6501 100644
--- a/cpp/src/Ice/ConnectionFactory.cpp
+++ b/cpp/src/Ice/ConnectionFactory.cpp
@@ -55,6 +55,12 @@ IceInternal::OutgoingConnectionFactory::ConnectorInfo::operator<(const Connector
return connector < other.connector;
}
+bool
+IceInternal::OutgoingConnectionFactory::ConnectorInfo::operator==(const ConnectorInfo& other) const
+{
+ return connector == other.connector;
+}
+
void
IceInternal::OutgoingConnectionFactory::destroy()
{
@@ -193,7 +199,8 @@ IceInternal::OutgoingConnectionFactory::create(const vector<EndpointIPtr>& endpt
// Try to establish the connection to the connectors.
//
DefaultsAndOverridesPtr defaultsAndOverrides = _instance->defaultsAndOverrides();
- for(vector<ConnectorInfo>::const_iterator q = connectors.begin(); q != connectors.end(); ++q)
+ vector<ConnectorInfo>::const_iterator q;
+ for(q = connectors.begin(); q != connectors.end(); ++q)
{
try
{
@@ -209,6 +216,7 @@ IceInternal::OutgoingConnectionFactory::create(const vector<EndpointIPtr>& endpt
compress = q->endpoint->compress();
}
+ connection->activate();
break;
}
catch(const Ice::CommunicatorDestroyedException& ex)
@@ -230,7 +238,14 @@ IceInternal::OutgoingConnectionFactory::create(const vector<EndpointIPtr>& endpt
// Finish creating the connection (this removes the connectors from the _pending
// list and notifies any waiting threads).
//
- finishGetConnection(connectors, 0, connection);
+ if(connection)
+ {
+ finishGetConnection(connectors, *q, connection, 0);
+ }
+ else
+ {
+ finishGetConnection(connectors, *exception.get(), 0);
+ }
if(!connection)
{
@@ -325,16 +340,7 @@ IceInternal::OutgoingConnectionFactory::setRouterInfo(const RouterInfoPtr& route
{
if(q->second->endpoint() == endpoint)
{
- try
- {
- q->second->setAdapter(adapter);
- }
- catch(const Ice::LocalException&)
- {
- //
- // Ignore, the connection is being closed or closed.
- //
- }
+ q->second->setAdapter(adapter);
}
}
}
@@ -354,16 +360,7 @@ IceInternal::OutgoingConnectionFactory::removeAdapter(const ObjectAdapterPtr& ad
{
if(p->second->getAdapter() == adapter)
{
- try
- {
- p->second->setAdapter(0);
- }
- catch(const Ice::LocalException&)
- {
- //
- // Ignore, the connection is being closed or closed.
- //
- }
+ p->second->setAdapter(0);
}
}
}
@@ -443,7 +440,7 @@ IceInternal::OutgoingConnectionFactory::findConnection(const vector<EndpointIPtr
for(vector<EndpointIPtr>::const_iterator p = endpoints.begin(); p != endpoints.end(); ++p)
{
pair<multimap<EndpointIPtr, ConnectionIPtr>::iterator,
- multimap<EndpointIPtr, ConnectionIPtr>::iterator> pr = _connectionsByEndpoint.equal_range(*p);
+ multimap<EndpointIPtr, ConnectionIPtr>::iterator> pr = _connectionsByEndpoint.equal_range(*p);
for(multimap<EndpointIPtr, ConnectionIPtr>::iterator q = pr.first; q != pr.second; ++q)
{
@@ -472,8 +469,13 @@ IceInternal::OutgoingConnectionFactory::findConnection(const vector<ConnectorInf
DefaultsAndOverridesPtr defaultsAndOverrides = _instance->defaultsAndOverrides();
for(vector<ConnectorInfo>::const_iterator p = connectors.begin(); p != connectors.end(); ++p)
{
+ if(_pending.find(*p) != _pending.end())
+ {
+ continue;
+ }
+
pair<multimap<ConnectorInfo, ConnectionIPtr>::iterator,
- multimap<ConnectorInfo, ConnectionIPtr>::iterator> pr = _connections.equal_range(*p);
+ multimap<ConnectorInfo, ConnectionIPtr>::iterator> pr = _connections.equal_range(*p);
if(pr.first == pr.second)
{
@@ -538,7 +540,8 @@ IceInternal::OutgoingConnectionFactory::decPendingConnectCount()
ConnectionIPtr
IceInternal::OutgoingConnectionFactory::getConnection(const vector<ConnectorInfo>& connectors,
- const ConnectCallbackPtr& cb, bool& compress)
+ const ConnectCallbackPtr& cb,
+ bool& compress)
{
{
IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
@@ -581,62 +584,27 @@ IceInternal::OutgoingConnectionFactory::getConnection(const vector<ConnectorInfo
// finish if one of them is currently establishing a connection to one
// of our connectors.
//
- while(!_destroyed)
+ while(true)
{
+ if(_destroyed)
+ {
+ throw Ice::CommunicatorDestroyedException(__FILE__, __LINE__);
+ }
+
//
// Search for a matching connection. If we find one, we're done.
//
Ice::ConnectionIPtr connection = findConnection(connectors, compress);
if(connection)
{
- if(cb)
- {
- //
- // This might not be the first getConnection call for the callback. We need
- // to ensure that the callback isn't registered with any other pending
- // connectors since we just found a connection and therefore don't need to
- // wait anymore for other pending connectors.
- //
- for(vector<ConnectorInfo>::const_iterator p = connectors.begin(); p != connectors.end(); ++p)
- {
- map<ConnectorInfo, set<ConnectCallbackPtr> >::iterator q = _pending.find(*p);
- if(q != _pending.end())
- {
- q->second.erase(cb);
- }
- }
- }
return connection;
}
//
- // Determine whether another thread is currently attempting to connect to one of our endpoints;
- // if so we wait until it's done.
+ // Determine whether another thread/request is currently attempting to connect to
+ // one of our endpoints; if so we wait until it's done.
//
- bool found = false;
- for(vector<ConnectorInfo>::const_iterator p = connectors.begin(); p != connectors.end(); ++p)
- {
- map<ConnectorInfo, set<ConnectCallbackPtr> >::iterator q = _pending.find(*p);
- if(q != _pending.end())
- {
- found = true;
- if(cb)
- {
- q->second.insert(cb); // Add the callback to each pending connector.
- }
- }
- }
-
- if(!found)
- {
- //
- // If no thread is currently establishing a connection to one of our connectors,
- // we get out of this loop and start the connection establishment to one of the
- // given connectors.
- //
- break;
- }
- else
+ if(addToPending(cb, connectors))
{
//
// If a callback is not specified we wait until another thread notifies us about a
@@ -653,23 +621,14 @@ IceInternal::OutgoingConnectionFactory::getConnection(const vector<ConnectorInfo
return 0;
}
}
- }
-
- if(_destroyed)
- {
- throw Ice::CommunicatorDestroyedException(__FILE__, __LINE__);
- }
-
- //
- // No connection to any of our endpoints exists yet; we add the given connectors to
- // the _pending set to indicate that we're attempting connection establishment to
- // these connectors. We might attempt to connect to the same connector multiple times.
- //
- for(vector<ConnectorInfo>::const_iterator r = connectors.begin(); r != connectors.end(); ++r)
- {
- if(_pending.find(*r) == _pending.end())
+ else
{
- _pending.insert(pair<ConnectorInfo, set<ConnectCallbackPtr> >(*r, set<ConnectCallbackPtr>()));
+ //
+ // If no thread is currently establishing a connection to one of our connectors,
+ // we get out of this loop and start the connection establishment to one of the
+ // given connectors.
+ //
+ break;
}
}
}
@@ -727,47 +686,179 @@ IceInternal::OutgoingConnectionFactory::createConnection(const TransceiverPtr& t
void
IceInternal::OutgoingConnectionFactory::finishGetConnection(const vector<ConnectorInfo>& connectors,
- const ConnectCallbackPtr& cb,
- const ConnectionIPtr& connection)
+ const ConnectorInfo& ci,
+ const ConnectionIPtr& connection,
+ const ConnectCallbackPtr& cb)
{
+ set<ConnectCallbackPtr> connectionCallbacks;
+ if(cb)
+ {
+ connectionCallbacks.insert(cb);
+ }
+
set<ConnectCallbackPtr> callbacks;
+ {
+ IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
+ for(vector<ConnectorInfo>::const_iterator p = connectors.begin(); p != connectors.end(); ++p)
+ {
+ map<ConnectorInfo, set<ConnectCallbackPtr> >::iterator q = _pending.find(*p);
+ if(q != _pending.end())
+ {
+ for(set<ConnectCallbackPtr>::const_iterator r = q->second.begin(); r != q->second.end(); ++r)
+ {
+ if((*r)->hasConnector(ci))
+ {
+ connectionCallbacks.insert(*r);
+ }
+ else
+ {
+ callbacks.insert(*r);
+ }
+ }
+ _pending.erase(q);
+ }
+ }
+
+ set<ConnectCallbackPtr>::iterator r;
+ for(r = connectionCallbacks.begin(); r != connectionCallbacks.end(); ++r)
+ {
+ (*r)->removeFromPending();
+ callbacks.erase(*r);
+ }
+ for(r = callbacks.begin(); r != callbacks.end(); ++r)
+ {
+ (*r)->removeFromPending();
+ }
+ notifyAll();
+ }
+
+ bool compress;
+ DefaultsAndOverridesPtr defaultsAndOverrides = _instance->defaultsAndOverrides();
+ if(defaultsAndOverrides->overrideCompress)
+ {
+ compress = defaultsAndOverrides->overrideCompressValue;
+ }
+ else
+ {
+ compress = ci.endpoint->compress();
+ }
+
+ set<ConnectCallbackPtr>::const_iterator p;
+ for(p = callbacks.begin(); p != callbacks.end(); ++p)
+ {
+ (*p)->getConnection();
+ }
+ for(p = connectionCallbacks.begin(); p != connectionCallbacks.end(); ++p)
+ {
+ (*p)->setConnection(connection, compress);
+ }
+}
+
+void
+IceInternal::OutgoingConnectionFactory::finishGetConnection(const vector<ConnectorInfo>& connectors,
+ const Ice::LocalException& ex,
+ const ConnectCallbackPtr& cb)
+{
+ set<ConnectCallbackPtr> failedCallbacks;
+ if(cb)
+ {
+ failedCallbacks.insert(cb);
+ }
+ set<ConnectCallbackPtr> callbacks;
{
IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
-
- //
- // We're done trying to connect to the given connectors so we remove the
- // connectors from the pending list and notify waiting threads. We also
- // notify the pending connect callbacks (outside the synchronization).
- //
-
for(vector<ConnectorInfo>::const_iterator p = connectors.begin(); p != connectors.end(); ++p)
{
map<ConnectorInfo, set<ConnectCallbackPtr> >::iterator q = _pending.find(*p);
if(q != _pending.end())
{
- callbacks.insert(q->second.begin(), q->second.end());
+ for(set<ConnectCallbackPtr>::const_iterator r = q->second.begin(); r != q->second.end(); ++r)
+ {
+ if((*r)->removeConnectors(connectors))
+ {
+ failedCallbacks.insert(*r);
+ }
+ else
+ {
+ callbacks.insert(*r);
+ }
+ }
_pending.erase(q);
}
}
+
+ for(set<ConnectCallbackPtr>::iterator r = callbacks.begin(); r != callbacks.end(); ++r)
+ {
+ assert(failedCallbacks.find(*r) == failedCallbacks.end());
+ (*r)->removeFromPending();
+ }
notifyAll();
+ }
+
+ set<ConnectCallbackPtr>::const_iterator p;
+ for(p = callbacks.begin(); p != callbacks.end(); ++p)
+ {
+ (*p)->getConnection();
+ }
+ for(p = failedCallbacks.begin(); p != failedCallbacks.end(); ++p)
+ {
+ (*p)->setException(ex);
+ }
+}
- //
- // If the connect attempt succeeded and the communicator is not destroyed,
- // activate the connection!
- //
- if(connection && !_destroyed)
+bool
+IceInternal::OutgoingConnectionFactory::addToPending(const ConnectCallbackPtr& cb,
+ const vector<ConnectorInfo>& connectors)
+{
+ //
+ // Add the callback to each connector pending list.
+ //
+ bool found = false;
+ for(vector<ConnectorInfo>::const_iterator p = connectors.begin(); p != connectors.end(); ++p)
+ {
+ map<ConnectorInfo, set<ConnectCallbackPtr> >::iterator q = _pending.find(*p);
+ if(q != _pending.end())
{
- connection->activate();
+ found = true;
+ if(cb)
+ {
+ q->second.insert(cb);
+ }
}
}
+ if(found)
+ {
+ return true;
+ }
+
//
- // Notify any waiting callbacks.
+ // If there's no pending connection for the given connectors, we're
+ // responsible for its establishment. We add empty pending lists,
+ // other callbacks to the same connectors will be queued.
//
- for(set<ConnectCallbackPtr>::const_iterator p = callbacks.begin(); p != callbacks.end(); ++p)
+ for(vector<ConnectorInfo>::const_iterator r = connectors.begin(); r != connectors.end(); ++r)
{
- (*p)->getConnection();
+ if(_pending.find(*r) == _pending.end())
+ {
+ _pending.insert(pair<ConnectorInfo, set<ConnectCallbackPtr> >(*r, set<ConnectCallbackPtr>()));
+ }
+ }
+ return false;
+}
+
+void
+IceInternal::OutgoingConnectionFactory::removeFromPending(const ConnectCallbackPtr& cb,
+ const vector<ConnectorInfo>& connectors)
+{
+ for(vector<ConnectorInfo>::const_iterator p = connectors.begin(); p != connectors.end(); ++p)
+ {
+ map<ConnectorInfo, set<ConnectCallbackPtr> >::iterator q = _pending.find(*p);
+ if(q != _pending.end())
+ {
+ q->second.erase(cb);
+ }
}
}
@@ -808,7 +899,7 @@ IceInternal::OutgoingConnectionFactory::handleException(const LocalException& ex
{
IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
pair<multimap<ConnectorInfo, ConnectionIPtr>::iterator,
- multimap<ConnectorInfo, ConnectionIPtr>::iterator> pr = _connections.equal_range(ci);
+ multimap<ConnectorInfo, ConnectionIPtr>::iterator> pr = _connections.equal_range(ci);
for(multimap<ConnectorInfo, ConnectionIPtr>::iterator p = pr.first; p != pr.second; ++p)
{
@@ -820,7 +911,7 @@ IceInternal::OutgoingConnectionFactory::handleException(const LocalException& ex
}
pair<multimap<EndpointIPtr, ConnectionIPtr>::iterator,
- multimap<EndpointIPtr, ConnectionIPtr>::iterator> qr = _connectionsByEndpoint.equal_range(ci.endpoint);
+ multimap<EndpointIPtr, ConnectionIPtr>::iterator> qr = _connectionsByEndpoint.equal_range(ci.endpoint);
for(multimap<EndpointIPtr, ConnectionIPtr>::iterator q = qr.first; q != qr.second; ++q)
{
@@ -882,20 +973,8 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::ConnectCallback(const O
void
IceInternal::OutgoingConnectionFactory::ConnectCallback::connectionStartCompleted(const ConnectionIPtr& connection)
{
- bool compress;
- DefaultsAndOverridesPtr defaultsAndOverrides = _factory->_instance->defaultsAndOverrides();
- if(defaultsAndOverrides->overrideCompress)
- {
- compress = defaultsAndOverrides->overrideCompressValue;
- }
- else
- {
- compress = _iter->endpoint->compress();
- }
-
- _factory->finishGetConnection(_connectors, this, connection);
- _callback->setConnection(connection, compress);
- _factory->decPendingConnectCount(); // Must be called last.
+ connection->activate();
+ _factory->finishGetConnection(_connectors, *_iter, connection, this);
}
void
@@ -907,9 +986,7 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::connectionStartFailed(c
_factory->handleException(ex, *_iter, connection, _hasMore || _iter != _connectors.end() - 1);
if(dynamic_cast<const Ice::CommunicatorDestroyedException*>(&ex)) // No need to continue.
{
- _factory->finishGetConnection(_connectors, this, 0);
- _callback->setException(ex);
- _factory->decPendingConnectCount(); // Must be called last.
+ _factory->finishGetConnection(_connectors, ex, this);
}
else if(++_iter != _connectors.end()) // Try the next connector.
{
@@ -917,9 +994,7 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::connectionStartFailed(c
}
else
{
- _factory->finishGetConnection(_connectors, this, 0);
- _callback->setException(ex);
- _factory->decPendingConnectCount(); // Must be called last.
+ _factory->finishGetConnection(_connectors, ex, this);
}
}
@@ -1034,7 +1109,7 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::getConnection()
// A null return value from getConnection indicates that the connection
// is being established and that everthing has been done to ensure that
// the callback will be notified when the connection establishment is
- // done.
+ // done or that the callback already obtain the connection.
//
return;
}
@@ -1055,6 +1130,9 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::nextConnector()
Ice::ConnectionIPtr connection;
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
assert(_iter != _connectors.end());
connection = _factory->createConnection(_iter->connector->connect(), *_iter);
connection->start(this);
@@ -1065,6 +1143,55 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::nextConnector()
}
}
+void
+IceInternal::OutgoingConnectionFactory::ConnectCallback::setConnection(const Ice::ConnectionIPtr& connection,
+ bool compress)
+{
+ //
+ // Callback from the factory: the connection to one of the callback
+ // connectors has been established.
+ //
+ _callback->setConnection(connection, compress);
+ _factory->decPendingConnectCount(); // Must be called last.
+}
+
+void
+IceInternal::OutgoingConnectionFactory::ConnectCallback::setException(const Ice::LocalException& ex)
+{
+ //
+ // Callback from the factory: connection establishment failed.
+ //
+ _callback->setException(ex);
+ _factory->decPendingConnectCount(); // Must be called last.
+}
+
+bool
+IceInternal::OutgoingConnectionFactory::ConnectCallback::hasConnector(const ConnectorInfo& ci)
+{
+ return find(_connectors.begin(), _connectors.end(), ci) != _connectors.end();
+}
+
+bool
+IceInternal::OutgoingConnectionFactory::ConnectCallback::removeConnectors(const vector<ConnectorInfo>& connectors)
+{
+ //
+ // Callback from the factory: connecting to the given connectors
+ // failed, we remove the connectors and return true if there's
+ // no more connectors left to try.
+ //
+ for(vector<ConnectorInfo>::const_iterator p = connectors.begin(); p != connectors.end(); ++p)
+ {
+ _connectors.erase(remove(_connectors.begin(), _connectors.end(), *p), _connectors.end());
+ }
+ return _connectors.empty();
+}
+
+void
+IceInternal::OutgoingConnectionFactory::ConnectCallback::removeFromPending()
+{
+ _factory->removeFromPending(this, _connectors);
+}
+
bool
IceInternal::OutgoingConnectionFactory::ConnectCallback::operator<(const ConnectCallback& rhs) const
{
@@ -1280,8 +1407,10 @@ IceInternal::IncomingConnectionFactory::message(BasicStream&, const ThreadPoolPt
{
if(noMoreFds(ex.error))
{
- Error out(_instance->initializationData().logger);
- out << "fatal error: can't accept more connections:\n" << ex << '\n' << _acceptor->toString();
+ {
+ Error out(_instance->initializationData().logger);
+ out << "fatal error: can't accept more connections:\n" << ex << '\n' << _acceptor->toString();
+ }
abort();
}
diff --git a/cpp/src/Ice/ConnectionFactory.h b/cpp/src/Ice/ConnectionFactory.h
index 7bd97ab70e1..89ef6bc514b 100644
--- a/cpp/src/Ice/ConnectionFactory.h
+++ b/cpp/src/Ice/ConnectionFactory.h
@@ -75,6 +75,7 @@ private:
}
bool operator<(const ConnectorInfo& other) const;
+ bool operator==(const ConnectorInfo& other) const;
ConnectorPtr connector;
EndpointIPtr endpoint;
@@ -99,8 +100,15 @@ private:
void getConnection();
void nextConnector();
+ void setConnection(const Ice::ConnectionIPtr&, bool);
+ void setException(const Ice::LocalException&);
+
+ bool hasConnector(const ConnectorInfo&);
+ bool removeConnectors(const std::vector<ConnectorInfo>&);
+ void removeFromPending();
+
bool operator<(const ConnectCallback&) const;
-
+
private:
const OutgoingConnectionFactoryPtr _factory;
@@ -120,7 +128,13 @@ private:
void incPendingConnectCount();
void decPendingConnectCount();
Ice::ConnectionIPtr getConnection(const std::vector<ConnectorInfo>&, const ConnectCallbackPtr&, bool&);
- void finishGetConnection(const std::vector<ConnectorInfo>&, const ConnectCallbackPtr&, const Ice::ConnectionIPtr&);
+ void finishGetConnection(const std::vector<ConnectorInfo>&, const ConnectorInfo&, const Ice::ConnectionIPtr&,
+ const ConnectCallbackPtr&);
+ void finishGetConnection(const std::vector<ConnectorInfo>&, const Ice::LocalException&, const ConnectCallbackPtr&);
+
+ bool addToPending(const ConnectCallbackPtr&, const std::vector<ConnectorInfo>&);
+ void removeFromPending(const ConnectCallbackPtr&, const std::vector<ConnectorInfo>&);
+
Ice::ConnectionIPtr findConnection(const std::vector<ConnectorInfo>&, bool&);
Ice::ConnectionIPtr createConnection(const TransceiverPtr&, const ConnectorInfo&);
diff --git a/cpp/src/Ice/ConnectionI.cpp b/cpp/src/Ice/ConnectionI.cpp
index abb6c2f31cc..224fbf3c902 100644
--- a/cpp/src/Ice/ConnectionI.cpp
+++ b/cpp/src/Ice/ConnectionI.cpp
@@ -421,7 +421,7 @@ Ice::ConnectionI::waitUntilFinished()
}
void
-Ice::ConnectionI::monitor()
+Ice::ConnectionI::monitor(const IceUtil::Time& now)
{
IceUtil::Monitor<IceUtil::Mutex>::TryLock sync(*this);
if(!sync.acquired())
@@ -445,7 +445,7 @@ Ice::ConnectionI::monitor()
return;
}
- if(IceUtil::Time::now(IceUtil::Time::Monotonic) >= _acmAbsoluteTimeout)
+ if(now >= _acmAbsoluteTimeout)
{
setState(StateClosing, ConnectionTimeoutException(__FILE__, __LINE__));
}
@@ -985,12 +985,7 @@ Ice::ConnectionI::setAdapter(const ObjectAdapterPtr& adapter)
{
IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
- if(_state == StateClosing || _state == StateClosed)
- {
- assert(_exception.get());
- _exception->ice_throw();
- }
- else if(_state <= StateNotValidated)
+ if(_state <= StateNotValidated || _state >= StateClosing)
{
return;
}
@@ -2357,7 +2352,7 @@ Ice::ConnectionI::parseMessage(BasicStream& stream, Int& invokeNum, Int& request
_asyncRequests.erase(q);
}
}
-
+ notifyAll(); // Notify threads blocked in close(false)
break;
}
@@ -2380,10 +2375,6 @@ Ice::ConnectionI::parseMessage(BasicStream& stream, Int& invokeNum, Int& request
}
}
}
- catch(const SocketException& ex)
- {
- exception(ex);
- }
catch(const LocalException& ex)
{
if(_endpoint->datagram())
diff --git a/cpp/src/Ice/ConnectionI.h b/cpp/src/Ice/ConnectionI.h
index 642a41f981c..04fe3f100df 100644
--- a/cpp/src/Ice/ConnectionI.h
+++ b/cpp/src/Ice/ConnectionI.h
@@ -81,7 +81,7 @@ public:
void waitUntilHolding() const;
void waitUntilFinished(); // Not const, as this might close the connection upon timeout.
- void monitor();
+ void monitor(const IceUtil::Time&);
bool sendRequest(IceInternal::Outgoing*, bool, bool);
bool sendAsyncRequest(const IceInternal::OutgoingAsyncPtr&, bool, bool);
diff --git a/cpp/src/Ice/ConnectionMonitor.cpp b/cpp/src/Ice/ConnectionMonitor.cpp
index 9fde65606d9..6933ab3d401 100644
--- a/cpp/src/Ice/ConnectionMonitor.cpp
+++ b/cpp/src/Ice/ConnectionMonitor.cpp
@@ -88,11 +88,12 @@ IceInternal::ConnectionMonitor::runTimerTask()
// Monitor connections outside the thread synchronization, so
// that connections can be added or removed during monitoring.
//
+ IceUtil::Time now = IceUtil::Time::now(IceUtil::Time::Monotonic);
for(set<ConnectionIPtr>::const_iterator p = connections.begin(); p != connections.end(); ++p)
{
try
{
- (*p)->monitor();
+ (*p)->monitor(now);
}
catch(const Exception& ex)
{
diff --git a/cpp/src/Ice/Direct.cpp b/cpp/src/Ice/Direct.cpp
index 3d655a145e2..b8163bbf1c9 100644
--- a/cpp/src/Ice/Direct.cpp
+++ b/cpp/src/Ice/Direct.cpp
@@ -37,48 +37,19 @@ IceInternal::Direct::Direct(const Current& current) :
ServantManagerPtr servantManager = adapter->getServantManager();
assert(servantManager);
- try
+ _servant = servantManager->findServant(_current.id, _current.facet);
+ if(!_servant)
{
- _servant = servantManager->findServant(_current.id, _current.facet);
- if(!_servant)
+ _locator = servantManager->findServantLocator(_current.id.category);
+ if(!_locator && !_current.id.category.empty())
{
- _locator = servantManager->findServantLocator(_current.id.category);
- if(!_locator && !_current.id.category.empty())
- {
- _locator = servantManager->findServantLocator("");
- }
- if(_locator)
- {
- _servant = _locator->locate(_current, _cookie);
- }
+ _locator = servantManager->findServantLocator("");
}
- if(!_servant)
- {
- if(servantManager && servantManager->hasServant(_current.id))
- {
- FacetNotExistException ex(__FILE__, __LINE__);
- ex.id = _current.id;
- ex.facet = _current.facet;
- ex.operation = _current.operation;
- throw ex;
- }
- else
- {
- ObjectNotExistException ex(__FILE__, __LINE__);
- ex.id = _current.id;
- ex.facet = _current.facet;
- ex.operation = _current.operation;
- throw ex;
- }
- }
- }
- catch(...)
- {
- if(_locator && _servant)
+ if(_locator)
{
try
{
- _locator->finished(_current, _servant, _cookie);
+ _servant = _locator->locate(_current, _cookie);
}
catch(...)
{
@@ -86,8 +57,27 @@ IceInternal::Direct::Direct(const Current& current) :
throw;
}
}
+ }
+
+ if(!_servant)
+ {
adapter->decDirectCount();
- throw;
+ if(servantManager && servantManager->hasServant(_current.id))
+ {
+ FacetNotExistException ex(__FILE__, __LINE__);
+ ex.id = _current.id;
+ ex.facet = _current.facet;
+ ex.operation = _current.operation;
+ throw ex;
+ }
+ else
+ {
+ ObjectNotExistException ex(__FILE__, __LINE__);
+ ex.id = _current.id;
+ ex.facet = _current.facet;
+ ex.operation = _current.operation;
+ throw ex;
+ }
}
}
diff --git a/cpp/src/Ice/Incoming.cpp b/cpp/src/Ice/Incoming.cpp
index 17d49550847..ee574377515 100644
--- a/cpp/src/Ice/Incoming.cpp
+++ b/cpp/src/Ice/Incoming.cpp
@@ -91,6 +91,46 @@ IceInternal::IncomingBase::__warning(const string& msg) const
out << "\noperation: " << _current.operation;
}
+bool
+IceInternal::IncomingBase::__servantLocatorFinished()
+{
+ assert(_locator && _servant);
+ try
+ {
+ _locator->finished(_current, _servant, _cookie);
+ return true;
+ }
+ catch(const UserException& ex)
+ {
+ //
+ // The operation may have already marshaled a reply; we must overwrite that reply.
+ //
+ if(_response)
+ {
+ _os.endWriteEncaps();
+ _os.b.resize(headerSize + 4); // Reply status position.
+ _os.write(replyUserException);
+ _os.startWriteEncaps();
+ _os.write(ex);
+ _os.endWriteEncaps();
+ _connection->sendResponse(&_os, _compress);
+ }
+ else
+ {
+ _connection->sendNoResponse();
+ }
+ }
+ catch(const std::exception& ex)
+ {
+ __handleException(ex);
+ }
+ catch(...)
+ {
+ __handleException();
+ }
+ return false;
+}
+
void
IceInternal::IncomingBase::__handleException(const std::exception& exc)
{
@@ -400,117 +440,90 @@ IceInternal::Incoming::invoke(const ServantManagerPtr& servantManager)
// the caller of this operation.
//
- try
+ if(servantManager)
{
- bool finishedException = false;
- try
+ _servant = servantManager->findServant(_current.id, _current.facet);
+ if(!_servant)
{
- if(servantManager)
- {
- _servant = servantManager->findServant(_current.id, _current.facet);
- if(!_servant)
- {
- _locator = servantManager->findServantLocator(_current.id.category);
- if(!_locator && !_current.id.category.empty())
- {
- _locator = servantManager->findServantLocator("");
- }
- if(_locator)
- {
- try
- {
- _servant = _locator->locate(_current, _cookie);
- }
- catch(const UserException& ex)
- {
- _os.write(ex);
- replyStatus = replyUserException;
- }
- }
- }
- }
- if(replyStatus == replyOK)
+ _locator = servantManager->findServantLocator(_current.id.category);
+ if(!_locator && !_current.id.category.empty())
{
- if(!_servant)
- {
- if(servantManager && servantManager->hasServant(_current.id))
- {
- replyStatus = replyFacetNotExist;
- }
- else
- {
- replyStatus = replyObjectNotExist;
- }
- }
- else
- {
- dispatchStatus = _servant->__dispatch(*this, _current);
- if(dispatchStatus == DispatchUserException)
- {
- replyStatus = replyUserException;
- }
- }
+ _locator = servantManager->findServantLocator("");
}
- }
- catch(...)
- {
- if(_locator && _servant && dispatchStatus != DispatchAsync)
+
+ if(_locator)
{
try
{
- _locator->finished(_current, _servant, _cookie);
+ _servant = _locator->locate(_current, _cookie);
}
catch(const UserException& ex)
{
- //
- // The operation may have already marshaled a reply; we must overwrite that reply.
- //
- _os.endWriteEncaps();
- _os.b.resize(headerSize + 5); // Byte following reply status.
- _os.startWriteEncaps();
_os.write(ex);
- replyStatus = replyUserException; // Code below inserts the reply status.
- finishedException = true;
+ replyStatus = replyUserException;
+ }
+ catch(const std::exception& ex)
+ {
+ __handleException(ex);
+ return;
}
catch(...)
{
- throw;
+ __handleException();
+ return;
}
}
- if(!finishedException)
+ }
+ }
+
+ if(_servant)
+ {
+ try
+ {
+ assert(replyStatus == replyOK);
+ dispatchStatus = _servant->__dispatch(*this, _current);
+ if(dispatchStatus == DispatchUserException)
+ {
+ replyStatus = replyUserException;
+ }
+
+ if(dispatchStatus != DispatchAsync)
{
- throw;
+ if(_locator && !__servantLocatorFinished())
+ {
+ return;
+ }
}
}
-
- if(!finishedException && _locator && _servant && dispatchStatus != DispatchAsync)
+ catch(const std::exception& ex)
{
- try
+ if(_locator && !__servantLocatorFinished())
{
- _locator->finished(_current, _servant, _cookie);
+ return;
}
- catch(const UserException& ex)
+ __handleException(ex);
+ return;
+ }
+ catch(...)
+ {
+ if(_locator && !__servantLocatorFinished())
{
- //
- // The operation may have already marshaled a reply; we must overwrite that reply.
- //
- _os.endWriteEncaps();
- _os.b.resize(headerSize + 5); // Byte following reply status.
- _os.startWriteEncaps();
- _os.write(ex);
- replyStatus = replyUserException; // Code below inserts the reply status.
+ return;
}
+ __handleException();
+ return;
}
}
- catch(const std::exception& ex)
+ else if(replyStatus == replyOK)
{
- __handleException(ex);
- return;
- }
- catch(...)
- {
- __handleException();
- return;
+ if(servantManager && servantManager->hasServant(_current.id))
+ {
+ replyStatus = replyFacetNotExist;
+ }
+ else
+ {
+ replyStatus = replyObjectNotExist;
+ }
}
//
diff --git a/cpp/src/Ice/IncomingAsync.cpp b/cpp/src/Ice/IncomingAsync.cpp
index edc9b64cf3b..5324af0508b 100644
--- a/cpp/src/Ice/IncomingAsync.cpp
+++ b/cpp/src/Ice/IncomingAsync.cpp
@@ -64,7 +64,7 @@ IceInternal::IncomingAsync::__response(bool ok)
{
try
{
- if(!__servantLocatorFinished())
+ if(_locator && !__servantLocatorFinished())
{
return;
}
@@ -100,7 +100,7 @@ IceInternal::IncomingAsync::__exception(const std::exception& exc)
{
try
{
- if(!__servantLocatorFinished())
+ if(_locator && !__servantLocatorFinished())
{
return;
}
@@ -118,7 +118,7 @@ IceInternal::IncomingAsync::__exception()
{
try
{
- if(!__servantLocatorFinished())
+ if(_locator && !__servantLocatorFinished())
{
return;
}
@@ -132,53 +132,6 @@ IceInternal::IncomingAsync::__exception()
}
bool
-IceInternal::IncomingAsync::__servantLocatorFinished()
-{
- try
- {
- if(_locator && _servant)
- {
- try
- {
- _locator->finished(_current, _servant, _cookie);
- }
- catch(const UserException& ex)
- {
- //
- // The operation may have already marshaled a reply; we must overwrite that reply.
- //
- if(_response)
- {
- _os.endWriteEncaps();
- _os.b.resize(headerSize + 4); // Reply status position.
- _os.write(replyUserException);
- _os.startWriteEncaps();
- _os.write(ex);
- _os.endWriteEncaps();
- _connection->sendResponse(&_os, _compress);
- }
- else
- {
- _connection->sendNoResponse();
- }
- return false;
- }
- }
- return true;
- }
- catch(const std::exception& ex)
- {
- __handleException(ex);
- return false;
- }
- catch(...)
- {
- __handleException();
- return false;
- }
-}
-
-bool
IceInternal::IncomingAsync::__validateResponse(bool ok)
{
if(!_retriable)
diff --git a/cpp/src/Ice/Instance.cpp b/cpp/src/Ice/Instance.cpp
index c57d39b7c9d..dbc1ca98b06 100644
--- a/cpp/src/Ice/Instance.cpp
+++ b/cpp/src/Ice/Instance.cpp
@@ -618,18 +618,22 @@ IceInternal::Instance::getAdmin()
// (can't call again getAdmin() after fixing the problem)
// since all the facets (servants) in the adapter are lost
//
+ adapter->destroy();
sync.acquire();
_adminAdapter = 0;
- adapter->destroy();
throw;
}
+ Ice::ObjectPrx admin = adapter->createProxy(_adminIdentity);
if(defaultLocator != 0 && serverId != "")
{
- ProcessPrx process = ProcessPrx::uncheckedCast(
- adapter->createProxy(_adminIdentity)->ice_facet("Process"));
+ ProcessPrx process = ProcessPrx::uncheckedCast(admin->ice_facet("Process"));
try
{
+ //
+ // Note that as soon as the process proxy is registered, the communicator might be
+ // shutdown by a remote client and admin facets might start receiving calls.
+ //
defaultLocator->getRegistry()->setServerProcessProxy(serverId, process);
}
catch(const ServerNotFoundException&)
@@ -661,7 +665,7 @@ IceInternal::Instance::getAdmin()
out << "registered server `" + serverId + "' with the locator registry";
}
- return adapter->createProxy(_adminIdentity);
+ return admin;
}
else
{
@@ -1164,11 +1168,6 @@ IceInternal::Instance::finishSetup(int& argc, char* argv[])
#endif
}
- if(_initData.properties->getPropertyAsIntWithDefault("Ice.Admin.DelayCreation", 0) <= 0)
- {
- getAdmin();
- }
-
//
// Start connection monitor if necessary. Set the check interval to
// 1/10 of the ACM timeout with a minmal value of 1 second and a
@@ -1189,7 +1188,7 @@ IceInternal::Instance::finishSetup(int& argc, char* argv[])
}
if(interval > 0)
{
- interval = min(300, max(1, (int)interval / 10));
+ interval = min(300, max(5, (int)interval / 10));
}
interval = _initData.properties->getPropertyAsIntWithDefault("Ice.MonitorConnections", interval);
if(interval > 0)
@@ -1200,6 +1199,16 @@ IceInternal::Instance::finishSetup(int& argc, char* argv[])
//
// Server thread pool initialization is lazy in serverThreadPool().
//
+
+ //
+ // This must be done last as this call creates the Ice.Admin object adapter
+ // and eventually register a process proxy with the Ice locator (allowing
+ // remote clients to invoke on Ice.Admin facets as soon as it's registered).
+ //
+ if(_initData.properties->getPropertyAsIntWithDefault("Ice.Admin.DelayCreation", 0) <= 0)
+ {
+ getAdmin();
+ }
}
bool
diff --git a/cpp/src/Ice/LocatorInfo.h b/cpp/src/Ice/LocatorInfo.h
index 92b3d68dd2a..2d44d050a4a 100644
--- a/cpp/src/Ice/LocatorInfo.h
+++ b/cpp/src/Ice/LocatorInfo.h
@@ -20,6 +20,8 @@
#include <Ice/EndpointIF.h>
#include <Ice/PropertiesF.h>
+#include <memory>
+
namespace IceInternal
{
diff --git a/cpp/src/Ice/Makefile.mak b/cpp/src/Ice/Makefile.mak
index 56ea9646835..1a39630dd6b 100644
--- a/cpp/src/Ice/Makefile.mak
+++ b/cpp/src/Ice/Makefile.mak
@@ -118,11 +118,11 @@ SDIR = $(slicedir)\Ice
CPPFLAGS = -I.. $(CPPFLAGS) -DICE_API_EXPORTS -DFD_SETSIZE=1024 -DWIN32_LEAN_AND_MEAN
SLICE2CPPFLAGS = --ice --include-dir Ice --dll-export ICE_API $(SLICE2CPPFLAGS)
LINKWITH = $(BASELIBS) $(BZIP2_LIBS) $(ICE_OS_LIBS) ws2_32.lib
-!if "$(CPP_COMPILER)" != "BCC2007"
+!if "$(BCPLUSPLUS)" != "yes"
LINKWITH = $(LINKWITH) Iphlpapi.lib
!endif
-!if "$(CPP_COMPILER)" == "BCC2007"
+!if "$(BCPLUSPLUS)" == "yes"
RES_FILE = ,, Ice.res
!else
!if "$(GENERATE_PDB)" == "yes"
@@ -153,6 +153,14 @@ EventLoggerMsg.h EventLoggerMsg.rc: EventLoggerMsg.mc
Ice.res: EventLoggerMsg.rc
+!if "$(CPP_COMPILER)" == "BCC2009" & "$(OPTIMIZE)" == "yes"
+#
+# Tests fail if GC.cpp is built with optimizations enabled
+#
+GC.obj: GC.cpp
+ $(CXX) /c $(CPPFLAGS) $(CXXFLAGS) -Od GC.cpp
+!endif
+
clean::
-del /q BuiltinSequences.cpp $(HDIR)\BuiltinSequences.h
-del /q CommunicatorF.cpp $(HDIR)\CommunicatorF.h
@@ -195,7 +203,7 @@ install:: all
copy $(DLLNAME) $(install_bindir)
-!if "$(CPP_COMPILER)" == "BCC2007" && "$(OPTIMIZE)" != "yes"
+!if "$(BCPLUSPLUS)" == "yes" && "$(OPTIMIZE)" != "yes"
install:: all
copy $(DLLNAME:.dll=.tds) $(install_bindir)
diff --git a/cpp/src/Ice/Network.cpp b/cpp/src/Ice/Network.cpp
index c723fa1ab01..c6fbf1bc6ee 100644
--- a/cpp/src/Ice/Network.cpp
+++ b/cpp/src/Ice/Network.cpp
@@ -77,7 +77,7 @@ getLocalAddresses(ProtocolSupport protocol)
vector<unsigned char> buffer;
buffer.resize(1024);
unsigned long len = 0;
- DWORD rs = WSAIoctl(fd, SIO_ADDRESS_LIST_QUERY, 0, 0,
+ int rs = WSAIoctl(fd, SIO_ADDRESS_LIST_QUERY, 0, 0,
&buffer[0], static_cast<DWORD>(buffer.size()),
&len, 0, 0);
if(rs == SOCKET_ERROR)
@@ -885,7 +885,8 @@ IceInternal::getSendBufferSize(SOCKET fd)
{
int sz;
socklen_t len = sizeof(sz);
- if(getsockopt(fd, SOL_SOCKET, SO_SNDBUF, (char*)&sz, &len) == SOCKET_ERROR || len != sizeof(sz))
+ if(getsockopt(fd, SOL_SOCKET, SO_SNDBUF, (char*)&sz, &len) == SOCKET_ERROR ||
+ static_cast<unsigned int>(len) != sizeof(sz))
{
closeSocketNoThrow(fd);
SocketException ex(__FILE__, __LINE__);
@@ -912,7 +913,8 @@ IceInternal::getRecvBufferSize(SOCKET fd)
{
int sz;
socklen_t len = sizeof(sz);
- if(getsockopt(fd, SOL_SOCKET, SO_RCVBUF, (char*)&sz, &len) == SOCKET_ERROR || len != sizeof(sz))
+ if(getsockopt(fd, SOL_SOCKET, SO_RCVBUF, (char*)&sz, &len) == SOCKET_ERROR ||
+ static_cast<unsigned int>(len) != sizeof(sz))
{
closeSocketNoThrow(fd);
SocketException ex(__FILE__, __LINE__);
@@ -1244,7 +1246,7 @@ IceInternal::doFinishConnect(SOCKET fd)
struct sockaddr_storage localAddr;
fdToLocalAddress(fd, localAddr);
struct sockaddr_storage remoteAddr;
- if(!fdToRemoteAddress(fd, remoteAddr) && compareAddress(remoteAddr, localAddr) == 0)
+ if(fdToRemoteAddress(fd, remoteAddr) && compareAddress(remoteAddr, localAddr) == 0)
{
ConnectionRefusedException ex(__FILE__, __LINE__);
ex.error = 0; // No appropriate errno
@@ -1752,6 +1754,19 @@ IceInternal::getPort(const struct sockaddr_storage& addr)
}
}
+void
+IceInternal::setPort(struct sockaddr_storage& addr, int port)
+{
+ if(addr.ss_family == AF_INET)
+ {
+ reinterpret_cast<sockaddr_in*>(&addr)->sin_port = htons(port);
+ }
+ else
+ {
+ reinterpret_cast<sockaddr_in6*>(&addr)->sin6_port = htons(port);
+ }
+}
+
vector<string>
IceInternal::getHostsForEndpointExpand(const string& host, ProtocolSupport protocolSupport)
{
diff --git a/cpp/src/Ice/Network.h b/cpp/src/Ice/Network.h
index d645c5d5790..de89c2443fc 100644
--- a/cpp/src/Ice/Network.h
+++ b/cpp/src/Ice/Network.h
@@ -121,6 +121,7 @@ ICE_API std::string inetAddrToString(const struct sockaddr_storage&);
ICE_API std::string addrToString(const struct sockaddr_storage&);
ICE_API bool isMulticast(const struct sockaddr_storage&);
ICE_API int getPort(const struct sockaddr_storage&);
+ICE_API void setPort(struct sockaddr_storage&, int);
ICE_API std::vector<std::string> getHostsForEndpointExpand(const std::string&, ProtocolSupport);
ICE_API void setTcpBufSize(SOCKET, const Ice::PropertiesPtr&, const Ice::LoggerPtr&);
diff --git a/cpp/src/Ice/OutgoingAsync.cpp b/cpp/src/Ice/OutgoingAsync.cpp
index db421bbffec..d1947092002 100644
--- a/cpp/src/Ice/OutgoingAsync.cpp
+++ b/cpp/src/Ice/OutgoingAsync.cpp
@@ -145,7 +145,12 @@ IceInternal::OutgoingAsyncMessageCallback::__releaseCallback(const Ice::LocalExc
try
{
- __os->instance()->clientThreadPool()->execute(new CallException(this, exc));
+ //
+ // COMPILERFIX: The following in done in two separate lines in order to work around
+ // bug in C++Builder 2009.
+ //
+ ThreadPoolPtr threadPool = __os->instance()->clientThreadPool();
+ threadPool->execute(new CallException(this, exc));
}
catch(const Ice::CommunicatorDestroyedException&)
{
diff --git a/cpp/src/Ice/PluginManagerI.cpp b/cpp/src/Ice/PluginManagerI.cpp
index 0b114402ac8..6e1e2f99449 100644
--- a/cpp/src/Ice/PluginManagerI.cpp
+++ b/cpp/src/Ice/PluginManagerI.cpp
@@ -131,25 +131,22 @@ Ice::PluginManagerI::destroy()
catch(const std::exception& ex)
{
Warning out(getProcessLogger());
- out << "unexpected exception raised by plug-in '" << r->first << "' destruction.\n";
- out << "exception: " << ex.what();
+ out << "unexpected exception raised by plug-in `" << r->first << "' destruction:\n" << ex.what();
}
catch(const std::string& str)
{
Warning out(getProcessLogger());
- out << "unexpected exception raised by plug-in '" << r->first << "' destruction.\n";
- out << "exception: " << str;
+ out << "unexpected exception raised by plug-in `" << r->first << "' destruction:\n" << str;
}
catch(const char* msg)
{
Warning out(getProcessLogger());
- out << "unexpected exception raised by plug-in '" << r->first << "' destruction.\n";
- out << "exception: " << msg;
+ out << "unexpected exception raised by plug-in `" << r->first << "' destruction:\n" << msg;
}
catch(...)
{
Warning out(getProcessLogger());
- out << "unexpected exception raised by plug-in '" << r->first << "' destruction.";
+ out << "unexpected exception raised by plug-in `" << r->first << "' destruction";
}
}
}
diff --git a/cpp/src/Ice/PropertyNames.cpp b/cpp/src/Ice/PropertyNames.cpp
index d85fda1a87d..52f1bf80901 100644
--- a/cpp/src/Ice/PropertyNames.cpp
+++ b/cpp/src/Ice/PropertyNames.cpp
@@ -8,7 +8,7 @@
// **********************************************************************
//
-// Generated by makeprops.py from file ../config/PropertyNames.xml, Tue Jan 20 15:47:00 2009
+// Generated by makeprops.py from file ../config/PropertyNames.xml, Thu Feb 19 14:25:55 2009
// IMPORTANT: Do not edit this file -- any edits made here will be lost!
@@ -73,7 +73,7 @@ const IceInternal::Property IcePropsData[] =
IceInternal::Property("Ice.ImplicitContext", false, 0),
IceInternal::Property("Ice.InitPlugins", false, 0),
IceInternal::Property("Ice.MessageSizeMax", false, 0),
- IceInternal::Property("Ice.MonitorConnections", true, 0),
+ IceInternal::Property("Ice.MonitorConnections", false, 0),
IceInternal::Property("Ice.Nohup", false, 0),
IceInternal::Property("Ice.NullHandleAbort", false, 0),
IceInternal::Property("Ice.Override.Compress", false, 0),
@@ -278,15 +278,7 @@ const IceInternal::Property IceGridPropsData[] =
IceInternal::Property("IceGrid.Registry.CryptPasswords", false, 0),
IceInternal::Property("IceGrid.Registry.Data", false, 0),
IceInternal::Property("IceGrid.Registry.DefaultTemplates", false, 0),
- IceInternal::Property("IceGrid.Registry.Discard.Interval", false, 0),
IceInternal::Property("IceGrid.Registry.DynamicRegistration", false, 0),
- IceInternal::Property("IceGrid.Registry.Election.ElectionTimeout", false, 0),
- IceInternal::Property("IceGrid.Registry.Election.MasterTimeout", false, 0),
- IceInternal::Property("IceGrid.Registry.Election.ResponseTimeout", false, 0),
- IceInternal::Property("IceGrid.Registry.Flush.Timeout", false, 0),
- IceInternal::Property("IceGrid.Registry.IceStormAdmin.TopicManager.Default", false, 0),
- IceInternal::Property("IceGrid.Registry.IceStormAdmin.TopicManager.*", false, 0),
- IceInternal::Property("IceGrid.Registry.InstanceName", false, 0),
IceInternal::Property("IceGrid.Registry.Internal.AdapterId", false, 0),
IceInternal::Property("IceGrid.Registry.Internal.Endpoints", false, 0),
IceInternal::Property("IceGrid.Registry.Internal.Locator", false, 0),
@@ -300,9 +292,6 @@ const IceInternal::Property IceGridPropsData[] =
IceInternal::Property("IceGrid.Registry.Internal.ThreadPool.SizeWarn", false, 0),
IceInternal::Property("IceGrid.Registry.Internal.ThreadPool.StackSize", false, 0),
IceInternal::Property("IceGrid.Registry.Internal.ThreadPool.Serialize", false, 0),
- IceInternal::Property("IceGrid.Registry.Node.*", false, 0),
- IceInternal::Property("IceGrid.Registry.NodeId", false, 0),
- IceInternal::Property("IceGrid.Registry.Nodes.id", false, 0),
IceInternal::Property("IceGrid.Registry.NodeSessionTimeout", false, 0),
IceInternal::Property("IceGrid.Registry.PermissionsVerifier.EndpointSelection", false, 0),
IceInternal::Property("IceGrid.Registry.PermissionsVerifier.ConnectionCached", false, 0),
@@ -313,12 +302,8 @@ const IceInternal::Property IceGridPropsData[] =
IceInternal::Property("IceGrid.Registry.PermissionsVerifier.CollocationOptimization", true, "IceGrid.Registry.PermissionsVerifier.CollocationOptimized"),
IceInternal::Property("IceGrid.Registry.PermissionsVerifier.CollocationOptimized", false, 0),
IceInternal::Property("IceGrid.Registry.PermissionsVerifier", false, 0),
- IceInternal::Property("IceGrid.Registry.Publish.*", false, 0),
IceInternal::Property("IceGrid.Registry.ReplicaName", false, 0),
IceInternal::Property("IceGrid.Registry.ReplicaSessionTimeout", false, 0),
- IceInternal::Property("IceGrid.Registry.ReplicatedPublishEndpoints", false, 0),
- IceInternal::Property("IceGrid.Registry.ReplicatedTopicManagerEndpoints", false, 0),
- IceInternal::Property("IceGrid.Registry.Send.Timeout", false, 0),
IceInternal::Property("IceGrid.Registry.Server.AdapterId", false, 0),
IceInternal::Property("IceGrid.Registry.Server.Endpoints", false, 0),
IceInternal::Property("IceGrid.Registry.Server.Locator", false, 0),
@@ -356,22 +341,18 @@ const IceInternal::Property IceGridPropsData[] =
IceInternal::Property("IceGrid.Registry.SSLPermissionsVerifier.CollocationOptimization", true, "IceGrid.Registry.SSLPermissionsVerifier.CollocationOptimized"),
IceInternal::Property("IceGrid.Registry.SSLPermissionsVerifier.CollocationOptimized", false, 0),
IceInternal::Property("IceGrid.Registry.SSLPermissionsVerifier", false, 0),
- IceInternal::Property("IceGrid.Registry.TopicManager.*", false, 0),
IceInternal::Property("IceGrid.Registry.Trace.Application", false, 0),
IceInternal::Property("IceGrid.Registry.Trace.Adapter", false, 0),
- IceInternal::Property("IceGrid.Registry.Trace.Election", false, 0),
IceInternal::Property("IceGrid.Registry.Trace.Locator", false, 0),
IceInternal::Property("IceGrid.Registry.Trace.Node", false, 0),
IceInternal::Property("IceGrid.Registry.Trace.Object", false, 0),
IceInternal::Property("IceGrid.Registry.Trace.Patch", false, 0),
IceInternal::Property("IceGrid.Registry.Trace.Replica", false, 0),
- IceInternal::Property("IceGrid.Registry.Trace.Replication", false, 0),
IceInternal::Property("IceGrid.Registry.Trace.Server", false, 0),
IceInternal::Property("IceGrid.Registry.Trace.Session", false, 0),
IceInternal::Property("IceGrid.Registry.Trace.Subscriber", false, 0),
IceInternal::Property("IceGrid.Registry.Trace.Topic", false, 0),
IceInternal::Property("IceGrid.Registry.Trace.TopicManager", false, 0),
- IceInternal::Property("IceGrid.Registry.Transient", false, 0),
IceInternal::Property("IceGrid.Registry.UserAccounts", false, 0),
};
diff --git a/cpp/src/Ice/PropertyNames.h b/cpp/src/Ice/PropertyNames.h
index 2fd2fde2324..d31c8c387c8 100644
--- a/cpp/src/Ice/PropertyNames.h
+++ b/cpp/src/Ice/PropertyNames.h
@@ -8,7 +8,7 @@
// **********************************************************************
//
-// Generated by makeprops.py from file ../config/PropertyNames.xml, Tue Jan 20 15:47:00 2009
+// Generated by makeprops.py from file ../config/PropertyNames.xml, Thu Feb 19 14:25:55 2009
// IMPORTANT: Do not edit this file -- any edits made here will be lost!
diff --git a/cpp/src/Ice/Proxy.cpp b/cpp/src/Ice/Proxy.cpp
index a1121f353c4..8113517ca4f 100644
--- a/cpp/src/Ice/Proxy.cpp
+++ b/cpp/src/Ice/Proxy.cpp
@@ -117,6 +117,9 @@ IceProxy::Ice::Object::ice_isA(const string& typeId, const Context* context)
Handle< ::IceDelegate::Ice::Object> __del;
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
__checkTwowayOnly(ice_isA_name);
__del = __getDelegate(false);
return __del->ice_isA(typeId, context);
@@ -141,6 +144,9 @@ IceProxy::Ice::Object::ice_ping(const Context* context)
Handle< ::IceDelegate::Ice::Object> __del;
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
__del = __getDelegate(false);
__del->ice_ping(context);
return;
@@ -165,6 +171,9 @@ IceProxy::Ice::Object::ice_ids(const Context* context)
Handle< ::IceDelegate::Ice::Object> __del;
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
__checkTwowayOnly(ice_ids_name);
__del = __getDelegate(false);
return __del->ice_ids(context);
@@ -189,6 +198,9 @@ IceProxy::Ice::Object::ice_id(const Context* context)
Handle< ::IceDelegate::Ice::Object> __del;
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
__checkTwowayOnly(ice_id_name);
__del = __getDelegate(false);
return __del->ice_id(context);
@@ -239,6 +251,9 @@ IceProxy::Ice::Object::ice_invoke(const string& operation,
Handle< ::IceDelegate::Ice::Object> __del;
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
__del = __getDelegate(false);
return __del->ice_invoke(operation, mode, inParams, outParams, context);
}
@@ -755,6 +770,9 @@ IceProxy::Ice::Object::ice_getConnection()
Handle< ::IceDelegate::Ice::Object> __del;
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
__del = __getDelegate(false);
return __del->__getRequestHandler()->getConnection(true); // Wait for the connection to be established.
@@ -781,7 +799,7 @@ IceProxy::Ice::Object::ice_getCachedConnection() const
{
return __del->__getRequestHandler()->getConnection(false);
}
- catch(const CollocationOptimizationException&)
+ catch(const LocalException&)
{
}
}
@@ -799,6 +817,9 @@ IceProxy::Ice::Object::ice_flushBatchRequests()
int __cnt = -1; // Don't retry.
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
__del = __getDelegate(false);
__del->ice_flushBatchRequests();
}
@@ -892,6 +913,9 @@ IceProxy::Ice::Object::__handleException(const ::IceInternal::Handle< ::IceDeleg
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
_reference->getInstance()->proxyFactory()->checkRetryAfterException(ex, _reference, out, cnt);
}
catch(const CommunicatorDestroyedException&)
diff --git a/cpp/src/Ice/ProxyFactory.cpp b/cpp/src/Ice/ProxyFactory.cpp
index 4e5b67217fd..9d8ef8cb292 100644
--- a/cpp/src/Ice/ProxyFactory.cpp
+++ b/cpp/src/Ice/ProxyFactory.cpp
@@ -118,20 +118,7 @@ IceInternal::ProxyFactory::checkRetryAfterException(const LocalException& ex,
if(one)
{
- LocatorInfoPtr li = ref->getLocatorInfo();
- if(li && ref->isIndirect())
- {
- //
- // We retry ObjectNotExistException if the reference is
- // indirect.
- //
-
- if(ref->isWellKnown())
- {
- li->clearCache(ref);
- }
- }
- else if(ref->getRouterInfo() && one->operation == "ice_add_proxy")
+ if(ref->getRouterInfo() && one->operation == "ice_add_proxy")
{
//
// If we have a router, an ObjectNotExistException with an
@@ -153,6 +140,22 @@ IceInternal::ProxyFactory::checkRetryAfterException(const LocalException& ex,
}
return; // We must always retry, so we don't look at the retry count.
}
+ else if(ref->isIndirect())
+ {
+ //
+ // We retry ObjectNotExistException if the reference is
+ // indirect.
+ //
+
+ if(ref->isWellKnown())
+ {
+ LocatorInfoPtr li = ref->getLocatorInfo();
+ if(li)
+ {
+ li->clearCache(ref);
+ }
+ }
+ }
else
{
//
diff --git a/cpp/src/Ice/Reference.cpp b/cpp/src/Ice/Reference.cpp
index d3cc01479d6..29c177567c0 100644
--- a/cpp/src/Ice/Reference.cpp
+++ b/cpp/src/Ice/Reference.cpp
@@ -1678,29 +1678,29 @@ IceInternal::RoutableReference::createConnection(const vector<EndpointIPtr>& all
virtual void
setConnection(const Ice::ConnectionIPtr& connection, bool compress)
+ {
+ //
+ // If we have a router, set the object adapter for this router
+ // (if any) to the new connection, so that callbacks from the
+ // router can be received over this new connection.
+ //
+ if(_routerInfo && _routerInfo->getAdapter())
{
- //
- // If we have a router, set the object adapter for this router
- // (if any) to the new connection, so that callbacks from the
- // router can be received over this new connection.
- //
- if(_routerInfo && _routerInfo->getAdapter())
- {
- connection->setAdapter(_routerInfo->getAdapter());
- }
- _callback->setConnection(connection, compress);
+ connection->setAdapter(_routerInfo->getAdapter());
}
+ _callback->setConnection(connection, compress);
+ }
virtual void
setException(const Ice::LocalException& ex)
- {
- _callback->setException(ex);
- }
-
+ {
+ _callback->setException(ex);
+ }
+
CB1(const RouterInfoPtr& routerInfo, const GetConnectionCallbackPtr& callback) :
- _routerInfo(routerInfo), _callback(callback)
- {
- }
+ _routerInfo(routerInfo), _callback(callback)
+ {
+ }
private:
@@ -1723,49 +1723,49 @@ IceInternal::RoutableReference::createConnection(const vector<EndpointIPtr>& all
virtual void
setConnection(const Ice::ConnectionIPtr& connection, bool compress)
+ {
+ //
+ // If we have a router, set the object adapter for this router
+ // (if any) to the new connection, so that callbacks from the
+ // router can be received over this new connection.
+ //
+ if(_reference->getRouterInfo() && _reference->getRouterInfo()->getAdapter())
{
- //
- // If we have a router, set the object adapter for this router
- // (if any) to the new connection, so that callbacks from the
- // router can be received over this new connection.
- //
- if(_reference->getRouterInfo() && _reference->getRouterInfo()->getAdapter())
- {
- connection->setAdapter(_reference->getRouterInfo()->getAdapter());
- }
- _callback->setConnection(connection, compress);
+ connection->setAdapter(_reference->getRouterInfo()->getAdapter());
}
+ _callback->setConnection(connection, compress);
+ }
virtual void
setException(const Ice::LocalException& ex)
+ {
+ if(!_exception.get())
{
- if(!_exception.get())
- {
- _exception.reset(dynamic_cast<Ice::LocalException*>(ex.ice_clone()));
- }
-
- if(++_i == _endpoints.size())
- {
- _callback->setException(*_exception.get());
- return;
- }
-
- const bool more = _i != _endpoints.size() - 1;
- vector<EndpointIPtr> endpoint;
- endpoint.push_back(_endpoints[_i]);
-
- OutgoingConnectionFactoryPtr factory = _reference->getInstance()->outgoingConnectionFactory();
- factory->create(endpoint, more, _reference->getEndpointSelection(), this);
+ _exception.reset(dynamic_cast<Ice::LocalException*>(ex.ice_clone()));
}
-
+
+ if(++_i == _endpoints.size())
+ {
+ _callback->setException(*_exception.get());
+ return;
+ }
+
+ const bool more = _i != _endpoints.size() - 1;
+ vector<EndpointIPtr> endpoint;
+ endpoint.push_back(_endpoints[_i]);
+
+ OutgoingConnectionFactoryPtr factory = _reference->getInstance()->outgoingConnectionFactory();
+ factory->create(endpoint, more, _reference->getEndpointSelection(), this);
+ }
+
CB2(const RoutableReferencePtr& reference, const vector<EndpointIPtr>& endpoints,
const GetConnectionCallbackPtr& callback) :
_reference(reference),
_endpoints(endpoints),
_callback(callback),
_i(0)
- {
- }
+ {
+ }
private:
diff --git a/cpp/src/Ice/RouterInfo.cpp b/cpp/src/Ice/RouterInfo.cpp
index a30a7079b45..789cd08d94a 100644
--- a/cpp/src/Ice/RouterInfo.cpp
+++ b/cpp/src/Ice/RouterInfo.cpp
@@ -362,6 +362,9 @@ IceInternal::RouterInfo::setClientEndpoints(const Ice::ObjectPrx& proxy)
//
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
clientProxy = clientProxy->ice_timeout(_router->ice_getConnection()->timeout());
}
catch(const Ice::CollocationOptimizationException&)
diff --git a/cpp/src/Ice/Service.cpp b/cpp/src/Ice/Service.cpp
index 7d86fe48676..0acc8519e3c 100644
--- a/cpp/src/Ice/Service.cpp
+++ b/cpp/src/Ice/Service.cpp
@@ -391,6 +391,9 @@ Ice::Service::main(int& argc, char* argv[], const InitializationData& initializa
InitializationData initData = initializationData;
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
initData.properties = createProperties(argc, argv, initData.properties, initData.stringConverter);
}
catch(const Ice::Exception& ex)
@@ -1028,7 +1031,11 @@ Ice::Service::startService(const string& name, const vector<string>& args)
int i = 0;
for(vector<string>::const_iterator p = args.begin(); p != args.end(); ++p)
{
- argv[i++] = strdup(p->c_str());
+#if defined(_MSC_VER) && (_MSC_VER >= 1400)
+ argv[i++] = _strdup(p->c_str());
+#else
+ argv[i++] = strdup(p->c_str());
+#endif
}
//
diff --git a/cpp/src/Ice/StreamI.cpp b/cpp/src/Ice/StreamI.cpp
index f992b99b76f..c0006b817c0 100644
--- a/cpp/src/Ice/StreamI.cpp
+++ b/cpp/src/Ice/StreamI.cpp
@@ -9,6 +9,7 @@
#include <Ice/StreamI.h>
#include <Ice/Initialize.h>
+#include <Ice/LocalException.h>
using namespace std;
using namespace Ice;
@@ -305,7 +306,7 @@ Ice::InputStreamI::startEncapsulation()
void
Ice::InputStreamI::endEncapsulation()
{
- _is->endReadEncaps();
+ _is->endReadEncapsChecked();
}
void
@@ -562,6 +563,11 @@ Ice::OutputStreamI::writeWstringSeq(const vector<wstring>& v)
void
Ice::OutputStreamI::writeSize(Int sz)
{
+ if(sz < 0)
+ {
+ throw NegativeSizeException(__FILE__, __LINE__);
+ }
+
_os->writeSize(sz);
}
@@ -610,7 +616,7 @@ Ice::OutputStreamI::startEncapsulation()
void
Ice::OutputStreamI::endEncapsulation()
{
- _os->endWriteEncaps();
+ _os->endWriteEncapsChecked();
}
void
diff --git a/cpp/src/Ice/TcpTransceiver.cpp b/cpp/src/Ice/TcpTransceiver.cpp
index 43d715d6314..17564a93bd3 100644
--- a/cpp/src/Ice/TcpTransceiver.cpp
+++ b/cpp/src/Ice/TcpTransceiver.cpp
@@ -287,9 +287,6 @@ IceInternal::TcpTransceiver::TcpTransceiver(const InstancePtr& instance, SOCKET
_state(connected ? StateConnected : StateNeedConnect),
_desc(fdToString(_fd))
{
- FD_ZERO(&_rFdSet);
- FD_ZERO(&_wFdSet);
-
#ifdef _WIN32
//
// On Windows, limiting the buffer size is important to prevent
diff --git a/cpp/src/Ice/TcpTransceiver.h b/cpp/src/Ice/TcpTransceiver.h
index 7e09891f09b..36077057d7b 100644
--- a/cpp/src/Ice/TcpTransceiver.h
+++ b/cpp/src/Ice/TcpTransceiver.h
@@ -54,8 +54,6 @@ private:
const Ice::StatsPtr _stats;
SOCKET _fd;
- fd_set _rFdSet;
- fd_set _wFdSet;
State _state;
std::string _desc;
#ifdef _WIN32
diff --git a/cpp/src/Ice/ThreadPool.cpp b/cpp/src/Ice/ThreadPool.cpp
index ab41198104c..63fc22a7f11 100644
--- a/cpp/src/Ice/ThreadPool.cpp
+++ b/cpp/src/Ice/ThreadPool.cpp
@@ -554,74 +554,84 @@ IceInternal::ThreadPool::run()
handler->_serializing = false;
}
- //
- // First we reap threads that have been destroyed before.
- //
- int sz = static_cast<int>(_threads.size());
- assert(_running <= sz);
- if(_running < sz)
+ if(_size < _sizeMax) // Dynamic thread pool
{
- vector<IceUtil::ThreadPtr>::iterator start =
- partition(_threads.begin(), _threads.end(), IceUtil::constMemFun(&IceUtil::Thread::isAlive));
-
- for(vector<IceUtil::ThreadPtr>::iterator p = start; p != _threads.end(); ++p)
+ //
+ // First we reap threads that have been destroyed before.
+ //
+ int sz = static_cast<int>(_threads.size());
+ assert(_running <= sz);
+ if(_running < sz)
{
- (*p)->getThreadControl().join();
- }
+ vector<IceUtil::ThreadPtr>::iterator start =
+ partition(_threads.begin(), _threads.end(),
+ IceUtil::constMemFun(&IceUtil::Thread::isAlive));
- _threads.erase(start, _threads.end());
- }
-
- //
- // Now we check if this thread can be destroyed, based
- // on a load factor.
- //
+ for(vector<IceUtil::ThreadPtr>::iterator p = start; p != _threads.end(); ++p)
+ {
+ (*p)->getThreadControl().join();
+ }
- //
- // The load factor jumps immediately to the number of
- // threads that are currently in use, but decays
- // exponentially if the number of threads in use is
- // smaller than the load factor. This reflects that we
- // create threads immediately when they are needed,
- // but want the number of threads to slowly decline to
- // the configured minimum.
- //
- double inUse = static_cast<double>(_inUse);
- if(_load < inUse)
- {
- _load = inUse;
- }
- else
- {
- const double loadFactor = 0.05; // TODO: Configurable?
- const double oneMinusLoadFactor = 1 - loadFactor;
- _load = _load * oneMinusLoadFactor + inUse * loadFactor;
- }
+ _threads.erase(start, _threads.end());
+ }
- if(_running > _size)
- {
- int load = static_cast<int>(_load + 0.5);
+ //
+ // Now we check if this thread can be destroyed, based
+ // on a load factor.
+ //
//
- // We add one to the load factor because on
- // additional thread is needed for select().
+ // The load factor jumps immediately to the number of
+ // threads that are currently in use, but decays
+ // exponentially if the number of threads in use is
+ // smaller than the load factor. This reflects that we
+ // create threads immediately when they are needed,
+ // but want the number of threads to slowly decline to
+ // the configured minimum.
//
- if(load + 1 < _running)
+ double inUse = static_cast<double>(_inUse);
+ if(_load < inUse)
+ {
+ _load = inUse;
+ }
+ else
{
- assert(_inUse > 0);
- --_inUse;
+ const double loadFactor = 0.05; // TODO: Configurable?
+ const double oneMinusLoadFactor = 1 - loadFactor;
+ _load = _load * oneMinusLoadFactor + inUse * loadFactor;
+ }
+
+ if(_running > _size)
+ {
+ int load = static_cast<int>(_load + 0.5);
+
+ //
+ // We add one to the load factor because on
+ // additional thread is needed for select().
+ //
+ if(load + 1 < _running)
+ {
+ assert(_inUse > 0);
+ --_inUse;
- assert(_running > 0);
- --_running;
+ assert(_running > 0);
+ --_running;
- return false;
+ return false;
+ }
}
}
-
+
assert(_inUse > 0);
--_inUse;
}
-
+
+ //
+ // Do not wait to be promoted again to release these objects.
+ //
+ handler = 0;
+ workItem = 0;
+
while(!_promote)
{
wait();
diff --git a/cpp/src/Ice/TraceUtil.cpp b/cpp/src/Ice/TraceUtil.cpp
index d255cf2a3ad..537053f9759 100644
--- a/cpp/src/Ice/TraceUtil.cpp
+++ b/cpp/src/Ice/TraceUtil.cpp
@@ -355,12 +355,12 @@ printMessage(ostream& s, BasicStream& stream)
}
static IceUtil::StaticMutex slicingMutex = ICE_STATIC_MUTEX_INITIALIZER;
+static set<string> slicingIds;
void
IceInternal::traceSlicing(const char* kind, const string& typeId, const char* slicingCat, const LoggerPtr& logger)
{
IceUtil::StaticMutex::Lock lock(slicingMutex);
- static set<string> slicingIds;
if(slicingIds.insert(typeId).second)
{
string s("unknown ");
diff --git a/cpp/src/Ice/UdpTransceiver.cpp b/cpp/src/Ice/UdpTransceiver.cpp
index dcc2e27d54d..12b31236281 100644
--- a/cpp/src/Ice/UdpTransceiver.cpp
+++ b/cpp/src/Ice/UdpTransceiver.cpp
@@ -327,11 +327,6 @@ IceInternal::UdpTransceiver::UdpTransceiver(const InstancePtr& instance, const s
_fd = INVALID_SOCKET;
throw;
}
-
-#ifdef _WIN32
- FD_ZERO(&_rFdSet);
- FD_ZERO(&_wFdSet);
-#endif
}
IceInternal::UdpTransceiver::UdpTransceiver(const InstancePtr& instance, const string& host, int port,
@@ -371,6 +366,10 @@ IceInternal::UdpTransceiver::UdpTransceiver(const InstancePtr& instance, const s
#endif
const_cast<struct sockaddr_storage&>(_addr) = doBind(_fd, _addr);
+ if(getPort(_mcastAddr) == 0)
+ {
+ setPort(_mcastAddr, getPort(_addr));
+ }
setMcastGroup(_fd, _mcastAddr, mcastInterface);
}
else
@@ -407,11 +406,6 @@ IceInternal::UdpTransceiver::UdpTransceiver(const InstancePtr& instance, const s
_fd = INVALID_SOCKET;
throw;
}
-
-#ifdef _WIN32
- FD_ZERO(&_rFdSet);
- FD_ZERO(&_wFdSet);
-#endif
}
IceInternal::UdpTransceiver::~UdpTransceiver()
diff --git a/cpp/src/Ice/UdpTransceiver.h b/cpp/src/Ice/UdpTransceiver.h
index 69172c5f12c..8e546730140 100644
--- a/cpp/src/Ice/UdpTransceiver.h
+++ b/cpp/src/Ice/UdpTransceiver.h
@@ -66,10 +66,6 @@ private:
struct sockaddr_storage _mcastAddr;
SOCKET _fd;
-#ifdef _WIN32
- fd_set _rFdSet;
- fd_set _wFdSet;
-#endif
bool _connect;
int _rcvSize;
int _sndSize;
diff --git a/cpp/src/IceBox/Admin.cpp b/cpp/src/IceBox/Admin.cpp
index 2a77a8629ba..6cd3076b995 100644
--- a/cpp/src/IceBox/Admin.cpp
+++ b/cpp/src/IceBox/Admin.cpp
@@ -58,6 +58,9 @@ Client::run(int argc, char* argv[])
vector<string> commands;
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
commands = opts.parse(argc, (const char**)argv);
}
catch(const IceUtilInternal::BadOptException& e)
diff --git a/cpp/src/IceBox/Makefile.mak b/cpp/src/IceBox/Makefile.mak
index d5f8061dfeb..54251f3d445 100644
--- a/cpp/src/IceBox/Makefile.mak
+++ b/cpp/src/IceBox/Makefile.mak
@@ -48,7 +48,7 @@ SPDBFLAGS = /pdb:$(SERVER:.exe=.pdb)
APDBFLAGS = /pdb:$(ADMIN:.exe=.pdb)
!endif
-!if "$(CPP_COMPILER)" == "BCC2007"
+!if "$(BCPLUSPLUS)" == "yes"
RES_FILE = ,, IceBox.res
SRES_FILE = ,, IceBoxExe.res
ARES_FILE = ,, IceBoxAdmin.res
@@ -92,7 +92,7 @@ install:: all
copy $(ADMIN) $(install_bindir)
-!if "$(CPP_COMPILER)" == "BCC2007" && "$(OPTIMIZE)" != "yes"
+!if "$(BCPLUSPLUS)" == "yes" && "$(OPTIMIZE)" != "yes"
install:: all
copy $(DLLNAME:.dll=.tds) $(install_bindir)
diff --git a/cpp/src/IceBox/Service.cpp b/cpp/src/IceBox/Service.cpp
index 2cfb70ce1ea..c98d593636d 100644
--- a/cpp/src/IceBox/Service.cpp
+++ b/cpp/src/IceBox/Service.cpp
@@ -72,6 +72,9 @@ IceBox::IceBoxService::start(int argc, char* argv[])
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
args = opts.parse(args);
}
catch(const IceUtilInternal::BadOptException& e)
diff --git a/cpp/src/IceBox/ServiceManagerI.cpp b/cpp/src/IceBox/ServiceManagerI.cpp
index 0cb8aba1c9d..e80a49474e6 100644
--- a/cpp/src/IceBox/ServiceManagerI.cpp
+++ b/cpp/src/IceBox/ServiceManagerI.cpp
@@ -76,6 +76,50 @@ private:
const PropertiesPtr _properties;
};
+struct StartServiceInfo
+{
+ StartServiceInfo(const std::string& service, const std::string& value, const Ice::StringSeq& serverArgs)
+ {
+ name = service;
+
+ //
+ // Separate the entry point from the arguments.
+ //
+ string::size_type pos = value.find_first_of(" \t\n");
+ if(pos == string::npos)
+ {
+ entryPoint = value;
+ }
+ else
+ {
+ entryPoint = value.substr(0, pos);
+ try
+ {
+ args = IceUtilInternal::Options::split(value.substr(pos + 1));
+ }
+ catch(const IceUtilInternal::BadOptException& ex)
+ {
+ FailureException e(__FILE__, __LINE__);
+ e.reason = "ServiceManager: invalid arguments for service `" + name + "':\n" + ex.reason;
+ throw e;
+ }
+ }
+
+ for(Ice::StringSeq::const_iterator p = serverArgs.begin(); p != serverArgs.end(); ++p)
+ {
+ if(p->find("--" + name + ".") == 0)
+ {
+ args.push_back(*p);
+ }
+ }
+ }
+
+ string name;
+ string entryPoint;
+ Ice::StringSeq args;
+};
+
+
}
IceBox::ServiceManagerI::ServiceManagerI(CommunicatorPtr communicator, int& argc, char* argv[]) :
@@ -138,7 +182,7 @@ IceBox::ServiceManagerI::startService(const string& name, const Current&)
bool started = false;
try
{
- info.service->start(name, info.communicator == 0 ? _communicator : info.communicator, info.args);
+ info.service->start(name, info.communicator == 0 ? _sharedCommunicator : info.communicator, info.args);
started = true;
}
catch(const Ice::Exception& ex)
@@ -343,19 +387,19 @@ IceBox::ServiceManagerI::start()
}
//
- // Load and start the services defined in the property set
- // with the prefix "IceBox.Service.". These properties should
- // have the following format:
+ // Parse the property set with the prefix "IceBox.Service.". These
+ // properties should have the following format:
//
// IceBox.Service.Foo=entry_point [args]
//
- // We load the services specified in IceBox.LoadOrder first,
- // then load any remaining services.
+ // We parse the service properties specified in IceBox.LoadOrder
+ // first, then the ones from remaining services.
//
const string prefix = "IceBox.Service.";
PropertyDict services = properties->getPropertiesForPrefix(prefix);
PropertyDict::iterator p;
StringSeq loadOrder = properties->getPropertyAsList("IceBox.LoadOrder");
+ vector<StartServiceInfo> servicesInfo;
for(StringSeq::const_iterator q = loadOrder.begin(); q != loadOrder.end(); ++q)
{
p = services.find(prefix + *q);
@@ -365,13 +409,76 @@ IceBox::ServiceManagerI::start()
ex.reason = "ServiceManager: no service definition for `" + *q + "'";
throw ex;
}
- load(*q, p->second);
+ servicesInfo.push_back(StartServiceInfo(*q, p->second, _argv));
services.erase(p);
}
for(p = services.begin(); p != services.end(); ++p)
{
- string name = p->first.substr(prefix.size());
- load(name, p->second);
+ servicesInfo.push_back(StartServiceInfo(p->first.substr(prefix.size()), p->second, _argv));
+ }
+
+ //
+ // Check if some services are using the shared communicator in which
+ // case we create the shared communicator now with a property set which
+ // is the union of all the service properties (services which are using
+ // the shared communicator).
+ //
+ PropertyDict sharedCommunicatorServices = properties->getPropertiesForPrefix("IceBox.UseSharedCommunicator.");
+ if(!sharedCommunicatorServices.empty())
+ {
+ InitializationData initData;
+ initData.properties = createServiceProperties("SharedCommunicator");
+ for(vector<StartServiceInfo>::iterator q = servicesInfo.begin(); q != servicesInfo.end(); ++q)
+ {
+ if(properties->getPropertyAsInt("IceBox.UseSharedCommunicator." + q->name) <= 0)
+ {
+ continue;
+ }
+
+ //
+ // Load the service properties using the shared communicator properties as
+ // the default properties.
+ //
+ PropertiesPtr svcProperties = createProperties(q->args, initData.properties);
+
+ //
+ // Erase properties from the shared communicator which don't exist in the
+ // service properties (which include the shared communicator properties
+ // overriden by the service properties).
+ //
+ PropertyDict allProps = initData.properties->getPropertiesForPrefix("");
+ for(PropertyDict::iterator p = allProps.begin(); p != allProps.end(); ++p)
+ {
+ if(svcProperties->getProperty(p->first) == "")
+ {
+ initData.properties->setProperty(p->first, "");
+ }
+ }
+
+ //
+ // Add the service properties to the shared communicator properties.
+ //
+ PropertyDict props = svcProperties->getPropertiesForPrefix("");
+ for(PropertyDict::const_iterator r = props.begin(); r != props.end(); ++r)
+ {
+ initData.properties->setProperty(r->first, r->second);
+ }
+
+ //
+ // Parse <service>.* command line options (the Ice command line options
+ // were parsed by the createProperties above)
+ //
+ q->args = initData.properties->parseCommandLineOptions(q->name, q->args);
+ }
+ _sharedCommunicator = initialize(initData);
+ }
+
+ //
+ // Start the services.
+ //
+ for(vector<StartServiceInfo>::const_iterator r = servicesInfo.begin(); r != servicesInfo.end(); ++r)
+ {
+ start(r->name, r->entryPoint, r->args);
}
//
@@ -459,62 +566,14 @@ IceBox::ServiceManagerI::stop()
}
void
-IceBox::ServiceManagerI::load(const string& name, const string& value)
-{
- //
- // Separate the entry point from the arguments.
- //
- string entryPoint;
- StringSeq args;
- string::size_type pos = value.find_first_of(" \t\n");
- if(pos == string::npos)
- {
- entryPoint = value;
- }
- else
- {
- entryPoint = value.substr(0, pos);
- try
- {
- args = IceUtilInternal::Options::split(value.substr(pos + 1));
- }
- catch(const IceUtilInternal::BadOptException& ex)
- {
- FailureException e(__FILE__, __LINE__);
- e.reason = "ServiceManager: invalid arguments for service `" + name + "':\n" + ex.reason;
- throw e;
- }
- }
- start(name, entryPoint, args);
-}
-
-void
IceBox::ServiceManagerI::start(const string& service, const string& entryPoint, const StringSeq& args)
{
IceUtil::Monitor<IceUtil::Mutex>::Lock lock(*this);
- //
- // Create the service property set from the service arguments and
- // the server arguments. The service property set will be used to
- // create a new communicator, or will be added to the shared
- // communicator, depending on the value of the
- // IceBox.UseSharedCommunicator property.
- //
ServiceInfo info;
info.name = service;
info.status = Stopped;
- StringSeq::size_type j;
- for(j = 0; j < args.size(); j++)
- {
- info.args.push_back(args[j]);
- }
- for(j = 0; j < _argv.size(); j++)
- {
- if(_argv[j].find("--" + service + ".") == 0)
- {
- info.args.push_back(_argv[j]);
- }
- }
+ info.args = args;
//
// Load the entry point.
@@ -539,6 +598,9 @@ IceBox::ServiceManagerI::start(const string& service, const string& entryPoint,
SERVICE_FACTORY factory = (SERVICE_FACTORY)sym;
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
info.service = factory(_communicator);
}
catch(const Exception& ex)
@@ -569,52 +631,40 @@ IceBox::ServiceManagerI::start(const string& service, const string& entryPoint,
Ice::CommunicatorPtr communicator;
if(_communicator->getProperties()->getPropertyAsInt("IceBox.UseSharedCommunicator." + service) > 0)
{
- if(!_sharedCommunicator)
- {
- Ice::StringSeq dummy = Ice::StringSeq();
- _sharedCommunicator = createCommunicator("", dummy);
- }
+ assert(_sharedCommunicator);
communicator = _sharedCommunicator;
-
- PropertiesPtr properties = _sharedCommunicator->getProperties();
-
- PropertiesPtr svcProperties = createProperties(info.args, properties);
-
+ }
+ else
+ {
//
- // Erase properties from the shared communicator which don't exist in the
- // service properties (which include the shared communicator properties
- // overriden by the service properties).
+ // Create the service properties. We use the communicator properties as the default
+ // properties if IceBox.InheritProperties is set.
//
- PropertyDict allProps = properties->getPropertiesForPrefix("");
- for(PropertyDict::iterator p = allProps.begin(); p != allProps.end(); ++p)
+ InitializationData initData;
+ initData.properties = createServiceProperties(service);
+ if(!info.args.empty())
{
- if(svcProperties->getProperty(p->first) == "")
- {
- properties->setProperty(p->first, "");
- }
- }
+ //
+ // Create the service properties with the given service arguments. This should
+ // read the service config file if it's specified with --Ice.Config.
+ //
+ initData.properties = createProperties(info.args, initData.properties);
- //
- // Add the service properties to the shared communicator properties.
- //
- PropertyDict props = svcProperties->getPropertiesForPrefix("");
- for(PropertyDict::const_iterator q = props.begin(); q != props.end(); ++q)
- {
- properties->setProperty(q->first, q->second);
+ //
+ // Next, parse the service "<service>.*" command line options (the Ice command
+ // line options were parsed by the createProperties above)
+ //
+ info.args = initData.properties->parseCommandLineOptions(service, info.args);
}
//
- // Parse <service>.* command line options (the Ice command line options
- // were parsed by the createProperties above)
+ // Remaining command line options are passed to the communicator. This is
+ // necessary for Ice plug-in properties (e.g.: IceSSL).
//
- info.args = properties->parseCommandLineOptions(service, info.args);
- }
- else
- {
- info.communicator = createCommunicator(service, info.args);
+ info.communicator = initialize(info.args, initData);
communicator = info.communicator;
}
-
+
//
// Start the service.
//
@@ -892,16 +942,11 @@ IceBox::ServiceManagerI::observerRemoved(const ServiceObserverPrx& observer, con
}
}
-Ice::CommunicatorPtr
-IceBox::ServiceManagerI::createCommunicator(const string& service, Ice::StringSeq& args)
+Ice::PropertiesPtr
+IceBox::ServiceManagerI::createServiceProperties(const string& service)
{
- PropertiesPtr communicatorProperties = _communicator->getProperties();
-
- //
- // Create the service properties. We use the communicator properties as the default
- // properties if IceBox.InheritProperties is set.
- //
PropertiesPtr properties;
+ PropertiesPtr communicatorProperties = _communicator->getProperties();
if(communicatorProperties->getPropertyAsInt("IceBox.InheritProperties") > 0)
{
properties = communicatorProperties->clone();
@@ -911,59 +956,15 @@ IceBox::ServiceManagerI::createCommunicator(const string& service, Ice::StringSe
{
properties = createProperties();
}
-
- //
- // Set the default program name for the service properties. By default it's
- // the IceBox program name + "-" + the service name, or just the IceBox
- // program name if we're creating the shared communicator (service == "").
- //
+
string programName = communicatorProperties->getProperty("Ice.ProgramName");
- if(service.empty())
+ if(programName.empty())
{
- if(programName.empty())
- {
- properties->setProperty("Ice.ProgramName", "SharedCommunicator");
- }
- else
- {
- properties->setProperty("Ice.ProgramName", programName + "-SharedCommunicator");
- }
+ properties->setProperty("Ice.ProgramName", service);
}
else
{
- if(programName.empty())
- {
- properties->setProperty("Ice.ProgramName", service);
- }
- else
- {
- properties->setProperty("Ice.ProgramName", programName + "-" + service);
- }
- }
-
- if(!args.empty())
- {
- //
- // Create the service properties with the given service arguments. This should
- // read the service config file if it's specified with --Ice.Config.
- //
- properties = createProperties(args, properties);
-
- if(!service.empty())
- {
- //
- // Next, parse the service "<service>.*" command line options (the Ice command
- // line options were parsed by the createProperties above)
- //
- args = properties->parseCommandLineOptions(service, args);
- }
+ properties->setProperty("Ice.ProgramName", programName + "-" + service);
}
-
- //
- // Remaining command line options are passed to the communicator. This is
- // necessary for Ice plug-in properties (e.g.: IceSSL).
- //
- InitializationData initData;
- initData.properties = properties;
- return initialize(args, initData);
+ return properties;
}
diff --git a/cpp/src/IceBox/ServiceManagerI.h b/cpp/src/IceBox/ServiceManagerI.h
index 3e64aeb8ad1..5ef8cdd3bcb 100644
--- a/cpp/src/IceBox/ServiceManagerI.h
+++ b/cpp/src/IceBox/ServiceManagerI.h
@@ -63,7 +63,6 @@ private:
Ice::StringSeq args;
};
- void load(const std::string&, const std::string&);
void start(const std::string&, const std::string&, const ::Ice::StringSeq&);
void stopAll();
@@ -71,7 +70,7 @@ private:
void servicesStopped(const std::vector<std::string>&, const std::set<ServiceObserverPrx>&);
void observerRemoved(const ServiceObserverPrx&, const std::exception&);
- Ice::CommunicatorPtr createCommunicator(const std::string&, Ice::StringSeq&);
+ Ice::PropertiesPtr createServiceProperties(const std::string&);
::Ice::CommunicatorPtr _communicator;
::Ice::CommunicatorPtr _sharedCommunicator;
diff --git a/cpp/src/IceGrid/.depend b/cpp/src/IceGrid/.depend
index b3cb3f1ccc1..6f8c8d79923 100644
--- a/cpp/src/IceGrid/.depend
+++ b/cpp/src/IceGrid/.depend
@@ -24,9 +24,9 @@ AdminCallbackRouter$(OBJEXT): AdminCallbackRouter.cpp ../IceGrid/AdminCallbackRo
RegistryI$(OBJEXT): RegistryI.cpp $(includedir)/IceUtil/DisableWarnings.h $(includedir)/IceUtil/UUID.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h ../Ice/Network.h $(includedir)/Ice/ProtocolPluginFacade.h $(includedir)/Ice/ProtocolPluginFacadeF.h $(includedir)/Ice/EndpointFactoryF.h ../IceStorm/Service.h $(includedir)/IceBox/IceBox.h $(includedir)/Ice/SliceChecksumDict.h $(includedir)/IceStorm/IceStorm.h $(includedir)/IceSSL/Plugin.h $(includedir)/Glacier2/PermissionsVerifier.h $(includedir)/Glacier2/SSLInfo.h ../IceGrid/TraceLevels.h ../IceGrid/Database.h $(includedir)/Freeze/ConnectionF.h $(includedir)/IceGrid/Admin.h $(includedir)/Glacier2/Session.h $(includedir)/IceGrid/Exception.h $(includedir)/IceGrid/Descriptor.h ../IceGrid/Internal.h $(includedir)/IceGrid/Observer.h $(includedir)/IceGrid/Registry.h $(includedir)/IceGrid/Session.h ../IceGrid/StringApplicationInfoDict.h $(includedir)/Freeze/Map.h $(includedir)/Freeze/DB.h $(includedir)/Freeze/Exception.h $(includedir)/Freeze/Connection.h $(includedir)/Freeze/Transaction.h ../IceGrid/IdentityObjectInfoDict.h ../IceGrid/StringAdapterInfoDict.h ../IceGrid/ServerCache.h $(includedir)/IceGrid/Query.h ../IceGrid/Allocatable.h ../IceGrid/Cache.h ../IceGrid/Util.h $(includedir)/IceUtil/StringUtil.h $(includedir)/IceUtil/Random.h ../IceGrid/NodeCache.h $(includedir)/IceUtil/RecMutex.h ../IceGrid/ReplicaCache.h ../IceGrid/ObjectCache.h ../IceGrid/AllocatableObjectCache.h ../IceGrid/AdapterCache.h ../IceGrid/Topics.h ../IceGrid/ReapThread.h ../IceGrid/RegistryI.h $(includedir)/IceGrid/Locator.h ../IceGrid/PlatformInfo.h ../IceGrid/ReplicaSessionManager.h ../IceGrid/SessionManager.h $(includedir)/Glacier2/PermissionsVerifierF.h ../IceGrid/LocatorI.h ../IceGrid/LocatorRegistryI.h ../IceGrid/AdminI.h ../IceGrid/QueryI.h ../IceGrid/SessionI.h ../IceGrid/SessionServantManager.h ../IceGrid/AdminCallbackRouter.h $(includedir)/IceUtil/IceUtil.h $(includedir)/IceUtil/AbstractMutex.h $(includedir)/IceUtil/Cache.h $(includedir)/IceUtil/CountDownLatch.h $(includedir)/IceUtil/CtrlCHandler.h $(includedir)/IceUtil/RWRecMutex.h ../IceGrid/AdminSessionI.h ../IceGrid/InternalRegistryI.h ../IceGrid/FileUserAccountMapperI.h $(includedir)/IceGrid/UserAccountMapper.h ../IceGrid/WellKnownObjectsManager.h ../IceGrid/FileCache.h ../IceGrid/RegistryServerAdminRouter.h
RegistryServerAdminRouter$(OBJEXT): RegistryServerAdminRouter.cpp ../IceGrid/RegistryServerAdminRouter.h ../IceGrid/Database.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Shared.h $(includedir)/Freeze/ConnectionF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/CommunicatorF.h $(includedir)/IceGrid/Admin.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Direct.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/Properties.h $(includedir)/Ice/SliceChecksumDict.h $(includedir)/Glacier2/Session.h $(includedir)/Glacier2/SSLInfo.h $(includedir)/IceGrid/Exception.h $(includedir)/IceGrid/Descriptor.h ../IceGrid/Internal.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Locator.h $(includedir)/IceGrid/Observer.h $(includedir)/IceGrid/Registry.h $(includedir)/IceGrid/Session.h ../IceGrid/StringApplicationInfoDict.h $(includedir)/Freeze/Map.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/Freeze/DB.h $(includedir)/Freeze/Exception.h $(includedir)/Freeze/Connection.h $(includedir)/Freeze/Transaction.h ../IceGrid/IdentityObjectInfoDict.h ../IceGrid/StringAdapterInfoDict.h ../IceGrid/ServerCache.h $(includedir)/IceGrid/Query.h ../IceGrid/Allocatable.h ../IceGrid/Cache.h ../IceGrid/Util.h $(includedir)/IceUtil/StringUtil.h $(includedir)/IceUtil/Random.h ../IceGrid/TraceLevels.h ../IceGrid/NodeCache.h $(includedir)/IceUtil/RecMutex.h ../IceGrid/ReplicaCache.h $(includedir)/IceStorm/IceStorm.h ../IceGrid/ObjectCache.h ../IceGrid/AllocatableObjectCache.h ../IceGrid/AdapterCache.h ../IceGrid/Topics.h
InternalRegistryI$(OBJEXT): InternalRegistryI.cpp $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h ../IceGrid/RegistryI.h $(includedir)/IceGrid/Registry.h $(includedir)/IceGrid/Exception.h $(includedir)/IceGrid/Session.h $(includedir)/Glacier2/Session.h $(includedir)/Glacier2/SSLInfo.h $(includedir)/IceGrid/Admin.h $(includedir)/Ice/SliceChecksumDict.h $(includedir)/IceGrid/Descriptor.h $(includedir)/IceGrid/Query.h $(includedir)/IceGrid/Locator.h ../IceGrid/Internal.h $(includedir)/IceGrid/Observer.h ../IceGrid/PlatformInfo.h ../IceGrid/ReplicaSessionManager.h ../IceGrid/SessionManager.h $(includedir)/Glacier2/PermissionsVerifierF.h ../IceStorm/Service.h $(includedir)/IceBox/IceBox.h $(includedir)/IceStorm/IceStorm.h ../IceGrid/InternalRegistryI.h ../IceGrid/Database.h $(includedir)/Freeze/ConnectionF.h ../IceGrid/StringApplicationInfoDict.h $(includedir)/Freeze/Map.h $(includedir)/Freeze/DB.h $(includedir)/Freeze/Exception.h $(includedir)/Freeze/Connection.h $(includedir)/Freeze/Transaction.h ../IceGrid/IdentityObjectInfoDict.h ../IceGrid/StringAdapterInfoDict.h ../IceGrid/ServerCache.h ../IceGrid/Allocatable.h ../IceGrid/Cache.h ../IceGrid/Util.h $(includedir)/IceUtil/StringUtil.h $(includedir)/IceUtil/Random.h ../IceGrid/TraceLevels.h ../IceGrid/NodeCache.h $(includedir)/IceUtil/RecMutex.h ../IceGrid/ReplicaCache.h ../IceGrid/ObjectCache.h ../IceGrid/AllocatableObjectCache.h ../IceGrid/AdapterCache.h ../IceGrid/Topics.h ../IceGrid/WellKnownObjectsManager.h ../IceGrid/ReapThread.h ../IceGrid/NodeSessionI.h ../IceGrid/ReplicaSessionI.h ../IceGrid/FileCache.h
-StringApplicationInfoDict$(OBJEXT): StringApplicationInfoDict.cpp $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h ../IceGrid/StringApplicationInfoDict.h $(includedir)/Freeze/Map.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/Freeze/DB.h $(includedir)/Freeze/Exception.h $(includedir)/Freeze/Connection.h $(includedir)/Freeze/Transaction.h ../IceGrid/Internal.h $(includedir)/Glacier2/Session.h $(includedir)/Glacier2/SSLInfo.h $(includedir)/IceGrid/Admin.h $(includedir)/Ice/SliceChecksumDict.h $(includedir)/IceGrid/Exception.h $(includedir)/IceGrid/Descriptor.h $(includedir)/IceGrid/Observer.h $(includedir)/IceGrid/Registry.h $(includedir)/IceGrid/Session.h
-IdentityObjectInfoDict$(OBJEXT): IdentityObjectInfoDict.cpp $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h ../IceGrid/IdentityObjectInfoDict.h $(includedir)/Freeze/Map.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/Freeze/DB.h $(includedir)/Freeze/Exception.h $(includedir)/Freeze/Connection.h $(includedir)/Freeze/Transaction.h ../IceGrid/Internal.h $(includedir)/Glacier2/Session.h $(includedir)/Glacier2/SSLInfo.h $(includedir)/IceGrid/Admin.h $(includedir)/Ice/SliceChecksumDict.h $(includedir)/IceGrid/Exception.h $(includedir)/IceGrid/Descriptor.h $(includedir)/IceGrid/Observer.h $(includedir)/IceGrid/Registry.h $(includedir)/IceGrid/Session.h
-StringAdapterInfoDict$(OBJEXT): StringAdapterInfoDict.cpp $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h ../IceGrid/StringAdapterInfoDict.h $(includedir)/Freeze/Map.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/Freeze/DB.h $(includedir)/Freeze/Exception.h $(includedir)/Freeze/Connection.h $(includedir)/Freeze/Transaction.h $(includedir)/IceGrid/Admin.h $(includedir)/Ice/SliceChecksumDict.h $(includedir)/Glacier2/Session.h $(includedir)/Glacier2/SSLInfo.h $(includedir)/IceGrid/Exception.h $(includedir)/IceGrid/Descriptor.h
+StringApplicationInfoDict$(OBJEXT): StringApplicationInfoDict.cpp $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/IceUtil/StringUtil.h ../IceGrid/StringApplicationInfoDict.h $(includedir)/Freeze/Map.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/Freeze/DB.h $(includedir)/Freeze/Exception.h $(includedir)/Freeze/Connection.h $(includedir)/Freeze/Transaction.h ../IceGrid/Internal.h $(includedir)/Glacier2/Session.h $(includedir)/Glacier2/SSLInfo.h $(includedir)/IceGrid/Admin.h $(includedir)/Ice/SliceChecksumDict.h $(includedir)/IceGrid/Exception.h $(includedir)/IceGrid/Descriptor.h $(includedir)/IceGrid/Observer.h $(includedir)/IceGrid/Registry.h $(includedir)/IceGrid/Session.h
+IdentityObjectInfoDict$(OBJEXT): IdentityObjectInfoDict.cpp $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/IceUtil/StringUtil.h ../IceGrid/IdentityObjectInfoDict.h $(includedir)/Freeze/Map.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/Freeze/DB.h $(includedir)/Freeze/Exception.h $(includedir)/Freeze/Connection.h $(includedir)/Freeze/Transaction.h ../IceGrid/Internal.h $(includedir)/Glacier2/Session.h $(includedir)/Glacier2/SSLInfo.h $(includedir)/IceGrid/Admin.h $(includedir)/Ice/SliceChecksumDict.h $(includedir)/IceGrid/Exception.h $(includedir)/IceGrid/Descriptor.h $(includedir)/IceGrid/Observer.h $(includedir)/IceGrid/Registry.h $(includedir)/IceGrid/Session.h
+StringAdapterInfoDict$(OBJEXT): StringAdapterInfoDict.cpp $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/IceUtil/StringUtil.h ../IceGrid/StringAdapterInfoDict.h $(includedir)/Freeze/Map.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/Freeze/DB.h $(includedir)/Freeze/Exception.h $(includedir)/Freeze/Connection.h $(includedir)/Freeze/Transaction.h $(includedir)/IceGrid/Admin.h $(includedir)/Ice/SliceChecksumDict.h $(includedir)/Glacier2/Session.h $(includedir)/Glacier2/SSLInfo.h $(includedir)/IceGrid/Exception.h $(includedir)/IceGrid/Descriptor.h
Database$(OBJEXT): Database.cpp $(includedir)/IceUtil/StringUtil.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Random.h $(includedir)/IceUtil/Exception.h $(includedir)/Freeze/Freeze.h $(includedir)/Freeze/Initialize.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/Freeze/EvictorF.h $(includedir)/Freeze/ConnectionF.h $(includedir)/Freeze/Index.h $(includedir)/Freeze/DB.h $(includedir)/Freeze/Transaction.h $(includedir)/Freeze/BackgroundSaveEvictor.h $(includedir)/Freeze/Evictor.h $(includedir)/Freeze/Exception.h $(includedir)/Freeze/TransactionalEvictor.h $(includedir)/Freeze/Map.h $(includedir)/Freeze/Connection.h $(includedir)/Freeze/TransactionHolder.h $(includedir)/Freeze/Catalog.h $(includedir)/Freeze/CatalogData.h ../IceGrid/Database.h $(includedir)/IceGrid/Admin.h $(includedir)/Ice/SliceChecksumDict.h $(includedir)/Glacier2/Session.h $(includedir)/Glacier2/SSLInfo.h $(includedir)/IceGrid/Exception.h $(includedir)/IceGrid/Descriptor.h ../IceGrid/Internal.h $(includedir)/IceGrid/Observer.h $(includedir)/IceGrid/Registry.h $(includedir)/IceGrid/Session.h ../IceGrid/StringApplicationInfoDict.h ../IceGrid/IdentityObjectInfoDict.h ../IceGrid/StringAdapterInfoDict.h ../IceGrid/ServerCache.h $(includedir)/IceGrid/Query.h ../IceGrid/Allocatable.h ../IceGrid/Cache.h ../IceGrid/Util.h ../IceGrid/TraceLevels.h ../IceGrid/NodeCache.h $(includedir)/IceUtil/RecMutex.h ../IceGrid/ReplicaCache.h $(includedir)/IceStorm/IceStorm.h ../IceGrid/ObjectCache.h ../IceGrid/AllocatableObjectCache.h ../IceGrid/AdapterCache.h ../IceGrid/Topics.h ../IceGrid/DescriptorHelper.h $(includedir)/IceUtil/OutputUtil.h $(includedir)/IceXML/Parser.h ../IceGrid/NodeSessionI.h ../IceGrid/ReplicaSessionI.h
Allocatable$(OBJEXT): Allocatable.cpp ../IceGrid/Allocatable.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/IceGrid/Session.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Direct.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Glacier2/Session.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Glacier2/SSLInfo.h $(includedir)/IceGrid/Exception.h ../IceGrid/SessionI.h ../IceGrid/ReapThread.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/LoggerUtil.h ../IceGrid/SessionServantManager.h ../IceGrid/AdminCallbackRouter.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/IceUtil/IceUtil.h $(includedir)/IceUtil/AbstractMutex.h $(includedir)/IceUtil/Cache.h $(includedir)/IceUtil/CountDownLatch.h $(includedir)/IceUtil/CtrlCHandler.h $(includedir)/IceUtil/RWRecMutex.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/UUID.h
AdapterCache$(OBJEXT): AdapterCache.cpp $(includedir)/IceUtil/Random.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/Locator.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Direct.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h ../IceGrid/AdapterCache.h ../IceGrid/Cache.h ../IceGrid/Util.h $(includedir)/IceGrid/Descriptor.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/IceUtil/StringUtil.h $(includedir)/IceGrid/Exception.h ../IceGrid/TraceLevels.h $(includedir)/IceGrid/Query.h ../IceGrid/Internal.h $(includedir)/Ice/Properties.h $(includedir)/Glacier2/Session.h $(includedir)/Glacier2/SSLInfo.h $(includedir)/IceGrid/Admin.h $(includedir)/Ice/SliceChecksumDict.h $(includedir)/IceGrid/Observer.h $(includedir)/IceGrid/Registry.h $(includedir)/IceGrid/Session.h ../IceGrid/NodeSessionI.h ../IceGrid/ServerCache.h ../IceGrid/Allocatable.h ../IceGrid/NodeCache.h $(includedir)/IceUtil/RecMutex.h ../IceGrid/SessionI.h ../IceGrid/ReapThread.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LocalException.h ../IceGrid/SessionServantManager.h ../IceGrid/AdminCallbackRouter.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/Stats.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/IceUtil/IceUtil.h $(includedir)/IceUtil/AbstractMutex.h $(includedir)/IceUtil/Cache.h $(includedir)/IceUtil/CountDownLatch.h $(includedir)/IceUtil/CtrlCHandler.h $(includedir)/IceUtil/RWRecMutex.h $(includedir)/IceUtil/UUID.h
diff --git a/cpp/src/IceGrid/Activator.cpp b/cpp/src/IceGrid/Activator.cpp
index 0b99b68a417..b8dcf74b241 100644
--- a/cpp/src/IceGrid/Activator.cpp
+++ b/cpp/src/IceGrid/Activator.cpp
@@ -482,7 +482,11 @@ Activator::activate(const string& name,
//
// Make a copy of the command line.
//
+#if defined(_MSC_VER) && (_MSC_VER >= 1400)
+ char* cmdbuf = _strdup(cmd.c_str());
+#else
char* cmdbuf = strdup(cmd.c_str());
+#endif
//
// Create the environment block for the child process. We start with the environment
@@ -569,9 +573,7 @@ Activator::activate(const string& name,
if(!b)
{
- SyscallException ex(__FILE__, __LINE__);
- ex.error = getSystemErrno();
- throw ex;
+ throw IceUtilInternal::lastErrorToString();
}
//
@@ -1054,8 +1056,11 @@ Activator::destroy()
// when there's no more processes and when _deactivating is set to
// true.
//
- _thread->getThreadControl().join();
- _thread = 0;
+ if(_thread)
+ {
+ _thread->getThreadControl().join();
+ _thread = 0;
+ }
assert(_processes.empty());
}
diff --git a/cpp/src/IceGrid/AdapterCache.cpp b/cpp/src/IceGrid/AdapterCache.cpp
index af24d9da061..cec27811315 100644
--- a/cpp/src/IceGrid/AdapterCache.cpp
+++ b/cpp/src/IceGrid/AdapterCache.cpp
@@ -276,6 +276,9 @@ ServerAdapterEntry::getAdapterInfo() const
info.replicaGroupId = _replicaGroupId;
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
info.proxy = _server->getAdapter(_id, true)->getDirectProxy();
}
catch(const Ice::Exception&)
diff --git a/cpp/src/IceGrid/AdapterCache.h b/cpp/src/IceGrid/AdapterCache.h
index 8ee42bc1531..cb3216405b7 100644
--- a/cpp/src/IceGrid/AdapterCache.h
+++ b/cpp/src/IceGrid/AdapterCache.h
@@ -44,12 +44,9 @@ public:
AdapterEntry(AdapterCache&, const std::string&, const std::string&);
virtual void getLocatorAdapterInfo(LocatorAdapterInfoSeq&, int&, bool&, bool&, const std::set<std::string>&) = 0;
- void getLocatorAdapterInfo(LocatorAdapterInfoSeq& adapters, int& count, bool& replicaGroup, bool& roundRobin)
- {
- getLocatorAdapterInfo(adapters, count, replicaGroup, roundRobin, std::set<std::string>());
- }
virtual float getLeastLoadedNodeLoad(LoadSample) const = 0;
virtual AdapterInfoSeq getAdapterInfo() const = 0;
+ virtual AdapterPrx getProxy(const std::string&, bool) const = 0;
virtual bool canRemove();
@@ -74,9 +71,9 @@ public:
virtual void getLocatorAdapterInfo(LocatorAdapterInfoSeq&, int&, bool&, bool&, const std::set<std::string>&);
virtual float getLeastLoadedNodeLoad(LoadSample) const;
virtual AdapterInfoSeq getAdapterInfo() const;
- virtual const std::string& getReplicaGroupId() const { return _replicaGroupId; }
+ virtual AdapterPrx getProxy(const std::string&, bool) const;
- AdapterPrx getProxy(const std::string&, bool) const;
+ const std::string& getReplicaGroupId() const { return _replicaGroupId; }
int getPriority() const;
private:
@@ -96,6 +93,7 @@ public:
virtual void getLocatorAdapterInfo(LocatorAdapterInfoSeq&, int&, bool&, bool&, const std::set<std::string>&);
virtual float getLeastLoadedNodeLoad(LoadSample) const;
virtual AdapterInfoSeq getAdapterInfo() const;
+ virtual AdapterPrx getProxy(const std::string&, bool) const { return 0; }
void addReplica(const std::string&, const ServerAdapterEntryPtr&);
void removeReplica(const std::string&);
diff --git a/cpp/src/IceGrid/Client.cpp b/cpp/src/IceGrid/Client.cpp
index 37b25ddb932..cba7349ad0b 100644
--- a/cpp/src/IceGrid/Client.cpp
+++ b/cpp/src/IceGrid/Client.cpp
@@ -302,6 +302,9 @@ Client::run(int argc, char* argv[])
vector<string> args;
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
args = opts.parse(argc, (const char**)argv);
}
catch(const IceUtilInternal::BadOptException& e)
diff --git a/cpp/src/IceGrid/Database.cpp b/cpp/src/IceGrid/Database.cpp
index 63f94039186..741462280a7 100644
--- a/cpp/src/IceGrid/Database.cpp
+++ b/cpp/src/IceGrid/Database.cpp
@@ -42,6 +42,30 @@ struct ObjectLoadCI : binary_function<pair<Ice::ObjectPrx, float>&, pair<Ice::Ob
}
};
+bool
+isServerUpdated(const ServerInfo& lhs, const ServerInfo& rhs)
+{
+ if(lhs.node != rhs.node)
+ {
+ return true;
+ }
+
+ IceBoxDescriptorPtr lhsIceBox = IceBoxDescriptorPtr::dynamicCast(lhs.descriptor);
+ IceBoxDescriptorPtr rhsIceBox = IceBoxDescriptorPtr::dynamicCast(rhs.descriptor);
+ if(lhsIceBox && rhsIceBox)
+ {
+ return IceBoxHelper(lhsIceBox) != IceBoxHelper(rhsIceBox);
+ }
+ else if(!lhsIceBox && !rhsIceBox)
+ {
+ return ServerHelper(lhs.descriptor) != ServerHelper(rhs.descriptor);
+ }
+ else
+ {
+ return true;
+ }
+}
+
}
Database::Database(const Ice::ObjectAdapterPtr& registryAdapter,
@@ -786,10 +810,23 @@ Database::removeAdapter(const string& adapterId)
_adapterObserverTopic->waitForSyncedSubscribers(serial);
}
-AdapterEntryPtr
-Database::getAdapter(const string& id) const
+AdapterPrx
+Database::getAdapterProxy(const string& adapterId, const string& replicaGroupId, bool upToDate)
+{
+ Lock sync(*this); // make sure this isn't call during an update.
+ return _adapterCache.get(adapterId)->getProxy(replicaGroupId, upToDate);
+}
+
+void
+Database::getLocatorAdapterInfo(const string& id,
+ LocatorAdapterInfoSeq& adpts,
+ int& count,
+ bool& replicaGroup,
+ bool& roundRobin,
+ const set<string>& excludes)
{
- return _adapterCache.get(id);
+ Lock sync(*this); // Make sure this isn't call during an update.
+ _adapterCache.get(id)->getLocatorAdapterInfo(adpts, count, replicaGroup, roundRobin, excludes);
}
AdapterInfoSeq
@@ -802,6 +839,7 @@ Database::getAdapterInfo(const string& id)
//
try
{
+ Lock sync(*this); // Make sure this isn't call during an update.
return _adapterCache.get(id)->getAdapterInfo();
}
catch(AdapterNotExistException&)
@@ -1458,11 +1496,17 @@ Database::reload(const ApplicationHelper& oldApp,
{
load.push_back(p->second);
}
- else
+ else if(isServerUpdated(p->second, q->second))
{
_serverCache.remove(p->first, false); // Don't destroy the server if it was updated.
load.push_back(p->second);
}
+ else
+ {
+ ServerEntryPtr server = _serverCache.get(p->first);
+ server->update(q->second); // Just update the server revision on the node.
+ entries.push_back(server);
+ }
}
for(p = oldServers.begin(); p != oldServers.end(); ++p)
{
@@ -1594,6 +1638,10 @@ Database::finishApplicationUpdate(ServerEntrySeq& entries,
throw ex;
}
}
+ else
+ {
+ for_each(entries.begin(), entries.end(), IceUtil::voidMemFun(&ServerEntry::sync));
+ }
//
// Save the application descriptor.
diff --git a/cpp/src/IceGrid/Database.h b/cpp/src/IceGrid/Database.h
index 16077223312..b09dd264972 100644
--- a/cpp/src/IceGrid/Database.h
+++ b/cpp/src/IceGrid/Database.h
@@ -101,7 +101,9 @@ public:
Ice::ObjectPrx getAdapterDirectProxy(const std::string&);
void removeAdapter(const std::string&);
- AdapterEntryPtr getAdapter(const std::string&) const;
+ AdapterPrx getAdapterProxy(const std::string&, const std::string&, bool);
+ void getLocatorAdapterInfo(const std::string&, LocatorAdapterInfoSeq&, int&, bool&, bool&,
+ const std::set<std::string>& = std::set<std::string>());
std::vector<std::pair<std::string, AdapterPrx> > getAdapters(const std::string&, int&, bool&);
AdapterInfoSeq getAdapterInfo(const std::string&);
diff --git a/cpp/src/IceGrid/IceGridNode.cpp b/cpp/src/IceGrid/IceGridNode.cpp
index 4dc9a62e978..a78d45531a7 100644
--- a/cpp/src/IceGrid/IceGridNode.cpp
+++ b/cpp/src/IceGrid/IceGridNode.cpp
@@ -77,6 +77,7 @@ public:
protected:
virtual bool start(int, char*[]);
+ bool startImpl(int, char*[]);
virtual void waitForShutdown();
virtual bool stop();
virtual CommunicatorPtr initializeCommunicator(int&, char*[], const InitializationData&);
@@ -184,6 +185,25 @@ NodeService::shutdown()
bool
NodeService::start(int argc, char* argv[])
{
+ try
+ {
+ if(!startImpl(argc, argv))
+ {
+ stop();
+ return false;
+ }
+ }
+ catch(...)
+ {
+ stop();
+ throw;
+ }
+ return true;
+}
+
+bool
+NodeService::startImpl(int argc, char* argv[])
+{
bool nowarn = false;
bool readonly = false;
string desc;
@@ -668,43 +688,53 @@ NodeService::waitForShutdown()
bool
NodeService::stop()
{
- try
- {
- _activator->destroy();
- }
- catch(...)
+ if(_activator)
{
- assert(false);
+ try
+ {
+ _activator->shutdown();
+ _activator->destroy();
+ }
+ catch(...)
+ {
+ assert(false);
+ }
+ _activator = 0;
}
- //
- // The timer must be destroyed after the activator and before the
- // communicator is shutdown.
- //
- try
- {
- _timer->destroy();
- }
- catch(...)
+ if(_timer)
{
- assert(false);
+ //
+ // The timer must be destroyed after the activator and before the
+ // communicator is shutdown.
+ //
+ try
+ {
+ _timer->destroy();
+ }
+ catch(...)
+ {
+ assert(false);
+ }
+ _timer = 0;
}
- _activator = 0;
-
//
// Deactivate the node object adapter.
//
- try
+ if(_adapter)
{
- _adapter->deactivate();
- _adapter = 0;
- }
- catch(const Ice::LocalException& ex)
- {
- ostringstream ostr;
- ostr << "unexpected exception while shutting down node:\n" << ex;
- warning(ostr.str());
+ try
+ {
+ _adapter->deactivate();
+ _adapter = 0;
+ }
+ catch(const Ice::LocalException& ex)
+ {
+ ostringstream ostr;
+ ostr << "unexpected exception while shutting down node:\n" << ex;
+ warning(ostr.str());
+ }
}
//
@@ -715,7 +745,10 @@ NodeService::stop()
//
// Stop the platform info thread.
//
- _node->getPlatformInfo().stop();
+ if(_node)
+ {
+ _node->getPlatformInfo().stop();
+ }
//
// We can now safely shutdown the communicator.
@@ -735,8 +768,11 @@ NodeService::stop()
//
// Break cylic reference counts.
//
- _node->shutdown();
- _node = 0;
+ if(_node)
+ {
+ _node->shutdown();
+ _node = 0;
+ }
//
// And shutdown the collocated registry.
diff --git a/cpp/src/IceGrid/IceGridRegistry.cpp b/cpp/src/IceGrid/IceGridRegistry.cpp
index 1b6f104ae3a..f6b15394f00 100644
--- a/cpp/src/IceGrid/IceGridRegistry.cpp
+++ b/cpp/src/IceGrid/IceGridRegistry.cpp
@@ -77,6 +77,9 @@ RegistryService::start(int argc, char* argv[])
vector<string> args;
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
args = opts.parse(argc, (const char**)argv);
}
catch(const IceUtilInternal::BadOptException& e)
diff --git a/cpp/src/IceGrid/LocatorI.cpp b/cpp/src/IceGrid/LocatorI.cpp
index d038ccae641..2db95739e9a 100644
--- a/cpp/src/IceGrid/LocatorI.cpp
+++ b/cpp/src/IceGrid/LocatorI.cpp
@@ -653,6 +653,9 @@ LocatorI::findObjectById_async(const Ice::AMD_Locator_findObjectByIdPtr& cb,
Ice::ObjectPrx proxy;
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
proxy = _database->getObjectProxy(id);
}
catch(const ObjectNotRegisteredException&)
@@ -701,7 +704,7 @@ LocatorI::findAdapterById_async(const Ice::AMD_Locator_findAdapterByIdPtr& cb,
int count;
LocatorAdapterInfoSeq adapters;
bool roundRobin;
- _database->getAdapter(id)->getLocatorAdapterInfo(adapters, count, replicaGroup, roundRobin);
+ _database->getLocatorAdapterInfo(id, adapters, count, replicaGroup, roundRobin);
RequestPtr request;
if(roundRobin)
{
@@ -717,18 +720,10 @@ LocatorI::findAdapterById_async(const Ice::AMD_Locator_findAdapterByIdPtr& cb,
request = new AdapterRequest(cb, self, adapters[0]);
}
request->execute();
+ return;
}
catch(const AdapterNotExistException&)
{
- try
- {
- cb->ice_response(_database->getAdapterDirectProxy(id));
- }
- catch(const AdapterNotExistException&)
- {
- cb->ice_exception(Ice::AdapterNotFoundException());
- }
- return;
}
catch(const Ice::Exception& ex)
{
@@ -748,6 +743,18 @@ LocatorI::findAdapterById_async(const Ice::AMD_Locator_findAdapterByIdPtr& cb,
cb->ice_response(0);
return;
}
+
+ try
+ {
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
+ cb->ice_response(_database->getAdapterDirectProxy(id));
+ }
+ catch(const AdapterNotExistException&)
+ {
+ cb->ice_exception(Ice::AdapterNotFoundException());
+ }
}
Ice::LocatorRegistryPrx
@@ -892,5 +899,5 @@ LocatorI::getAdapterInfo(const string& id,
bool& roundRobin,
const set<string>& excludes)
{
- _database->getAdapter(id)->getLocatorAdapterInfo(adapters, count, replicaGroup, roundRobin, excludes);
+ _database->getLocatorAdapterInfo(id, adapters, count, replicaGroup, roundRobin, excludes);
}
diff --git a/cpp/src/IceGrid/LocatorRegistryI.cpp b/cpp/src/IceGrid/LocatorRegistryI.cpp
index 8d24ca1dce1..f84d40ec9b6 100644
--- a/cpp/src/IceGrid/LocatorRegistryI.cpp
+++ b/cpp/src/IceGrid/LocatorRegistryI.cpp
@@ -243,12 +243,12 @@ LocatorRegistryI::setAdapterDirectProxy(const AMI_Adapter_setDirectProxyPtr& ami
//
// Get the adapter from the registry and set its direct proxy.
//
- ServerAdapterEntryPtr adapter = ServerAdapterEntryPtr::dynamicCast(_database->getAdapter(adapterId));
+ AdapterPrx adapter = _database->getAdapterProxy(adapterId, replicaGroupId, false);
if(!adapter)
{
throw Ice::AdapterNotFoundException();
}
- adapter->getProxy(replicaGroupId, false)->setDirectProxy_async(amiCB, proxy);
+ adapter->setDirectProxy_async(amiCB, proxy);
return;
}
catch(const AdapterNotExistException&)
diff --git a/cpp/src/IceGrid/Makefile.mak b/cpp/src/IceGrid/Makefile.mak
index a8db26b4472..ec310cffff1 100644
--- a/cpp/src/IceGrid/Makefile.mak
+++ b/cpp/src/IceGrid/Makefile.mak
@@ -103,13 +103,13 @@ ALINKWITH = $(LINKWITH) icegrid$(LIBSUFFIX).lib icexml$(LIBSUFFIX).lib icepatch
icebox$(LIBSUFFIX).lib
NLINKWITH = $(ALINKWITH) icestorm$(LIBSUFFIX).lib freeze$(LIBSUFFIX).lib icebox$(LIBSUFFIX).lib \
icessl$(LIBSUFFIX).lib icestormservice$(LIBSUFFIX).lib $(OPENSSL_LIBS)
-!if "$(CPP_COMPILER)" != "BCC2007"
+!if "$(BCPLUSPLUS)" != "yes"
NLINKWITH = $(NLINKWITH) pdh.lib ws2_32.lib
!endif
SLICE2CPPFLAGS = --checksum --ice --include-dir IceGrid $(SLICE2CPPFLAGS)
CPPFLAGS = -I. -I.. -Idummyinclude $(CPPFLAGS) -DWIN32_LEAN_AND_MEAN
-!if "$(CPP_COMPILER)" != "BCC2007"
+!if "$(BCPLUSPLUS)" != "yes"
CPPFLAGS = $(CPPFLAGS) -Zm200
!endif
@@ -119,7 +119,7 @@ RPDBFLAGS = /pdb:$(REGISTRY_SERVER:.exe=.pdb)
NPDBFLAGS = /pdb:$(NODE_SERVER:.exe=.pdb)
!endif
-!if "$(CPP_COMPILER)" == "BCC2007"
+!if "$(BCPLUSPLUS)" == "yes"
ARES_FILE = ,, IceGridAdmin.res
RRES_FILE = ,, IceGridRegistry.res
NRES_FILE = ,, IceGridNode.res
@@ -191,7 +191,7 @@ install:: all
copy $(REGISTRY_SERVER) $(install_bindir)
-!if "$(CPP_COMPILER)" == "BCC2007" && "$(OPTIMIZE)" != "yes"
+!if "$(BCPLUSPLUS)" == "yes" && "$(OPTIMIZE)" != "yes"
install:: all
copy $(ADMIN:.exe=.tds) $(install_bindir)
diff --git a/cpp/src/IceGrid/NodeCache.cpp b/cpp/src/IceGrid/NodeCache.cpp
index dc6eb107a11..5cf227f047e 100644
--- a/cpp/src/IceGrid/NodeCache.cpp
+++ b/cpp/src/IceGrid/NodeCache.cpp
@@ -133,6 +133,21 @@ struct ToInternalServerDescriptor : std::unary_function<CommunicatorDescriptorPt
}
copy(communicatorProps.begin(), communicatorProps.end(), back_inserter(props));
}
+
+ //
+ // For Ice servers > 3.3.0 escape the properties.
+ //
+ if(_iceVersion == 0 || _iceVersion >= 30300)
+ {
+ for(PropertyDescriptorSeq::iterator p = props.begin(); p != props.end(); ++p)
+ {
+ if(p->name.find('#') != 0 || !p->value.empty())
+ {
+ p->name = escapeProperty(p->name);
+ p->value = escapeProperty(p->value);
+ }
+ }
+ }
}
PropertyDescriptor
@@ -785,7 +800,7 @@ NodeEntry::checkSession() const
while(_registering)
{
- if(!timedWait(IceUtil::Time::seconds(5)))
+ if(!timedWait(IceUtil::Time::seconds(10)))
{
break; // Consider the node down if it doesn't respond promptly.
}
@@ -976,26 +991,5 @@ NodeEntry::getInternalServerDescriptor(const ServerInfo& info) const
// descriptor.
//
forEachCommunicator(ToInternalServerDescriptor(server, _session->getInfo(), iceVersion))(info.descriptor);
-
- //
- // For Ice servers > 3.3.0 escape the properties.
- //
- if(iceVersion == 0 || iceVersion >= 30300)
- {
- PropertyDescriptorSeq newProps;
- for(PropertyDescriptorSeq::const_iterator p = props.begin(); p != props.end(); ++p)
- {
- if(p->value.empty() && p->name.find('#') == 0)
- {
- newProps.push_back(createProperty(p->name));
- }
- else
- {
- newProps.push_back(createProperty(escapeProperty(p->name), escapeProperty(p->value)));
- }
- }
- server->properties["config"] = newProps;
- }
-
return server;
}
diff --git a/cpp/src/IceGrid/NodeI.cpp b/cpp/src/IceGrid/NodeI.cpp
index 140e2e73d81..bf4c17e72c7 100644
--- a/cpp/src/IceGrid/NodeI.cpp
+++ b/cpp/src/IceGrid/NodeI.cpp
@@ -548,10 +548,15 @@ NodeI::destroyServer_async(const AMD_Node_destroyServerPtr& amdCB,
//
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
command = server->destroy(amdCB, uuid, revision, replicaName);
}
catch(const Ice::ObjectNotExistException&)
{
+ amdCB->ice_response();
+ return;
}
}
if(command)
diff --git a/cpp/src/IceGrid/NodeSessionManager.cpp b/cpp/src/IceGrid/NodeSessionManager.cpp
index 718a559f92f..878c0bb03d7 100644
--- a/cpp/src/IceGrid/NodeSessionManager.cpp
+++ b/cpp/src/IceGrid/NodeSessionManager.cpp
@@ -322,19 +322,29 @@ NodeSessionManager::destroy()
NodeSessionMap sessions;
{
Lock sync(*this);
+ if(_destroyed)
+ {
+ return;
+ }
_destroyed = true;
_sessions.swap(sessions);
notifyAll();
}
- _thread->terminate();
+ if(_thread)
+ {
+ _thread->terminate();
+ }
NodeSessionMap::const_iterator p;
for(p = sessions.begin(); p != sessions.end(); ++p)
{
p->second->terminate();
}
- _thread->getThreadControl().join();
+ if(_thread)
+ {
+ _thread->getThreadControl().join();
+ }
for(p = sessions.begin(); p != sessions.end(); ++p)
{
p->second->getThreadControl().join();
diff --git a/cpp/src/IceGrid/RegistryI.cpp b/cpp/src/IceGrid/RegistryI.cpp
index b5c58b51583..73ff0e21a4f 100644
--- a/cpp/src/IceGrid/RegistryI.cpp
+++ b/cpp/src/IceGrid/RegistryI.cpp
@@ -167,6 +167,25 @@ RegistryI::~RegistryI()
bool
RegistryI::start()
{
+ try
+ {
+ if(!startImpl())
+ {
+ stop();
+ return false;
+ }
+ }
+ catch(...)
+ {
+ stop();
+ throw;
+ }
+ return true;
+}
+
+bool
+RegistryI::startImpl()
+{
assert(_communicator);
PropertiesPtr properties = _communicator->getProperties();
@@ -687,7 +706,10 @@ RegistryI::stop()
// ensure that there will be no more invocations on IceStorm once
// it's shutdown.
//
- _database->destroyTopics();
+ if(_database)
+ {
+ _database->destroyTopics();
+ }
try
{
@@ -1028,6 +1050,9 @@ RegistryI::getPermissionsVerifier(const ObjectAdapterPtr& adapter,
{
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
verifier = _communicator->propertyToProxy(verifierProperty);
}
catch(const ProxyParseException&)
@@ -1110,6 +1135,9 @@ RegistryI::getPermissionsVerifier(const ObjectAdapterPtr& adapter,
Glacier2::PermissionsVerifierPrx verifierPrx;
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
//
// Set the permission verifier proxy locator to the internal
// locator. We can't use the "public" locator, this could lead
@@ -1151,6 +1179,9 @@ RegistryI::getSSLPermissionsVerifier(const IceGrid::LocatorPrx& locator, const s
{
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
verifier = _communicator->propertyToProxy(verifierProperty);
}
catch(const ProxyParseException&)
@@ -1194,6 +1225,9 @@ RegistryI::getSSLPermissionsVerifier(const IceGrid::LocatorPrx& locator, const s
Glacier2::SSLPermissionsVerifierPrx verifierPrx;
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
//
// Set the permission verifier proxy locator to the internal
// locator. We can't use the "public" locator, this could lead
diff --git a/cpp/src/IceGrid/RegistryI.h b/cpp/src/IceGrid/RegistryI.h
index 59102782ee6..430920de7a8 100644
--- a/cpp/src/IceGrid/RegistryI.h
+++ b/cpp/src/IceGrid/RegistryI.h
@@ -52,6 +52,7 @@ public:
~RegistryI();
bool start();
+ bool startImpl();
void stop();
virtual SessionPrx createSession(const std::string&, const std::string&, const Ice::Current&);
diff --git a/cpp/src/IceGrid/ReplicaSessionManager.cpp b/cpp/src/IceGrid/ReplicaSessionManager.cpp
index 05e57c908ef..74ff82acb46 100644
--- a/cpp/src/IceGrid/ReplicaSessionManager.cpp
+++ b/cpp/src/IceGrid/ReplicaSessionManager.cpp
@@ -346,16 +346,19 @@ ReplicaSessionManager::getNodes(const NodePrxSeq& nodes) const
void
ReplicaSessionManager::destroy()
{
+ ThreadPtr thread;
{
Lock sync(*this);
if(!_thread)
{
return;
}
+ thread = _thread;
+ _thread = 0;
}
- _thread->terminate();
- _thread->getThreadControl().join();
+ thread->terminate();
+ thread->getThreadControl().join();
_database = 0;
_wellKnownObjects = 0;
diff --git a/cpp/src/IceGrid/ServerAdapterI.cpp b/cpp/src/IceGrid/ServerAdapterI.cpp
index 1f9e2fef819..c3114989e5c 100644
--- a/cpp/src/IceGrid/ServerAdapterI.cpp
+++ b/cpp/src/IceGrid/ServerAdapterI.cpp
@@ -31,6 +31,7 @@ ServerAdapterI::ServerAdapterI(const NodeIPtr& node,
ServerAdapterI::~ServerAdapterI()
{
+ assert(_activateCB.empty());
}
void
@@ -70,7 +71,7 @@ ServerAdapterI::activate_async(const AMD_Adapter_activatePtr& cb, const Ice::Cur
{
return;
}
- _activateAfterDeactivating = _server->getState() >= Deactivating;
+ _activateAfterDeactivating = _server->getState() >= Deactivating && _server->getState() < Destroying;
}
//
@@ -94,7 +95,6 @@ ServerAdapterI::activate_async(const AMD_Adapter_activatePtr& cb, const Ice::Cur
// inconsistent if this happens. The best thing to do is to destroy the adapter.
//
destroy();
- activationFailed("server destroyed");
}
catch(const Ice::Exception& ex)
{
@@ -154,7 +154,7 @@ ServerAdapterI::setDirectProxy(const Ice::ObjectPrx& prx, const Ice::Current&)
// now. The server is going to be activated again and the adapter
// activated.
//
- if(_server->getState() < Deactivating || !_activateAfterDeactivating)
+ if(_server->getState() < Deactivating || _server->getState() >= Destroying || !_activateAfterDeactivating)
{
for(vector<AMD_Adapter_activatePtr>::const_iterator p = _activateCB.begin(); p != _activateCB.end(); ++p)
{
@@ -194,6 +194,7 @@ ServerAdapterI::setDirectProxy(const Ice::ObjectPrx& prx, const Ice::Current&)
void
ServerAdapterI::destroy()
{
+ activationFailed("adapter destroyed");
try
{
_node->getAdapter()->remove(_this->ice_getIdentity());
@@ -233,6 +234,29 @@ ServerAdapterI::activationFailed(const std::string& reason)
_activateCB.clear();
}
+void
+ServerAdapterI::activationCompleted()
+{
+ Lock sync(*this);
+ if(!_proxy)
+ {
+ //
+ // The server activation completed, but the adapter hasn't been activated.
+ //
+ if(_node->getTraceLevels()->adapter > 1)
+ {
+ Ice::Trace out(_node->getTraceLevels()->logger, _node->getTraceLevels()->adapterCat);
+ out << "server `" + _serverId + "' adapter `" << _id << "' activation failed: server activation completed";
+ }
+ }
+
+ for(vector<AMD_Adapter_activatePtr>::const_iterator p = _activateCB.begin(); p != _activateCB.end(); ++p)
+ {
+ (*p)->ice_response(_proxy);
+ }
+ _activateCB.clear();
+}
+
AdapterPrx
ServerAdapterI::getProxy() const
{
diff --git a/cpp/src/IceGrid/ServerAdapterI.h b/cpp/src/IceGrid/ServerAdapterI.h
index f2db60ae1fc..0239e1ec710 100644
--- a/cpp/src/IceGrid/ServerAdapterI.h
+++ b/cpp/src/IceGrid/ServerAdapterI.h
@@ -34,6 +34,7 @@ public:
void destroy();
void clear();
void activationFailed(const std::string&);
+ void activationCompleted();
AdapterPrx getProxy() const;
diff --git a/cpp/src/IceGrid/ServerCache.cpp b/cpp/src/IceGrid/ServerCache.cpp
index c90a07f3832..8cdc3494d95 100644
--- a/cpp/src/IceGrid/ServerCache.cpp
+++ b/cpp/src/IceGrid/ServerCache.cpp
@@ -287,7 +287,12 @@ ServerEntry::update(const ServerInfo& info)
_load = descriptor;
_loaded.reset(0);
- _allocatable = info.descriptor->allocatable || info.descriptor->activation == "session";
+ _allocatable = info.descriptor->allocatable;
+ if(info.descriptor->activation == "session")
+ {
+ _allocatable = true;
+ _load->sessionId = _session ? _session->getId() : string("");
+ }
}
void
diff --git a/cpp/src/IceGrid/ServerI.cpp b/cpp/src/IceGrid/ServerI.cpp
index b01219c4e46..6c1941f3ad5 100644
--- a/cpp/src/IceGrid/ServerI.cpp
+++ b/cpp/src/IceGrid/ServerI.cpp
@@ -299,7 +299,7 @@ struct EnvironmentEval : std::unary_function<string, string>
break;
}
string variable = v.substr(beg + 1, end - beg - 1);
- int ret = GetEnvironmentVariable(variable.c_str(), buf, sizeof(buf));
+ DWORD ret = GetEnvironmentVariable(variable.c_str(), buf, sizeof(buf));
string valstr = (ret > 0 && ret < sizeof(buf)) ? string(buf) : string("");
v.replace(beg, end - beg + 1, valstr);
beg += valstr.size();
@@ -845,6 +845,7 @@ void
ServerI::setProcess_async(const AMD_Server_setProcessPtr& amdCB, const Ice::ProcessPrx& process, const Ice::Current&)
{
bool deact = false;
+ ServerAdapterDict adpts;
ServerCommandPtr command;
{
Lock sync(*this);
@@ -856,17 +857,32 @@ ServerI::setProcess_async(const AMD_Server_setProcessPtr& amdCB, const Ice::Proc
}
else
{
- checkActivation();
+ if(checkActivation())
+ {
+ adpts = _adapters;
+ }
command = nextCommand();
}
}
amdCB->ice_response();
+ for(ServerAdapterDict::iterator r = adpts.begin(); r != adpts.end(); ++r)
+ {
+ try
+ {
+ r->second->activationCompleted();
+ }
+ catch(const Ice::ObjectNotExistException&)
+ {
+ }
+ }
+
if(deact)
{
deactivate();
}
- else if(command)
+
+ if(command)
{
command->execute();
}
@@ -1185,13 +1201,14 @@ ServerI::finishPatch()
}
}
#endif
- setState(Inactive);
+ setState(ServerI::Inactive);
}
void
ServerI::adapterActivated(const string& id)
{
ServerCommandPtr command;
+ ServerAdapterDict adpts;
{
Lock sync(*this);
if(_state != ServerI::Activating &&
@@ -1201,9 +1218,25 @@ ServerI::adapterActivated(const string& id)
return;
}
_activatedAdapters.insert(id);
- checkActivation();
+ if(checkActivation())
+ {
+ adpts = _adapters;
+ }
command = nextCommand();
}
+ for(ServerAdapterDict::iterator r = adpts.begin(); r != adpts.end(); ++r)
+ {
+ if(r->first != id)
+ {
+ try
+ {
+ r->second->activationCompleted();
+ }
+ catch(const Ice::ObjectNotExistException&)
+ {
+ }
+ }
+ }
if(command)
{
command->execute();
@@ -1343,88 +1376,107 @@ ServerI::activate()
uid_t uid;
gid_t gid;
#endif
+ string failure;
+ try
{
- Lock sync(*this);
- assert(_state == Activating && _desc);
- desc = _desc;
- adpts = _adapters;
+ {
+ Lock sync(*this);
+ assert(_state == Activating && _desc);
+ desc = _desc;
+ adpts = _adapters;
- //
- // The first time the server is started, we ensure that the
- // replication of its descriptor is completed. This is to make
- // sure all the replicas are up to date when the server
- // starts for the first time with a given descriptor.
- //
- waitForReplication = _waitForReplication;
- _waitForReplication = false;
+ if(_activation == Disabled)
+ {
+ throw string("The server is disabled.");
+ }
- _process = 0;
+ //
+ // The first time the server is started, we ensure that the
+ // replication of its descriptor is completed. This is to make
+ // sure all the replicas are up to date when the server
+ // starts for the first time with a given descriptor.
+ //
+ waitForReplication = _waitForReplication;
+ _waitForReplication = false;
+
+ _process = 0;
#ifndef _WIN32
- uid = _uid;
- gid = _gid;
+ uid = _uid;
+ gid = _gid;
#endif
- }
+ }
- //
- // We first ensure that the application is replicated on all the
- // registries before to start the server. We only do this each
- // time the server is updated or the initialy loaded on the node.
- //
- if(waitForReplication)
- {
- NodeSessionPrx session = _node->getMasterNodeSession();
- if(session)
+ //
+ // We first ensure that the application is replicated on all the
+ // registries before to start the server. We only do this each
+ // time the server is updated or the initialy loaded on the node.
+ //
+ if(waitForReplication)
{
- AMI_NodeSession_waitForApplicationUpdatePtr cb = new WaitForApplicationUpdateCB(this);
- _node->getMasterNodeSession()->waitForApplicationUpdate_async(cb, desc->uuid, desc->revision);
- return;
+ NodeSessionPrx session = _node->getMasterNodeSession();
+ if(session)
+ {
+ AMI_NodeSession_waitForApplicationUpdatePtr cb = new WaitForApplicationUpdateCB(this);
+ _node->getMasterNodeSession()->waitForApplicationUpdate_async(cb, desc->uuid, desc->revision);
+ return;
+ }
}
- }
- //
- // Compute the server command line options.
- //
- Ice::StringSeq options;
- copy(desc->options.begin(), desc->options.end(), back_inserter(options));
- options.push_back("--Ice.Config=" + escapeProperty(_serverDir + "/config/config"));
+ //
+ // Compute the server command line options.
+ //
+ Ice::StringSeq options;
+ copy(desc->options.begin(), desc->options.end(), back_inserter(options));
+ options.push_back("--Ice.Config=" + escapeProperty(_serverDir + "/config/config"));
- Ice::StringSeq envs;
- transform(desc->envs.begin(), desc->envs.end(), back_inserter(envs), EnvironmentEval());
+ Ice::StringSeq envs;
+ transform(desc->envs.begin(), desc->envs.end(), back_inserter(envs), EnvironmentEval());
- //
- // Clear the adapters direct proxy (this is usefull if the server
- // was manually activated).
- //
- for(ServerAdapterDict::iterator p = adpts.begin(); p != adpts.end(); ++p)
- {
- try
- {
- p->second->clear();
- }
- catch(const Ice::ObjectNotExistException&)
+ //
+ // Clear the adapters direct proxy (this is usefull if the server
+ // was manually activated).
+ //
+ for(ServerAdapterDict::iterator p = adpts.begin(); p != adpts.end(); ++p)
{
+ try
+ {
+ p->second->clear();
+ }
+ catch(const Ice::ObjectNotExistException&)
+ {
+ }
}
- }
- string failure;
- try
- {
#ifndef _WIN32
int pid = _node->getActivator()->activate(desc->id, desc->exe, desc->pwd, uid, gid, options, envs, this);
#else
int pid = _node->getActivator()->activate(desc->id, desc->exe, desc->pwd, options, envs, this);
#endif
ServerCommandPtr command;
+ bool active = false;
{
Lock sync(*this);
assert(_state == Activating);
_pid = pid;
setStateNoSync(ServerI::WaitForActivation);
- checkActivation();
+ active = checkActivation();
command = nextCommand();
notifyAll(); // Terminated might be waiting for the state change.
}
+ if(active)
+ {
+ for(ServerAdapterDict::iterator r = adpts.begin(); r != adpts.end(); ++r)
+ {
+ try
+ {
+ r->second->activationCompleted();
+ }
+ catch(const Ice::ObjectNotExistException&)
+ {
+ }
+ }
+ }
if(command)
{
command->execute();
@@ -1435,7 +1487,7 @@ ServerI::activate()
{
failure = ex;
}
- catch(const Ice::SyscallException& ex)
+ catch(const Ice::Exception& ex)
{
Ice::Warning out(_node->getTraceLevels()->logger);
out << "activation failed for server `" << _id << "':\n";
@@ -2321,7 +2373,7 @@ ServerI::updateRevision(const string& uuid, int revision)
}
}
-void
+bool
ServerI::checkActivation()
{
//assert(locked());
@@ -2336,8 +2388,10 @@ ServerI::checkActivation()
_serverLifetimeAdapters.begin(), _serverLifetimeAdapters.end()))
{
setStateNoSync(ServerI::Active);
+ return true;
}
}
+ return false;
}
void
diff --git a/cpp/src/IceGrid/ServerI.h b/cpp/src/IceGrid/ServerI.h
index 9d04b017b7f..64aa208e7cb 100644
--- a/cpp/src/IceGrid/ServerI.h
+++ b/cpp/src/IceGrid/ServerI.h
@@ -121,7 +121,7 @@ private:
void updateImpl(const InternalServerDescriptorPtr&);
void checkRevision(const std::string&, const std::string&, int) const;
void updateRevision(const std::string&, int);
- void checkActivation();
+ bool checkActivation();
void checkDestroyed() const;
void disableOnFailure();
void enableAfterFailure(bool);
diff --git a/cpp/src/IceGridLib/Makefile.mak b/cpp/src/IceGridLib/Makefile.mak
index eb0d57cb251..a34290d5205 100644
--- a/cpp/src/IceGridLib/Makefile.mak
+++ b/cpp/src/IceGridLib/Makefile.mak
@@ -41,7 +41,7 @@ CPPFLAGS = -I.. $(CPPFLAGS)
PDBFLAGS = /pdb:$(DLLNAME:.dll=.pdb)
!endif
-!if "$(CPP_COMPILER)" == "BCC2007"
+!if "$(BCPLUSPLUS)" == "yes"
RES_FILE = ,, IceGrid.res
!else
RES_FILE = IceGrid.res
@@ -74,7 +74,7 @@ install:: all
copy $(DLLNAME) $(install_bindir)
-!if "$(CPP_COMPILER)" == "BCC2007" && "$(OPTIMIZE)" != "yes"
+!if "$(BCPLUSPLUS)" == "yes" && "$(OPTIMIZE)" != "yes"
install:: all
copy $(DLLNAME:.dll=.tds) $(install_bindir)
diff --git a/cpp/src/IcePatch2/.depend b/cpp/src/IcePatch2/.depend
index 14a27d600c3..ae7d61c055b 100644
--- a/cpp/src/IcePatch2/.depend
+++ b/cpp/src/IcePatch2/.depend
@@ -5,7 +5,7 @@ FileServer$(OBJEXT): FileServer.cpp $(includedir)/IcePatch2/FileServer.h $(inclu
OS$(OBJEXT): OS.cpp $(includedir)/IceUtil/DisableWarnings.h ./OS.h $(includedir)/Ice/Config.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Unicode.h $(includedir)/IceUtil/Exception.h
Server$(OBJEXT): Server.cpp $(includedir)/IceUtil/Options.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/StringUtil.h $(includedir)/IceUtil/FileUtil.h $(includedir)/Ice/Service.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h ../IcePatch2/FileServerI.h ../IcePatch2/Util.h $(includedir)/IcePatch2/FileInfo.h $(includedir)/IcePatch2/FileServer.h ./OS.h
FileServerI$(OBJEXT): FileServerI.cpp $(includedir)/IceUtil/DisableWarnings.h $(includedir)/IceUtil/FileUtil.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/Unicode.h $(includedir)/IceUtil/Exception.h ../IcePatch2/FileServerI.h ../IcePatch2/Util.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/IcePatch2/FileInfo.h $(includedir)/IcePatch2/FileServer.h ./OS.h
-Client$(OBJEXT): Client.cpp $(includedir)/IceUtil/Options.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Handle.h $(includedir)/Ice/Application.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h ../IcePatch2/Util.h $(includedir)/IcePatch2/FileInfo.h $(includedir)/IcePatch2/ClientUtil.h $(includedir)/IcePatch2/FileServer.h
+Client$(OBJEXT): Client.cpp $(includedir)/IceUtil/Options.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/StringUtil.h $(includedir)/Ice/Application.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h ../IcePatch2/Util.h $(includedir)/IcePatch2/FileInfo.h $(includedir)/IcePatch2/ClientUtil.h $(includedir)/IcePatch2/FileServer.h
Calc$(OBJEXT): Calc.cpp $(includedir)/IceUtil/Options.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Unicode.h $(includedir)/IceUtil/StringUtil.h $(includedir)/IceUtil/FileUtil.h ../IcePatch2/Util.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/IcePatch2/FileInfo.h ./OS.h
FileInfo.cpp: $(slicedir)/IcePatch2/FileInfo.ice $(slicedir)/Ice/BuiltinSequences.ice
FileServer.cpp: $(slicedir)/IcePatch2/FileServer.ice $(slicedir)/IcePatch2/FileInfo.ice $(slicedir)/Ice/BuiltinSequences.ice
diff --git a/cpp/src/IcePatch2/Calc.cpp b/cpp/src/IcePatch2/Calc.cpp
index 0adb2a2394a..5c67f7445ee 100644
--- a/cpp/src/IcePatch2/Calc.cpp
+++ b/cpp/src/IcePatch2/Calc.cpp
@@ -135,6 +135,9 @@ main(int argc, char* argv[])
vector<string> args;
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
args = opts.parse(argc, (const char**)argv);
}
catch(const IceUtilInternal::BadOptException& e)
diff --git a/cpp/src/IcePatch2/Client.cpp b/cpp/src/IcePatch2/Client.cpp
index 76436d94eb8..29cd1516563 100644
--- a/cpp/src/IcePatch2/Client.cpp
+++ b/cpp/src/IcePatch2/Client.cpp
@@ -246,6 +246,9 @@ Client::run(int argc, char* argv[])
vector<string> args;
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
args = opts.parse(argc, (const char**)argv);
}
catch(const IceUtilInternal::BadOptException& e)
diff --git a/cpp/src/IcePatch2/FileServerI.cpp b/cpp/src/IcePatch2/FileServerI.cpp
index 46c22513ded..3e14b22e048 100644
--- a/cpp/src/IcePatch2/FileServerI.cpp
+++ b/cpp/src/IcePatch2/FileServerI.cpp
@@ -101,9 +101,19 @@ IcePatch2::FileServerI::getFileCompressed_async(const AMD_FileServer_getFileComp
return;
}
- if(lseek(fd, static_cast<off_t>(pos), SEEK_SET) != static_cast<off_t>(pos))
+ if(
+#if defined(_MSC_VER) && (_MSC_VER >= 1400)
+ _lseek(fd, static_cast<off_t>(pos), SEEK_SET)
+#else
+ lseek(fd, static_cast<off_t>(pos), SEEK_SET)
+#endif
+ != static_cast<off_t>(pos))
{
+#if defined(_MSC_VER) && (_MSC_VER >= 1400)
+ _close(fd);
+#else
close(fd);
+#endif
ostringstream posStr;
posStr << pos;
@@ -117,13 +127,23 @@ IcePatch2::FileServerI::getFileCompressed_async(const AMD_FileServer_getFileComp
IceUtilInternal::ScopedArray<Byte> bytes(new Byte[num]);
#ifdef _WIN32
int r;
- if((r = read(fd, bytes.get(), static_cast<unsigned int>(num))) == -1)
+ if((r =
+#if defined(_MSC_VER) && (_MSC_VER >= 1400)
+ _read(fd, bytes.get(), static_cast<unsigned int>(num))
+#else
+ read(fd, bytes.get(), static_cast<unsigned int>(num))
+#endif
+ ) == -1)
#else
ssize_t r;
if((r = read(fd, bytes.get(), static_cast<size_t>(num))) == -1)
#endif
{
+#if defined(_MSC_VER) && (_MSC_VER >= 1400)
+ _close(fd);
+#else
close(fd);
+#endif
FileAccessException ex;
ex.reason = "cannot read `" + path + "': " + strerror(errno);
@@ -131,7 +151,11 @@ IcePatch2::FileServerI::getFileCompressed_async(const AMD_FileServer_getFileComp
return;
}
+#if defined(_MSC_VER) && (_MSC_VER >= 1400)
+ _close(fd);
+#else
close(fd);
+#endif
ret.first = bytes.get();
ret.second = ret.first + r;
diff --git a/cpp/src/IcePatch2/Makefile.mak b/cpp/src/IcePatch2/Makefile.mak
index 1ea9843bb5c..ccdad87b787 100644
--- a/cpp/src/IcePatch2/Makefile.mak
+++ b/cpp/src/IcePatch2/Makefile.mak
@@ -52,7 +52,7 @@ CPDBFLAGS = /pdb:$(CLIENT:.exe=.pdb)
CAPDBFLAGS = /pdb:$(CALC:.exe=.pdb)
!endif
-!if "$(CPP_COMPILER)" == "BCC2007"
+!if "$(BCPLUSPLUS)" == "yes"
RES_FILE = ,, IcePatch2.res
SRES_FILE = ,, IcePatch2Server.res
CRES_FILE = ,, IcePatch2Client.res
@@ -108,7 +108,7 @@ install:: all
copy $(CALC) $(install_bindir)
-!if "$(CPP_COMPILER)" == "BCC2007" && "$(OPTIMIZE)" != "yes"
+!if "$(BCPLUSPLUS)" == "yes" && "$(OPTIMIZE)" != "yes"
install:: all
copy $(DLLNAME:.dll=.tds) $(install_bindir)
diff --git a/cpp/src/IcePatch2/Server.cpp b/cpp/src/IcePatch2/Server.cpp
index 62b35de8004..91e71d708aa 100644
--- a/cpp/src/IcePatch2/Server.cpp
+++ b/cpp/src/IcePatch2/Server.cpp
@@ -76,6 +76,9 @@ IcePatch2::PatcherService::start(int argc, char* argv[])
vector<string> args;
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
args = opts.parse(argc, (const char**)argv);
}
catch(const IceUtilInternal::BadOptException& e)
diff --git a/cpp/src/IcePatch2/Util.cpp b/cpp/src/IcePatch2/Util.cpp
index ad06e7ebda5..05d91aa9bec 100644
--- a/cpp/src/IcePatch2/Util.cpp
+++ b/cpp/src/IcePatch2/Util.cpp
@@ -736,7 +736,7 @@ IcePatch2::decompressFile(const string& pa)
}
ByteSeq compressedBytes(buf.st_size);
- if(fread(&compressedBytes[0], buf.st_size, 1, stdioFileBZ2) == -1)
+ if(fread(&compressedBytes[0], buf.st_size, 1, stdioFileBZ2) != 1)
{
throw "cannot read from `" + pathBZ2 + "':\n" + IceUtilInternal::lastErrorToString();
}
@@ -1085,7 +1085,11 @@ getFileInfoSeqInt(const string& basePath, const string& relPath, int compress, G
stdioFile = OS::fopen(simplify(pathBZ2Temp), "wb");
if(!stdioFile)
{
+#if defined(_MSC_VER) && (_MSC_VER >= 1400)
+ _close(fd);
+#else
close(fd);
+#endif
throw "cannot open `" + pathBZ2Temp + "' for writing:\n" + IceUtilInternal::lastErrorToString();
}
@@ -1098,7 +1102,11 @@ getFileInfoSeqInt(const string& basePath, const string& relPath, int compress, G
ex += string(": ") + IceUtilInternal::lastErrorToString();
}
fclose(stdioFile);
+#if defined(_MSC_VER) && (_MSC_VER >= 1400)
+ _close(fd);
+#else
close(fd);
+#endif
throw ex;
}
}
@@ -1108,7 +1116,13 @@ getFileInfoSeqInt(const string& basePath, const string& relPath, int compress, G
while(bytesLeft > 0)
{
ByteSeq bytes(min(bytesLeft, 1024u*1024));
- if(read(fd, &bytes[0], static_cast<unsigned int>(bytes.size())) == -1)
+ if(
+#if defined(_MSC_VER) && (_MSC_VER >= 1400)
+ _read(fd, &bytes[0], static_cast<unsigned int>(bytes.size()))
+#else
+ read(fd, &bytes[0], static_cast<unsigned int>(bytes.size()))
+#endif
+ == -1)
{
#ifndef __BCPLUSPLUS__
if(doCompress)
@@ -1116,7 +1130,12 @@ getFileInfoSeqInt(const string& basePath, const string& relPath, int compress, G
fclose(stdioFile);
}
#endif
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1400)
+ _close(fd);
+#else
close(fd);
+#endif
throw "cannot read from `" + path + "':\n" + IceUtilInternal::lastErrorToString();
}
bytesLeft -= static_cast<unsigned int>(bytes.size());
@@ -1134,7 +1153,11 @@ getFileInfoSeqInt(const string& basePath, const string& relPath, int compress, G
}
BZ2_bzWriteClose(&bzError, bzFile, 0, 0, 0);
fclose(stdioFile);
+#if defined(_MSC_VER) && (_MSC_VER >= 1400)
+ _close(fd);
+#else
close(fd);
+#endif
throw ex;
}
}
@@ -1143,7 +1166,11 @@ getFileInfoSeqInt(const string& basePath, const string& relPath, int compress, G
SHA1_Update(&ctx, reinterpret_cast<const void*>(&bytes[0]), bytes.size());
}
+#if defined(_MSC_VER) && (_MSC_VER >= 1400)
+ _close(fd);
+#else
close(fd);
+#endif
#ifndef __BCPLUSPLUS__
if(doCompress)
diff --git a/cpp/src/IceSSL/Makefile.mak b/cpp/src/IceSSL/Makefile.mak
index fa1b15a9def..38d85a5e356 100644
--- a/cpp/src/IceSSL/Makefile.mak
+++ b/cpp/src/IceSSL/Makefile.mak
@@ -34,7 +34,7 @@ HDIR = $(headerdir)\IceSSL
CPPFLAGS = -I.. $(CPPFLAGS) -DICE_SSL_API_EXPORTS -DFD_SETSIZE=1024 -DWIN32_LEAN_AND_MEAN
LINKWITH = $(OPENSSL_LIBS) $(LIBS)
-!if "$(CPP_COMPILER)" != "BCC2007"
+!if "$(BCPLUSPLUS)" != "yes"
LINKWITH = $(LINKWITH) ws2_32.lib
!endif
@@ -42,7 +42,7 @@ LINKWITH = $(LINKWITH) ws2_32.lib
PDBFLAGS = /pdb:$(DLLNAME:.dll=.pdb)
!endif
-!if "$(CPP_COMPILER)" == "BCC2007"
+!if "$(BCPLUSPLUS)" == "yes"
RES_FILE = ,, IceSSL.res
!else
RES_FILE = IceSSL.res
@@ -65,7 +65,7 @@ install:: all
copy $(DLLNAME) $(install_bindir)
-!if "$(CPP_COMPILER)" == "BCC2007" && "$(OPTIMIZE)" != "yes"
+!if "$(BCPLUSPLUS)" == "yes" && "$(OPTIMIZE)" != "yes"
install:: all
copy $(DLLNAME:.dll=.tds) $(install_bindir)
diff --git a/cpp/src/IceStorm/.depend b/cpp/src/IceStorm/.depend
index 84bbc3ef880..e60cc1ed0f1 100644
--- a/cpp/src/IceStorm/.depend
+++ b/cpp/src/IceStorm/.depend
@@ -1,7 +1,7 @@
IceStorm$(OBJEXT): IceStorm.cpp $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/SliceChecksumDict.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/SliceChecksums.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/DisableWarnings.h
NodeI$(OBJEXT): NodeI.cpp ../IceStorm/NodeI.h $(includedir)/IceUtil/IceUtil.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/AbstractMutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Cache.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/CountDownLatch.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/CtrlCHandler.h $(includedir)/IceUtil/Functional.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/RWRecMutex.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/UUID.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Handle.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h ../IceStorm/Election.h ../IceStorm/SubscriberRecord.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h ../IceStorm/Replica.h ../IceStorm/Instance.h ../IceStorm/Observers.h ../IceStorm/TraceLevels.h
Observers$(OBJEXT): Observers.cpp ../IceStorm/Observers.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/IceUtil/IceUtil.h $(includedir)/IceUtil/AbstractMutex.h $(includedir)/IceUtil/Cache.h $(includedir)/IceUtil/CountDownLatch.h $(includedir)/IceUtil/CtrlCHandler.h $(includedir)/IceUtil/RWRecMutex.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/UUID.h ../IceStorm/Election.h ../IceStorm/SubscriberRecord.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h ../IceStorm/Replica.h ../IceStorm/Instance.h ../IceStorm/TraceLevels.h
-LLUMap$(OBJEXT): LLUMap.cpp $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h ../IceStorm/LLUMap.h $(includedir)/Freeze/Map.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/Freeze/DB.h $(includedir)/Freeze/Exception.h $(includedir)/Freeze/Connection.h $(includedir)/Freeze/Transaction.h ../IceStorm/Election.h ../IceStorm/SubscriberRecord.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h
+LLUMap$(OBJEXT): LLUMap.cpp $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/IceUtil/StringUtil.h ../IceStorm/LLUMap.h $(includedir)/Freeze/Map.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/Freeze/DB.h $(includedir)/Freeze/Exception.h $(includedir)/Freeze/Connection.h $(includedir)/Freeze/Transaction.h ../IceStorm/Election.h ../IceStorm/SubscriberRecord.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h
Election$(OBJEXT): Election.cpp ../IceStorm/Election.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/BuiltinSequences.h ../IceStorm/SubscriberRecord.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/ObjectFactory.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/DisableWarnings.h
IceStorm$(OBJEXT): IceStorm.cpp $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/SliceChecksumDict.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/SliceChecksums.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/DisableWarnings.h
Instance$(OBJEXT): Instance.cpp ../IceStorm/Instance.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h ../IceStorm/Election.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/BuiltinSequences.h ../IceStorm/SubscriberRecord.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h ../IceStorm/TraceLevels.h ../IceStorm/Observers.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/IceUtil/IceUtil.h $(includedir)/IceUtil/AbstractMutex.h $(includedir)/IceUtil/Cache.h $(includedir)/IceUtil/CountDownLatch.h $(includedir)/IceUtil/CtrlCHandler.h $(includedir)/IceUtil/RWRecMutex.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/UUID.h ../IceStorm/Replica.h ../IceStorm/NodeI.h
@@ -11,7 +11,7 @@ TopicI$(OBJEXT): TopicI.cpp $(includedir)/IceUtil/DisableWarnings.h ../IceStorm/
TopicManagerI$(OBJEXT): TopicManagerI.cpp $(includedir)/IceUtil/DisableWarnings.h ../IceStorm/TopicManagerI.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/SliceChecksumDict.h ../IceStorm/LLUMap.h $(includedir)/Freeze/Map.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/Freeze/DB.h $(includedir)/Freeze/Exception.h $(includedir)/Freeze/Connection.h $(includedir)/Freeze/Transaction.h ../IceStorm/Election.h ../IceStorm/SubscriberRecord.h ../IceStorm/SubscriberMap.h ../IceStorm/Replica.h $(includedir)/IceUtil/RecMutex.h ../IceStorm/TopicI.h ../IceStorm/IceStormInternal.h ../IceStorm/TraceLevels.h ../IceStorm/Instance.h $(includedir)/Freeze/Freeze.h $(includedir)/Freeze/Initialize.h $(includedir)/Freeze/EvictorF.h $(includedir)/Freeze/ConnectionF.h $(includedir)/Freeze/Index.h $(includedir)/Freeze/BackgroundSaveEvictor.h $(includedir)/Freeze/Evictor.h $(includedir)/Freeze/TransactionalEvictor.h $(includedir)/Freeze/TransactionHolder.h $(includedir)/Freeze/Catalog.h $(includedir)/Freeze/CatalogData.h ../IceStorm/NodeI.h $(includedir)/IceUtil/IceUtil.h $(includedir)/IceUtil/AbstractMutex.h $(includedir)/IceUtil/Cache.h $(includedir)/IceUtil/CountDownLatch.h $(includedir)/IceUtil/CtrlCHandler.h $(includedir)/IceUtil/RWRecMutex.h $(includedir)/IceUtil/UUID.h ../IceStorm/Observers.h ../IceStorm/Subscriber.h $(includedir)/Ice/SliceChecksums.h
TransientTopicI$(OBJEXT): TransientTopicI.cpp $(includedir)/IceUtil/DisableWarnings.h ../IceStorm/TransientTopicI.h ../IceStorm/IceStormInternal.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h ../IceStorm/Election.h $(includedir)/Ice/BuiltinSequences.h ../IceStorm/SubscriberRecord.h ../IceStorm/Instance.h $(includedir)/Ice/PropertiesF.h ../IceStorm/Subscriber.h $(includedir)/IceUtil/RecMutex.h ../IceStorm/TraceLevels.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h
TransientTopicManagerI$(OBJEXT): TransientTopicManagerI.cpp $(includedir)/IceUtil/DisableWarnings.h ../IceStorm/TransientTopicManagerI.h ../IceStorm/IceStormInternal.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h ../IceStorm/Election.h $(includedir)/Ice/BuiltinSequences.h ../IceStorm/SubscriberRecord.h ../IceStorm/TransientTopicI.h ../IceStorm/TraceLevels.h $(includedir)/Ice/PropertiesF.h ../IceStorm/Instance.h ../IceStorm/Subscriber.h $(includedir)/IceUtil/RecMutex.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/Ice/SliceChecksums.h
-SubscriberMap$(OBJEXT): SubscriberMap.cpp $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h ../IceStorm/SubscriberMap.h $(includedir)/Freeze/Map.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/Freeze/DB.h $(includedir)/Freeze/Exception.h $(includedir)/Freeze/Connection.h $(includedir)/Freeze/Transaction.h ../IceStorm/SubscriberRecord.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h
+SubscriberMap$(OBJEXT): SubscriberMap.cpp $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/IceUtil/StringUtil.h ../IceStorm/SubscriberMap.h $(includedir)/Freeze/Map.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/Freeze/DB.h $(includedir)/Freeze/Exception.h $(includedir)/Freeze/Connection.h $(includedir)/Freeze/Transaction.h ../IceStorm/SubscriberRecord.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h
SubscriberRecord$(OBJEXT): SubscriberRecord.cpp ../IceStorm/SubscriberRecord.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/ObjectFactory.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/DisableWarnings.h
IceStormInternal$(OBJEXT): IceStormInternal.cpp ../IceStorm/IceStormInternal.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h ../IceStorm/Election.h $(includedir)/Ice/BuiltinSequences.h ../IceStorm/SubscriberRecord.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/ObjectFactory.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/DisableWarnings.h
Service$(OBJEXT): Service.cpp $(includedir)/IceUtil/DisableWarnings.h ../IceStorm/TopicI.h ../IceStorm/IceStormInternal.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h ../IceStorm/Election.h $(includedir)/Ice/BuiltinSequences.h ../IceStorm/SubscriberRecord.h ../IceStorm/SubscriberMap.h $(includedir)/Freeze/Map.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/Freeze/DB.h $(includedir)/Freeze/Exception.h $(includedir)/Freeze/Connection.h $(includedir)/Freeze/Transaction.h ../IceStorm/LLUMap.h ../IceStorm/TopicManagerI.h ../IceStorm/Replica.h $(includedir)/IceUtil/RecMutex.h ../IceStorm/TransientTopicManagerI.h ../IceStorm/Instance.h ../IceStorm/Service.h $(includedir)/IceBox/IceBox.h ../IceStorm/Observers.h $(includedir)/IceUtil/IceUtil.h $(includedir)/IceUtil/AbstractMutex.h $(includedir)/IceUtil/Cache.h $(includedir)/IceUtil/CountDownLatch.h $(includedir)/IceUtil/CtrlCHandler.h $(includedir)/IceUtil/RWRecMutex.h $(includedir)/IceUtil/UUID.h ../IceStorm/TraceLevels.h $(includedir)/IceUtil/StringUtil.h ../IceStorm/NodeI.h ../IceStorm/TransientTopicI.h $(includedir)/IceGrid/Locator.h $(includedir)/IceGrid/Query.h $(includedir)/IceGrid/Exception.h
@@ -24,13 +24,13 @@ SubscriberRecord$(OBJEXT): SubscriberRecord.cpp ../IceStorm/SubscriberRecord.h $
IceStormInternal$(OBJEXT): IceStormInternal.cpp ../IceStorm/IceStormInternal.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h ../IceStorm/Election.h $(includedir)/Ice/BuiltinSequences.h ../IceStorm/SubscriberRecord.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/ObjectFactory.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/DisableWarnings.h
Migrate$(OBJEXT): Migrate.cpp $(includedir)/IceUtil/DisableWarnings.h $(includedir)/Freeze/Freeze.h $(includedir)/Freeze/Initialize.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/LoggerF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/Freeze/EvictorF.h $(includedir)/Freeze/ConnectionF.h $(includedir)/Freeze/Index.h $(includedir)/Freeze/DB.h $(includedir)/Freeze/Transaction.h $(includedir)/Freeze/BackgroundSaveEvictor.h $(includedir)/Freeze/Evictor.h $(includedir)/Freeze/Exception.h $(includedir)/Freeze/TransactionalEvictor.h $(includedir)/Freeze/Map.h $(includedir)/Freeze/Connection.h $(includedir)/Freeze/TransactionHolder.h $(includedir)/Freeze/Catalog.h $(includedir)/Freeze/CatalogData.h ../IceStorm/SubscriberMap.h ../IceStorm/SubscriberRecord.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h ../IceStorm/IceStormInternal.h ../IceStorm/Election.h ../IceStorm/LLUMap.h ../IceStorm/V32FormatDB.h ../IceStorm/V32Format.h ../IceStorm/LinkRecord.h ../IceStorm/V31FormatDB.h ../IceStorm/V31Format.h
SubscriberRecord$(OBJEXT): SubscriberRecord.cpp ../IceStorm/SubscriberRecord.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/ObjectFactory.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/DisableWarnings.h
-SubscriberMap$(OBJEXT): SubscriberMap.cpp $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h ../IceStorm/SubscriberMap.h $(includedir)/Freeze/Map.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/Freeze/DB.h $(includedir)/Freeze/Exception.h $(includedir)/Freeze/Connection.h $(includedir)/Freeze/Transaction.h ../IceStorm/SubscriberRecord.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h
-LLUMap$(OBJEXT): LLUMap.cpp $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h ../IceStorm/LLUMap.h $(includedir)/Freeze/Map.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/Freeze/DB.h $(includedir)/Freeze/Exception.h $(includedir)/Freeze/Connection.h $(includedir)/Freeze/Transaction.h ../IceStorm/Election.h ../IceStorm/SubscriberRecord.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h
+SubscriberMap$(OBJEXT): SubscriberMap.cpp $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/IceUtil/StringUtil.h ../IceStorm/SubscriberMap.h $(includedir)/Freeze/Map.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/Freeze/DB.h $(includedir)/Freeze/Exception.h $(includedir)/Freeze/Connection.h $(includedir)/Freeze/Transaction.h ../IceStorm/SubscriberRecord.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h
+LLUMap$(OBJEXT): LLUMap.cpp $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/IceUtil/StringUtil.h ../IceStorm/LLUMap.h $(includedir)/Freeze/Map.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/Freeze/DB.h $(includedir)/Freeze/Exception.h $(includedir)/Freeze/Connection.h $(includedir)/Freeze/Transaction.h ../IceStorm/Election.h ../IceStorm/SubscriberRecord.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h
LinkRecord$(OBJEXT): LinkRecord.cpp ../IceStorm/LinkRecord.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h ../IceStorm/IceStormInternal.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h ../IceStorm/Election.h $(includedir)/Ice/BuiltinSequences.h ../IceStorm/SubscriberRecord.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/ObjectFactory.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/DisableWarnings.h
IceStormInternal$(OBJEXT): IceStormInternal.cpp ../IceStorm/IceStormInternal.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h ../IceStorm/Election.h $(includedir)/Ice/BuiltinSequences.h ../IceStorm/SubscriberRecord.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/ObjectFactory.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/DisableWarnings.h
Election$(OBJEXT): Election.cpp ../IceStorm/Election.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/BuiltinSequences.h ../IceStorm/SubscriberRecord.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/ObjectFactory.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/DisableWarnings.h
-V32FormatDB$(OBJEXT): V32FormatDB.cpp $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h ../IceStorm/V32FormatDB.h $(includedir)/Freeze/Map.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/Freeze/DB.h $(includedir)/Freeze/Exception.h $(includedir)/Freeze/Connection.h $(includedir)/Freeze/Transaction.h ../IceStorm/V32Format.h ../IceStorm/LinkRecord.h ../IceStorm/IceStormInternal.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h ../IceStorm/Election.h ../IceStorm/SubscriberRecord.h
-V31FormatDB$(OBJEXT): V31FormatDB.cpp $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h ../IceStorm/V31FormatDB.h $(includedir)/Freeze/Map.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/Freeze/DB.h $(includedir)/Freeze/Exception.h $(includedir)/Freeze/Connection.h $(includedir)/Freeze/Transaction.h ../IceStorm/V31Format.h ../IceStorm/LinkRecord.h ../IceStorm/IceStormInternal.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h ../IceStorm/Election.h ../IceStorm/SubscriberRecord.h
+V32FormatDB$(OBJEXT): V32FormatDB.cpp $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/IceUtil/StringUtil.h ../IceStorm/V32FormatDB.h $(includedir)/Freeze/Map.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/Freeze/DB.h $(includedir)/Freeze/Exception.h $(includedir)/Freeze/Connection.h $(includedir)/Freeze/Transaction.h ../IceStorm/V32Format.h ../IceStorm/LinkRecord.h ../IceStorm/IceStormInternal.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h ../IceStorm/Election.h ../IceStorm/SubscriberRecord.h
+V31FormatDB$(OBJEXT): V31FormatDB.cpp $(includedir)/Ice/BasicStream.h $(includedir)/Ice/InstanceF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/LocalObjectF.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/IceUtil/StringUtil.h ../IceStorm/V31FormatDB.h $(includedir)/Freeze/Map.h $(includedir)/Ice/Ice.h $(includedir)/Ice/Initialize.h $(includedir)/Ice/PropertiesF.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/StatsF.h $(includedir)/Ice/BuiltinSequences.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/Properties.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/Logger.h $(includedir)/Ice/LoggerUtil.h $(includedir)/Ice/Stats.h $(includedir)/Ice/Communicator.h $(includedir)/Ice/RouterF.h $(includedir)/Ice/LocatorF.h $(includedir)/Ice/PluginF.h $(includedir)/Ice/ImplicitContextF.h $(includedir)/Ice/ObjectFactory.h $(includedir)/Ice/ObjectAdapter.h $(includedir)/Ice/FacetMap.h $(includedir)/Ice/ServantLocator.h $(includedir)/Ice/IncomingAsync.h $(includedir)/Ice/Process.h $(includedir)/Ice/Application.h $(includedir)/Ice/Connection.h $(includedir)/Ice/Functional.h $(includedir)/IceUtil/Functional.h $(includedir)/Ice/Stream.h $(includedir)/Ice/ImplicitContext.h $(includedir)/Ice/Locator.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h $(includedir)/Ice/ProcessF.h $(includedir)/Ice/Router.h $(includedir)/Ice/DispatchInterceptor.h $(includedir)/Ice/IconvStringConverter.h $(includedir)/Freeze/DB.h $(includedir)/Freeze/Exception.h $(includedir)/Freeze/Connection.h $(includedir)/Freeze/Transaction.h ../IceStorm/V31Format.h ../IceStorm/LinkRecord.h ../IceStorm/IceStormInternal.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h ../IceStorm/Election.h ../IceStorm/SubscriberRecord.h
V32Format$(OBJEXT): V32Format.cpp ../IceStorm/V32Format.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h ../IceStorm/LinkRecord.h ../IceStorm/IceStormInternal.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h ../IceStorm/Election.h $(includedir)/Ice/BuiltinSequences.h ../IceStorm/SubscriberRecord.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/ObjectFactory.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/DisableWarnings.h
V31Format$(OBJEXT): V31Format.cpp ../IceStorm/V31Format.h $(includedir)/Ice/LocalObjectF.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Ice/Handle.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Ice/Config.h $(includedir)/Ice/ProxyHandle.h $(includedir)/Ice/ProxyF.h $(includedir)/Ice/ObjectF.h $(includedir)/Ice/GCCountMap.h $(includedir)/Ice/GCShared.h $(includedir)/Ice/Exception.h $(includedir)/Ice/LocalObject.h $(includedir)/Ice/Proxy.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/Ice/ProxyFactoryF.h $(includedir)/Ice/ConnectionIF.h $(includedir)/Ice/RequestHandlerF.h $(includedir)/Ice/EndpointIF.h $(includedir)/Ice/Endpoint.h $(includedir)/Ice/UndefSysMacros.h $(includedir)/Ice/ObjectAdapterF.h $(includedir)/Ice/ReferenceF.h $(includedir)/Ice/OutgoingAsyncF.h $(includedir)/Ice/Current.h $(includedir)/Ice/ConnectionF.h $(includedir)/Ice/Identity.h $(includedir)/Ice/StreamF.h $(includedir)/Ice/CommunicatorF.h $(includedir)/Ice/Object.h $(includedir)/Ice/IncomingAsyncF.h $(includedir)/Ice/Outgoing.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/Cond.h $(includedir)/Ice/InstanceF.h $(includedir)/Ice/BasicStream.h $(includedir)/Ice/ObjectFactoryF.h $(includedir)/Ice/Buffer.h $(includedir)/Ice/Protocol.h $(includedir)/Ice/StringConverter.h $(includedir)/Ice/Plugin.h $(includedir)/Ice/LoggerF.h $(includedir)/IceUtil/Unicode.h $(includedir)/Ice/OutgoingAsync.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/Thread.h $(includedir)/Ice/Incoming.h $(includedir)/Ice/ServantLocatorF.h $(includedir)/Ice/ServantManagerF.h $(includedir)/Ice/Direct.h $(includedir)/Ice/UserExceptionFactory.h $(includedir)/Ice/FactoryTableInit.h $(includedir)/Ice/FactoryTable.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Ice/UserExceptionFactoryF.h ../IceStorm/LinkRecord.h ../IceStorm/IceStormInternal.h $(includedir)/IceStorm/IceStorm.h $(includedir)/Ice/SliceChecksumDict.h ../IceStorm/Election.h $(includedir)/Ice/BuiltinSequences.h ../IceStorm/SubscriberRecord.h $(includedir)/Ice/LocalException.h $(includedir)/Ice/ObjectFactory.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/ScopedArray.h $(includedir)/IceUtil/DisableWarnings.h
IceStorm.cpp: $(slicedir)/IceStorm/IceStorm.ice $(slicedir)/Ice/SliceChecksumDict.ice $(slicedir)/Ice/Identity.ice
diff --git a/cpp/src/IceStorm/Admin.cpp b/cpp/src/IceStorm/Admin.cpp
index 5d642e4d288..e9eb985191f 100644
--- a/cpp/src/IceStorm/Admin.cpp
+++ b/cpp/src/IceStorm/Admin.cpp
@@ -43,10 +43,6 @@ Client::usage()
"Options:\n"
"-h, --help Show this message.\n"
"-v, --version Display the Ice version.\n"
- "-DNAME Define NAME as 1.\n"
- "-DNAME=DEF Define NAME as DEF.\n"
- "-UNAME Remove any definition for NAME.\n"
- "-IDIR Put DIR in the include file search path.\n"
"-e COMMANDS Execute COMMANDS.\n"
"-d, --debug Print debug messages.\n"
;
@@ -67,6 +63,9 @@ Client::run(int argc, char* argv[])
vector<string> args;
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
args = opts.parse(argc, (const char**)argv);
}
catch(const IceUtilInternal::BadOptException& e)
diff --git a/cpp/src/IceStorm/Makefile.mak b/cpp/src/IceStorm/Makefile.mak
index abd7abe4ef8..6294fbc5e03 100644
--- a/cpp/src/IceStorm/Makefile.mak
+++ b/cpp/src/IceStorm/Makefile.mak
@@ -90,7 +90,7 @@ APDBFLAGS = /pdb:$(ADMIN:.exe=.pdb)
MPDBFLAGS = /pdb:$(MIGRATE:.exe=.pdb)
!endif
-!if "$(CPP_COMPILER)" == "BCC2007"
+!if "$(BCPLUSPLUS)" == "yes"
RES_FILE = ,, IceStorm.res
SRES_FILE = ,, IceStormService.res
ARES_FILE = ,, IceStormAdmin.res
@@ -203,7 +203,7 @@ install:: all
copy $(MIGRATE) $(install_bindir)
-!if "$(CPP_COMPILER)" == "BCC2007" && "$(OPTIMIZE)" != "yes"
+!if "$(BCPLUSPLUS)" == "yes" && "$(OPTIMIZE)" != "yes"
install:: all
copy $(DLLNAME:.dll=.tds) $(install_bindir)
diff --git a/cpp/src/IceStorm/Service.cpp b/cpp/src/IceStorm/Service.cpp
index b6b1305d538..a6700d473a2 100644
--- a/cpp/src/IceStorm/Service.cpp
+++ b/cpp/src/IceStorm/Service.cpp
@@ -144,10 +144,17 @@ ServiceI::start(
TransientTopicManagerImplPtr manager = new TransientTopicManagerImpl(_instance);
_managerProxy = TopicManagerPrx::uncheckedCast(topicAdapter->add(manager, topicManagerId));
}
- catch(const Ice::Exception&)
+ catch(const Ice::Exception& ex)
{
_instance = 0;
- throw;
+
+ ostringstream s;
+ s << "exception while starting IceStorm service " << name << ":\n";
+ s << ex;
+
+ IceBox::FailureException e(__FILE__, __LINE__);
+ e.reason = s.str();
+ throw e;
}
topicAdapter->activate();
publishAdapter->activate();
@@ -163,10 +170,17 @@ ServiceI::start(
_manager = new TopicManagerImpl(_instance);
_managerProxy = TopicManagerPrx::uncheckedCast(topicAdapter->add(_manager->getServant(), topicManagerId));
}
- catch(const Ice::Exception&)
+ catch(const Ice::Exception& ex)
{
_instance = 0;
- throw;
+
+ ostringstream s;
+ s << "exception while starting IceStorm service " << name << ":\n";
+ s << ex;
+
+ IceBox::FailureException e(__FILE__, __LINE__);
+ e.reason = s.str();
+ throw e;
}
}
else
@@ -209,7 +223,7 @@ ServiceI::start(
Ice::Error error(communicator->getLogger());
error << "deployment error: `" << topicManagerAdapterId << "' prefix does not match `"
<< nodeAdapterId << "'";
- throw "IceGrid deployment is incorrect";
+ throw IceBox::FailureException(__FILE__, __LINE__, "IceGrid deployment is incorrect");
}
// Determine the set of node id and node proxies.
@@ -239,7 +253,7 @@ ServiceI::start(
{
Ice::Error error(communicator->getLogger());
error << "deployment error: `" << adapterid << "' does not start with `" << instanceName << "'";
- throw "IceGrid deployment is incorrect";
+ throw IceBox::FailureException(__FILE__, __LINE__, "IceGrid deployment is incorrect");
}
// The node id follows. We find the first digit (the
@@ -262,7 +276,7 @@ ServiceI::start(
Ice::Error error(communicator->getLogger());
error << "deployment error: node id does not follow instance name. instance name:"
<< instanceName << " adapter id: " << adapterid;
- throw "IceGrid deployment is incorrect";
+ throw IceBox::FailureException(__FILE__, __LINE__, "IceGrid deployment is incorrect");
}
int nodeid = atoi(adapterid.substr(start, end-start).c_str());
@@ -280,7 +294,7 @@ ServiceI::start(
{
Ice::Error error(communicator->getLogger());
error << "Replication requires at least 3 Nodes";
- throw "error";
+ throw IceBox::FailureException(__FILE__, __LINE__, "Replication requires at least 3 Nodes");
}
try
@@ -343,10 +357,17 @@ ServiceI::start(
node->start();
}
- catch(const Ice::Exception&)
+ catch(const Ice::Exception& ex)
{
_instance = 0;
- throw;
+
+ ostringstream s;
+ s << "exception while starting IceStorm service " << name << ":\n";
+ s << ex;
+
+ IceBox::FailureException e(__FILE__, __LINE__);
+ e.reason = s.str();
+ throw e;
}
}
@@ -378,10 +399,16 @@ ServiceI::start(const CommunicatorPtr& communicator,
TransientTopicManagerImplPtr manager = new TransientTopicManagerImpl(_instance);
_managerProxy = TopicManagerPrx::uncheckedCast(topicAdapter->add(manager, id));
}
- catch(const Ice::Exception&)
+ catch(const Ice::Exception& ex)
{
_instance = 0;
- throw;
+ ostringstream s;
+ s << "exception while starting IceStorm service " << name << ":\n";
+ s << ex;
+
+ IceBox::FailureException e(__FILE__, __LINE__);
+ e.reason = s.str();
+ throw e;
}
}
diff --git a/cpp/src/IceStorm/Subscriber.cpp b/cpp/src/IceStorm/Subscriber.cpp
index dc76ca5629b..db596d76f99 100644
--- a/cpp/src/IceStorm/Subscriber.cpp
+++ b/cpp/src/IceStorm/Subscriber.cpp
@@ -581,6 +581,9 @@ Subscriber::create(
Ice::ObjectPrx newObj;
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
newObj = rec.obj->ice_timeout(instance->sendTimeout());
}
catch(const Ice::FixedProxyException&)
diff --git a/cpp/src/IceUtil/Cond.cpp b/cpp/src/IceUtil/Cond.cpp
index 0b623a01507..34be360ef57 100644
--- a/cpp/src/IceUtil/Cond.cpp
+++ b/cpp/src/IceUtil/Cond.cpp
@@ -32,7 +32,7 @@ IceUtilInternal::Semaphore::~Semaphore()
void
IceUtilInternal::Semaphore::wait() const
{
- int rc = WaitForSingleObject(_sem, INFINITE);
+ DWORD rc = WaitForSingleObject(_sem, INFINITE);
if(rc != WAIT_OBJECT_0)
{
throw IceUtil::ThreadSyscallException(__FILE__, __LINE__, GetLastError());
@@ -48,7 +48,7 @@ IceUtilInternal::Semaphore::timedWait(const IceUtil::Time& timeout) const
throw IceUtil::InvalidTimeoutException(__FILE__, __LINE__, timeout);
}
- int rc = WaitForSingleObject(_sem, static_cast<DWORD>(msTimeout));
+ DWORD rc = WaitForSingleObject(_sem, static_cast<DWORD>(msTimeout));
if(rc != WAIT_TIMEOUT && rc != WAIT_OBJECT_0)
{
throw IceUtil::ThreadSyscallException(__FILE__, __LINE__, GetLastError());
diff --git a/cpp/src/IceUtil/Makefile.mak b/cpp/src/IceUtil/Makefile.mak
index 3a8cb2dffae..48982171f16 100644
--- a/cpp/src/IceUtil/Makefile.mak
+++ b/cpp/src/IceUtil/Makefile.mak
@@ -47,7 +47,7 @@ CPPFLAGS = $(CPPFLAGS) -DICE_UTIL_API_EXPORTS -I.. -DWIN32_LEAN_AND_MEAN
PDBFLAGS = /pdb:$(DLLNAME:.dll=.pdb)
!endif
-!if "$(CPP_COMPILER)" == "BCC2007"
+!if "$(BCPLUSPLUS)" == "yes"
RES_FILE = ,, IceUtil.res
!else
RES_FILE = IceUtil.res
@@ -81,7 +81,7 @@ install:: all
copy $(DLLNAME) $(install_bindir)
-!if "$(CPP_COMPILER)" == "BCC2007" && "$(OPTIMIZE)" != "yes"
+!if "$(BCPLUSPLUS)" == "yes" && "$(OPTIMIZE)" != "yes"
install:: all
copy $(DLLNAME:.dll=.tds) $(install_bindir)
diff --git a/cpp/src/IceUtil/StringUtil.cpp b/cpp/src/IceUtil/StringUtil.cpp
index 8965020fab8..a8499af2355 100644
--- a/cpp/src/IceUtil/StringUtil.cpp
+++ b/cpp/src/IceUtil/StringUtil.cpp
@@ -171,7 +171,6 @@ checkChar(char c)
static char
decodeChar(const string& s, string::size_type start, string::size_type end, string::size_type& nextStart)
{
- assert(start >= 0);
assert(start < end);
assert(end <= s.size());
@@ -282,10 +281,6 @@ static void decodeString(const string& s, string::size_type start, string::size_
bool
IceUtilInternal::unescapeString(const string& s, string::size_type start, string::size_type end, string& result)
{
- if(start < 0)
- {
- throw IllegalArgumentException(__FILE__, __LINE__, "start offset must be >= 0");
- }
if(end > s.size())
{
throw IllegalArgumentException(__FILE__, __LINE__, "end offset must be <= s.size()");
@@ -691,7 +686,8 @@ string
IceUtilInternal::toLower(const std::string& s)
{
string result;
- for(unsigned int i = 0; i < s.length(); ++ i)
+ result.reserve(s.size());
+ for(unsigned int i = 0; i < s.length(); ++i)
{
result += tolower(static_cast<unsigned char>(s[i]));
}
@@ -702,7 +698,8 @@ string
IceUtilInternal::toUpper(const std::string& s)
{
string result;
- for(unsigned int i = 0; i < s.length(); ++ i)
+ result.reserve(s.size());
+ for(unsigned int i = 0; i < s.length(); ++i)
{
result += toupper(static_cast<unsigned char>(s[i]));
}
diff --git a/cpp/src/IceUtil/Thread.cpp b/cpp/src/IceUtil/Thread.cpp
index d39014ae653..c04f6c07c33 100644
--- a/cpp/src/IceUtil/Thread.cpp
+++ b/cpp/src/IceUtil/Thread.cpp
@@ -58,7 +58,7 @@ IceUtil::ThreadControl::join()
throw BadThreadControlException(__FILE__, __LINE__);
}
- int rc = WaitForSingleObject(_handle, INFINITE);
+ DWORD rc = WaitForSingleObject(_handle, INFINITE);
if(rc != WAIT_OBJECT_0)
{
throw ThreadSyscallException(__FILE__, __LINE__, GetLastError());
diff --git a/cpp/src/IceXML/Makefile.mak b/cpp/src/IceXML/Makefile.mak
index 42499e663a8..f895b22440c 100644
--- a/cpp/src/IceXML/Makefile.mak
+++ b/cpp/src/IceXML/Makefile.mak
@@ -28,7 +28,7 @@ LINKWITH = $(EXPAT_LIBS) $(BASELIBS)
PDBFLAGS = /pdb:$(DLLNAME:.dll=.pdb)
!endif
-!if "$(CPP_COMPILER)" == "BCC2007"
+!if "$(BCPLUSPLUS)" == "yes"
RES_FILE = ,, IceXML.res
!else
RES_FILE = IceXML.res
@@ -51,7 +51,7 @@ install:: all
copy $(DLLNAME) $(install_bindir)
-!if "$(CPP_COMPILER)" == "BCC2007" && "$(OPTIMIZE)" != "yes"
+!if "$(BCPLUSPLUS)" == "yes" && "$(OPTIMIZE)" != "yes"
install:: all
copy $(DLLNAME:.dll=.tds) $(install_bindir)
diff --git a/cpp/src/Slice/.depend b/cpp/src/Slice/.depend
index ee89ffd647f..158e40d9aa2 100644
--- a/cpp/src/Slice/.depend
+++ b/cpp/src/Slice/.depend
@@ -2,13 +2,14 @@ Scanner$(OBJEXT): Scanner.cpp $(includedir)/IceUtil/Config.h ../Slice/GrammarUti
Grammar$(OBJEXT): ../Slice/Grammar.cpp ../Slice/GrammarUtil.h $(includedir)/Slice/Parser.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/UUID.h
Parser$(OBJEXT): Parser.cpp $(includedir)/IceUtil/Functional.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/InputUtil.h $(includedir)/IceUtil/StringUtil.h $(includedir)/IceUtil/Unicode.h $(includedir)/Slice/Parser.h $(includedir)/IceUtil/Shared.h ../Slice/GrammarUtil.h $(includedir)/Slice/Util.h
CPlusPlusUtil$(OBJEXT): CPlusPlusUtil.cpp $(includedir)/Slice/CPlusPlusUtil.h $(includedir)/Slice/Parser.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/OutputUtil.h $(includedir)/Slice/Util.h
-CsUtil$(OBJEXT): CsUtil.cpp $(includedir)/Slice/CsUtil.h $(includedir)/Slice/Parser.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/OutputUtil.h $(includedir)/Slice/DotNetNames.h $(includedir)/IceUtil/Functional.h
-JavaUtil$(OBJEXT): JavaUtil.cpp $(includedir)/Slice/JavaUtil.h $(includedir)/Slice/Parser.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/OutputUtil.h $(includedir)/IceUtil/Functional.h
+CsUtil$(OBJEXT): CsUtil.cpp $(includedir)/Slice/CsUtil.h $(includedir)/Slice/Parser.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/OutputUtil.h $(includedir)/Slice/DotNetNames.h $(includedir)/Slice/Util.h $(includedir)/IceUtil/Functional.h
+JavaUtil$(OBJEXT): JavaUtil.cpp $(includedir)/IceUtil/DisableWarnings.h $(includedir)/Slice/JavaUtil.h $(includedir)/Slice/Parser.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/OutputUtil.h $(includedir)/Slice/FileTracker.h $(includedir)/Slice/Util.h $(includedir)/IceUtil/Functional.h
Preprocessor$(OBJEXT): Preprocessor.cpp $(includedir)/IceUtil/DisableWarnings.h $(includedir)/Slice/Preprocessor.h $(includedir)/IceUtil/Config.h $(includedir)/Slice/Util.h $(includedir)/Slice/Parser.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/StringUtil.h $(includedir)/IceUtil/FileUtil.h $(includedir)/IceUtil/UUID.h $(includedir)/IceUtil/Unicode.h
Checksum$(OBJEXT): Checksum.cpp $(includedir)/Slice/Checksum.h $(includedir)/Slice/Parser.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h ../Slice/MD5.h
PythonUtil$(OBJEXT): PythonUtil.cpp $(includedir)/Slice/PythonUtil.h $(includedir)/Slice/Parser.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/OutputUtil.h $(includedir)/Slice/Checksum.h $(includedir)/Slice/Util.h $(includedir)/IceUtil/IceUtil.h $(includedir)/IceUtil/AbstractMutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Cache.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/CountDownLatch.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/CtrlCHandler.h $(includedir)/IceUtil/Functional.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/RWRecMutex.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/UUID.h $(includedir)/IceUtil/Unicode.h $(includedir)/IceUtil/StringUtil.h $(includedir)/IceUtil/InputUtil.h
DotNetNames$(OBJEXT): DotNetNames.cpp $(includedir)/Slice/DotNetNames.h
RubyUtil$(OBJEXT): RubyUtil.cpp $(includedir)/Slice/RubyUtil.h $(includedir)/Slice/Parser.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/OutputUtil.h $(includedir)/Slice/Checksum.h $(includedir)/Slice/Util.h $(includedir)/IceUtil/Functional.h $(includedir)/IceUtil/InputUtil.h
-Util$(OBJEXT): Util.cpp $(includedir)/Slice/Util.h $(includedir)/Slice/Parser.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Unicode.h $(includedir)/IceUtil/FileUtil.h
+Util$(OBJEXT): Util.cpp $(includedir)/Slice/Util.h $(includedir)/Slice/Parser.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Unicode.h $(includedir)/IceUtil/FileUtil.h $(includedir)/IceUtil/StringUtil.h
+FileTracker$(OBJEXT): FileTracker.cpp $(includedir)/Slice/FileTracker.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/Slice/Parser.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h
MD5$(OBJEXT): MD5.cpp ../Slice/MD5.h $(includedir)/IceUtil/Config.h ../Slice/MD5I.h
MD5I$(OBJEXT): MD5I.cpp ../Slice/MD5I.h
diff --git a/cpp/src/Slice/CPlusPlusUtil.cpp b/cpp/src/Slice/CPlusPlusUtil.cpp
index 6997b9b436c..507faac36dc 100644
--- a/cpp/src/Slice/CPlusPlusUtil.cpp
+++ b/cpp/src/Slice/CPlusPlusUtil.cpp
@@ -59,7 +59,8 @@ Slice::printVersionCheck(Output& out)
{
out << "\n";
out << "\n#ifndef ICE_IGNORE_VERSION";
- if(ICE_INT_VERSION % 100 > 50)
+ int iceVersion = ICE_INT_VERSION; // Use this to prevent warning with C++Builder
+ if(iceVersion % 100 > 50)
{
//
// Beta version: exact match required
@@ -215,6 +216,13 @@ Slice::typeToString(const TypePtr& type, bool useWstring, const StringList& meta
}
else
{
+ // Get the metadata associated at the point of definition.
+ bool protobuf;
+ seqType = findMetaData(seq, seq->getMetaData(), true, protobuf);
+ if(protobuf && !seqType.empty())
+ {
+ return seqType;
+ }
return fixKwd(seq->scoped());
}
}
@@ -348,6 +356,13 @@ Slice::inputTypeToString(const TypePtr& type, bool useWstring, const StringList&
}
else
{
+ // Get the metadata associated at the point of definition.
+ bool protobuf;
+ seqType = findMetaData(seq, seq->getMetaData(), true, protobuf);
+ if(protobuf && !seqType.empty())
+ {
+ return "const " + seqType + "&";
+ }
return "const " + fixKwd(seq->scoped()) + "&";
}
}
@@ -432,6 +447,12 @@ Slice::outputTypeToString(const TypePtr& type, bool useWstring, const StringList
}
else
{
+ bool protobuf;
+ seqType = findMetaData(seq, seq->getMetaData(), true, protobuf);
+ if(protobuf && !seqType.empty())
+ {
+ return seqType + "&";
+ }
return fixKwd(seq->scoped()) + "&";
}
}
@@ -679,6 +700,7 @@ Slice::writeMarshalUnmarshalCode(Output& out, const TypePtr& type, const string&
if(marshal)
{
string scope = fixKwd(seq->scope());
+
if(seqType == "array" || seqType == "range:array")
{
//
@@ -758,11 +780,13 @@ Slice::writeMarshalUnmarshalCode(Output& out, const TypePtr& type, const string&
else
{
//
- // No modifying metadata specified. Use appropriate write methods for type.
+ // No modifying metadata specified. Use appropriate
+ // write methods for type.
//
StringList l = seq->getMetaData();
- seqType = findMetaData(l, false);
- if(!seqType.empty())
+ bool protobuf;
+ seqType = findMetaData(seq, l, false, protobuf);
+ if(protobuf || !seqType.empty())
{
out << nl << scope << "__" << funcSeq << (pointer ? "" : "&") << stream << ", " << fixedParam
<< ");";
@@ -911,12 +935,14 @@ Slice::writeMarshalUnmarshalCode(Output& out, const TypePtr& type, const string&
else
{
//
- // No modifying metadata supplied. Just use appropriate read function.
+ // No modifying metadata supplied. Just use
+ // appropriate read function.
//
StringList l = seq->getMetaData();
- seqType = findMetaData(l, false);
- if(!seqType.empty() || !builtin || builtin->kind() == Builtin::KindObject ||
- builtin->kind() == Builtin::KindObjectProxy)
+ bool protobuf;
+ seqType = findMetaData(seq, l, false, protobuf);
+ if(protobuf || !seqType.empty() || !builtin || builtin->kind() == Builtin::KindObject ||
+ builtin->kind() == Builtin::KindObjectProxy)
{
out << nl << scope << "__" << funcSeq << (pointer ? "" : "&") << stream << ", "
<< fixedParam << ");";
@@ -1019,8 +1045,13 @@ writeRangeAllocateCode(Output& out, const TypePtr& type, const string& fixedName
SequencePtr seq = SequencePtr::dynamicCast(type);
if(seq)
{
- string seqType = findMetaData(metaData, true);
- if(seqType.find("range") == 0 && seqType != "range:array")
+ bool protobuf;
+ string seqType = findMetaData(seq, metaData, true, protobuf);
+ if(!protobuf && seqType.empty())
+ {
+ seqType = findMetaData(seq, seq->getMetaData(), true, protobuf);
+ }
+ if(!protobuf && seqType.find("range") == 0 && seqType != "range:array")
{
StringList md;
if(seqType.find("range:") == 0)
@@ -1305,9 +1336,10 @@ Slice::writeStreamMarshalUnmarshalCode(Output& out, const TypePtr& type, const s
}
else
{
- seqType = findMetaData(seq->getMetaData(), false);
+ bool protobuf;
+ seqType = findMetaData(seq, seq->getMetaData(), false, protobuf);
builtin = BuiltinPtr::dynamicCast(seq->type());
- if(!seqType.empty() || !builtin || (builtin->kind() == Builtin::KindObject ||
+ if(protobuf || !seqType.empty() || !builtin || (builtin->kind() == Builtin::KindObject ||
builtin->kind() == Builtin::KindObjectProxy))
{
string scope = fixKwd(seq->scope());
@@ -1501,6 +1533,95 @@ Slice::writeStreamMarshalUnmarshalCode(Output& out, const TypePtr& type, const s
assert(false);
}
+// Accepted metadata.
+//
+// cpp:type:<typename>
+// cpp:const
+// cpp:array
+// cpp:range:<typename>
+// cpp:protobuf<:typename>
+//
+
+// This form is for sequences definitions only.
+string
+Slice::findMetaData(const SequencePtr& seq, const StringList& metaData, bool inParam, bool& isProtobuf)
+{
+ isProtobuf = false;
+ static const string prefix = "cpp:";
+ for(StringList::const_iterator q = metaData.begin(); q != metaData.end(); ++q)
+ {
+ string str = *q;
+ if(str.find(prefix) == 0)
+ {
+ string::size_type pos = str.find(':', prefix.size());
+ string ss;
+ if(pos == string::npos)
+ {
+ ss = str.substr(prefix.size());
+ }
+ else
+ {
+ ss = str.substr(prefix.size(), pos - prefix.size());
+ }
+ //
+ // If the form is cpp:type:<...> the data after cpp:type:
+ // is returned. If the form is cpp:range:<...> (and this
+ // is an inParam) the data after cpp: is returned.
+ //
+ if(ss == "protobuf" || pos != string::npos)
+ {
+ string ss = str.substr(prefix.size(), pos - prefix.size());
+ if(ss == "type")
+ {
+ return str.substr(pos + 1);
+ }
+ else if(ss == "protobuf")
+ {
+ BuiltinPtr builtin = BuiltinPtr::dynamicCast(seq->type());
+ if(!builtin || builtin->kind() != Builtin::KindByte)
+ {
+ continue;
+ }
+ isProtobuf = true;
+ if(pos != string::npos)
+ {
+ return str.substr(pos + 1);
+ }
+ return "";
+ }
+ else if(inParam && ss == "range")
+ {
+ return str.substr(prefix.size());
+ }
+ }
+ //
+ // If the data is an inParam and the metadata is cpp:array
+ // or cpp:range then array or range is returned.
+ //
+ else if(inParam)
+ {
+ if(ss == "array" || ss == "range")
+ {
+ return ss;
+ }
+ }
+ //
+ // Otherwise if the data is "class" it is returned.
+ //
+ else
+ {
+ if(ss == "class")
+ {
+ return ss;
+ }
+ }
+ }
+ }
+
+ return "";
+}
+
+// Does not handle cpp:protobuf
string
Slice::findMetaData(const StringList& metaData, bool inParam)
{
diff --git a/cpp/src/Slice/CsUtil.cpp b/cpp/src/Slice/CsUtil.cpp
index ae8c6e667cc..2f656872638 100644
--- a/cpp/src/Slice/CsUtil.cpp
+++ b/cpp/src/Slice/CsUtil.cpp
@@ -9,6 +9,7 @@
#include <Slice/CsUtil.h>
#include <Slice/DotNetNames.h>
+#include <Slice/Util.h>
#include <IceUtil/Functional.h>
#include <sys/types.h>
@@ -213,6 +214,13 @@ Slice::CsGenerator::typeToString(const TypePtr& type)
}
}
+ prefix = "clr:serializable:";
+ if(seq->findMetaData(prefix, meta))
+ {
+ string type = meta.substr(prefix.size());
+ return global() + type;
+ }
+
return typeToString(seq->type()) + "[]";
}
@@ -887,6 +895,21 @@ Slice::CsGenerator::writeSequenceMarshalUnmarshalCode(Output& out,
}
default:
{
+ string prefix = "clr:serializable:";
+ string meta;
+ if(seq->findMetaData(prefix, meta))
+ {
+ if(marshal)
+ {
+ out << nl << stream << ".writeSerializable(" << param << ");";
+ }
+ else
+ {
+ out << nl << param << " = (" << typeToString(seq) << ")" << stream << ".readSerializable();";
+ }
+ break;
+ }
+
typeS[0] = toupper(static_cast<unsigned char>(typeS[0]));
if(marshal)
{
@@ -1500,42 +1523,52 @@ Slice::CsGenerator::validateMetaData(const UnitPtr& u)
u->visit(&visitor, true);
}
-Slice::CsGenerator::MetaDataVisitor::MetaDataVisitor()
- : _globalMetaDataDone(false)
-{
-}
-
bool
-Slice::CsGenerator::MetaDataVisitor::visitModuleStart(const ModulePtr& p)
+Slice::CsGenerator::MetaDataVisitor::visitUnitStart(const UnitPtr& p)
{
- if(!_globalMetaDataDone)
+ //
+ // Validate global metadata in the top-level file and all included files.
+ //
+ StringList files = p->allFiles();
+
+ for(StringList::iterator q = files.begin(); q != files.end(); ++q)
{
- //
- // Validate global metadata.
- //
- DefinitionContextPtr dc = p->definitionContext();
+ string file = *q;
+ DefinitionContextPtr dc = p->findDefinitionContext(file);
assert(dc);
StringList globalMetaData = dc->getMetaData();
- string file = dc->filename();
- static const string prefix = "cs:";
- for(StringList::const_iterator q = globalMetaData.begin(); q != globalMetaData.end(); ++q)
+
+ static const string csPrefix = "cs:";
+ static const string clrPrefix = "clr:";
+ for(StringList::const_iterator r = globalMetaData.begin(); r != globalMetaData.end(); ++r)
{
- string s = *q;
+ string s = *r;
if(_history.count(s) == 0)
{
- if(s.find(prefix) == 0)
+ if(s.find(csPrefix) == 0)
{
- static const string attributePrefix = "cs:attribute:";
- if(s.find(attributePrefix) != 0 || s.size() == attributePrefix.size())
+ static const string csAttributePrefix = csPrefix + "attribute:";
+ if(s.find(csAttributePrefix) == 0 && s.size() > csAttributePrefix.size())
{
- cerr << file << ": warning: ignoring invalid global metadata `" << s << "'" << endl;
+ continue;
}
+ emitWarning(file, -1, "ignoring invalid global metadata `" + s + "'");
+ _history.insert(s);
+ }
+ else if(s.find(clrPrefix) == 0)
+ {
+ emitWarning(file, -1, "ignoring invalid global metadata `" + s + "'");
+ _history.insert(s);
}
- _history.insert(s);
}
}
- _globalMetaDataDone = true;
}
+ return true;
+}
+
+bool
+Slice::CsGenerator::MetaDataVisitor::visitModuleStart(const ModulePtr& p)
+{
validate(p);
return true;
}
@@ -1595,13 +1628,20 @@ Slice::CsGenerator::MetaDataVisitor::visitOperation(const OperationPtr& p)
ClassDefPtr cl = ClassDefPtr::dynamicCast(p->container());
if(!cl->isLocal())
{
- cerr << p->definitionContext()->filename() << ":" << p->line()
- << ": warning: metdata directive `UserException' applies only to local operations "
- << "but enclosing " << (cl->isInterface() ? "interface" : "class") << "`" << cl->name()
- << "' is not local" << endl;
+ ostringstream os;
+ os << "ignoring invalid metadata `UserException': directive applies only to local operations "
+ << "but enclosing " << (cl->isInterface() ? "interface" : "class") << "`" << cl->name()
+ << "' is not local";
+ emitWarning(p->file(), p->line(), os.str());
}
}
validate(p);
+
+ ParamDeclList params = p->parameters();
+ for(ParamDeclList::const_iterator i = params.begin(); i != params.end(); ++i)
+ {
+ visitParamDecl(*i);
+ }
}
void
@@ -1645,15 +1685,9 @@ Slice::CsGenerator::MetaDataVisitor::validate(const ContainedPtr& cont)
{
const string msg = "ignoring invalid metadata";
- DefinitionContextPtr dc = cont->definitionContext();
- assert(dc);
- string file = dc->filename();
-
StringList localMetaData = cont->getMetaData();
- StringList::const_iterator p;
-
- for(p = localMetaData.begin(); p != localMetaData.end(); ++p)
+ for(StringList::const_iterator p = localMetaData.begin(); p != localMetaData.end(); ++p)
{
string s = *p;
@@ -1669,9 +1703,10 @@ Slice::CsGenerator::MetaDataVisitor::validate(const ContainedPtr& cont)
{
continue;
}
- if(s.substr(prefix.size(), 8) == "generic:")
+ static const string clrGenericPrefix = prefix + "generic:";
+ if(s.find(clrGenericPrefix) == 0)
{
- string type = s.substr(prefix.size() + 8);
+ string type = s.substr(clrGenericPrefix.size());
if(type == "LinkedList" || type == "Queue" || type == "Stack")
{
ClassDeclPtr cd = ClassDeclPtr::dynamicCast(seq->type());
@@ -1686,6 +1721,23 @@ Slice::CsGenerator::MetaDataVisitor::validate(const ContainedPtr& cont)
continue; // Custom type or List<T>
}
}
+ static const string clrSerializablePrefix = prefix + "serializable:";
+ if(s.find(clrSerializablePrefix) == 0)
+ {
+ string meta;
+ if(cont->findMetaData(prefix + "collection", meta)
+ || cont->findMetaData(prefix + "generic:", meta))
+ {
+ emitWarning(cont->file(), cont->line(), msg + " `" + meta + "':\n" +
+ "serialization can only be used with the array mapping for byte sequences");
+ }
+ string type = s.substr(clrSerializablePrefix.size());
+ BuiltinPtr builtin = BuiltinPtr::dynamicCast(seq->type());
+ if(!type.empty() && builtin && builtin->kind() == Builtin::KindByte)
+ {
+ continue;
+ }
+ }
}
else if(StructPtr::dynamicCast(cont))
{
@@ -1711,18 +1763,19 @@ Slice::CsGenerator::MetaDataVisitor::validate(const ContainedPtr& cont)
{
continue;
}
- if(s.substr(prefix.size(), 8) == "generic:")
+ static const string clrGenericPrefix = prefix + "generic:";
+ if(s.find(clrGenericPrefix) == 0)
{
- string type = s.substr(prefix.size() + 8);
+ string type = s.substr(clrGenericPrefix.size());
if(type == "SortedDictionary" || type == "SortedList")
{
continue;
}
}
}
- cerr << file << ":" << cont->line() << ": warning: " << msg << " `" << s << "'" << endl;
+ emitWarning(cont->file(), cont->line(), msg + " `" + s + "'");
+ _history.insert(s);
}
- _history.insert(s);
}
prefix = "cs:";
@@ -1730,13 +1783,14 @@ Slice::CsGenerator::MetaDataVisitor::validate(const ContainedPtr& cont)
{
if(s.find(prefix) == 0)
{
- if(s.substr(prefix.size()) == "attribute:")
+ static const string csAttributePrefix = prefix + "attribute:";
+ if(s.find(csAttributePrefix) == 0 && s.size() > csAttributePrefix.size())
{
continue;
}
- cerr << file << ":" << cont->line() << ": warning: " << msg << " `" << s << "'" << endl;
+ emitWarning(cont->file(), cont->line(), msg + " `" + s + "'");
+ _history.insert(s);
}
- _history.insert(s);
}
}
}
diff --git a/cpp/src/Slice/FileTracker.cpp b/cpp/src/Slice/FileTracker.cpp
index 43d9632ad17..2d4ce2293e4 100644
--- a/cpp/src/Slice/FileTracker.cpp
+++ b/cpp/src/Slice/FileTracker.cpp
@@ -9,6 +9,10 @@
#include <Slice/FileTracker.h>
+#ifdef __sun
+# include <unistd.h>
+#endif
+
#ifdef _WIN32
# include <direct.h>
#endif
@@ -36,7 +40,11 @@ Slice::FileException::ice_name() const
void
Slice::FileException::ice_print(ostream& out) const
{
+#if defined(_MSC_VER) && (_MSC_VER < 1300)
+ Exception::ice_print(out);
+#else
IceUtil::Exception::ice_print(out);
+#endif
out << ": " << _reason;
}
@@ -61,7 +69,8 @@ Slice::FileException::reason() const
static Slice::FileTrackerPtr Instance;
-Slice::FileTracker::FileTracker()
+Slice::FileTracker::FileTracker() :
+ _curr(_generated.end())
{
}
@@ -81,9 +90,33 @@ Slice::FileTracker::instance()
}
void
+Slice::FileTracker::setSource(const string& source)
+{
+ _source = source;
+ pair<map<string, list<string> >::iterator, bool> p = _generated.insert(make_pair(source, list<string>()));
+ assert(p.second);
+ _curr = p.first;
+}
+
+void
+Slice::FileTracker::setOutput(const string& output, bool error)
+{
+ assert(!_source.empty());
+ _errors.insert(make_pair(_source, output));
+ if(error)
+ {
+ _curr = _generated.end();
+ }
+}
+
+void
Slice::FileTracker::addFile(const string& file)
{
_files.push_front(make_pair(file, false));
+ if(_curr != _generated.end())
+ {
+ _curr->second.push_back(file);
+ }
}
void
@@ -115,3 +148,62 @@ Slice::FileTracker::cleanup()
}
}
}
+
+void
+Slice::FileTracker::dumpxml()
+{
+ cout << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" << endl;
+
+ cout << "<generated>" << endl;
+ for(map<string, string>::const_iterator p = _errors.begin(); p != _errors.end(); ++p)
+ {
+ cout << " <source name=\"" << p->first << "\"";
+
+ map<string, list<string> >::const_iterator q = _generated.find(p->first);
+ if(q == _generated.end())
+ {
+ cout << " error=\"true\">" << endl;
+ }
+ else
+ {
+ cout << ">" << endl;
+ for(list<string>::const_iterator r = q->second.begin(); r != q->second.end(); ++r)
+ {
+ cout << " <file name=\"" << *r << "\"/>" << endl;
+ }
+ }
+ cout << " <output>" << escape(p->second) << "</output>" << endl;
+ cout << " </source>" << endl;
+ }
+ cout << "</generated>" << endl;
+}
+
+string
+Slice::FileTracker::escape(const string& str) const
+{
+ ostringstream ostr;
+
+ for(string::const_iterator p = str.begin(); p != str.end(); ++p)
+ {
+ switch(*p)
+ {
+ case '<':
+ ostr << "&lt;";
+ break;
+ case '>':
+ ostr << "&gt;";
+ break;
+ case '&':
+ ostr << "&amp;";
+ break;
+ case '"':
+ ostr << "&quot;";
+ break;
+ default:
+ ostr << *p;
+ break;
+ }
+ }
+
+ return ostr.str();
+}
diff --git a/cpp/src/Slice/Grammar.cpp b/cpp/src/Slice/Grammar.cpp
index 9d94b2eae25..ae2b63f51c1 100644
--- a/cpp/src/Slice/Grammar.cpp
+++ b/cpp/src/Slice/Grammar.cpp
@@ -1,7 +1,9 @@
-/* A Bison parser, made by GNU Bison 1.875c. */
+/* A Bison parser, made by GNU Bison 2.3. */
-/* Skeleton parser for Yacc-like parsing with Bison,
- Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+/* Skeleton implementation for Bison's Yacc-like parsers in C
+
+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+ Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -15,16 +17,24 @@
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA. */
+
+/* As a special exception, you may create a larger work that contains
+ part or all of the Bison parser skeleton and distribute that work
+ under terms of your choice, so long as that work isn't itself a
+ parser generator using the skeleton or a modified version thereof
+ as a parser skeleton. Alternatively, if you modify or redistribute
+ the parser skeleton itself, you may (at your option) remove this
+ special exception, which will cause the skeleton and the resulting
+ Bison output files to be licensed under the GNU General Public
+ License without this special exception.
-/* As a special exception, when this file is copied by Bison into a
- Bison output file, you may use that output file without restriction.
- This special exception was added by the Free Software Foundation
- in version 1.24 of Bison. */
+ This special exception was added by the Free Software Foundation in
+ version 2.2 of Bison. */
-/* Written by Richard Stallman by simplifying the original so called
- ``semantic'' parser. */
+/* C LALR(1) parser skeleton written by Richard Stallman, by
+ simplifying the original so-called "semantic" parser. */
/* All symbols defined below should begin with yy or YY, to avoid
infringing on user name space. This should be done even for local
@@ -36,6 +46,9 @@
/* Identify Bison output. */
#define YYBISON 1
+/* Bison version. */
+#define YYBISON_VERSION "2.3"
+
/* Skeleton name. */
#define YYSKELETON_NAME "yacc.c"
@@ -45,8 +58,7 @@
/* Using locations. */
#define YYLSP_NEEDED 0
-/* If NAME_PREFIX is specified substitute the variables and functions
- names. */
+/* Substitute the variable and function names. */
#define yyparse slice_parse
#define yylex slice_lex
#define yyerror slice_error
@@ -105,6 +117,7 @@
BAD_CHAR = 298
};
#endif
+/* Tokens. */
#define ICE_MODULE 258
#define ICE_CLASS 259
#define ICE_INTERFACE 260
@@ -151,7 +164,7 @@
/* Copy the first part of user declarations. */
-#line 1 "../Slice/Grammar.y"
+#line 1 "Grammar.y"
// **********************************************************************
@@ -209,7 +222,12 @@ slice_error(const char* s)
# define YYERROR_VERBOSE 0
#endif
-#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
+/* Enabling the token table. */
+#ifndef YYTOKEN_TABLE
+# define YYTOKEN_TABLE 0
+#endif
+
+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
typedef int YYSTYPE;
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
@@ -221,56 +239,171 @@ typedef int YYSTYPE;
/* Copy the second part of user declarations. */
-/* Line 214 of yacc.c. */
-#line 226 "Grammar.tab.c"
+/* Line 216 of yacc.c. */
+#line 244 "Grammar.tab.c"
+
+#ifdef short
+# undef short
+#endif
+
+#ifdef YYTYPE_UINT8
+typedef YYTYPE_UINT8 yytype_uint8;
+#else
+typedef unsigned char yytype_uint8;
+#endif
+
+#ifdef YYTYPE_INT8
+typedef YYTYPE_INT8 yytype_int8;
+#elif (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+typedef signed char yytype_int8;
+#else
+typedef short int yytype_int8;
+#endif
-#if ! defined (yyoverflow) || YYERROR_VERBOSE
+#ifdef YYTYPE_UINT16
+typedef YYTYPE_UINT16 yytype_uint16;
+#else
+typedef unsigned short int yytype_uint16;
+#endif
-# ifndef YYFREE
-# define YYFREE free
+#ifdef YYTYPE_INT16
+typedef YYTYPE_INT16 yytype_int16;
+#else
+typedef short int yytype_int16;
+#endif
+
+#ifndef YYSIZE_T
+# ifdef __SIZE_TYPE__
+# define YYSIZE_T __SIZE_TYPE__
+# elif defined size_t
+# define YYSIZE_T size_t
+# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T size_t
+# else
+# define YYSIZE_T unsigned int
# endif
-# ifndef YYMALLOC
-# define YYMALLOC malloc
+#endif
+
+#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
+
+#ifndef YY_
+# if YYENABLE_NLS
+# if ENABLE_NLS
+# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
+# define YY_(msgid) dgettext ("bison-runtime", msgid)
+# endif
+# endif
+# ifndef YY_
+# define YY_(msgid) msgid
# endif
+#endif
+
+/* Suppress unused-variable warnings by "using" E. */
+#if ! defined lint || defined __GNUC__
+# define YYUSE(e) ((void) (e))
+#else
+# define YYUSE(e) /* empty */
+#endif
+
+/* Identity function, used to suppress warnings about constant conditions. */
+#ifndef lint
+# define YYID(n) (n)
+#else
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static int
+YYID (int i)
+#else
+static int
+YYID (i)
+ int i;
+#endif
+{
+ return i;
+}
+#endif
+
+#if ! defined yyoverflow || YYERROR_VERBOSE
/* The parser invokes alloca or malloc; define the necessary symbols. */
# ifdef YYSTACK_USE_ALLOCA
# if YYSTACK_USE_ALLOCA
-# define YYSTACK_ALLOC alloca
-# endif
-# else
-# if defined (alloca) || defined (_ALLOCA_H)
-# define YYSTACK_ALLOC alloca
-# else
# ifdef __GNUC__
# define YYSTACK_ALLOC __builtin_alloca
+# elif defined __BUILTIN_VA_ARG_INCR
+# include <alloca.h> /* INFRINGES ON USER NAME SPACE */
+# elif defined _AIX
+# define YYSTACK_ALLOC __alloca
+# elif defined _MSC_VER
+# include <malloc.h> /* INFRINGES ON USER NAME SPACE */
+# define alloca _alloca
+# else
+# define YYSTACK_ALLOC alloca
+# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+# ifndef _STDLIB_H
+# define _STDLIB_H 1
+# endif
+# endif
# endif
# endif
# endif
# ifdef YYSTACK_ALLOC
- /* Pacify GCC's `empty if-body' warning. */
-# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
-# else
-# if defined (__STDC__) || defined (__cplusplus)
-# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-# define YYSIZE_T size_t
+ /* Pacify GCC's `empty if-body' warning. */
+# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
+# ifndef YYSTACK_ALLOC_MAXIMUM
+ /* The OS might guarantee only one guard page at the bottom of the stack,
+ and a page size can be as small as 4096 bytes. So we cannot safely
+ invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
+ to allow for a few compiler-allocated temporary stack slots. */
+# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
# endif
+# else
# define YYSTACK_ALLOC YYMALLOC
# define YYSTACK_FREE YYFREE
+# ifndef YYSTACK_ALLOC_MAXIMUM
+# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
+# endif
+# if (defined __cplusplus && ! defined _STDLIB_H \
+ && ! ((defined YYMALLOC || defined malloc) \
+ && (defined YYFREE || defined free)))
+# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+# ifndef _STDLIB_H
+# define _STDLIB_H 1
+# endif
+# endif
+# ifndef YYMALLOC
+# define YYMALLOC malloc
+# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
+# endif
+# endif
+# ifndef YYFREE
+# define YYFREE free
+# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+void free (void *); /* INFRINGES ON USER NAME SPACE */
+# endif
+# endif
# endif
-#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
+#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
-#if (! defined (yyoverflow) \
- && (! defined (__cplusplus) \
- || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
+#if (! defined yyoverflow \
+ && (! defined __cplusplus \
+ || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
/* A type that is properly aligned for any stack member. */
union yyalloc
{
- short yyss;
+ yytype_int16 yyss;
YYSTYPE yyvs;
};
@@ -280,24 +413,24 @@ union yyalloc
/* The size of an array large to enough to hold all stacks, each with
N elements. */
# define YYSTACK_BYTES(N) \
- ((N) * (sizeof (short) + sizeof (YYSTYPE)) \
+ ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+ YYSTACK_GAP_MAXIMUM)
/* Copy COUNT objects from FROM to TO. The source and destination do
not overlap. */
# ifndef YYCOPY
-# if defined (__GNUC__) && 1 < __GNUC__
+# if defined __GNUC__ && 1 < __GNUC__
# define YYCOPY(To, From, Count) \
__builtin_memcpy (To, From, (Count) * sizeof (*(From)))
# else
# define YYCOPY(To, From, Count) \
do \
{ \
- register YYSIZE_T yyi; \
+ YYSIZE_T yyi; \
for (yyi = 0; yyi < (Count); yyi++) \
(To)[yyi] = (From)[yyi]; \
} \
- while (0)
+ while (YYID (0))
# endif
# endif
@@ -315,39 +448,33 @@ union yyalloc
yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
yyptr += yynewbytes / sizeof (*yyptr); \
} \
- while (0)
+ while (YYID (0))
#endif
-#if defined (__STDC__) || defined (__cplusplus)
- typedef signed char yysigned_char;
-#else
- typedef short yysigned_char;
-#endif
-
-/* YYFINAL -- State number of the termination state. */
+/* YYFINAL -- State number of the termination state. */
#define YYFINAL 13
/* YYLAST -- Last index in YYTABLE. */
#define YYLAST 775
-/* YYNTOKENS -- Number of terminals. */
+/* YYNTOKENS -- Number of terminals. */
#define YYNTOKENS 53
-/* YYNNTS -- Number of nonterminals. */
+/* YYNNTS -- Number of nonterminals. */
#define YYNNTS 67
-/* YYNRULES -- Number of rules. */
+/* YYNRULES -- Number of rules. */
#define YYNRULES 184
-/* YYNRULES -- Number of states. */
+/* YYNRULES -- Number of states. */
#define YYNSTATES 269
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
#define YYUNDEFTOK 2
#define YYMAXUTOK 298
-#define YYTRANSLATE(YYX) \
+#define YYTRANSLATE(YYX) \
((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
-static const unsigned char yytranslate[] =
+static const yytype_uint8 yytranslate[] =
{
0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -384,7 +511,7 @@ static const unsigned char yytranslate[] =
#if YYDEBUG
/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
YYRHS. */
-static const unsigned short yyprhs[] =
+static const yytype_uint16 yyprhs[] =
{
0, 0, 3, 5, 9, 13, 14, 15, 19, 20,
26, 27, 32, 35, 36, 38, 40, 42, 44, 46,
@@ -407,8 +534,8 @@ static const unsigned short yyprhs[] =
521, 523, 525, 527, 529
};
-/* YYRHS -- A `-1'-separated list of the rules' RHS. */
-static const yysigned_char yyrhs[] =
+/* YYRHS -- A `-1'-separated list of the rules' RHS. */
+static const yytype_int8 yyrhs[] =
{
54, 0, -1, 57, -1, 41, 115, 42, -1, 39,
115, 40, -1, -1, -1, 55, 58, 57, -1, -1,
@@ -467,11 +594,11 @@ static const yysigned_char yyrhs[] =
};
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
-static const unsigned short yyrline[] =
+static const yytype_uint16 yyrline[] =
{
0, 105, 105, 113, 122, 127, 136, 135, 145, 144,
- 156, 155, 160, 165, 172, 176, 180, 184, 188, 192,
- 196, 200, 204, 208, 212, 216, 220, 230, 229, 262,
+ 155, 154, 159, 164, 171, 175, 179, 183, 187, 191,
+ 195, 199, 203, 207, 211, 215, 219, 229, 228, 262,
266, 277, 288, 287, 314, 323, 331, 340, 343, 348,
355, 368, 374, 378, 389, 400, 399, 435, 444, 447,
452, 459, 465, 469, 480, 494, 493, 533, 568, 576,
@@ -491,9 +618,9 @@ static const unsigned short yyrline[] =
};
#endif
-#if YYDEBUG || YYERROR_VERBOSE
-/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
- First, the terminals, then, starting at YYNTOKENS, nonterminals. */
+#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+ First, the terminals, then, starting at YYNTOKENS, nonterminals. */
static const char *const yytname[] =
{
"$end", "error", "$undefined", "ICE_MODULE", "ICE_CLASS",
@@ -528,7 +655,7 @@ static const char *const yytname[] =
# ifdef YYPRINT
/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
token YYLEX-NUM. */
-static const unsigned short yytoknum[] =
+static const yytype_uint16 yytoknum[] =
{
0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
@@ -540,7 +667,7 @@ static const unsigned short yytoknum[] =
# endif
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
-static const unsigned char yyr1[] =
+static const yytype_uint8 yyr1[] =
{
0, 53, 54, 55, 56, 56, 58, 57, 59, 57,
60, 57, 57, 57, 61, 61, 61, 61, 61, 61,
@@ -564,7 +691,7 @@ static const unsigned char yyr1[] =
};
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
-static const unsigned char yyr2[] =
+static const yytype_uint8 yyr2[] =
{
0, 2, 1, 3, 3, 0, 0, 3, 0, 5,
0, 4, 2, 0, 1, 1, 1, 1, 1, 1,
@@ -590,7 +717,7 @@ static const unsigned char yyr2[] =
/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
STATE-NUM when YYTABLE doesn't specify something else to do. Zero
means the default is an error. */
-static const unsigned char yydefact[] =
+static const yytype_uint8 yydefact[] =
{
0, 0, 0, 0, 0, 6, 147, 2, 10, 143,
145, 0, 0, 1, 0, 0, 146, 5, 12, 14,
@@ -621,8 +748,8 @@ static const unsigned char yydefact[] =
124, 98, 99, 100, 119, 123, 0, 121, 97
};
-/* YYDEFGOTO[NTERM-NUM]. */
-static const short yydefgoto[] =
+/* YYDEFGOTO[NTERM-NUM]. */
+static const yytype_int16 yydefgoto[] =
{
-1, 4, 5, 6, 7, 14, 41, 33, 18, 19,
56, 49, 20, 21, 137, 115, 177, 179, 194, 50,
@@ -636,7 +763,7 @@ static const short yydefgoto[] =
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
STATE-NUM. */
#define YYPACT_NINF -192
-static const short yypact[] =
+static const yytype_int16 yypact[] =
{
400, -26, -9, -9, 27, -192, 62, -192, -192, -9,
-192, 18, 20, -192, 77, 30, -192, 35, 58, -192,
@@ -668,7 +795,7 @@ static const short yypact[] =
};
/* YYPGOTO[NTERM-NUM]. */
-static const short yypgoto[] =
+static const yytype_int16 yypgoto[] =
{
-192, -192, -192, -17, -7, -192, -192, -192, -192, -192,
-192, -192, -192, -192, -192, -192, -179, -186, -192, -192,
@@ -684,7 +811,7 @@ static const short yypgoto[] =
number is the opposite. If zero, do what YYDEFACT says.
If YYTABLE_NINF, syntax error. */
#define YYTABLE_NINF -118
-static const short yytable[] =
+static const yytype_int16 yytable[] =
{
40, 114, 102, 104, 106, 108, 136, 38, 113, 139,
70, 144, 195, 224, 215, 197, 165, 125, 8, 169,
@@ -766,7 +893,7 @@ static const short yytable[] =
0, 0, 0, 0, 67, 68
};
-static const short yycheck[] =
+static const yytype_int16 yycheck[] =
{
17, 12, 42, 43, 44, 45, 114, 14, 48, 117,
40, 119, 176, 204, 193, 178, 140, 32, 44, 146,
@@ -850,7 +977,7 @@ static const short yycheck[] =
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
symbol of state STATE-NUM. */
-static const unsigned char yystos[] =
+static const yytype_uint8 yystos[] =
{
0, 1, 39, 41, 54, 55, 56, 57, 44, 34,
114, 115, 115, 0, 58, 3, 26, 27, 61, 62,
@@ -881,22 +1008,6 @@ static const unsigned char yystos[] =
100, 101, 112, 119, 70, 113, 48, 119, 100
};
-#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
-# define YYSIZE_T __SIZE_TYPE__
-#endif
-#if ! defined (YYSIZE_T) && defined (size_t)
-# define YYSIZE_T size_t
-#endif
-#if ! defined (YYSIZE_T)
-# if defined (__STDC__) || defined (__cplusplus)
-# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
-# define YYSIZE_T size_t
-# endif
-#endif
-#if ! defined (YYSIZE_T)
-# define YYSIZE_T unsigned int
-#endif
-
#define yyerrok (yyerrstatus = 0)
#define yyclearin (yychar = YYEMPTY)
#define YYEMPTY (-2)
@@ -922,30 +1033,63 @@ do \
yychar = (Token); \
yylval = (Value); \
yytoken = YYTRANSLATE (yychar); \
- YYPOPSTACK; \
+ YYPOPSTACK (1); \
goto yybackup; \
} \
else \
- { \
- yyerror ("syntax error: cannot back up");\
+ { \
+ yyerror (YY_("syntax error: cannot back up")); \
YYERROR; \
} \
-while (0)
+while (YYID (0))
+
#define YYTERROR 1
#define YYERRCODE 256
-/* YYLLOC_DEFAULT -- Compute the default location (before the actions
- are run). */
+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
+ If N is 0, then set CURRENT to the empty location which ends
+ the previous symbol: RHS[0] (always defined). */
+
+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
#ifndef YYLLOC_DEFAULT
-# define YYLLOC_DEFAULT(Current, Rhs, N) \
- ((Current).first_line = (Rhs)[1].first_line, \
- (Current).first_column = (Rhs)[1].first_column, \
- (Current).last_line = (Rhs)[N].last_line, \
- (Current).last_column = (Rhs)[N].last_column)
+# define YYLLOC_DEFAULT(Current, Rhs, N) \
+ do \
+ if (YYID (N)) \
+ { \
+ (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
+ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
+ (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
+ (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
+ } \
+ else \
+ { \
+ (Current).first_line = (Current).last_line = \
+ YYRHSLOC (Rhs, 0).last_line; \
+ (Current).first_column = (Current).last_column = \
+ YYRHSLOC (Rhs, 0).last_column; \
+ } \
+ while (YYID (0))
#endif
+
+/* YY_LOCATION_PRINT -- Print the location on the stream.
+ This macro was not mandated originally: define only if we know
+ we won't break user code: when these are the locations we know. */
+
+#ifndef YY_LOCATION_PRINT
+# if YYLTYPE_IS_TRIVIAL
+# define YY_LOCATION_PRINT(File, Loc) \
+ fprintf (File, "%d.%d-%d.%d", \
+ (Loc).first_line, (Loc).first_column, \
+ (Loc).last_line, (Loc).last_column)
+# else
+# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
+#endif
+
+
/* YYLEX -- calling `yylex' with the right arguments. */
#ifdef YYLEX_PARAM
@@ -966,42 +1110,96 @@ while (0)
do { \
if (yydebug) \
YYFPRINTF Args; \
-} while (0)
+} while (YYID (0))
-# define YYDSYMPRINT(Args) \
-do { \
- if (yydebug) \
- yysymprint Args; \
-} while (0)
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
+do { \
+ if (yydebug) \
+ { \
+ YYFPRINTF (stderr, "%s ", Title); \
+ yy_symbol_print (stderr, \
+ Type, Value); \
+ YYFPRINTF (stderr, "\n"); \
+ } \
+} while (YYID (0))
-# define YYDSYMPRINTF(Title, Token, Value, Location) \
-do { \
- if (yydebug) \
- { \
- YYFPRINTF (stderr, "%s ", Title); \
- yysymprint (stderr, \
- Token, Value); \
- YYFPRINTF (stderr, "\n"); \
- } \
-} while (0)
+
+/*--------------------------------.
+| Print this symbol on YYOUTPUT. |
+`--------------------------------*/
+
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+#else
+static void
+yy_symbol_value_print (yyoutput, yytype, yyvaluep)
+ FILE *yyoutput;
+ int yytype;
+ YYSTYPE const * const yyvaluep;
+#endif
+{
+ if (!yyvaluep)
+ return;
+# ifdef YYPRINT
+ if (yytype < YYNTOKENS)
+ YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# else
+ YYUSE (yyoutput);
+# endif
+ switch (yytype)
+ {
+ default:
+ break;
+ }
+}
+
+
+/*--------------------------------.
+| Print this symbol on YYOUTPUT. |
+`--------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+#else
+static void
+yy_symbol_print (yyoutput, yytype, yyvaluep)
+ FILE *yyoutput;
+ int yytype;
+ YYSTYPE const * const yyvaluep;
+#endif
+{
+ if (yytype < YYNTOKENS)
+ YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+ else
+ YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+
+ yy_symbol_value_print (yyoutput, yytype, yyvaluep);
+ YYFPRINTF (yyoutput, ")");
+}
/*------------------------------------------------------------------.
| yy_stack_print -- Print the state stack from its BOTTOM up to its |
| TOP (included). |
`------------------------------------------------------------------*/
-#if defined (__STDC__) || defined (__cplusplus)
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
static void
-yy_stack_print (short *bottom, short *top)
+yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
#else
static void
yy_stack_print (bottom, top)
- short *bottom;
- short *top;
+ yytype_int16 *bottom;
+ yytype_int16 *top;
#endif
{
YYFPRINTF (stderr, "Stack now");
- for (/* Nothing. */; bottom <= top; ++bottom)
+ for (; bottom <= top; ++bottom)
YYFPRINTF (stderr, " %d", *bottom);
YYFPRINTF (stderr, "\n");
}
@@ -1010,45 +1208,52 @@ yy_stack_print (bottom, top)
do { \
if (yydebug) \
yy_stack_print ((Bottom), (Top)); \
-} while (0)
+} while (YYID (0))
/*------------------------------------------------.
| Report that the YYRULE is going to be reduced. |
`------------------------------------------------*/
-#if defined (__STDC__) || defined (__cplusplus)
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
static void
-yy_reduce_print (int yyrule)
+yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
#else
static void
-yy_reduce_print (yyrule)
+yy_reduce_print (yyvsp, yyrule)
+ YYSTYPE *yyvsp;
int yyrule;
#endif
{
+ int yynrhs = yyr2[yyrule];
int yyi;
- unsigned int yylno = yyrline[yyrule];
- YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
- yyrule - 1, yylno);
- /* Print the symbols being reduced, and their result. */
- for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
- YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);
- YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]);
+ unsigned long int yylno = yyrline[yyrule];
+ YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
+ yyrule - 1, yylno);
+ /* The symbols being reduced. */
+ for (yyi = 0; yyi < yynrhs; yyi++)
+ {
+ fprintf (stderr, " $%d = ", yyi + 1);
+ yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
+ &(yyvsp[(yyi + 1) - (yynrhs)])
+ );
+ fprintf (stderr, "\n");
+ }
}
# define YY_REDUCE_PRINT(Rule) \
do { \
if (yydebug) \
- yy_reduce_print (Rule); \
-} while (0)
+ yy_reduce_print (yyvsp, Rule); \
+} while (YYID (0))
/* Nonzero means print parse trace. It is left uninitialized so that
multiple parsers can coexist. */
int yydebug;
#else /* !YYDEBUG */
# define YYDPRINTF(Args)
-# define YYDSYMPRINT(Args)
-# define YYDSYMPRINTF(Title, Token, Value, Location)
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
# define YY_STACK_PRINT(Bottom, Top)
# define YY_REDUCE_PRINT(Rule)
#endif /* !YYDEBUG */
@@ -1063,13 +1268,9 @@ int yydebug;
if the built-in stack extension method is used).
Do not make this value too large; the results are undefined if
- SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
+ YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
evaluated with infinite-precision integer arithmetic. */
-#if defined (YYMAXDEPTH) && YYMAXDEPTH == 0
-# undef YYMAXDEPTH
-#endif
-
#ifndef YYMAXDEPTH
# define YYMAXDEPTH 10000
#endif
@@ -1079,45 +1280,47 @@ int yydebug;
#if YYERROR_VERBOSE
# ifndef yystrlen
-# if defined (__GLIBC__) && defined (_STRING_H)
+# if defined __GLIBC__ && defined _STRING_H
# define yystrlen strlen
# else
/* Return the length of YYSTR. */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
static YYSIZE_T
-# if defined (__STDC__) || defined (__cplusplus)
yystrlen (const char *yystr)
-# else
+#else
+static YYSIZE_T
yystrlen (yystr)
- const char *yystr;
-# endif
+ const char *yystr;
+#endif
{
- register const char *yys = yystr;
-
- while (*yys++ != '\0')
+ YYSIZE_T yylen;
+ for (yylen = 0; yystr[yylen]; yylen++)
continue;
-
- return yys - yystr - 1;
+ return yylen;
}
# endif
# endif
# ifndef yystpcpy
-# if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
+# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
# define yystpcpy stpcpy
# else
/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
YYDEST. */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
static char *
-# if defined (__STDC__) || defined (__cplusplus)
yystpcpy (char *yydest, const char *yysrc)
-# else
+#else
+static char *
yystpcpy (yydest, yysrc)
- char *yydest;
- const char *yysrc;
-# endif
+ char *yydest;
+ const char *yysrc;
+#endif
{
- register char *yyd = yydest;
- register const char *yys = yysrc;
+ char *yyd = yydest;
+ const char *yys = yysrc;
while ((*yyd++ = *yys++) != '\0')
continue;
@@ -1127,70 +1330,192 @@ yystpcpy (yydest, yysrc)
# endif
# endif
-#endif /* !YYERROR_VERBOSE */
-
-
-
-#if YYDEBUG
-/*--------------------------------.
-| Print this symbol on YYOUTPUT. |
-`--------------------------------*/
+# ifndef yytnamerr
+/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
+ quotes and backslashes, so that it's suitable for yyerror. The
+ heuristic is that double-quoting is unnecessary unless the string
+ contains an apostrophe, a comma, or backslash (other than
+ backslash-backslash). YYSTR is taken from yytname. If YYRES is
+ null, do not copy; instead, return the length of what the result
+ would have been. */
+static YYSIZE_T
+yytnamerr (char *yyres, const char *yystr)
+{
+ if (*yystr == '"')
+ {
+ YYSIZE_T yyn = 0;
+ char const *yyp = yystr;
+
+ for (;;)
+ switch (*++yyp)
+ {
+ case '\'':
+ case ',':
+ goto do_not_strip_quotes;
+
+ case '\\':
+ if (*++yyp != '\\')
+ goto do_not_strip_quotes;
+ /* Fall through. */
+ default:
+ if (yyres)
+ yyres[yyn] = *yyp;
+ yyn++;
+ break;
+
+ case '"':
+ if (yyres)
+ yyres[yyn] = '\0';
+ return yyn;
+ }
+ do_not_strip_quotes: ;
+ }
+
+ if (! yyres)
+ return yystrlen (yystr);
+
+ return yystpcpy (yyres, yystr) - yyres;
+}
+# endif
-#if defined (__STDC__) || defined (__cplusplus)
-static void
-yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
-#else
-static void
-yysymprint (yyoutput, yytype, yyvaluep)
- FILE *yyoutput;
- int yytype;
- YYSTYPE *yyvaluep;
-#endif
+/* Copy into YYRESULT an error message about the unexpected token
+ YYCHAR while in state YYSTATE. Return the number of bytes copied,
+ including the terminating null byte. If YYRESULT is null, do not
+ copy anything; just return the number of bytes that would be
+ copied. As a special case, return 0 if an ordinary "syntax error"
+ message will do. Return YYSIZE_MAXIMUM if overflow occurs during
+ size calculation. */
+static YYSIZE_T
+yysyntax_error (char *yyresult, int yystate, int yychar)
{
- /* Pacify ``unused variable'' warnings. */
- (void) yyvaluep;
+ int yyn = yypact[yystate];
- if (yytype < YYNTOKENS)
- {
- YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
-# ifdef YYPRINT
- YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-# endif
- }
+ if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
+ return 0;
else
- YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
-
- switch (yytype)
{
- default:
- break;
+ int yytype = YYTRANSLATE (yychar);
+ YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
+ YYSIZE_T yysize = yysize0;
+ YYSIZE_T yysize1;
+ int yysize_overflow = 0;
+ enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
+ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+ int yyx;
+
+# if 0
+ /* This is so xgettext sees the translatable formats that are
+ constructed on the fly. */
+ YY_("syntax error, unexpected %s");
+ YY_("syntax error, unexpected %s, expecting %s");
+ YY_("syntax error, unexpected %s, expecting %s or %s");
+ YY_("syntax error, unexpected %s, expecting %s or %s or %s");
+ YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
+# endif
+ char *yyfmt;
+ char const *yyf;
+ static char const yyunexpected[] = "syntax error, unexpected %s";
+ static char const yyexpecting[] = ", expecting %s";
+ static char const yyor[] = " or %s";
+ char yyformat[sizeof yyunexpected
+ + sizeof yyexpecting - 1
+ + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
+ * (sizeof yyor - 1))];
+ char const *yyprefix = yyexpecting;
+
+ /* Start YYX at -YYN if negative to avoid negative indexes in
+ YYCHECK. */
+ int yyxbegin = yyn < 0 ? -yyn : 0;
+
+ /* Stay within bounds of both yycheck and yytname. */
+ int yychecklim = YYLAST - yyn + 1;
+ int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+ int yycount = 1;
+
+ yyarg[0] = yytname[yytype];
+ yyfmt = yystpcpy (yyformat, yyunexpected);
+
+ for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+ if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+ {
+ if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+ {
+ yycount = 1;
+ yysize = yysize0;
+ yyformat[sizeof yyunexpected - 1] = '\0';
+ break;
+ }
+ yyarg[yycount++] = yytname[yyx];
+ yysize1 = yysize + yytnamerr (0, yytname[yyx]);
+ yysize_overflow |= (yysize1 < yysize);
+ yysize = yysize1;
+ yyfmt = yystpcpy (yyfmt, yyprefix);
+ yyprefix = yyor;
+ }
+
+ yyf = YY_(yyformat);
+ yysize1 = yysize + yystrlen (yyf);
+ yysize_overflow |= (yysize1 < yysize);
+ yysize = yysize1;
+
+ if (yysize_overflow)
+ return YYSIZE_MAXIMUM;
+
+ if (yyresult)
+ {
+ /* Avoid sprintf, as that infringes on the user's name space.
+ Don't have undefined behavior even if the translation
+ produced a string with the wrong number of "%s"s. */
+ char *yyp = yyresult;
+ int yyi = 0;
+ while ((*yyp = *yyf) != '\0')
+ {
+ if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
+ {
+ yyp += yytnamerr (yyp, yyarg[yyi++]);
+ yyf += 2;
+ }
+ else
+ {
+ yyp++;
+ yyf++;
+ }
+ }
+ }
+ return yysize;
}
- YYFPRINTF (yyoutput, ")");
}
+#endif /* YYERROR_VERBOSE */
+
-#endif /* ! YYDEBUG */
/*-----------------------------------------------.
| Release the memory associated to this symbol. |
`-----------------------------------------------*/
-#if defined (__STDC__) || defined (__cplusplus)
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
static void
-yydestruct (int yytype, YYSTYPE *yyvaluep)
+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
#else
static void
-yydestruct (yytype, yyvaluep)
+yydestruct (yymsg, yytype, yyvaluep)
+ const char *yymsg;
int yytype;
YYSTYPE *yyvaluep;
#endif
{
- /* Pacify ``unused variable'' warnings. */
- (void) yyvaluep;
+ YYUSE (yyvaluep);
+
+ if (!yymsg)
+ yymsg = "Deleting";
+ YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
switch (yytype)
{
default:
- break;
+ break;
}
}
@@ -1198,13 +1523,13 @@ yydestruct (yytype, yyvaluep)
/* Prevent warnings from -Wmissing-prototypes. */
#ifdef YYPARSE_PARAM
-# if defined (__STDC__) || defined (__cplusplus)
+#if defined __STDC__ || defined __cplusplus
int yyparse (void *YYPARSE_PARAM);
-# else
+#else
int yyparse ();
-# endif
+#endif
#else /* ! YYPARSE_PARAM */
-#if defined (__STDC__) || defined (__cplusplus)
+#if defined __STDC__ || defined __cplusplus
int yyparse (void);
#else
int yyparse ();
@@ -1221,14 +1546,18 @@ int yyparse ();
`----------*/
#ifdef YYPARSE_PARAM
-# if defined (__STDC__) || defined (__cplusplus)
-int yyparse (void *YYPARSE_PARAM)
-# else
-int yyparse (YYPARSE_PARAM)
- void *YYPARSE_PARAM;
-# endif
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+int
+yyparse (void *YYPARSE_PARAM)
+#else
+int
+yyparse (YYPARSE_PARAM)
+ void *YYPARSE_PARAM;
+#endif
#else /* ! YYPARSE_PARAM */
-#if defined (__STDC__) || defined (__cplusplus)
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
int
yyparse (void)
#else
@@ -1238,22 +1567,28 @@ yyparse ()
#endif
#endif
{
- /* The lookahead symbol. */
+ /* The look-ahead symbol. */
int yychar;
-/* The semantic value of the lookahead symbol. */
+/* The semantic value of the look-ahead symbol. */
YYSTYPE yylval;
/* Number of syntax errors so far. */
int yynerrs;
- register int yystate;
- register int yyn;
+ int yystate;
+ int yyn;
int yyresult;
/* Number of tokens to shift before error messages enabled. */
int yyerrstatus;
- /* Lookahead token as an internal (translated) token number. */
+ /* Look-ahead token as an internal (translated) token number. */
int yytoken = 0;
+#if YYERROR_VERBOSE
+ /* Buffer for error messages, and its allocated size. */
+ char yymsgbuf[128];
+ char *yymsg = yymsgbuf;
+ YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
+#endif
/* Three stacks and their tools:
`yyss': related to states,
@@ -1264,18 +1599,18 @@ int yynerrs;
to reallocate them elsewhere. */
/* The state stack. */
- short yyssa[YYINITDEPTH];
- short *yyss = yyssa;
- register short *yyssp;
+ yytype_int16 yyssa[YYINITDEPTH];
+ yytype_int16 *yyss = yyssa;
+ yytype_int16 *yyssp;
/* The semantic value stack. */
YYSTYPE yyvsa[YYINITDEPTH];
YYSTYPE *yyvs = yyvsa;
- register YYSTYPE *yyvsp;
+ YYSTYPE *yyvsp;
-#define YYPOPSTACK (yyvsp--, yyssp--)
+#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
YYSIZE_T yystacksize = YYINITDEPTH;
@@ -1284,9 +1619,9 @@ int yynerrs;
YYSTYPE yyval;
- /* When reducing, the number of symbols on the RHS of the reduced
- rule. */
- int yylen;
+ /* The number of symbols on the RHS of the reduced rule.
+ Keep to zero when no symbol should be popped. */
+ int yylen = 0;
YYDPRINTF ((stderr, "Starting parse\n"));
@@ -1310,8 +1645,7 @@ int yynerrs;
`------------------------------------------------------------*/
yynewstate:
/* In all cases, when you get here, the value and location stacks
- have just been pushed. so pushing a state here evens the stacks.
- */
+ have just been pushed. So pushing a state here evens the stacks. */
yyssp++;
yysetstate:
@@ -1324,18 +1658,18 @@ int yynerrs;
#ifdef yyoverflow
{
- /* Give user a chance to reallocate the stack. Use copies of
+ /* Give user a chance to reallocate the stack. Use copies of
these so that the &'s don't force the real ones into
memory. */
YYSTYPE *yyvs1 = yyvs;
- short *yyss1 = yyss;
+ yytype_int16 *yyss1 = yyss;
/* Each stack pointer address is followed by the size of the
data in use in that stack, in bytes. This used to be a
conditional around just the two extra args, but that might
be undefined if yyoverflow is a macro. */
- yyoverflow ("parser stack overflow",
+ yyoverflow (YY_("memory exhausted"),
&yyss1, yysize * sizeof (*yyssp),
&yyvs1, yysize * sizeof (*yyvsp),
@@ -1346,21 +1680,21 @@ int yynerrs;
}
#else /* no yyoverflow */
# ifndef YYSTACK_RELOCATE
- goto yyoverflowlab;
+ goto yyexhaustedlab;
# else
/* Extend the stack our own way. */
if (YYMAXDEPTH <= yystacksize)
- goto yyoverflowlab;
+ goto yyexhaustedlab;
yystacksize *= 2;
if (YYMAXDEPTH < yystacksize)
yystacksize = YYMAXDEPTH;
{
- short *yyss1 = yyss;
+ yytype_int16 *yyss1 = yyss;
union yyalloc *yyptr =
(union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
if (! yyptr)
- goto yyoverflowlab;
+ goto yyexhaustedlab;
YYSTACK_RELOCATE (yyss);
YYSTACK_RELOCATE (yyvs);
@@ -1391,19 +1725,17 @@ int yynerrs;
`-----------*/
yybackup:
-/* Do appropriate processing given the current state. */
-/* Read a lookahead token if we need one and don't already have one. */
-/* yyresume: */
-
- /* First try to decide what to do without reference to lookahead token. */
+ /* Do appropriate processing given the current state. Read a
+ look-ahead token if we need one and don't already have one. */
+ /* First try to decide what to do without reference to look-ahead token. */
yyn = yypact[yystate];
if (yyn == YYPACT_NINF)
goto yydefault;
- /* Not known => get a lookahead token if don't already have one. */
+ /* Not known => get a look-ahead token if don't already have one. */
- /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
+ /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */
if (yychar == YYEMPTY)
{
YYDPRINTF ((stderr, "Reading a token: "));
@@ -1418,7 +1750,7 @@ yybackup:
else
{
yytoken = YYTRANSLATE (yychar);
- YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);
+ YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
}
/* If the proper action on seeing token YYTOKEN is to reduce or to
@@ -1438,22 +1770,21 @@ yybackup:
if (yyn == YYFINAL)
YYACCEPT;
- /* Shift the lookahead token. */
- YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));
-
- /* Discard the token being shifted unless it is eof. */
- if (yychar != YYEOF)
- yychar = YYEMPTY;
-
- *++yyvsp = yylval;
-
-
/* Count tokens shifted since error; after three, turn off error
status. */
if (yyerrstatus)
yyerrstatus--;
+ /* Shift the look-ahead token. */
+ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
+
+ /* Discard the shifted token unless it is eof. */
+ if (yychar != YYEOF)
+ yychar = YYEMPTY;
+
yystate = yyn;
+ *++yyvsp = yylval;
+
goto yynewstate;
@@ -1489,36 +1820,36 @@ yyreduce:
switch (yyn)
{
case 2:
-#line 106 "../Slice/Grammar.y"
+#line 106 "Grammar.y"
{
;}
break;
case 3:
-#line 114 "../Slice/Grammar.y"
+#line 114 "Grammar.y"
{
- yyval = yyvsp[-1];
+ (yyval) = (yyvsp[(2) - (3)]);
;}
break;
case 4:
-#line 123 "../Slice/Grammar.y"
+#line 123 "Grammar.y"
{
- yyval = yyvsp[-1];
+ (yyval) = (yyvsp[(2) - (3)]);
;}
break;
case 5:
-#line 127 "../Slice/Grammar.y"
+#line 127 "Grammar.y"
{
- yyval = new StringListTok;
+ (yyval) = new StringListTok;
;}
break;
case 6:
-#line 136 "../Slice/Grammar.y"
+#line 136 "Grammar.y"
{
- StringListTokPtr metaData = StringListTokPtr::dynamicCast(yyvsp[0]);
+ StringListTokPtr metaData = StringListTokPtr::dynamicCast((yyvsp[(1) - (1)]));
if(!metaData->v.empty())
{
unit->addGlobalMetaData(metaData->v);
@@ -1527,193 +1858,193 @@ yyreduce:
break;
case 8:
-#line 145 "../Slice/Grammar.y"
+#line 145 "Grammar.y"
{
- StringListTokPtr metaData = StringListTokPtr::dynamicCast(yyvsp[-1]);
- ContainedPtr contained = ContainedPtr::dynamicCast(yyvsp[0]);
+ StringListTokPtr metaData = StringListTokPtr::dynamicCast((yyvsp[(1) - (2)]));
+ ContainedPtr contained = ContainedPtr::dynamicCast((yyvsp[(2) - (2)]));
if(contained && !metaData->v.empty())
{
contained->setMetaData(metaData->v);
}
- unit->setSeenDefinition();
;}
break;
case 10:
-#line 156 "../Slice/Grammar.y"
+#line 155 "Grammar.y"
{
yyerrok;
;}
break;
case 12:
-#line 161 "../Slice/Grammar.y"
+#line 160 "Grammar.y"
{
unit->error("`;' missing after definition");
;}
break;
case 13:
-#line 165 "../Slice/Grammar.y"
+#line 164 "Grammar.y"
{
;}
break;
case 14:
-#line 173 "../Slice/Grammar.y"
+#line 172 "Grammar.y"
{
- assert(yyvsp[0] == 0 || ModulePtr::dynamicCast(yyvsp[0]));
+ assert((yyvsp[(1) - (1)]) == 0 || ModulePtr::dynamicCast((yyvsp[(1) - (1)])));
;}
break;
case 15:
-#line 177 "../Slice/Grammar.y"
+#line 176 "Grammar.y"
{
- assert(yyvsp[0] == 0 || ClassDeclPtr::dynamicCast(yyvsp[0]));
+ assert((yyvsp[(1) - (1)]) == 0 || ClassDeclPtr::dynamicCast((yyvsp[(1) - (1)])));
;}
break;
case 16:
-#line 181 "../Slice/Grammar.y"
+#line 180 "Grammar.y"
{
- assert(yyvsp[0] == 0 || ClassDefPtr::dynamicCast(yyvsp[0]));
+ assert((yyvsp[(1) - (1)]) == 0 || ClassDefPtr::dynamicCast((yyvsp[(1) - (1)])));
;}
break;
case 17:
-#line 185 "../Slice/Grammar.y"
+#line 184 "Grammar.y"
{
- assert(yyvsp[0] == 0 || ClassDeclPtr::dynamicCast(yyvsp[0]));
+ assert((yyvsp[(1) - (1)]) == 0 || ClassDeclPtr::dynamicCast((yyvsp[(1) - (1)])));
;}
break;
case 18:
-#line 189 "../Slice/Grammar.y"
+#line 188 "Grammar.y"
{
- assert(yyvsp[0] == 0 || ClassDefPtr::dynamicCast(yyvsp[0]));
+ assert((yyvsp[(1) - (1)]) == 0 || ClassDefPtr::dynamicCast((yyvsp[(1) - (1)])));
;}
break;
case 19:
-#line 193 "../Slice/Grammar.y"
+#line 192 "Grammar.y"
{
- assert(yyvsp[0] == 0);
+ assert((yyvsp[(1) - (1)]) == 0);
;}
break;
case 20:
-#line 197 "../Slice/Grammar.y"
+#line 196 "Grammar.y"
{
- assert(yyvsp[0] == 0 || ExceptionPtr::dynamicCast(yyvsp[0]));
+ assert((yyvsp[(1) - (1)]) == 0 || ExceptionPtr::dynamicCast((yyvsp[(1) - (1)])));
;}
break;
case 21:
-#line 201 "../Slice/Grammar.y"
+#line 200 "Grammar.y"
{
- assert(yyvsp[0] == 0);
+ assert((yyvsp[(1) - (1)]) == 0);
;}
break;
case 22:
-#line 205 "../Slice/Grammar.y"
+#line 204 "Grammar.y"
{
- assert(yyvsp[0] == 0 || StructPtr::dynamicCast(yyvsp[0]));
+ assert((yyvsp[(1) - (1)]) == 0 || StructPtr::dynamicCast((yyvsp[(1) - (1)])));
;}
break;
case 23:
-#line 209 "../Slice/Grammar.y"
+#line 208 "Grammar.y"
{
- assert(yyvsp[0] == 0 || SequencePtr::dynamicCast(yyvsp[0]));
+ assert((yyvsp[(1) - (1)]) == 0 || SequencePtr::dynamicCast((yyvsp[(1) - (1)])));
;}
break;
case 24:
-#line 213 "../Slice/Grammar.y"
+#line 212 "Grammar.y"
{
- assert(yyvsp[0] == 0 || DictionaryPtr::dynamicCast(yyvsp[0]));
+ assert((yyvsp[(1) - (1)]) == 0 || DictionaryPtr::dynamicCast((yyvsp[(1) - (1)])));
;}
break;
case 25:
-#line 217 "../Slice/Grammar.y"
+#line 216 "Grammar.y"
{
- assert(yyvsp[0] == 0 || EnumPtr::dynamicCast(yyvsp[0]));
+ assert((yyvsp[(1) - (1)]) == 0 || EnumPtr::dynamicCast((yyvsp[(1) - (1)])));
;}
break;
case 26:
-#line 221 "../Slice/Grammar.y"
+#line 220 "Grammar.y"
{
- assert(yyvsp[0] == 0 || ConstPtr::dynamicCast(yyvsp[0]));
+ assert((yyvsp[(1) - (1)]) == 0 || ConstPtr::dynamicCast((yyvsp[(1) - (1)])));
;}
break;
case 27:
-#line 230 "../Slice/Grammar.y"
+#line 229 "Grammar.y"
{
- StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[0]);
+ unit->setSeenDefinition();
+ StringTokPtr ident = StringTokPtr::dynamicCast((yyvsp[(2) - (2)]));
ContainerPtr cont = unit->currentContainer();
ModulePtr module = cont->createModule(ident->v);
if(module)
{
cont->checkIntroduced(ident->v, module);
unit->pushContainer(module);
- yyval = module;
+ (yyval) = module;
}
else
{
- yyval = 0;
+ (yyval) = 0;
}
;}
break;
case 28:
-#line 246 "../Slice/Grammar.y"
+#line 246 "Grammar.y"
{
- if(yyvsp[-3])
+ if((yyvsp[(3) - (6)]))
{
unit->popContainer();
- yyval = yyvsp[-3];
+ (yyval) = (yyvsp[(3) - (6)]);
}
else
{
- yyval = 0;
+ (yyval) = 0;
}
;}
break;
case 29:
-#line 263 "../Slice/Grammar.y"
+#line 263 "Grammar.y"
{
- yyval = yyvsp[0];
+ (yyval) = (yyvsp[(2) - (2)]);
;}
break;
case 30:
-#line 267 "../Slice/Grammar.y"
+#line 267 "Grammar.y"
{
- StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[0]);
+ StringTokPtr ident = StringTokPtr::dynamicCast((yyvsp[(2) - (2)]));
unit->error("keyword `" + ident->v + "' cannot be used as exception name");
- yyval = yyvsp[0]; // Dummy
+ (yyval) = (yyvsp[(2) - (2)]); // Dummy
;}
break;
case 31:
-#line 278 "../Slice/Grammar.y"
+#line 278 "Grammar.y"
{
unit->error("exceptions cannot be forward declared");
- yyval = 0;
+ (yyval) = 0;
;}
break;
case 32:
-#line 288 "../Slice/Grammar.y"
+#line 288 "Grammar.y"
{
- BoolTokPtr local = BoolTokPtr::dynamicCast(yyvsp[-2]);
- StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[-1]);
- ExceptionPtr base = ExceptionPtr::dynamicCast(yyvsp[0]);
+ BoolTokPtr local = BoolTokPtr::dynamicCast((yyvsp[(1) - (3)]));
+ StringTokPtr ident = StringTokPtr::dynamicCast((yyvsp[(2) - (3)]));
+ ExceptionPtr base = ExceptionPtr::dynamicCast((yyvsp[(3) - (3)]));
ContainerPtr cont = unit->currentContainer();
ExceptionPtr ex = cont->createException(ident->v, base, local->v);
if(ex)
@@ -1721,44 +2052,44 @@ yyreduce:
cont->checkIntroduced(ident->v, ex);
unit->pushContainer(ex);
}
- yyval = ex;
+ (yyval) = ex;
;}
break;
case 33:
-#line 302 "../Slice/Grammar.y"
+#line 302 "Grammar.y"
{
- if(yyvsp[-3])
+ if((yyvsp[(4) - (7)]))
{
unit->popContainer();
}
- yyval = yyvsp[-3];
+ (yyval) = (yyvsp[(4) - (7)]);
;}
break;
case 34:
-#line 315 "../Slice/Grammar.y"
+#line 315 "Grammar.y"
{
- StringTokPtr scoped = StringTokPtr::dynamicCast(yyvsp[0]);
+ StringTokPtr scoped = StringTokPtr::dynamicCast((yyvsp[(2) - (2)]));
ContainerPtr cont = unit->currentContainer();
ContainedPtr contained = cont->lookupException(scoped->v);
cont->checkIntroduced(scoped->v);
- yyval = contained;
+ (yyval) = contained;
;}
break;
case 35:
-#line 323 "../Slice/Grammar.y"
+#line 323 "Grammar.y"
{
- yyval = 0;
+ (yyval) = 0;
;}
break;
case 36:
-#line 332 "../Slice/Grammar.y"
+#line 332 "Grammar.y"
{
- StringListTokPtr metaData = StringListTokPtr::dynamicCast(yyvsp[-3]);
- ContainedPtr contained = ContainedPtr::dynamicCast(yyvsp[-2]);
+ StringListTokPtr metaData = StringListTokPtr::dynamicCast((yyvsp[(1) - (4)]));
+ ContainedPtr contained = ContainedPtr::dynamicCast((yyvsp[(2) - (4)]));
if(contained && !metaData->v.empty())
{
contained->setMetaData(metaData->v);
@@ -1767,64 +2098,64 @@ yyreduce:
break;
case 37:
-#line 341 "../Slice/Grammar.y"
+#line 341 "Grammar.y"
{
;}
break;
case 38:
-#line 344 "../Slice/Grammar.y"
+#line 344 "Grammar.y"
{
unit->error("`;' missing after definition");
;}
break;
case 39:
-#line 348 "../Slice/Grammar.y"
+#line 348 "Grammar.y"
{
;}
break;
case 40:
-#line 356 "../Slice/Grammar.y"
+#line 356 "Grammar.y"
{
- TypePtr type = TypePtr::dynamicCast(yyvsp[-1]);
- StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[0]);
+ TypePtr type = TypePtr::dynamicCast((yyvsp[(1) - (2)]));
+ StringTokPtr ident = StringTokPtr::dynamicCast((yyvsp[(2) - (2)]));
TypeStringTokPtr typestring = new TypeStringTok;
typestring->v = make_pair(type, ident->v);
- yyval = typestring;
+ (yyval) = typestring;
;}
break;
case 42:
-#line 375 "../Slice/Grammar.y"
+#line 375 "Grammar.y"
{
- yyval = yyvsp[0];
+ (yyval) = (yyvsp[(2) - (2)]);
;}
break;
case 43:
-#line 379 "../Slice/Grammar.y"
+#line 379 "Grammar.y"
{
- StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[0]);
+ StringTokPtr ident = StringTokPtr::dynamicCast((yyvsp[(2) - (2)]));
unit->error("keyword `" + ident->v + "' cannot be used as struct name");
- yyval = yyvsp[0]; // Dummy
+ (yyval) = (yyvsp[(2) - (2)]); // Dummy
;}
break;
case 44:
-#line 390 "../Slice/Grammar.y"
+#line 390 "Grammar.y"
{
unit->error("structs cannot be forward declared");
- yyval = 0; // Dummy
+ (yyval) = 0; // Dummy
;}
break;
case 45:
-#line 400 "../Slice/Grammar.y"
+#line 400 "Grammar.y"
{
- BoolTokPtr local = BoolTokPtr::dynamicCast(yyvsp[-1]);
- StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[0]);
+ BoolTokPtr local = BoolTokPtr::dynamicCast((yyvsp[(1) - (2)]));
+ StringTokPtr ident = StringTokPtr::dynamicCast((yyvsp[(2) - (2)]));
ContainerPtr cont = unit->currentContainer();
StructPtr st = cont->createStruct(ident->v, local->v);
if(st)
@@ -1832,23 +2163,23 @@ yyreduce:
cont->checkIntroduced(ident->v, st);
unit->pushContainer(st);
}
- yyval = st;
+ (yyval) = st;
;}
break;
case 46:
-#line 413 "../Slice/Grammar.y"
+#line 413 "Grammar.y"
{
- if(yyvsp[-3])
+ if((yyvsp[(3) - (6)]))
{
unit->popContainer();
}
- yyval = yyvsp[-3];
+ (yyval) = (yyvsp[(3) - (6)]);
//
// Empty structures are not allowed
//
- StructPtr st = StructPtr::dynamicCast(yyval);
+ StructPtr st = StructPtr::dynamicCast((yyval));
assert(st);
if(st->dataMembers().empty())
{
@@ -1858,10 +2189,10 @@ yyreduce:
break;
case 47:
-#line 436 "../Slice/Grammar.y"
+#line 436 "Grammar.y"
{
- StringListTokPtr metaData = StringListTokPtr::dynamicCast(yyvsp[-3]);
- ContainedPtr contained = ContainedPtr::dynamicCast(yyvsp[-2]);
+ StringListTokPtr metaData = StringListTokPtr::dynamicCast((yyvsp[(1) - (4)]));
+ ContainedPtr contained = ContainedPtr::dynamicCast((yyvsp[(2) - (4)]));
if(contained && !metaData->v.empty())
{
contained->setMetaData(metaData->v);
@@ -1870,59 +2201,59 @@ yyreduce:
break;
case 48:
-#line 445 "../Slice/Grammar.y"
+#line 445 "Grammar.y"
{
;}
break;
case 49:
-#line 448 "../Slice/Grammar.y"
+#line 448 "Grammar.y"
{
unit->error("`;' missing after definition");
;}
break;
case 50:
-#line 452 "../Slice/Grammar.y"
+#line 452 "Grammar.y"
{
;}
break;
case 52:
-#line 466 "../Slice/Grammar.y"
+#line 466 "Grammar.y"
{
- yyval = yyvsp[0];
+ (yyval) = (yyvsp[(2) - (2)]);
;}
break;
case 53:
-#line 470 "../Slice/Grammar.y"
+#line 470 "Grammar.y"
{
- StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[0]);
+ StringTokPtr ident = StringTokPtr::dynamicCast((yyvsp[(2) - (2)]));
unit->error("keyword `" + ident->v + "' cannot be used as class name");
- yyval = yyvsp[0]; // Dummy
+ (yyval) = (yyvsp[(2) - (2)]); // Dummy
;}
break;
case 54:
-#line 481 "../Slice/Grammar.y"
+#line 481 "Grammar.y"
{
- BoolTokPtr local = BoolTokPtr::dynamicCast(yyvsp[-1]);
- StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[0]);
+ BoolTokPtr local = BoolTokPtr::dynamicCast((yyvsp[(1) - (2)]));
+ StringTokPtr ident = StringTokPtr::dynamicCast((yyvsp[(2) - (2)]));
ContainerPtr cont = unit->currentContainer();
ClassDeclPtr cl = cont->createClassDecl(ident->v, false, local->v);
- yyval = cl;
+ (yyval) = cl;
;}
break;
case 55:
-#line 494 "../Slice/Grammar.y"
+#line 494 "Grammar.y"
{
- BoolTokPtr local = BoolTokPtr::dynamicCast(yyvsp[-3]);
- StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[-2]);
+ BoolTokPtr local = BoolTokPtr::dynamicCast((yyvsp[(1) - (4)]));
+ StringTokPtr ident = StringTokPtr::dynamicCast((yyvsp[(2) - (4)]));
ContainerPtr cont = unit->currentContainer();
- ClassDefPtr base = ClassDefPtr::dynamicCast(yyvsp[-1]);
- ClassListTokPtr bases = ClassListTokPtr::dynamicCast(yyvsp[0]);
+ ClassDefPtr base = ClassDefPtr::dynamicCast((yyvsp[(3) - (4)]));
+ ClassListTokPtr bases = ClassListTokPtr::dynamicCast((yyvsp[(4) - (4)]));
if(base)
{
bases->v.push_front(base);
@@ -1932,37 +2263,37 @@ yyreduce:
{
cont->checkIntroduced(ident->v, cl);
unit->pushContainer(cl);
- yyval = cl;
+ (yyval) = cl;
}
else
{
- yyval = 0;
+ (yyval) = 0;
}
;}
break;
case 56:
-#line 517 "../Slice/Grammar.y"
+#line 517 "Grammar.y"
{
- if(yyvsp[-3])
+ if((yyvsp[(5) - (8)]))
{
unit->popContainer();
- yyval = yyvsp[-3];
+ (yyval) = (yyvsp[(5) - (8)]);
}
else
{
- yyval = 0;
+ (yyval) = 0;
}
;}
break;
case 57:
-#line 534 "../Slice/Grammar.y"
+#line 534 "Grammar.y"
{
- StringTokPtr scoped = StringTokPtr::dynamicCast(yyvsp[0]);
+ StringTokPtr scoped = StringTokPtr::dynamicCast((yyvsp[(2) - (2)]));
ContainerPtr cont = unit->currentContainer();
TypeList types = cont->lookupType(scoped->v);
- yyval = 0;
+ (yyval) = 0;
if(!types.empty())
{
ClassDeclPtr cl = ClassDeclPtr::dynamicCast(types.front());
@@ -1986,7 +2317,7 @@ yyreduce:
else
{
cont->checkIntroduced(scoped->v);
- yyval = def;
+ (yyval) = def;
}
}
}
@@ -1994,31 +2325,31 @@ yyreduce:
break;
case 58:
-#line 568 "../Slice/Grammar.y"
+#line 568 "Grammar.y"
{
- yyval = 0;
+ (yyval) = 0;
;}
break;
case 59:
-#line 577 "../Slice/Grammar.y"
+#line 577 "Grammar.y"
{
- yyval = yyvsp[0];
+ (yyval) = (yyvsp[(2) - (2)]);
;}
break;
case 60:
-#line 581 "../Slice/Grammar.y"
+#line 581 "Grammar.y"
{
- yyval = new ClassListTok;
+ (yyval) = new ClassListTok;
;}
break;
case 61:
-#line 590 "../Slice/Grammar.y"
+#line 590 "Grammar.y"
{
- StringListTokPtr metaData = StringListTokPtr::dynamicCast(yyvsp[-3]);
- ContainedPtr contained = ContainedPtr::dynamicCast(yyvsp[-2]);
+ StringListTokPtr metaData = StringListTokPtr::dynamicCast((yyvsp[(1) - (4)]));
+ ContainedPtr contained = ContainedPtr::dynamicCast((yyvsp[(2) - (4)]));
if(contained && !metaData->v.empty())
{
contained->setMetaData(metaData->v);
@@ -2027,29 +2358,29 @@ yyreduce:
break;
case 62:
-#line 599 "../Slice/Grammar.y"
+#line 599 "Grammar.y"
{
;}
break;
case 63:
-#line 602 "../Slice/Grammar.y"
+#line 602 "Grammar.y"
{
unit->error("`;' missing after definition");
;}
break;
case 64:
-#line 606 "../Slice/Grammar.y"
+#line 606 "Grammar.y"
{
;}
break;
case 65:
-#line 614 "../Slice/Grammar.y"
+#line 614 "Grammar.y"
{
- TypePtr type = TypeStringTokPtr::dynamicCast(yyvsp[0])->v.first;
- string name = TypeStringTokPtr::dynamicCast(yyvsp[0])->v.second;
+ TypePtr type = TypeStringTokPtr::dynamicCast((yyvsp[(1) - (1)]))->v.first;
+ string name = TypeStringTokPtr::dynamicCast((yyvsp[(1) - (1)]))->v.second;
ClassDefPtr cl = ClassDefPtr::dynamicCast(unit->currentContainer());
DataMemberPtr dm;
if(cl)
@@ -2067,71 +2398,71 @@ yyreduce:
dm = ex->createDataMember(name, type);
}
unit->currentContainer()->checkIntroduced(name, dm);
- yyval = dm;
+ (yyval) = dm;
;}
break;
case 66:
-#line 637 "../Slice/Grammar.y"
+#line 637 "Grammar.y"
{
- TypePtr type = TypePtr::dynamicCast(yyvsp[-1]);
- string name = StringTokPtr::dynamicCast(yyvsp[0])->v;
+ TypePtr type = TypePtr::dynamicCast((yyvsp[(1) - (2)]));
+ string name = StringTokPtr::dynamicCast((yyvsp[(2) - (2)]))->v;
ClassDefPtr cl = ClassDefPtr::dynamicCast(unit->currentContainer());
if(cl)
{
- yyval = cl->createDataMember(name, type); // Dummy
+ (yyval) = cl->createDataMember(name, type); // Dummy
}
StructPtr st = StructPtr::dynamicCast(unit->currentContainer());
if(st)
{
- yyval = st->createDataMember(name, type); // Dummy
+ (yyval) = st->createDataMember(name, type); // Dummy
}
ExceptionPtr ex = ExceptionPtr::dynamicCast(unit->currentContainer());
if(ex)
{
- yyval = ex->createDataMember(name, type); // Dummy
+ (yyval) = ex->createDataMember(name, type); // Dummy
}
- assert(yyval);
+ assert((yyval));
unit->error("keyword `" + name + "' cannot be used as data member name");
;}
break;
case 67:
-#line 659 "../Slice/Grammar.y"
+#line 659 "Grammar.y"
{
- TypePtr type = TypePtr::dynamicCast(yyvsp[0]);
+ TypePtr type = TypePtr::dynamicCast((yyvsp[(1) - (1)]));
ClassDefPtr cl = ClassDefPtr::dynamicCast(unit->currentContainer());
if(cl)
{
- yyval = cl->createDataMember(IceUtil::generateUUID(), type); // Dummy
+ (yyval) = cl->createDataMember(IceUtil::generateUUID(), type); // Dummy
}
StructPtr st = StructPtr::dynamicCast(unit->currentContainer());
if(st)
{
- yyval = st->createDataMember(IceUtil::generateUUID(), type); // Dummy
+ (yyval) = st->createDataMember(IceUtil::generateUUID(), type); // Dummy
}
ExceptionPtr ex = ExceptionPtr::dynamicCast(unit->currentContainer());
if(ex)
{
- yyval = ex->createDataMember(IceUtil::generateUUID(), type); // Dummy
+ (yyval) = ex->createDataMember(IceUtil::generateUUID(), type); // Dummy
}
- assert(yyval);
+ assert((yyval));
unit->error("missing data member name");
;}
break;
case 69:
-#line 686 "../Slice/Grammar.y"
+#line 686 "Grammar.y"
{
- yyval = 0;
+ (yyval) = 0;
;}
break;
case 70:
-#line 695 "../Slice/Grammar.y"
+#line 695 "Grammar.y"
{
- TypePtr returnType = TypePtr::dynamicCast(yyvsp[-1]);
- string name = StringTokPtr::dynamicCast(yyvsp[0])->v;
+ TypePtr returnType = TypePtr::dynamicCast((yyvsp[(1) - (2)]));
+ string name = StringTokPtr::dynamicCast((yyvsp[(2) - (2)]))->v;
ClassDefPtr cl = ClassDefPtr::dynamicCast(unit->currentContainer());
if(cl)
{
@@ -2140,25 +2471,25 @@ yyreduce:
{
cl->checkIntroduced(name, op);
unit->pushContainer(op);
- yyval = op;
+ (yyval) = op;
}
else
{
- yyval = 0;
+ (yyval) = 0;
}
}
else
{
- yyval = 0;
+ (yyval) = 0;
}
;}
break;
case 71:
-#line 719 "../Slice/Grammar.y"
+#line 719 "Grammar.y"
{
- TypePtr returnType = TypePtr::dynamicCast(yyvsp[-1]);
- string name = StringTokPtr::dynamicCast(yyvsp[0])->v;
+ TypePtr returnType = TypePtr::dynamicCast((yyvsp[(2) - (3)]));
+ string name = StringTokPtr::dynamicCast((yyvsp[(3) - (3)]))->v;
ClassDefPtr cl = ClassDefPtr::dynamicCast(unit->currentContainer());
if(cl)
{
@@ -2184,25 +2515,25 @@ yyreduce:
}
unit->warning(msg);
- yyval = op;
+ (yyval) = op;
}
else
{
- yyval = 0;
+ (yyval) = 0;
}
}
else
{
- yyval = 0;
+ (yyval) = 0;
}
;}
break;
case 72:
-#line 760 "../Slice/Grammar.y"
+#line 760 "Grammar.y"
{
- TypePtr returnType = TypePtr::dynamicCast(yyvsp[-1]);
- string name = StringTokPtr::dynamicCast(yyvsp[0])->v;
+ TypePtr returnType = TypePtr::dynamicCast((yyvsp[(2) - (3)]));
+ string name = StringTokPtr::dynamicCast((yyvsp[(3) - (3)]))->v;
ClassDefPtr cl = ClassDefPtr::dynamicCast(unit->currentContainer());
if(cl)
{
@@ -2211,25 +2542,25 @@ yyreduce:
{
cl->checkIntroduced(name, op);
unit->pushContainer(op);
- yyval = op;
+ (yyval) = op;
}
else
{
- yyval = 0;
+ (yyval) = 0;
}
}
else
{
- yyval = 0;
+ (yyval) = 0;
}
;}
break;
case 73:
-#line 784 "../Slice/Grammar.y"
+#line 784 "Grammar.y"
{
- TypePtr returnType = TypePtr::dynamicCast(yyvsp[-1]);
- string name = StringTokPtr::dynamicCast(yyvsp[0])->v;
+ TypePtr returnType = TypePtr::dynamicCast((yyvsp[(1) - (2)]));
+ string name = StringTokPtr::dynamicCast((yyvsp[(2) - (2)]))->v;
ClassDefPtr cl = ClassDefPtr::dynamicCast(unit->currentContainer());
if(cl)
{
@@ -2238,25 +2569,25 @@ yyreduce:
{
unit->pushContainer(op);
unit->error("keyword `" + name + "' cannot be used as operation name");
- yyval = op; // Dummy
+ (yyval) = op; // Dummy
}
else
{
- yyval = 0;
+ (yyval) = 0;
}
}
else
{
- yyval = 0;
+ (yyval) = 0;
}
;}
break;
case 74:
-#line 808 "../Slice/Grammar.y"
+#line 808 "Grammar.y"
{
- TypePtr returnType = TypePtr::dynamicCast(yyvsp[-1]);
- string name = StringTokPtr::dynamicCast(yyvsp[0])->v;
+ TypePtr returnType = TypePtr::dynamicCast((yyvsp[(2) - (3)]));
+ string name = StringTokPtr::dynamicCast((yyvsp[(3) - (3)]))->v;
ClassDefPtr cl = ClassDefPtr::dynamicCast(unit->currentContainer());
if(cl)
{
@@ -2265,25 +2596,25 @@ yyreduce:
{
unit->pushContainer(op);
unit->error("keyword `" + name + "' cannot be used as operation name");
- yyval = op; // Dummy
+ (yyval) = op; // Dummy
}
else
{
- yyval = 0;
+ (yyval) = 0;
}
}
else
{
- yyval = 0;
+ (yyval) = 0;
}
;}
break;
case 75:
-#line 832 "../Slice/Grammar.y"
+#line 832 "Grammar.y"
{
- TypePtr returnType = TypePtr::dynamicCast(yyvsp[-1]);
- string name = StringTokPtr::dynamicCast(yyvsp[0])->v;
+ TypePtr returnType = TypePtr::dynamicCast((yyvsp[(2) - (3)]));
+ string name = StringTokPtr::dynamicCast((yyvsp[(3) - (3)]))->v;
ClassDefPtr cl = ClassDefPtr::dynamicCast(unit->currentContainer());
if(cl)
{
@@ -2292,7 +2623,7 @@ yyreduce:
{
unit->pushContainer(op);
unit->error("keyword `" + name + "' cannot be used as operation name");
- yyval = op; // Dummy
+ (yyval) = op; // Dummy
}
else
{
@@ -2301,31 +2632,31 @@ yyreduce:
}
else
{
- yyval = 0;
+ (yyval) = 0;
}
;}
break;
case 76:
-#line 861 "../Slice/Grammar.y"
+#line 861 "Grammar.y"
{
- if(yyvsp[-2])
+ if((yyvsp[(1) - (3)]))
{
unit->popContainer();
- yyval = yyvsp[-2];
+ (yyval) = (yyvsp[(1) - (3)]);
}
else
{
- yyval = 0;
+ (yyval) = 0;
}
;}
break;
case 77:
-#line 873 "../Slice/Grammar.y"
+#line 873 "Grammar.y"
{
- OperationPtr op = OperationPtr::dynamicCast(yyvsp[-1]);
- ExceptionListTokPtr el = ExceptionListTokPtr::dynamicCast(yyvsp[0]);
+ OperationPtr op = OperationPtr::dynamicCast((yyvsp[(4) - (5)]));
+ ExceptionListTokPtr el = ExceptionListTokPtr::dynamicCast((yyvsp[(5) - (5)]));
assert(el);
if(op)
{
@@ -2335,9 +2666,9 @@ yyreduce:
break;
case 78:
-#line 883 "../Slice/Grammar.y"
+#line 883 "Grammar.y"
{
- if(yyvsp[-2])
+ if((yyvsp[(1) - (3)]))
{
unit->popContainer();
}
@@ -2346,10 +2677,10 @@ yyreduce:
break;
case 79:
-#line 891 "../Slice/Grammar.y"
+#line 891 "Grammar.y"
{
- OperationPtr op = OperationPtr::dynamicCast(yyvsp[-1]);
- ExceptionListTokPtr el = ExceptionListTokPtr::dynamicCast(yyvsp[0]);
+ OperationPtr op = OperationPtr::dynamicCast((yyvsp[(4) - (5)]));
+ ExceptionListTokPtr el = ExceptionListTokPtr::dynamicCast((yyvsp[(5) - (5)]));
assert(el);
if(op)
{
@@ -2359,74 +2690,74 @@ yyreduce:
break;
case 82:
-#line 913 "../Slice/Grammar.y"
+#line 913 "Grammar.y"
{
- yyval = yyvsp[0];
+ (yyval) = (yyvsp[(2) - (2)]);
;}
break;
case 83:
-#line 917 "../Slice/Grammar.y"
+#line 917 "Grammar.y"
{
- StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[0]);
+ StringTokPtr ident = StringTokPtr::dynamicCast((yyvsp[(2) - (2)]));
unit->error("keyword `" + ident->v + "' cannot be used as interface name");
- yyval = yyvsp[0]; // Dummy
+ (yyval) = (yyvsp[(2) - (2)]); // Dummy
;}
break;
case 84:
-#line 928 "../Slice/Grammar.y"
+#line 928 "Grammar.y"
{
- BoolTokPtr local = BoolTokPtr::dynamicCast(yyvsp[-1]);
- StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[0]);
+ BoolTokPtr local = BoolTokPtr::dynamicCast((yyvsp[(1) - (2)]));
+ StringTokPtr ident = StringTokPtr::dynamicCast((yyvsp[(2) - (2)]));
ContainerPtr cont = unit->currentContainer();
ClassDeclPtr cl = cont->createClassDecl(ident->v, true, local->v);
cont->checkIntroduced(ident->v, cl);
- yyval = cl;
+ (yyval) = cl;
;}
break;
case 85:
-#line 942 "../Slice/Grammar.y"
+#line 942 "Grammar.y"
{
- BoolTokPtr local = BoolTokPtr::dynamicCast(yyvsp[-2]);
- StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[-1]);
+ BoolTokPtr local = BoolTokPtr::dynamicCast((yyvsp[(1) - (3)]));
+ StringTokPtr ident = StringTokPtr::dynamicCast((yyvsp[(2) - (3)]));
ContainerPtr cont = unit->currentContainer();
- ClassListTokPtr bases = ClassListTokPtr::dynamicCast(yyvsp[0]);
+ ClassListTokPtr bases = ClassListTokPtr::dynamicCast((yyvsp[(3) - (3)]));
ClassDefPtr cl = cont->createClassDef(ident->v, true, bases->v, local->v);
if(cl)
{
cont->checkIntroduced(ident->v, cl);
unit->pushContainer(cl);
- yyval = cl;
+ (yyval) = cl;
}
else
{
- yyval = 0;
+ (yyval) = 0;
}
;}
break;
case 86:
-#line 960 "../Slice/Grammar.y"
+#line 960 "Grammar.y"
{
- if(yyvsp[-3])
+ if((yyvsp[(4) - (7)]))
{
unit->popContainer();
- yyval = yyvsp[-3];
+ (yyval) = (yyvsp[(4) - (7)]);
}
else
{
- yyval = 0;
+ (yyval) = 0;
}
;}
break;
case 87:
-#line 977 "../Slice/Grammar.y"
+#line 977 "Grammar.y"
{
- ClassListTokPtr intfs = ClassListTokPtr::dynamicCast(yyvsp[0]);
- StringTokPtr scoped = StringTokPtr::dynamicCast(yyvsp[-2]);
+ ClassListTokPtr intfs = ClassListTokPtr::dynamicCast((yyvsp[(3) - (3)]));
+ StringTokPtr scoped = StringTokPtr::dynamicCast((yyvsp[(1) - (3)]));
ContainerPtr cont = unit->currentContainer();
TypeList types = cont->lookupType(scoped->v);
if(!types.empty())
@@ -2456,15 +2787,15 @@ yyreduce:
}
}
}
- yyval = intfs;
+ (yyval) = intfs;
;}
break;
case 88:
-#line 1012 "../Slice/Grammar.y"
+#line 1012 "Grammar.y"
{
ClassListTokPtr intfs = new ClassListTok;
- StringTokPtr scoped = StringTokPtr::dynamicCast(yyvsp[0]);
+ StringTokPtr scoped = StringTokPtr::dynamicCast((yyvsp[(1) - (1)]));
ContainerPtr cont = unit->currentContainer();
TypeList types = cont->lookupType(scoped->v);
if(!types.empty())
@@ -2494,37 +2825,37 @@ yyreduce:
}
}
}
- yyval = intfs;
+ (yyval) = intfs;
;}
break;
case 89:
-#line 1047 "../Slice/Grammar.y"
+#line 1047 "Grammar.y"
{
unit->error("illegal inheritance from type Object");
- yyval = new ClassListTok; // Dummy
+ (yyval) = new ClassListTok; // Dummy
;}
break;
case 90:
-#line 1057 "../Slice/Grammar.y"
+#line 1057 "Grammar.y"
{
- yyval = yyvsp[0];
+ (yyval) = (yyvsp[(2) - (2)]);
;}
break;
case 91:
-#line 1061 "../Slice/Grammar.y"
+#line 1061 "Grammar.y"
{
- yyval = new ClassListTok;
+ (yyval) = new ClassListTok;
;}
break;
case 92:
-#line 1070 "../Slice/Grammar.y"
+#line 1070 "Grammar.y"
{
- StringListTokPtr metaData = StringListTokPtr::dynamicCast(yyvsp[-3]);
- ContainedPtr contained = ContainedPtr::dynamicCast(yyvsp[-2]);
+ StringListTokPtr metaData = StringListTokPtr::dynamicCast((yyvsp[(1) - (4)]));
+ ContainedPtr contained = ContainedPtr::dynamicCast((yyvsp[(2) - (4)]));
if(contained && !metaData->v.empty())
{
contained->setMetaData(metaData->v);
@@ -2533,48 +2864,48 @@ yyreduce:
break;
case 93:
-#line 1079 "../Slice/Grammar.y"
+#line 1079 "Grammar.y"
{
;}
break;
case 94:
-#line 1082 "../Slice/Grammar.y"
+#line 1082 "Grammar.y"
{
unit->error("`;' missing after definition");
;}
break;
case 95:
-#line 1086 "../Slice/Grammar.y"
+#line 1086 "Grammar.y"
{
;}
break;
case 97:
-#line 1100 "../Slice/Grammar.y"
+#line 1100 "Grammar.y"
{
- ExceptionPtr exception = ExceptionPtr::dynamicCast(yyvsp[-2]);
- ExceptionListTokPtr exceptionList = ExceptionListTokPtr::dynamicCast(yyvsp[0]);
+ ExceptionPtr exception = ExceptionPtr::dynamicCast((yyvsp[(1) - (3)]));
+ ExceptionListTokPtr exceptionList = ExceptionListTokPtr::dynamicCast((yyvsp[(3) - (3)]));
exceptionList->v.push_front(exception);
- yyval = exceptionList;
+ (yyval) = exceptionList;
;}
break;
case 98:
-#line 1107 "../Slice/Grammar.y"
+#line 1107 "Grammar.y"
{
- ExceptionPtr exception = ExceptionPtr::dynamicCast(yyvsp[0]);
+ ExceptionPtr exception = ExceptionPtr::dynamicCast((yyvsp[(1) - (1)]));
ExceptionListTokPtr exceptionList = new ExceptionListTok;
exceptionList->v.push_front(exception);
- yyval = exceptionList;
+ (yyval) = exceptionList;
;}
break;
case 99:
-#line 1119 "../Slice/Grammar.y"
+#line 1119 "Grammar.y"
{
- StringTokPtr scoped = StringTokPtr::dynamicCast(yyvsp[0]);
+ StringTokPtr scoped = StringTokPtr::dynamicCast((yyvsp[(1) - (1)]));
ContainerPtr cont = unit->currentContainer();
ExceptionPtr exception = cont->lookupException(scoped->v);
if(!exception)
@@ -2582,150 +2913,150 @@ yyreduce:
exception = cont->createException(IceUtil::generateUUID(), 0, false, Dummy); // Dummy
}
cont->checkIntroduced(scoped->v, exception);
- yyval = exception;
+ (yyval) = exception;
;}
break;
case 100:
-#line 1131 "../Slice/Grammar.y"
+#line 1131 "Grammar.y"
{
- StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[0]);
+ StringTokPtr ident = StringTokPtr::dynamicCast((yyvsp[(1) - (1)]));
unit->error("keyword `" + ident->v + "' cannot be used as exception name");
- yyval = unit->currentContainer()->createException(IceUtil::generateUUID(), 0, false, Dummy); // Dummy
+ (yyval) = unit->currentContainer()->createException(IceUtil::generateUUID(), 0, false, Dummy); // Dummy
;}
break;
case 101:
-#line 1142 "../Slice/Grammar.y"
+#line 1142 "Grammar.y"
{
- BoolTokPtr local = BoolTokPtr::dynamicCast(yyvsp[-6]);
- StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[0]);
- StringListTokPtr metaData = StringListTokPtr::dynamicCast(yyvsp[-3]);
- TypePtr type = TypePtr::dynamicCast(yyvsp[-2]);
+ BoolTokPtr local = BoolTokPtr::dynamicCast((yyvsp[(1) - (7)]));
+ StringTokPtr ident = StringTokPtr::dynamicCast((yyvsp[(7) - (7)]));
+ StringListTokPtr metaData = StringListTokPtr::dynamicCast((yyvsp[(4) - (7)]));
+ TypePtr type = TypePtr::dynamicCast((yyvsp[(5) - (7)]));
ContainerPtr cont = unit->currentContainer();
- yyval = cont->createSequence(ident->v, type, metaData->v, local->v);
+ (yyval) = cont->createSequence(ident->v, type, metaData->v, local->v);
;}
break;
case 102:
-#line 1151 "../Slice/Grammar.y"
+#line 1151 "Grammar.y"
{
- BoolTokPtr local = BoolTokPtr::dynamicCast(yyvsp[-6]);
- StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[0]);
- StringListTokPtr metaData = StringListTokPtr::dynamicCast(yyvsp[-3]);
- TypePtr type = TypePtr::dynamicCast(yyvsp[-2]);
+ BoolTokPtr local = BoolTokPtr::dynamicCast((yyvsp[(1) - (7)]));
+ StringTokPtr ident = StringTokPtr::dynamicCast((yyvsp[(7) - (7)]));
+ StringListTokPtr metaData = StringListTokPtr::dynamicCast((yyvsp[(4) - (7)]));
+ TypePtr type = TypePtr::dynamicCast((yyvsp[(5) - (7)]));
ContainerPtr cont = unit->currentContainer();
- yyval = cont->createSequence(ident->v, type, metaData->v, local->v); // Dummy
+ (yyval) = cont->createSequence(ident->v, type, metaData->v, local->v); // Dummy
unit->error("keyword `" + ident->v + "' cannot be used as sequence name");
;}
break;
case 103:
-#line 1166 "../Slice/Grammar.y"
- {
- BoolTokPtr local = BoolTokPtr::dynamicCast(yyvsp[-9]);
- StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[0]);
- StringListTokPtr keyMetaData = StringListTokPtr::dynamicCast(yyvsp[-6]);
- TypePtr keyType = TypePtr::dynamicCast(yyvsp[-5]);
- StringListTokPtr valueMetaData = StringListTokPtr::dynamicCast(yyvsp[-3]);
- TypePtr valueType = TypePtr::dynamicCast(yyvsp[-2]);
+#line 1166 "Grammar.y"
+ {
+ BoolTokPtr local = BoolTokPtr::dynamicCast((yyvsp[(1) - (10)]));
+ StringTokPtr ident = StringTokPtr::dynamicCast((yyvsp[(10) - (10)]));
+ StringListTokPtr keyMetaData = StringListTokPtr::dynamicCast((yyvsp[(4) - (10)]));
+ TypePtr keyType = TypePtr::dynamicCast((yyvsp[(5) - (10)]));
+ StringListTokPtr valueMetaData = StringListTokPtr::dynamicCast((yyvsp[(7) - (10)]));
+ TypePtr valueType = TypePtr::dynamicCast((yyvsp[(8) - (10)]));
ContainerPtr cont = unit->currentContainer();
- yyval = cont->createDictionary(ident->v, keyType, keyMetaData->v, valueType, valueMetaData->v, local->v);
+ (yyval) = cont->createDictionary(ident->v, keyType, keyMetaData->v, valueType, valueMetaData->v, local->v);
;}
break;
case 104:
-#line 1177 "../Slice/Grammar.y"
- {
- BoolTokPtr local = BoolTokPtr::dynamicCast(yyvsp[-9]);
- StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[0]);
- StringListTokPtr keyMetaData = StringListTokPtr::dynamicCast(yyvsp[-6]);
- TypePtr keyType = TypePtr::dynamicCast(yyvsp[-5]);
- StringListTokPtr valueMetaData = StringListTokPtr::dynamicCast(yyvsp[-3]);
- TypePtr valueType = TypePtr::dynamicCast(yyvsp[-2]);
+#line 1177 "Grammar.y"
+ {
+ BoolTokPtr local = BoolTokPtr::dynamicCast((yyvsp[(1) - (10)]));
+ StringTokPtr ident = StringTokPtr::dynamicCast((yyvsp[(10) - (10)]));
+ StringListTokPtr keyMetaData = StringListTokPtr::dynamicCast((yyvsp[(4) - (10)]));
+ TypePtr keyType = TypePtr::dynamicCast((yyvsp[(5) - (10)]));
+ StringListTokPtr valueMetaData = StringListTokPtr::dynamicCast((yyvsp[(7) - (10)]));
+ TypePtr valueType = TypePtr::dynamicCast((yyvsp[(8) - (10)]));
ContainerPtr cont = unit->currentContainer();
- yyval = cont->createDictionary(ident->v, keyType, keyMetaData->v, valueType, valueMetaData->v, local->v); // Dummy
+ (yyval) = cont->createDictionary(ident->v, keyType, keyMetaData->v, valueType, valueMetaData->v, local->v); // Dummy
unit->error("keyword `" + ident->v + "' cannot be used as dictionary name");
;}
break;
case 105:
-#line 1194 "../Slice/Grammar.y"
+#line 1194 "Grammar.y"
{
- yyval = yyvsp[0];
+ (yyval) = (yyvsp[(2) - (2)]);
;}
break;
case 106:
-#line 1198 "../Slice/Grammar.y"
+#line 1198 "Grammar.y"
{
- StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[0]);
+ StringTokPtr ident = StringTokPtr::dynamicCast((yyvsp[(2) - (2)]));
unit->error("keyword `" + ident->v + "' cannot be used as enumeration name");
- yyval = yyvsp[0]; // Dummy
+ (yyval) = (yyvsp[(2) - (2)]); // Dummy
;}
break;
case 107:
-#line 1209 "../Slice/Grammar.y"
+#line 1209 "Grammar.y"
{
- BoolTokPtr local = BoolTokPtr::dynamicCast(yyvsp[-1]);
- StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[0]);
+ BoolTokPtr local = BoolTokPtr::dynamicCast((yyvsp[(1) - (2)]));
+ StringTokPtr ident = StringTokPtr::dynamicCast((yyvsp[(2) - (2)]));
ContainerPtr cont = unit->currentContainer();
EnumPtr en = cont->createEnum(ident->v, local->v);
cont->checkIntroduced(ident->v, en);
- yyval = en;
+ (yyval) = en;
;}
break;
case 108:
-#line 1218 "../Slice/Grammar.y"
+#line 1218 "Grammar.y"
{
- EnumPtr en = EnumPtr::dynamicCast(yyvsp[-3]);
+ EnumPtr en = EnumPtr::dynamicCast((yyvsp[(3) - (6)]));
if(en)
{
- EnumeratorListTokPtr enumerators = EnumeratorListTokPtr::dynamicCast(yyvsp[-1]);
+ EnumeratorListTokPtr enumerators = EnumeratorListTokPtr::dynamicCast((yyvsp[(5) - (6)]));
if(enumerators->v.empty())
{
unit->error("enum `" + en->name() + "' must have at least one enumerator");
}
en->setEnumerators(enumerators->v); // Dummy
}
- yyval = yyvsp[-3];
+ (yyval) = (yyvsp[(3) - (6)]);
;}
break;
case 109:
-#line 1233 "../Slice/Grammar.y"
+#line 1233 "Grammar.y"
{
unit->error("missing enumeration name");
- BoolTokPtr local = BoolTokPtr::dynamicCast(yyvsp[-4]);
+ BoolTokPtr local = BoolTokPtr::dynamicCast((yyvsp[(1) - (5)]));
ContainerPtr cont = unit->currentContainer();
EnumPtr en = cont->createEnum(IceUtil::generateUUID(), local->v, Dummy); // Dummy
- EnumeratorListTokPtr enumerators = EnumeratorListTokPtr::dynamicCast(yyvsp[-1]);
+ EnumeratorListTokPtr enumerators = EnumeratorListTokPtr::dynamicCast((yyvsp[(4) - (5)]));
en->setEnumerators(enumerators->v); // Dummy
- yyval = en;
+ (yyval) = en;
;}
break;
case 110:
-#line 1248 "../Slice/Grammar.y"
+#line 1248 "Grammar.y"
{
- EnumeratorListTokPtr ens = EnumeratorListTokPtr::dynamicCast(yyvsp[-2]);
- ens->v.splice(ens->v.end(), EnumeratorListTokPtr::dynamicCast(yyvsp[0])->v);
- yyval = ens;
+ EnumeratorListTokPtr ens = EnumeratorListTokPtr::dynamicCast((yyvsp[(1) - (3)]));
+ ens->v.splice(ens->v.end(), EnumeratorListTokPtr::dynamicCast((yyvsp[(3) - (3)]))->v);
+ (yyval) = ens;
;}
break;
case 111:
-#line 1254 "../Slice/Grammar.y"
+#line 1254 "Grammar.y"
{
;}
break;
case 112:
-#line 1262 "../Slice/Grammar.y"
+#line 1262 "Grammar.y"
{
- StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[0]);
+ StringTokPtr ident = StringTokPtr::dynamicCast((yyvsp[(1) - (1)]));
EnumeratorListTokPtr ens = new EnumeratorListTok;
ContainerPtr cont = unit->currentContainer();
EnumeratorPtr en = cont->createEnumerator(ident->v);
@@ -2733,57 +3064,57 @@ yyreduce:
{
ens->v.push_front(en);
}
- yyval = ens;
+ (yyval) = ens;
;}
break;
case 113:
-#line 1274 "../Slice/Grammar.y"
+#line 1274 "Grammar.y"
{
- StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[0]);
+ StringTokPtr ident = StringTokPtr::dynamicCast((yyvsp[(1) - (1)]));
unit->error("keyword `" + ident->v + "' cannot be used as enumerator");
EnumeratorListTokPtr ens = new EnumeratorListTok; // Dummy
- yyval = ens;
+ (yyval) = ens;
;}
break;
case 114:
-#line 1281 "../Slice/Grammar.y"
+#line 1281 "Grammar.y"
{
EnumeratorListTokPtr ens = new EnumeratorListTok;
- yyval = ens; // Dummy
+ (yyval) = ens; // Dummy
;}
break;
case 115:
-#line 1291 "../Slice/Grammar.y"
+#line 1291 "Grammar.y"
{
BoolTokPtr out = new BoolTok;
out->v = true;
- yyval = out;
+ (yyval) = out;
;}
break;
case 116:
-#line 1297 "../Slice/Grammar.y"
+#line 1297 "Grammar.y"
{
BoolTokPtr out = new BoolTok;
out->v = false;
- yyval = out;
+ (yyval) = out;
;}
break;
case 117:
-#line 1308 "../Slice/Grammar.y"
+#line 1308 "Grammar.y"
{
;}
break;
case 118:
-#line 1311 "../Slice/Grammar.y"
+#line 1311 "Grammar.y"
{
- BoolTokPtr isOutParam = BoolTokPtr::dynamicCast(yyvsp[-2]);
- TypeStringTokPtr tsp = TypeStringTokPtr::dynamicCast(yyvsp[0]);
+ BoolTokPtr isOutParam = BoolTokPtr::dynamicCast((yyvsp[(1) - (3)]));
+ TypeStringTokPtr tsp = TypeStringTokPtr::dynamicCast((yyvsp[(3) - (3)]));
TypePtr type = tsp->v.first;
string ident = tsp->v.second;
OperationPtr op = OperationPtr::dynamicCast(unit->currentContainer());
@@ -2791,7 +3122,7 @@ yyreduce:
{
ParamDeclPtr pd = op->createParamDecl(ident, type, isOutParam->v);
unit->currentContainer()->checkIntroduced(ident, pd);
- StringListTokPtr metaData = StringListTokPtr::dynamicCast(yyvsp[-1]);
+ StringListTokPtr metaData = StringListTokPtr::dynamicCast((yyvsp[(2) - (3)]));
if(!metaData->v.empty())
{
pd->setMetaData(metaData->v);
@@ -2801,10 +3132,10 @@ yyreduce:
break;
case 119:
-#line 1329 "../Slice/Grammar.y"
+#line 1329 "Grammar.y"
{
- BoolTokPtr isOutParam = BoolTokPtr::dynamicCast(yyvsp[-2]);
- TypeStringTokPtr tsp = TypeStringTokPtr::dynamicCast(yyvsp[0]);
+ BoolTokPtr isOutParam = BoolTokPtr::dynamicCast((yyvsp[(3) - (5)]));
+ TypeStringTokPtr tsp = TypeStringTokPtr::dynamicCast((yyvsp[(5) - (5)]));
TypePtr type = tsp->v.first;
string ident = tsp->v.second;
OperationPtr op = OperationPtr::dynamicCast(unit->currentContainer());
@@ -2812,7 +3143,7 @@ yyreduce:
{
ParamDeclPtr pd = op->createParamDecl(ident, type, isOutParam->v);
unit->currentContainer()->checkIntroduced(ident, pd);
- StringListTokPtr metaData = StringListTokPtr::dynamicCast(yyvsp[-1]);
+ StringListTokPtr metaData = StringListTokPtr::dynamicCast((yyvsp[(4) - (5)]));
if(!metaData->v.empty())
{
pd->setMetaData(metaData->v);
@@ -2822,11 +3153,11 @@ yyreduce:
break;
case 120:
-#line 1347 "../Slice/Grammar.y"
+#line 1347 "Grammar.y"
{
- BoolTokPtr isOutParam = BoolTokPtr::dynamicCast(yyvsp[-3]);
- TypePtr type = TypePtr::dynamicCast(yyvsp[-1]);
- StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[0]);
+ BoolTokPtr isOutParam = BoolTokPtr::dynamicCast((yyvsp[(1) - (4)]));
+ TypePtr type = TypePtr::dynamicCast((yyvsp[(3) - (4)]));
+ StringTokPtr ident = StringTokPtr::dynamicCast((yyvsp[(4) - (4)]));
OperationPtr op = OperationPtr::dynamicCast(unit->currentContainer());
if(op)
{
@@ -2837,11 +3168,11 @@ yyreduce:
break;
case 121:
-#line 1359 "../Slice/Grammar.y"
+#line 1359 "Grammar.y"
{
- BoolTokPtr isOutParam = BoolTokPtr::dynamicCast(yyvsp[-3]);
- TypePtr type = TypePtr::dynamicCast(yyvsp[-1]);
- StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[0]);
+ BoolTokPtr isOutParam = BoolTokPtr::dynamicCast((yyvsp[(3) - (6)]));
+ TypePtr type = TypePtr::dynamicCast((yyvsp[(5) - (6)]));
+ StringTokPtr ident = StringTokPtr::dynamicCast((yyvsp[(6) - (6)]));
OperationPtr op = OperationPtr::dynamicCast(unit->currentContainer());
if(op)
{
@@ -2852,10 +3183,10 @@ yyreduce:
break;
case 122:
-#line 1371 "../Slice/Grammar.y"
+#line 1371 "Grammar.y"
{
- BoolTokPtr isOutParam = BoolTokPtr::dynamicCast(yyvsp[-2]);
- TypePtr type = TypePtr::dynamicCast(yyvsp[0]);
+ BoolTokPtr isOutParam = BoolTokPtr::dynamicCast((yyvsp[(1) - (3)]));
+ TypePtr type = TypePtr::dynamicCast((yyvsp[(3) - (3)]));
OperationPtr op = OperationPtr::dynamicCast(unit->currentContainer());
if(op)
{
@@ -2866,10 +3197,10 @@ yyreduce:
break;
case 123:
-#line 1382 "../Slice/Grammar.y"
+#line 1382 "Grammar.y"
{
- BoolTokPtr isOutParam = BoolTokPtr::dynamicCast(yyvsp[-2]);
- TypePtr type = TypePtr::dynamicCast(yyvsp[0]);
+ BoolTokPtr isOutParam = BoolTokPtr::dynamicCast((yyvsp[(3) - (5)]));
+ TypePtr type = TypePtr::dynamicCast((yyvsp[(5) - (5)]));
OperationPtr op = OperationPtr::dynamicCast(unit->currentContainer());
if(op)
{
@@ -2880,126 +3211,126 @@ yyreduce:
break;
case 124:
-#line 1398 "../Slice/Grammar.y"
+#line 1398 "Grammar.y"
{
- yyval = yyvsp[0];
+ (yyval) = (yyvsp[(2) - (2)]);
;}
break;
case 125:
-#line 1402 "../Slice/Grammar.y"
+#line 1402 "Grammar.y"
{
- yyval = new ExceptionListTok;
+ (yyval) = new ExceptionListTok;
;}
break;
case 126:
-#line 1411 "../Slice/Grammar.y"
+#line 1411 "Grammar.y"
{
;}
break;
case 127:
-#line 1414 "../Slice/Grammar.y"
+#line 1414 "Grammar.y"
{
- StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[0]);
+ StringTokPtr ident = StringTokPtr::dynamicCast((yyvsp[(2) - (2)]));
ident->v = "::" + ident->v;
- yyval = ident;
+ (yyval) = ident;
;}
break;
case 128:
-#line 1420 "../Slice/Grammar.y"
+#line 1420 "Grammar.y"
{
- StringTokPtr scoped = StringTokPtr::dynamicCast(yyvsp[-2]);
- StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[0]);
+ StringTokPtr scoped = StringTokPtr::dynamicCast((yyvsp[(1) - (3)]));
+ StringTokPtr ident = StringTokPtr::dynamicCast((yyvsp[(3) - (3)]));
scoped->v += "::";
scoped->v += ident->v;
- yyval = scoped;
+ (yyval) = scoped;
;}
break;
case 129:
-#line 1433 "../Slice/Grammar.y"
+#line 1433 "Grammar.y"
{
- yyval = unit->builtin(Builtin::KindByte);
+ (yyval) = unit->builtin(Builtin::KindByte);
;}
break;
case 130:
-#line 1437 "../Slice/Grammar.y"
+#line 1437 "Grammar.y"
{
- yyval = unit->builtin(Builtin::KindBool);
+ (yyval) = unit->builtin(Builtin::KindBool);
;}
break;
case 131:
-#line 1441 "../Slice/Grammar.y"
+#line 1441 "Grammar.y"
{
- yyval = unit->builtin(Builtin::KindShort);
+ (yyval) = unit->builtin(Builtin::KindShort);
;}
break;
case 132:
-#line 1445 "../Slice/Grammar.y"
+#line 1445 "Grammar.y"
{
- yyval = unit->builtin(Builtin::KindInt);
+ (yyval) = unit->builtin(Builtin::KindInt);
;}
break;
case 133:
-#line 1449 "../Slice/Grammar.y"
+#line 1449 "Grammar.y"
{
- yyval = unit->builtin(Builtin::KindLong);
+ (yyval) = unit->builtin(Builtin::KindLong);
;}
break;
case 134:
-#line 1453 "../Slice/Grammar.y"
+#line 1453 "Grammar.y"
{
- yyval = unit->builtin(Builtin::KindFloat);
+ (yyval) = unit->builtin(Builtin::KindFloat);
;}
break;
case 135:
-#line 1457 "../Slice/Grammar.y"
+#line 1457 "Grammar.y"
{
- yyval = unit->builtin(Builtin::KindDouble);
+ (yyval) = unit->builtin(Builtin::KindDouble);
;}
break;
case 136:
-#line 1461 "../Slice/Grammar.y"
+#line 1461 "Grammar.y"
{
- yyval = unit->builtin(Builtin::KindString);
+ (yyval) = unit->builtin(Builtin::KindString);
;}
break;
case 137:
-#line 1465 "../Slice/Grammar.y"
+#line 1465 "Grammar.y"
{
- yyval = unit->builtin(Builtin::KindObject);
+ (yyval) = unit->builtin(Builtin::KindObject);
;}
break;
case 138:
-#line 1469 "../Slice/Grammar.y"
+#line 1469 "Grammar.y"
{
- yyval = unit->builtin(Builtin::KindObjectProxy);
+ (yyval) = unit->builtin(Builtin::KindObjectProxy);
;}
break;
case 139:
-#line 1473 "../Slice/Grammar.y"
+#line 1473 "Grammar.y"
{
- yyval = unit->builtin(Builtin::KindLocalObject);
+ (yyval) = unit->builtin(Builtin::KindLocalObject);
;}
break;
case 140:
-#line 1477 "../Slice/Grammar.y"
+#line 1477 "Grammar.y"
{
- StringTokPtr scoped = StringTokPtr::dynamicCast(yyvsp[0]);
+ StringTokPtr scoped = StringTokPtr::dynamicCast((yyvsp[(1) - (1)]));
ContainerPtr cont = unit->currentContainer();
if(cont)
{
@@ -3009,19 +3340,19 @@ yyreduce:
YYERROR; // Can't continue, jump to next yyerrok
}
cont->checkIntroduced(scoped->v);
- yyval = types.front();
+ (yyval) = types.front();
}
else
{
- yyval = 0;
+ (yyval) = 0;
}
;}
break;
case 141:
-#line 1496 "../Slice/Grammar.y"
+#line 1496 "Grammar.y"
{
- StringTokPtr scoped = StringTokPtr::dynamicCast(yyvsp[-1]);
+ StringTokPtr scoped = StringTokPtr::dynamicCast((yyvsp[(1) - (2)]));
ContainerPtr cont = unit->currentContainer();
if(cont)
{
@@ -3048,73 +3379,73 @@ yyreduce:
}
*p = new Proxy(cl);
}
- yyval = types.front();
+ (yyval) = types.front();
}
else
{
- yyval = 0;
+ (yyval) = 0;
}
;}
break;
case 142:
-#line 1537 "../Slice/Grammar.y"
+#line 1537 "Grammar.y"
{
- StringTokPtr str1 = StringTokPtr::dynamicCast(yyvsp[-1]);
- StringTokPtr str2 = StringTokPtr::dynamicCast(yyvsp[0]);
+ StringTokPtr str1 = StringTokPtr::dynamicCast((yyvsp[(1) - (2)]));
+ StringTokPtr str2 = StringTokPtr::dynamicCast((yyvsp[(2) - (2)]));
str1->v += str2->v;
;}
break;
case 143:
-#line 1543 "../Slice/Grammar.y"
+#line 1543 "Grammar.y"
{
;}
break;
case 144:
-#line 1551 "../Slice/Grammar.y"
+#line 1551 "Grammar.y"
{
- StringTokPtr str = StringTokPtr::dynamicCast(yyvsp[0]);
- StringListTokPtr stringList = StringListTokPtr::dynamicCast(yyvsp[-2]);
+ StringTokPtr str = StringTokPtr::dynamicCast((yyvsp[(3) - (3)]));
+ StringListTokPtr stringList = StringListTokPtr::dynamicCast((yyvsp[(1) - (3)]));
stringList->v.push_back(str->v);
- yyval = stringList;
+ (yyval) = stringList;
;}
break;
case 145:
-#line 1558 "../Slice/Grammar.y"
+#line 1558 "Grammar.y"
{
- StringTokPtr str = StringTokPtr::dynamicCast(yyvsp[0]);
+ StringTokPtr str = StringTokPtr::dynamicCast((yyvsp[(1) - (1)]));
StringListTokPtr stringList = new StringListTok;
stringList->v.push_back(str->v);
- yyval = stringList;
+ (yyval) = stringList;
;}
break;
case 146:
-#line 1570 "../Slice/Grammar.y"
+#line 1570 "Grammar.y"
{
BoolTokPtr local = new BoolTok;
local->v = true;
- yyval = local;
+ (yyval) = local;
;}
break;
case 147:
-#line 1576 "../Slice/Grammar.y"
+#line 1576 "Grammar.y"
{
BoolTokPtr local = new BoolTok;
local->v = false;
- yyval = local;
+ (yyval) = local;
;}
break;
case 148:
-#line 1587 "../Slice/Grammar.y"
+#line 1587 "Grammar.y"
{
BuiltinPtr type = unit->builtin(Builtin::KindLong);
- IntegerTokPtr intVal = IntegerTokPtr::dynamicCast(yyvsp[0]);
+ IntegerTokPtr intVal = IntegerTokPtr::dynamicCast((yyvsp[(1) - (1)]));
ostringstream sstr;
sstr << intVal->v;
ConstDefTokPtr def = new ConstDefTok;
@@ -3122,15 +3453,15 @@ yyreduce:
def->v.value = type;
def->v.valueAsString = sstr.str();
def->v.valueAsLiteral = intVal->literal;
- yyval = def;
+ (yyval) = def;
;}
break;
case 149:
-#line 1600 "../Slice/Grammar.y"
+#line 1600 "Grammar.y"
{
BuiltinPtr type = unit->builtin(Builtin::KindDouble);
- FloatingTokPtr floatVal = FloatingTokPtr::dynamicCast(yyvsp[0]);
+ FloatingTokPtr floatVal = FloatingTokPtr::dynamicCast((yyvsp[(1) - (1)]));
ostringstream sstr;
sstr << floatVal->v;
ConstDefTokPtr def = new ConstDefTok;
@@ -3138,14 +3469,14 @@ yyreduce:
def->v.value = type;
def->v.valueAsString = sstr.str();
def->v.valueAsLiteral = floatVal->literal;
- yyval = def;
+ (yyval) = def;
;}
break;
case 150:
-#line 1613 "../Slice/Grammar.y"
+#line 1613 "Grammar.y"
{
- StringTokPtr scoped = StringTokPtr::dynamicCast(yyvsp[0]);
+ StringTokPtr scoped = StringTokPtr::dynamicCast((yyvsp[(1) - (1)]));
ConstDefTokPtr def = new ConstDefTok;
ContainedList cl = unit->currentContainer()->lookupContained(scoped->v);
if(cl.empty())
@@ -3176,261 +3507,260 @@ yyreduce:
def->v.valueAsString = scoped->v;
def->v.valueAsLiteral = scoped->v;
}
- yyval = def;
+ (yyval) = def;
;}
break;
case 151:
-#line 1648 "../Slice/Grammar.y"
+#line 1648 "Grammar.y"
{
BuiltinPtr type = unit->builtin(Builtin::KindString);
- StringTokPtr literal = StringTokPtr::dynamicCast(yyvsp[0]);
+ StringTokPtr literal = StringTokPtr::dynamicCast((yyvsp[(1) - (1)]));
ConstDefTokPtr def = new ConstDefTok;
def->v.type = type;
def->v.value = type;
def->v.valueAsString = literal->v;
def->v.valueAsLiteral = literal->literal;
- yyval = def;
+ (yyval) = def;
;}
break;
case 152:
-#line 1659 "../Slice/Grammar.y"
+#line 1659 "Grammar.y"
{
BuiltinPtr type = unit->builtin(Builtin::KindBool);
- StringTokPtr literal = StringTokPtr::dynamicCast(yyvsp[0]);
+ StringTokPtr literal = StringTokPtr::dynamicCast((yyvsp[(1) - (1)]));
ConstDefTokPtr def = new ConstDefTok;
def->v.type = type;
def->v.value = type;
def->v.valueAsString = literal->v;
def->v.valueAsLiteral = "false";
- yyval = def;
+ (yyval) = def;
;}
break;
case 153:
-#line 1670 "../Slice/Grammar.y"
+#line 1670 "Grammar.y"
{
BuiltinPtr type = unit->builtin(Builtin::KindBool);
- StringTokPtr literal = StringTokPtr::dynamicCast(yyvsp[0]);
+ StringTokPtr literal = StringTokPtr::dynamicCast((yyvsp[(1) - (1)]));
ConstDefTokPtr def = new ConstDefTok;
def->v.type = type;
def->v.value = type;
def->v.valueAsString = literal->v;
def->v.valueAsLiteral = "true";
- yyval = def;
+ (yyval) = def;
;}
break;
case 154:
-#line 1686 "../Slice/Grammar.y"
+#line 1686 "Grammar.y"
{
- StringListTokPtr metaData = StringListTokPtr::dynamicCast(yyvsp[-4]);
- TypePtr const_type = TypePtr::dynamicCast(yyvsp[-3]);
- StringTokPtr ident = StringTokPtr::dynamicCast(yyvsp[-2]);
- ConstDefTokPtr value = ConstDefTokPtr::dynamicCast(yyvsp[0]);
- yyval = unit->currentContainer()->createConst(ident->v, const_type, metaData->v,
+ StringListTokPtr metaData = StringListTokPtr::dynamicCast((yyvsp[(2) - (6)]));
+ TypePtr const_type = TypePtr::dynamicCast((yyvsp[(3) - (6)]));
+ StringTokPtr ident = StringTokPtr::dynamicCast((yyvsp[(4) - (6)]));
+ ConstDefTokPtr value = ConstDefTokPtr::dynamicCast((yyvsp[(6) - (6)]));
+ (yyval) = unit->currentContainer()->createConst(ident->v, const_type, metaData->v,
value->v.value, value->v.valueAsString, value->v.valueAsLiteral);
;}
break;
case 155:
-#line 1695 "../Slice/Grammar.y"
+#line 1695 "Grammar.y"
{
- StringListTokPtr metaData = StringListTokPtr::dynamicCast(yyvsp[-3]);
- TypePtr const_type = TypePtr::dynamicCast(yyvsp[-2]);
- ConstDefTokPtr value = ConstDefTokPtr::dynamicCast(yyvsp[0]);
+ StringListTokPtr metaData = StringListTokPtr::dynamicCast((yyvsp[(2) - (5)]));
+ TypePtr const_type = TypePtr::dynamicCast((yyvsp[(3) - (5)]));
+ ConstDefTokPtr value = ConstDefTokPtr::dynamicCast((yyvsp[(5) - (5)]));
unit->error("missing constant name");
- yyval = unit->currentContainer()->createConst(IceUtil::generateUUID(), const_type, metaData->v,
+ (yyval) = unit->currentContainer()->createConst(IceUtil::generateUUID(), const_type, metaData->v,
value->v.value, value->v.valueAsString,
value->v.valueAsLiteral, Dummy); // Dummy
;}
break;
case 156:
-#line 1710 "../Slice/Grammar.y"
+#line 1710 "Grammar.y"
{
;}
break;
case 157:
-#line 1713 "../Slice/Grammar.y"
+#line 1713 "Grammar.y"
{
;}
break;
case 158:
-#line 1716 "../Slice/Grammar.y"
+#line 1716 "Grammar.y"
{
;}
break;
case 159:
-#line 1719 "../Slice/Grammar.y"
+#line 1719 "Grammar.y"
{
;}
break;
case 160:
-#line 1722 "../Slice/Grammar.y"
+#line 1722 "Grammar.y"
{
;}
break;
case 161:
-#line 1725 "../Slice/Grammar.y"
+#line 1725 "Grammar.y"
{
;}
break;
case 162:
-#line 1728 "../Slice/Grammar.y"
+#line 1728 "Grammar.y"
{
;}
break;
case 163:
-#line 1731 "../Slice/Grammar.y"
+#line 1731 "Grammar.y"
{
;}
break;
case 164:
-#line 1734 "../Slice/Grammar.y"
+#line 1734 "Grammar.y"
{
;}
break;
case 165:
-#line 1737 "../Slice/Grammar.y"
+#line 1737 "Grammar.y"
{
;}
break;
case 166:
-#line 1740 "../Slice/Grammar.y"
+#line 1740 "Grammar.y"
{
;}
break;
case 167:
-#line 1743 "../Slice/Grammar.y"
+#line 1743 "Grammar.y"
{
;}
break;
case 168:
-#line 1746 "../Slice/Grammar.y"
+#line 1746 "Grammar.y"
{
;}
break;
case 169:
-#line 1749 "../Slice/Grammar.y"
+#line 1749 "Grammar.y"
{
;}
break;
case 170:
-#line 1752 "../Slice/Grammar.y"
+#line 1752 "Grammar.y"
{
;}
break;
case 171:
-#line 1755 "../Slice/Grammar.y"
+#line 1755 "Grammar.y"
{
;}
break;
case 172:
-#line 1758 "../Slice/Grammar.y"
+#line 1758 "Grammar.y"
{
;}
break;
case 173:
-#line 1761 "../Slice/Grammar.y"
+#line 1761 "Grammar.y"
{
;}
break;
case 174:
-#line 1764 "../Slice/Grammar.y"
+#line 1764 "Grammar.y"
{
;}
break;
case 175:
-#line 1767 "../Slice/Grammar.y"
+#line 1767 "Grammar.y"
{
;}
break;
case 176:
-#line 1770 "../Slice/Grammar.y"
+#line 1770 "Grammar.y"
{
;}
break;
case 177:
-#line 1773 "../Slice/Grammar.y"
+#line 1773 "Grammar.y"
{
;}
break;
case 178:
-#line 1776 "../Slice/Grammar.y"
+#line 1776 "Grammar.y"
{
;}
break;
case 179:
-#line 1779 "../Slice/Grammar.y"
+#line 1779 "Grammar.y"
{
;}
break;
case 180:
-#line 1782 "../Slice/Grammar.y"
+#line 1782 "Grammar.y"
{
;}
break;
case 181:
-#line 1785 "../Slice/Grammar.y"
+#line 1785 "Grammar.y"
{
;}
break;
case 182:
-#line 1788 "../Slice/Grammar.y"
+#line 1788 "Grammar.y"
{
;}
break;
case 183:
-#line 1791 "../Slice/Grammar.y"
+#line 1791 "Grammar.y"
{
;}
break;
case 184:
-#line 1794 "../Slice/Grammar.y"
+#line 1794 "Grammar.y"
{
;}
break;
+/* Line 1267 of yacc.c. */
+#line 3758 "Grammar.tab.c"
+ default: break;
}
+ YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
-/* Line 1000 of yacc.c. */
-#line 3429 "Grammar.tab.c"
-
- yyvsp -= yylen;
- yyssp -= yylen;
-
-
+ YYPOPSTACK (yylen);
+ yylen = 0;
YY_STACK_PRINT (yyss, yyssp);
*++yyvsp = yyval;
@@ -3459,99 +3789,65 @@ yyerrlab:
if (!yyerrstatus)
{
++yynerrs;
-#if YYERROR_VERBOSE
- yyn = yypact[yystate];
-
- if (YYPACT_NINF < yyn && yyn < YYLAST)
- {
- YYSIZE_T yysize = 0;
- int yytype = YYTRANSLATE (yychar);
- const char* yyprefix;
- char *yymsg;
- int yyx;
-
- /* Start YYX at -YYN if negative to avoid negative indexes in
- YYCHECK. */
- int yyxbegin = yyn < 0 ? -yyn : 0;
-
- /* Stay within bounds of both yycheck and yytname. */
- int yychecklim = YYLAST - yyn;
- int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
- int yycount = 0;
-
- yyprefix = ", expecting ";
- for (yyx = yyxbegin; yyx < yyxend; ++yyx)
- if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+#if ! YYERROR_VERBOSE
+ yyerror (YY_("syntax error"));
+#else
+ {
+ YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
+ if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
+ {
+ YYSIZE_T yyalloc = 2 * yysize;
+ if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
+ yyalloc = YYSTACK_ALLOC_MAXIMUM;
+ if (yymsg != yymsgbuf)
+ YYSTACK_FREE (yymsg);
+ yymsg = (char *) YYSTACK_ALLOC (yyalloc);
+ if (yymsg)
+ yymsg_alloc = yyalloc;
+ else
{
- yysize += yystrlen (yyprefix) + yystrlen (yytname [yyx]);
- yycount += 1;
- if (yycount == 5)
- {
- yysize = 0;
- break;
- }
+ yymsg = yymsgbuf;
+ yymsg_alloc = sizeof yymsgbuf;
}
- yysize += (sizeof ("syntax error, unexpected ")
- + yystrlen (yytname[yytype]));
- yymsg = (char *) YYSTACK_ALLOC (yysize);
- if (yymsg != 0)
- {
- char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
- yyp = yystpcpy (yyp, yytname[yytype]);
+ }
- if (yycount < 5)
- {
- yyprefix = ", expecting ";
- for (yyx = yyxbegin; yyx < yyxend; ++yyx)
- if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
- {
- yyp = yystpcpy (yyp, yyprefix);
- yyp = yystpcpy (yyp, yytname[yyx]);
- yyprefix = " or ";
- }
- }
- yyerror (yymsg);
- YYSTACK_FREE (yymsg);
- }
- else
- yyerror ("syntax error; also virtual memory exhausted");
- }
- else
-#endif /* YYERROR_VERBOSE */
- yyerror ("syntax error");
+ if (0 < yysize && yysize <= yymsg_alloc)
+ {
+ (void) yysyntax_error (yymsg, yystate, yychar);
+ yyerror (yymsg);
+ }
+ else
+ {
+ yyerror (YY_("syntax error"));
+ if (yysize != 0)
+ goto yyexhaustedlab;
+ }
+ }
+#endif
}
if (yyerrstatus == 3)
{
- /* If just tried and failed to reuse lookahead token after an
+ /* If just tried and failed to reuse look-ahead token after an
error, discard it. */
if (yychar <= YYEOF)
- {
- /* If at end of input, pop the error token,
- then the rest of the stack, then return failure. */
+ {
+ /* Return failure if at end of input. */
if (yychar == YYEOF)
- for (;;)
- {
- YYPOPSTACK;
- if (yyssp == yyss)
- YYABORT;
- YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
- yydestruct (yystos[*yyssp], yyvsp);
- }
- }
+ YYABORT;
+ }
else
{
- YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);
- yydestruct (yytoken, &yylval);
+ yydestruct ("Error: discarding",
+ yytoken, &yylval);
yychar = YYEMPTY;
-
}
}
- /* Else will try to reuse lookahead token after shifting the error
+ /* Else will try to reuse look-ahead token after shifting the error
token. */
goto yyerrlab1;
@@ -3561,15 +3857,17 @@ yyerrlab:
`---------------------------------------------------*/
yyerrorlab:
-#ifdef __GNUC__
- /* Pacify GCC when the user code never invokes YYERROR and the label
- yyerrorlab therefore never appears in user code. */
- if (0)
+ /* Pacify compilers like GCC when the user code never invokes
+ YYERROR and the label yyerrorlab therefore never appears in user
+ code. */
+ if (/*CONSTCOND*/ 0)
goto yyerrorlab;
-#endif
- yyvsp -= yylen;
- yyssp -= yylen;
+ /* Do not reclaim the symbols of the rule which action triggered
+ this YYERROR. */
+ YYPOPSTACK (yylen);
+ yylen = 0;
+ YY_STACK_PRINT (yyss, yyssp);
yystate = *yyssp;
goto yyerrlab1;
@@ -3598,9 +3896,10 @@ yyerrlab1:
if (yyssp == yyss)
YYABORT;
- YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
- yydestruct (yystos[yystate], yyvsp);
- YYPOPSTACK;
+
+ yydestruct ("Error: popping",
+ yystos[yystate], yyvsp);
+ YYPOPSTACK (1);
yystate = *yyssp;
YY_STACK_PRINT (yyss, yyssp);
}
@@ -3608,11 +3907,12 @@ yyerrlab1:
if (yyn == YYFINAL)
YYACCEPT;
- YYDPRINTF ((stderr, "Shifting error token, "));
-
*++yyvsp = yylval;
+ /* Shift the error token. */
+ YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+
yystate = yyn;
goto yynewstate;
@@ -3632,24 +3932,42 @@ yyabortlab:
goto yyreturn;
#ifndef yyoverflow
-/*----------------------------------------------.
-| yyoverflowlab -- parser overflow comes here. |
-`----------------------------------------------*/
-yyoverflowlab:
- yyerror ("parser stack overflow");
+/*-------------------------------------------------.
+| yyexhaustedlab -- memory exhaustion comes here. |
+`-------------------------------------------------*/
+yyexhaustedlab:
+ yyerror (YY_("memory exhausted"));
yyresult = 2;
/* Fall through. */
#endif
yyreturn:
+ if (yychar != YYEOF && yychar != YYEMPTY)
+ yydestruct ("Cleanup: discarding lookahead",
+ yytoken, &yylval);
+ /* Do not reclaim the symbols of the rule which action triggered
+ this YYABORT or YYACCEPT. */
+ YYPOPSTACK (yylen);
+ YY_STACK_PRINT (yyss, yyssp);
+ while (yyssp != yyss)
+ {
+ yydestruct ("Cleanup: popping",
+ yystos[*yyssp], yyvsp);
+ YYPOPSTACK (1);
+ }
#ifndef yyoverflow
if (yyss != yyssa)
YYSTACK_FREE (yyss);
#endif
- return yyresult;
+#if YYERROR_VERBOSE
+ if (yymsg != yymsgbuf)
+ YYSTACK_FREE (yymsg);
+#endif
+ /* Make sure YYID is used. */
+ return YYID (yyresult);
}
-#line 1798 "../Slice/Grammar.y"
+#line 1798 "Grammar.y"
diff --git a/cpp/src/Slice/Grammar.h b/cpp/src/Slice/Grammar.h
index 08d77ed6fa6..a7ad3a24642 100644
--- a/cpp/src/Slice/Grammar.h
+++ b/cpp/src/Slice/Grammar.h
@@ -1,7 +1,9 @@
-/* A Bison parser, made by GNU Bison 1.875c. */
+/* A Bison parser, made by GNU Bison 2.3. */
-/* Skeleton parser for Yacc-like parsing with Bison,
- Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+/* Skeleton interface for Bison's Yacc-like parsers in C
+
+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+ Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -15,13 +17,21 @@
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA. */
+
+/* As a special exception, you may create a larger work that contains
+ part or all of the Bison parser skeleton and distribute that work
+ under terms of your choice, so long as that work isn't itself a
+ parser generator using the skeleton or a modified version thereof
+ as a parser skeleton. Alternatively, if you modify or redistribute
+ the parser skeleton itself, you may (at your option) remove this
+ special exception, which will cause the skeleton and the resulting
+ Bison output files to be licensed under the GNU General Public
+ License without this special exception.
-/* As a special exception, when this file is copied by Bison into a
- Bison output file, you may use that output file without restriction.
- This special exception was added by the Free Software Foundation
- in version 1.24 of Bison. */
+ This special exception was added by the Free Software Foundation in
+ version 2.2 of Bison. */
/* Tokens. */
#ifndef YYTOKENTYPE
@@ -72,6 +82,7 @@
BAD_CHAR = 298
};
#endif
+/* Tokens. */
#define ICE_MODULE 258
#define ICE_CLASS 259
#define ICE_INTERFACE 260
@@ -117,7 +128,7 @@
-#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
typedef int YYSTYPE;
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
@@ -126,5 +137,3 @@ typedef int YYSTYPE;
-
-
diff --git a/cpp/src/Slice/Grammar.y b/cpp/src/Slice/Grammar.y
index cc682a336ad..6e338ee3f73 100644
--- a/cpp/src/Slice/Grammar.y
+++ b/cpp/src/Slice/Grammar.y
@@ -149,7 +149,6 @@ definitions
{
contained->setMetaData(metaData->v);
}
- unit->setSeenDefinition();
}
';' definitions
| error ';'
@@ -228,6 +227,7 @@ module_def
// ----------------------------------------------------------------------
: ICE_MODULE ICE_IDENTIFIER
{
+ unit->setSeenDefinition();
StringTokPtr ident = StringTokPtr::dynamicCast($2);
ContainerPtr cont = unit->currentContainer();
ModulePtr module = cont->createModule(ident->v);
diff --git a/cpp/src/Slice/JavaUtil.cpp b/cpp/src/Slice/JavaUtil.cpp
index b67f36055a4..e1ca7fdbba0 100644
--- a/cpp/src/Slice/JavaUtil.cpp
+++ b/cpp/src/Slice/JavaUtil.cpp
@@ -10,6 +10,7 @@
#include <IceUtil/DisableWarnings.h>
#include <Slice/JavaUtil.h>
#include <Slice/FileTracker.h>
+#include <Slice/Util.h>
#include <IceUtil/Functional.h>
#include <IceUtil/DisableWarnings.h>
@@ -371,25 +372,44 @@ Slice::JavaGenerator::convertScopedName(const string& scoped, const string& pref
}
string
+Slice::JavaGenerator::getPackagePrefix(const ContainedPtr& cont) const
+{
+ UnitPtr unit = cont->container()->unit();
+ string file = cont->file();
+ assert(!file.empty());
+
+ map<string, string>::const_iterator p = _filePackagePrefix.find(file);
+ if(p != _filePackagePrefix.end())
+ {
+ return p->second;
+ }
+
+ static const string prefix = "java:package:";
+ DefinitionContextPtr dc = unit->findDefinitionContext(file);
+ assert(dc);
+ string q = dc->findMetaData(prefix);
+ if(!q.empty())
+ {
+ q = q.substr(prefix.size());
+ }
+ _filePackagePrefix[file] = q;
+ return q;
+}
+
+string
Slice::JavaGenerator::getPackage(const ContainedPtr& cont) const
{
string scope = convertScopedName(cont->scope());
-
- DefinitionContextPtr dc = cont->definitionContext();
- if(dc)
+ string prefix = getPackagePrefix(cont);
+ if(!prefix.empty())
{
- static const string prefix = "java:package:";
- string package = dc->findMetaData(prefix);
- if(!package.empty())
+ if(!scope.empty())
{
- if(!scope.empty())
- {
- return package.substr(prefix.size()) + "." + scope;
- }
- else
- {
- return package.substr(prefix.size());
- }
+ return prefix + "." + scope;
+ }
+ else
+ {
+ return prefix;
}
}
@@ -550,6 +570,22 @@ Slice::JavaGenerator::typeToString(const TypePtr& type,
}
else
{
+ BuiltinPtr builtin = BuiltinPtr::dynamicCast(seq->type());
+ if(builtin && builtin->kind() == Builtin::KindByte)
+ {
+ string prefix = "java:serializable:";
+ string meta;
+ if(seq->findMetaData(prefix, meta))
+ {
+ return string("Ice.Holder<") + meta.substr(prefix.size()) + " >";
+ }
+ prefix = "java:protobuf:";
+ if(seq->findMetaData(prefix, meta))
+ {
+ return string("Ice.Holder<") + meta.substr(prefix.size()) + " >";
+ }
+ }
+
//
// Only use the type's generated holder if the instance and
// formal types match.
@@ -594,6 +630,22 @@ Slice::JavaGenerator::typeToString(const TypePtr& type,
}
else
{
+ BuiltinPtr builtin = BuiltinPtr::dynamicCast(seq->type());
+ if(builtin && builtin->kind() == Builtin::KindByte)
+ {
+ string prefix = "java:serializable:";
+ string meta;
+ if(seq->findMetaData(prefix, meta))
+ {
+ return meta.substr(prefix.size());
+ }
+ prefix = "java:protobuf:";
+ if(seq->findMetaData(prefix, meta))
+ {
+ return meta.substr(prefix.size());
+ }
+ }
+
string instanceType, formalType;
getSequenceTypes(seq, package, metaData, instanceType, formalType);
return formal ? formalType : instanceType;
@@ -1240,15 +1292,64 @@ Slice::JavaGenerator::writeSequenceMarshalUnmarshalCode(Output& out,
{
string stream = marshal ? "__os" : "__is";
string v = param;
+ bool java2 = seq->definitionContext()->findMetaData(_java2MetaData) == _java2MetaData;
+
+ //
+ // If the sequence is a byte sequence, check if there's the serializable or protobuf metadata to
+ // get rid of these two easy cases first.
+ //
+ BuiltinPtr builtin = BuiltinPtr::dynamicCast(seq->type());
+ if(builtin && builtin->kind() == Builtin::KindByte)
+ {
+ string meta;
+ static const string protobuf = "java:protobuf:";
+ static const string serializable = "java:serializable:";
+ if(seq->findMetaData(serializable, meta))
+ {
+ if(marshal)
+ {
+ out << nl << stream << ".writeSerializable(" << v << ");";
+ }
+ else
+ {
+ string type = typeToString(seq, TypeModeIn, package);
+ out << nl << v << " = (" << type << ")" << stream << ".readSerializable();";
+ }
+ return;
+ }
+ else if(seq->findMetaData(protobuf, meta))
+ {
+ if(marshal)
+ {
+ out << nl << "if(!" << v << ".isInitialized())";
+ out << sb;
+ out << nl << "throw new Ice.MarshalException(\"type not fully initialized\");";
+ out << eb;
+ out << nl << stream << ".writeByteSeq(" << v << ".toByteArray());";
+ }
+ else
+ {
+ string type = typeToString(seq, TypeModeIn, package);
+ out << nl << "try";
+ out << sb;
+ out << nl << v << " = " << type << ".parseFrom(" << stream << ".readByteSeq());";
+ out << eb;
+ out << nl << "catch(com.google.protobuf.InvalidProtocolBufferException __ex)";
+ out << sb;
+ out << nl << "Ice.MarshalException __mex = new Ice.MarshalException();";
+ out << nl << "__mex.initCause(__ex);";
+ out << nl << "throw __mex;";
+ out << eb;
+ }
+ return;
+ }
+ }
- bool java2 = false;
bool customType = false;
string instanceType;
if(_featureProfile != Slice::IceE)
{
- java2 = seq->definitionContext()->findMetaData(_java2MetaData) == _java2MetaData;
-
//
// We have to determine whether it's possible to use the
// type's generated helper class for this marshal/unmarshal
@@ -1299,7 +1400,7 @@ Slice::JavaGenerator::writeSequenceMarshalUnmarshalCode(Output& out,
while(s)
{
//
- // Stop if the inner sequence type has a custom type.
+ // Stop if the inner sequence type has a custom, serializable or protobuf type.
//
if(hasTypeMetaData(s) && _featureProfile != Slice::IceE)
{
@@ -2495,10 +2596,60 @@ Slice::JavaGenerator::writeStreamSequenceMarshalUnmarshalCode(Output& out,
{
string stream = marshal ? "__outS" : "__inS";
string v = param;
-
bool java2 = seq->definitionContext()->findMetaData(_java2MetaData) == _java2MetaData;
//
+ // If the sequence is a byte sequence, check if there's the serializable or protobuf metadata to
+ // get rid of these two easy cases first.
+ //
+ BuiltinPtr builtin = BuiltinPtr::dynamicCast(seq->type());
+ if(builtin && builtin->kind() == Builtin::KindByte)
+ {
+ string meta;
+ static const string protobuf = "java:protobuf:";
+ static const string serializable = "java:serializable:";
+ if(seq->findMetaData(serializable, meta))
+ {
+ if(marshal)
+ {
+ out << nl << stream << ".writeSerializable(" << v << ");";
+ }
+ else
+ {
+ string type = typeToString(seq, TypeModeIn, package);
+ out << nl << v << " = (" << type << ")" << stream << ".readSerializable();";
+ }
+ return;
+ }
+ else if(seq->findMetaData(protobuf, meta))
+ {
+ if(marshal)
+ {
+ out << nl << "if(!" << v << ".isInitialized())";
+ out << sb;
+ out << nl << "throw new Ice.MarshalException(\"type not fully initialized\");";
+ out << eb;
+ out << nl << stream << ".writeByteSeq(" << v << ".toByteArray());";
+ }
+ else
+ {
+ string type = meta.substr(protobuf.size());
+ out << nl << "try";
+ out << sb;
+ out << nl << v << " = " << type << ".parseFrom(" << stream << ".readByteSeq());";
+ out << eb;
+ out << nl << "catch(com.google.protobuf.InvalidProtocolBufferException __ex)";
+ out << sb;
+ out << nl << "Ice.MarshalException __mex = new Ice.MarshalException();";
+ out << nl << "__mex.initCause(__ex);";
+ out << nl << "throw __mex;";
+ out << eb;
+ }
+ return;
+ }
+ }
+
+ //
// We have to determine whether it's possible to use the
// type's generated helper class for this marshal/unmarshal
// task. Since the user may have specified a custom type in
@@ -2547,7 +2698,7 @@ Slice::JavaGenerator::writeStreamSequenceMarshalUnmarshalCode(Output& out,
while(s)
{
//
- // Stop if the inner sequence type has a custom type.
+ // Stop if the inner sequence type has a custom, serializable or protobuf type.
//
if(hasTypeMetaData(s))
{
@@ -3144,6 +3295,18 @@ Slice::JavaGenerator::hasTypeMetaData(const TypePtr& type, const StringList& loc
{
return true;
}
+ else if(str.find("java:protobuf:") == 0 || str.find("java:serializable:") == 0)
+ {
+ SequencePtr seq = SequencePtr::dynamicCast(cont);
+ if(seq)
+ {
+ BuiltinPtr builtin = BuiltinPtr::dynamicCast(seq->type());
+ if(builtin && builtin->kind() == Builtin::KindByte)
+ {
+ return true;
+ }
+ }
+ }
}
}
@@ -3391,51 +3554,62 @@ Slice::JavaGenerator::validateMetaData(const UnitPtr& u)
}
bool
-Slice::JavaGenerator::MetaDataVisitor::visitModuleStart(const ModulePtr& p)
+Slice::JavaGenerator::MetaDataVisitor::visitUnitStart(const UnitPtr& p)
{
+ static const string prefix = "java:";
+
//
- // Validate global metadata.
+ // Validate global metadata in the top-level file and all included files.
//
- DefinitionContextPtr dc = p->definitionContext();
- assert(dc);
- StringList globalMetaData = dc->getMetaData();
- string file = dc->filename();
- static const string prefix = "java:";
- for(StringList::const_iterator q = globalMetaData.begin(); q != globalMetaData.end(); ++q)
+ StringList files = p->allFiles();
+
+ for(StringList::iterator q = files.begin(); q != files.end(); ++q)
{
- string s = *q;
- if(_history.count(s) == 0)
+ string file = *q;
+ DefinitionContextPtr dc = p->findDefinitionContext(file);
+ assert(dc);
+ StringList globalMetaData = dc->getMetaData();
+ for(StringList::const_iterator r = globalMetaData.begin(); r != globalMetaData.end(); ++r)
{
- if(s.find(prefix) == 0)
+ string s = *r;
+ if(_history.count(s) == 0)
{
- bool ok = false;
-
- static const string packagePrefix = "java:package:";
- if(s.find(packagePrefix) == 0 && s.size() > packagePrefix.size())
- {
- ok = true;
- }
- else if(s == _java2MetaData)
+ if(s.find(prefix) == 0)
{
- ok = true;
- }
- else if(s == _java5MetaData)
- {
- ok = true;
- }
+ bool ok = false;
- if(!ok)
- {
- cerr << file << ": warning: ignoring invalid global metadata `" << s << "'" << endl;
+ static const string packagePrefix = "java:package:";
+ if(s.find(packagePrefix) == 0 && s.size() > packagePrefix.size())
+ {
+ ok = true;
+ }
+ else if(s == _java2MetaData)
+ {
+ ok = true;
+ }
+ else if(s == _java5MetaData)
+ {
+ ok = true;
+ }
+
+ if(!ok)
+ {
+ emitWarning(file, "", "ignoring invalid global metadata `" + s + "'");
+ }
}
+ _history.insert(s);
}
- _history.insert(s);
}
}
+ return true;
+}
+bool
+Slice::JavaGenerator::MetaDataVisitor::visitModuleStart(const ModulePtr& p)
+{
StringList metaData = getMetaData(p);
- validateType(p, metaData, p->definitionContext()->filename(), p->line());
- validateGetSet(p, metaData, p->definitionContext()->filename(), p->line());
+ validateType(p, metaData, p->file(), p->line());
+ validateGetSet(p, metaData, p->file(), p->line());
return true;
}
@@ -3443,16 +3617,16 @@ void
Slice::JavaGenerator::MetaDataVisitor::visitClassDecl(const ClassDeclPtr& p)
{
StringList metaData = getMetaData(p);
- validateType(p, metaData, p->definitionContext()->filename(), p->line());
- validateGetSet(p, metaData, p->definitionContext()->filename(), p->line());
+ validateType(p, metaData, p->file(), p->line());
+ validateGetSet(p, metaData, p->file(), p->line());
}
bool
Slice::JavaGenerator::MetaDataVisitor::visitClassDefStart(const ClassDefPtr& p)
{
StringList metaData = getMetaData(p);
- validateType(p, metaData, p->definitionContext()->filename(), p->line());
- validateGetSet(p, metaData, p->definitionContext()->filename(), p->line());
+ validateType(p, metaData, p->file(), p->line());
+ validateGetSet(p, metaData, p->file(), p->line());
return true;
}
@@ -3460,8 +3634,8 @@ bool
Slice::JavaGenerator::MetaDataVisitor::visitExceptionStart(const ExceptionPtr& p)
{
StringList metaData = getMetaData(p);
- validateType(p, metaData, p->definitionContext()->filename(), p->line());
- validateGetSet(p, metaData, p->definitionContext()->filename(), p->line());
+ validateType(p, metaData, p->file(), p->line());
+ validateGetSet(p, metaData, p->file(), p->line());
return true;
}
@@ -3469,8 +3643,8 @@ bool
Slice::JavaGenerator::MetaDataVisitor::visitStructStart(const StructPtr& p)
{
StringList metaData = getMetaData(p);
- validateType(p, metaData, p->definitionContext()->filename(), p->line());
- validateGetSet(p, metaData, p->definitionContext()->filename(), p->line());
+ validateType(p, metaData, p->file(), p->line());
+ validateGetSet(p, metaData, p->file(), p->line());
return true;
}
@@ -3482,10 +3656,11 @@ Slice::JavaGenerator::MetaDataVisitor::visitOperation(const OperationPtr& p)
ClassDefPtr cl = ClassDefPtr::dynamicCast(p->container());
if(!cl->isLocal())
{
- cerr << p->definitionContext()->filename() << ":" << p->line()
- << ": warning: metadata directive `UserException' applies only to local operations "
- << "but enclosing " << (cl->isInterface() ? "interface" : "class") << "`" << cl->name()
- << "' is not local" << endl;
+ ostringstream os;
+ os << "ignoring invalid metadata `UserException': directive applies only to local operations "
+ << "but enclosing " << (cl->isInterface() ? "interface" : "class") << " `" << cl->name()
+ << "' is not local";
+ emitWarning(p->file(), p->line(), os.str());
}
}
StringList metaData = getMetaData(p);
@@ -3498,15 +3673,15 @@ Slice::JavaGenerator::MetaDataVisitor::visitOperation(const OperationPtr& p)
{
if(q->find("java:type:", 0) == 0)
{
- cerr << p->definitionContext()->filename() << ":" << p->line()
- << ": warning: invalid metadata for operation" << endl;
+ emitWarning(p->file(), p->line(), "ignoring invalid metadata `" + *q +
+ "' for operation with void return type");
break;
}
}
}
else
{
- validateType(returnType, metaData, p->definitionContext()->filename(), p->line());
+ validateType(returnType, metaData, p->file(), p->line());
}
}
@@ -3514,62 +3689,86 @@ Slice::JavaGenerator::MetaDataVisitor::visitOperation(const OperationPtr& p)
for(ParamDeclList::iterator q = params.begin(); q != params.end(); ++q)
{
metaData = getMetaData(*q);
- validateType((*q)->type(), metaData, p->definitionContext()->filename(), (*q)->line());
+ validateType((*q)->type(), metaData, p->file(), (*q)->line());
}
- validateGetSet(p, metaData, p->definitionContext()->filename(), p->line());
+ validateGetSet(p, metaData, p->file(), p->line());
}
void
Slice::JavaGenerator::MetaDataVisitor::visitDataMember(const DataMemberPtr& p)
{
StringList metaData = getMetaData(p);
- validateType(p->type(), metaData, p->definitionContext()->filename(), p->line());
- validateGetSet(p, metaData, p->definitionContext()->filename(), p->line());
+ validateType(p->type(), metaData, p->file(), p->line());
+ validateGetSet(p, metaData, p->file(), p->line());
}
void
Slice::JavaGenerator::MetaDataVisitor::visitSequence(const SequencePtr& p)
{
+ static const string protobuf = "java:protobuf:";
+ static const string serializable = "java:serializable:";
StringList metaData = getMetaData(p);
- validateType(p, metaData, p->definitionContext()->filename(), p->line());
- validateGetSet(p, metaData, p->definitionContext()->filename(), p->line());
+ const string file = p->file();
+ const string line = p->line();
+ for(StringList::const_iterator q = metaData.begin(); q != metaData.end(); )
+ {
+ string s = *q++;
+ if(_history.count(s) == 0) // Don't complain about the same metadata more than once.
+ {
+ if(s.find(protobuf) == 0 || s.find(serializable) == 0)
+ {
+ //
+ // Remove from list so validateType does not try to handle as well.
+ //
+ metaData.remove(s);
+
+ BuiltinPtr builtin = BuiltinPtr::dynamicCast(p->type());
+ if(!builtin || builtin->kind() != Builtin::KindByte)
+ {
+ _history.insert(s);
+ emitWarning(file, line, "ignoring invalid metadata `" + s + "': " +
+ "this metadata can only be used with a byte sequence");
+ }
+ }
+ }
+ }
+
+ validateType(p, metaData, file, line);
+ validateGetSet(p, metaData, file, line);
}
void
Slice::JavaGenerator::MetaDataVisitor::visitDictionary(const DictionaryPtr& p)
{
StringList metaData = getMetaData(p);
- validateType(p, metaData, p->definitionContext()->filename(), p->line());
- validateGetSet(p, metaData, p->definitionContext()->filename(), p->line());
+ validateType(p, metaData, p->file(), p->line());
+ validateGetSet(p, metaData, p->file(), p->line());
}
void
Slice::JavaGenerator::MetaDataVisitor::visitEnum(const EnumPtr& p)
{
StringList metaData = getMetaData(p);
- validateType(p, metaData, p->definitionContext()->filename(), p->line());
- validateGetSet(p, metaData, p->definitionContext()->filename(), p->line());
+ validateType(p, metaData, p->file(), p->line());
+ validateGetSet(p, metaData, p->file(), p->line());
}
void
Slice::JavaGenerator::MetaDataVisitor::visitConst(const ConstPtr& p)
{
StringList metaData = getMetaData(p);
- validateType(p, metaData, p->definitionContext()->filename(), p->line());
- validateGetSet(p, metaData, p->definitionContext()->filename(), p->line());
+ validateType(p, metaData, p->file(), p->line());
+ validateGetSet(p, metaData, p->file(), p->line());
}
StringList
Slice::JavaGenerator::MetaDataVisitor::getMetaData(const ContainedPtr& cont)
{
- StringList metaData = cont->getMetaData();
- DefinitionContextPtr dc = cont->definitionContext();
- assert(dc);
- string file = dc->filename();
+ static const string prefix = "java:";
+ StringList metaData = cont->getMetaData();
StringList result;
- static const string prefix = "java:";
for(StringList::const_iterator p = metaData.begin(); p != metaData.end(); ++p)
{
@@ -3596,8 +3795,18 @@ Slice::JavaGenerator::MetaDataVisitor::getMetaData(const ContainedPtr& cont)
result.push_back(s);
continue;
}
+ else if(s.substr(prefix.size(), pos - prefix.size()) == "serializable")
+ {
+ result.push_back(s);
+ continue;
+ }
+ else if(s.substr(prefix.size(), pos - prefix.size()) == "protobuf")
+ {
+ result.push_back(s);
+ continue;
+ }
- cerr << file << ":" << cont->line() << ": warning: ignoring invalid metadata `" << s << "'" << endl;
+ emitWarning(cont->file(), cont->line(), "ignoring invalid metadata `" + s + "'");
}
_history.insert(s);
@@ -3630,7 +3839,14 @@ Slice::JavaGenerator::MetaDataVisitor::validateType(const SyntaxTreeBasePtr& p,
assert(b);
str = b->typeId();
}
- cerr << file << ":" << line << ": warning: invalid metadata for " << str << endl;
+ emitWarning(file, line, "invalid metadata for " + str);
+ }
+ else if(i->find("java:protobuf:") == 0 || i->find("java:serializable:") == 0)
+ {
+ //
+ // Only valid in sequence defintion which is checked in visitSequence
+ //
+ emitWarning(file, line, "ignoring invalid metadata `" + *i + "'");
}
}
}
@@ -3660,7 +3876,7 @@ Slice::JavaGenerator::MetaDataVisitor::validateGetSet(const SyntaxTreeBasePtr& p
assert(b);
str = b->typeId();
}
- cerr << file << ":" << line << ": warning: invalid metadata for " << str << endl;
+ emitWarning(file, line, "invalid metadata for " + str);
}
}
}
diff --git a/cpp/src/Slice/Makefile.mak b/cpp/src/Slice/Makefile.mak
index ad3e5a89611..dd76c272482 100644
--- a/cpp/src/Slice/Makefile.mak
+++ b/cpp/src/Slice/Makefile.mak
@@ -40,7 +40,7 @@ CPPFLAGS = -I.. -Idummyinclude $(CPPFLAGS) -DSLICE_API_EXPORTS -DWIN32_LEAN_AND
PDBFLAGS = /pdb:$(DLLNAME:.dll=.pdb)
!endif
-!if "$(CPP_COMPILER)" == "BCC2007"
+!if "$(BCPLUSPLUS)" == "yes"
RES_FILE = ,, Slice.res
!else
RES_FILE = Slice.res
@@ -88,7 +88,7 @@ install:: all
copy $(DLLNAME) $(install_bindir)
-!if "$(CPP_COMPILER)" == "BCC2007" && "$(OPTIMIZE)" != "yes"
+!if "$(BCPLUSPLUS)" == "yes" && "$(OPTIMIZE)" != "yes"
install:: all
copy $(DLLNAME:.dll=.tds) $(install_bindir)
diff --git a/cpp/src/Slice/Parser.cpp b/cpp/src/Slice/Parser.cpp
index 5d682503ec3..d2725b13c24 100644
--- a/cpp/src/Slice/Parser.cpp
+++ b/cpp/src/Slice/Parser.cpp
@@ -1351,6 +1351,13 @@ Slice::Container::lookupException(const string& scoped, bool printError)
return exceptions.front();
}
+UnitPtr
+Slice::Container::unit() const
+{
+ return SyntaxTreeBase::unit();
+}
+
+
ModuleList
Slice::Container::modules() const
{
@@ -4714,8 +4721,7 @@ Slice::Operation::attributes() const
}
if(i == 2)
{
- cerr << definitionContext()->filename() << ":" << line()
- << ": warning: invalid freeze metadata for operation" << endl;
+ emitWarning(definitionContext()->filename(), line(), "invalid freeze metadata for operation");
}
else
{
@@ -4736,8 +4742,7 @@ Slice::Operation::attributes() const
{
if(result != 0 && (i == int(Supports) || i == int(Never)))
{
- cerr << definitionContext()->filename() << ":" << line()
- << ": warning: invalid freeze metadata for operation" << endl;
+ emitWarning(definitionContext()->filename(), line(), "invalid freeze metadata for operation");
}
else
{
@@ -4751,8 +4756,7 @@ Slice::Operation::attributes() const
if(i == 4)
{
- cerr << definitionContext()->filename() << ":" << line()
- << ": warning: invalid freeze metadata for operation" << endl;
+ emitWarning(definitionContext()->filename(), line(), "invalid freeze metadata for operation");
//
// Set default
@@ -5004,6 +5008,12 @@ Slice::Unit::currentFile() const
}
}
+string
+Slice::Unit::topLevelFile() const
+{
+ return _topLevelFile;
+}
+
int
Slice::Unit::currentLine() const
{
@@ -5057,23 +5067,13 @@ Slice::Unit::scanPosition(const char* s)
}
}
- //
- // Cache full paths to avoid too many full path computations.
- //
- map<string, string>::const_iterator p = _fullPaths.find(currentFile);
- if(p == _fullPaths.end())
- {
- p = _fullPaths.insert(make_pair(currentFile, fullPath(currentFile))).first;
- }
- currentFile = p->second;
-
enum LineType { File, Push, Pop };
LineType type = File;
if(_currentLine == 0)
{
- if(currentFile != _topLevelFile)
+ if(_currentIncludeLevel > 0 || currentFile != _topLevelFile)
{
type = Push;
line.erase(idx);
@@ -5123,6 +5123,7 @@ Slice::Unit::scanPosition(const char* s)
DefinitionContextPtr dc = currentDefinitionContext();
assert(dc);
dc->setFilename(currentFile);
+ _definitionContextMap.insert(make_pair(currentFile, dc));
}
}
@@ -5150,6 +5151,9 @@ Slice::Unit::addGlobalMetaData(const StringList& metaData)
}
else
{
+ //
+ // Append the global metadata to any existing metadata (e.g., default global metadata).
+ //
StringList l = dc->getMetaData();
copy(metaData.begin(), metaData.end(), back_inserter(l));
dc->setMetaData(l);
@@ -5167,36 +5171,27 @@ Slice::Unit::setSeenDefinition()
void
Slice::Unit::error(const char* s)
{
- string file = currentFile();
- if(!file.empty())
- {
- cerr << file << ':' << _currentLine << ": ";
- }
- cerr << s << endl;
+ emitError(currentFile(), _currentLine, s);
_errors++;
}
void
Slice::Unit::error(const string& s)
{
- error(s.c_str());
+ emitError(currentFile(), _currentLine, s);
+ _errors++;
}
void
Slice::Unit::warning(const char* s) const
{
- string file = currentFile();
- if(!file.empty())
- {
- cerr << file << ':' << _currentLine << ": ";
- }
- cerr << "warning: " << s << endl;
+ emitWarning(currentFile(), _currentLine, s);
}
void
Slice::Unit::warning(const string& s) const
{
- warning(s.c_str());
+ emitWarning(currentFile(), _currentLine, s);
}
ContainerPtr
@@ -5233,7 +5228,7 @@ Slice::Unit::currentDefinitionContext() const
void
Slice::Unit::pushDefinitionContext()
{
- _definitionContextStack.push(new DefinitionContext(_currentIncludeLevel, _defaultGlobalMetadata));
+ _definitionContextStack.push(new DefinitionContext(_currentIncludeLevel, _defaultGlobalMetaData));
}
void
@@ -5243,6 +5238,17 @@ Slice::Unit::popDefinitionContext()
_definitionContextStack.pop();
}
+DefinitionContextPtr
+Slice::Unit::findDefinitionContext(const string& file) const
+{
+ map<string, DefinitionContextPtr>::const_iterator p = _definitionContextMap.find(file);
+ if(p != _definitionContextMap.end())
+ {
+ return p->second;
+ }
+ return 0;
+}
+
void
Slice::Unit::addContent(const ContainedPtr& contained)
{
@@ -5453,6 +5459,18 @@ Slice::Unit::includeFiles() const
return _includeFiles;
}
+StringList
+Slice::Unit::allFiles() const
+{
+ StringList result;
+ for(map<string, DefinitionContextPtr>::const_iterator p = _definitionContextMap.begin();
+ p != _definitionContextMap.end(); ++p)
+ {
+ result.push_back(p->first);
+ }
+ return result;
+}
+
int
Slice::Unit::parse(const string& filename, FILE* file, bool debug, Slice::FeatureProfile profile)
{
@@ -5466,7 +5484,6 @@ Slice::Unit::parse(const string& filename, FILE* file, bool debug, Slice::Featur
_currentIncludeLevel = 0;
_featureProfile = profile;
_topLevelFile = fullPath(filename);
- _fullPaths[filename] = _topLevelFile;
pushContainer(this);
pushDefinitionContext();
@@ -5539,7 +5556,7 @@ Slice::Unit::Unit(bool ignRedefs, bool all, bool allowIcePrefix, bool caseSensit
_all(all),
_allowIcePrefix(allowIcePrefix),
_caseSensitive(caseSensitive),
- _defaultGlobalMetadata(defaultGlobalMetadata),
+ _defaultGlobalMetaData(defaultGlobalMetadata),
_errors(0)
{
diff --git a/cpp/src/Slice/Preprocessor.cpp b/cpp/src/Slice/Preprocessor.cpp
index 636c772b94d..29c968f9f93 100644
--- a/cpp/src/Slice/Preprocessor.cpp
+++ b/cpp/src/Slice/Preprocessor.cpp
@@ -44,11 +44,10 @@ extern "C" int mcpp_lib_main(int argc, char** argv);
extern "C" void mcpp_use_mem_buffers(int tf);
extern "C" char* mcpp_get_mem_buffer(Outdest od);
-Slice::Preprocessor::Preprocessor(const string& path, const string& fileName, const vector<string>& args, const string& cppSourceExt) :
+Slice::Preprocessor::Preprocessor(const string& path, const string& fileName, const vector<string>& args) :
_path(path),
_fileName(fileName),
_args(args),
- _cppSourceExt(cppSourceExt),
_cppHandle(0)
{
}
@@ -145,12 +144,16 @@ Slice::Preprocessor::preprocess(bool keepComments)
delete[] argv;
//
- // Print errors to stderr.
+ // Display any errors.
//
char* err = mcpp_get_mem_buffer(Err);
if(err)
{
- ::fputs(err, stderr);
+ vector<string> messages = filterMcppWarnings(err);
+ for(vector<string>::const_iterator i = messages.begin(); i != messages.end(); ++i)
+ {
+ emitRaw(i->c_str());
+ }
}
if(status == 0)
@@ -199,13 +202,14 @@ Slice::Preprocessor::preprocess(bool keepComments)
}
else
{
- cerr << "Could not open temporary file: ";
+ ostream& os = getErrorStream();
+ os << _path << ": error: could not open temporary file: ";
#ifdef _WIN32
- cerr << IceUtil::wstringToString(_cppFile);
+ os << IceUtil::wstringToString(_cppFile);
#else
- cerr << _cppFile;
+ os << _cppFile;
#endif
- cerr << endl;
+ os << endl;
}
}
@@ -218,7 +222,8 @@ Slice::Preprocessor::preprocess(bool keepComments)
}
bool
-Slice::Preprocessor::printMakefileDependencies(Language lang, const vector<string>& includePaths)
+Slice::Preprocessor::printMakefileDependencies(Language lang, const vector<string>& includePaths,
+ const string& cppSourceExt)
{
if(!checkInputFile())
{
@@ -253,7 +258,7 @@ Slice::Preprocessor::printMakefileDependencies(Language lang, const vector<strin
char* err = mcpp_get_mem_buffer(Err);
if(err)
{
- ::fputs(err, stderr);
+ emitRaw(err);
}
if(status != 0)
@@ -299,7 +304,11 @@ Slice::Preprocessor::printMakefileDependencies(Language lang, const vector<strin
string suffix = ".o:";
#endif
pos = unprocessed.find(suffix) + suffix.size();
- string result = unprocessed.substr(0, pos);
+ string result;
+ if(lang != JavaXML)
+ {
+ result = unprocessed.substr(0, pos);
+ }
vector<string> fullIncludePaths;
vector<string>::const_iterator p;
@@ -345,26 +354,47 @@ Slice::Preprocessor::printMakefileDependencies(Language lang, const vector<strin
}
}
- //
- // Escape spaces in the file name.
- //
- string::size_type space = 0;
- while((space = file.find(" ", space)) != string::npos)
+ if(lang == JavaXML)
{
- file.replace(space, 1, "\\ ");
- space += 2;
+ if(result.size() == 0)
+ {
+ result = " <source name=\"" + file + "\">";
+ }
+ else
+ {
+ result += "\n <dependsOn name=\"" + file + "\"/>";
+ }
}
+ else
+ {
+ //
+ // Escape spaces in the file name.
+ //
+ string::size_type space = 0;
+ while((space = file.find(" ", space)) != string::npos)
+ {
+ file.replace(space, 1, "\\ ");
+ space += 2;
+ }
- //
- // Add to result
- //
- result += " \\\n " + file;
+ //
+ // Add to result
+ //
+ result += " \\\n " + file;
+ }
pos = end;
}
- result += "\n";
+ if(lang == JavaXML)
+ {
+ result += "\n </source>\n";
+ }
+ else
+ {
+ result += "\n";
+ }
/*
- * icecpp emits dependencies in any of the following formats, depending on the
+ * Emit dependencies in any of the following formats, depending on the
* length of the filenames:
*
* x.o[bj]: /path/x.ice /path/y.ice
@@ -396,10 +426,12 @@ Slice::Preprocessor::printMakefileDependencies(Language lang, const vector<strin
string::size_type pos;
while((pos = result.find(suffix)) != string::npos)
{
- result.replace(pos, suffix.size() - 1, "." + _cppSourceExt);
+ result.replace(pos, suffix.size() - 1, "." + cppSourceExt);
}
break;
}
+ case JavaXML:
+ break;
case Java:
{
//
@@ -511,14 +543,14 @@ Slice::Preprocessor::checkInputFile()
}
if(suffix != ".ice")
{
- cerr << _path << ": input files must end with `.ice'" << endl;
+ getErrorStream() << _path << ": error: input files must end with `.ice'" << endl;
return false;
}
ifstream test(_fileName.c_str());
if(!test)
{
- cerr << _path << ": cannot open `" << _fileName << "' for reading" << endl;
+ getErrorStream() << _path << ": error: cannot open `" << _fileName << "' for reading" << endl;
return false;
}
test.close();
diff --git a/cpp/src/Slice/PythonUtil.cpp b/cpp/src/Slice/PythonUtil.cpp
index cb9e024717a..34fb3bd9654 100644
--- a/cpp/src/Slice/PythonUtil.cpp
+++ b/cpp/src/Slice/PythonUtil.cpp
@@ -32,6 +32,7 @@ class MetaDataVisitor : public ParserVisitor
{
public:
+ virtual bool visitUnitStart(const UnitPtr&);
virtual bool visitModuleStart(const ModulePtr&);
virtual void visitClassDecl(const ClassDeclPtr&);
virtual bool visitClassDefStart(const ClassDefPtr&);
@@ -47,14 +48,9 @@ public:
private:
//
- // Validates global metadata.
- //
- void validateGlobal(const DefinitionContextPtr&);
-
- //
// Validates sequence metadata.
//
- void validateSequence(const DefinitionContextPtr&, const string&, const TypePtr&, const StringList&);
+ void validateSequence(const string&, const string&, const TypePtr&, const StringList&);
//
// Checks a definition that doesn't currently support Python metadata.
@@ -153,6 +149,11 @@ private:
};
typedef list<MemberInfo> MemberInfoList;
+ //
+ // Write a member assignment statement for a constructor.
+ //
+ void writeAssign(const MemberInfo&);
+
void collectClassMembers(const ClassDefPtr&, MemberInfoList&, bool);
void collectExceptionMembers(const ExceptionPtr&, MemberInfoList&, bool);
@@ -476,7 +477,7 @@ Slice::Python::CodeVisitor::visitClassDefStart(const ClassDefPtr& p)
{
if(!q->inherited)
{
- _out << nl << "self." << q->fixedName << " = " << q->fixedName;;
+ writeAssign(*q);
}
}
}
@@ -982,7 +983,7 @@ Slice::Python::CodeVisitor::visitExceptionStart(const ExceptionPtr& p)
{
if(!q->inherited)
{
- _out << nl << "self." << q->fixedName << " = " << q->fixedName;;
+ writeAssign(*q);
}
}
}
@@ -1101,7 +1102,7 @@ Slice::Python::CodeVisitor::visitStructStart(const StructPtr& p)
_out.inc();
for(r = memberList.begin(); r != memberList.end(); ++r)
{
- _out << nl << "self." << r->fixedName << " = " << r->fixedName;
+ writeAssign(*r);
}
_out.dec();
@@ -1199,17 +1200,46 @@ Slice::Python::CodeVisitor::visitStructStart(const StructPtr& p)
void
Slice::Python::CodeVisitor::visitSequence(const SequencePtr& p)
{
+ static const string protobuf = "python:protobuf:";
+ StringList metaData = p->getMetaData();
+ bool isCustom = false;
+ string customType;
+ for(StringList::const_iterator q = metaData.begin(); q != metaData.end(); ++q)
+ {
+ if(q->find(protobuf) == 0)
+ {
+ BuiltinPtr builtin = BuiltinPtr::dynamicCast(p->type());
+ if(!builtin || builtin->kind() != Builtin::KindByte)
+ {
+ continue;
+ }
+ isCustom = true;
+ customType = q->substr(protobuf.size());
+ break;
+ }
+ }
+
//
// Emit the type information.
//
string scoped = p->scoped();
_out << sp << nl << "if not " << getDictLookup(p, "_t_") << ':';
_out.inc();
- _out << nl << "_M_" << getAbsolute(p, "_t_") << " = IcePy.defineSequence('" << scoped << "', ";
- writeMetaData(p->getMetaData());
- _out << ", ";
- writeType(p->type());
- _out << ")";
+ if(isCustom)
+ {
+ string package = customType.substr(0, customType.find('.'));
+ _out << nl << "import " << package;
+ _out << nl << "_M_" << getAbsolute(p, "_t_")
+ << " = IcePy.defineCustom('" << scoped << "', " << customType << ")";
+ }
+ else
+ {
+ _out << nl << "_M_" << getAbsolute(p, "_t_") << " = IcePy.defineSequence('" << scoped << "', ";
+ writeMetaData(metaData);
+ _out << ", ";
+ writeType(p->type());
+ _out << ")";
+ }
_out.dec();
}
@@ -1629,7 +1659,13 @@ Slice::Python::CodeVisitor::writeDefaultValue(const TypePtr& p)
StructPtr st = StructPtr::dynamicCast(p);
if(st)
{
- _out << getSymbol(st) << "()";
+ //
+ // We cannot emit a call to the struct's constructor here because Python
+ // only evaluates this expression once (see bug 3676). Instead, we emit
+ // a marker that allows us to determine whether the application has
+ // supplied a value.
+ //
+ _out << "Ice._struct_marker";
return;
}
@@ -1701,6 +1737,30 @@ Slice::Python::CodeVisitor::writeMetaData(const StringList& meta)
_out << ')';
}
+void
+Slice::Python::CodeVisitor::writeAssign(const MemberInfo& info)
+{
+ //
+ // Structures are treated differently (see bug 3676).
+ //
+ StructPtr st = StructPtr::dynamicCast(info.type);
+ if(st)
+ {
+ _out << nl << "if " << info.fixedName << " is Ice._struct_marker:";
+ _out.inc();
+ _out << nl << "self." << info.fixedName << " = " << getSymbol(st) << "()";
+ _out.dec();
+ _out << nl << "else:";
+ _out.inc();
+ _out << nl << "self." << info.fixedName << " = " << info.fixedName;
+ _out.dec();
+ }
+ else
+ {
+ _out << nl << "self." << info.fixedName << " = " << info.fixedName;
+ }
+}
+
string
Slice::Python::CodeVisitor::getOperationMode(Slice::Operation::Mode mode)
{
@@ -1779,6 +1839,16 @@ Slice::Python::generate(const UnitPtr& un, bool all, bool checksum, const vector
out << nl << "import Ice, IcePy, __builtin__";
+ //
+ // For backward-compatibility with generated code from Ice 3.3.0, we add a definition
+ // of _struct_marker to the Ice module if necessary.
+ //
+ out << nl;
+ out << nl << "if not Ice.__dict__.has_key(\"_struct_marker\"):";
+ out.inc();
+ out << nl << "Ice._struct_marker = object()";
+ out.dec();
+
if(!all)
{
vector<string> paths = includePaths;
@@ -1866,20 +1936,19 @@ Slice::Python::fixIdent(const string& ident)
string
Slice::Python::getPackageMetadata(const ContainedPtr& cont)
{
- string package;
+ UnitPtr unit = cont->container()->unit();
+ string file = cont->file();
+ assert(!file.empty());
- DefinitionContextPtr dc = cont->definitionContext();
- if(dc)
+ static const string prefix = "python:package:";
+ DefinitionContextPtr dc = unit->findDefinitionContext(file);
+ assert(dc);
+ string q = dc->findMetaData(prefix);
+ if(!q.empty())
{
- static const string prefix = "python:package:";
- string metadata = dc->findMetaData(prefix);
- if(!metadata.empty())
- {
- package = metadata.substr(prefix.size());
- }
+ q = q.substr(prefix.size());
}
-
- return package;
+ return q;
}
string
@@ -1929,15 +1998,44 @@ Slice::Python::printHeader(IceUtilInternal::Output& out)
}
bool
-Slice::Python::MetaDataVisitor::visitModuleStart(const ModulePtr& p)
+Slice::Python::MetaDataVisitor::visitUnitStart(const UnitPtr& p)
{
- if(!ModulePtr::dynamicCast(p->container()))
+ static const string prefix = "python:";
+
+ //
+ // Validate global metadata in the top-level file and all included files.
+ //
+ StringList files = p->allFiles();
+
+ for(StringList::iterator q = files.begin(); q != files.end(); ++q)
{
- //
- // We only need to validate global metadata for top-level modules.
- //
- validateGlobal(p->definitionContext());
+ string file = *q;
+ DefinitionContextPtr dc = p->findDefinitionContext(file);
+ assert(dc);
+ StringList globalMetaData = dc->getMetaData();
+ for(StringList::const_iterator r = globalMetaData.begin(); r != globalMetaData.end(); ++r)
+ {
+ string s = *r;
+ if(_history.count(s) == 0)
+ {
+ if(s.find(prefix) == 0)
+ {
+ static const string packagePrefix = "python:package:";
+ if(s.find(packagePrefix) != 0 || s.size() == packagePrefix.size())
+ {
+ emitWarning(file, "", "ignoring invalid global metadata `" + s + "'");
+ }
+ }
+ _history.insert(s);
+ }
+ }
}
+ return true;
+}
+
+bool
+Slice::Python::MetaDataVisitor::visitModuleStart(const ModulePtr& p)
+{
reject(p);
return true;
}
@@ -1972,32 +2070,52 @@ Slice::Python::MetaDataVisitor::visitStructStart(const StructPtr& p)
void
Slice::Python::MetaDataVisitor::visitOperation(const OperationPtr& p)
{
- DefinitionContextPtr dc = p->definitionContext();
- assert(dc);
-
TypePtr ret = p->returnType();
if(ret)
{
- validateSequence(dc, p->line(), ret, p->getMetaData());
+ validateSequence(p->file(), p->line(), ret, p->getMetaData());
}
ParamDeclList params = p->parameters();
for(ParamDeclList::iterator q = params.begin(); q != params.end(); ++q)
{
- validateSequence(dc, (*q)->line(), (*q)->type(), (*q)->getMetaData());
+ validateSequence(p->file(), (*q)->line(), (*q)->type(), (*q)->getMetaData());
}
}
void
Slice::Python::MetaDataVisitor::visitDataMember(const DataMemberPtr& p)
{
- validateSequence(p->definitionContext(), p->line(), p->type(), p->getMetaData());
+ validateSequence(p->file(), p->line(), p->type(), p->getMetaData());
}
void
Slice::Python::MetaDataVisitor::visitSequence(const SequencePtr& p)
{
- validateSequence(p->definitionContext(), p->line(), p, p->getMetaData());
+ static const string protobuf = "python:protobuf:";
+ StringList metaData = p->getMetaData();
+ const string file = p->file();
+ const string line = p->line();
+ for(StringList::const_iterator q = metaData.begin(); q != metaData.end(); )
+ {
+ string s = *q++;
+ if(s.find(protobuf) == 0)
+ {
+ //
+ // Remove from list so validateSequence does not try to handle as well.
+ //
+ metaData.remove(s);
+
+ BuiltinPtr builtin = BuiltinPtr::dynamicCast(p->type());
+ if(!builtin || builtin->kind() != Builtin::KindByte)
+ {
+ emitWarning(file, line, "ignoring invalid metadata `" + s + ": " +
+ "`protobuf' encoding must be a byte sequence");
+ }
+ }
+ }
+
+ validateSequence(file, line, p, metaData);
}
void
@@ -2019,32 +2137,7 @@ Slice::Python::MetaDataVisitor::visitConst(const ConstPtr& p)
}
void
-Slice::Python::MetaDataVisitor::validateGlobal(const DefinitionContextPtr& dc)
-{
- StringList globalMetaData = dc->getMetaData();
-
- static const string prefix = "python:";
-
- for(StringList::const_iterator p = globalMetaData.begin(); p != globalMetaData.end(); ++p)
- {
- string s = *p;
- if(_history.count(s) == 0)
- {
- if(s.find(prefix) == 0)
- {
- static const string packagePrefix = "python:package:";
- if(s.find(packagePrefix) != 0 || s.size() == packagePrefix.size())
- {
- cerr << dc->filename() << ": warning: ignoring invalid global metadata `" << s << "'" << endl;
- }
- }
- _history.insert(s);
- }
- }
-}
-
-void
-Slice::Python::MetaDataVisitor::validateSequence(const DefinitionContextPtr& dc, const string& line,
+Slice::Python::MetaDataVisitor::validateSequence(const string& file, const string& line,
const TypePtr& type, const StringList& meta)
{
static const string prefix = "python:";
@@ -2067,7 +2160,7 @@ Slice::Python::MetaDataVisitor::validateSequence(const DefinitionContextPtr& dc,
}
}
}
- cerr << dc->filename() << ":" << line << ": warning: ignoring metadata `" << s << "'" << endl;
+ emitWarning(file, line, "ignoring invalid metadata `" + s + "'");
}
}
}
@@ -2083,9 +2176,7 @@ Slice::Python::MetaDataVisitor::reject(const ContainedPtr& cont)
{
if(p->find(prefix) == 0)
{
- DefinitionContextPtr dc = cont->definitionContext();
- assert(dc);
- cerr << dc->filename() << ":" << cont->line() << ": warning: ignoring metadata `" << *p << "'" << endl;
+ emitWarning(cont->file(), cont->line(), "ignoring invalid metadata `" + *p + "'");
}
}
}
diff --git a/cpp/src/Slice/RubyUtil.cpp b/cpp/src/Slice/RubyUtil.cpp
index 3227446ee82..86869339cab 100644
--- a/cpp/src/Slice/RubyUtil.cpp
+++ b/cpp/src/Slice/RubyUtil.cpp
@@ -1021,6 +1021,17 @@ Slice::Ruby::CodeVisitor::visitStructStart(const StructPtr& p)
_out << nl << "end";
//
+ // eql?
+ //
+ // This method is used to determine the equality of keys in a Hash object.
+ //
+ _out << sp << nl << "def eql?(other)";
+ _out.inc();
+ _out << nl << "return other.class == self.class && other == self";
+ _out.dec();
+ _out << nl << "end";
+
+ //
// inspect
//
_out << sp << nl << "def inspect";
diff --git a/cpp/src/Slice/Util.cpp b/cpp/src/Slice/Util.cpp
index cf2e77ed32f..dffbef6523b 100644
--- a/cpp/src/Slice/Util.cpp
+++ b/cpp/src/Slice/Util.cpp
@@ -10,6 +10,7 @@
#include <Slice/Util.h>
#include <IceUtil/Unicode.h>
#include <IceUtil/FileUtil.h>
+#include <IceUtil/StringUtil.h>
#include <climits>
#include <unistd.h> // For readlink()
@@ -27,7 +28,18 @@ normalizePath(const string& path)
string result = path;
replace(result.begin(), result.end(), '\\', '/');
string::size_type pos;
- while((pos = result.find("//")) != string::npos)
+ string::size_type startReplace = 0;
+#ifdef _WIN32
+ //
+ // For UNC paths we need to ensure they are in the format that is
+ // returned by MCPP. IE. "//MACHINE/PATH"
+ //
+ if(result.find("//") == 0)
+ {
+ startReplace = 2;
+ }
+#endif
+ while((pos = result.find("//", startReplace)) != string::npos)
{
result.replace(pos, 2, "/");
}
@@ -172,3 +184,156 @@ Slice::changeInclude(const string& orig, const vector<string>& includePaths)
return result;
}
+static ostream* errorStream = &cerr;
+
+void
+Slice::setErrorStream(ostream& stream)
+{
+ errorStream = &stream;
+}
+
+ostream&
+Slice::getErrorStream()
+{
+ return *errorStream;
+}
+
+void
+Slice::emitError(const string& file, int line, const string& message)
+{
+ if(!file.empty())
+ {
+ *errorStream << file;
+ if(line != -1)
+ {
+ *errorStream << ':' << line;
+ }
+ *errorStream << ": ";
+ }
+ *errorStream << message << endl;
+}
+
+void
+Slice::emitWarning(const string& file, int line, const string& message)
+{
+ if(!file.empty())
+ {
+ *errorStream << file;
+ if(line != -1)
+ {
+ *errorStream << ':' << line;
+ }
+ *errorStream << ": ";
+ }
+ *errorStream << "warning: " << message << endl;
+}
+
+void
+Slice::emitError(const string& file, const std::string& line, const string& message)
+{
+ if(!file.empty())
+ {
+ *errorStream << file;
+ if(!line.empty())
+ {
+ *errorStream << ':' << line;
+ }
+ *errorStream << ": ";
+ }
+ *errorStream << message << endl;
+}
+
+void
+Slice::emitWarning(const string& file, const std::string& line, const string& message)
+{
+ if(!file.empty())
+ {
+ *errorStream << file;
+ if(!line.empty())
+ {
+ *errorStream << ':' << line;
+ }
+ *errorStream << ": ";
+ }
+ *errorStream << "warning: " << message << endl;
+}
+
+void
+Slice::emitRaw(const char* message)
+{
+ *errorStream << message << flush;
+}
+
+vector<string>
+Slice::filterMcppWarnings(const string& message)
+{
+ static const char* messages[] =
+ {
+ "Converted [CR+LF] to [LF]",
+ "no newline, supplemented newline",
+ 0
+ };
+
+ static const string warningPrefix = "warning:";
+ static const string fromPrefix = "from";
+ static const string separators = "\n\t ";
+
+ vector<string> in;
+ vector<string> out;
+ IceUtilInternal::splitString(message, "\n", in);
+ bool skipped;
+ for(vector<string>::const_iterator i = in.begin(); i != in.end(); i++)
+ {
+ skipped = false;
+
+ if(i->find(warningPrefix) != string::npos)
+ {
+ for(int j = 0; messages[j] != 0; ++j)
+ {
+ if(i->find(messages[j]) != string::npos)
+ {
+ // This line should be skipped it contains the unwanted mcpp warning
+ // next line should also be skipped it contains the slice line that
+ // produces the skipped warning
+ i++;
+ skipped = true;
+ //
+ // Check if next lines are still the same warning
+ //
+ i++;
+ while(i != in.end())
+ {
+ string token = *i;
+ string::size_type index = token.find_first_not_of(separators);
+ if(index != string::npos)
+ {
+ token = token.substr(index);
+ }
+ if(token.find(fromPrefix) != 0)
+ {
+ //
+ // First line not of this warning
+ //
+ i--;
+ break;
+ }
+ else
+ {
+ i++;
+ }
+ }
+ break;
+ }
+ }
+ if(i == in.end())
+ {
+ break;
+ }
+ }
+ if(!skipped)
+ {
+ out.push_back(*i + "\n");
+ }
+ }
+ return out;
+}
diff --git a/cpp/src/ca/iceca b/cpp/src/ca/iceca
index 14d0e13e848..9048b7b01e4 100755
--- a/cpp/src/ca/iceca
+++ b/cpp/src/ca/iceca
@@ -22,7 +22,7 @@ if home is None:
# versions return variations like "cygwin_nt-4.01".
if sys.platform == "win32" or sys.platform[:6] == "cygwin":
home = os.path.dirname(sys.argv[0])
- home = os.path.join(home, "config", "ca")
+ home = os.path.join(home, "..", "config")
else:
home = os.getenv('HOME')
if home is None:
@@ -32,6 +32,11 @@ if home is None:
home = os.path.normpath(home)
os.putenv("ICE_CA_HOME", home)
+opensslCmd = "openssl"
+if sys.platform == "win32" or sys.platform[:6] == "cygwin":
+ if os.path.exists(os.path.join(os.path.dirname(sys.argv[0]), "openssl.exe")):
+ opensslCmd = os.path.join(os.path.dirname(sys.argv[0]), "openssl.exe")
+
caroot = os.path.join(home, "ca")
cadb = os.path.join(caroot, "db")
@@ -164,11 +169,11 @@ if sys.argv[script] == "import":
os.close(temp)
if len(keyPass) > 0:
- cmd = "openssl pkcs12 -in " + cert + " -inkey " + key + " -export -out " + pkcs12cert + " -name " + \
+ cmd = opensslCmd + " pkcs12 -in " + cert + " -inkey " + key + " -export -out " + pkcs12cert + " -name " + \
alias + " -passin file:" + keypassfile1 + " -passout file:" + keypassfile2 + " -certfile " + \
os.path.join(home, "ca_cert.pem")
else:
- cmd = "openssl pkcs12 -in " + cert + " -inkey " + key + " -export -out " + pkcs12cert + " -name " + \
+ cmd = opensslCmd + " pkcs12 -in " + cert + " -inkey " + key + " -export -out " + pkcs12cert + " -name " + \
alias + " -passout file:" + keypassfile1 + " -certfile " + os.path.join(home, "ca_cert.pem")
print "converting to pkcs12 format... ",
@@ -240,10 +245,11 @@ if sys.argv[script] == "import":
os.write(temp, keyPass)
os.close(temp)
- cmd = "openssl pkcs12 -in " + cert + " -inkey " + key + " -export -out " + pkcs12cert + \
+ cmd = opensslCmd + " pkcs12 -in " + cert + " -inkey " + key + " -export -out " + pkcs12cert + \
" -passin file:" + keypassfile1 + " -passout file:" + keypassfile2
else:
- cmd = "openssl pkcs12 -in " + cert + " -inkey " + key + " -export -out " + pkcs12cert + " -passout pass:"
+ cmd = opensslCmd + " pkcs12 -in " + cert + " -inkey " + key + " -export -out " + pkcs12cert + \
+ " -passout pass:"
print "converting to pkcs12 format...",
sys.stdout.flush()
@@ -282,12 +288,12 @@ if sys.argv[script] == "init":
nopassphrase = True
if o == "--overwrite":
# If the CA exists then destroy it.
- if os.path.exists(os.path.join(home, caroot)):
+ if os.path.exists(caroot):
print "Warning: running this command will destroy your existing CA setup!"
choice = raw_input("Do you want to continue? (y/n)").strip()
if choice != 'y' and choice != 'Y':
sys.exit(1)
- shutil.rmtree(os.path.join(home, caroot))
+ shutil.rmtree(caroot)
#
# Check that the caroot isn't already populated.
@@ -512,7 +518,7 @@ keyUsage = nonRepudiation, digitalSignature, keyEncipherment\n\
print "ok"
- cmd = "openssl req -config " + cacnfname + " -x509 -days 1825 -newkey rsa:2048 -out " + \
+ cmd = opensslCmd + " req -config " + cacnfname + " -x509 -days 1825 -newkey rsa:2048 -out " + \
os.path.join(cadb, "ca_cert.pem") + " -outform PEM"
if nopassphrase:
@@ -598,7 +604,7 @@ if sys.argv[script] == "request":
os.write(temp, "emailAddress=" + email + "\n")
os.close(temp)
- cmd = "openssl req -config " + tempname + ' -new -keyout "' + keyfile + '" -out "' + reqfile + '"'
+ cmd = opensslCmd + " req -config " + tempname + ' -new -keyout "' + keyfile + '" -out "' + reqfile + '"'
if nopassphrase:
cmd += " -nodes"
@@ -615,7 +621,7 @@ if sys.argv[script] == "request":
print
print "The certificate request must be signed by the CA. Send the certificate"
print "request file to the CA at the following email address:"
- cmd = "openssl x509 -in " + os.path.join(home, "ca_cert.pem") + " -email -noout"
+ cmd = opensslCmd + " x509 -in " + os.path.join(home, "ca_cert.pem") + " -email -noout"
if verbose: print cmd
os.system(cmd)
@@ -670,7 +676,7 @@ if sys.argv[script] == "sign":
os.write(temp, "\n[certificate_extensions]\nsubjectAltName=" + subjectAltName + "\n")
os.close(temp)
- cmd = "openssl ca -config " + tempname + " -in " + infile + " -out " + outfile
+ cmd = opensslCmd + " ca -config " + tempname + " -in " + infile + " -out " + outfile
if verbose: print cmd
status = os.system(cmd)
if not keep: os.remove(tempname)
diff --git a/cpp/src/iceserviceinstall/Install.cpp b/cpp/src/iceserviceinstall/Install.cpp
index 209f994b87f..78e0614cedc 100644
--- a/cpp/src/iceserviceinstall/Install.cpp
+++ b/cpp/src/iceserviceinstall/Install.cpp
@@ -67,6 +67,9 @@ Install::run(int argc, char* argv[])
vector<string> commands;
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
commands = opts.parse(argc, (const char**)argv);
}
catch(const IceUtilInternal::BadOptException& e)
diff --git a/cpp/src/iceserviceinstall/Makefile.mak b/cpp/src/iceserviceinstall/Makefile.mak
index bf2dd53b875..d519dac0e7b 100644
--- a/cpp/src/iceserviceinstall/Makefile.mak
+++ b/cpp/src/iceserviceinstall/Makefile.mak
@@ -33,7 +33,7 @@ EXTRA_MANIFEST = security.manifest
PDBFLAGS = /pdb:$(TOOL:.exe=.pdb)
!endif
-!if "$(CPP_COMPILER)" == "BCC2007"
+!if "$(BCPLUSPLUS)" == "yes"
RES_FILE = ,, IceServiceInstall.res
!else
RES_FILE = IceServiceInstall.res
@@ -52,7 +52,7 @@ install:: all
copy $(TOOL) $(install_bindir)
-!if "$(CPP_COMPILER)" == "BCC2007" && "$(OPTIMIZE)" != "yes"
+!if "$(BCPLUSPLUS)" == "yes" && "$(OPTIMIZE)" != "yes"
install:: all
copy $(TOOL:.exe=.tds) $(install_bindir)
diff --git a/cpp/src/iceserviceinstall/ServiceInstaller.cpp b/cpp/src/iceserviceinstall/ServiceInstaller.cpp
index 70669764cd0..af489da477b 100644
--- a/cpp/src/iceserviceinstall/ServiceInstaller.cpp
+++ b/cpp/src/iceserviceinstall/ServiceInstaller.cpp
@@ -35,7 +35,7 @@ namespace
{
//
-// Replace / by \
+// Replace "/" by "\"
//
inline string
fixDirSeparator(const string& path)
@@ -807,7 +807,7 @@ IceServiceInstaller::removeSource(const string& source) const
{
throw "Could not close registry key handle: " + IceUtilInternal::errorToString(res);
}
- return subkey;
+ return string(subkey);
}
++index;
@@ -831,6 +831,8 @@ IceServiceInstaller::removeSource(const string& source) const
{
throw "Could not close registry key handle: " + IceUtilInternal::errorToString(res);
}
+
+ return ""; // To keep compilers happy.
}
string
diff --git a/cpp/src/slice2cpp/.depend b/cpp/src/slice2cpp/.depend
index 3e72263da59..a9700e4a72c 100644
--- a/cpp/src/slice2cpp/.depend
+++ b/cpp/src/slice2cpp/.depend
@@ -1,2 +1,2 @@
-Gen$(OBJEXT): Gen.cpp ./Gen.h $(includedir)/Slice/Parser.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/OutputUtil.h $(includedir)/Slice/Util.h $(includedir)/Slice/CPlusPlusUtil.h $(includedir)/IceUtil/Functional.h $(includedir)/IceUtil/Iterator.h $(includedir)/Slice/Checksum.h
-Main$(OBJEXT): Main.cpp $(includedir)/IceUtil/Options.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/CtrlCHandler.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Slice/Preprocessor.h ./Gen.h $(includedir)/Slice/Parser.h $(includedir)/IceUtil/OutputUtil.h
+Gen$(OBJEXT): Gen.cpp $(includedir)/IceUtil/DisableWarnings.h ./Gen.h $(includedir)/Slice/Parser.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/OutputUtil.h $(includedir)/Slice/Util.h $(includedir)/Slice/CPlusPlusUtil.h $(includedir)/IceUtil/Functional.h $(includedir)/IceUtil/Iterator.h $(includedir)/Slice/Checksum.h $(includedir)/Slice/FileTracker.h $(includedir)/Slice/Preprocessor.h
+Main$(OBJEXT): Main.cpp $(includedir)/IceUtil/Options.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/CtrlCHandler.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Slice/Preprocessor.h $(includedir)/Slice/FileTracker.h $(includedir)/Slice/Parser.h $(includedir)/Slice/Util.h ./Gen.h $(includedir)/IceUtil/OutputUtil.h
diff --git a/cpp/src/slice2cpp/Gen.cpp b/cpp/src/slice2cpp/Gen.cpp
index 21345c09093..6bd7fe0bd50 100644
--- a/cpp/src/slice2cpp/Gen.cpp
+++ b/cpp/src/slice2cpp/Gen.cpp
@@ -22,8 +22,6 @@
#include <sys/stat.h>
#include <string.h>
-#include <iostream> //TODO
-
using namespace std;
using namespace Slice;
using namespace IceUtil;
@@ -86,11 +84,12 @@ Slice::Gen::~Gen()
void
Slice::Gen::generate(const UnitPtr& p)
{
+ string file = p->topLevelFile();
//
- // Check the header-ext global meta data if is not empty we override _headerExtension
+ // Give precedence to header-ext global metadata.
//
- string headerExtension = getHeaderExt(p->modules());
+ string headerExtension = getHeaderExt(file, p);
if(!headerExtension.empty())
{
_headerExtension = headerExtension;
@@ -291,7 +290,7 @@ Slice::Gen::generate(const UnitPtr& p)
for(StringList::const_iterator q = includes.begin(); q != includes.end(); ++q)
{
- string extension = getHeaderExt((*q), p->modules());
+ string extension = getHeaderExt((*q), p);
if(extension.empty())
{
extension = _headerExtension;
@@ -306,8 +305,24 @@ Slice::Gen::generate(const UnitPtr& p)
C << "\n#include <IceUtil/DisableWarnings.h>";
}
- GlobalIncludeVisitor globalIncludeVisitor(H);
- p->visit(&globalIncludeVisitor, false);
+ //
+ // Emit #include statements for any cpp:include metadata directives
+ // in the top-level Slice file.
+ //
+ {
+ DefinitionContextPtr dc = p->findDefinitionContext(file);
+ assert(dc);
+ StringList globalMetaData = dc->getMetaData();
+ for(StringList::const_iterator q = globalMetaData.begin(); q != globalMetaData.end(); ++q)
+ {
+ string s = *q;
+ static const string includePrefix = "cpp:include:";
+ if(s.find(includePrefix) == 0 && s.size() > includePrefix.size())
+ {
+ H << nl << "#include <" << s.substr(includePrefix.size()) << ">";
+ }
+ }
+ }
printVersionCheck(H);
printVersionCheck(C);
@@ -442,36 +457,6 @@ Slice::Gen::writeExtraHeaders(IceUtilInternal::Output& out)
}
}
-Slice::Gen::GlobalIncludeVisitor::GlobalIncludeVisitor(Output& h) :
- H(h), _finished(false)
-{
-}
-
-bool
-Slice::Gen::GlobalIncludeVisitor::visitModuleStart(const ModulePtr& p)
-{
- if(!_finished)
- {
- DefinitionContextPtr dc = p->definitionContext();
- assert(dc);
- StringList globalMetaData = dc->getMetaData();
-
- static const string includePrefix = "cpp:include:";
-
- for(StringList::const_iterator q = globalMetaData.begin(); q != globalMetaData.end(); ++q)
- {
- string s = *q;
- if(s.find(includePrefix) == 0)
- {
- H << nl << "#include <" << s.substr(includePrefix.size()) << ">";
- }
- }
- _finished = true;
- }
-
- return false;
-}
-
Slice::Gen::TypesVisitor::TypesVisitor(Output& h, Output& c, const string& dllExport, bool stream) :
H(h), C(c), _dllExport(dllExport), _stream(stream), _doneStaticSymbol(false), _useWstring(false)
{
@@ -1140,6 +1125,26 @@ void
Slice::Gen::TypesVisitor::visitDataMember(const DataMemberPtr& p)
{
string name = fixKwd(p->name());
+ TypePtr type = p->type();
+ if(p->container() != 0 && (StructPtr::dynamicCast(p->container()) || ExceptionPtr::dynamicCast(p->container())) &&
+ SequencePtr::dynamicCast(type))
+ {
+ SequencePtr s = SequencePtr::dynamicCast(type);
+ BuiltinPtr builtin = BuiltinPtr::dynamicCast(s->type());
+ if(builtin && builtin->kind() == Builtin::KindByte)
+ {
+ StringList metaData = s->getMetaData();
+ bool protobuf;
+ findMetaData(s, metaData, false, protobuf);
+ if(protobuf)
+ {
+ emitWarning(p->file(), p->line(), string("protobuf cannot be used as a ") +
+ (StructPtr::dynamicCast(p->container()) ? "struct" : "exception") +
+ " member in C++");
+ }
+ }
+ }
+
string s = typeToString(p->type(), _useWstring, p->getMetaData());
H << nl << s << ' ' << name << ';';
}
@@ -1151,14 +1156,20 @@ Slice::Gen::TypesVisitor::visitSequence(const SequencePtr& p)
TypePtr type = p->type();
string s = typeToString(type, _useWstring, p->typeMetaData());
StringList metaData = p->getMetaData();
- string seqType = findMetaData(metaData, false);
- if(!seqType.empty())
- {
- H << sp << nl << "typedef " << seqType << ' ' << name << ';';
- }
- else
+
+ bool protobuf;
+ string seqType = findMetaData(p, metaData, false, protobuf);
+ H << sp;
+ if(!protobuf)
{
- H << sp << nl << "typedef ::std::vector<" << (s[0] == ':' ? " " : "") << s << "> " << name << ';';
+ if(!seqType.empty())
+ {
+ H << nl << "typedef " << seqType << ' ' << name << ';';
+ }
+ else
+ {
+ H << nl << "typedef ::std::vector<" << (s[0] == ':' ? " " : "") << s << "> " << name << ';';
+ }
}
BuiltinPtr builtin = BuiltinPtr::dynamicCast(type);
@@ -1167,100 +1178,163 @@ Slice::Gen::TypesVisitor::visitSequence(const SequencePtr& p)
string scoped = fixKwd(p->scoped());
string scope = fixKwd(p->scope());
- if(!seqType.empty())
+ if(protobuf || !seqType.empty())
{
- H << nl << _dllExport << "void __write" << name << "(::IceInternal::BasicStream*, const " << name << "&);";
- H << nl << _dllExport << "void __read" << name << "(::IceInternal::BasicStream*, " << name << "&);";
+ string typeName = name;
+ string scopedName = scoped;
+ if(protobuf && !seqType.empty())
+ {
+ typeName = seqType;
+ scopedName = seqType;
+ }
+ H << nl << _dllExport << "void __write" << name << "(::IceInternal::BasicStream*, const "
+ << typeName << "&);";
+ H << nl << _dllExport << "void __read" << name << "(::IceInternal::BasicStream*, "
+ << typeName << "&);";
if(_stream)
{
H << nl << _dllExport << "void ice_write" << p->name() << "(const ::Ice::OutputStreamPtr&, const "
- << name << "&);";
- H << nl << _dllExport << "void ice_read" << p->name() << "(const ::Ice::InputStreamPtr&, " << name
+ << typeName << "&);";
+ H << nl << _dllExport << "void ice_read" << p->name() << "(const ::Ice::InputStreamPtr&, " << typeName
<< "&);";
}
C << sp << nl << "void" << nl << scope.substr(2) << "__write" << name <<
- "(::IceInternal::BasicStream* __os, const " << scoped << "& v)";
- C << sb;
- C << nl << "::Ice::Int size = static_cast< ::Ice::Int>(v.size());";
- C << nl << "__os->writeSize(size);";
- C << nl << "for(" << name << "::const_iterator p = v.begin(); p != v.end(); ++p)";
+ "(::IceInternal::BasicStream* __os, const " << scopedName << "& v)";
C << sb;
- writeMarshalUnmarshalCode(C, type, "(*p)", true);
- C << eb;
+ if(protobuf)
+ {
+ C << nl << "std::vector< ::Ice::Byte> data(v.ByteSize());";
+ C << nl << "if(!v.IsInitialized())";
+ C << sb;
+ C << nl << "throw ::Ice::MarshalException(__FILE__, __LINE__, \"type not fully initialized: \" + v.InitializationErrorString());";
+ C << eb;
+ C << nl << "if(!v.SerializeToArray(&data[0], data.size()))";
+ C << sb;
+ C << nl << "throw ::Ice::MarshalException(__FILE__, __LINE__, \"SerializeToArray failed\");";
+ C << eb;
+ C << nl << "__os->write(&data[0], &data[0] + data.size());";
+ }
+ else
+ {
+ C << nl << "::Ice::Int size = static_cast< ::Ice::Int>(v.size());";
+ C << nl << "__os->writeSize(size);";
+ C << nl << "for(" << name << "::const_iterator p = v.begin(); p != v.end(); ++p)";
+ C << sb;
+ writeMarshalUnmarshalCode(C, type, "(*p)", true);
+ C << eb;
+ }
C << eb;
C << sp << nl << "void" << nl << scope.substr(2) << "__read" << name
- << "(::IceInternal::BasicStream* __is, " << scoped << "& v)";
+ << "(::IceInternal::BasicStream* __is, " << scopedName << "& v)";
C << sb;
- C << nl << "::Ice::Int sz;";
- C << nl << "__is->readSize(sz);";
- C << nl << name << "(sz).swap(v);";
- if(type->isVariableLength())
+ if(protobuf)
{
- // Protect against bogus sequence sizes.
- C << nl << "__is->startSeq(sz, " << type->minWireSize() << ");";
+ C << nl << "::std::pair<const ::Ice::Byte*, const ::Ice::Byte*> data;";
+ C << nl << "__is->read(data);";
+ C << nl << "if(!v.ParseFromArray(data.first, data.second - data.first))";
+ C << sb;
+ C << nl << "throw ::Ice::MarshalException(__FILE__, __LINE__, \"ParseFromArray failed\");";
+ C << eb;
}
else
{
- C << nl << "__is->checkFixedSeq(sz, " << type->minWireSize() << ");";
- }
- C << nl << "for(" << name << "::iterator p = v.begin(); p != v.end(); ++p)";
- C << sb;
- writeMarshalUnmarshalCode(C, type, "(*p)", false);
+ C << nl << "::Ice::Int sz;";
+ C << nl << "__is->readSize(sz);";
+ C << nl << name << "(sz).swap(v);";
+ if(type->isVariableLength())
+ {
+ // Protect against bogus sequence sizes.
+ C << nl << "__is->startSeq(sz, " << type->minWireSize() << ");";
+ }
+ else
+ {
+ C << nl << "__is->checkFixedSeq(sz, " << type->minWireSize() << ");";
+ }
+ C << nl << "for(" << name << "::iterator p = v.begin(); p != v.end(); ++p)";
+ C << sb;
+ writeMarshalUnmarshalCode(C, type, "(*p)", false);
- //
- // After unmarshaling each element, check that there are still enough bytes left in the stream
- // to unmarshal the remainder of the sequence, and decrement the count of elements
- // yet to be unmarshaled for sequences with variable-length element type (that is, for sequences
- // of classes, structs, dictionaries, sequences, strings, or proxies). This allows us to
- // abort unmarshaling for bogus sequence sizes at the earliest possible moment.
- // (For fixed-length sequences, we don't need to do this because the prediction of how many
- // bytes will be taken up by the sequence is accurate.)
- //
- if(type->isVariableLength())
- {
- if(!SequencePtr::dynamicCast(type))
+ //
+ // After unmarshaling each element, check that there are still enough bytes left in the stream
+ // to unmarshal the remainder of the sequence, and decrement the count of elements
+ // yet to be unmarshaled for sequences with variable-length element type (that is, for sequences
+ // of classes, structs, dictionaries, sequences, strings, or proxies). This allows us to
+ // abort unmarshaling for bogus sequence sizes at the earliest possible moment.
+ // (For fixed-length sequences, we don't need to do this because the prediction of how many
+ // bytes will be taken up by the sequence is accurate.)
+ //
+ if(type->isVariableLength())
{
- //
- // No need to check for directly nested sequences because, at the start of each
- // sequence, we check anyway.
- //
- C << nl << "__is->checkSeq();";
+ if(!SequencePtr::dynamicCast(type))
+ {
+ //
+ // No need to check for directly nested sequences because, at the start of each
+ // sequence, we check anyway.
+ //
+ C << nl << "__is->checkSeq();";
+ }
+ C << nl << "__is->endElement();";
+ }
+ C << eb;
+ if(type->isVariableLength())
+ {
+ C << nl << "__is->endSeq(sz);";
}
- C << nl << "__is->endElement();";
- }
- C << eb;
- if(type->isVariableLength())
- {
- C << nl << "__is->endSeq(sz);";
}
C << eb;
if(_stream)
{
C << sp << nl << "void" << nl << scope.substr(2) << "ice_write" << p->name()
- << "(const ::Ice::OutputStreamPtr& __outS, const " << scoped << "& v)";
- C << sb;
- C << nl << "__outS->writeSize(::Ice::Int(v.size()));";
- C << nl << scoped << "::const_iterator p;";
- C << nl << "for(p = v.begin(); p != v.end(); ++p)";
+ << "(const ::Ice::OutputStreamPtr& __outS, const " << scopedName << "& v)";
C << sb;
- writeStreamMarshalUnmarshalCode(C, type, "(*p)", true, "", _useWstring);
- C << eb;
+ if(protobuf)
+ {
+ C << nl << "std::vector< ::Ice::Byte> data(v.ByteSize());";
+ C << nl << "if(!v.IsInitialized())";
+ C << sb;
+ C << nl << "throw ::Ice::MarshalException(__FILE__, __LINE__, \"type not fully initialized: \" + v.InitializationErrorString());";
+ C << eb;
+ C << nl << "v.SerializeToArray(&data[0], data.size());";
+
+ C << nl << "__outS->writeByteSeq(data);";
+ }
+ else
+ {
+ C << nl << "__outS->writeSize(::Ice::Int(v.size()));";
+ C << nl << scopedName << "::const_iterator p;";
+ C << nl << "for(p = v.begin(); p != v.end(); ++p)";
+ C << sb;
+ writeStreamMarshalUnmarshalCode(C, type, "(*p)", true, "", _useWstring);
+ C << eb;
+ }
C << eb;
C << sp << nl << "void" << nl << scope.substr(2) << "ice_read" << p->name()
- << "(const ::Ice::InputStreamPtr& __inS, " << scoped << "& v)";
- C << sb;
- C << nl << "::Ice::Int sz = __inS->readSize();";
- C << nl << scoped << "(sz).swap(v);";
- C << nl << scoped << "::iterator p;";
- C << nl << "for(p = v.begin(); p != v.end(); ++p)";
+ << "(const ::Ice::InputStreamPtr& __inS, " << scopedName << "& v)";
C << sb;
- writeStreamMarshalUnmarshalCode(C, type, "(*p)", false, "", _useWstring);
- C << eb;
+ if(protobuf)
+ {
+ C << nl << "std::pair<const ::Ice::Byte*, const ::Ice::Byte*> data;";
+ C << nl << "__inS->readByteSeq(data);";
+ C << nl << "if(!v.ParseFromArray(data.first, data.second - data.first))";
+ C << sb;
+ C << nl << "throw ::Ice::MarshalException(__FILE__, __LINE__, \"ParseFromArray failed\");";
+ C << eb;
+ }
+ else
+ {
+ C << nl << "::Ice::Int sz = __inS->readSize();";
+ C << nl << scopedName << "(sz).swap(v);";
+ C << nl << scopedName << "::iterator p;";
+ C << nl << "for(p = v.begin(); p != v.end(); ++p)";
+ C << sb;
+ writeStreamMarshalUnmarshalCode(C, type, "(*p)", false, "", _useWstring);
+ C << eb;
+ }
C << eb;
}
}
@@ -1369,6 +1443,22 @@ Slice::Gen::TypesVisitor::visitDictionary(const DictionaryPtr& p)
{
string name = fixKwd(p->name());
TypePtr keyType = p->keyType();
+ if(SequencePtr::dynamicCast(keyType))
+ {
+ SequencePtr s = SequencePtr::dynamicCast(keyType);
+ BuiltinPtr builtin = BuiltinPtr::dynamicCast(s->type());
+ if(builtin && builtin->kind() == Builtin::KindByte)
+ {
+ StringList metaData = s->getMetaData();
+ bool protobuf;
+ findMetaData(s, metaData, false, protobuf);
+ if(protobuf)
+ {
+ emitWarning(p->file(), p->line(), "protobuf cannot be used as a dictionary key in C++");
+ }
+ }
+ }
+
TypePtr valueType = p->valueType();
string ks = typeToString(keyType, _useWstring, p->keyMetaData());
if(ks[0] == ':')
@@ -2277,6 +2367,15 @@ Slice::Gen::ProxyVisitor::visitOperation(const OperationPtr& p)
C << nl << "::IceInternal::Handle< ::IceDelegate::Ice::Object> __delBase;";
C << nl << "try";
C << sb;
+
+ C.zeroIndent();
+ C << nl << "#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600) // C++Builder 2009 compiler bug";
+ C.restoreIndent();
+ C << nl << "IceUtil::DummyBCC dummy;";
+ C.zeroIndent();
+ C << nl << "#endif";
+ C.restoreIndent();
+
if(p->returnsData())
{
C << nl << "__checkTwowayOnly(" << p->flattenedScope() + p->name() + "_name);";
@@ -2646,6 +2745,11 @@ Slice::Gen::DelegateMVisitor::visitOperation(const OperationPtr& p)
}
C << nl << "bool __ok = __og.invoke();";
+
+ //
+ // Declare the return __ret variable at the top-level scope to
+ // enable NRVO with GCC (see also bug #3619).
+ //
writeAllocateCode(C, ParamDeclList(), ret, p->getMetaData(), _useWstring);
if(!p->returnsData())
{
@@ -3811,6 +3915,23 @@ Slice::Gen::ObjectVisitor::visitClassDefEnd(const ClassDefPtr& p)
bool prot = p->hasMetaData("protected");
for(q = dataMembers.begin(); q != dataMembers.end(); ++q)
{
+ TypePtr type = (*q)->type();
+ if(SequencePtr::dynamicCast(type))
+ {
+ SequencePtr s = SequencePtr::dynamicCast(type);
+ BuiltinPtr builtin = BuiltinPtr::dynamicCast(s->type());
+ if(builtin && builtin->kind() == Builtin::KindByte)
+ {
+ StringList metaData = s->getMetaData();
+ bool protobuf;
+ findMetaData(s, metaData, false, protobuf);
+ if(protobuf)
+ {
+ emitWarning((*q)->file(), (*q)->line(), "protobuf cannot be used as a class member in C++");
+ }
+ }
+ }
+
if(prot || (*q)->hasMetaData("protected"))
{
if(!inProtected)
@@ -4460,7 +4581,8 @@ Slice::Gen::ObjectVisitor::emitOneShotConstructor(const ClassDefPtr& p)
if(!allDataMembers.empty())
{
- C << sp << nl << p->scoped().substr(2) << "::" << fixKwd(p->name()) << spar << allParamDecls << epar << " :";
+ C << sp << nl << fixKwd(p->scoped()).substr(2) << "::" << fixKwd(p->name())
+ << spar << allParamDecls << epar << " :";
C.inc();
DataMemberList dataMembers = p->dataMembers();
@@ -5653,45 +5775,64 @@ Slice::Gen::validateMetaData(const UnitPtr& u)
}
bool
-Slice::Gen::MetaDataVisitor::visitModuleStart(const ModulePtr& p)
+Slice::Gen::MetaDataVisitor::visitUnitStart(const UnitPtr& p)
{
+ static const string prefix = "cpp:";
+
//
- // Validate global metadata.
+ // Validate global metadata in the top-level file and all included files.
//
- DefinitionContextPtr dc = p->definitionContext();
- assert(dc);
- StringList globalMetaData = dc->getMetaData();
- string file = dc->filename();
- static const string prefix = "cpp:";
+ StringList files = p->allFiles();
- int headerExtension = 0;
- for(StringList::const_iterator q = globalMetaData.begin(); q != globalMetaData.end(); ++q)
+ for(StringList::iterator q = files.begin(); q != files.end(); ++q)
{
- string s = *q;
- if(_history.count(s) == 0)
+ string file = *q;
+ DefinitionContextPtr dc = p->findDefinitionContext(file);
+ assert(dc);
+ StringList globalMetaData = dc->getMetaData();
+ int headerExtension = 0;
+ for(StringList::const_iterator r = globalMetaData.begin(); r != globalMetaData.end(); ++r)
{
- if(s.find(prefix) == 0)
+ string s = *r;
+ if(_history.count(s) == 0)
{
- string ss = s.substr(prefix.size());
- if(ss.find("include:") == 0)
+ if(s.find(prefix) == 0)
{
- continue;
- }
- else if(ss.find("header-ext:") == 0)
- {
- headerExtension++;
- if(headerExtension == 1)
+ static const string cppIncludePrefix = "cpp:include:";
+ static const string cppHeaderExtPrefix = "cpp:header-ext:";
+ if(s.find(cppIncludePrefix) == 0 && s.size() > cppIncludePrefix.size())
{
continue;
}
+ else if(s.find(cppHeaderExtPrefix) == 0 && s.size() > cppHeaderExtPrefix.size())
+ {
+ headerExtension++;
+ if(headerExtension > 1)
+ {
+ ostringstream ostr;
+ ostr << "ignoring invalid global metadata `" << s
+ << "': directive can appear only once per file";
+ emitWarning(file, -1, ostr.str());
+ _history.insert(s);
+ }
+ continue;
+ }
+ ostringstream ostr;
+ ostr << "ignoring invalid global metadata `" << s << "'";
+ emitWarning(file, -1, ostr.str());
}
- cerr << file << ": warning: ignoring invalid global metadata `" << s << "', the cpp:header-ext global metadata can only appear once per file." << endl;
+ _history.insert(s);
}
- _history.insert(s);
}
}
- validate(p, p->getMetaData(), p->definitionContext()->filename(), p->line());
+ return true;
+}
+
+bool
+Slice::Gen::MetaDataVisitor::visitModuleStart(const ModulePtr& p)
+{
+ validate(p, p->getMetaData(), p->file(), p->line());
return true;
}
@@ -5703,13 +5844,13 @@ Slice::Gen::MetaDataVisitor::visitModuleEnd(const ModulePtr&)
void
Slice::Gen::MetaDataVisitor::visitClassDecl(const ClassDeclPtr& p)
{
- validate(p, p->getMetaData(), p->definitionContext()->filename(), p->line());
+ validate(p, p->getMetaData(), p->file(), p->line());
}
bool
Slice::Gen::MetaDataVisitor::visitClassDefStart(const ClassDefPtr& p)
{
- validate(p, p->getMetaData(), p->definitionContext()->filename(), p->line());
+ validate(p, p->getMetaData(), p->file(), p->line());
return true;
}
@@ -5721,7 +5862,7 @@ Slice::Gen::MetaDataVisitor::visitClassDefEnd(const ClassDefPtr&)
bool
Slice::Gen::MetaDataVisitor::visitExceptionStart(const ExceptionPtr& p)
{
- validate(p, p->getMetaData(), p->definitionContext()->filename(), p->line());
+ validate(p, p->getMetaData(), p->file(), p->line());
return true;
}
@@ -5733,7 +5874,7 @@ Slice::Gen::MetaDataVisitor::visitExceptionEnd(const ExceptionPtr&)
bool
Slice::Gen::MetaDataVisitor::visitStructStart(const StructPtr& p)
{
- validate(p, p->getMetaData(), p->definitionContext()->filename(), p->line());
+ validate(p, p->getMetaData(), p->file(), p->line());
return true;
}
@@ -5745,6 +5886,7 @@ Slice::Gen::MetaDataVisitor::visitStructEnd(const StructPtr&)
void
Slice::Gen::MetaDataVisitor::visitOperation(const OperationPtr& p)
{
+
bool ami = false;
ClassDefPtr cl = ClassDefPtr::dynamicCast(p->container());
if(cl->hasMetaData("ami") || p->hasMetaData("ami") || cl->hasMetaData("amd") || p->hasMetaData("amd"))
@@ -5756,10 +5898,11 @@ Slice::Gen::MetaDataVisitor::visitOperation(const OperationPtr& p)
{
if(!cl->isLocal())
{
- cerr << p->definitionContext()->filename() << ":" << p->line()
- << ": warning: metadata directive `UserException' applies only to local operations "
+ ostringstream ostr;
+ ostr << "ignoring invalid metadata `UserException': directive applies only to local operations "
<< "but enclosing " << (cl->isInterface() ? "interface" : "class") << "`" << cl->name()
- << "' is not local" << endl;
+ << "' is not local";
+ emitWarning(p->file(), p->line(), ostr.str());
}
}
@@ -5775,60 +5918,86 @@ Slice::Gen::MetaDataVisitor::visitOperation(const OperationPtr& p)
{
if(q->find("cpp:type:", 0) == 0 || q->find("cpp:array", 0) == 0 || q->find("cpp:range", 0) == 0)
{
- cerr << p->definitionContext()->filename() << ":" << p->line()
- << ": warning: invalid metadata for operation" << endl;
+ emitWarning(p->file(), p->line(), "ignoring invalid metadata `" + *q +
+ "' for operation with void return type");
break;
}
}
}
else
{
- validate(returnType, metaData, p->definitionContext()->filename(), p->line(), ami);
+ validate(returnType, metaData, p->file(), p->line(), ami);
}
}
ParamDeclList params = p->parameters();
for(ParamDeclList::iterator q = params.begin(); q != params.end(); ++q)
{
- validate((*q)->type(), (*q)->getMetaData(), p->definitionContext()->filename(), (*q)->line(),
- ami || !(*q)->isOutParam());
+ validate((*q)->type(), (*q)->getMetaData(), p->file(), (*q)->line(), ami || !(*q)->isOutParam());
}
}
void
Slice::Gen::MetaDataVisitor::visitParamDecl(const ParamDeclPtr& p)
{
- validate(p, p->getMetaData(), p->definitionContext()->filename(), p->line());
+ validate(p, p->getMetaData(), p->file(), p->line());
}
void
Slice::Gen::MetaDataVisitor::visitDataMember(const DataMemberPtr& p)
{
- validate(p->type(), p->getMetaData(), p->definitionContext()->filename(), p->line());
+ validate(p->type(), p->getMetaData(), p->file(), p->line());
}
void
Slice::Gen::MetaDataVisitor::visitSequence(const SequencePtr& p)
{
- validate(p, p->getMetaData(), p->definitionContext()->filename(), p->line());
+ StringList metaData = p->getMetaData();
+ const string file = p->file();
+ const string line = p->line();
+ static const string prefix = "cpp:protobuf";
+ for(StringList::const_iterator q = metaData.begin(); q != metaData.end(); )
+ {
+ string s = *q++;
+ if(_history.count(s) == 0)
+ {
+ if(s.find(prefix) == 0)
+ {
+ //
+ // Remove from list so validate does not try to handle as well.
+ //
+ metaData.remove(s);
+
+ BuiltinPtr builtin = BuiltinPtr::dynamicCast(p->type());
+ if(!builtin || builtin->kind() != Builtin::KindByte)
+ {
+ _history.insert(s);
+ emitWarning(file, line, "ignoring invalid metadata `" + s + "':\n"+
+ "`protobuf' encoding must be a byte sequence.");
+ }
+ }
+ }
+ }
+
+ validate(p, metaData, file, line);
}
void
Slice::Gen::MetaDataVisitor::visitDictionary(const DictionaryPtr& p)
{
- validate(p, p->getMetaData(), p->definitionContext()->filename(), p->line());
+ validate(p, p->getMetaData(), p->file(), p->line());
}
void
Slice::Gen::MetaDataVisitor::visitEnum(const EnumPtr& p)
{
- validate(p, p->getMetaData(), p->definitionContext()->filename(), p->line());
+ validate(p, p->getMetaData(), p->file(), p->line());
}
void
Slice::Gen::MetaDataVisitor::visitConst(const ConstPtr& p)
{
- validate(p, p->getMetaData(), p->definitionContext()->filename(), p->line());
+ validate(p, p->getMetaData(), p->file(), p->line());
}
void
@@ -5867,8 +6036,7 @@ Slice::Gen::MetaDataVisitor::validate(const SyntaxTreeBasePtr& cont, const Strin
{
continue;
}
-
- cerr << file << ":" << line << ": warning: ignoring invalid metadata `" << s << "'" << endl;
+ emitWarning(file, line, "ignoring invalid metadata `" + s + "'");
}
_history.insert(s);
}
@@ -5900,45 +6068,16 @@ Slice::Gen::resetUseWstring(list<bool>& hist)
}
string
-Slice::Gen::getHeaderExt(const string& file, const ModuleList& modules)
-{
- string ext = "";
- if(!modules.empty()) // Just in case the Slice file has no definitions
- {
- for(ModuleList::const_iterator i = modules.begin(); i != modules.end(); ++i)
- {
- if((*i)->definitionContext()->filename() == file)
- {
- string meta = (*i)->definitionContext()->findMetaData("cpp:header-ext");
- string::size_type index = meta.find_last_of(":");
- if(index != string::npos && index + 1 < meta.size())
- {
- ext = meta.substr(index + 1, meta.size() - index - 1);
- }
- }
- }
- }
- return ext;
-}
-
-string
-Slice::Gen::getHeaderExt(const ModuleList& modules)
+Slice::Gen::getHeaderExt(const string& file, const UnitPtr& unit)
{
- string ext = "";
- if(!modules.empty()) // Just in case the Slice file has no definitions
+ string ext;
+ static const string headerExtPrefix = "cpp:header-ext:";
+ DefinitionContextPtr dc = unit->findDefinitionContext(file);
+ assert(dc);
+ string meta = dc->findMetaData(headerExtPrefix);
+ if(meta.size() > headerExtPrefix.size())
{
- for(ModuleList::const_iterator i = modules.begin(); i != modules.end(); ++i)
- {
- if((*i)->definitionContext()->includeLevel() == 0)
- {
- string meta = (*i)->definitionContext()->findMetaData("cpp:header-ext");
- string::size_type index = meta.find_last_of(":");
- if(index != string::npos && index + 1 < meta.size())
- {
- ext = meta.substr(index + 1, meta.size() - index - 1);
- }
- }
- }
+ ext = meta.substr(headerExtPrefix.size());
}
return ext;
}
diff --git a/cpp/src/slice2cpp/Gen.h b/cpp/src/slice2cpp/Gen.h
index 9cb699a205c..9f15d3fd6d9 100644
--- a/cpp/src/slice2cpp/Gen.h
+++ b/cpp/src/slice2cpp/Gen.h
@@ -46,17 +46,10 @@ private:
//
- // Get the header extension defined in the global metadata for a given file
- // if there isn't defined returns a empty string
+ // Returns the header extension defined in the global metadata for a given file,
+ // or an empty string if no global metadata was found.
//
- std::string getHeaderExt(const std::string& file, const ModuleList& modules);
-
- //
- // Get the header extension defined in the global metadata for the current
- // compiling file.
- // if there isn't defined returns a empty string
- //
- std::string getHeaderExt(const ModuleList& modules);
+ std::string getHeaderExt(const std::string& file, const UnitPtr& unit);
::IceUtilInternal::Output H;
::IceUtilInternal::Output C;
@@ -78,21 +71,6 @@ private:
bool _stream;
bool _ice;
- class GlobalIncludeVisitor : private ::IceUtil::noncopyable, public ParserVisitor
- {
- public:
-
- GlobalIncludeVisitor(::IceUtilInternal::Output&);
-
- virtual bool visitModuleStart(const ModulePtr&);
-
- private:
-
- ::IceUtilInternal::Output& H;
-
- bool _finished;
- };
-
class TypesVisitor : private ::IceUtil::noncopyable, public ParserVisitor
{
public:
@@ -416,6 +394,7 @@ private:
{
public:
+ virtual bool visitUnitStart(const UnitPtr&);
virtual bool visitModuleStart(const ModulePtr&);
virtual void visitModuleEnd(const ModulePtr&);
virtual void visitClassDecl(const ClassDeclPtr&);
diff --git a/cpp/src/slice2cpp/Main.cpp b/cpp/src/slice2cpp/Main.cpp
index 86eafe9e64f..cdbefe44792 100644
--- a/cpp/src/slice2cpp/Main.cpp
+++ b/cpp/src/slice2cpp/Main.cpp
@@ -12,6 +12,7 @@
#include <IceUtil/StaticMutex.h>
#include <Slice/Preprocessor.h>
#include <Slice/FileTracker.h>
+#include <Slice/Util.h>
#include <Gen.h>
using namespace std;
@@ -84,6 +85,9 @@ main(int argc, char* argv[])
vector<string> args;
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
args = opts.parse(argc, (const char**)argv);
}
catch(const IceUtilInternal::BadOptException& e)
@@ -155,7 +159,7 @@ main(int argc, char* argv[])
if(args.empty())
{
- cerr << argv[0] << ": no input file" << endl;
+ getErrorStream() << argv[0] << ": error: no input file" << endl;
usage(argv[0]);
return EXIT_FAILURE;
}
@@ -169,15 +173,15 @@ main(int argc, char* argv[])
{
if(depend)
{
- Preprocessor icecpp(argv[0], *i, cppArgs, sourceExtension);
- if(!icecpp.printMakefileDependencies(Preprocessor::CPlusPlus, includePaths))
+ Preprocessor icecpp(argv[0], *i, cppArgs);
+ if(!icecpp.printMakefileDependencies(Preprocessor::CPlusPlus, includePaths, sourceExtension))
{
return EXIT_FAILURE;
}
}
else
{
- Preprocessor icecpp(argv[0], *i, cppArgs, sourceExtension);
+ Preprocessor icecpp(argv[0], *i, cppArgs);
FILE* cppHandle = icecpp.preprocess(false);
if(cppHandle == 0)
@@ -229,7 +233,7 @@ main(int argc, char* argv[])
// cleanup any created files.
FileTracker::instance()->cleanup();
u->destroy();
- cerr << argv[0] << ": " << ex.reason() << endl;
+ getErrorStream() << argv[0] << ": error: " << ex.reason() << endl;
return EXIT_FAILURE;
}
}
diff --git a/cpp/src/slice2cpp/Makefile.mak b/cpp/src/slice2cpp/Makefile.mak
index 847211d4f52..e039744dea8 100644
--- a/cpp/src/slice2cpp/Makefile.mak
+++ b/cpp/src/slice2cpp/Makefile.mak
@@ -26,7 +26,7 @@ CPPFLAGS = -I. $(CPPFLAGS) -DWIN32_LEAN_AND_MEAN
PDBFLAGS = /pdb:$(NAME:.exe=.pdb)
!endif
-!if "$(CPP_COMPILER)" == "BCC2007"
+!if "$(BCPLUSPLUS)" == "yes"
RES_FILE = ,, Slice2Cpp.res
!else
RES_FILE = Slice2Cpp.res
@@ -46,7 +46,7 @@ install:: all
copy $(NAME) $(install_bindir)
-!if "$(CPP_COMPILER)" == "BCC2007" && "$(OPTIMIZE)" != "yes"
+!if "$(BCPLUSPLUS)" == "yes" && "$(OPTIMIZE)" != "yes"
install:: all
copy $(NAME:.exe=.tds) $(install_bindir)
diff --git a/cpp/src/slice2cs/.depend b/cpp/src/slice2cs/.depend
index 3681dd8ef03..ac8143032bd 100644
--- a/cpp/src/slice2cs/.depend
+++ b/cpp/src/slice2cs/.depend
@@ -1,2 +1,2 @@
-Gen$(OBJEXT): Gen.cpp $(includedir)/IceUtil/DisableWarnings.h $(includedir)/IceUtil/Functional.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Config.h ./Gen.h $(includedir)/Slice/CsUtil.h $(includedir)/Slice/Parser.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/OutputUtil.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/UUID.h $(includedir)/Slice/Checksum.h $(includedir)/Slice/DotNetNames.h
-Main$(OBJEXT): Main.cpp $(includedir)/IceUtil/Options.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/CtrlCHandler.h $(includedir)/Slice/Preprocessor.h ./Gen.h $(includedir)/Slice/CsUtil.h $(includedir)/Slice/Parser.h $(includedir)/IceUtil/OutputUtil.h
+Gen$(OBJEXT): Gen.cpp $(includedir)/IceUtil/DisableWarnings.h $(includedir)/IceUtil/Functional.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Config.h ./Gen.h $(includedir)/Slice/CsUtil.h $(includedir)/Slice/Parser.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/OutputUtil.h $(includedir)/IceUtil/Iterator.h $(includedir)/IceUtil/UUID.h $(includedir)/Slice/Checksum.h $(includedir)/Slice/DotNetNames.h $(includedir)/Slice/FileTracker.h
+Main$(OBJEXT): Main.cpp $(includedir)/IceUtil/Options.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/CtrlCHandler.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Slice/Preprocessor.h $(includedir)/Slice/FileTracker.h $(includedir)/Slice/Parser.h $(includedir)/Slice/Util.h ./Gen.h $(includedir)/Slice/CsUtil.h $(includedir)/IceUtil/OutputUtil.h
diff --git a/cpp/src/slice2cs/Gen.cpp b/cpp/src/slice2cs/Gen.cpp
index b3c236cfa1a..b803c48c768 100644
--- a/cpp/src/slice2cs/Gen.cpp
+++ b/cpp/src/slice2cs/Gen.cpp
@@ -425,9 +425,9 @@ Slice::CsVisitor::writeDispatchAndMarshalling(const ClassDefPtr& p, bool stream)
for(t = throws.begin(); t != throws.end(); ++t)
{
string exS = fixId((*t)->scoped());
- _out << nl << "catch(" << exS << " ex)";
+ _out << nl << "catch(" << exS << " ex__)";
_out << sb;
- _out << nl << "os__.writeUserException(ex);";
+ _out << nl << "os__.writeUserException(ex__);";
_out << nl << "return Ice.DispatchStatus.DispatchUserException;";
_out << eb;
}
@@ -534,9 +534,9 @@ Slice::CsVisitor::writeDispatchAndMarshalling(const ClassDefPtr& p, bool stream)
}
_out << "current__" << epar << ';';
_out << eb;
- _out << nl << "catch(_System.Exception ex)";
+ _out << nl << "catch(_System.Exception ex__)";
_out << sb;
- _out << nl << "cb__.ice_exception(ex);";
+ _out << nl << "cb__.ice_exception(ex__);";
_out << eb;
_out << nl << "return Ice.DispatchStatus.DispatchAsync;";
@@ -1110,7 +1110,7 @@ Slice::Gen::Gen(const string& base, const vector<string>& includePaths, const st
if(stat(fileImpl.c_str(), &st) == 0)
{
ostringstream os;
- os << fileImpl << "' already exists - will not overwrite";
+ os << "`" << fileImpl << "' already exists - will not overwrite";
throw FileException(__FILE__, __LINE__, os.str());
}
@@ -1143,7 +1143,7 @@ Slice::Gen::generate(const UnitPtr& p)
{
CsGenerator::validateMetaData(p);
- UnitVisitor unitVisitor(_out, _stream);
+ UnitVisitor unitVisitor(_out);
p->visit(&unitVisitor, false);
TypesVisitor typesVisitor(_out, _stream);
@@ -1263,35 +1263,34 @@ Slice::Gen::printHeader()
_out << "\n// Ice version " << ICE_STRING_VERSION;
}
-Slice::Gen::UnitVisitor::UnitVisitor(IceUtilInternal::Output& out, bool stream)
- : CsVisitor(out), _stream(stream), _globalMetaDataDone(false)
+Slice::Gen::UnitVisitor::UnitVisitor(IceUtilInternal::Output& out)
+ : CsVisitor(out)
{
}
bool
-Slice::Gen::UnitVisitor::visitModuleStart(const ModulePtr& p)
+Slice::Gen::UnitVisitor::visitUnitStart(const UnitPtr& p)
{
- if(!_globalMetaDataDone)
- {
- DefinitionContextPtr dc = p->definitionContext();
- StringList globalMetaData = dc->getMetaData();
+ DefinitionContextPtr dc = p->findDefinitionContext(p->topLevelFile());
+ assert(dc);
+ StringList globalMetaData = dc->getMetaData();
- static const string attributePrefix = "cs:attribute:";
+ static const string attributePrefix = "cs:attribute:";
- if(!globalMetaData.empty())
- {
- _out << sp;
- }
- for(StringList::const_iterator q = globalMetaData.begin(); q != globalMetaData.end(); ++q)
+ bool sep = false;
+ for(StringList::const_iterator q = globalMetaData.begin(); q != globalMetaData.end(); ++q)
+ {
+ string::size_type pos = q->find(attributePrefix);
+ if(pos == 0 && q->size() > attributePrefix.size())
{
- string::size_type pos = q->find(attributePrefix);
- if(pos == 0)
+ if(!sep)
{
- string attrib = q->substr(pos + attributePrefix.size());
- _out << nl << '[' << attrib << ']';
+ _out << sp;
+ sep = true;
}
+ string attrib = q->substr(pos + attributePrefix.size());
+ _out << nl << '[' << attrib << ']';
}
- _globalMetaDataDone = true; // Do this only once per source file.
}
return false;
}
@@ -1666,6 +1665,15 @@ Slice::Gen::TypesVisitor::visitSequence(const SequencePtr& p)
return;
}
+ //
+ // No need to generate anything for serializable sequences.
+ //
+ prefix = "clr:serializable:";
+ if(p->findMetaData(prefix, meta))
+ {
+ return;
+ }
+
string name = fixId(p->name());
string s = typeToString(p->type());
@@ -2137,7 +2145,7 @@ Slice::Gen::TypesVisitor::visitExceptionEnd(const ExceptionPtr& p)
_out << eb;
}
- if(!base || (base && !base->usesClasses()))
+ if((!base || (base && !base->usesClasses())) && p->usesClasses())
{
_out << sp << nl << "public override bool usesClasses__()";
_out << sb;
@@ -2668,8 +2676,6 @@ Slice::Gen::TypesVisitor::visitDataMember(const DataMemberPtr& p)
emitDeprecate(p, cont, _out, "member");
- emitAttributes(p);
-
string type = typeToString(p->type());
string propertyName = fixId(p->name(), baseTypes, isClass);
string dataMemberName = propertyName;
@@ -2678,18 +2684,19 @@ Slice::Gen::TypesVisitor::visitDataMember(const DataMemberPtr& p)
dataMemberName += "_prop";
}
- _out << nl;
if(propertyMapping)
{
- _out << "private";
+ _out << nl << "private";
}
else if(isProtected)
{
- _out << "protected";
+ emitAttributes(p);
+ _out << nl << "protected";
}
else
{
- _out << "public";
+ emitAttributes(p);
+ _out << nl << "public";
}
_out << ' ' << type << ' ' << dataMemberName << ';';
@@ -2698,6 +2705,7 @@ Slice::Gen::TypesVisitor::visitDataMember(const DataMemberPtr& p)
return;
}
+ emitAttributes(p);
_out << nl << (isProtected ? "protected" : "public");
if(!isValue)
{
@@ -2732,9 +2740,10 @@ Slice::Gen::TypesVisitor::writeMemberHashCode(const DataMemberList& dataMembers,
SequencePtr seq = SequencePtr::dynamicCast(memberType);
if(seq)
{
- string genericType;
- bool isGeneric = seq->findMetaData("clr:generic:", genericType);
- bool isArray = !isGeneric && !seq->hasMetaData("clr:collection");
+ string meta;
+ bool isSerializable = seq->findMetaData("clr:serializable", meta);
+ bool isGeneric = seq->findMetaData("clr:generic:", meta);
+ bool isArray = !isSerializable && !isGeneric && !seq->hasMetaData("clr:collection");
if(isArray)
{
//
@@ -2811,9 +2820,10 @@ Slice::Gen::TypesVisitor::writeMemberEquals(const DataMemberList& dataMembers, i
SequencePtr seq = SequencePtr::dynamicCast(memberType);
if(seq)
{
- string genericType;
- bool isGeneric = seq->findMetaData("clr:generic:", genericType);
- bool isArray = !isGeneric && !seq->hasMetaData("clr:collection");
+ string meta;
+ bool isSerializable = seq->findMetaData("clr:serializable:", meta);
+ bool isGeneric = seq->findMetaData("clr:generic:", meta);
+ bool isArray = !isSerializable && !isGeneric && !seq->hasMetaData("clr:collection");
if(isArray)
{
//
@@ -4000,9 +4010,9 @@ Slice::Gen::DelegateMVisitor::visitClassDefStart(const ClassDefPtr& p)
_out << nl << "throw;";
_out << eb;
}
- _out << nl << "catch(Ice.UserException ex)";
+ _out << nl << "catch(Ice.UserException ex__)";
_out << sb;
- _out << nl << "throw new Ice.UnknownUserException(ex.ice_name(), ex);";
+ _out << nl << "throw new Ice.UnknownUserException(ex__.ice_name(), ex__);";
_out << eb;
_out << eb;
if(ret || !outParams.empty())
diff --git a/cpp/src/slice2cs/Gen.h b/cpp/src/slice2cs/Gen.h
index dc9d655570e..3bb6c266a92 100644
--- a/cpp/src/slice2cs/Gen.h
+++ b/cpp/src/slice2cs/Gen.h
@@ -76,14 +76,9 @@ private:
{
public:
- UnitVisitor(::IceUtilInternal::Output&, bool);
+ UnitVisitor(::IceUtilInternal::Output&);
- virtual bool visitModuleStart(const ModulePtr&);
-
- private:
-
- bool _stream;
- bool _globalMetaDataDone;
+ virtual bool visitUnitStart(const UnitPtr&);
};
class TypesVisitor : public CsVisitor
diff --git a/cpp/src/slice2cs/Main.cpp b/cpp/src/slice2cs/Main.cpp
index 595dfe75dc9..6b9e1a87d15 100644
--- a/cpp/src/slice2cs/Main.cpp
+++ b/cpp/src/slice2cs/Main.cpp
@@ -12,6 +12,7 @@
#include <IceUtil/StaticMutex.h>
#include <Slice/Preprocessor.h>
#include <Slice/FileTracker.h>
+#include <Slice/Util.h>
#include <Gen.h>
using namespace std;
@@ -78,11 +79,14 @@ main(int argc, char* argv[])
vector<string> args;
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
args = opts.parse(argc, (const char**)argv);
}
catch(const IceUtilInternal::BadOptException& e)
{
- cerr << argv[0] << ": " << e.reason << endl;
+ cerr << argv[0] << ": error: " << e.reason << endl;
usage(argv[0]);
return EXIT_FAILURE;
}
@@ -143,14 +147,14 @@ main(int argc, char* argv[])
if(args.empty())
{
- cerr << argv[0] << ": no input file" << endl;
+ getErrorStream() << argv[0] << ": error: no input file" << endl;
usage(argv[0]);
return EXIT_FAILURE;
}
if(impl && implTie)
{
- cerr << argv[0] << ": cannot specify both --impl and --impl-tie" << endl;
+ getErrorStream() << argv[0] << ": error: cannot specify both --impl and --impl-tie" << endl;
usage(argv[0]);
return EXIT_FAILURE;
}
@@ -238,7 +242,7 @@ main(int argc, char* argv[])
// cleanup any created files.
FileTracker::instance()->cleanup();
p->destroy();
- cerr << argv[0] << ": " << ex.reason() << endl;
+ getErrorStream() << argv[0] << ": error: " << ex.reason() << endl;
return EXIT_FAILURE;
}
}
diff --git a/cpp/src/slice2cs/Makefile.mak b/cpp/src/slice2cs/Makefile.mak
index 263fc9a09d4..3b86acc9f9b 100644
--- a/cpp/src/slice2cs/Makefile.mak
+++ b/cpp/src/slice2cs/Makefile.mak
@@ -26,7 +26,7 @@ CPPFLAGS = -I. $(CPPFLAGS) -DWIN32_LEAN_AND_MEAN
PDBFLAGS = /pdb:$(NAME:.exe=.pdb)
!endif
-!if "$(CPP_COMPILER)" == "BCC2007"
+!if "$(BCPLUSPLUS)" == "yes"
RES_FILE = ,, Slice2Cs.res
!else
RES_FILE = Slice2Cs.res
@@ -46,7 +46,7 @@ install:: all
copy $(NAME) $(install_bindir)
-!if "$(CPP_COMPILER)" == "BCC2007" && "$(OPTIMIZE)" != "yes"
+!if "$(BCPLUSPLUS)" == "yes" && "$(OPTIMIZE)" != "yes"
install:: all
copy $(NAME:.exe=.tds) $(install_bindir)
diff --git a/cpp/src/slice2docbook/.depend b/cpp/src/slice2docbook/.depend
index e69de29bb2d..e71be6d4ee6 100644
--- a/cpp/src/slice2docbook/.depend
+++ b/cpp/src/slice2docbook/.depend
@@ -0,0 +1,2 @@
+Gen$(OBJEXT): Gen.cpp $(includedir)/IceUtil/DisableWarnings.h $(includedir)/IceUtil/Functional.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Config.h $(includedir)/Slice/FileTracker.h $(includedir)/IceUtil/Shared.h $(includedir)/Slice/Parser.h ./Gen.h $(includedir)/IceUtil/OutputUtil.h
+Main$(OBJEXT): Main.cpp $(includedir)/IceUtil/Options.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/StringUtil.h $(includedir)/IceUtil/CtrlCHandler.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Slice/Preprocessor.h $(includedir)/Slice/FileTracker.h $(includedir)/Slice/Parser.h $(includedir)/Slice/Util.h ./Gen.h $(includedir)/IceUtil/OutputUtil.h
diff --git a/cpp/src/slice2docbook/Main.cpp b/cpp/src/slice2docbook/Main.cpp
index b5616743174..e7cca665ef7 100644
--- a/cpp/src/slice2docbook/Main.cpp
+++ b/cpp/src/slice2docbook/Main.cpp
@@ -13,6 +13,7 @@
#include <IceUtil/StaticMutex.h>
#include <Slice/Preprocessor.h>
#include <Slice/FileTracker.h>
+#include <Slice/Util.h>
#include <Gen.h>
using namespace std;
@@ -75,11 +76,14 @@ main(int argc, char* argv[])
vector<string> args;
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
args = opts.parse(argc, (const char**)argv);
}
catch(const IceUtilInternal::BadOptException& e)
{
- cerr << argv[0] << ": " << e.reason << endl;
+ cerr << argv[0] << ": error: " << e.reason << endl;
usage(argv[0]);
return EXIT_FAILURE;
}
@@ -134,7 +138,7 @@ main(int argc, char* argv[])
if(args.empty())
{
- cerr << argv[0] << ": no docbook file specified" << endl;
+ getErrorStream() << argv[0] << ": error: no docbook file specified" << endl;
usage(argv[0]);
return EXIT_FAILURE;
}
@@ -148,13 +152,13 @@ main(int argc, char* argv[])
}
if(suffix != ".sgml")
{
- cerr << argv[0] << ": docbook file must end with `.sgml'" << endl;
+ getErrorStream() << argv[0] << ": error: docbook file must end with `.sgml'" << endl;
return EXIT_FAILURE;
}
if(args.size() < 2)
{
- cerr << argv[0] << ": no input file" << endl;
+ getErrorStream() << argv[0] << ": error: no input file" << endl;
usage(argv[0]);
return EXIT_FAILURE;
}
@@ -222,7 +226,7 @@ main(int argc, char* argv[])
// cleanup any created files.
FileTracker::instance()->cleanup();
p->destroy();
- cerr << argv[0] << ": " << ex.reason() << endl;
+ getErrorStream() << argv[0] << ": error: " << ex.reason() << endl;
return EXIT_FAILURE;
}
}
diff --git a/cpp/src/slice2docbook/Makefile.mak b/cpp/src/slice2docbook/Makefile.mak
index 57fe865a385..6868dcdd40e 100644
--- a/cpp/src/slice2docbook/Makefile.mak
+++ b/cpp/src/slice2docbook/Makefile.mak
@@ -26,7 +26,7 @@ CPPFLAGS = -I. $(CPPFLAGS) -DWIN32_LEAN_AND_MEAN
PDBFLAGS = /pdb:$(NAME:.exe=.pdb)
!endif
-!if "$(CPP_COMPILER)" == "BCC2007"
+!if "$(BCPLUSPLUS)" == "yes"
RES_FILE = ,, Slice2Docbook.res
!else
RES_FILE = Slice2Docbook.res
@@ -46,7 +46,7 @@ install:: all
copy $(NAME) $(install_bindir)
-!if "$(CPP_COMPILER)" == "BCC2007" && "$(OPTIMIZE)" != "yes"
+!if "$(BCPLUSPLUS)" == "yes" && "$(OPTIMIZE)" != "yes"
install:: all
copy $(NAME:.exe=.tds) $(install_bindir)
diff --git a/cpp/src/slice2freeze/.depend b/cpp/src/slice2freeze/.depend
index 5acacc03a27..843ff290933 100644
--- a/cpp/src/slice2freeze/.depend
+++ b/cpp/src/slice2freeze/.depend
@@ -1 +1 @@
-Main$(OBJEXT): Main.cpp $(includedir)/IceUtil/DisableWarnings.h $(includedir)/IceUtil/Options.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/CtrlCHandler.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Slice/Preprocessor.h $(includedir)/Slice/Util.h $(includedir)/Slice/Parser.h $(includedir)/Slice/CPlusPlusUtil.h $(includedir)/IceUtil/OutputUtil.h $(includedir)/IceUtil/StringUtil.h
+Main$(OBJEXT): Main.cpp $(includedir)/IceUtil/DisableWarnings.h $(includedir)/IceUtil/Options.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/CtrlCHandler.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Slice/Preprocessor.h $(includedir)/Slice/CPlusPlusUtil.h $(includedir)/Slice/Parser.h $(includedir)/IceUtil/OutputUtil.h $(includedir)/Slice/FileTracker.h $(includedir)/Slice/Util.h $(includedir)/IceUtil/StringUtil.h
diff --git a/cpp/src/slice2freeze/Main.cpp b/cpp/src/slice2freeze/Main.cpp
index cbffb460a3f..4978f0a699a 100644
--- a/cpp/src/slice2freeze/Main.cpp
+++ b/cpp/src/slice2freeze/Main.cpp
@@ -12,9 +12,9 @@
#include <IceUtil/CtrlCHandler.h>
#include <IceUtil/StaticMutex.h>
#include <Slice/Preprocessor.h>
-#include <Slice/Util.h>
#include <Slice/CPlusPlusUtil.h>
#include <Slice/FileTracker.h>
+#include <Slice/Util.h>
#include <IceUtil/OutputUtil.h>
#include <IceUtil/StringUtil.h>
#include <cstring>
@@ -702,8 +702,7 @@ writeDictWithIndicesC(const string& name, const string& absolute, const Dict& di
else
{
C << nl << typeToString(indexTypes[i].type, false, indexTypes[i].metaData)
- << " __lowerCaseIndex = __index;";
- C << nl << "std::transform(__lowerCaseIndex.begin(), __lowerCaseIndex.end(), __lowerCaseIndex.begin(), tolower);";
+ << " __lowerCaseIndex = IceUtilInternal::toLower(__index);";
valueS = "__lowerCaseIndex";
}
@@ -1012,10 +1011,9 @@ writeDict(const string& n, const UnitPtr& u, const Dict& dict, Output& H, Output
}
if(containsSequence)
{
- cerr << n << ": warning: use of sequences in dictionary keys has been deprecated";
+ getErrorStream() << n << ": warning: use of sequences in dictionary keys has been deprecated";
}
-
if(index.caseSensitive == false)
{
//
@@ -1089,10 +1087,9 @@ writeDict(const string& n, const UnitPtr& u, const Dict& dict, Output& H, Output
}
if(containsSequence)
{
- cerr << n << ": warning: use of sequences in dictionary keys has been deprecated";
+ getErrorStream() << n << ": warning: use of sequences in dictionary keys has been deprecated";
}
-
if(index.caseSensitive == false)
{
//
@@ -1237,8 +1234,7 @@ writeIndexC(const TypePtr& type, const TypePtr& memberType, const string& member
}
else
{
- C << nl << typeToString(memberType, false) << " __lowerCaseIndex = __index;";
- C << nl << "std::transform(__lowerCaseIndex.begin(), __lowerCaseIndex.end(), __lowerCaseIndex.begin(), tolower);";
+ C << nl << typeToString(memberType, false) << " __lowerCaseIndex = IceUtilInternal::toLower(__index);";
valueS = "__lowerCaseIndex";
}
@@ -1445,6 +1441,7 @@ gen(const string& name, const UnitPtr& u, const vector<string>& includePaths, co
}
CPP << "\n#include <Ice/BasicStream.h>";
+ CPP << "\n#include <IceUtil/StringUtil.h>";
CPP << "\n#include <";
if(include.size())
{
@@ -1506,11 +1503,14 @@ main(int argc, char* argv[])
vector<string> args;
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
args = opts.parse(argc, (const char**)argv);
}
catch(const IceUtilInternal::BadOptException& e)
{
- cerr << argv[0] << ": " << e.reason << endl;
+ cerr << argv[0] << ": error: " << e.reason << endl;
usage(argv[0]);
return EXIT_FAILURE;
}
@@ -1650,8 +1650,8 @@ main(int argc, char* argv[])
{
if(s != "sort")
{
- cerr << argv[0] << ": " << *i
- << ": nothing or ',sort' expected after value-type" << endl;
+ getErrorStream() << argv[0] << ": error: " << *i << ": nothing or ',sort' expected after value-type"
+ << endl;
usage(argv[0]);
return EXIT_FAILURE;
}
@@ -1663,8 +1663,8 @@ main(int argc, char* argv[])
s.erase(0, pos + 1);
if(sort != "sort")
{
- cerr << argv[0] << ": " << *i
- << ": nothing or ',sort' expected after value-type" << endl;
+ getErrorStream() << argv[0] << ": error: " << *i << ": nothing or ',sort' expected after value-type"
+ << endl;
usage(argv[0]);
return EXIT_FAILURE;
}
@@ -1675,21 +1675,21 @@ main(int argc, char* argv[])
if(dict.name.empty())
{
- cerr << argv[0] << ": " << *i << ": no name specified" << endl;
+ getErrorStream() << argv[0] << ": error: " << *i << ": no name specified" << endl;
usage(argv[0]);
return EXIT_FAILURE;
}
if(dict.key.empty())
{
- cerr << argv[0] << ": " << *i << ": no key specified" << endl;
+ getErrorStream() << argv[0] << ": error: " << *i << ": no key specified" << endl;
usage(argv[0]);
return EXIT_FAILURE;
}
if(dict.value.empty())
{
- cerr << argv[0] << ": " << *i << ": no value specified" << endl;
+ getErrorStream() << argv[0] << ": error: " << *i << ": no value specified" << endl;
usage(argv[0]);
return EXIT_FAILURE;
}
@@ -1734,28 +1734,29 @@ main(int argc, char* argv[])
if(index.name.empty())
{
- cerr << argv[0] << ": " << *i << ": no name specified" << endl;
+ getErrorStream() << argv[0] << ": error: " << *i << ": no name specified" << endl;
usage(argv[0]);
return EXIT_FAILURE;
}
if(index.type.empty())
{
- cerr << argv[0] << ": " << *i << ": no type specified" << endl;
+ getErrorStream() << argv[0] << ": error: " << *i << ": no type specified" << endl;
usage(argv[0]);
return EXIT_FAILURE;
}
if(index.member.empty())
{
- cerr << argv[0] << ": " << *i << ": no member specified" << endl;
+ getErrorStream() << argv[0] << ": error: " << *i << ": no member specified" << endl;
usage(argv[0]);
return EXIT_FAILURE;
}
if(caseString != "case-sensitive" && caseString != "case-insensitive")
{
- cerr << argv[0] << ": " << *i << ": the case can be `case-sensitive' or `case-insensitive'" << endl;
+ getErrorStream() << argv[0] << ": error: " << *i << ": the case can be `case-sensitive' or "
+ << "`case-insensitive'" << endl;
usage(argv[0]);
return EXIT_FAILURE;
}
@@ -1815,7 +1816,7 @@ main(int argc, char* argv[])
}
else
{
- cerr << argv[0] << ": " << *i << ": syntax error" << endl;
+ getErrorStream() << argv[0] << ": error: " << *i << ": syntax error" << endl;
usage(argv[0]);
return EXIT_FAILURE;
}
@@ -1853,7 +1854,7 @@ main(int argc, char* argv[])
}
else
{
- cerr << argv[0] << ": " << *i << ": syntax error" << endl;
+ getErrorStream() << argv[0] << ": error: " << *i << ": syntax error" << endl;
usage(argv[0]);
return EXIT_FAILURE;
}
@@ -1863,7 +1864,7 @@ main(int argc, char* argv[])
if(dictName.empty())
{
- cerr << argv[0] << ": " << *i << ": no dictionary specified" << endl;
+ getErrorStream() << argv[0] << ": error: " << *i << ": no dictionary specified" << endl;
usage(argv[0]);
return EXIT_FAILURE;
}
@@ -1875,7 +1876,7 @@ main(int argc, char* argv[])
{
if(find(p->indices.begin(), p->indices.end(), index) != p->indices.end())
{
- cerr << argv[0] << ": --dict-index " << *i
+ getErrorStream() << argv[0] << ": error: --dict-index " << *i
<< ": this dict-index is defined twice" << endl;
return EXIT_FAILURE;
}
@@ -1886,7 +1887,7 @@ main(int argc, char* argv[])
}
if(!found)
{
- cerr << argv[0] << ": " << *i << ": unknown dictionary" << endl;
+ getErrorStream() << argv[0] << ": error: " << *i << ": unknown dictionary" << endl;
usage(argv[0]);
return EXIT_FAILURE;
}
@@ -1902,14 +1903,14 @@ main(int argc, char* argv[])
if(dicts.empty() && indices.empty())
{
- cerr << argv[0] << ": no Freeze types specified" << endl;
+ getErrorStream() << argv[0] << ": error: no Freeze types specified" << endl;
usage(argv[0]);
return EXIT_FAILURE;
}
if(args.empty())
{
- cerr << argv[0] << ": no file name base specified" << endl;
+ getErrorStream() << argv[0] << ": error: no file name base specified" << endl;
usage(argv[0]);
return EXIT_FAILURE;
}
@@ -1991,7 +1992,7 @@ main(int argc, char* argv[])
// created files.
FileTracker::instance()->cleanup();
u->destroy();
- cerr << argv[0] << ": " << ex << endl;
+ getErrorStream() << argv[0] << ": error: " << ex << endl;
return EXIT_FAILURE;
}
catch(const Slice::FileException& ex)
@@ -2000,12 +2001,12 @@ main(int argc, char* argv[])
// created files.
FileTracker::instance()->cleanup();
u->destroy();
- cerr << argv[0] << ": " << ex.reason() << endl;
+ getErrorStream() << argv[0] << ": error: " << ex.reason() << endl;
return EXIT_FAILURE;
}
catch(...)
{
- cerr << argv[0] << ": unknown exception" << endl;
+ getErrorStream() << argv[0] << ": error: unknown exception" << endl;
FileTracker::instance()->cleanup();
u->destroy();
return EXIT_FAILURE;
diff --git a/cpp/src/slice2freeze/Makefile.mak b/cpp/src/slice2freeze/Makefile.mak
index b810adcc1a9..cc68446c825 100644
--- a/cpp/src/slice2freeze/Makefile.mak
+++ b/cpp/src/slice2freeze/Makefile.mak
@@ -25,7 +25,7 @@ CPPFLAGS = -I. $(CPPFLAGS) -DWIN32_LEAN_AND_MEAN
PDBFLAGS = /pdb:$(NAME:.exe=.pdb)
!endif
-!if "$(CPP_COMPILER)" == "BCC2007"
+!if "$(BCPLUSPLUS)" == "yes"
RES_FILE = ,, Slice2Freeze.res
!else
RES_FILE = Slice2Freeze.res
@@ -45,7 +45,7 @@ install:: all
copy $(NAME) $(install_bindir)
-!if "$(CPP_COMPILER)" == "BCC2007" && "$(OPTIMIZE)" != "yes"
+!if "$(BCPLUSPLUS)" == "yes" && "$(OPTIMIZE)" != "yes"
install:: all
copy $(NAME:.exe=.tds) $(install_bindir)
diff --git a/cpp/src/slice2freezej/.depend b/cpp/src/slice2freezej/.depend
index e69de29bb2d..924d964b08d 100644
--- a/cpp/src/slice2freezej/.depend
+++ b/cpp/src/slice2freezej/.depend
@@ -0,0 +1 @@
+Main$(OBJEXT): Main.cpp $(includedir)/IceUtil/Options.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/StringUtil.h $(includedir)/IceUtil/CtrlCHandler.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Slice/Preprocessor.h $(includedir)/Slice/FileTracker.h $(includedir)/Slice/Parser.h $(includedir)/Slice/JavaUtil.h $(includedir)/IceUtil/OutputUtil.h $(includedir)/Slice/Util.h
diff --git a/cpp/src/slice2freezej/Main.cpp b/cpp/src/slice2freezej/Main.cpp
index 2ab8c36f86f..336722f5f0f 100644
--- a/cpp/src/slice2freezej/Main.cpp
+++ b/cpp/src/slice2freezej/Main.cpp
@@ -14,6 +14,7 @@
#include <Slice/Preprocessor.h>
#include <Slice/FileTracker.h>
#include <Slice/JavaUtil.h>
+#include <Slice/Util.h>
#ifdef __BCPLUSPLUS__
# include <iterator>
@@ -280,7 +281,8 @@ FreezeGenerator::generate(UnitPtr& u, const Dict& dict)
}
if(containsSequence)
{
- cerr << _prog << ": warning: use of sequences in dictionary keys has been deprecated" << endl;
+ getErrorStream() << _prog << ": warning: use of sequences in dictionary keys has been deprecated"
+ << endl;
}
if(index.caseSensitive == false)
@@ -355,7 +357,8 @@ FreezeGenerator::generate(UnitPtr& u, const Dict& dict)
}
if(containsSequence)
{
- cerr << _prog << ": warning: use of sequences in dictionary keys has been deprecated" << endl;
+ getErrorStream() << _prog << ": warning: use of sequences in dictionary keys has been deprecated"
+ << endl;
}
if(index.caseSensitive == false)
@@ -1166,11 +1169,14 @@ main(int argc, char* argv[])
vector<string> args;
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
args = opts.parse(argc, (const char**)argv);
}
catch(const IceUtilInternal::BadOptException& e)
{
- cerr << argv[0] << ": " << e.reason << endl;
+ cerr << argv[0] << ": error: " << e.reason << endl;
usage(argv[0]);
return EXIT_FAILURE;
}
@@ -1236,21 +1242,21 @@ main(int argc, char* argv[])
if(dict.name.empty())
{
- cerr << argv[0] << ": " << *i << ": no name specified" << endl;
+ getErrorStream() << argv[0] << ": error: " << *i << ": no name specified" << endl;
usage(argv[0]);
return EXIT_FAILURE;
}
if(dict.key.empty())
{
- cerr << argv[0] << ": " << *i << ": no key specified" << endl;
+ getErrorStream() << argv[0] << ": error: " << *i << ": no key specified" << endl;
usage(argv[0]);
return EXIT_FAILURE;
}
if(dict.value.empty())
{
- cerr << argv[0] << ": " << *i << ": no value specified" << endl;
+ getErrorStream() << argv[0] << ": error: " << *i << ": no value specified" << endl;
usage(argv[0]);
return EXIT_FAILURE;
}
@@ -1295,28 +1301,29 @@ main(int argc, char* argv[])
if(index.name.empty())
{
- cerr << argv[0] << ": " << *i << ": no name specified" << endl;
+ getErrorStream() << argv[0] << ": error: " << *i << ": no name specified" << endl;
usage(argv[0]);
return EXIT_FAILURE;
}
if(index.type.empty())
{
- cerr << argv[0] << ": " << *i << ": no type specified" << endl;
+ getErrorStream() << argv[0] << ": error: " << *i << ": no type specified" << endl;
usage(argv[0]);
return EXIT_FAILURE;
}
if(index.member.empty())
{
- cerr << argv[0] << ": " << *i << ": no member specified" << endl;
+ getErrorStream() << argv[0] << ": error: " << *i << ": no member specified" << endl;
usage(argv[0]);
return EXIT_FAILURE;
}
if(caseString != "case-sensitive" && caseString != "case-insensitive")
{
- cerr << argv[0] << ": " << *i << ": the case can be `case-sensitive' or `case-insensitive'" << endl;
+ getErrorStream() << argv[0] << ": error: " << *i << ": the case can be `case-sensitive' or "
+ << "`case-insensitive'" << endl;
usage(argv[0]);
return EXIT_FAILURE;
}
@@ -1369,14 +1376,15 @@ main(int argc, char* argv[])
if(dictName.empty())
{
- cerr << argv[0] << ": " << *i << ": no dictionary specified" << endl;
+ getErrorStream() << argv[0] << ": error: " << *i << ": no dictionary specified" << endl;
usage(argv[0]);
return EXIT_FAILURE;
}
if(caseString != "case-sensitive" && caseString != "case-insensitive")
{
- cerr << argv[0] << ": " << *i << ": the case can be `case-sensitive' or `case-insensitive'" << endl;
+ getErrorStream() << argv[0] << ": error: " << *i << ": the case can be `case-sensitive' or "
+ << "`case-insensitive'" << endl;
usage(argv[0]);
return EXIT_FAILURE;
}
@@ -1389,7 +1397,8 @@ main(int argc, char* argv[])
{
if(find(p->indices.begin(), p->indices.end(), index) != p->indices.end())
{
- cerr << argv[0] << ": --dict-index " << *i << ": this dict-index is defined twice" << endl;
+ getErrorStream() << argv[0] << ": error: --dict-index " << *i
+ << ": this dict-index is defined twice" << endl;
return EXIT_FAILURE;
}
@@ -1400,7 +1409,7 @@ main(int argc, char* argv[])
}
if(!found)
{
- cerr << argv[0] << ": " << *i << ": unknown dictionary" << endl;
+ getErrorStream() << argv[0] << ": error: " << *i << ": unknown dictionary" << endl;
usage(argv[0]);
return EXIT_FAILURE;
}
@@ -1423,7 +1432,7 @@ main(int argc, char* argv[])
if(dicts.empty() && indices.empty())
{
- cerr << argv[0] << ": no Freeze types specified" << endl;
+ getErrorStream() << argv[0] << ": error: no Freeze types specified" << endl;
usage(argv[0]);
return EXIT_FAILURE;
}
@@ -1517,7 +1526,7 @@ main(int argc, char* argv[])
// created files.
FileTracker::instance()->cleanup();
u->destroy();
- cerr << argv[0] << ": " << ex << endl;
+ getErrorStream() << argv[0] << ": error: " << ex << endl;
return EXIT_FAILURE;
}
catch(const Slice::FileException& ex)
@@ -1526,13 +1535,13 @@ main(int argc, char* argv[])
// created files.
FileTracker::instance()->cleanup();
u->destroy();
- cerr << ex.reason() << endl;
+ getErrorStream() << argv[0] << ": error: " << ex.reason() << endl;
return EXIT_FAILURE;
}
catch(...)
{
FileTracker::instance()->cleanup();
- cerr << argv[0] << ": unknown exception" << endl;
+ getErrorStream() << argv[0] << ": error: unknown exception" << endl;
u->destroy();
return EXIT_FAILURE;
}
@@ -1550,7 +1559,7 @@ main(int argc, char* argv[])
// created files.
FileTracker::instance()->cleanup();
u->destroy();
- cerr << argv[0] << ": " << ex << endl;
+ getErrorStream() << argv[0] << ": error: " << ex << endl;
return EXIT_FAILURE;
}
catch(const Slice::FileException& ex)
@@ -1559,12 +1568,12 @@ main(int argc, char* argv[])
// created files.
FileTracker::instance()->cleanup();
u->destroy();
- cerr << argv[0] << ": " << ex.reason() << endl;
+ getErrorStream() << argv[0] << ": error: " << ex.reason() << endl;
return EXIT_FAILURE;
}
catch(...)
{
- cerr << argv[0] << ": unknown exception" << endl;
+ getErrorStream() << argv[0] << ": error: unknown exception" << endl;
FileTracker::instance()->cleanup();
u->destroy();
return EXIT_FAILURE;
diff --git a/cpp/src/slice2freezej/Makefile.mak b/cpp/src/slice2freezej/Makefile.mak
index d908bfacaa8..36738705a21 100644
--- a/cpp/src/slice2freezej/Makefile.mak
+++ b/cpp/src/slice2freezej/Makefile.mak
@@ -25,7 +25,7 @@ CPPFLAGS = -I. $(CPPFLAGS) -DWIN32_LEAN_AND_MEAN
PDBFLAGS = /pdb:$(NAME:.exe=.pdb)
!endif
-!if "$(CPP_COMPILER)" == "BCC2007"
+!if "$(BCPLUSPLUS)" == "yes"
RES_FILE = ,, Slice2FreezeJ.res
!else
RES_FILE = Slice2FreezeJ.res
@@ -45,7 +45,7 @@ install:: all
copy $(NAME) $(install_bindir)
-!if "$(CPP_COMPILER)" == "BCC2007" && "$(OPTIMIZE)" != "yes"
+!if "$(BCPLUSPLUS)" == "yes" && "$(OPTIMIZE)" != "yes"
install:: all
copy $(NAME:.exe=.tds) $(install_bindir)
diff --git a/cpp/src/slice2html/.depend b/cpp/src/slice2html/.depend
index 19c08cbf59a..316c84669a8 100644
--- a/cpp/src/slice2html/.depend
+++ b/cpp/src/slice2html/.depend
@@ -1,2 +1,2 @@
-Gen$(OBJEXT): Gen.cpp $(includedir)/IceUtil/DisableWarnings.h $(includedir)/IceUtil/Functional.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Config.h ./Gen.h $(includedir)/Slice/Parser.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/OutputUtil.h
-Main$(OBJEXT): Main.cpp $(includedir)/IceUtil/Options.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/CtrlCHandler.h $(includedir)/Slice/Preprocessor.h ./Gen.h $(includedir)/Slice/Parser.h $(includedir)/IceUtil/OutputUtil.h
+Gen$(OBJEXT): Gen.cpp $(includedir)/IceUtil/DisableWarnings.h $(includedir)/IceUtil/Functional.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Config.h $(includedir)/Slice/FileTracker.h $(includedir)/IceUtil/Shared.h $(includedir)/Slice/Parser.h ./Gen.h $(includedir)/IceUtil/OutputUtil.h
+Main$(OBJEXT): Main.cpp $(includedir)/IceUtil/Options.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/CtrlCHandler.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Slice/Preprocessor.h $(includedir)/Slice/FileTracker.h $(includedir)/Slice/Parser.h $(includedir)/Slice/Util.h ./Gen.h $(includedir)/IceUtil/OutputUtil.h
diff --git a/cpp/src/slice2html/Gen.cpp b/cpp/src/slice2html/Gen.cpp
index 65149c2581c..4680c57a2ae 100644
--- a/cpp/src/slice2html/Gen.cpp
+++ b/cpp/src/slice2html/Gen.cpp
@@ -1119,8 +1119,8 @@ Slice::GeneratorBase::getComment(const ContainedPtr& contained, const ContainerP
if(summary && _warnSummary && summarySize > _warnSummary)
{
- cerr << contained->definitionContext()->filename() << ": summary size (" << summarySize << ") exceeds "
- << _warnSummary << " characters: `" << comment << "'" << endl;
+ cerr << contained->file() << ": summary size (" << summarySize << ") exceeds " << _warnSummary
+ << " characters: `" << comment << "'" << endl;
}
return comment;
@@ -1713,53 +1713,53 @@ Slice::FileVisitor::visitUnitStart(const UnitPtr& u)
bool
Slice::FileVisitor::visitModuleStart(const ModulePtr& m)
{
- _files.insert(m->definitionContext()->filename());
+ _files.insert(m->file());
return true;
}
bool
Slice::FileVisitor::visitExceptionStart(const ExceptionPtr& e)
{
- _files.insert(e->definitionContext()->filename());
+ _files.insert(e->file());
return false;
}
bool
Slice::FileVisitor::visitClassDefStart(const ClassDefPtr& c)
{
- _files.insert(c->definitionContext()->filename());
+ _files.insert(c->file());
return false;
}
void
Slice::FileVisitor::visitClassDecl(const ClassDeclPtr& c)
{
- _files.insert(c->definitionContext()->filename());
+ _files.insert(c->file());
}
bool
Slice::FileVisitor::visitStructStart(const StructPtr& s)
{
- _files.insert(s->definitionContext()->filename());
+ _files.insert(s->file());
return false;
}
void
Slice::FileVisitor::visitSequence(const SequencePtr& s)
{
- _files.insert(s->definitionContext()->filename());
+ _files.insert(s->file());
}
void
Slice::FileVisitor::visitDictionary(const DictionaryPtr& d)
{
- _files.insert(d->definitionContext()->filename());
+ _files.insert(d->file());
}
void
Slice::FileVisitor::visitEnum(const EnumPtr& e)
{
- _files.insert(e->definitionContext()->filename());
+ _files.insert(e->file());
}
Slice::StartPageVisitor::StartPageVisitor(const Files& files)
diff --git a/cpp/src/slice2html/Main.cpp b/cpp/src/slice2html/Main.cpp
index dad5663fdba..a939d6c8b67 100644
--- a/cpp/src/slice2html/Main.cpp
+++ b/cpp/src/slice2html/Main.cpp
@@ -12,6 +12,7 @@
#include <IceUtil/StaticMutex.h>
#include <Slice/Preprocessor.h>
#include <Slice/FileTracker.h>
+#include <Slice/Util.h>
#include <Gen.h>
#include <stdlib.h>
@@ -84,11 +85,14 @@ main(int argc, char* argv[])
vector<string> args;
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
args = opts.parse(argc, (const char**)argv);
}
catch(const IceUtilInternal::BadOptException& e)
{
- cerr << argv[0] << ": " << e.reason << endl;
+ cerr << argv[0] << ": error: " << e.reason << endl;
usage(argv[0]);
return EXIT_FAILURE;
}
@@ -145,7 +149,8 @@ main(int argc, char* argv[])
s >> indexCount;
if(!s)
{
- cerr << argv[0] << ": the --index operation requires a positive integer argument" << endl;
+ getErrorStream() << argv[0] << ": error: the --index operation requires a positive integer argument"
+ << endl;
usage(argv[0]);
return EXIT_FAILURE;
}
@@ -165,7 +170,8 @@ main(int argc, char* argv[])
s >> summaryCount;
if(!s)
{
- cerr << argv[0] << ": the --summary operation requires a positive integer argument" << endl;
+ getErrorStream() << argv[0] << ": error: the --summary operation requires a positive integer argument"
+ << endl;
usage(argv[0]);
return EXIT_FAILURE;
}
@@ -177,7 +183,7 @@ main(int argc, char* argv[])
if(args.empty())
{
- cerr << argv[0] << ": no input file" << endl;
+ getErrorStream() << argv[0] << ": error: no input file" << endl;
usage(argv[0]);
return EXIT_FAILURE;
}
@@ -245,19 +251,19 @@ main(int argc, char* argv[])
// created files.
FileTracker::instance()->cleanup();
p->destroy();
- cerr << argv[0] << ": " << ex.reason() << endl;
+ getErrorStream() << argv[0] << ": error: " << ex.reason() << endl;
return EXIT_FAILURE;
}
catch(const string& err)
{
FileTracker::instance()->cleanup();
- cerr << argv[0] << ": " << err << endl;
+ getErrorStream() << argv[0] << ": error: " << err << endl;
status = EXIT_FAILURE;
}
catch(const char* err)
{
FileTracker::instance()->cleanup();
- cerr << argv[0] << ": " << err << endl;
+ getErrorStream() << argv[0] << ": error: " << err << endl;
status = EXIT_FAILURE;
}
}
diff --git a/cpp/src/slice2html/Makefile.mak b/cpp/src/slice2html/Makefile.mak
index 4b5e9383392..15272b3edd9 100644
--- a/cpp/src/slice2html/Makefile.mak
+++ b/cpp/src/slice2html/Makefile.mak
@@ -26,7 +26,7 @@ CPPFLAGS = -I. $(CPPFLAGS) -DWIN32_LEAN_AND_MEAN
PDBFLAGS = /pdb:$(NAME:.exe=.pdb)
!endif
-!if "$(CPP_COMPILER)" == "BCC2007"
+!if "$(BCPLUSPLUS)" == "yes"
RES_FILE = ,, Slice2Html.res
!else
RES_FILE = Slice2Html.res
@@ -46,7 +46,7 @@ install:: all
copy $(NAME) $(install_bindir)
-!if "$(CPP_COMPILER)" == "BCC2007" && "$(OPTIMIZE)" != "yes"
+!if "$(BCPLUSPLUS)" == "yes" && "$(OPTIMIZE)" != "yes"
install:: all
copy $(NAME:.exe=.tds) $(install_bindir)
diff --git a/cpp/src/slice2java/.depend b/cpp/src/slice2java/.depend
index e140be10882..05d89fd4b1a 100644
--- a/cpp/src/slice2java/.depend
+++ b/cpp/src/slice2java/.depend
@@ -1,2 +1,2 @@
-Gen$(OBJEXT): Gen.cpp $(includedir)/IceUtil/DisableWarnings.h ./Gen.h $(includedir)/Slice/Parser.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Slice/JavaUtil.h $(includedir)/IceUtil/OutputUtil.h $(includedir)/Slice/Checksum.h $(includedir)/IceUtil/Functional.h $(includedir)/IceUtil/Iterator.h
-Main$(OBJEXT): Main.cpp $(includedir)/IceUtil/Options.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/CtrlCHandler.h $(includedir)/Slice/Preprocessor.h ./Gen.h $(includedir)/Slice/Parser.h $(includedir)/Slice/JavaUtil.h $(includedir)/IceUtil/OutputUtil.h $(includedir)/Slice/Checksum.h
+Gen$(OBJEXT): Gen.cpp $(includedir)/IceUtil/DisableWarnings.h ./Gen.h $(includedir)/Slice/Parser.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Exception.h $(includedir)/Slice/JavaUtil.h $(includedir)/IceUtil/OutputUtil.h $(includedir)/Slice/Checksum.h $(includedir)/Slice/Util.h $(includedir)/IceUtil/Functional.h $(includedir)/IceUtil/Iterator.h
+Main$(OBJEXT): Main.cpp $(includedir)/IceUtil/Options.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/CtrlCHandler.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Slice/Preprocessor.h $(includedir)/Slice/FileTracker.h $(includedir)/Slice/Parser.h $(includedir)/Slice/Util.h ./Gen.h $(includedir)/Slice/JavaUtil.h $(includedir)/IceUtil/OutputUtil.h $(includedir)/Slice/Checksum.h
diff --git a/cpp/src/slice2java/Gen.cpp b/cpp/src/slice2java/Gen.cpp
index ab9cc42aed4..6d1d24f2714 100644
--- a/cpp/src/slice2java/Gen.cpp
+++ b/cpp/src/slice2java/Gen.cpp
@@ -10,6 +10,7 @@
#include <IceUtil/DisableWarnings.h>
#include <Gen.h>
#include <Slice/Checksum.h>
+#include <Slice/Util.h>
#include <IceUtil/Functional.h>
#include <IceUtil/Iterator.h>
#include <cstring>
@@ -1206,12 +1207,6 @@ Slice::Gen::~Gen()
{
}
-bool
-Slice::Gen::operator!() const
-{
- return false;
-}
-
void
Slice::Gen::generate(const UnitPtr& p, bool stream)
{
@@ -1670,30 +1665,19 @@ Slice::Gen::PackageVisitor::PackageVisitor(const string& dir) :
bool
Slice::Gen::PackageVisitor::visitModuleStart(const ModulePtr& p)
{
- DefinitionContextPtr dc = p->definitionContext();
- assert(dc);
- StringList globalMetaData = dc->getMetaData();
-
- static const string packagePrefix = "java:package:";
-
- for(StringList::const_iterator q = globalMetaData.begin(); q != globalMetaData.end(); ++q)
+ string prefix = getPackagePrefix(p);
+ if(!prefix.empty())
{
- string s = *q;
- if(s.find(packagePrefix) == 0)
- {
- string markerClass = s.substr(packagePrefix.size()) + "." + fixKwd(p->name()) + "._Marker";
-
- open(markerClass);
-
- Output& out = output();
- out << sp << nl << "interface _Marker";
- out << sb;
- out << eb;
-
- close();
- }
+ string markerClass = prefix + "." + fixKwd(p->name()) + "._Marker";
+ open(markerClass);
+
+ Output& out = output();
+ out << sp << nl << "interface _Marker";
+ out << sb;
+ out << eb;
+
+ close();
}
-
return false;
}
@@ -1837,7 +1821,7 @@ Slice::Gen::TypesVisitor::visitClassDefStart(const ClassDefPtr& p)
// Constructors.
//
out << sp;
- out << nl << "public " << name << "()";
+ out << nl << "public " << fixKwd(name) << "()";
out << sb;
if(baseClass)
{
@@ -1845,7 +1829,7 @@ Slice::Gen::TypesVisitor::visitClassDefStart(const ClassDefPtr& p)
}
out << eb;
- out << sp << nl << "public " << name << spar;
+ out << sp << nl << "public " << fixKwd(name) << spar;
vector<string> paramDecl;
for(d = allDataMembers.begin(); d != allDataMembers.end(); ++d)
{
@@ -2279,7 +2263,7 @@ Slice::Gen::TypesVisitor::visitStructStart(const StructPtr& p)
out << nl << " **/";
}
- out << nl << "public final class " << name << " implements java.lang.Cloneable";
+ out << nl << "public final class " << name << " implements java.lang.Cloneable, java.io.Serializable";
out << sb;
return true;
@@ -2658,8 +2642,7 @@ Slice::Gen::TypesVisitor::visitDataMember(const DataMemberPtr& p)
if(cls)
{
ops = cls->allOperations();
- DefinitionContextPtr dc = p->definitionContext();
- file = dc->filename();
+ file = p->file();
line = p->line();
if(!validateGetterSetter(ops, "get" + capName, 0, file, line) ||
!validateGetterSetter(ops, "set" + capName, 1, file, line))
@@ -2800,11 +2783,11 @@ Slice::Gen::TypesVisitor::visitEnum(const EnumPtr& p)
out << nl << " **/";
}
- bool java2 = p->definitionContext()->findMetaData("java:java2") == "java:java2";
+ bool java2 = p->definitionContext()->findMetaData(_java2MetaData) == _java2MetaData;
if(java2)
{
- out << nl << "public final class " << name;
+ out << nl << "public final class " << name << " implements java.io.Serializable";
out << sb;
out << nl << "private static " << name << "[] __values = new " << name << "[" << sz << "];";
@@ -2857,7 +2840,7 @@ Slice::Gen::TypesVisitor::visitEnum(const EnumPtr& p)
}
else
{
- out << nl << "public enum " << name;
+ out << nl << "public enum " << name << " implements java.io.Serializable";
out << sb;
for(en = enumerators.begin(); en != enumerators.end(); ++en)
@@ -2983,8 +2966,21 @@ Slice::Gen::TypesVisitor::visitEnum(const EnumPtr& p)
if(java2)
{
+ //
+ // Without this method, Java would create a new instance of an enumerator
+ // during deserialization, but we want it to use one of the predefined
+ // enumerators instead.
+ //
+ out << sp << nl << "private java.lang.Object" << nl << "readResolve()";
+ out.inc();
+ out << nl << "throws java.io.ObjectStreamException";
+ out.dec();
+ out << sb;
+ out << nl << "return convert(__value);";
+ out << eb;
out << sp << nl << "final static private String[] __T =";
out << sb;
+
en = enumerators.begin();
while(en != enumerators.end())
{
@@ -3134,8 +3130,9 @@ Slice::Gen::TypesVisitor::validateGetterSetter(const OperationList& ops, const s
int numParams = static_cast<int>((*i)->parameters().size());
if(numArgs >= numParams && numArgs - numParams <= 1)
{
- cerr << file << ":" << line
- << ": error: operation `" << name << "' conflicts with getter/setter method" << endl;
+ ostringstream ostr;
+ ostr << "operation `" << name << "' conflicts with getter/setter method";
+ emitError(file, line, ostr.str());
return false;
}
break;
@@ -3189,6 +3186,23 @@ Slice::Gen::HolderVisitor::visitStructStart(const StructPtr& p)
void
Slice::Gen::HolderVisitor::visitSequence(const SequencePtr& p)
{
+ BuiltinPtr builtin = BuiltinPtr::dynamicCast(p->type());
+ if(builtin && builtin->kind() == Builtin::KindByte)
+ {
+ string prefix = "java:serializable:";
+ string meta;
+ if(p->findMetaData(prefix, meta))
+ {
+ return; // No holders for serializable types.
+ }
+ prefix = "java:protobuf:";
+ if(p->findMetaData(prefix, meta))
+ {
+ return; // No holders for protobuf types.
+
+ }
+ }
+
writeHolder(p);
}
@@ -3310,7 +3324,7 @@ Slice::Gen::HelperVisitor::visitClassDefStart(const ClassDefPtr& p)
out << sb;
- bool java2 = p->definitionContext()->findMetaData("java:java2") == "java:java2";
+ bool java2 = p->definitionContext()->findMetaData(_java2MetaData) == _java2MetaData;
string contextType = java2 ? "java.util.Map" : "java.util.Map<String, String>";
string contextParam = contextType + " __ctx";
string explicitContextParam = "boolean __explicitCtx";
@@ -3974,7 +3988,7 @@ Slice::Gen::ProxyVisitor::visitOperation(const OperationPtr& p)
out << nl << " **/";
}
- bool java2 = p->definitionContext()->findMetaData("java:java2") == "java:java2";
+ bool java2 = p->definitionContext()->findMetaData(_java2MetaData) == _java2MetaData;
string contextParam = java2 ? "java.util.Map __ctx" : "java.util.Map<String, String> __ctx";
out << nl << "public " << retS << ' ' << name << spar << params << contextParam << epar;
@@ -4051,7 +4065,7 @@ Slice::Gen::DelegateVisitor::visitClassDefStart(const ClassDefPtr& p)
out << sb;
- bool java2 = p->definitionContext()->findMetaData("java:java2") == "java:java2";
+ bool java2 = p->definitionContext()->findMetaData(_java2MetaData) == _java2MetaData;
string contextParam = java2 ? "java.util.Map __ctx" : "java.util.Map<String, String> __ctx";
OperationList ops = p->operations();
@@ -4107,7 +4121,7 @@ Slice::Gen::DelegateMVisitor::visitClassDefStart(const ClassDefPtr& p)
out << sp << nl << "public final class _" << name << "DelM extends Ice._ObjectDelM implements _" << name << "Del";
out << sb;
- bool java2 = p->definitionContext()->findMetaData("java:java2") == "java:java2";
+ bool java2 = p->definitionContext()->findMetaData(_java2MetaData) == _java2MetaData;
string contextParam = java2 ? "java.util.Map __ctx" : "java.util.Map<String, String> __ctx";
OperationList ops = p->allOperations();
@@ -4308,7 +4322,7 @@ Slice::Gen::DelegateDVisitor::visitClassDefStart(const ClassDefPtr& p)
out << sp << nl << "public final class _" << name << "DelD extends Ice._ObjectDelD implements _" << name << "Del";
out << sb;
- bool java2 = p->definitionContext()->findMetaData("java:java2") == "java:java2";
+ bool java2 = p->definitionContext()->findMetaData(_java2MetaData) == _java2MetaData;
string contextParam = java2 ? "java.util.Map __ctx" : "java.util.Map<String, String> __ctx";
OperationList ops = p->allOperations();
@@ -4992,7 +5006,7 @@ Slice::Gen::AsyncVisitor::visitOperation(const OperationPtr& p)
out << nl << "public abstract void ice_exception(Ice.UserException ex);";
}
- bool java2 = p->definitionContext()->findMetaData("java:java2") == "java:java2";
+ bool java2 = p->definitionContext()->findMetaData(_java2MetaData) == _java2MetaData;
string contextParam = java2 ? "java.util.Map __ctx" : "java.util.Map<String, String> __ctx";
out << sp << nl << "public final boolean" << nl << "__invoke" << spar << "Ice.ObjectPrx __prx"
diff --git a/cpp/src/slice2java/Gen.h b/cpp/src/slice2java/Gen.h
index 161a837872c..6971c465d6b 100644
--- a/cpp/src/slice2java/Gen.h
+++ b/cpp/src/slice2java/Gen.h
@@ -74,8 +74,6 @@ public:
const std::string&);
~Gen();
- bool operator!() const; // Returns true if there was a constructor error
-
void generate(const UnitPtr&, bool);
void generateTie(const UnitPtr&);
void generateImpl(const UnitPtr&);
diff --git a/cpp/src/slice2java/Main.cpp b/cpp/src/slice2java/Main.cpp
index 7439180b8f2..0ed57b5d415 100644
--- a/cpp/src/slice2java/Main.cpp
+++ b/cpp/src/slice2java/Main.cpp
@@ -12,6 +12,7 @@
#include <IceUtil/StaticMutex.h>
#include <Slice/Preprocessor.h>
#include <Slice/FileTracker.h>
+#include <Slice/Util.h>
#include <Gen.h>
#ifdef __BCPLUSPLUS__
@@ -50,6 +51,8 @@ usage(const char* n)
"--impl Generate sample implementations.\n"
"--impl-tie Generate sample TIE implementations.\n"
"--depend Generate Makefile dependencies.\n"
+ "--depend-xml Generate dependencies in XML format.\n"
+ "--list-generated Emit list of generated files in XML format.\n"
"-d, --debug Print debug messages.\n"
"--ice Permit `Ice' prefix (for building Ice source code only)\n"
"--checksum CLASS Generate checksums for Slice definitions into CLASS.\n"
@@ -74,6 +77,8 @@ main(int argc, char* argv[])
opts.addOpt("", "impl");
opts.addOpt("", "impl-tie");
opts.addOpt("", "depend");
+ opts.addOpt("", "depend-xml");
+ opts.addOpt("", "list-generated");
opts.addOpt("d", "debug");
opts.addOpt("", "ice");
opts.addOpt("", "checksum", IceUtilInternal::Options::NeedArg);
@@ -84,11 +89,14 @@ main(int argc, char* argv[])
vector<string>args;
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
args = opts.parse(argc, (const char**)argv);
}
catch(const IceUtilInternal::BadOptException& e)
{
- cerr << argv[0] << ": " << e.reason << endl;
+ cerr << argv[0] << ": error: " << e.reason << endl;
usage(argv[0]);
return EXIT_FAILURE;
}
@@ -136,6 +144,7 @@ main(int argc, char* argv[])
bool implTie = opts.isSet("impl-tie");
bool depend = opts.isSet("depend");
+ bool dependxml = opts.isSet("depend-xml");
bool debug = opts.isSet("debug");
@@ -145,6 +154,8 @@ main(int argc, char* argv[])
bool stream = opts.isSet("stream");
+ bool listGenerated = opts.isSet("list-generated");
+
StringList globalMetadata;
vector<string> v = opts.argVec("meta");
copy(v.begin(), v.end(), back_inserter(globalMetadata));
@@ -162,23 +173,23 @@ main(int argc, char* argv[])
}
}
- if(java2)
+ if(java2 && !listGenerated && !depend && !dependxml)
{
- cerr << argv[0] << ": warning: The Java2 mapping is deprecated." << endl;
+ getErrorStream() << argv[0] << ": warning: The Java2 mapping is deprecated." << endl;
}
bool caseSensitive = opts.isSet("case-sensitive");
if(args.empty())
{
- cerr << argv[0] << ": no input file" << endl;
+ getErrorStream() << argv[0] << ": error: no input file" << endl;
usage(argv[0]);
return EXIT_FAILURE;
}
if(impl && implTie)
{
- cerr << argv[0] << ": cannot specify both --impl and --impl-tie" << endl;
+ getErrorStream() << argv[0] << ": error: cannot specify both --impl and --impl-tie" << endl;
usage(argv[0]);
return EXIT_FAILURE;
}
@@ -190,24 +201,39 @@ main(int argc, char* argv[])
IceUtil::CtrlCHandler ctrlCHandler;
ctrlCHandler.setCallback(interruptedCallback);
+ if(dependxml)
+ {
+ cout << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<dependencies>" << endl;
+ }
+
for(i = args.begin(); i != args.end(); ++i)
{
- if(depend)
+ if(depend || dependxml)
{
Preprocessor icecpp(argv[0], *i, cppArgs);
- if(!icecpp.printMakefileDependencies(Preprocessor::Java, includePaths))
+ if(!icecpp.printMakefileDependencies(depend ? Preprocessor::Java : Preprocessor::JavaXML, includePaths))
{
return EXIT_FAILURE;
}
}
else
{
+ ostringstream os;
+ if(listGenerated)
+ {
+ Slice::setErrorStream(os);
+ }
+
+ FileTracker::instance()->setSource(*i);
+
Preprocessor icecpp(argv[0], *i, cppArgs);
FILE* cppHandle = icecpp.preprocess(false);
if(cppHandle == 0)
{
- return EXIT_FAILURE;
+ FileTracker::instance()->setOutput(os.str(), true);
+ status = EXIT_FAILURE;
+ break;
}
if(preprocess)
@@ -238,6 +264,8 @@ main(int argc, char* argv[])
if(parseStatus == EXIT_FAILURE)
{
+ p->destroy();
+ FileTracker::instance()->setOutput(os.str(), true);
status = EXIT_FAILURE;
}
else
@@ -245,11 +273,6 @@ main(int argc, char* argv[])
try
{
Gen gen(argv[0], icecpp.getBaseName(), includePaths, output);
- if(!gen)
- {
- p->destroy();
- return EXIT_FAILURE;
- }
gen.generate(p, stream);
if(tie)
{
@@ -271,15 +294,19 @@ main(int argc, char* argv[])
ChecksumMap m = createChecksums(p);
copy(m.begin(), m.end(), inserter(checksums, checksums.begin()));
}
+ FileTracker::instance()->setOutput(os.str(), false);
}
catch(const Slice::FileException& ex)
{
- // If a file could not be created, then
- // cleanup any created files.
+ //
+ // If a file could not be created then cleanup any files we've already created.
+ //
FileTracker::instance()->cleanup();
p->destroy();
- cerr << argv[0] << ": " << ex.reason() << endl;
- return EXIT_FAILURE;
+ os << argv[0] << ": error: " << ex.reason() << endl;
+ FileTracker::instance()->setOutput(os.str(), true);
+ status = EXIT_FAILURE;
+ break;
}
}
p->destroy();
@@ -291,15 +318,21 @@ main(int argc, char* argv[])
if(_interrupted)
{
- // If the translator was interrupted, then cleanup any
- // created files.
+ //
+ // If the translator was interrupted then cleanup any files we've already created.
+ //
FileTracker::instance()->cleanup();
return EXIT_FAILURE;
}
}
}
- if(!checksumClass.empty())
+ if(dependxml)
+ {
+ cout << "</dependencies>\n";
+ }
+
+ if(status == EXIT_SUCCESS && !checksumClass.empty())
{
try
{
@@ -310,10 +343,15 @@ main(int argc, char* argv[])
// If a file could not be created, then
// cleanup any created files.
FileTracker::instance()->cleanup();
- cerr << argv[0] << ": " << ex.reason() << endl;
+ getErrorStream() << argv[0] << ": error: " << ex.reason() << endl;
return EXIT_FAILURE;
}
}
+ if(listGenerated)
+ {
+ FileTracker::instance()->dumpxml();
+ }
+
return status;
}
diff --git a/cpp/src/slice2java/Makefile.mak b/cpp/src/slice2java/Makefile.mak
index 4a16bbb3b56..1382446458e 100644
--- a/cpp/src/slice2java/Makefile.mak
+++ b/cpp/src/slice2java/Makefile.mak
@@ -26,7 +26,7 @@ CPPFLAGS = -I. $(CPPFLAGS) -DWIN32_LEAN_AND_MEAN
PDBFLAGS = /pdb:$(NAME:.exe=.pdb)
!endif
-!if "$(CPP_COMPILER)" == "BCC2007"
+!if "$(BCPLUSPLUS)" == "yes"
RES_FILE = ,, Slice2Java.res
!else
RES_FILE = Slice2Java.res
@@ -46,7 +46,7 @@ install:: all
copy $(NAME) $(install_bindir)
-!if "$(CPP_COMPILER)" == "BCC2007" && "$(OPTIMIZE)" != "yes"
+!if "$(BCPLUSPLUS)" == "yes" && "$(OPTIMIZE)" != "yes"
install:: all
copy $(NAME:.exe=.tds) $(install_bindir)
diff --git a/cpp/src/slice2py/.depend b/cpp/src/slice2py/.depend
index 11436074b75..0b5d94d79c8 100644
--- a/cpp/src/slice2py/.depend
+++ b/cpp/src/slice2py/.depend
@@ -1 +1 @@
-Main$(OBJEXT): Main.cpp $(includedir)/IceUtil/DisableWarnings.h $(includedir)/IceUtil/IceUtil.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/AbstractMutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Cache.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/CountDownLatch.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/CtrlCHandler.h $(includedir)/IceUtil/Functional.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/RWRecMutex.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/UUID.h $(includedir)/IceUtil/Unicode.h $(includedir)/IceUtil/Options.h $(includedir)/IceUtil/StringUtil.h $(includedir)/Slice/Preprocessor.h $(includedir)/Slice/PythonUtil.h $(includedir)/Slice/Parser.h $(includedir)/IceUtil/OutputUtil.h
+Main$(OBJEXT): Main.cpp $(includedir)/IceUtil/DisableWarnings.h $(includedir)/IceUtil/IceUtil.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/AbstractMutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Cache.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/Mutex.h $(includedir)/IceUtil/CountDownLatch.h $(includedir)/IceUtil/Cond.h $(includedir)/IceUtil/CtrlCHandler.h $(includedir)/IceUtil/Functional.h $(includedir)/IceUtil/Monitor.h $(includedir)/IceUtil/RWRecMutex.h $(includedir)/IceUtil/Thread.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/IceUtil/Timer.h $(includedir)/IceUtil/UUID.h $(includedir)/IceUtil/Unicode.h $(includedir)/IceUtil/Options.h $(includedir)/IceUtil/StringUtil.h $(includedir)/Slice/Preprocessor.h $(includedir)/Slice/FileTracker.h $(includedir)/Slice/Parser.h $(includedir)/Slice/PythonUtil.h $(includedir)/IceUtil/OutputUtil.h $(includedir)/Slice/Util.h
diff --git a/cpp/src/slice2py/Main.cpp b/cpp/src/slice2py/Main.cpp
index 7343ea9f812..31eaf5fc784 100644
--- a/cpp/src/slice2py/Main.cpp
+++ b/cpp/src/slice2py/Main.cpp
@@ -16,6 +16,7 @@
#include <Slice/Preprocessor.h>
#include <Slice/FileTracker.h>
#include <Slice/PythonUtil.h>
+#include <Slice/Util.h>
#include <cstring>
#include <fstream>
@@ -403,11 +404,14 @@ main(int argc, char* argv[])
vector<string> args;
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
args = opts.parse(argc, (const char**)argv);
}
catch(const IceUtilInternal::BadOptException& e)
{
- cerr << argv[0] << ": " << e.reason << endl;
+ cerr << argv[0] << ": error: " << e.reason << endl;
usage(argv[0]);
return EXIT_FAILURE;
}
@@ -464,7 +468,7 @@ main(int argc, char* argv[])
if(args.empty())
{
- cerr << argv[0] << ": no input file" << endl;
+ getErrorStream() << argv[0] << ": error: no input file" << endl;
usage(argv[0]);
return EXIT_FAILURE;
}
@@ -573,13 +577,13 @@ main(int argc, char* argv[])
// created files.
FileTracker::instance()->cleanup();
u->destroy();
- cerr << argv[0] << ": " << ex.reason() << endl;
+ getErrorStream() << argv[0] << ": error: " << ex.reason() << endl;
return EXIT_FAILURE;
}
catch(const string& err)
{
FileTracker::instance()->cleanup();
- cerr << argv[0] << ": " << err << endl;
+ getErrorStream() << argv[0] << ": error: " << err << endl;
status = EXIT_FAILURE;
}
}
diff --git a/cpp/src/slice2py/Makefile.mak b/cpp/src/slice2py/Makefile.mak
index 96b024beb14..2511c5316a8 100644
--- a/cpp/src/slice2py/Makefile.mak
+++ b/cpp/src/slice2py/Makefile.mak
@@ -25,7 +25,7 @@ CPPFLAGS = -I. $(CPPFLAGS) -DWIN32_LEAN_AND_MEAN
PDBFLAGS = /pdb:$(NAME:.exe=.pdb)
!endif
-!if "$(CPP_COMPILER)" == "BCC2007"
+!if "$(BCPLUSPLUS)" == "yes"
RES_FILE = ,, Slice2Py.res
!else
RES_FILE = Slice2Py.res
@@ -45,7 +45,7 @@ install:: all
copy $(NAME) $(install_bindir)
-!if "$(CPP_COMPILER)" == "BCC2007" && "$(OPTIMIZE)" != "yes"
+!if "$(BCPLUSPLUS)" == "yes" && "$(OPTIMIZE)" != "yes"
install:: all
copy $(NAME:.exe=.tds) $(install_bindir)
diff --git a/cpp/src/slice2rb/.depend b/cpp/src/slice2rb/.depend
index 09e8a2d1ceb..0aaab0e9ad7 100644
--- a/cpp/src/slice2rb/.depend
+++ b/cpp/src/slice2rb/.depend
@@ -1 +1 @@
-Main$(OBJEXT): Main.cpp $(includedir)/IceUtil/DisableWarnings.h $(includedir)/IceUtil/Options.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/CtrlCHandler.h $(includedir)/Slice/Preprocessor.h $(includedir)/Slice/RubyUtil.h $(includedir)/Slice/Parser.h $(includedir)/IceUtil/OutputUtil.h
+Main$(OBJEXT): Main.cpp $(includedir)/IceUtil/DisableWarnings.h $(includedir)/IceUtil/Options.h $(includedir)/IceUtil/Config.h $(includedir)/IceUtil/RecMutex.h $(includedir)/IceUtil/Lock.h $(includedir)/IceUtil/ThreadException.h $(includedir)/IceUtil/Exception.h $(includedir)/IceUtil/Time.h $(includedir)/IceUtil/Shared.h $(includedir)/IceUtil/Handle.h $(includedir)/IceUtil/CtrlCHandler.h $(includedir)/IceUtil/StaticMutex.h $(includedir)/Slice/Preprocessor.h $(includedir)/Slice/FileTracker.h $(includedir)/Slice/Parser.h $(includedir)/Slice/RubyUtil.h $(includedir)/IceUtil/OutputUtil.h $(includedir)/Slice/Util.h
diff --git a/cpp/src/slice2rb/Main.cpp b/cpp/src/slice2rb/Main.cpp
index 2cdd6ec4982..fdaf0466da0 100644
--- a/cpp/src/slice2rb/Main.cpp
+++ b/cpp/src/slice2rb/Main.cpp
@@ -14,6 +14,7 @@
#include <Slice/Preprocessor.h>
#include <Slice/FileTracker.h>
#include <Slice/RubyUtil.h>
+#include <Slice/Util.h>
#include <fstream>
@@ -87,11 +88,14 @@ main(int argc, char* argv[])
vector<string> args;
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
args = opts.parse(argc, (const char**)argv);
}
catch(const IceUtilInternal::BadOptException& e)
{
- cerr << argv[0] << ": " << e.reason << endl;
+ cerr << argv[0] << ": error: " << e.reason << endl;
usage(argv[0]);
return EXIT_FAILURE;
}
@@ -144,7 +148,7 @@ main(int argc, char* argv[])
if(args.empty())
{
- cerr << argv[0] << ": no input file" << endl;
+ getErrorStream() << argv[0] << ": error: no input file" << endl;
usage(argv[0]);
return EXIT_FAILURE;
}
@@ -238,7 +242,7 @@ main(int argc, char* argv[])
// any created files.
FileTracker::instance()->cleanup();
u->destroy();
- cerr << argv[0] << ": " << ex.reason() << endl;
+ getErrorStream() << argv[0] << ": error: " << ex.reason() << endl;
return EXIT_FAILURE;
}
}
diff --git a/cpp/src/slice2rb/Makefile.mak b/cpp/src/slice2rb/Makefile.mak
index 723f75de9bd..4ece13489a3 100644
--- a/cpp/src/slice2rb/Makefile.mak
+++ b/cpp/src/slice2rb/Makefile.mak
@@ -25,7 +25,7 @@ CPPFLAGS = -I. $(CPPFLAGS) -DWIN32_LEAN_AND_MEAN
PDBFLAGS = /pdb:$(NAME:.exe=.pdb)
!endif
-!if "$(CPP_COMPILER)" == "BCC2007"
+!if "$(BCPLUSPLUS)" == "yes"
RES_FILE = ,, Slice2Rb.res
!else
RES_FILE = Slice2Rb.res
@@ -45,7 +45,7 @@ install:: all
copy $(NAME) $(install_bindir)
-!if "$(CPP_COMPILER)" == "BCC2007" && "$(OPTIMIZE)" != "yes"
+!if "$(BCPLUSPLUS)" == "yes" && "$(OPTIMIZE)" != "yes"
install:: all
copy $(NAME:.exe=.tds) $(install_bindir)