Code formatting
This commit is contained in:
+23
-26
@@ -4,7 +4,8 @@ interface
|
||||
|
||||
uses
|
||||
System.SysUtils,
|
||||
Myc.Signals, Myc.TaskManager;
|
||||
Myc.Signals,
|
||||
Myc.TaskManager;
|
||||
|
||||
type
|
||||
// Represents the eventual result of an asynchronous operation.
|
||||
@@ -32,17 +33,17 @@ type
|
||||
class destructor DestroyClass;
|
||||
|
||||
public
|
||||
constructor Create( const AFuture: IMycFuture<T> );
|
||||
constructor Create(const AFuture: IMycFuture<T>);
|
||||
|
||||
class operator Implicit( const A: IMycFuture<T> ): TFuture<T>; overload;
|
||||
class operator Implicit( const A: TFuture<T> ): IMycFuture<T>; overload;
|
||||
class operator Implicit(const A: IMycFuture<T>): TFuture<T>; overload;
|
||||
class operator Implicit(const A: TFuture<T>): IMycFuture<T>; overload;
|
||||
|
||||
class function Construct( const Proc: TFunc<T> ): TFuture<T>; overload; static;
|
||||
class function Construct( const Gate: IMycState; const Proc: TFunc<T> ): TFuture<T>; overload; static;
|
||||
class function Construct(const Proc: TFunc<T>): TFuture<T>; overload; static;
|
||||
class function Construct(const Gate: IMycState; const Proc: TFunc<T>): TFuture<T>; overload; static;
|
||||
|
||||
class property Null: IMycFuture<T> read FNull;
|
||||
|
||||
function Chain<S>( const Proc: TFunc<T, S> ): TFuture<S>;
|
||||
function Chain<S>(const Proc: TFunc<T, S>): TFuture<S>;
|
||||
|
||||
function WaitFor: T;
|
||||
|
||||
@@ -53,12 +54,13 @@ type
|
||||
implementation
|
||||
|
||||
uses
|
||||
Myc.Core.Futures, Myc.Core.Tasks;
|
||||
Myc.Core.Futures,
|
||||
Myc.Core.Tasks;
|
||||
|
||||
constructor TFuture<T>.Create( const AFuture: IMycFuture<T> );
|
||||
constructor TFuture<T>.Create(const AFuture: IMycFuture<T>);
|
||||
begin
|
||||
FFuture := AFuture;
|
||||
if not Assigned( FFuture ) then
|
||||
if not Assigned(FFuture) then
|
||||
FFuture := FNull;
|
||||
end;
|
||||
|
||||
@@ -73,26 +75,21 @@ begin
|
||||
TMycTaskFactory.ReleaseTaskManager;
|
||||
end;
|
||||
|
||||
function TFuture<T>.Chain<S>( const Proc: TFunc<T, S> ): TFuture<S>;
|
||||
function TFuture<T>.Chain<S>(const Proc: TFunc<T, S>): TFuture<S>;
|
||||
begin
|
||||
var
|
||||
Cap := FFuture;
|
||||
var Cap := FFuture;
|
||||
|
||||
Result := TFuture<S>.Construct( FFuture.Done,
|
||||
function: S
|
||||
begin
|
||||
Result := Proc( Cap.Result );
|
||||
end );
|
||||
Result := TFuture<S>.Construct(FFuture.Done, function: S begin Result := Proc(Cap.Result); end);
|
||||
end;
|
||||
|
||||
class function TFuture<T>.Construct( const Proc: TFunc<T> ): TFuture<T>;
|
||||
class function TFuture<T>.Construct(const Proc: TFunc<T>): TFuture<T>;
|
||||
begin
|
||||
Result := TMycGateFuncFuture<T>.Create( TaskManager, nil, Proc );
|
||||
Result := TMycGateFuncFuture<T>.Create(TaskManager, nil, Proc);
|
||||
end;
|
||||
|
||||
class function TFuture<T>.Construct( const Gate: IMycState; const Proc: TFunc<T> ): TFuture<T>;
|
||||
class function TFuture<T>.Construct(const Gate: IMycState; const Proc: TFunc<T>): TFuture<T>;
|
||||
begin
|
||||
Result := TMycGateFuncFuture<T>.Create( TaskManager, Gate, Proc );
|
||||
Result := TMycGateFuncFuture<T>.Create(TaskManager, Gate, Proc);
|
||||
end;
|
||||
|
||||
function TFuture<T>.GetDone: IMycState;
|
||||
@@ -107,16 +104,16 @@ end;
|
||||
|
||||
function TFuture<T>.WaitFor: T;
|
||||
begin
|
||||
TaskManager.WaitFor( FFuture.Done );
|
||||
TaskManager.WaitFor(FFuture.Done);
|
||||
Result := FFuture.Result;
|
||||
end;
|
||||
|
||||
class operator TFuture<T>.Implicit( const A: IMycFuture<T> ): TFuture<T>;
|
||||
class operator TFuture<T>.Implicit(const A: IMycFuture<T>): TFuture<T>;
|
||||
begin
|
||||
Result.Create( A );
|
||||
Result.Create(A);
|
||||
end;
|
||||
|
||||
class operator TFuture<T>.Implicit( const A: TFuture<T> ): IMycFuture<T>;
|
||||
class operator TFuture<T>.Implicit(const A: TFuture<T>): IMycFuture<T>;
|
||||
begin
|
||||
Result := A.FFuture;
|
||||
end;
|
||||
|
||||
Reference in New Issue
Block a user