diff options
Diffstat (limited to 'src/Bindings/LuaState.h')
-rw-r--r-- | src/Bindings/LuaState.h | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/Bindings/LuaState.h b/src/Bindings/LuaState.h index 269a10369..4f688be6c 100644 --- a/src/Bindings/LuaState.h +++ b/src/Bindings/LuaState.h @@ -210,6 +210,9 @@ public: /** Returns true if the m_LuaState is valid */ bool IsValid(void) const { return (m_LuaState != nullptr); } + + /** Returns the name of the subsystem, as specified when the instance was created. */ + AString GetSubsystemName(void) const { return m_SubsystemName; } /** Adds the specified path to package.<a_PathVariable> */ void AddPackagePath(const AString & a_PathVariable, const AString & a_Path); @@ -521,3 +524,37 @@ protected: + +/** Keeps track of all create cLuaState instances. +Can query each for the amount of currently used memory. */ +class cLuaStateTracker +{ +public: + /** Adds the specified Lua state to the internal list of LuaStates. */ + static void Add(cLuaState & a_LuaState); + + /** Deletes the specified Lua state from the internal list of LuaStates. */ + static void Del(cLuaState & a_LuaState); + + /** Returns the statistics for all the registered LuaStates. */ + static AString GetStats(void); + +protected: + typedef cLuaState * cLuaStatePtr; + typedef std::vector<cLuaStatePtr> cLuaStatePtrs; + + /** The internal list of LuaStates. + Protected against multithreaded access by m_CSLuaStates. */ + cLuaStatePtrs m_LuaStates; + + /** Protects m_LuaStates against multithreaded access. */ + cCriticalSection m_CSLuaStates; + + + /** Returns the single instance of this class. */ + static cLuaStateTracker & Get(void); +}; + + + + |