22 } |
22 } |
23 |
23 |
24 /// message_node:name |
24 /// message_node:name |
25 /// Gets a name of message node. |
25 /// Gets a name of message node. |
26 /// R: string |
26 /// R: string |
27 static int llm_message_node_name (lua_State *L) |
27 int llm_message_node_name (lua_State *L) |
28 { |
28 { |
29 llm_message_node_t *object = luaL_checklm_message_node (L, 1); |
29 LmMessageNode *node = luaL_checkLmMessageNode (L, 1); |
30 lua_pushstring (L, object->message_node->name); |
30 lua_pushstring (L, node->name); |
31 return 1; |
31 return 1; |
32 } |
32 } |
33 |
33 |
34 /// message_node:next |
34 /// message_node:next |
35 /// Gets next message node. |
35 /// Gets next message node. |
36 /// R: lm message node object or nil |
36 /// R: lm message node object or nil |
37 static int llm_message_node_next (lua_State *L) |
37 int llm_message_node_next (lua_State *L) |
38 { |
38 { |
39 llm_message_node_t *object = luaL_checklm_message_node (L, 1); |
39 LmMessageNode *node = luaL_checkLmMessageNode (L, 1); |
40 LmMessageNode *node = object->message_node->next; |
40 LmMessageNode *next = node->next; |
41 if (node) |
41 if (next) |
42 llm_message_node_bless (L, node); |
42 llm_message_node_bless (L, next); |
43 else |
43 else |
44 lua_pushnil (L); |
44 lua_pushnil (L); |
45 return 1; |
45 return 1; |
46 } |
46 } |
47 |
47 |
48 /// message_node:prev |
48 /// message_node:prev |
49 /// Gets previous message node. |
49 /// Gets previous message node. |
50 /// R: lm message node object or nil |
50 /// R: lm message node object or nil |
51 static int llm_message_node_prev (lua_State *L) |
51 int llm_message_node_prev (lua_State *L) |
52 { |
52 { |
53 llm_message_node_t *object = luaL_checklm_message_node (L, 1); |
53 LmMessageNode *node = luaL_checkLmMessageNode (L, 1); |
54 LmMessageNode *node = object->message_node->prev; |
54 LmMessageNode *prev = node->prev; |
55 if (node) |
55 if (prev) |
56 llm_message_node_bless (L, node); |
56 llm_message_node_bless (L, prev); |
57 else |
57 else |
58 lua_pushnil (L); |
58 lua_pushnil (L); |
59 return 1; |
59 return 1; |
60 } |
60 } |
61 |
61 |
62 /// message_node:children |
62 /// message_node:children |
63 /// Gets first child node (raw access used). |
63 /// Gets first child node (raw access used). |
64 /// R: lm message node object or nil |
64 /// R: lm message node object or nil |
65 static int llm_message_node_children (lua_State *L) |
65 int llm_message_node_children (lua_State *L) |
66 { |
66 { |
67 llm_message_node_t *object = luaL_checklm_message_node (L, 1); |
67 LmMessageNode *node = luaL_checkLmMessageNode (L, 1); |
68 LmMessageNode *node = object->message_node->children; |
68 LmMessageNode *child = node->children; |
69 if (node) |
69 if (child) |
70 llm_message_node_bless (L, node); |
70 llm_message_node_bless (L, child); |
71 else |
71 else |
72 lua_pushnil (L); |
72 lua_pushnil (L); |
73 return 1; |
73 return 1; |
74 } |
74 } |
75 |
75 |
76 /// message_node:parent |
76 /// message_node:parent |
77 /// Gets parent message node. |
77 /// Gets parent message node. |
78 /// R: lm message node object or nil |
78 /// R: lm message node object or nil |
79 static int llm_message_node_parent (lua_State *L) |
79 int llm_message_node_parent (lua_State *L) |
80 { |
80 { |
81 llm_message_node_t *object = luaL_checklm_message_node (L, 1); |
81 LmMessageNode *node = luaL_checkLmMessageNode (L, 1); |
82 LmMessageNode *node = object->message_node->parent; |
82 LmMessageNode *parent = node->parent; |
83 if (node) |
83 if (parent) |
84 llm_message_node_bless (L, node); |
84 llm_message_node_bless (L, parent); |
85 else |
85 else |
86 lua_pushnil (L); |
86 lua_pushnil (L); |
87 return 1; |
87 return 1; |
88 } |
88 } |
89 |
89 |
90 /// message_node:value |
90 /// message_node:value |
91 /// Gets or sets a value of message node. |
91 /// Gets or sets a value of message node. |
92 /// A: string (optional value) |
92 /// A: string (optional value) |
93 /// R: string (if called without arguments) or lm message node object |
93 /// R: string (if called without arguments) or lm message node object |
94 static int llm_message_node_value (lua_State *L) |
94 int llm_message_node_value (lua_State *L) |
95 { |
95 { |
96 llm_message_node_t *object = luaL_checklm_message_node (L, 1); |
96 LmMessageNode *node = luaL_checkLmMessageNode (L, 1); |
97 if (lua_gettop (L) > 1) { // Set |
97 if (lua_gettop (L) > 1) { // Set |
98 const char *value = luaL_checkstring (L, 2); |
98 const char *value = luaL_checkstring (L, 2); |
99 lm_message_node_set_value (object->message_node, value); |
99 lm_message_node_set_value (node, value); |
100 lua_pop (L, 1); |
100 lua_pop (L, 1); |
101 } else // Get |
101 } else // Get |
102 lua_pushstring (L, lm_message_node_get_value (object->message_node)); |
102 lua_pushstring (L, lm_message_node_get_value (node)); |
103 return 1; |
103 return 1; |
104 } |
104 } |
105 |
105 |
106 /// message_node:child |
106 /// message_node:child |
107 /// Gets or creates child node object with given name. |
107 /// Gets or creates child node object with given name. |
108 /// A: string (name), string (optional value) |
108 /// A: string (name), string (optional value) |
109 /// R: lm message node object or nil |
109 /// R: lm message node object or nil |
110 static int llm_message_node_child (lua_State *L) |
110 int llm_message_node_child (lua_State *L) |
111 { |
111 { |
112 llm_message_node_t *object = luaL_checklm_message_node (L, 1); |
112 LmMessageNode *node = luaL_checkLmMessageNode (L, 1); |
113 const char *name = luaL_checkstring (L, 2); |
113 const char *name = luaL_checkstring (L, 2); |
114 LmMessageNode *child; |
114 LmMessageNode *child; |
115 |
115 |
116 if (lua_gettop (L) > 2) // Add |
116 if (lua_gettop (L) > 2) // Add |
117 child = lm_message_node_add_child (object->message_node, name, |
117 child = lm_message_node_add_child (node, name, |
118 luaL_checkstring (L, 3)); |
118 luaL_checkstring (L, 3)); |
119 else { // Get |
119 else { // Get |
120 child = lm_message_node_get_child (object->message_node, name); |
120 child = lm_message_node_get_child (node, name); |
121 if (!child) { |
121 if (!child) { |
122 lua_pushnil (L); |
122 lua_pushnil (L); |
123 return 1; |
123 return 1; |
124 } |
124 } |
125 } |
125 } |
151 /// message_node:raw |
151 /// message_node:raw |
152 /// Gets or sets raw mode flag for node. |
152 /// Gets or sets raw mode flag for node. |
153 /// When set, value of node will not be escaped. |
153 /// When set, value of node will not be escaped. |
154 /// A: boolean (optional) |
154 /// A: boolean (optional) |
155 /// V: boolean (if called with no apguments) or lm message node object |
155 /// V: boolean (if called with no apguments) or lm message node object |
156 static int llm_message_node_raw (lua_State *L) |
156 int llm_message_node_raw (lua_State *L) |
157 { |
157 { |
158 llm_message_node_t *object = luaL_checklm_message_node (L, 1); |
158 LmMessageNode *node = luaL_checkLmMessageNode (L, 1); |
159 if (lua_gettop (L) > 1) { // Set |
159 if (lua_gettop (L) > 1) { // Set |
160 luaL_checktype (L, 2, LUA_TBOOLEAN); |
160 luaL_checktype (L, 2, LUA_TBOOLEAN); |
161 lm_message_node_set_raw_mode (object->message_node, lua_toboolean (L, 2)); |
161 lm_message_node_set_raw_mode (node, lua_toboolean (L, 2)); |
162 lua_pop (L, 1); |
162 lua_pop (L, 1); |
163 } else // Get |
163 } else // Get |
164 lua_pushboolean (L, lm_message_node_get_raw_mode (object->message_node)); |
164 lua_pushboolean (L, lm_message_node_get_raw_mode (node)); |
165 return 1; |
165 return 1; |
166 } |
166 } |
167 |
167 |
168 /// message_node:attribute |
168 /// message_node:attribute |
169 /// Gets or sets value of node attribute with a given name. |
169 /// Gets or sets value of node attribute with a given name. |
170 /// A: string (name), string (optional value) |
170 /// A: string (name), string (optional value) |
171 /// R: string (when called with one aprgument) or lm message node object |
171 /// R: string (when called with one aprgument) or lm message node object |
172 static int llm_message_node_attribute (lua_State *L) |
172 int llm_message_node_attribute (lua_State *L) |
173 { |
173 { |
174 llm_message_node_t *object = luaL_checklm_message_node (L, 1); |
174 LmMessageNode *node = luaL_checkLmMessageNode (L, 1); |
175 const char *name = luaL_checkstring (L, 2); |
175 const char *name = luaL_checkstring (L, 2); |
176 if (lua_gettop (L) > 2) { // Set |
176 if (lua_gettop (L) > 2) { // Set |
177 lm_message_node_set_attribute (object->message_node, name, luaL_checkstring (L, 3)); |
177 lm_message_node_set_attribute (node, name, luaL_checkstring (L, 3)); |
178 lua_pop (L, 2); |
178 lua_pop (L, 2); |
179 } else // Get |
179 } else // Get |
180 lua_pushstring (L, lm_message_node_get_attribute (object->message_node, name)); |
180 lua_pushstring (L, lm_message_node_get_attribute (node, name)); |
181 return 1; |
181 return 1; |
182 } |
182 } |
183 |
183 |
184 /// message_node:xml |
184 /// message_node:xml |
185 /// Returns node representation in xml. |
185 /// Returns node representation in xml. |
186 /// R: string |
186 /// R: string |
187 static int llm_message_node_xml (lua_State *L) |
187 int llm_message_node_xml (lua_State *L) |
188 { |
188 { |
189 llm_message_node_t *object = luaL_checklm_message_node (L, 1); |
189 LmMessageNode *node = luaL_checkLmMessageNode (L, 1); |
190 lua_pushstring (L, lm_message_node_to_string (object->message_node)); |
190 lua_pushstring (L, lm_message_node_to_string (node)); |
191 return 1; |
191 return 1; |
192 } |
192 } |
193 |
193 |
194 /// message_node:pointer |
194 /// message_node:pointer |
195 /// Returns pointer to underlying C structure. |
195 /// Returns pointer to underlying C structure. |