Bazaar developer reference

CvLuaFractal::CreateFractal(lua_State *)

Defined in
Lua/CvLuaFractal.cpp, line 108
Class
CvLuaFractal
Hook name
CivHooks::CvLuaFractal_CreateFractal

Hooks

static bool BeforeCvLuaFractal_CreateFractal(lua_State* L, CvFractal*& result);static void AfterCvLuaFractal_CreateFractal(lua_State* L, CvFractal*& result);static CvFractal* ReplaceCvLuaFractal_CreateFractal(CvFractal* (*original)(lua_State*), lua_State* L);// CivHooks.h gives this hook point no types, so nothing checks these hooks' parameters.host->RegisterHook(host->pluginIndex, CivHooks::CvLuaFractal_CreateFractal::ID, CIV_HOOK_BEFORE, (void*)&BeforeCvLuaFractal_CreateFractal);host->RegisterHook(host->pluginIndex, CivHooks::CvLuaFractal_CreateFractal::ID, CIV_HOOK_AFTER, (void*)&AfterCvLuaFractal_CreateFractal);host->RegisterHook(host->pluginIndex, CivHooks::CvLuaFractal_CreateFractal::ID, CIV_HOOK_REPLACE, (void*)&ReplaceCvLuaFractal_CreateFractal);

Code

108CvFractal* CvLuaFractal::CreateFractal(lua_State* L)109{110	//This will use Lua's memory manager and Lua is responsible for destruction.111	void* ptr = lua_newuserdata(L, sizeof(CvFractal));112	CvFractal* pFractal = new(ptr) CvFractal();113114	lua_newtable(L);115116	//__index117	lua_newtable(L);118119	lua_pushvalue(L, -3);				//push userdata as upvalue120	lua_pushcclosure(L, lGetHeight, 1);121	lua_setfield(L, -2, "GetHeight");122123	lua_pushvalue(L, -3);				//push userdata as upvalue124	lua_pushcclosure(L, lBuildRidges, 1);125	lua_setfield(L, -2, "BuildRidges");126127	lua_setfield(L, -2, "__index");128129	//__gc130	lua_pushcclosure(L, lDestroy, 0);131	lua_setfield(L, -2, "__gc");132133	lua_setmetatable(L, -2);134135	return pFractal;136}

Calls

Called by