| 1 | #ifndef AUXILIAR_H | 
|---|
| 2 | #define AUXILIAR_H | 
|---|
| 3 | /*=========================================================================*\ | 
|---|
| 4 | * Auxiliar routines for class hierarchy manipulation | 
|---|
| 5 | * LuaSocket toolkit (but completely independent of other LuaSocket modules) | 
|---|
| 6 | * | 
|---|
| 7 | * A LuaSocket class is a name associated with Lua metatables. A LuaSocket | 
|---|
| 8 | * group is a name associated with a class. A class can belong to any number | 
|---|
| 9 | * of groups. This module provides the functionality to: | 
|---|
| 10 | * | 
|---|
| 11 | *   - create new classes | 
|---|
| 12 | *   - add classes to groups | 
|---|
| 13 | *   - set the class of objects | 
|---|
| 14 | *   - check if an object belongs to a given class or group | 
|---|
| 15 | *   - get the userdata associated to objects | 
|---|
| 16 | *   - print objects in a pretty way | 
|---|
| 17 | * | 
|---|
| 18 | * LuaSocket class names follow the convention <module>{<class>}. Modules | 
|---|
| 19 | * can define any number of classes and groups. The module tcp.c, for | 
|---|
| 20 | * example, defines the classes tcp{master}, tcp{client} and tcp{server} and | 
|---|
| 21 | * the groups tcp{client,server} and tcp{any}. Module functions can then | 
|---|
| 22 | * perform type-checking on their arguments by either class or group. | 
|---|
| 23 | * | 
|---|
| 24 | * LuaSocket metatables define the __index metamethod as being a table. This | 
|---|
| 25 | * table has one field for each method supported by the class, and a field | 
|---|
| 26 | * "class" with the class name. | 
|---|
| 27 | * | 
|---|
| 28 | * The mapping from class name to the corresponding metatable and the | 
|---|
| 29 | * reverse mapping are done using lauxlib. | 
|---|
| 30 | \*=========================================================================*/ | 
|---|
| 31 |  | 
|---|
| 32 | #include "lua.h" | 
|---|
| 33 | #include "lauxlib.h" | 
|---|
| 34 | #include "compat.h" | 
|---|
| 35 |  | 
|---|
| 36 | int auxiliar_open(lua_State *L); | 
|---|
| 37 | void auxiliar_newclass(lua_State *L, const char *classname, luaL_Reg *func); | 
|---|
| 38 | 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 | 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_getclassudata(lua_State *L, const char *groupname, int objidx); | 
|---|
| 43 | void *auxiliar_getgroupudata(lua_State *L, const char *groupname, int objidx); | 
|---|
| 44 | int auxiliar_checkboolean(lua_State *L, int objidx); | 
|---|
| 45 | int auxiliar_tostring(lua_State *L); | 
|---|
| 46 | int auxiliar_typeerror(lua_State *L, int narg, const char *tname); | 
|---|
| 47 |  | 
|---|
| 48 | #endif /* AUXILIAR_H */ | 
|---|
| 49 |  | 
|---|