mirror of https://github.com/adamdruppe/arsd.git
const(int) arg support. i think
This commit is contained in:
parent
643d548245
commit
c4b25e9645
72
jsvar.d
72
jsvar.d
|
@ -675,16 +675,26 @@ struct var {
|
||||||
var ret;
|
var ret;
|
||||||
|
|
||||||
ParameterTypeTuple!T fargs;
|
ParameterTypeTuple!T fargs;
|
||||||
|
|
||||||
|
// FIXME: default args?
|
||||||
|
enum lol = static_foreach(fargs.length, 1, -1,
|
||||||
|
`t(`,
|
||||||
|
``, ` < args.length ? args[`,`].get!(typeof(fargs[`,`])) : typeof(fargs[`,`]).init,`,
|
||||||
|
`)`);
|
||||||
|
/+
|
||||||
foreach(idx, a; fargs) {
|
foreach(idx, a; fargs) {
|
||||||
if(idx == args.length)
|
if(idx == args.length)
|
||||||
break;
|
break;
|
||||||
cast(Unqual!(typeof(a))) fargs[idx] = args[idx].get!(typeof(a));
|
cast(Unqual!(typeof(a))) fargs[idx] = args[idx].get!(typeof(a));
|
||||||
}
|
}
|
||||||
|
+/
|
||||||
|
|
||||||
static if(is(ReturnType!t == void)) {
|
static if(is(ReturnType!t == void)) {
|
||||||
t(fargs);
|
//t(fargs);
|
||||||
|
mixin(lol ~ ";");
|
||||||
} else {
|
} else {
|
||||||
ret = t(fargs);
|
//ret = t(fargs);
|
||||||
|
ret = mixin(lol);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -2322,3 +2332,61 @@ bool appearsNumeric(string n) {
|
||||||
WrappedNativeObject wrapNativeObject(Struct)(Struct* obj) if(is(Struct == struct)) {
|
WrappedNativeObject wrapNativeObject(Struct)(Struct* obj) if(is(Struct == struct)) {
|
||||||
return null; // FIXME
|
return null; // FIXME
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private
|
||||||
|
string static_foreach(size_t length, int t_start_idx, int t_end_idx, string[] t...) pure {
|
||||||
|
assert(__ctfe);
|
||||||
|
int slen;
|
||||||
|
int tlen;
|
||||||
|
foreach(idx, i; t[0 .. t_start_idx])
|
||||||
|
slen += i.length;
|
||||||
|
foreach(idx, i; t[t_start_idx .. $ + t_end_idx]) {
|
||||||
|
if(idx)
|
||||||
|
tlen += 5;
|
||||||
|
tlen += i.length;
|
||||||
|
}
|
||||||
|
foreach(idx, i; t[$ + t_end_idx .. $])
|
||||||
|
slen += i.length;
|
||||||
|
|
||||||
|
char[] a = new char[](tlen * length + slen);
|
||||||
|
|
||||||
|
int loc;
|
||||||
|
char[5] stringCounter;
|
||||||
|
stringCounter[] = "00000"[];
|
||||||
|
|
||||||
|
foreach(part; t[0 .. t_start_idx]) {
|
||||||
|
a[loc .. loc + part.length] = part[];
|
||||||
|
loc += part.length;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach(i; 0 .. length) {
|
||||||
|
foreach(idx, part; t[t_start_idx .. $ + t_end_idx]) {
|
||||||
|
if(idx) {
|
||||||
|
a[loc .. loc + stringCounter.length] = stringCounter[];
|
||||||
|
loc += stringCounter.length;
|
||||||
|
}
|
||||||
|
a[loc .. loc + part.length] = part[];
|
||||||
|
loc += part.length;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto pos = stringCounter.length;
|
||||||
|
while(pos) {
|
||||||
|
pos--;
|
||||||
|
if(stringCounter[pos] == '9') {
|
||||||
|
stringCounter[pos] = '0';
|
||||||
|
} else {
|
||||||
|
stringCounter[pos] ++;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
while(pos)
|
||||||
|
stringCounter[--pos] = ' ';
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach(part; t[$ + t_end_idx .. $]) {
|
||||||
|
a[loc .. loc + part.length] = part[];
|
||||||
|
loc += part.length;
|
||||||
|
}
|
||||||
|
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue