Refactoring

This commit is contained in:
Michael Schimmel
2025-06-05 23:46:09 +02:00
parent a57b2d50e4
commit 73d656cda5
2 changed files with 25 additions and 12 deletions
+15 -8
View File
@@ -22,20 +22,23 @@ type
property Done: TState read GetDone;
end;
private
FFuture: IFuture;
function GetDone: TState.IState; inline;
function GetResult: T; inline;
{$REGION 'private'}
strict private
class var
FNull: IFuture;
class constructor CreateClass;
class destructor DestroyClass;
private
FFuture: IFuture;
function GetDone: TState; inline;
function GetResult: T; inline;
{$ENDREGION}
public
constructor Create(const AFuture: IFuture);
class operator Initialize(out Dest: TFuture<T>);
class operator Implicit(const A: IFuture): TFuture<T>; overload;
class operator Implicit(const A: TFuture<T>): IFuture; overload;
@@ -45,10 +48,9 @@ type
class property Null: IFuture read FNull;
function Chain<S>(const Proc: TFunc<T, S>): TFuture<S>;
function WaitFor: T;
property Done: TState.IState read GetDone;
property Done: TState read GetDone;
property Result: T read GetResult;
end;
@@ -93,7 +95,7 @@ begin
Result := TMycGateFuncFuture<T>.Create(TaskManager, Gate, Proc);
end;
function TFuture<T>.GetDone: TState.IState;
function TFuture<T>.GetDone: TState;
begin
Result := FFuture.Done;
end;
@@ -119,4 +121,9 @@ begin
Result := A.FFuture;
end;
class operator TFuture<T>.Initialize(out Dest: TFuture<T>);
begin
Dest.FFuture := FNull;
end;
end.