Changeset 214
- Timestamp:
- 07/09/06 04:59:31 (2 years ago)
- Files:
-
- trunk/meta/demangle.d (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/meta/demangle.d
r212 r214 146 146 template getLname(char [] str) 147 147 { 148 static if (str.length <=10|| !isdigit!( (str[1]) ) )148 static if (str.length <= 9+1 || !isdigit!( (str[1]) ) ) 149 149 const char [] getLname = str[1..(str[0]-'0' + 1)]; 150 else static if (str.length <=100|| !isdigit!( (str[2]) ))150 else static if (str.length <= 99+2 || !isdigit!( (str[2]) )) 151 151 const char [] getLname = str[2..((str[0]-'0')*10 + str[1]-'0'+ 2)]; 152 else static if (str.length <= 999+3 || !isdigit!( (str[3]) )) 153 const char [] getLname = 154 str[3..((str[0]-'0')*100 + (str[1]-'0')*10 + str[2]-'0' + 3)]; 152 155 else 153 156 const char [] getLname = 154 str[ 3..((str[0]-'0')*100 + (str[1]-'0')*10 + str[0]-'0' + 3)];157 str[4..((str[0]-'0')*1000 + (str[1]-'0')*100 + (str[2]-'0')*10 + (str[3]-'0') + 4)]; 155 158 } 156 159 … … 229 232 static if (str.length==0) 230 233 const int getLnameConsumed=0; 231 else static if (str.length <=10|| !isdigit!( (str[1]) ) )234 else static if (str.length <= (9+1) || !isdigit!( (str[1]) ) ) 232 235 const int getLnameConsumed = 1 + str[0]-'0'; 233 else static if (str.length <=100|| !isdigit!( (str[2]) ))236 else static if (str.length <= (99+2) || !isdigit!( (str[2]) )) 234 237 const int getLnameConsumed = (str[0]-'0')*10 + str[1]-'0' + 2; 235 else 236 const int getLnameConsumed = (str[0]-'0')*100 + (str[1]-'0')*10 + str[0]-'0' + 3; 238 else static if (str.length <= (999+3) || !isdigit!( (str[3]) )) 239 const int getLnameConsumed = (str[0]-'0')*100 + (str[1]-'0')*10 + str[2]-'0' + 3; 240 else 241 const int getLnameConsumed = (str[0]-'0')*1000 + (str[1]-'0')*100 + (str[2]-'0')*10 + (str[3]-'0') + 4; 237 242 } 238 243
