From 6b09bdfe70f9aa953f725c49b9cbd28f30453897 Mon Sep 17 00:00:00 2001 From: Thomas Goyne Date: Sun, 25 Nov 2012 19:30:46 -0800 Subject: [PATCH] Factor out some duplicated code --- aegisub/src/auto4_lua_assfile.cpp | 28 +++++++++++----------------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/aegisub/src/auto4_lua_assfile.cpp b/aegisub/src/auto4_lua_assfile.cpp index 3d857704c..e8bae0423 100644 --- a/aegisub/src/auto4_lua_assfile.cpp +++ b/aegisub/src/auto4_lua_assfile.cpp @@ -67,42 +67,36 @@ #endif namespace { - void set_field(lua_State *L, const char *name, wxString const& value) - { + void push_value(lua_State *L, wxString const& value) { lua_pushstring(L, value.utf8_str()); - lua_setfield(L, -2, name); } - void set_field(lua_State *L, const char *name, const char *value) - { + void push_value(lua_State *L, const char *value) { lua_pushstring(L, value); - lua_setfield(L, -2, name); } // Userdata object must be just above the target table - void set_field(lua_State *L, const char *name, lua_CFunction value) - { + void push_value(lua_State *L, lua_CFunction value) { assert(lua_type(L, -2) == LUA_TUSERDATA); lua_pushvalue(L, -2); lua_pushcclosure(L, value, 1); - lua_setfield(L, -2, name); } - void set_field(lua_State *L, const char *name, bool value) - { + void push_value(lua_State *L, bool value) { lua_pushboolean(L, value); - lua_setfield(L, -2, name); } - void set_field(lua_State *L, const char *name, double value) - { + void push_value(lua_State *L, double value) { lua_pushnumber(L, value); - lua_setfield(L, -2, name); } - void set_field(lua_State *L, const char *name, int value) - { + void push_value(lua_State *L, int value) { lua_pushinteger(L, value); + } + + template + void set_field(lua_State *L, const char *name, T value) { + push_value(L, value); lua_setfield(L, -2, name); }