* TPtrWrapper for Delphi compatibility

This commit is contained in:
Michaël Van Canneyt 2023-07-09 15:05:53 +02:00
parent b48c67f49f
commit b121045d4a
2 changed files with 67 additions and 0 deletions

View File

@ -1238,3 +1238,48 @@
{$i except.inc}
{$endif}
{$endif FPC_HAS_FEATURE_EXCEPTIONS}
{****************************************************************************
Various Delphi constructs
****************************************************************************}
function TPtrWrapper.ToPointer: Pointer;
begin
Result:=Value;
end;
class function TPtrWrapper.GetNilValue: TPtrWrapper; inline; static;
begin
end;
constructor TPtrWrapper.Create(AValue: PtrInt); overload;
begin
Value:=Pointer(aValue);
end;
constructor TPtrWrapper.Create(AValue: Pointer); overload;
begin
Value:=aValue;
end;
function TPtrWrapper.ToInteger: PtrInt;
begin
Result:=PtrInt(Value);
end;
operator =(Left, Right: TPtrWrapper) c : Boolean;
begin
c:=(Left.Value=Right.Value);
end;
operator <>(Left, Right: TPtrWrapper) c : Boolean;
begin
Result:=(Left.Value<>Right.Value);
end;

View File

@ -581,3 +581,25 @@
HashValue : LongWord;
end;
{$endif FPC_HAS_FEATURE_RESOURCES}
{*****************************************************************************
Various Delphi elements
*****************************************************************************}
Type
TPtrWrapper = record
private
Value: PByte;
class function GetNilValue: TPtrWrapper; inline; static;
public
constructor Create(AValue: PtrInt); overload;
constructor Create(AValue: Pointer); overload;
function ToPointer: Pointer;
function ToInteger: PtrInt;
class property NilValue: TPtrWrapper read GetNilValue;
// class operator Equal(Left, Right: TPtrWrapper): Boolean;
// class operator NotEqual(Left, Right: TPtrWrapper): Boolean;
end;
operator =(Left, Right: TPtrWrapper) c : Boolean;
operator <>(Left, Right: TPtrWrapper) c : Boolean;