/* core/func.h This file is part of the Osirion project and is distributed under the terms of the GNU General Public License version 2 */ #ifndef __INCLUDED_CORE_FUNC_H__ #define __INCLUDED_CORE_FUNC_H__ #include "sys/sys.h" #include "core/player.h" #include #include #include namespace core { class Func_t { public: /// pointer to the function void *ptr; /// name of the function std::string name; /// flags unsigned int flags; }; /// function type typedef Func_t *Func; /// function pointer type for local functions typedef void(* FuncPtr)(std::stringstream &args); /// fuction pointer for game functions typedef void(* GameFuncPtr)(Player &player, std::stringstream &args); /// the function registry namespace func { /// function flags enum Flags {Game=1}; /// add a function to the registry void add(const char *functionname, FuncPtr functionptr, unsigned int flags=0); /** * @brief add a game function to the registry * the flag core::func::Game will automaticly be set */ void add(const char *functionname, GameFuncPtr gamefunctionptr, unsigned int flags=0); /// remove a function from the registry void remove(const char *functionname); void remove(const std::string &functionname); /// find a fuction pointer /** Returns 0 if the function pointer could not be found */ Func find(const std::string &functionname); /// list the function registry void list(); /// the function registry extern std::map registry; } // namespace func } // namespace core #endif // __INCLUDED_CORE_FUNC_H__