mirror of
https://github.com/xomboverlord/ldc.git
synced 2026-01-12 10:53:14 +01:00
Changed array comparison runtime support to pass the array typeinfo instead of the element typeinfo. This allows a cleaner and faster implementation.
67 lines
1004 B
D
67 lines
1004 B
D
module calls1;
|
|
import tango.core.Vararg;
|
|
extern(C) int printf(char*, ...);
|
|
void main()
|
|
{
|
|
{int a = byVal1(3);}
|
|
{int a = void; byRef1(a);}
|
|
{char[] c = void; refType(c);}
|
|
{char[] c = void; refTypeByRef(c);}
|
|
{S s = void; structByVal(s);}
|
|
{S s = void; structByRef(s);}
|
|
{S s = void; structByPtr(&s);}
|
|
{printf("c-varargs %d %d %d\n", 1,2,3);}
|
|
{int i=3; float f=24.7; dvararg(i,f);}
|
|
{char[] s = "hello"; dvarargRefTy(s);}
|
|
{char[] ss = "hello world!"; dvarargRefTy(ss);}
|
|
}
|
|
|
|
int byVal1(int a)
|
|
{
|
|
return a;
|
|
}
|
|
|
|
void byRef1(ref int a)
|
|
{
|
|
a = 3;
|
|
}
|
|
|
|
void refType(char[] s)
|
|
{
|
|
}
|
|
|
|
void refTypeByRef(ref char[] s)
|
|
{
|
|
}
|
|
|
|
struct S
|
|
{
|
|
float f;
|
|
double d;
|
|
long l;
|
|
byte b;
|
|
}
|
|
|
|
void structByVal(S s)
|
|
{
|
|
}
|
|
|
|
void structByRef(ref S s)
|
|
{
|
|
}
|
|
|
|
void structByPtr(S* s)
|
|
{
|
|
}
|
|
|
|
void dvararg(...)
|
|
{
|
|
printf("%d %.1f\n", va_arg!(int)(_argptr), va_arg!(float)(_argptr));
|
|
}
|
|
|
|
void dvarargRefTy(...)
|
|
{
|
|
char[] s = va_arg!(char[])(_argptr);
|
|
printf("%.*s\n", s.length, s.ptr);
|
|
}
|