mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-21 13:51:26 +02:00
MINOR: lua: move class registration facilities
The functions - hlua_class_const_int() - hlua_class_const_str() - hlua_class_function() are use for common class registration actions. The function 'hlua_dump_object()' is generic dump name function. These functions can be used by all the HAProxy objects, so I move it into the safe functions file.
This commit is contained in:
parent
9ba1d024db
commit
ddd8988fe5
@ -1,7 +1,11 @@
|
||||
#ifndef _PROTO_HLUA_FCN_H
|
||||
#define _PROTO_HLUA_FCN_H
|
||||
|
||||
void hlua_class_const_int(lua_State *L, const char *name, int value);
|
||||
void hlua_class_const_str(lua_State *L, const char *name, const char *value);
|
||||
void hlua_class_function(lua_State *L, const char *name, int (*function)(lua_State *L));
|
||||
void *hlua_checkudata(lua_State *L, int ud, int class_ref);
|
||||
int hlua_fcn_reg_core_fcn(lua_State *L);
|
||||
int hlua_dump_object(lua_State *L);
|
||||
|
||||
#endif /* _PROTO_HLUA_FCN_H */
|
||||
|
43
src/hlua.c
43
src/hlua.c
@ -264,49 +264,6 @@ const char *hlua_get_top_error_string(lua_State *L)
|
||||
return lua_tostring(L, -1);
|
||||
}
|
||||
|
||||
/* The three following functions are useful for adding entries
|
||||
* in a table. These functions takes a string and respectively an
|
||||
* integer, a string or a function and add it to the table in the
|
||||
* top of the stack.
|
||||
*
|
||||
* These functions throws an error if no more stack size is
|
||||
* available.
|
||||
*/
|
||||
__LJMP static inline void hlua_class_const_int(lua_State *L, const char *name,
|
||||
int value)
|
||||
{
|
||||
if (!lua_checkstack(L, 2))
|
||||
WILL_LJMP(luaL_error(L, "full stack"));
|
||||
lua_pushstring(L, name);
|
||||
lua_pushinteger(L, value);
|
||||
lua_rawset(L, -3);
|
||||
}
|
||||
__LJMP static inline void hlua_class_const_str(lua_State *L, const char *name,
|
||||
const char *value)
|
||||
{
|
||||
if (!lua_checkstack(L, 2))
|
||||
WILL_LJMP(luaL_error(L, "full stack"));
|
||||
lua_pushstring(L, name);
|
||||
lua_pushstring(L, value);
|
||||
lua_rawset(L, -3);
|
||||
}
|
||||
__LJMP static inline void hlua_class_function(lua_State *L, const char *name,
|
||||
int (*function)(lua_State *L))
|
||||
{
|
||||
if (!lua_checkstack(L, 2))
|
||||
WILL_LJMP(luaL_error(L, "full stack"));
|
||||
lua_pushstring(L, name);
|
||||
lua_pushcclosure(L, function, 0);
|
||||
lua_rawset(L, -3);
|
||||
}
|
||||
|
||||
__LJMP static int hlua_dump_object(struct lua_State *L)
|
||||
{
|
||||
const char *name = (const char *)lua_tostring(L, lua_upvalueindex(1));
|
||||
lua_pushfstring(L, "HAProxy class %s", name);
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* This function check the number of arguments available in the
|
||||
* stack. If the number of arguments available is not the same
|
||||
* then <nb> an error is throwed.
|
||||
|
@ -25,6 +25,47 @@
|
||||
/* Contains the class reference of the concat object. */
|
||||
static int class_concat_ref;
|
||||
|
||||
/* The three following functions are useful for adding entries
|
||||
* in a table. These functions takes a string and respectively an
|
||||
* integer, a string or a function and add it to the table in the
|
||||
* top of the stack.
|
||||
*
|
||||
* These functions throws an error if no more stack size is
|
||||
* available.
|
||||
*/
|
||||
void hlua_class_const_int(lua_State *L, const char *name, int value)
|
||||
{
|
||||
if (!lua_checkstack(L, 2))
|
||||
luaL_error(L, "full stack");
|
||||
lua_pushstring(L, name);
|
||||
lua_pushinteger(L, value);
|
||||
lua_rawset(L, -3);
|
||||
}
|
||||
void hlua_class_const_str(lua_State *L, const char *name, const char *value)
|
||||
{
|
||||
if (!lua_checkstack(L, 2))
|
||||
luaL_error(L, "full stack");
|
||||
lua_pushstring(L, name);
|
||||
lua_pushstring(L, value);
|
||||
lua_rawset(L, -3);
|
||||
}
|
||||
void hlua_class_function(lua_State *L, const char *name, int (*function)(lua_State *L))
|
||||
{
|
||||
if (!lua_checkstack(L, 2))
|
||||
luaL_error(L, "full stack");
|
||||
lua_pushstring(L, name);
|
||||
lua_pushcclosure(L, function, 0);
|
||||
lua_rawset(L, -3);
|
||||
}
|
||||
|
||||
/* This function returns a string containg the HAProxy object name. */
|
||||
int hlua_dump_object(struct lua_State *L)
|
||||
{
|
||||
const char *name = (const char *)lua_tostring(L, lua_upvalueindex(1));
|
||||
lua_pushfstring(L, "HAProxy class %s", name);
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Return an object of the expected type, or throws an error. */
|
||||
void *hlua_checkudata(lua_State *L, int ud, int class_ref)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user