summaryrefslogtreecommitdiff
path: root/utils/themeeditor/skin_debug.c
diff options
context:
space:
mode:
authorRobert Bieber <robby@bieberphoto.com>2010-05-25 15:19:52 +0000
committerRobert Bieber <robby@bieberphoto.com>2010-05-25 15:19:52 +0000
commitd5b24ddcc57857d9db5751c2f6e51f55633459e7 (patch)
tree1ee27a146004aed6788d38f688718783822cf1c1 /utils/themeeditor/skin_debug.c
parentfd9d7d0ac103dc27ac4c79bcd715c2985b0bc559 (diff)
downloadrockbox-d5b24ddcc57857d9db5751c2f6e51f55633459e7.tar.gz
rockbox-d5b24ddcc57857d9db5751c2f6e51f55633459e7.zip
Adding the new WPS parser, code works but need to build the tag table
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26281 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'utils/themeeditor/skin_debug.c')
-rw-r--r--utils/themeeditor/skin_debug.c226
1 files changed, 226 insertions, 0 deletions
diff --git a/utils/themeeditor/skin_debug.c b/utils/themeeditor/skin_debug.c
new file mode 100644
index 0000000000..f275b0403d
--- /dev/null
+++ b/utils/themeeditor/skin_debug.c
@@ -0,0 +1,226 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2010 Robert Bieber
11 *
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version.
16 *
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied.
19 *
20 ****************************************************************************/
21
22#include <stdio.h>
23#include <stdlib.h>
24#include <string.h>
25
26#include "skin_parser.h"
27#include "skin_debug.h"
28
29/* Global variables for debug output */
30int debug_indent_level = 0;
31extern int skin_line;
32
33/* Debugging functions */
34void skin_error(enum skin_errorcode error)
35{
36
37 fprintf(stderr, "Error on line %d: ", skin_line);
38
39 switch(error)
40 {
41 case MEMORY_LIMIT_EXCEEDED:
42 fprintf(stderr, "Memory limit exceeded\n");
43 break;
44 case NEWLINE_EXPECTED:
45 fprintf(stderr, "Newline expected\n");
46 break;
47 case ILLEGAL_TAG:
48 fprintf(stderr, "Illegal tag\n");
49 break;
50 case ARGLIST_EXPECTED:
51 fprintf(stderr, "Argument list expected\n");
52 break;
53 case TOO_MANY_ARGS:
54 fprintf(stderr, "Too many arguments given\n");
55 break;
56 case DEFAULT_NOT_ALLOWED:
57 fprintf(stderr, "Argument can not be set to default\n");
58 break;
59 case UNEXPECTED_NEWLINE:
60 fprintf(stderr, "Unexpected newline\n");
61 break;
62 case INSUFFICIENT_ARGS:
63 fprintf(stderr, "Not enough arguments\n");
64 break;
65 case INT_EXPECTED:
66 fprintf(stderr, "Expected integer\n");
67 break;
68 case SEPERATOR_EXPECTED:
69 fprintf(stderr, "Expected argument seperator\n");
70 break;
71 case CLOSE_EXPECTED:
72 fprintf(stderr, "Expected list close\n");
73 break;
74 case MULTILINE_EXPECTED:
75 fprintf(stderr, "Expected subline seperator\n");
76 break;
77 };
78
79}
80
81void skin_debug_tree(struct skin_element* root)
82{
83 int i;
84
85 struct skin_element* current = root;
86
87 while(current)
88 {
89 skin_debug_indent();
90
91 switch(current->type)
92 {
93
94 case TEXT:
95 printf("[ Plain text on line %d : %s ]\n", current->line,
96 current->text);
97 break;
98
99 case NEWLINE:
100 printf("[ Newline on line %d ]\n", current->line);
101 break;
102
103 case COMMENT:
104 printf("[ Comment on line %d: ", current->line);
105 for(i = 0; i < (int)strlen(current->text); i++)
106 {
107 if(current->text[i] == '\n')
108 printf("\\n");
109 else
110 printf("%c", current->text[i]);
111 }
112 printf(" ]\n");
113 break;
114
115 case TAG:
116 printf("[ %s tag on line %d with %d arguments\n", current->name,
117 current->line, current->params_count);
118 debug_indent_level++;
119 skin_debug_params(current->params_count, current->params);
120 debug_indent_level--;
121 skin_debug_indent();
122 printf("]\n");
123
124 break;
125
126 case SUBLINES:
127 printf("[ Alternator on line %d with %d sublines \n", current->line,
128 current->children_count);
129 debug_indent_level++;
130 for(i = 0; i < current->children_count; i++)
131 {
132 skin_debug_indent();
133 printf("[ Subline %d\n", i);
134
135 debug_indent_level++;
136 skin_debug_tree(current->children[i]);
137 debug_indent_level--;
138
139 skin_debug_indent();
140 printf("]\n");
141 }
142 debug_indent_level--;
143 skin_debug_indent();
144 printf("]\n");
145 break;
146
147 case CONDITIONAL:
148 printf("[ Conditional tag on line %d with %d enumerations \n",
149 current->line, current->children_count - 1);
150 debug_indent_level++;
151
152 skin_debug_indent();
153 printf("[ Condition tag \n");
154 debug_indent_level++;
155 skin_debug_tree(current->children[0]);
156 debug_indent_level--;
157 skin_debug_indent();
158 printf("]\n");
159
160 for(i = 1; i < current->children_count; i++)
161 {
162 skin_debug_indent();
163 printf("[ Enumeration %d\n", i - 1);
164 debug_indent_level++;
165 skin_debug_tree(current->children[i]);
166 debug_indent_level--;
167 skin_debug_indent();
168 printf("]\n");
169 }
170
171 debug_indent_level--;
172 skin_debug_indent();
173 printf("]\n");
174
175
176 break;
177
178 }
179
180 current = current->next;
181 }
182
183}
184
185void skin_debug_params(int count, struct skin_tag_parameter params[])
186{
187 int i;
188 for(i = 0; i < count; i++)
189 {
190
191 skin_debug_indent();
192 switch(params[i].type)
193 {
194 case DEFAULT:
195 printf("[-]");
196 break;
197
198 case STRING:
199 printf("[%s]", params[i].data.text);
200 break;
201
202 case NUMERIC:
203 printf("[%d]", params[i].data.numeric);
204 break;
205
206 case CODE:
207 printf("[ WPS Code: \n");
208 debug_indent_level++;
209 skin_debug_tree(params[i].data.code);
210 debug_indent_level--;
211 skin_debug_indent();
212 printf("]");
213 break;
214 }
215
216 printf("\n");
217
218 }
219}
220
221void skin_debug_indent()
222{
223 int i;
224 for(i = 0; i < debug_indent_level; i++)
225 printf(" ");
226}