TrinityCore
SpecializedScriptRegistry< ScriptType, true > Class Template Reference
+ Inheritance diagram for SpecializedScriptRegistry< ScriptType, true >:

Public Types

typedef std::unordered_map< uint32, std::unique_ptr< ScriptType > > ScriptStoreType
 
typedef ScriptStoreType::iterator ScriptStoreIteratorType
 

Public Member Functions

 SpecializedScriptRegistry ()
 
void ReleaseContext (std::string const &context) final override
 
void SwapContext (bool initialize) final override
 Injects and updates the changed script objects. More...
 
void RemoveUsedScriptsFromContainer (std::unordered_set< std::string > &scripts) final override
 
void Unload () final override
 Unloads the script registry. More...
 
void SyncScriptNames () final override
 Updates the scripts to reflect the current id. More...
 
void AddScript (ScriptType *script)
 
ScriptType * GetScriptById (uint32 id)
 
ScriptStoreTypeGetScripts ()
 
- Public Member Functions inherited from ScriptRegistryInterface
 ScriptRegistryInterface ()
 
virtual ~ScriptRegistryInterface ()
 
 ScriptRegistryInterface (ScriptRegistryInterface const &)=delete
 
 ScriptRegistryInterface (ScriptRegistryInterface &&)=delete
 
ScriptRegistryInterfaceoperator= (ScriptRegistryInterface const &)=delete
 
ScriptRegistryInterfaceoperator= (ScriptRegistryInterface &&)=delete
 
virtual void ReleaseContext (std::string const &context)=0
 
virtual void SwapContext (bool initialize)=0
 Injects and updates the changed script objects. More...
 
virtual void RemoveUsedScriptsFromContainer (std::unordered_set< std::string > &scripts)=0
 
virtual void Unload ()=0
 Unloads the script registry. More...
 
virtual void SyncScriptNames ()=0
 Updates the scripts to reflect the current id. More...
 
- Public Member Functions inherited from ScriptRegistrySwapHookBase
 ScriptRegistrySwapHookBase ()
 
virtual ~ScriptRegistrySwapHookBase ()
 
 ScriptRegistrySwapHookBase (ScriptRegistrySwapHookBase const &)=delete
 
 ScriptRegistrySwapHookBase (ScriptRegistrySwapHookBase &&)=delete
 
ScriptRegistrySwapHookBaseoperator= (ScriptRegistrySwapHookBase const &)=delete
 
ScriptRegistrySwapHookBaseoperator= (ScriptRegistrySwapHookBase &&)=delete
 
virtual void BeforeReleaseContext (std::string const &)
 Called before the actual context release happens. More...
 
virtual void BeforeSwapContext (bool)
 Called before SwapContext. More...
 
virtual void BeforeUnload ()
 Called before Unload. More...
 
virtual void OnScriptNamesSync ()
 Called manually to sync scriptnames. More...
 

Protected Member Functions

std::unordered_set< uint32GetScriptIDsToRemove (std::string const &context) const
 
std::unordered_set< uint32 > const & GetRecentlyAddedScriptIDs () const
 

Private Attributes

ScriptStoreType _scripts
 
std::unordered_multimap< std::string, uint32_ids_of_contexts
 
std::unordered_set< uint32_recently_added_ids
 

Friends

template<typename >
class UnsupportedScriptRegistrySwapHooks
 
template<typename , typename >
class ScriptRegistrySwapHooks
 
template<typename , typename , typename >
class CreatureGameObjectAreaTriggerScriptRegistrySwapHooks
 

Detailed Description

template<typename ScriptType>
class SpecializedScriptRegistry< ScriptType, true >

Definition at line 923 of file ScriptMgr.cpp.

Member Typedef Documentation

◆ ScriptStoreIteratorType

template<typename ScriptType >
typedef ScriptStoreType::iterator SpecializedScriptRegistry< ScriptType, true >::ScriptStoreIteratorType

Definition at line 944 of file ScriptMgr.cpp.

◆ ScriptStoreType

template<typename ScriptType >
typedef std::unordered_map< uint32 , std::unique_ptr<ScriptType> > SpecializedScriptRegistry< ScriptType, true >::ScriptStoreType

Definition at line 942 of file ScriptMgr.cpp.

Constructor & Destructor Documentation

◆ SpecializedScriptRegistry()

template<typename ScriptType >
SpecializedScriptRegistry< ScriptType, true >::SpecializedScriptRegistry ( )
inline

Definition at line 937 of file ScriptMgr.cpp.

Member Function Documentation

◆ AddScript()

