lm_types.c
changeset 7 5db1448eb857
parent 6 90073cbb535d
child 11 a8c6460d612b
equal deleted inserted replaced
6:90073cbb535d 7:5db1448eb857
    60 LLM_DEFINE (message_handler, LmMessageHandler)
    60 LLM_DEFINE (message_handler, LmMessageHandler)
    61 LLM_DEFINE (message_node, LmMessageNode)
    61 LLM_DEFINE (message_node, LmMessageNode)
    62 LLM_DEFINE (proxy, LmProxy)
    62 LLM_DEFINE (proxy, LmProxy)
    63 LLM_DEFINE (ssl, LmSSL)
    63 LLM_DEFINE (ssl, LmSSL)
    64 
    64 
       
    65 LmMessageNode *luaL_checkLmMessageNode (lua_State *L, int index)
       
    66 {
       
    67 	void *object;
       
    68 	luaL_argcheck (L, lua_type (L, index) == LUA_TUSERDATA, index, "loudmouth message or message node expected");
       
    69 	object = lua_touserdata (L, index);
       
    70 	lua_getmetatable (L, index);
       
    71 	luaL_getmetatable (L, "loudmouth.message");
       
    72 	luaL_getmetatable (L, "loudmouth.message_node");
       
    73 	if (lua_rawequal (L, -2, -3)) // Message
       
    74 		object = (void *) lm_message_get_node (((llm_message_t *) object)->message);
       
    75 	else if (lua_rawequal (L, -1, -3)) // Node
       
    76 		object = (void *) (((llm_message_node_t *) object)->message_node);
       
    77 	else
       
    78 		luaL_argerror (L, index, "loudmouth message or message node expected");
       
    79 	lua_pop (L, 3);
       
    80 	return (LmMessageNode *) object;
       
    81 }
       
    82 
    65 #undef LLM_DEFINE
    83 #undef LLM_DEFINE
    66 
    84