102 llm_message_node_bless (L, node); |
103 llm_message_node_bless (L, node); |
103 // XXX lm_message_node_unref (node); |
104 // XXX lm_message_node_unref (node); |
104 return 1; |
105 return 1; |
105 } |
106 } |
106 |
107 |
107 // XXX: add node methods here to allow omitting of :node(): element |
|
108 // BTW, we can jus adapt node methods to work on messages too and register them here also |
|
109 |
|
110 /// message:type |
108 /// message:type |
111 /// Returns two strings: message type and message sub type. |
109 /// Returns two strings: message type and message sub type. |
112 /// R: message type, message sub type |
110 /// R: message type, message sub type |
113 static int llm_message_kind (lua_State *L) |
111 static int llm_message_kind (lua_State *L) |
114 { |
112 { |
141 { "bless", llm_message_bless_lua }, |
139 { "bless", llm_message_bless_lua }, |
142 { NULL, NULL }, |
140 { NULL, NULL }, |
143 }; |
141 }; |
144 |
142 |
145 static const luaL_Reg llm_message_reg_m[] = { |
143 static const luaL_Reg llm_message_reg_m[] = { |
146 { "node", llm_message_node }, |
144 { "node", llm_message_node }, |
147 { "type", llm_message_kind }, |
145 { "type", llm_message_kind }, |
148 { "pointer", llm_message_pointer }, |
146 // These methods are common for message and message node |
149 { "__gc", llm_message_gc }, |
147 { "next", llm_message_node_next }, |
150 { NULL, NULL }, |
148 { "prev", llm_message_node_prev }, |
|
149 { "children", llm_message_node_children }, |
|
150 { "parent", llm_message_node_parent }, |
|
151 { "value", llm_message_node_value }, |
|
152 { "child", llm_message_node_child }, |
|
153 { "find_child", llm_message_node_find_child }, |
|
154 { "attribute", llm_message_node_attribute }, |
|
155 { "raw", llm_message_node_raw }, |
|
156 { "xml", llm_message_node_xml }, |
|
157 // End common methods |
|
158 { "pointer", llm_message_pointer }, |
|
159 { "__gc", llm_message_gc }, |
|
160 { NULL, NULL }, |
151 }; |
161 }; |
152 |
162 |
153 int luaopen_lm_message (lua_State *L) |
163 int luaopen_lm_message (lua_State *L) |
154 { |
164 { |
155 luaL_newmetatable (L, "loudmouth.message"); |
165 luaL_newmetatable (L, "loudmouth.message"); |