Skylark.patch
| uppsrc/Skylark/Compile.cpp (working copy) | ||
|---|---|---|
| 40 | 40 |
int args = 0; |
| 41 | 41 |
for(int i = 0; i < part.GetCount(); i++) {
|
| 42 | 42 |
int p = (byte)*part[i]; |
| 43 |
if(p == 255) // it's a ** node, we can supply unlimited number of arguments |
|
| 44 |
return -1; |
|
| 43 | 45 |
if(p >= 0 && p < 30) |
| 44 | 46 |
args = max(args, p + 1); |
| 45 | 47 |
} |
| uppsrc/Skylark/Dispatch.cpp (working copy) | ||
|---|---|---|
| 138 | 138 |
if(IsDigit(s[1])) |
| 139 | 139 |
linkargpos = argpos = minmax(atoi(~s + 1), 0, 30); |
| 140 | 140 |
else |
| 141 |
if(s[1] == '*') |
|
| 141 |
if(s[1] == '*') {
|
|
| 142 | 142 |
argpos = DISPATCH_VARARGS; |
| 143 |
linkargpos = 255; |
|
| 144 |
} |
|
| 143 | 145 |
q = DispatchMap.GetCount(); |
| 144 | 146 |
LLOG(" Adding arg " << argpos << ": " << q);
|
| 145 | 147 |
n.subnode.Add(Null, q); |
| 146 | 148 |
DispatchMap.Add(); |
| 147 | 149 |
DispatchMap[q].argpos = argpos; |
| 148 | 150 |
if(primary) |
| 149 |
linkpart.Add(String(linkargpos++, 1));
|
|
| 151 |
linkpart.Add(String(min(linkargpos++,255), 1));
|
|
| 150 | 152 |
} |
| 151 | 153 |
else {
|
| 152 | 154 |
if(primary) |
| uppsrc/Skylark/Http.cpp (working copy) | ||
|---|---|---|
| 326 | 326 |
{
|
| 327 | 327 |
LTIMING("MakeLink");
|
| 328 | 328 |
out.Cat("/");
|
| 329 |
Bits usedArgs; |
|
| 329 | 330 |
for(int i = 0; i < part.GetCount(); i++) {
|
| 331 |
int q = (byte)*part[i]; |
|
| 332 |
if(q < 32) |
|
| 333 |
usedArgs.Set(q); |
|
| 334 |
} |
|
| 335 |
for(int i = 0; i < part.GetCount(); i++) {
|
|
| 330 | 336 |
const String& p = part[i]; |
| 331 | 337 |
if(i) |
| 332 | 338 |
out << '/'; |
| ... | ... | |
| 336 | 342 |
sUrlEncode(out, AsString(arg[q])); |
| 337 | 343 |
} |
| 338 | 344 |
else |
| 345 |
if(q == 255) {
|
|
| 346 |
bool first = true; |
|
| 347 |
for(int j=0; j<arg.GetCount(); ++j) {
|
|
| 348 |
if (usedArgs.Get(j)) |
|
| 349 |
continue; |
|
| 350 |
if(!first) {
|
|
| 351 |
out << '/'; |
|
| 352 |
} |
|
| 353 |
first = false; |
|
| 354 |
sUrlEncode(out, AsString(arg[j])); |
|
| 355 |
} |
|
| 356 |
} |
|
| 357 |
else |
|
| 339 | 358 |
sUrlEncode(out, p); |
| 340 | 359 |
} |
| 341 | 360 |
bool get = false; |