fpc/tests/test/cg/tcppcl1.pp
2018-05-28 08:11:42 +00:00

97 lines
2.6 KiB
ObjectPascal

{ %FILES=cpptcl1.o }
{%TARGET=linux,darwin,go32v2}
{ Test the C++ name mangling for different parameter combinations }
program tcppclass1;
{$mode objfpc}
{$L cpptcl1.o}
type
TestClass = cppclass external
class procedure Test1;
{ boolean }
class procedure Test2(aArg1: Boolean);
{ unsigned ordinals }
class procedure Test3(aArg1: Byte);
class procedure Test4(aArg1: Word);
class procedure Test5(aArg1: LongWord);
class procedure Test6(aArg1: QWord);
{ signed ordinals }
class procedure Test7(aArg1: ShortInt);
class procedure Test8(aArg1: SmallInt);
class procedure Test9(aArg1: LongInt);
class procedure Test10(aArg1: Int64);
{ floating point }
class procedure Test11(aArg1: Single);
class procedure Test12(aArg1: Double);
{ chars }
class procedure Test13(aArg1: Char);
class procedure Test14(aArg1: WideChar);
{ pointers }
class procedure Test15(aArg1: Pointer);
class procedure Test16(aArg1: PChar);
class procedure Test17(aArg1: PWideChar);
class procedure Test18(aArg1: PLongWord);
class procedure Test19(aArg1: PSingle);
{ by reference }
class procedure Test20(var aArg1: LongInt);
class procedure Test21(var aArg1: LongWord);
class procedure Test22(var aArg1: Pointer);
class procedure Test23(var aArg1: Char);
class procedure Test24(var aArg1: Single);
{ combinations }
class procedure Test25(aArg1: Byte; aArg2: Word; aArg3: LongWord; aArg4: QWord);
class procedure Test26(aArg1: Pointer; var aArg2: Char; aArg3: Single);
end;
const
HelloWorld = 'Hello World';
var
li: LongInt = -42;
lw: LongWord = 42;
p: Pointer = Nil;
c: Char = 'a';
s: Single = 3.1416;
begin
try
TestClass.Test1;
{ boolean}
TestClass.Test2(True);
{ unsigned ordinals }
TestClass.Test3(42);
TestClass.Test4(42);
TestClass.Test5(42);
TestClass.Test6(42);
{ signed ordinals }
TestClass.Test7(-42);
TestClass.Test8(-42);
TestClass.Test9(-42);
TestClass.Test10(-42);
{ floating point }
TestClass.Test11(3.1416);
TestClass.Test12(3.1416);
{ chars }
TestClass.Test13('a');
TestClass.Test14('a');
{ pointers }
TestClass.Test15(Nil);
TestClass.Test16(Nil);
TestClass.Test17(Nil);
TestClass.Test18(Nil);
TestClass.Test19(Nil);
{ by reference }
TestClass.Test20(li);
TestClass.Test21(lw);
TestClass.Test22(p);
TestClass.Test23(c);
TestClass.Test24(s);
{ combinations }
TestClass.Test25(42, 42, 42, 42);
TestClass.Test26(Nil, c, 3.1416);
except
ExitCode := 1;
writeln('error');
end;
end.