Project SkyFire Core
SkyFire 5.4.8 server core API documentation
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
16template<class T, class Key = std::string>
18{
19public:
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
30
32 virtual T* Create(void* data = NULL) const = 0;
33private:
34 Key i_key;
35};
36
41template<class T>
43{
44public:
45 virtual ~Permissible() { }
46 virtual int Permit(const T*) const = 0;
47};
48#endif
49
FactoryHolder(Key k)
Skyfire::Singleton< FactoryHolderRegistry, Skyfire::NullMutex > FactoryHolderRepository
virtual ~FactoryHolder()
void RegisterSelf(void)
ObjectRegistry< FactoryHolder< CreatureAI, std::string >, std::string > FactoryHolderRegistry
void DeregisterSelf(void)
virtual T * Create(void *data=NULL) const =0
Abstract Factory create method.
Key key() const
void RemoveItem(Key key, bool delete_object=true)
Removes a registry item.
bool InsertItem(T *obj, Key key, bool override=false)
Inserts a registry item.
virtual int Permit(const T *) const =0
virtual ~Permissible()