summaryrefslogtreecommitdiff
path: root/development/translation
authorzecke <zecke>2003-08-31 19:06:45 (UTC)
committer zecke <zecke>2003-08-31 19:06:45 (UTC)
commit2696413e75a401899764f244c8c24026999fdb9d (patch) (unidiff)
tree630522a33052ea7d337bc76f624be0d7e142ff04 /development/translation
parentce4a99860d28e003871994cca88a82133c1921a7 (diff)
downloadopie-2696413e75a401899764f244c8c24026999fdb9d.zip
opie-2696413e75a401899764f244c8c24026999fdb9d.tar.gz
opie-2696413e75a401899764f244c8c24026999fdb9d.tar.bz2
recognize i18n as well
Diffstat (limited to 'development/translation') (more/less context) (ignore whitespace changes)
-rw-r--r--development/translation/opie-lupdate/fetchtr.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/development/translation/opie-lupdate/fetchtr.cpp b/development/translation/opie-lupdate/fetchtr.cpp
index eb25555..d1f5881 100644
--- a/development/translation/opie-lupdate/fetchtr.cpp
+++ b/development/translation/opie-lupdate/fetchtr.cpp
@@ -115,128 +115,131 @@ static void startTokenizer( const char *fileName, int (*getCharFunc)() )
115{ 115{
116 yyInPos = 0; 116 yyInPos = 0;
117 getChar = getCharFunc; 117 getChar = getCharFunc;
118 118
119 yyFileName = fileName; 119 yyFileName = fileName;
120 yyCh = getChar(); 120 yyCh = getChar();
121 yySavedBraceDepth.clear(); 121 yySavedBraceDepth.clear();
122 yyBraceDepth = 0; 122 yyBraceDepth = 0;
123 yyParenDepth = 0; 123 yyParenDepth = 0;
124 yyCurLineNo = 1; 124 yyCurLineNo = 1;
125} 125}
126 126
127static int getToken() 127static int getToken()
128{ 128{
129 const char tab[] = "abfnrtv"; 129 const char tab[] = "abfnrtv";
130 const char backTab[] = "\a\b\f\n\r\t\v"; 130 const char backTab[] = "\a\b\f\n\r\t\v";
131 uint n; 131 uint n;
132 132
133 yyIdentLen = 0; 133 yyIdentLen = 0;
134 yyCommentLen = 0; 134 yyCommentLen = 0;
135 yyStringLen = 0; 135 yyStringLen = 0;
136 136
137 while ( yyCh != EOF ) { 137 while ( yyCh != EOF ) {
138 yyLineNo = yyCurLineNo; 138 yyLineNo = yyCurLineNo;
139 139
140 if ( isalpha(yyCh) || yyCh == '_' ) { 140 if ( isalpha(yyCh) || yyCh == '_' ) {
141 do { 141 do {
142 if ( yyIdentLen < sizeof(yyIdent) - 1 ) 142 if ( yyIdentLen < sizeof(yyIdent) - 1 )
143 yyIdent[yyIdentLen++] = (char) yyCh; 143 yyIdent[yyIdentLen++] = (char) yyCh;
144 yyCh = getChar(); 144 yyCh = getChar();
145 } while ( isalnum(yyCh) || yyCh == '_' ); 145 } while ( isalnum(yyCh) || yyCh == '_' );
146 yyIdent[yyIdentLen] = '\0'; 146 yyIdent[yyIdentLen] = '\0';
147 147
148 switch ( yyIdent[0] ) { 148 switch ( yyIdent[0] ) {
149 case 'Q': 149 case 'Q':
150 if ( strcmp(yyIdent + 1, "_OBJECT") == 0 ) { 150 if ( strcmp(yyIdent + 1, "_OBJECT") == 0 ) {
151 return Tok_Q_OBJECT; 151 return Tok_Q_OBJECT;
152 } else if ( strcmp(yyIdent + 1, "T_TR_NOOP") == 0 ) { 152 } else if ( strcmp(yyIdent + 1, "T_TR_NOOP") == 0 ) {
153 return Tok_tr; 153 return Tok_tr;
154 } else if ( strcmp(yyIdent + 1, "T_TRANSLATE_NOOP") == 0 ) { 154 } else if ( strcmp(yyIdent + 1, "T_TRANSLATE_NOOP") == 0 ) {
155 return Tok_translate; 155 return Tok_translate;
156 } 156 }
157 break; 157 break;
158 case 'T': 158 case 'T':
159 // TR() for when all else fails 159 // TR() for when all else fails
160 if ( qstricmp(yyIdent + 1, "R") == 0 ) 160 if ( qstricmp(yyIdent + 1, "R") == 0 )
161 return Tok_tr; 161 return Tok_tr;
162 break; 162 break;
163 case 'c': 163 case 'c':
164 if ( strcmp(yyIdent + 1, "lass") == 0 ) 164 if ( strcmp(yyIdent + 1, "lass") == 0 )
165 return Tok_class; 165 return Tok_class;
166 break; 166 break;
167 case 'n': 167 case 'n':
168 if ( strcmp(yyIdent + 1, "amespace") == 0 ) 168 if ( strcmp(yyIdent + 1, "amespace") == 0 )
169 return Tok_namespace; 169 return Tok_namespace;
170 break; 170 break;
171 case 'r': 171 case 'r':
172 if ( strcmp(yyIdent + 1, "eturn") == 0 ) 172 if ( strcmp(yyIdent + 1, "eturn") == 0 )
173 return Tok_return; 173 return Tok_return;
174 break; 174 break;
175 case 's': 175 case 's':
176 if ( strcmp(yyIdent + 1, "truct") == 0 ) 176 if ( strcmp(yyIdent + 1, "truct") == 0 )
177 return Tok_class; 177 return Tok_class;
178 break; 178 break;
179 case 'i':
180 if( strcmp(yyIdent + 1, "18n") == 0 )
181 return Tok_tr;
179 case 't': 182 case 't':
180 if ( strcmp(yyIdent + 1, "r") == 0 ) { 183 if ( strcmp(yyIdent + 1, "r") == 0 ) {
181 return Tok_tr; 184 return Tok_tr;
182 } else if ( qstrcmp(yyIdent + 1, "rUtf8") == 0 ) { 185 } else if ( qstrcmp(yyIdent + 1, "rUtf8") == 0 ) {
183 return Tok_trUtf8; 186 return Tok_trUtf8;
184 } else if ( qstrcmp(yyIdent + 1, "ranslate") == 0 ) { 187 } else if ( qstrcmp(yyIdent + 1, "ranslate") == 0 ) {
185 return Tok_translate; 188 return Tok_translate;
186 } 189 }
187 } 190 }
188 return Tok_Ident; 191 return Tok_Ident;
189 } else { 192 } else {
190 switch ( yyCh ) { 193 switch ( yyCh ) {
191 case '#': 194 case '#':
192 /* 195 /*
193 Early versions of lupdate complained about 196 Early versions of lupdate complained about
194 unbalanced braces in the following code: 197 unbalanced braces in the following code:
195 198
196 #ifdef ALPHA 199 #ifdef ALPHA
197 while ( beta ) { 200 while ( beta ) {
198 #else 201 #else
199 while ( gamma ) { 202 while ( gamma ) {
200 #endif 203 #endif
201 delta; 204 delta;
202 } 205 }
203 206
204 The code contains, indeed, two opening braces for 207 The code contains, indeed, two opening braces for
205 one closing brace; yet there's no reason to panic. 208 one closing brace; yet there's no reason to panic.
206 209
207 The solution is to remember yyBraceDepth as it was 210 The solution is to remember yyBraceDepth as it was
208 when #if, #ifdef or #ifndef was met, and to set 211 when #if, #ifdef or #ifndef was met, and to set
209 yyBraceDepth to that value when meeting #elif or 212 yyBraceDepth to that value when meeting #elif or
210 #else. 213 #else.
211 */ 214 */
212 do { 215 do {
213 yyCh = getChar(); 216 yyCh = getChar();
214 } while ( isspace(yyCh) && yyCh != '\n' ); 217 } while ( isspace(yyCh) && yyCh != '\n' );
215 218
216 switch ( yyCh ) { 219 switch ( yyCh ) {
217 case 'i': 220 case 'i':
218 yyCh = getChar(); 221 yyCh = getChar();
219 if ( yyCh == 'f' ) { 222 if ( yyCh == 'f' ) {
220 // if, ifdef, ifndef 223 // if, ifdef, ifndef
221 yySavedBraceDepth.push( yyBraceDepth ); 224 yySavedBraceDepth.push( yyBraceDepth );
222 } 225 }
223 break; 226 break;
224 case 'e': 227 case 'e':
225 yyCh = getChar(); 228 yyCh = getChar();
226 if ( yyCh == 'l' ) { 229 if ( yyCh == 'l' ) {
227 // elif, else 230 // elif, else
228 if ( !yySavedBraceDepth.isEmpty() ) 231 if ( !yySavedBraceDepth.isEmpty() )
229 yyBraceDepth = yySavedBraceDepth.top(); 232 yyBraceDepth = yySavedBraceDepth.top();
230 } else if ( yyCh == 'n' ) { 233 } else if ( yyCh == 'n' ) {
231 // endif 234 // endif
232 if ( !yySavedBraceDepth.isEmpty() ) 235 if ( !yySavedBraceDepth.isEmpty() )
233 yySavedBraceDepth.pop(); 236 yySavedBraceDepth.pop();
234 } 237 }
235 } 238 }
236 while ( isalnum(yyCh) || yyCh == '_' ) 239 while ( isalnum(yyCh) || yyCh == '_' )
237 yyCh = getChar(); 240 yyCh = getChar();
238 break; 241 break;
239 case '/': 242 case '/':
240 yyCh = getChar(); 243 yyCh = getChar();
241 if ( yyCh == '/' ) { 244 if ( yyCh == '/' ) {
242 do { 245 do {