Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
FactoryHolder.h
Go to the documentation of this file.
1
/*
2
* This file is part of Project SkyFire https://www.projectskyfire.org.
3
* See LICENSE.md file for Copyright information
4
*/
5
6
#ifndef SKYFIRE_FACTORY_HOLDER
7
#define SKYFIRE_FACTORY_HOLDER
8
9
#include "
Define.h
"
10
#include "
Dynamic/TypeList.h
"
11
#include "
ObjectRegistry.h
"
12
#include "
Platform/Singleton.h
"
13
16
template
<
class
T,
class
Key = std::
string
>
17
class
FactoryHolder
18
{
19
public
:
20
typedef
ObjectRegistry<FactoryHolder<T, Key >
, Key >
FactoryHolderRegistry
;
21
friend
class
Skyfire::Singleton
<
FactoryHolderRegistry
,
Skyfire
::NullMutex>;
22
typedef
Skyfire::Singleton
<FactoryHolderRegistry, Skyfire::NullMutex>
FactoryHolderRepository
;
23
24
FactoryHolder
(Key k) :
i_key
(k) { }
25
virtual
~FactoryHolder
() { }
26
inline
Key
key
()
const
{
return
i_key
; }
27
28
void
RegisterSelf
(
void
) {
FactoryHolderRepository::instance
()->
InsertItem
(
this
,
i_key
); }
29
void
DeregisterSelf
(
void
) {
FactoryHolderRepository::instance
()->
RemoveItem
(
this
,
false
); }
30
32
virtual
T*
Create
(
void
* data = NULL)
const
= 0;
33
private
:
34
Key
i_key
;
35
};
36
41
template
<
class
T>
42
class
Permissible
43
{
44
public
:
45
virtual
~Permissible
() { }
46
virtual
int
Permit
(
const
T*)
const
= 0;
47
};
48
#endif
49
Define.h
ObjectRegistry.h
Singleton.h
TypeList.h
FactoryHolder::FactoryHolder
FactoryHolder(Key k)
Definition
FactoryHolder.h:24
FactoryHolder< CreatureAI >::FactoryHolderRepository
Skyfire::Singleton< FactoryHolderRegistry, Skyfire::NullMutex > FactoryHolderRepository
Definition
FactoryHolder.h:22
FactoryHolder::~FactoryHolder
virtual ~FactoryHolder()
Definition
FactoryHolder.h:25
FactoryHolder::RegisterSelf
void RegisterSelf(void)
Definition
FactoryHolder.h:28
FactoryHolder< CreatureAI >::FactoryHolderRegistry
ObjectRegistry< FactoryHolder< CreatureAI, std::string >, std::string > FactoryHolderRegistry
Definition
FactoryHolder.h:20
FactoryHolder::DeregisterSelf
void DeregisterSelf(void)
Definition
FactoryHolder.h:29
FactoryHolder::Create
virtual T * Create(void *data=NULL) const =0
Abstract Factory create method.
FactoryHolder::key
Key key() const
Definition
FactoryHolder.h:26
FactoryHolder< CreatureAI >::i_key
std::string i_key
Definition
FactoryHolder.h:34
ObjectRegistry
Definition
ObjectRegistry.h:20
ObjectRegistry::RemoveItem
void RemoveItem(Key key, bool delete_object=true)
Removes a registry item.
Definition
ObjectRegistry.h:48
ObjectRegistry::InsertItem
bool InsertItem(T *obj, Key key, bool override=false)
Inserts a registry item.
Definition
ObjectRegistry.h:32
Permissible
Definition
FactoryHolder.h:43
Permissible::Permit
virtual int Permit(const T *) const =0
Permissible::~Permissible
virtual ~Permissible()
Definition
FactoryHolder.h:45
Skyfire::Singleton
Definition
Singleton.h:15
Skyfire::Singleton< FactoryHolderRegistry, Skyfire::NullMutex >::instance
static FactoryHolderRegistry * instance()
Definition
Singleton.h:17
Skyfire
Definition
AuthPatchTransfer.h:12
src
server
shared
Dynamic
FactoryHolder.h
Generated on
for Project SkyFire Core by
1.17.0