52 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			52 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								#ifndef AUXILIAR_H
							 | 
						||
| 
								 | 
							
								#define AUXILIAR_H
							 | 
						||
| 
								 | 
							
								/*=========================================================================*\
							 | 
						||
| 
								 | 
							
								* Auxiliar routines for class hierarchy manipulation
							 | 
						||
| 
								 | 
							
								* LuaSocket toolkit (but completely independent of other LuaSocket modules)
							 | 
						||
| 
								 | 
							
								*
							 | 
						||
| 
								 | 
							
								* A LuaSocket class is a name associated with Lua metatables. A LuaSocket 
							 | 
						||
| 
								 | 
							
								* group is a name associated with a class. A class can belong to any number 
							 | 
						||
| 
								 | 
							
								* of groups. This module provides the functionality to:
							 | 
						||
| 
								 | 
							
								*
							 | 
						||
| 
								 | 
							
								*   - create new classes 
							 | 
						||
| 
								 | 
							
								*   - add classes to groups 
							 | 
						||
| 
								 | 
							
								*   - set the class of objects
							 | 
						||
| 
								 | 
							
								*   - check if an object belongs to a given class or group
							 | 
						||
| 
								 | 
							
								*   - get the userdata associated to objects
							 | 
						||
| 
								 | 
							
								*   - print objects in a pretty way
							 | 
						||
| 
								 | 
							
								*
							 | 
						||
| 
								 | 
							
								* LuaSocket class names follow the convention <module>{<class>}. Modules
							 | 
						||
| 
								 | 
							
								* can define any number of classes and groups. The module tcp.c, for
							 | 
						||
| 
								 | 
							
								* example, defines the classes tcp{master}, tcp{client} and tcp{server} and
							 | 
						||
| 
								 | 
							
								* the groups tcp{client,server} and tcp{any}. Module functions can then
							 | 
						||
| 
								 | 
							
								* perform type-checking on their arguments by either class or group.
							 | 
						||
| 
								 | 
							
								*
							 | 
						||
| 
								 | 
							
								* LuaSocket metatables define the __index metamethod as being a table. This
							 | 
						||
| 
								 | 
							
								* table has one field for each method supported by the class, and a field
							 | 
						||
| 
								 | 
							
								* "class" with the class name.
							 | 
						||
| 
								 | 
							
								*
							 | 
						||
| 
								 | 
							
								* The mapping from class name to the corresponding metatable and the
							 | 
						||
| 
								 | 
							
								* reverse mapping are done using lauxlib. 
							 | 
						||
| 
								 | 
							
								\*=========================================================================*/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include "lua.h"
							 | 
						||
| 
								 | 
							
								#include "lauxlib.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace NS_SLUA {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								int auxiliar_open(lua_State *L);
							 | 
						||
| 
								 | 
							
								void auxiliar_newclass(lua_State *L, const char *classname, luaL_Reg *func);
							 | 
						||
| 
								 | 
							
								void auxiliar_add2group(lua_State *L, const char *classname, const char *group);
							 | 
						||
| 
								 | 
							
								void auxiliar_setclass(lua_State *L, const char *classname, int objidx);
							 | 
						||
| 
								 | 
							
								void *auxiliar_checkclass(lua_State *L, const char *classname, int objidx);
							 | 
						||
| 
								 | 
							
								void *auxiliar_checkgroup(lua_State *L, const char *groupname, int objidx);
							 | 
						||
| 
								 | 
							
								void *auxiliar_getclassudata(lua_State *L, const char *groupname, int objidx);
							 | 
						||
| 
								 | 
							
								void *auxiliar_getgroupudata(lua_State *L, const char *groupname, int objidx);
							 | 
						||
| 
								 | 
							
								int auxiliar_checkboolean(lua_State *L, int objidx);
							 | 
						||
| 
								 | 
							
								int auxiliar_tostring(lua_State *L);
							 | 
						||
| 
								 | 
							
								int auxiliar_typeerror(lua_State *L, int narg, const char *tname);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								} // end NS_SLUA
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif /* AUXILIAR_H */
							 |