summaryrefslogtreecommitdiff
path: root/lib/skin_parser/skin_debug.c
diff options
context:
space:
mode:
authorJonathan Gordon <rockbox@jdgordon.info>2011-11-15 14:11:08 +0000
committerJonathan Gordon <rockbox@jdgordon.info>2011-11-15 14:11:08 +0000
commit9e07ef2b0adb8fca7e5a9e516397e533653f8836 (patch)
tree0a283550421917e52ee04068b84a464976f0c4f2 /lib/skin_parser/skin_debug.c
parent101693fd3047fb64e766580e80635a424fa25c4d (diff)
downloadrockbox-9e07ef2b0adb8fca7e5a9e516397e533653f8836.tar.gz
rockbox-9e07ef2b0adb8fca7e5a9e516397e533653f8836.zip
Use buflib for all skin engine allocations.
Massive thanks to Michael Chicoine and other testers for finding the early bugs. This removes all skin memory limitations git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30991 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'lib/skin_parser/skin_debug.c')
-rw-r--r--lib/skin_parser/skin_debug.c27
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 @@
31int debug_indent_level = 0; 31int debug_indent_level = 0;
32extern int skin_line; 32extern int skin_line;
33extern char* skin_start; 33extern char* skin_start;
34extern char* skin_buffer;
34 35
35/* Global error variables */ 36/* Global error variables */
36int error_line; 37int error_line;
@@ -38,6 +39,14 @@ int error_col;
38const char *error_line_start; 39const char *error_line_start;
39char* error_message; 40char* error_message;
40 41
42
43static inline struct skin_element*
44get_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 */
42void skin_error(enum skin_errorcode error, const char* cursor) 51void 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;