Bladeren bron

Add Exchange<T> that works like std::exchange in C++.

(cherry picked from commit 05b7ebd34e97de04635d725bb6303cbdafa1a9a8)
Rika Ichinose 1 jaar geleden
bovenliggende
commit
52d7e9b49f
2 gewijzigde bestanden met toevoegingen van 7 en 0 verwijderingen
  1. 1 0
      rtl/objpas/sysutils/sysutilh.inc
  2. 6 0
      rtl/objpas/sysutils/sysutils.inc

+ 1 - 0
rtl/objpas/sysutils/sysutilh.inc

@@ -287,6 +287,7 @@ type
 
 {$IFNDEF VER3_0}
 generic function IfThen<T>(val:boolean;const iftrue:T; const iffalse:T) :T; inline; overload;
+generic function Exchange<T>(var target:T; const newvalue:T) :T; inline;
 {$ENDIF}
 
 Var

+ 6 - 0
rtl/objpas/sysutils/sysutils.inc

@@ -872,6 +872,12 @@ begin
   else
     Result:=ifFalse;
 end;
+
+generic function Exchange<T>(var target:T; const newvalue:T) :T;
+begin
+  Result := target;
+  target := newvalue;
+end;
 {$ENDIF}
 
 Function ArrayOfConstToStrArray(Args: array of const) : TUTF8StringDynArray;