MINOR: lua: move common function
This patch moves the function hlua_checkudata which check that
an object contains the expected class_reference as metatable.
This function is commonly used by all the lua functions.
The function hlua_metatype is also moved.
diff --git a/include/proto/hlua_fcn.h b/include/proto/hlua_fcn.h
index 37d07ff..179d40c 100644
--- a/include/proto/hlua_fcn.h
+++ b/include/proto/hlua_fcn.h
@@ -1,6 +1,7 @@
#ifndef _PROTO_HLUA_FCN_H
#define _PROTO_HLUA_FCN_H
+void *hlua_checkudata(lua_State *L, int ud, int class_ref);
int hlua_fcn_reg_core_fcn(lua_State *L);
#endif /* _PROTO_HLUA_FCN_H */
diff --git a/src/hlua.c b/src/hlua.c
index b4b8980..1111720 100644
--- a/src/hlua.c
+++ b/src/hlua.c
@@ -306,47 +306,6 @@
WILL_LJMP(luaL_error(L, "'%s' needs %d arguments", fcn, nb));
}
-/* Return true if the data in stack[<ud>] is an object of
- * type <class_ref>.
- */
-static int hlua_metaistype(lua_State *L, int ud, int class_ref)
-{
- if (!lua_getmetatable(L, ud))
- return 0;
-
- lua_rawgeti(L, LUA_REGISTRYINDEX, class_ref);
- if (!lua_rawequal(L, -1, -2)) {
- lua_pop(L, 2);
- return 0;
- }
-
- lua_pop(L, 2);
- return 1;
-}
-
-/* Return an object of the expected type, or throws an error. */
-__LJMP static void *hlua_checkudata(lua_State *L, int ud, int class_ref)
-{
- void *p;
-
- /* Check if the stack entry is an array. */
- if (!lua_istable(L, ud))
- WILL_LJMP(luaL_argerror(L, ud, NULL));
- /* Check if the metadata have the expected type. */
- if (!hlua_metaistype(L, ud, class_ref))
- WILL_LJMP(luaL_argerror(L, ud, NULL));
- /* Push on the stack at the entry [0] of the table. */
- lua_rawgeti(L, ud, 0);
- /* Check if this entry is userdata. */
- p = lua_touserdata(L, -1);
- if (!p)
- WILL_LJMP(luaL_argerror(L, ud, NULL));
- /* Remove the entry returned by lua_rawgeti(). */
- lua_pop(L, 1);
- /* Return the associated struct. */
- return p;
-}
-
/* This fucntion push an error string prefixed by the file name
* and the line number where the error is encountered.
*/
diff --git a/src/hlua_fcn.c b/src/hlua_fcn.c
index a35ccfa..7950038 100644
--- a/src/hlua_fcn.c
+++ b/src/hlua_fcn.c
@@ -9,6 +9,47 @@
#include <common/time.h>
+/* Return true if the data in stack[<ud>] is an object of
+ * type <class_ref>.
+ */
+static int hlua_metaistype(lua_State *L, int ud, int class_ref)
+{
+ if (!lua_getmetatable(L, ud))
+ return 0;
+
+ lua_rawgeti(L, LUA_REGISTRYINDEX, class_ref);
+ if (!lua_rawequal(L, -1, -2)) {
+ lua_pop(L, 2);
+ return 0;
+ }
+
+ lua_pop(L, 2);
+ return 1;
+}
+
+/* Return an object of the expected type, or throws an error. */
+void *hlua_checkudata(lua_State *L, int ud, int class_ref)
+{
+ void *p;
+
+ /* Check if the stack entry is an array. */
+ if (!lua_istable(L, ud))
+ WILL_LJMP(luaL_argerror(L, ud, NULL));
+ /* Check if the metadata have the expected type. */
+ if (!hlua_metaistype(L, ud, class_ref))
+ WILL_LJMP(luaL_argerror(L, ud, NULL));
+ /* Push on the stack at the entry [0] of the table. */
+ lua_rawgeti(L, ud, 0);
+ /* Check if this entry is userdata. */
+ p = lua_touserdata(L, -1);
+ if (!p)
+ WILL_LJMP(luaL_argerror(L, ud, NULL));
+ /* Remove the entry returned by lua_rawgeti(). */
+ lua_pop(L, 1);
+ /* Return the associated struct. */
+ return p;
+}
+
/* This function return the current date at epoch format in milliseconds. */
int hlua_now(lua_State *L)
{