Example #1
0
static int lutok::LObject<T>::gcT(state& s) {
	if (luaL_getmetafield(s._pimpl->lua_state, 1, "unmanaged")) {
		s.push_value(1);
		s.get_table();
		if (!s.is_nil()) {
			return 0;
		}
	}

	Userdata* ud = s.to_userdata<UserData>(1);
	T* obj = ud->pT;
	delete obj;
	return 0;
}
Example #2
0
static void lutok::LObject<T>::subtable(state& s, Index metatable, const std::string& name,  const std::string& mode) {
	s.push_string(name);
	s.get_table(metatable);

	if (s.is_nil()) {
		s.pop(1);

		lua_checkstack(s._pimpl->lua_state, 3);

		weaktable(s, mode);
		s.push_string(name);
		s.push_value(-2);
		s.set_metatable(metatable);
	}
}