diff options
| -rw-r--r-- | src/auxiliar.c | 26 | ||||
| -rw-r--r-- | src/auxiliar.h | 16 |
2 files changed, 20 insertions, 22 deletions
diff --git a/src/auxiliar.c b/src/auxiliar.c index 0bd7927..93a66a0 100644 --- a/src/auxiliar.c +++ b/src/auxiliar.c | |||
| @@ -7,13 +7,10 @@ | |||
| 7 | #include <string.h> | 7 | #include <string.h> |
| 8 | #include <stdio.h> | 8 | #include <stdio.h> |
| 9 | 9 | ||
| 10 | /*=========================================================================*\ | ||
| 11 | * Exported functions | ||
| 12 | \*=========================================================================*/ | ||
| 13 | /*-------------------------------------------------------------------------*\ | 10 | /*-------------------------------------------------------------------------*\ |
| 14 | * Initializes the module | 11 | * Initializes the module |
| 15 | \*-------------------------------------------------------------------------*/ | 12 | \*-------------------------------------------------------------------------*/ |
| 16 | LUASOCKET_PRIVATE int auxiliar_open(lua_State *L) { | 13 | int auxiliar_open(lua_State *L) { |
| 17 | (void) L; | 14 | (void) L; |
| 18 | return 0; | 15 | return 0; |
| 19 | } | 16 | } |
| @@ -22,7 +19,7 @@ LUASOCKET_PRIVATE int auxiliar_open(lua_State *L) { | |||
| 22 | * Creates a new class with given methods | 19 | * Creates a new class with given methods |
| 23 | * Methods whose names start with __ are passed directly to the metatable. | 20 | * Methods whose names start with __ are passed directly to the metatable. |
| 24 | \*-------------------------------------------------------------------------*/ | 21 | \*-------------------------------------------------------------------------*/ |
| 25 | LUASOCKET_PRIVATE void auxiliar_newclass(lua_State *L, const char *classname, luaL_Reg *func) { | 22 | void auxiliar_newclass(lua_State *L, const char *classname, luaL_Reg *func) { |
| 26 | luaL_newmetatable(L, classname); /* mt */ | 23 | luaL_newmetatable(L, classname); /* mt */ |
| 27 | /* create __index table to place methods */ | 24 | /* create __index table to place methods */ |
| 28 | lua_pushstring(L, "__index"); /* mt,"__index" */ | 25 | lua_pushstring(L, "__index"); /* mt,"__index" */ |
| @@ -45,7 +42,7 @@ LUASOCKET_PRIVATE void auxiliar_newclass(lua_State *L, const char *classname, lu | |||
| 45 | /*-------------------------------------------------------------------------*\ | 42 | /*-------------------------------------------------------------------------*\ |
| 46 | * Prints the value of a class in a nice way | 43 | * Prints the value of a class in a nice way |
| 47 | \*-------------------------------------------------------------------------*/ | 44 | \*-------------------------------------------------------------------------*/ |
| 48 | LUASOCKET_PRIVATE int auxiliar_tostring(lua_State *L) { | 45 | int auxiliar_tostring(lua_State *L) { |
| 49 | char buf[32]; | 46 | char buf[32]; |
| 50 | if (!lua_getmetatable(L, 1)) goto error; | 47 | if (!lua_getmetatable(L, 1)) goto error; |
| 51 | lua_pushstring(L, "__index"); | 48 | lua_pushstring(L, "__index"); |
| @@ -66,7 +63,7 @@ error: | |||
| 66 | /*-------------------------------------------------------------------------*\ | 63 | /*-------------------------------------------------------------------------*\ |
| 67 | * Insert class into group | 64 | * Insert class into group |
| 68 | \*-------------------------------------------------------------------------*/ | 65 | \*-------------------------------------------------------------------------*/ |
| 69 | LUASOCKET_PRIVATE void auxiliar_add2group(lua_State *L, const char *classname, const char *groupname) { | 66 | void auxiliar_add2group(lua_State *L, const char *classname, const char *groupname) { |
| 70 | luaL_getmetatable(L, classname); | 67 | luaL_getmetatable(L, classname); |
| 71 | lua_pushstring(L, groupname); | 68 | lua_pushstring(L, groupname); |
| 72 | lua_pushboolean(L, 1); | 69 | lua_pushboolean(L, 1); |
| @@ -77,7 +74,7 @@ LUASOCKET_PRIVATE void auxiliar_add2group(lua_State *L, const char *classname, c | |||
| 77 | /*-------------------------------------------------------------------------*\ | 74 | /*-------------------------------------------------------------------------*\ |
| 78 | * Make sure argument is a boolean | 75 | * Make sure argument is a boolean |
| 79 | \*-------------------------------------------------------------------------*/ | 76 | \*-------------------------------------------------------------------------*/ |
| 80 | LUASOCKET_PRIVATE int auxiliar_checkboolean(lua_State *L, int objidx) { | 77 | int auxiliar_checkboolean(lua_State *L, int objidx) { |
| 81 | if (!lua_isboolean(L, objidx)) | 78 | if (!lua_isboolean(L, objidx)) |
| 82 | auxiliar_typeerror(L, objidx, lua_typename(L, LUA_TBOOLEAN)); | 79 | auxiliar_typeerror(L, objidx, lua_typename(L, LUA_TBOOLEAN)); |
| 83 | return lua_toboolean(L, objidx); | 80 | return lua_toboolean(L, objidx); |
| @@ -87,7 +84,7 @@ LUASOCKET_PRIVATE int auxiliar_checkboolean(lua_State *L, int objidx) { | |||
| 87 | * Return userdata pointer if object belongs to a given class, abort with | 84 | * Return userdata pointer if object belongs to a given class, abort with |
| 88 | * error otherwise | 85 | * error otherwise |
| 89 | \*-------------------------------------------------------------------------*/ | 86 | \*-------------------------------------------------------------------------*/ |
| 90 | LUASOCKET_PRIVATE void *auxiliar_checkclass(lua_State *L, const char *classname, int objidx) { | 87 | void *auxiliar_checkclass(lua_State *L, const char *classname, int objidx) { |
| 91 | void *data = auxiliar_getclassudata(L, classname, objidx); | 88 | void *data = auxiliar_getclassudata(L, classname, objidx); |
| 92 | if (!data) { | 89 | if (!data) { |
| 93 | char msg[45]; | 90 | char msg[45]; |
| @@ -101,7 +98,7 @@ LUASOCKET_PRIVATE void *auxiliar_checkclass(lua_State *L, const char *classname, | |||
| 101 | * Return userdata pointer if object belongs to a given group, abort with | 98 | * Return userdata pointer if object belongs to a given group, abort with |
| 102 | * error otherwise | 99 | * error otherwise |
| 103 | \*-------------------------------------------------------------------------*/ | 100 | \*-------------------------------------------------------------------------*/ |
| 104 | LUASOCKET_PRIVATE void *auxiliar_checkgroup(lua_State *L, const char *groupname, int objidx) { | 101 | void *auxiliar_checkgroup(lua_State *L, const char *groupname, int objidx) { |
| 105 | void *data = auxiliar_getgroupudata(L, groupname, objidx); | 102 | void *data = auxiliar_getgroupudata(L, groupname, objidx); |
| 106 | if (!data) { | 103 | if (!data) { |
| 107 | char msg[45]; | 104 | char msg[45]; |
| @@ -114,7 +111,7 @@ LUASOCKET_PRIVATE void *auxiliar_checkgroup(lua_State *L, const char *groupname, | |||
| 114 | /*-------------------------------------------------------------------------*\ | 111 | /*-------------------------------------------------------------------------*\ |
| 115 | * Set object class | 112 | * Set object class |
| 116 | \*-------------------------------------------------------------------------*/ | 113 | \*-------------------------------------------------------------------------*/ |
| 117 | LUASOCKET_PRIVATE void auxiliar_setclass(lua_State *L, const char *classname, int objidx) { | 114 | void auxiliar_setclass(lua_State *L, const char *classname, int objidx) { |
| 118 | luaL_getmetatable(L, classname); | 115 | luaL_getmetatable(L, classname); |
| 119 | if (objidx < 0) objidx--; | 116 | if (objidx < 0) objidx--; |
| 120 | lua_setmetatable(L, objidx); | 117 | lua_setmetatable(L, objidx); |
| @@ -124,7 +121,7 @@ LUASOCKET_PRIVATE void auxiliar_setclass(lua_State *L, const char *classname, in | |||
| 124 | * Get a userdata pointer if object belongs to a given group. Return NULL | 121 | * Get a userdata pointer if object belongs to a given group. Return NULL |
| 125 | * otherwise | 122 | * otherwise |
| 126 | \*-------------------------------------------------------------------------*/ | 123 | \*-------------------------------------------------------------------------*/ |
| 127 | LUASOCKET_PRIVATE void *auxiliar_getgroupudata(lua_State *L, const char *groupname, int objidx) { | 124 | void *auxiliar_getgroupudata(lua_State *L, const char *groupname, int objidx) { |
| 128 | if (!lua_getmetatable(L, objidx)) | 125 | if (!lua_getmetatable(L, objidx)) |
| 129 | return NULL; | 126 | return NULL; |
| 130 | lua_pushstring(L, groupname); | 127 | lua_pushstring(L, groupname); |
| @@ -142,7 +139,7 @@ LUASOCKET_PRIVATE void *auxiliar_getgroupudata(lua_State *L, const char *groupna | |||
| 142 | * Get a userdata pointer if object belongs to a given class. Return NULL | 139 | * Get a userdata pointer if object belongs to a given class. Return NULL |
| 143 | * otherwise | 140 | * otherwise |
| 144 | \*-------------------------------------------------------------------------*/ | 141 | \*-------------------------------------------------------------------------*/ |
| 145 | LUASOCKET_PRIVATE void *auxiliar_getclassudata(lua_State *L, const char *classname, int objidx) { | 142 | void *auxiliar_getclassudata(lua_State *L, const char *classname, int objidx) { |
| 146 | return luaL_testudata(L, objidx, classname); | 143 | return luaL_testudata(L, objidx, classname); |
| 147 | } | 144 | } |
| 148 | 145 | ||
| @@ -150,9 +147,8 @@ LUASOCKET_PRIVATE void *auxiliar_getclassudata(lua_State *L, const char *classna | |||
| 150 | * Throws error when argument does not have correct type. | 147 | * Throws error when argument does not have correct type. |
| 151 | * Used to be part of lauxlib in Lua 5.1, was dropped from 5.2. | 148 | * Used to be part of lauxlib in Lua 5.1, was dropped from 5.2. |
| 152 | \*-------------------------------------------------------------------------*/ | 149 | \*-------------------------------------------------------------------------*/ |
| 153 | LUASOCKET_PRIVATE int auxiliar_typeerror (lua_State *L, int narg, const char *tname) { | 150 | int auxiliar_typeerror (lua_State *L, int narg, const char *tname) { |
| 154 | const char *msg = lua_pushfstring(L, "%s expected, got %s", tname, | 151 | const char *msg = lua_pushfstring(L, "%s expected, got %s", tname, |
| 155 | luaL_typename(L, narg)); | 152 | luaL_typename(L, narg)); |
| 156 | return luaL_argerror(L, narg, msg); | 153 | return luaL_argerror(L, narg, msg); |
| 157 | } | 154 | } |
| 158 | |||
diff --git a/src/auxiliar.h b/src/auxiliar.h index 65511d4..234b00a 100644 --- a/src/auxiliar.h +++ b/src/auxiliar.h | |||
| @@ -29,20 +29,22 @@ | |||
| 29 | * reverse mapping are done using lauxlib. | 29 | * reverse mapping are done using lauxlib. |
| 30 | \*=========================================================================*/ | 30 | \*=========================================================================*/ |
| 31 | 31 | ||
| 32 | #include "lua.h" | 32 | #include "luasocket.h" |
| 33 | #include "lauxlib.h" | 33 | |
| 34 | #include "compat.h" | 34 | #pragma GCC visibility push(hidden) |
| 35 | 35 | ||
| 36 | int auxiliar_open(lua_State *L); | 36 | int auxiliar_open(lua_State *L); |
| 37 | void auxiliar_newclass(lua_State *L, const char *classname, luaL_Reg *func); | 37 | void auxiliar_newclass(lua_State *L, const char *classname, luaL_Reg *func); |
| 38 | int auxiliar_tostring(lua_State *L); | ||
| 38 | void auxiliar_add2group(lua_State *L, const char *classname, const char *group); | 39 | void auxiliar_add2group(lua_State *L, const char *classname, const char *group); |
| 39 | void auxiliar_setclass(lua_State *L, const char *classname, int objidx); | 40 | int auxiliar_checkboolean(lua_State *L, int objidx); |
| 40 | void *auxiliar_checkclass(lua_State *L, const char *classname, int objidx); | 41 | void *auxiliar_checkclass(lua_State *L, const char *classname, int objidx); |
| 41 | void *auxiliar_checkgroup(lua_State *L, const char *groupname, int objidx); | 42 | void *auxiliar_checkgroup(lua_State *L, const char *groupname, int objidx); |
| 42 | void *auxiliar_getclassudata(lua_State *L, const char *groupname, int objidx); | 43 | void auxiliar_setclass(lua_State *L, const char *classname, int objidx); |
| 43 | void *auxiliar_getgroupudata(lua_State *L, const char *groupname, int objidx); | 44 | void *auxiliar_getgroupudata(lua_State *L, const char *groupname, int objidx); |
| 44 | int auxiliar_checkboolean(lua_State *L, int objidx); | 45 | void *auxiliar_getclassudata(lua_State *L, const char *groupname, int objidx); |
| 45 | int auxiliar_tostring(lua_State *L); | ||
| 46 | int auxiliar_typeerror(lua_State *L, int narg, const char *tname); | 46 | int auxiliar_typeerror(lua_State *L, int narg, const char *tname); |
| 47 | 47 | ||
| 48 | #pragma GCC visibility pop | ||
| 49 | |||
| 48 | #endif /* AUXILIAR_H */ | 50 | #endif /* AUXILIAR_H */ |
