-
Notifications
You must be signed in to change notification settings - Fork 6
TBinaryFunctor
- About
- TUnsortableFunctor
-
TDefaultCompareFunctor
- TCompareFunctorByte
- TCompareFunctorShortInt
- TCompareFunctorWord
- TCompareFunctorSmallInt
- TCompareFunctorInteger
- TCompareFunctorDWord
- TCompareFunctorCardinal
- TCompareFunctorLongWord
- TCompareFunctorLongInt
- TCompareFunctorQWord
- TCompareFunctorInt64
- TCompareFunctorSingle
- TCompareFunctorReal
- TCompareFunctorDouble
- TCompareFunctorExtended
- TCompareFunctorCurrency
- TCompareFunctorBoolean
- TCompareFunctorChar
- TCompareFunctorWideChar
- TCompareFunctorAnsiString
- TCompareFunctorString
- TCompareFunctorWideString
-
TDefaultLessFunctor
- TLessFunctorByte
- TLessFunctorShortInt
- TLessFunctorWord
- TLessFunctorSmallInt
- TLessFunctorInteger
- TLessFunctorDWord
- TLessFunctorCardinal
- TLessFunctorLongWord
- TLessFunctorLongInt
- TLessFunctorQWord
- TLessFunctorInt64
- TLessFunctorSingle
- TLessFunctorReal
- TLessFunctorDouble
- TLessFunctorExtended
- TLessFunctorCurrency
- TLessFunctorBoolean
- TLessFunctorChar
- TLessFunctorWideChar
- TLessFunctorAnsiString
- TLessFunctorString
- TLessFunctorWideString
-
TDefaultGreaterFunctor
- TGreaterFunctorByte
- TGreaterFunctorShortInt
- TGreaterFunctorWord
- TGreaterFunctorSmallInt
- TGreaterFunctorInteger
- TGreaterFunctorDWord
- TGreaterFunctorCardinal
- TGreaterFunctorLongWord
- TGreaterFunctorLongInt
- TGreaterFunctorQWord
- TGreaterFunctorInt64
- TGreaterFunctorSingle
- TGreaterFunctorReal
- TGreaterFunctorDouble
- TGreaterFunctorExtended
- TGreaterFunctorCurrency
- TGreaterFunctorBoolean
- TGreaterFunctorChar
- TGreaterFunctorWideChar
- TGreaterFunctorAnsiString
- TGreaterFunctorString
- TGreaterFunctorWideString
-
TDefaultEqualFunctor
- TEqualFunctorByte
- TEqualFunctorShortInt
- TEqualFunctorWord
- TEqualFunctorSmallInt
- TEqualFunctorInteger
- TEqualFunctorDWord
- TEqualFunctorCardinal
- TEqualFunctorLongWord
- TEqualFunctorLongInt
- TEqualFunctorQWord
- TEqualFunctorInt64
- TEqualFunctorSingle
- TEqualFunctorReal
- TEqualFunctorDouble
- TEqualFunctorExtended
- TEqualFunctorCurrency
- TEqualFunctorBoolean
- TEqualFunctorChar
- TEqualFunctorWideChar
- TEqualFunctorAnsiString
- TEqualFunctorString
- TEqualFunctorWideString
-
TDefaultPairKeyCompareFunctor
- TPairKeyCompareFunctorByte
- TPairKeyCompareFunctorShortInt
- TPairKeyCompareFunctorWord
- TPairKeyCompareFunctorSmallInt
- TPairKeyCompareFunctorInteger
- TPairKeyCompareFunctorDWord
- TPairKeyCompareFunctorCardinal
- TPairKeyCompareFunctorLongWord
- TPairKeyCompareFunctorLongInt
- TPairKeyCompareFunctorQWord
- TPairKeyCompareFunctorInt64
- TPairKeyCompareFunctorSingle
- TPairKeyCompareFunctorReal
- TPairKeyCompareFunctorDouble
- TPairKeyCompareFunctorExtended
- TPairKeyCompareFunctorCurrency
- TPairKeyCompareFunctorBoolean
- TPairKeyCompareFunctorChar
- TPairKeyCompareFunctorWideChar
- TPairKeyCompareFunctorAnsiString
- TPairKeyCompareFunctorString
- TPairKeyCompareFunctorWideString
Generically, functor objects are instances of a class with member function Call
defined. This member function allows the object to be used with the same syntax as a regular function call, and therefore its type can be used as template parameter when a generic function type is expected.
In the case of binary functor objects, this Call
member function takes two parameters.
uses
utils.functor;
type
generic TBinaryFunctor<V, R> = class
public
function Call(AValue1, AValue2 : V) : R; abstract;
end;
uses
utils.functor;
type
TFunctor = {$IFDEF FPC}specialize{$ENDIF} TBinaryFunctor<Integer, Integer>
public
function Call(AValue1, AValue2 : Integer) : Integer; override;
begin
if AValue1 < AValue2 then
Exit(-1)
else if AValue1 > AValue2 then
Exit(1)
else
Exit(0);
end;
end;
var
functor : TFunctor;
begin
functor := TFunctor.Create;
if functor.Call(21, 5) < 0 then
;
FreeAndNil(functor);
end;
It is a special compare functor that return 0 (zero) all times. Real values not used. This functor can be used for containers for unsortable values.
uses
utils.functor;
type
TUnsortableFunctor =
class({$IFDEF FPC}specialize{$ENDIF} TBinaryFunctor<V, Integer>);
uses
container.arraylist, utils.functor;
type
TObjectArray = {$IFDEF FPC}specialize{$ENDIF} TArrayList<TObject, TUnsortableFunctor>;
var
arr : TObjectArray;
begin
arr := TObjectArray.Create;
FreeAndNil(arr);
end;
It is a functor which return a negative value if AValue1 should be sorted before AValue2, a positive value if AValue1 should be sorted after AValue2, zero if AValue1 and AValue2 are equal.
uses
utils.functor;
type
generic TDefaultCompareFunctor<V> =
class({$IFDEF FPC}specialize{$ENDIF} TBinaryFunctor<V, Integer>)
public
function Call(AValue1, AValue2 : V) : Integer;
end;
uses
utils.functor;
type
TCompareFunctor = {$IFDEF FPC}specialize{$ENDIF} TDefaultCompareFunctor<Integer>
public
function Call(AValue1, AValue2 : Integer) : Integer; override;
begin
if AValue1 < AValue2 then
Exit(-1)
else if AValue1 > AValue2 then
Exit(1)
else
Exit(0);
end;
end;
var
functor : TCompareFunctor;
begin
functor := TCompareFunctor.Create;
if functor.Call(21, 5) < 0 then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TCompareFunctorByte =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultCompareFunctor<Byte>);
uses
utils.functor;
var
functor : TCompareFunctorByte;
begin
functor := TCompareFunctorByte.Create;
if functor.Call(2, 12) < 0 then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TCompareFunctorShortInt =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultCompareFunctor<ShortInt>);
uses
utils.functor;
var
functor : TCompareFunctorShortInt;
begin
functor := TCompareFunctorShortInt.Create;
if functor.Call(254, 1200) < 0 then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TCompareFunctorWord =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultCompareFunctor<Word>);
uses
utils.functor;
var
functor : TCompareFunctorWord;
begin
functor := TCompareFunctorWord.Create;
if functor.Call(0, 54) < 0 then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TCompareFunctorSmallInt =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultCompareFunctor<SmallInt>);
uses
utils.functor;
var
functor : TCompareFunctorSmallInt;
begin
functor := TCompareFunctorSmallInt.Create;
if functor.Call(0, -54) < 0 then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TCompareFunctorInteger =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultCompareFunctor<Integer>);
uses
utils.functor;
var
functor : TCompareFunctorInteger;
begin
functor := TCompareFunctorInteger.Create;
if functor.Call(-5842, 25410) < 0 then
;
FreeAndNil(functor);
end;
This functor available for FreePascal compiler only!
uses
utils.functor;
type
{$IFDEF FPC}
TCompareFunctorDWord =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultCompareFunctor<DWord>);
{$ENDIF}
uses
utils.functor;
var
functor : TCompareFunctorDWord;
begin
functor := TCompareFunctorDWord.Create;
if functor.Call(452, 5780) < 0 then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TCompareFunctorCardinal =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultCompareFunctor<Cardinal>);
uses
utils.functor;
var
functor : TCompareFunctorCardinal;
begin
functor := TCompareFunctorCardinal.Create;
if functor.Call(5842, 25410) < 0 then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TCompareFunctorLongWord =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultCompareFunctor<LongWord>);
uses
utils.functor;
var
functor : TCompareFunctorLongWord;
begin
functor := TCompareFunctorLongWord.Create;
if functor.Call(12544, 25410) < 0 then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TCompareFunctorLongInt =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultCompareFunctor<LongInt>);
uses
utils.functor;
var
functor : TCompareFunctorLongInt;
begin
functor := TCompareFunctorLongInt.Create;
if functor.Call(-5842, 0) < 0 then
;
FreeAndNil(functor);
end;
This functor available for FreePascal compiler only!
uses
utils.functor;
type
{$IFDEF FPC}
TCompareFunctorQWord =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultCompareFunctor<QWord>);
{$ENDIF}
uses
utils.functor;
var
functor : TCompareFunctorQWord;
begin
functor := TCompareFunctorQWord.Create;
if functor.Call(452, 5780) < 0 then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TCompareFunctorInt64 =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultCompareFunctor<Int64>);
uses
utils.functor;
var
functor : TCompareFunctorInt64;
begin
functor := TCompareFunctorInt64.Create;
if functor.Call(210, 541) < 0 then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TCompareFunctorSingle =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultCompareFunctor<Single>);
uses
utils.functor;
var
functor : TCompareFunctorSingle;
begin
functor := TCompareFunctorSingle.Create;
if functor.Call(0.21, 2.12) < 0 then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TCompareFunctorReal =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultCompareFunctor<Real>);
uses
utils.functor;
var
functor : TCompareFunctorReal;
begin
functor := TCompareFunctorReal.Create;
if functor.Call(54.21, 10.12) < 0 then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TCompareFunctorDouble =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultCompareFunctor<Double>);
uses
utils.functor;
var
functor : TCompareFunctorDouble;
begin
functor := TCompareFunctorDouble.Create;
if functor.Call(1.99, -2.54) < 0 then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TCompareFunctorExtended =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultCompareFunctor<Extended>);
uses
utils.functor;
var
functor : TCompareFunctorExtended;
begin
functor := TCompareFunctorExtended.Create;
if functor.Call(1.499, -12.54) < 0 then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TCompareFunctorCurrency =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultCompareFunctor<Currency>);
uses
utils.functor;
var
functor : TCompareFunctorCurrency;
begin
functor := TCompareFunctorCurrency.Create;
if functor.Call(1232.499, 1622.54) < 0 then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TCompareFunctorBoolean =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultCompareFunctor<Boolean>);
uses
utils.functor;
var
functor : TCompareFunctorBoolean;
begin
functor := TCompareFunctorBoolean.Create;
if functor.Call(True, False) < 0 then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TCompareFunctorChar =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultCompareFunctor<Char>);
uses
utils.functor;
var
functor : TCompareFunctorChar;
begin
functor := TCompareFunctorChar.Create;
if functor.Call('a', 'z') < 0 then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TCompareFunctorWideChar =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultCompareFunctor<WideChar>);
uses
utils.functor;
var
functor : TCompareFunctorWideChar;
begin
functor := TCompareFunctorWideChar.Create;
if functor.Call('F', 'J') < 0 then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TCompareFunctorAnsiString =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultCompareFunctor<AnsiString>);
uses
utils.functor;
var
functor : TCompareFunctorAnsiString;
begin
functor := TCompareFunctorAnsiString.Create;
if functor.Call('test', 'string') < 0 then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TCompareFunctorString =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultCompareFunctor<String>);
uses
utils.functor;
var
functor : TCompareFunctorString;
begin
functor := TCompareFunctorString.Create;
if functor.Call('some', 'value') < 0 then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TCompareFunctorWideString =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultCompareFunctor<WideString>);
uses
utils.functor;
var
functor : TCompareFunctorWideString;
begin
functor := TCompareFunctorWideString.Create;
if functor.Call('some', 'another value') < 0 then
;
FreeAndNil(functor);
end;
Return True if AValue1 < AValue2.
uses
utils.functor;
type
generic TDefaultLessFunctor<V> =
class ({$IFDEF FPC}specialize{$ENDIF} TBinaryFunctor<V, Boolean>);
uses
utils.functor;
type
TLessFunctorByte =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultLessFunctor<Byte>);
uses
utils.functor;
var
functor : TLessFunctorByte;
begin
functor := TLessFunctorByte.Create;
if functor.Call(2, 12) then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TLessFunctorShortInt =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultLessFunctor<ShortInt>);
uses
utils.functor;
var
functor : TLessFunctorShortInt;
begin
functor := TLessFunctorShortInt.Create;
if functor.Call(24, -12) then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TLessFunctorWord =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultLessFunctor<Word>);
uses
utils.functor;
var
functor : TLessFunctorWord;
begin
functor := TLessFunctorWord.Create;
if functor.Call(24, 120) then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TLessFunctorSmallInt =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultLessFunctor<SmallInt>);
uses
utils.functor;
var
functor : TLessFunctorSmallInt;
begin
functor := TLessFunctorSmallInt.Create;
if functor.Call(24, 120) then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TLessFunctorInteger =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultLessFunctor<Integer>);
uses
utils.functor;
var
functor : TLessFunctorInteger;
begin
functor := TLessFunctorInteger.Create;
if functor.Call(24, -54) then
;
FreeAndNil(functor);
end;
This functor available for FreePascal compiler only!
uses
utils.functor;
type
{$IFDEF FPC}
TLessFunctorDWord =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultLessFunctor<DWord>);
{$ENDIF}
uses
utils.functor;
var
functor : TLessFunctorDWord;
begin
functor := TLessFunctorDWord.Create;
if functor.Call(204, 54) then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TLessFunctorCardinal =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultLessFunctor<Cardinal>);
uses
utils.functor;
var
functor : TLessFunctorCardinal;
begin
functor := TLessFunctorCardinal.Create;
if functor.Call(4, 81) then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TLessFunctorLongWord =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultLessFunctor<LongWord>);
uses
utils.functor;
var
functor : TLessFunctorLongWord;
begin
functor := TLessFunctorLongWord.Create;
if functor.Call(412, 812) then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TLessFunctorLongInt =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultLessFunctor<LongInt>);
uses
utils.functor;
var
functor : TLessFunctorLongInt;
begin
functor := TLessFunctorLongInt.Create;
if functor.Call(-5, 2) then
;
FreeAndNil(functor);
end;
This functor available for FreePascal compiler only!
uses
utils.functor;
type
{$IFDEF FPC}
TLessFunctorQWord =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultLessFunctor<QWord>);
{$ENDIF}
uses
utils.functor;
var
functor : TLessFunctorQWord;
begin
functor := TLessFunctorQWord.Create;
if functor.Call(2042, 5214) then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TLessFunctorInt64 =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultLessFunctor<Int64>);
uses
utils.functor;
var
functor : TLessFunctorInt64;
begin
functor := TLessFunctorInt64.Create;
if functor.Call(-12255, 2131221) then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TLessFunctorSingle =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultLessFunctor<Single>);
uses
utils.functor;
var
functor : TLessFunctorSingle;
begin
functor := TLessFunctorSingle.Create;
if functor.Call(0.254, 4.325) then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TLessFunctorReal =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultLessFunctor<Real>);
uses
utils.functor;
var
functor : TLessFunctorReal;
begin
functor := TLessFunctorReal.Create;
if functor.Call(0.2254, 41.325) then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TLessFunctorDouble =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultLessFunctor<Double>);
uses
utils.functor;
var
functor : TLessFunctorDouble;
begin
functor := TLessFunctorDouble.Create;
if functor.Call(25.36, 11.25410) then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TLessFunctorExtended =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultLessFunctor<Extended>);
uses
utils.functor;
var
functor : TLessFunctorExtended;
begin
functor := TLessFunctorExtended.Create;
if functor.Call(252.36, 111.20) then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TLessFunctorCurrency =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultLessFunctor<Currency>);
uses
utils.functor;
var
functor : TLessFunctorCurrency;
begin
functor := TLessFunctorCurrency.Create;
if functor.Call(123.36, 541.12) then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TLessFunctorBoolean =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultLessFunctor<Boolean>);
uses
utils.functor;
var
functor : TLessFunctorBoolean;
begin
functor := TLessFunctorBoolean.Create;
if functor.Call(False, False) then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TLessFunctorChar =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultLessFunctor<Char>);
uses
utils.functor;
var
functor : TLessFunctorChar;
begin
functor := TLessFunctorChar.Create;
if functor.Call('f', 'e') then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TLessFunctorWideChar =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultLessFunctor<WideChar>);
uses
utils.functor;
var
functor : TLessFunctorWideChar;
begin
functor := TLessFunctorWideChar.Create;
if functor.Call('r', 'w') then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TLessFunctorAnsiString =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultLessFunctor<AnsiString>);
uses
utils.functor;
var
functor : TLessFunctorAnsiString;
begin
functor := TLessFunctorAnsiString.Create;
if functor.Call('string', 'another one') then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TLessFunctorString =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultLessFunctor<String>);
uses
utils.functor;
var
functor : TLessFunctorString;
begin
functor := TLessFunctorString.Create;
if functor.Call('string', 'another one') then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TLessFunctorWideString =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultLessFunctor<WideString>);
uses
utils.functor;
var
functor : TLessFunctorWideString;
begin
functor := TLessFunctorWideString.Create;
if functor.Call('value', 'different value') then
;
FreeAndNil(functor);
end;
Return True if AValue1 > AValue2.
uses
utils.functor;
type
generic TDefaultGreaterFunctor<V> =
class ({$IFDEF FPC}specialize{$ENDIF} TBinaryFunctor<V, Boolean>);
uses
utils.functor;
type
TGreaterFunctorByte =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultGreaterFunctor<Byte>);
uses
utils.functor;
var
functor : TGreaterFunctorByte;
begin
functor := TGreaterFunctorByte.Create;
if functor.Call(2, 12) then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TGreaterFunctorShortInt =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultGreaterFunctor<ShortInt>);
uses
utils.functor;
var
functor : TGreaterFunctorShortInt;
begin
functor := TGreaterFunctorShortInt.Create;
if functor.Call(24, -12) then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TGreaterFunctorWord =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultGreaterFunctor<Word>);
uses
utils.functor;
var
functor : TGreaterFunctorWord;
begin
functor := TGreaterFunctorWord.Create;
if functor.Call(24, 120) then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TGreaterFunctorSmallInt =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultGreaterFunctor<SmallInt>);
uses
utils.functor;
var
functor : TGreaterFunctorSmallInt;
begin
functor := TGreaterFunctorSmallInt.Create;
if functor.Call(24, 120) then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TGreaterFunctorInteger =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultGreaterFunctor<Integer>);
uses
utils.functor;
var
functor : TGreaterFunctorInteger;
begin
functor := TGreaterFunctorInteger.Create;
if functor.Call(24, -54) then
;
FreeAndNil(functor);
end;
This functor available for FreePascal compiler only!
uses
utils.functor;
type
{$IFDEF FPC}
TGreaterFunctorDWord =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultGreaterFunctor<DWord>);
{$ENDIF}
uses
utils.functor;
var
functor : TGreaterFunctorDWord;
begin
functor := TGreaterFunctorDWord.Create;
if functor.Call(204, 54) then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TGreaterFunctorCardinal =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultGreaterFunctor<Cardinal>);
uses
utils.functor;
var
functor : TGreaterFunctorCardinal;
begin
functor := TGreaterFunctorCardinal.Create;
if functor.Call(4, 81) then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TGreaterFunctorLongWord =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultGreaterFunctor<LongWord>);
uses
utils.functor;
var
functor : TGreaterFunctorLongWord;
begin
functor := TGreaterFunctorLongWord.Create;
if functor.Call(412, 812) then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TGreaterFunctorLongInt =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultGreaterFunctor<LongInt>);
uses
utils.functor;
var
functor : TGreaterFunctorLongInt;
begin
functor := TGreaterFunctorLongInt.Create;
if functor.Call(-5, 2) then
;
FreeAndNil(functor);
end;
This functor available for FreePascal compiler only!
uses
utils.functor;
type
{$IFDEF FPC}
TGreaterFunctorQWord =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultGreaterFunctor<QWord>);
{$ENDIF}
uses
utils.functor;
var
functor : TGreaterFunctorQWord;
begin
functor := TGreaterFunctorQWord.Create;
if functor.Call(2042, 5214) then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TGreaterFunctorInt64 =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultGreaterFunctor<Int64>);
uses
utils.functor;
var
functor : TGreaterFunctorInt64;
begin
functor := TGreaterFunctorInt64.Create;
if functor.Call(-12255, 2131221) then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TGreaterFunctorSingle =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultGreaterFunctor<Single>);
uses
utils.functor;
var
functor : TGreaterFunctorSingle;
begin
functor := TGreaterFunctorSingle.Create;
if functor.Call(0.254, 4.325) then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TGreaterFunctorReal =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultGreaterFunctor<Real>);
uses
utils.functor;
var
functor : TGreaterFunctorReal;
begin
functor := TGreaterFunctorReal.Create;
if functor.Call(0.2254, 41.325) then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TGreaterFunctorDouble =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultGreaterFunctor<Double>);
uses
utils.functor;
var
functor : TGreaterFunctorDouble;
begin
functor := TGreaterFunctorDouble.Create;
if functor.Call(25.36, 11.25410) then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TGreaterFunctorExtended =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultGreaterFunctor<Extended>);
uses
utils.functor;
var
functor : TGreaterFunctorExtended;
begin
functor := TGreaterFunctorExtended.Create;
if functor.Call(252.36, 111.20) then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TGreaterFunctorCurrency =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultGreaterFunctor<Currency>);
uses
utils.functor;
var
functor : TGreaterFunctorCurrency;
begin
functor := TGreaterFunctorCurrency.Create;
if functor.Call(123.36, 541.12) then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TGreaterFunctorBoolean =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultGreaterFunctor<Boolean>);
uses
utils.functor;
var
functor : TGreaterFunctorBoolean;
begin
functor := TGreaterFunctorBoolean.Create;
if functor.Call(False, False) then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TGreaterFunctorChar =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultGreaterFunctor<Char>);
uses
utils.functor;
var
functor : TGreaterFunctorChar;
begin
functor := TGreaterFunctorChar.Create;
if functor.Call('f', 'e') then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TGreaterFunctorWideChar =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultGreaterFunctor<WideChar>);
uses
utils.functor;
var
functor : TGreaterFunctorWideChar;
begin
functor := TGreaterFunctorWideChar.Create;
if functor.Call('r', 'w') then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TGreaterFunctorAnsiString =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultGreaterFunctor<AnsiString>);
uses
utils.functor;
var
functor : TGreaterFunctorAnsiString;
begin
functor := TGreaterFunctorAnsiString.Create;
if functor.Call('string', 'another one') then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TGreaterFunctorString =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultGreaterFunctor<String>);
uses
utils.functor;
var
functor : TGreaterFunctorString;
begin
functor := TGreaterFunctorString.Create;
if functor.Call('string', 'another one') then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TGreaterFunctorWideString =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultGreaterFunctor<WideString>);
uses
utils.functor;
var
functor : TGreaterFunctorWideString;
begin
functor := TGreaterFunctorWideString.Create;
if functor.Call('value', 'different value') then
;
FreeAndNil(functor);
end;
Return True if AValue1 = AValue2.
uses
utils.functor;
type
generic TDefaultEqualFunctor<V> =
class ({$IFDEF FPC}specialize{$ENDIF} TBinaryFunctor<V, Boolean>);
uses
utils.functor;
type
TEqualFunctorByte =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultEqualFunctor<Byte>);
uses
utils.functor;
var
functor : TEqualFunctorByte;
begin
functor := TEqualFunctorByte.Create;
if functor.Call(2, 12) then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TEqualFunctorShortInt =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultEqualFunctor<ShortInt>);
uses
utils.functor;
var
functor : TEqualFunctorShortInt;
begin
functor := TEqualFunctorShortInt.Create;
if functor.Call(24, -12) then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TEqualFunctorWord =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultEqualFunctor<Word>);
uses
utils.functor;
var
functor : TEqualFunctorWord;
begin
functor := TEqualFunctorWord.Create;
if functor.Call(24, 120) then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TEqualFunctorSmallInt =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultEqualFunctor<SmallInt>);
uses
utils.functor;
var
functor : TEqualFunctorSmallInt;
begin
functor := TEqualFunctorSmallInt.Create;
if functor.Call(24, 120) then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TEqualFunctorInteger =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultEqualFunctor<Integer>);
uses
utils.functor;
var
functor : TEqualFunctorInteger;
begin
functor := TEqualFunctorInteger.Create;
if functor.Call(24, -54) then
;
FreeAndNil(functor);
end;
This functor available for FreePascal compiler only!
uses
utils.functor;
type
{$IFDEF FPC}
TEqualFunctorDWord =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultEqualFunctor<DWord>);
{$ENDIF}
uses
utils.functor;
var
functor : TEqualFunctorDWord;
begin
functor := TEqualFunctorDWord.Create;
if functor.Call(204, 54) then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TEqualFunctorCardinal =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultEqualFunctor<Cardinal>);
uses
utils.functor;
var
functor : TEqualFunctorCardinal;
begin
functor := TEqualFunctorCardinal.Create;
if functor.Call(4, 81) then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TEqualFunctorLongWord =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultEqualFunctor<LongWord>);
uses
utils.functor;
var
functor : TEqualFunctorLongWord;
begin
functor := TEqualFunctorLongWord.Create;
if functor.Call(412, 812) then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TEqualFunctorLongInt =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultEqualFunctor<LongInt>);
uses
utils.functor;
var
functor : TEqualFunctorLongInt;
begin
functor := TEqualFunctorLongInt.Create;
if functor.Call(-5, 2) then
;
FreeAndNil(functor);
end;
This functor available for FreePascal compiler only!
uses
utils.functor;
type
{$IFDEF FPC}
TEqualFunctorQWord =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultEqualFunctor<QWord>);
{$ENDIF}
uses
utils.functor;
var
functor : TEqualFunctorQWord;
begin
functor := TEqualFunctorQWord.Create;
if functor.Call(2042, 5214) then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TEqualFunctorInt64 =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultEqualFunctor<Int64>);
uses
utils.functor;
var
functor : TEqualFunctorInt64;
begin
functor := TEqualFunctorInt64.Create;
if functor.Call(-12255, 2131221) then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TEqualFunctorSingle =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultEqualFunctor<Single>);
uses
utils.functor;
var
functor : TEqualFunctorSingle;
begin
functor := TEqualFunctorSingle.Create;
if functor.Call(0.254, 4.325) then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TEqualFunctorReal =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultEqualFunctor<Real>);
uses
utils.functor;
var
functor : TEqualFunctorReal;
begin
functor := TEqualFunctorReal.Create;
if functor.Call(0.2254, 41.325) then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TEqualFunctorDouble =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultEqualFunctor<Double>);
uses
utils.functor;
var
functor : TEqualFunctorDouble;
begin
functor := TEqualFunctorDouble.Create;
if functor.Call(25.36, 11.25410) then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TEqualFunctorExtended =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultEqualFunctor<Extended>);
uses
utils.functor;
var
functor : TEqualFunctorExtended;
begin
functor := TEqualFunctorExtended.Create;
if functor.Call(252.36, 111.20) then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TEqualFunctorCurrency =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultEqualFunctor<Currency>);
uses
utils.functor;
var
functor : TEqualFunctorCurrency;
begin
functor := TEqualFunctorCurrency.Create;
if functor.Call(123.36, 541.12) then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TEqualFunctorBoolean =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultEqualFunctor<Boolean>);
uses
utils.functor;
var
functor : TEqualFunctorBoolean;
begin
functor := TEqualFunctorBoolean.Create;
if functor.Call(False, False) then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TEqualFunctorChar =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultEqualFunctor<Char>);
uses
utils.functor;
var
functor : TEqualFunctorChar;
begin
functor := TEqualFunctorChar.Create;
if functor.Call('f', 'e') then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TEqualFunctorWideChar =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultEqualFunctor<WideChar>);
uses
utils.functor;
var
functor : TEqualFunctorWideChar;
begin
functor := TEqualFunctorWideChar.Create;
if functor.Call('r', 'w') then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TEqualFunctorAnsiString =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultEqualFunctor<AnsiString>);
uses
utils.functor;
var
functor : TEqualFunctorAnsiString;
begin
functor := TEqualFunctorAnsiString.Create;
if functor.Call('string', 'another one') then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TEqualFunctorString =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultEqualFunctor<String>);
uses
utils.functor;
var
functor : TEqualFunctorString;
begin
functor := TEqualFunctorString.Create;
if functor.Call('string', 'another one') then
;
FreeAndNil(functor);
end;
uses
utils.functor;
type
TEqualFunctorWideString =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultEqualFunctor<WideString>);
uses
utils.functor;
var
functor : TEqualFunctorWideString;
begin
functor := TEqualFunctorWideString.Create;
if functor.Call('value', 'different value') then
;
FreeAndNil(functor);
end;
Return a negative value if pair 1 key should be sorted before pair 2 key, a positive value if pair 1 key should be sorted after pair 2 key, zero if pair 1 key and pair 2 key are equal.
uses
utils.functor, utils.pair;
uses
generic TDefaultPairKeyCompareFunctor<K, V> =
class({$IFDEF FPC}specialize{$ENDIF} TBinaryFunctor
<{$IFDEF FPC}specialize{$ENDIF} TPair<K, V>, Integer>)
uses
utils.functor, utils.pair;
type
generic TPairKeyCompareFunctorByte<V> =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultPairKeyCompareFunctor<Byte,
V>);
uses
utils.functor, utils.pair;
type
TPairValue = {$IFDEF FPC}specialize{$ENDIF} TPair<Byte, Integer>;
TPairCompareFunctor = {$IFDEF FPC}specialize{$ENDIF} TPairKeyCompareFunctorByte<Integer>;
var
functor : TPairCompareFunctor;
pair1, pair2 : TPairValue;
begin
functor := TPairCompareFunctor.Create;
pair1 := TPairValue.Create(1, 1);
pair2 := TPairValue.Create(9, 0);
if functor.Call(pair1, pair2) < 0 then
;
FreeAndNil(functor);
end;
uses
utils.functor, utils.pair;
type
generic TPairKeyCompareFunctorShortInt<V> =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultPairKeyCompareFunctor<ShortInt,
V>);
uses
utils.functor, utils.pair;
type
TPairValue = {$IFDEF FPC}specialize{$ENDIF} TPair<ShortInt, Integer>;
TPairCompareFunctor = {$IFDEF FPC}specialize{$ENDIF} TPairKeyCompareFunctorShortInt<Integer>;
var
functor : TPairCompareFunctor;
pair1, pair2 : TPairValue;
begin
functor := TPairCompareFunctor.Create;
pair1 := TPairValue.Create(10, 1);
pair2 := TPairValue.Create(-29, 0);
if functor.Call(pair1, pair2) < 0 then
;
FreeAndNil(functor);
end;
uses
utils.functor, utils.pair;
type
generic TPairKeyCompareFunctorWord<V> =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultPairKeyCompareFunctor<Word,
V>);
uses
utils.functor, utils.pair;
type
TPairValue = {$IFDEF FPC}specialize{$ENDIF} TPair<Word, Integer>;
TPairCompareFunctor = {$IFDEF FPC}specialize{$ENDIF} TPairKeyCompareFunctorWord<Integer>;
var
functor : TPairCompareFunctor;
pair1, pair2 : TPairValue;
begin
functor := TPairCompareFunctor.Create;
pair1 := TPairValue.Create(102, 1);
pair2 := TPairValue.Create(25, 0);
if functor.Call(pair1, pair2) < 0 then
;
FreeAndNil(functor);
end;
uses
utils.functor, utils.pair;
type
generic TPairKeyCompareFunctorSmallInt<V> =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultPairKeyCompareFunctor<SmallInt,
V>);
uses
utils.functor, utils.pair;
type
TPairValue = {$IFDEF FPC}specialize{$ENDIF} TPair<SmallInt, Integer>;
TPairCompareFunctor = {$IFDEF FPC}specialize{$ENDIF} TPairKeyCompareFunctorSmallInt<Integer>;
var
functor : TPairCompareFunctor;
pair1, pair2 : TPairValue;
begin
functor := TPairCompareFunctor.Create;
pair1 := TPairValue.Create(-102, 1);
pair2 := TPairValue.Create(255, 0);
if functor.Call(pair1, pair2) < 0 then
;
FreeAndNil(functor);
end;
uses
utils.functor, utils.pair;
type
generic TPairKeyCompareFunctorInteger<V> =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultPairKeyCompareFunctor<Integer,
V>);
uses
utils.functor, utils.pair;
type
TPairValue = {$IFDEF FPC}specialize{$ENDIF} TPair<Integer, Integer>;
TPairCompareFunctor = {$IFDEF FPC}specialize{$ENDIF} TPairKeyCompareFunctorInteger<Integer>;
var
functor : TPairCompareFunctor;
pair1, pair2 : TPairValue;
begin
functor := TPairCompareFunctor.Create;
pair1 := TPairValue.Create(1202, 1);
pair2 := TPairValue.Create(2535, 0);
if functor.Call(pair1, pair2) < 0 then
;
FreeAndNil(functor);
end;
This functor available for FreePascal compiler only!
uses
utils.functor, utils.pair;
type
generic TPairKeyCompareFunctorDWord<V> =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultPairKeyCompareFunctor<Integer,
V>);
uses
utils.functor, utils.pair;
type
TPairValue = {$IFDEF FPC}specialize{$ENDIF} TPair<DWord, Integer>;
TPairCompareFunctor = {$IFDEF FPC}specialize{$ENDIF} TPairKeyCompareFunctorDWord<Integer>;
var
functor : TPairCompareFunctor;
pair1, pair2 : TPairValue;
begin
functor := TPairCompareFunctor.Create;
pair1 := TPairValue.Create(54, 1);
pair2 := TPairValue.Create(84, 0);
if functor.Call(pair1, pair2) < 0 then
;
FreeAndNil(functor);
end;
uses
utils.functor, utils.pair;
type
generic TPairKeyCompareFunctorCardinal<V> =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultPairKeyCompareFunctor<Cardinal,
V>);
uses
utils.functor, utils.pair;
type
TPairValue = {$IFDEF FPC}specialize{$ENDIF} TPair<Cardinal, Integer>;
TPairCompareFunctor = {$IFDEF FPC}specialize{$ENDIF} TPairKeyCompareFunctorCardinal<Integer>;
var
functor : TPairCompareFunctor;
pair1, pair2 : TPairValue;
begin
functor := TPairCompareFunctor.Create;
pair1 := TPairValue.Create(254, 1);
pair2 := TPairValue.Create(834, 0);
if functor.Call(pair1, pair2) < 0 then
;
FreeAndNil(functor);
end;
uses
utils.functor, utils.pair;
type
generic TPairKeyCompareFunctorLongWord<V> =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultPairKeyCompareFunctor<LongWord,
V>);
uses
utils.functor, utils.pair;
type
TPairValue = {$IFDEF FPC}specialize{$ENDIF} TPair<LongWord, Integer>;
TPairCompareFunctor = {$IFDEF FPC}specialize{$ENDIF} TPairKeyCompareFunctorLongWord<Integer>;
var
functor : TPairCompareFunctor;
pair1, pair2 : TPairValue;
begin
functor := TPairCompareFunctor.Create;
pair1 := TPairValue.Create(2534, 1);
pair2 := TPairValue.Create(8342, 0);
if functor.Call(pair1, pair2) < 0 then
;
FreeAndNil(functor);
end;
uses
utils.functor, utils.pair;
type
generic TPairKeyCompareFunctorLongInt<V> =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultPairKeyCompareFunctor<LongInt,
V>);
uses
utils.functor, utils.pair;
type
TPairValue = {$IFDEF FPC}specialize{$ENDIF} TPair<LongInt, Integer>;
TPairCompareFunctor = {$IFDEF FPC}specialize{$ENDIF} TPairKeyCompareFunctorLongInt<Integer>;
var
functor : TPairCompareFunctor;
pair1, pair2 : TPairValue;
begin
functor := TPairCompareFunctor.Create;
pair1 := TPairValue.Create(22534, 1);
pair2 := TPairValue.Create(-8342, 0);
if functor.Call(pair1, pair2) < 0 then
;
FreeAndNil(functor);
end;
This functor available for FreePascal compiler only!
uses
utils.functor, utils.pair;
type
generic TPairKeyCompareFunctorQWord<V> =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultPairKeyCompareFunctor<QWord,
V>);
uses
utils.functor, utils.pair;
type
TPairValue = {$IFDEF FPC}specialize{$ENDIF} TPair<QWord, Integer>;
TPairCompareFunctor = {$IFDEF FPC}specialize{$ENDIF} TPairKeyCompareFunctorQWord<Integer>;
var
functor : TPairCompareFunctor;
pair1, pair2 : TPairValue;
begin
functor := TPairCompareFunctor.Create;
pair1 := TPairValue.Create(9654, 1);
pair2 := TPairValue.Create(250, 0);
if functor.Call(pair1, pair2) < 0 then
;
FreeAndNil(functor);
end;
uses
utils.functor, utils.pair;
type
generic TPairKeyCompareFunctorInt64<V> =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultPairKeyCompareFunctor<Int64,
V>);
uses
utils.functor, utils.pair;
type
TPairValue = {$IFDEF FPC}specialize{$ENDIF} TPair<Int64, Integer>;
TPairCompareFunctor = {$IFDEF FPC}specialize{$ENDIF} TPairKeyCompareFunctorInt64<Integer>;
var
functor : TPairCompareFunctor;
pair1, pair2 : TPairValue;
begin
functor := TPairCompareFunctor.Create;
pair1 := TPairValue.Create(-9654, 1);
pair2 := TPairValue.Create(-5250, 0);
if functor.Call(pair1, pair2) < 0 then
;
FreeAndNil(functor);
end;
uses
utils.functor, utils.pair;
type
generic TPairKeyCompareFunctorSingle<V> =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultPairKeyCompareFunctor<Single,
V>);
uses
utils.functor, utils.pair;
type
TPairValue = {$IFDEF FPC}specialize{$ENDIF} TPair<Single, Integer>;
TPairCompareFunctor = {$IFDEF FPC}specialize{$ENDIF} TPairKeyCompareFunctorSingle<Integer>;
var
functor : TPairCompareFunctor;
pair1, pair2 : TPairValue;
begin
functor := TPairCompareFunctor.Create;
pair1 := TPairValue.Create(2.2541, 1);
pair2 := TPairValue.Create(-2.3256, 0);
if functor.Call(pair1, pair2) < 0 then
;
FreeAndNil(functor);
end;
uses
utils.functor, utils.pair;
type
generic TPairKeyCompareFunctorReal<V> =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultPairKeyCompareFunctor<Real,
V>);
uses
utils.functor, utils.pair;
type
TPairValue = {$IFDEF FPC}specialize{$ENDIF} TPair<Real, Integer>;
TPairCompareFunctor = {$IFDEF FPC}specialize{$ENDIF} TPairKeyCompareFunctorReal<Integer>;
var
functor : TPairCompareFunctor;
pair1, pair2 : TPairValue;
begin
functor := TPairCompareFunctor.Create;
pair1 := TPairValue.Create(22.1, 1);
pair2 := TPairValue.Create(51.547, 0);
if functor.Call(pair1, pair2) < 0 then
;
FreeAndNil(functor);
end;
uses
utils.functor, utils.pair;
type
generic TPairKeyCompareFunctorDouble<V> =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultPairKeyCompareFunctor<Double,
V>);
uses
utils.functor, utils.pair;
type
TPairValue = {$IFDEF FPC}specialize{$ENDIF} TPair<Double, Integer>;
TPairCompareFunctor = {$IFDEF FPC}specialize{$ENDIF} TPairKeyCompareFunctorDouble<Integer>;
var
functor : TPairCompareFunctor;
pair1, pair2 : TPairValue;
begin
functor := TPairCompareFunctor.Create;
pair1 := TPairValue.Create(232.11, 1);
pair2 := TPairValue.Create(531.5247, 0);
if functor.Call(pair1, pair2) < 0 then
;
FreeAndNil(functor);
end;
uses
utils.functor, utils.pair;
type
generic TPairKeyCompareFunctorExtended<V> =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultPairKeyCompareFunctor<Extended,
V>);
uses
utils.functor, utils.pair;
type
TPairValue = {$IFDEF FPC}specialize{$ENDIF} TPair<Extended, Integer>;
TPairCompareFunctor = {$IFDEF FPC}specialize{$ENDIF} TPairKeyCompareFunctorExtended<Integer>;
var
functor : TPairCompareFunctor;
pair1, pair2 : TPairValue;
begin
functor := TPairCompareFunctor.Create;
pair1 := TPairValue.Create(2232.11, 1);
pair2 := TPairValue.Create(5321.5247, 0);
if functor.Call(pair1, pair2) < 0 then
;
FreeAndNil(functor);
end;
uses
utils.functor, utils.pair;
type
generic TPairKeyCompareFunctorCurrency<V> =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultPairKeyCompareFunctor<Currency,
V>);
uses
utils.functor, utils.pair;
type
TPairValue = {$IFDEF FPC}specialize{$ENDIF} TPair<Currency, Integer>;
TPairCompareFunctor = {$IFDEF FPC}specialize{$ENDIF} TPairKeyCompareFunctorCurrency<Integer>;
var
functor : TPairCompareFunctor;
pair1, pair2 : TPairValue;
begin
functor := TPairCompareFunctor.Create;
pair1 := TPairValue.Create(22.11, 1);
pair2 := TPairValue.Create(51.47, 0);
if functor.Call(pair1, pair2) < 0 then
;
FreeAndNil(functor);
end;
uses
utils.functor, utils.pair;
type
generic TPairKeyCompareFunctorBoolean<V> =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultPairKeyCompareFunctor<Boolean,
V>);
uses
utils.functor, utils.pair;
type
TPairValue = {$IFDEF FPC}specialize{$ENDIF} TPair<Boolean, Integer>;
TPairCompareFunctor = {$IFDEF FPC}specialize{$ENDIF} TPairKeyCompareFunctorBoolean<Integer>;
var
functor : TPairCompareFunctor;
pair1, pair2 : TPairValue;
begin
functor := TPairCompareFunctor.Create;
pair1 := TPairValue.Create(False, 1);
pair2 := TPairValue.Create(True, 0);
if functor.Call(pair1, pair2) < 0 then
;
FreeAndNil(functor);
end;
uses
utils.functor, utils.pair;
type
generic TPairKeyCompareFunctorChar<V> =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultPairKeyCompareFunctor<Char,
V>);
uses
utils.functor, utils.pair;
type
TPairValue = {$IFDEF FPC}specialize{$ENDIF} TPair<Char, Integer>;
TPairCompareFunctor = {$IFDEF FPC}specialize{$ENDIF} TPairKeyCompareFunctorChar<Integer>;
var
functor : TPairCompareFunctor;
pair1, pair2 : TPairValue;
begin
functor := TPairCompareFunctor.Create;
pair1 := TPairValue.Create('l', 1);
pair2 := TPairValue.Create('t', 0);
if functor.Call(pair1, pair2) < 0 then
;
FreeAndNil(functor);
end;
uses
utils.functor, utils.pair;
type
generic TPairKeyCompareFunctorWideChar<V> =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultPairKeyCompareFunctor<WideChar,
V>);
uses
utils.functor, utils.pair;
type
TPairValue = {$IFDEF FPC}specialize{$ENDIF} TPair<WideChar, Integer>;
TPairCompareFunctor = {$IFDEF FPC}specialize{$ENDIF} TPairKeyCompareFunctorWideChar<Integer>;
var
functor : TPairCompareFunctor;
pair1, pair2 : TPairValue;
begin
functor := TPairCompareFunctor.Create;
pair1 := TPairValue.Create('a', 1);
pair2 := TPairValue.Create('a', 0);
if functor.Call(pair1, pair2) < 0 then
;
FreeAndNil(functor);
end;
uses
utils.functor, utils.pair;
type
generic TPairKeyCompareFunctorAnsiString<V> =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultPairKeyCompareFunctor<AnsiString,
V>);
uses
utils.functor, utils.pair;
type
TPairValue = {$IFDEF FPC}specialize{$ENDIF} TPair<AnsiString, Integer>;
TPairCompareFunctor = {$IFDEF FPC}specialize{$ENDIF} TPairKeyCompareFunctorAnsiString<Integer>;
var
functor : TPairCompareFunctor;
pair1, pair2 : TPairValue;
begin
functor := TPairCompareFunctor.Create;
pair1 := TPairValue.Create('value', 1);
pair2 := TPairValue.Create('value 2', 0);
if functor.Call(pair1, pair2) < 0 then
;
FreeAndNil(functor);
end;
uses
utils.functor, utils.pair;
type
generic TPairKeyCompareFunctorString<V> =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultPairKeyCompareFunctor<String,
V>);
uses
utils.functor, utils.pair;
type
TPairValue = {$IFDEF FPC}specialize{$ENDIF} TPair<String, Integer>;
TPairCompareFunctor = {$IFDEF FPC}specialize{$ENDIF} TPairKeyCompareFunctorString<Integer>;
var
functor : TPairCompareFunctor;
pair1, pair2 : TPairValue;
begin
functor := TPairCompareFunctor.Create;
pair1 := TPairValue.Create('some value', 1);
pair2 := TPairValue.Create('another value', 0);
if functor.Call(pair1, pair2) < 0 then
;
FreeAndNil(functor);
end;
uses
utils.functor, utils.pair;
type
generic TPairKeyCompareFunctorWideString<V> =
class({$IFDEF FPC}specialize{$ENDIF} TDefaultPairKeyCompareFunctor<WideString,
V>);
uses
utils.functor, utils.pair;
type
TPairValue = {$IFDEF FPC}specialize{$ENDIF} TPair<WideString, Integer>;
TPairCompareFunctor = {$IFDEF FPC}specialize{$ENDIF} TPairKeyCompareFunctorWideString<Integer>;
var
functor : TPairCompareFunctor;
pair1, pair2 : TPairValue;
begin
functor := TPairCompareFunctor.Create;
pair1 := TPairValue.Create('some value', 1);
pair2 := TPairValue.Create('another value', 0);
if functor.Call(pair1, pair2) < 0 then
;
FreeAndNil(functor);
end;