Mercurial > love-experiments
diff src/common/Reference.cpp @ 1096:86a44f2bc38f
CRLF to LF
| author | Bart van Strien <bart.bes+projects@gmail.com> |
|---|---|
| date | Wed, 04 Jul 2012 14:40:24 +0200 |
| parents | 73f4863ee5b7 |
| children | b7f097053d74 |
line wrap: on
line diff
--- a/src/common/Reference.cpp Wed Jul 04 13:54:15 2012 +0200 +++ b/src/common/Reference.cpp Wed Jul 04 14:40:24 2012 +0200 @@ -1,82 +1,82 @@ -/** - * Copyright (c) 2006-2012 LOVE Development Team - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * 3. This notice may not be removed or altered from any source distribution. - **/ - -#include "Reference.h" - -namespace love -{ - -const char REFERENCE_TABLE_NAME[] = "love-references"; - -Reference::Reference() - : L(0), idx(LUA_REFNIL) -{ -} - -Reference::Reference(lua_State *L) - : L(0), idx(LUA_REFNIL) -{ - ref(L); -} - -Reference::~Reference() -{ - unref(); -} - -void Reference::ref(lua_State *L) -{ - unref(); // Just to be safe. - this->L = L; - luax_insist(L, LUA_REGISTRYINDEX, REFERENCE_TABLE_NAME); - lua_insert(L, -2); // Move reference table behind value. - idx = luaL_ref(L, -2); - lua_pop(L, 1); -} - -void Reference::unref() -{ - if (idx != LUA_REFNIL) - { - luax_insist(L, LUA_REGISTRYINDEX, REFERENCE_TABLE_NAME); - luaL_unref(L, -1, idx); - lua_pop(L, 1); - idx = LUA_REFNIL; - } -} - -void Reference::push() -{ - if (idx != LUA_REFNIL) - { - luax_insist(L, LUA_REGISTRYINDEX, REFERENCE_TABLE_NAME); - lua_rawgeti(L, -1, idx); - lua_remove(L, -2); - } - else - lua_pushnil(L); -} - -lua_State *Reference::getL() -{ - return L; -} - -} // love +/** + * Copyright (c) 2006-2012 LOVE Development Team + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + **/ + +#include "Reference.h" + +namespace love +{ + +const char REFERENCE_TABLE_NAME[] = "love-references"; + +Reference::Reference() + : L(0), idx(LUA_REFNIL) +{ +} + +Reference::Reference(lua_State *L) + : L(0), idx(LUA_REFNIL) +{ + ref(L); +} + +Reference::~Reference() +{ + unref(); +} + +void Reference::ref(lua_State *L) +{ + unref(); // Just to be safe. + this->L = L; + luax_insist(L, LUA_REGISTRYINDEX, REFERENCE_TABLE_NAME); + lua_insert(L, -2); // Move reference table behind value. + idx = luaL_ref(L, -2); + lua_pop(L, 1); +} + +void Reference::unref() +{ + if (idx != LUA_REFNIL) + { + luax_insist(L, LUA_REGISTRYINDEX, REFERENCE_TABLE_NAME); + luaL_unref(L, -1, idx); + lua_pop(L, 1); + idx = LUA_REFNIL; + } +} + +void Reference::push() +{ + if (idx != LUA_REFNIL) + { + luax_insist(L, LUA_REGISTRYINDEX, REFERENCE_TABLE_NAME); + lua_rawgeti(L, -1, idx); + lua_remove(L, -2); + } + else + lua_pushnil(L); +} + +lua_State *Reference::getL() +{ + return L; +} + +} // love
