diff options
Diffstat (limited to 'lib/skin_parser/skin_debug.c')
-rw-r--r-- | lib/skin_parser/skin_debug.c | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/lib/skin_parser/skin_debug.c b/lib/skin_parser/skin_debug.c index 52f9127f1f..ecf238f1b1 100644 --- a/lib/skin_parser/skin_debug.c +++ b/lib/skin_parser/skin_debug.c | |||
@@ -31,6 +31,7 @@ | |||
31 | int debug_indent_level = 0; | 31 | int debug_indent_level = 0; |
32 | extern int skin_line; | 32 | extern int skin_line; |
33 | extern char* skin_start; | 33 | extern char* skin_start; |
34 | extern char* skin_buffer; | ||
34 | 35 | ||
35 | /* Global error variables */ | 36 | /* Global error variables */ |
36 | int error_line; | 37 | int error_line; |
@@ -38,6 +39,14 @@ int error_col; | |||
38 | const char *error_line_start; | 39 | const char *error_line_start; |
39 | char* error_message; | 40 | char* error_message; |
40 | 41 | ||
42 | |||
43 | static inline struct skin_element* | ||
44 | get_child(OFFSETTYPE(struct skin_element**) children, int child) | ||
45 | { | ||
46 | struct skin_element **kids = SKINOFFSETTOPTR(skin_buffer, children); | ||
47 | return kids[child]; | ||
48 | } | ||
49 | |||
41 | /* Debugging functions */ | 50 | /* Debugging functions */ |
42 | void skin_error(enum skin_errorcode error, const char* cursor) | 51 | void skin_error(enum skin_errorcode error, const char* cursor) |
43 | { | 52 | { |
@@ -144,14 +153,14 @@ void skin_debug_tree(struct skin_element* root) | |||
144 | printf("{ Viewport \n"); | 153 | printf("{ Viewport \n"); |
145 | 154 | ||
146 | debug_indent_level++; | 155 | debug_indent_level++; |
147 | skin_debug_tree(current->children[0]); | 156 | skin_debug_tree(get_child(current->children, 0)); |
148 | debug_indent_level--; | 157 | debug_indent_level--; |
149 | 158 | ||
150 | printf("}"); | 159 | printf("}"); |
151 | break; | 160 | break; |
152 | 161 | ||
153 | case TEXT: | 162 | case TEXT: |
154 | text = current->data; | 163 | text = SKINOFFSETTOPTR(skin_buffer, current->data); |
155 | printf("* Plain text on line %d: \"%s\"\n", current->line, text); | 164 | printf("* Plain text on line %d: \"%s\"\n", current->line, text); |
156 | break; | 165 | break; |
157 | 166 | ||
@@ -166,7 +175,7 @@ void skin_debug_tree(struct skin_element* root) | |||
166 | current->tag->name, | 175 | current->tag->name, |
167 | current->line, current->params_count); | 176 | current->line, current->params_count); |
168 | debug_indent_level++; | 177 | debug_indent_level++; |
169 | skin_debug_params(current->params_count, current->params); | 178 | skin_debug_params(current->params_count, SKINOFFSETTOPTR(skin_buffer, current->params)); |
170 | debug_indent_level--; | 179 | debug_indent_level--; |
171 | skin_debug_indent(); | 180 | skin_debug_indent(); |
172 | printf(")\n"); | 181 | printf(")\n"); |
@@ -185,7 +194,7 @@ void skin_debug_tree(struct skin_element* root) | |||
185 | debug_indent_level++; | 194 | debug_indent_level++; |
186 | for(i = 0; i < current->children_count; i++) | 195 | for(i = 0; i < current->children_count; i++) |
187 | { | 196 | { |
188 | skin_debug_tree(current->children[i]); | 197 | skin_debug_tree(get_child(current->children, i)); |
189 | } | 198 | } |
190 | debug_indent_level--; | 199 | debug_indent_level--; |
191 | 200 | ||
@@ -203,7 +212,7 @@ void skin_debug_tree(struct skin_element* root) | |||
203 | skin_debug_indent(); | 212 | skin_debug_indent(); |
204 | printf("[ Enumeration %d\n", i); | 213 | printf("[ Enumeration %d\n", i); |
205 | debug_indent_level++; | 214 | debug_indent_level++; |
206 | skin_debug_tree(current->children[i]); | 215 | skin_debug_tree(get_child(current->children, i)); |
207 | debug_indent_level--; | 216 | debug_indent_level--; |
208 | skin_debug_indent(); | 217 | skin_debug_indent(); |
209 | printf("]\n"); | 218 | printf("]\n"); |
@@ -221,7 +230,7 @@ void skin_debug_tree(struct skin_element* root) | |||
221 | 230 | ||
222 | debug_indent_level++; | 231 | debug_indent_level++; |
223 | if (current->children) | 232 | if (current->children) |
224 | skin_debug_tree(current->children[0]); | 233 | skin_debug_tree(get_child(current->children, 0)); |
225 | debug_indent_level--; | 234 | debug_indent_level--; |
226 | 235 | ||
227 | skin_debug_indent(); | 236 | skin_debug_indent(); |
@@ -229,7 +238,7 @@ void skin_debug_tree(struct skin_element* root) | |||
229 | break; | 238 | break; |
230 | } | 239 | } |
231 | 240 | ||
232 | current = current->next; | 241 | current = SKINOFFSETTOPTR(skin_buffer, current->next); |
233 | } | 242 | } |
234 | 243 | ||
235 | } | 244 | } |
@@ -248,7 +257,7 @@ void skin_debug_params(int count, struct skin_tag_parameter params[]) | |||
248 | break; | 257 | break; |
249 | 258 | ||
250 | case STRING: | 259 | case STRING: |
251 | printf("string: \"%s\"", params[i].data.text); | 260 | printf("string: \"%s\"", SKINOFFSETTOPTR(skin_buffer, params[i].data.text)); |
252 | break; | 261 | break; |
253 | 262 | ||
254 | case INTEGER: | 263 | case INTEGER: |
@@ -263,7 +272,7 @@ void skin_debug_params(int count, struct skin_tag_parameter params[]) | |||
263 | case CODE: | 272 | case CODE: |
264 | printf("Skin Code: \n"); | 273 | printf("Skin Code: \n"); |
265 | debug_indent_level++; | 274 | debug_indent_level++; |
266 | skin_debug_tree(params[i].data.code); | 275 | skin_debug_tree(SKINOFFSETTOPTR(skin_buffer, params[i].data.code)); |
267 | debug_indent_level--; | 276 | debug_indent_level--; |
268 | skin_debug_indent(); | 277 | skin_debug_indent(); |
269 | break; | 278 | break; |