#ifndef ALEDBCREGISTRY_H #define ALEDBCREGISTRY_H #include #include #include #include #include "DBCStores.h" #include "LuaEngine.h" struct DBCDefinition { std::string name; void* storage; const std::type_info& type; std::function lookupFunction; std::function pushFunction; }; extern std::vector dbcRegistry; #define REGISTER_DBC(dbcName, entryType, store) \ { \ #dbcName, \ reinterpret_cast(&store), \ typeid(DBCStorage), \ [](uint32 id) -> const void* { \ return store.LookupEntry(id); \ }, \ [](lua_State* L, const void* entry) { \ auto cast_entry = static_cast(entry); \ ALE::Push(L, *cast_entry); \ } \ } #endif // ALEDBCREGISTRY_H