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 |