Repository URL to install this package:
|
Version:
3.0.0 ▾
|
{ %target=darwin }
{ %cpu=powerpc,i386,powerpc64,x86_64 }
{$mode objfpc}{$H+}
{$modeswitch objectivec1}
program Start;
uses
ctypes,
CocoaAll;
type
unichar=word;
punichar = ^unichar;
MyObject = objcclass(NSObject)
procedure receiveByVar_length(var chars : unichar; length : culong); message 'receiveByVar:length:';
procedure receiveByPtr_length(chars : punichar; length : culong); message 'receiveByPtr:length:';
end;
var
c: array[0..1] of unichar;
procedure MyObject.receiveByVar_length(var chars : unichar; length : culong);
begin
Writeln('MyObject.receiveByVar_length');
writeln('address of `chars`: 0x', HexStr(Pointer(@chars)));
Writeln;
if @chars<>@c[0] then
halt(1);
end;
procedure MyObject.receiveByPtr_length(chars : punichar; length : culong);
begin
Writeln('MyObject.receiveByPtr_length');
writeln('address of `chars`: 0x', HexStr(Pointer(chars)));
Writeln;
if chars<>@c[0] then
halt(2);
end;
procedure passByVar(var chars : unichar);
begin
Writeln('passByVar');
writeln('address of `chars`: 0x', HexStr(Pointer(@chars)));
Writeln;
if @chars<>@c[0] then
halt(3);
end;
procedure passByPtr(chars : punichar);
begin
Writeln('passByPtr');
writeln('address of `chars`: 0x', HexStr(Pointer(chars)));
Writeln;
if chars<>@c[0] then
halt(1);
end;
procedure MyVarTest;
var
o: MyObject;
begin
o := MyObject(MyObject.alloc).init;
o.receiveByVar_length(c[0], 1);
o.receiveByPtr_length(@c[0], 1);
passByVar(c[0]);
passByPtr(@c[0]);
o.release
end;
begin
c[0]:=unichar(widechar('c'));
c[1]:=unichar(widechar(#0));
MyVarTest;
end.