IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
DynamicObjectFactory.h
1 // DynamicObjectFactory.h:
3 // -----------------------
4 //
11 //
13 
14 #ifndef __IPSDKUTIL_DYNAMICOBJECTFACTORY_H__
15 #define __IPSDKUTIL_DYNAMICOBJECTFACTORY_H__
16 
17 // suppression warnings
18 // warning C4275: interface non dll class 'boost::noncopyable_::noncopyable' utilisée comme base d'une interface dll class 'ipsdk::DynamicObjectFactory'
19 // warning C4251: 'ipsdk::DynamicObjectFactory::_factoryMap' : class 'std::map<_Kty,_Ty>' nécessite une interface DLL pour être utilisé(e) par les clients de class 'ipsdk::DynamicObjectFactory'
20 #pragma warning (push)
21 #pragma warning (disable : 4275 4251)
22 
24 #include <IPSDKUtil/BaseTypes.h>
26 #include <boost/noncopyable.hpp>
27 #include <map>
28 
29 namespace ipsdk {
30 
31 class BaseDynamicObject;
32 
35 
36 class IPSDKUTIL_API DynamicObjectFactory : public boost::noncopyable
37 {
38 public:
40  static DynamicObjectFactory& getInstance();
41 
42 protected:
48 
49 // methods
50 public:
52  bool isRegistredClass(const std::string& className) const;
53 
56  void registerClass(const std::string& className,
57  DynamicNewObjectCreator newObjectCreator,
58  DynamicSharedObjectCreator sharedObjectCreator);
59 
62  void unRegisterClass(const std::string& className);
63 
66  BaseDynamicObject* createNewObject(const std::string& className) const;
67 
70  DynamicObjectPtr createSharedObject(const std::string& className) const;
71 
72 // attributes
73 protected:
75  typedef std::pair<DynamicNewObjectCreator, DynamicSharedObjectCreator> DynamicObjectCreator;
76 
78  typedef std::map<std::string, DynamicObjectCreator> FactoryMap;
79 
82 };
83 
86 
87 } // end of namespace ipsdk
88 
89 #pragma warning (pop)
90 
91 #endif // __IPSDKUTIL_DYNAMICOBJECTFACTORY_H__
Base class for dynamic objects.
Definition: BaseDynamicObject.h:28
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
DynamicObjectPtr(* DynamicSharedObjectCreator)()
creation function for shared dynamic objects
Definition: DynamicObjectTypes.h:34
BaseDynamicObject *(* DynamicNewObjectCreator)()
creation function for dynamic objects
Definition: DynamicObjectTypes.h:31
boost::shared_ptr< BaseDynamicObject > DynamicObjectPtr
shared pointer to a BaseDynamicObject
Definition: DynamicObjectTypes.h:22
Factory singleton allowing dynamic creation of registred objects.
Definition: DynamicObjectFactory.h:36
FactoryMap _factoryMap
map storing string to creation function association
Definition: DynamicObjectFactory.h:81
Base types for multiplatform compatibility.
Predefined types for dynamic objects management.
std::map< std::string, DynamicObjectCreator > FactoryMap
typedef for string associated to dynamic object creation function
Definition: DynamicObjectFactory.h:78
#define IPSDKUTIL_API
Import/Export macro for library IPSDKUtil.
Definition: IPSDKUtilExports.h:27
Definition of import/export macro for library.
std::pair< DynamicNewObjectCreator, DynamicSharedObjectCreator > DynamicObjectCreator
pair of function pointers allowing to create new and shared dynamic objects
Definition: DynamicObjectFactory.h:75