VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
factoryTemplate.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2012 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
10 
11 #pragma once
12 
13 #include <vrfutil/vrfutilDefines.h>
14 #include <map>
15 
16 #include <vlutil/vlString.h>
17 
28 template <typename T_CreationObject, typename T_Key>
30 {
31 public:
34 
35 private:
40  orig);
41 
42 public:
43  typedef T_CreationObject* (*DtCreatorFcn)();
44 
48  };
49 
50  typedef std::map<T_Key, DtFactoryTemplateEntry> DtCreatorMapType;
51 
53  virtual ~DtFactoryTemplate();
54 
56  virtual void addCreatorFcn(const T_Key& key, DtCreatorFcn fcn);
57 
60  virtual bool removeCreatorFcn(const T_Key& key);
61 
65 
66  virtual T_CreationObject* createNew(const T_Key& key) const;
68 
69  virtual bool isKeyRegistered(const T_Key& key) const;
70 
72 
76  virtual DtString creationObjectName() const;
77 
78  virtual const DtCreatorMapType& creatorMap() const;
79 
81  virtual void setAlwaysWarnOnlyOnce(bool);
82  bool alwaysWarnOnlyOnce() const;
83 
84 protected:
85 
88  mutable std::map<T_Key, bool> myMessageWarningFilters;
89 };
90 
92 
95 template <typename T_CreationObject, typename T_Key, typename T_Arg>
97 {
98 public:
101 
102 private:
107  orig);
108 
109 public:
110  typedef T_CreationObject* (*DtCreatorFcn)(T_Arg);
111 
115  };
116 
117  typedef std::map<T_Key, DtSingleArgFactoryTemplateEntry> DtCreatorMapType;
118 
120  virtual ~DtSingleArgFactoryTemplate();
121 
123  virtual void addCreatorFcn(const T_Key& key, DtCreatorFcn fcn);
124 
127  virtual bool removeCreatorFcn(const T_Key& key);
128 
132 
133  virtual T_CreationObject* createNew(const T_Key& key, T_Arg arg) const;
135 
136  virtual bool isKeyRegistered(const T_Key& key) const;
137 
139 
143  virtual DtString creationObjectName() const;
144 
145  virtual const DtCreatorMapType& creatorMap() const;
146 
148  virtual void setAlwaysWarnOnlyOnce(bool);
149  bool alwaysWarnOnlyOnce() const;
150 
151 protected:
152 
155  mutable std::map<T_Key, bool> myMessageWarningFilters;
156 };
157 
158 #define factoryTemplate_inl_
159 #include "vrfutil/factoryTemplate.inl"
160 #undef factoryTemplate_inl_
virtual const DtCreatorMapType & creatorMap() const
bool alwaysWarnOnlyOnce() const
T_Key myTypeToCreate
Definition: factoryTemplate.h:113
virtual bool removeCreatorFcn(const T_Key &key)
Remove a creator function with the given key. Return true if the key is found.
DtCreatorFcn myCreatorFcn
Definition: factoryTemplate.h:114
DtCreatorFcn myCreatorFcn
Definition: factoryTemplate.h:47
const DtFactoryTemplate & operator=(const DtFactoryTemplate &orig)
Not implemented.
static DtFactoryTemplate< T_CreationObject, T_Key > * create()
Template for factory classes that create an object (T_CreationObject) that is associated with a parti...
Definition: factoryTemplate.h:29
bool myAlwaysWarnOnlyOnce
Definition: factoryTemplate.h:154
virtual void setAlwaysWarnOnlyOnce(bool)
Whether or not to always warn only once, even if not registered. Default is true. ...
DtSingleArgFactoryTemplate()
constructor
const DtSingleArgFactoryTemplate & operator=(const DtSingleArgFactoryTemplate &orig)
Not implemented.
virtual DtString creationObjectName() const
DtCreatorMapType myCreatorMap
Definition: factoryTemplate.h:86
virtual T_CreationObject * createNew(const T_Key &key, T_Arg arg) const
Create and return a new instance of the type based on the creator functions and the type specified...
virtual bool isKeyRegistered(const T_Key &key) const
virtual void addCreatorFcn(const T_Key &key, DtCreatorFcn fcn)
Add a creator function to the factory.
DtFactoryTemplate()
constructor
virtual DtString creationObjectName() const
This template is similar to DtFactoryTemplate, but allows one argument to be passed to the creator fu...
Definition: factoryTemplate.h:96
std::map< T_Key, bool > myMessageWarningFilters
Definition: factoryTemplate.h:155
std::map< T_Key, DtFactoryTemplateEntry > DtCreatorMapType
Definition: factoryTemplate.h:50
bool alwaysWarnOnlyOnce() const
T_Key myTypeToCreate
Definition: factoryTemplate.h:46
Definition: factoryTemplate.h:45
virtual void setAlwaysWarnOnlyOnce(bool)
Whether or not to always warn only once, even if not registered. Default is true. ...
std::map< T_Key, bool > myMessageWarningFilters
Definition: factoryTemplate.h:88
static DtSingleArgFactoryTemplate< T_CreationObject, T_Key, T_Arg > * create()
virtual void addCreatorFcn(const T_Key &key, DtCreatorFcn fcn)
Add a creator function to the factory.
std::map< T_Key, DtSingleArgFactoryTemplateEntry > DtCreatorMapType
Definition: factoryTemplate.h:117
virtual bool isKeyRegistered(const T_Key &key) const
virtual const DtCreatorMapType & creatorMap() const
virtual bool removeCreatorFcn(const T_Key &key)
Remove a creator function with the given key. Return true if the key is found.
Definition: factoryTemplate.h:112
virtual ~DtFactoryTemplate()
Destructor: deletes factory and any entries on the factory.
virtual ~DtSingleArgFactoryTemplate()
Destructor: deletes factory and any entries on the factory.
bool myAlwaysWarnOnlyOnce
Definition: factoryTemplate.h:87
DtCreatorMapType myCreatorMap
Definition: factoryTemplate.h:153
virtual T_CreationObject * createNew(const T_Key &key) const
Create and return a new instance of the type based on the creator functions and the type specified...

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)