unit generics.proxies;
{$ifndef fpc}{$error this compatibility unit is not needed for Delphi, only for FPC 3.2.3 or higher}{$endif}
{$mode delphi}
interface
uses
generics.defaults, generics.collections;
type
TArray = class
public
class procedure Sort<T>(var Arr:TArray<T>;const Comparer:IComparer<T>);overload;
class procedure Sort<T>(var AValues: array of T); overload;
class procedure Sort<T>(var AValues: array of T;
const AComparer: IComparer<T>); overload;
class procedure Sort<T>(var AValues: array of T;
const AComparer: IComparer<T>; AIndex, ACount: NativeInt); overload;
class function BinarySearch<T>(const AValues: array of T; const AItem: T;
out AFoundIndex: NativeInt; const AComparer: IComparer<T>): Boolean; overload;
class function BinarySearch<T>(const AValues: array of T; const AItem: T;
out AFoundIndex: NativeInt): Boolean; overload;
class function BinarySearch<T>(const AValues: array of T; const AItem: T;
out ASearchResult: TBinarySearchResult; const AComparer: IComparer<T>): Boolean; overload;
class function BinarySearch<T>(const AValues: array of T; const AItem: T;
out ASearchResult: TBinarySearchResult): Boolean; overload;
class procedure Copy<T>(const aSource: array of T; var aDestination: array of T; aCount: NativeInt); overload;
class procedure Copy<T>(const aSource: array of T; var aDestination: array of T; aSourceIndex, aDestIndex, aCount: SizeInt); overload;
// Add more to proxy more..
end;
implementation
class procedure TArray.Sort<T>(var Arr:TArray<T>;const Comparer:IComparer<T>);overload;
begin
TArrayHelper<T>.Sort(Arr,Comparer);
end;
class procedure TArray.Sort<T>(var AValues: array of T); overload;
begin
TArrayHelper<T>.Sort(AValues);
end;
class procedure TArray.Sort<T>(var AValues: array of T;
const AComparer: IComparer<T>); overload;
begin
TArrayHelper<T>.Sort(AValues,AComparer);
end;
class procedure TArray.Sort<T>(var AValues: array of T;
const AComparer: IComparer<T>; AIndex, ACount: NativeInt); overload;
begin
TArrayHelper<T>.Sort(AValues,AComparer,AIndex,ACount);
end;
class function TArray.BinarySearch<T>(const AValues: array of T; const AItem: T;
out AFoundIndex: NativeInt; const AComparer: IComparer<T>): Boolean; overload;
begin
Result := TArrayHelper<T>.BinarySearch(AValues,AItem, AFoundIndex,AComparer);
end;
class function TArray.BinarySearch<T>(const AValues: array of T; const AItem: T;
out AFoundIndex: NativeInt): Boolean; overload;
begin
Result := TArrayHelper<T>.BinarySearch(AValues, AItem,AFoundIndex);
end;
class function TArray.BinarySearch<T>(const AValues: array of T; const AItem: T;
out ASearchResult: TBinarySearchResult; const AComparer: IComparer<T>): Boolean; overload;
begin
Result := TArrayHelper<T>.BinarySearch(AValues,AItem,ASearchResult, AComparer);
end;
class function TArray.BinarySearch<T>(const AValues: array of T; const AItem: T;
out ASearchResult: TBinarySearchResult): Boolean; overload;
begin
Result := TArrayHelper<T>.BinarySearch(AValues,AItem,ASearchResult);
end;
class procedure TArray.Copy<T>(const aSource: array of T; var aDestination: array of T; aCount: NativeInt); overload;
begin
TArrayHelper<T>.Copy(aSource, aDestination, aCount);
end;
class procedure TArray.Copy<T>(const aSource: array of T; var aDestination: array of T; aSourceIndex, aDestIndex, aCount: SizeInt); overload;
begin
TArrayHelper<T>.Copy(aSource, aDestination, aSourceIndex, aDestIndex, aCount);
end;
end.