diff options
Diffstat (limited to 'cpp/include/Ice/FactoryTable.h')
-rw-r--r-- | cpp/include/Ice/FactoryTable.h | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/cpp/include/Ice/FactoryTable.h b/cpp/include/Ice/FactoryTable.h new file mode 100644 index 00000000000..987048629c1 --- /dev/null +++ b/cpp/include/Ice/FactoryTable.h @@ -0,0 +1,49 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2011 ZeroC, Inc. All rights reserved. +// +// This copy of Ice is licensed to you under the terms described in the +// ICE_LICENSE file included in this distribution. +// +// ********************************************************************** + +#ifndef ICE_FACTORYTABLE_H +#define ICE_FACTORYTABLE_H + +#include <IceUtil/Mutex.h> +#include <Ice/UserExceptionFactory.h> +#include <Ice/ObjectFactoryF.h> +#include <string> +#include <map> + +namespace IceInternal +{ + +class ICE_API FactoryTable : private IceUtil::noncopyable +{ +public: + + void addExceptionFactory(const ::std::string&, const IceInternal::UserExceptionFactoryPtr&); + IceInternal::UserExceptionFactoryPtr getExceptionFactory(const ::std::string&) const; + void removeExceptionFactory(const ::std::string&); + + void addObjectFactory(const ::std::string&, const Ice::ObjectFactoryPtr&); + Ice::ObjectFactoryPtr getObjectFactory(const ::std::string&) const; + void removeObjectFactory(const ::std::string&); + +private: + + IceUtil::Mutex _m; + + typedef ::std::pair<IceInternal::UserExceptionFactoryPtr, int> EFPair; + typedef ::std::map< ::std::string, EFPair> EFTable; + EFTable _eft; + + typedef ::std::pair<Ice::ObjectFactoryPtr, int> OFPair; + typedef ::std::map< ::std::string, OFPair> OFTable; + OFTable _oft; +}; + +} + +#endif |