template<typename ScriptType >
void SpecializedScriptRegistry< ScriptType, true >::AddScript ( ScriptType *  script)
inline

Definition at line 985 of file ScriptMgr.cpp.

◆ GetRecentlyAddedScriptIDs()

template<typename ScriptType >
std::unordered_set< uint32 > const & SpecializedScriptRegistry< ScriptType, true >::GetRecentlyAddedScriptIDs ( ) const
inlineprotected

Definition at line 1052 of file ScriptMgr.cpp.

◆ GetScriptById()

template<typename ScriptType >
ScriptType * SpecializedScriptRegistry< ScriptType, true >::GetScriptById ( uint32  id)
inline

Definition at line 1024 of file ScriptMgr.cpp.

◆ GetScriptIDsToRemove()

template<typename ScriptType >
std::unordered_set< uint32 > SpecializedScriptRegistry< ScriptType, true >::GetScriptIDsToRemove ( std::string const &  context) const
inlineprotected

Definition at line 1040 of file ScriptMgr.cpp.

◆ GetScripts()

template<typename ScriptType >
ScriptStoreType & SpecializedScriptRegistry< ScriptType, true >::GetScripts ( )
inline

Definition at line 1033 of file ScriptMgr.cpp.

◆ ReleaseContext()

template<typename ScriptType >
void SpecializedScriptRegistry< ScriptType, true >::ReleaseContext ( std::string const &  context)
inlinefinaloverridevirtual

Removes all scripts associated with the given script context. Requires ScriptRegistryBase::SwapContext to be called after all transfers have finished.

Implements ScriptRegistryInterface.

Definition at line 946 of file ScriptMgr.cpp.

+ Here is the call graph for this function:

◆ RemoveUsedScriptsFromContainer()

template<typename ScriptType >
void SpecializedScriptRegistry< ScriptType, true >::RemoveUsedScriptsFromContainer ( std::unordered_set< std::string > &  scripts)
inlinefinaloverridevirtual

Removes the scripts used by this registry from the given container. Used to find unused script names.

Implements ScriptRegistryInterface.

Definition at line 962 of file ScriptMgr.cpp.

◆ SwapContext()

template<typename ScriptType >
void SpecializedScriptRegistry< ScriptType, true >::SwapContext ( bool  initialize)
inlinefinaloverridevirtual

Injects and updates the changed script objects.

Implements ScriptRegistryInterface.

Definition at line 955 of file ScriptMgr.cpp.

+ Here is the call graph for this function:

◆ SyncScriptNames()

template<typename ScriptType >
void SpecializedScriptRegistry< ScriptType, true >::SyncScriptNames ( )
inlinefinaloverridevirtual

Updates the scripts to reflect the current id.

Implements ScriptRegistryInterface.

Definition at line 979 of file ScriptMgr.cpp.

+ Here is the call graph for this function:

◆ Unload()

template<typename ScriptType >
void SpecializedScriptRegistry< ScriptType, true >::Unload ( )
inlinefinaloverridevirtual

Unloads the script registry.

Implements ScriptRegistryInterface.

Definition at line 968 of file ScriptMgr.cpp.

+ Here is the call graph for this function:

Friends And Related Function Documentation

◆ CreatureGameObjectAreaTriggerScriptRegistrySwapHooks

template<typename ScriptType >
template<typename , typename , typename >
friend class CreatureGameObjectAreaTriggerScriptRegistrySwapHooks
friend

Definition at line 934 of file ScriptMgr.cpp.

◆ ScriptRegistrySwapHooks

template<typename ScriptType >
template<typename , typename >
friend class ScriptRegistrySwapHooks
friend

Definition at line 931 of file ScriptMgr.cpp.

◆ UnsupportedScriptRegistrySwapHooks

template<typename ScriptType >
template<typename >
friend class UnsupportedScriptRegistrySwapHooks
friend

Definition at line 928 of file ScriptMgr.cpp.

Member Data Documentation

◆ _ids_of_contexts

template<typename ScriptType >
std::unordered_multimap<std::string , uint32 > SpecializedScriptRegistry< ScriptType, true >::_ids_of_contexts
private

Definition at line 1061 of file ScriptMgr.cpp.

◆ _recently_added_ids

template<typename ScriptType >
std::unordered_set<uint32> SpecializedScriptRegistry< ScriptType, true >::_recently_added_ids
private

Definition at line 1064 of file ScriptMgr.cpp.

◆ _scripts

template<typename ScriptType >
ScriptStoreType SpecializedScriptRegistry< ScriptType, true >::_scripts
private

Definition at line 1058 of file ScriptMgr.cpp.


The documentation for this class was generated from the following file: