This repository was archived by the owner on Feb 24, 2025. It is now read-only.
- Notifications
You must be signed in to change notification settings - Fork 10
TAccumulate
Ivan Semenkov edited this page Feb 1, 2021 · 3 revisions
- About
- Create
- Value
- Default addition functors
- TAdditionByteFunctor
- TAdditionShortIntFunctor
- TAdditionWordFunctor
- TAdditionSmallIntFunctor
- TAdditionIntegerFunctor
- TAdditionDWordFunctor
- TAdditionCardinalFunctor
- TAdditionLongWordFunctor
- TAdditionLongIntFunctor
- TAdditionQWordFunctor
- TAdditionInt64Functor
- TAdditionSingleFunctor
- TAdditionRealFunctor
- TAdditionDoubleFunctor
- TAdditionExtendedFunctor
- TAdditionCurrencyFunctor
- TAdditionStringFunctor
- TAdditionWideStringFunctor
- Default multiplication functors
- TMultiplicationByteFunctor
- TMultiplicationShortIntFunctor
- TMultiplicationWordFunctor
- TMultiplicationSmallIntFunctor
- TMultiplicationIntegerFunctor
- TMultiplicationDWordFunctor
- TMultiplicationCardinalFunctor
- TMultiplicationLongWordFunctor
- TMultiplicationLongIntFunctor
- TMultiplicationQWordFunctor
- TMultiplicationInt64Functor
- TMultiplicationSingleFunctor
- TMultiplicationRealFunctor
- TMultiplicationDoubleFunctor
- TMultiplicationExtendedFunctor
- TMultiplicationCurrencyFunctor
Accumulate iterable object data using functor.
uses utils.functional; type generic TAccumulate<V; Iterator; Functor> = classIterator is a forward iterator implemented object.
A new accumulate object can be created by call its constructor.
constructor Create (AIterator : Iterator; AInitial : V);AIterator is a forward iterator implemented object.
AInitial is initial accumulate value.
uses container.list, utils.functor, utils.functional; type TIntegerList = {$IFDEF FPC}specialize{$ENDIF} TList<Integer, TCompareFunctorInteger>; TSumFunctor = class({$IFDEF FPC}specialize{$ENDIF} TBinaryFunctor<Integer, Integer>) public function Call(AValue1, AValue2 : Integer) : Integer; override; begin Result := AValue1 + AValue2; end; end; TIntegerSumAccumulate = {$IFDEF FPC}specialize{$ENDIF} TAccumulate<Integer, TIntegerList.TIterator, TSumFunctor>; var list : TIntegerList; accumalate : TIntegerSumAccumulate; begin list := TIntegerList.Create; accumulate := TIntegerSumAccumulate.Create(list.FirstEntry, 0); FreeAndNil(accumulate); FreeAndNil(list); end;To get value use Value property.
property Value : V;uses container.list, utils.functor, utils.functional; type TIntegerList = {$IFDEF FPC}specialize{$ENDIF} TList<Integer, TCompareFunctorInteger>; TSumFunctor = class({$IFDEF FPC}specialize{$ENDIF} TBinaryFunctor<Integer, Integer>) public function Call(AValue1, AValue2 : Integer) : Integer; override; begin Result := AValue1 + AValue2; end; end; TIntegerSumAccumulate = {$IFDEF FPC}specialize{$ENDIF} TAccumulate<Integer, TIntegerList.TIterator, TSumFunctor>; var list : TIntegerList; accumalate : TIntegerSumAccumulate; begin list := TIntegerList.Create; accumulate := TIntegerSumAccumulate.Create(list.FirstEntry, 0); writeln(accumulate.Value); FreeAndNil(accumulate); FreeAndNil(list); end;There are defined some default addition functors.
uses utils.functional; type TAdditionByteFunctor = class ({$IFDEF FPC}specialize{$ENDIF} TBinaryFunctor<Byte, Byte>)uses utils.functional; type TAdditionByteFunctor = class ({$IFDEF FPC}specialize{$ENDIF} TBinaryFunctor<ShortInt, ShortInt>)uses utils.functional; type TAdditionWordFunctor = class ({$IFDEF FPC}specialize{$ENDIF} TBinaryFunctor<Word, Word>)uses utils.functional; type TAdditionSmallIntFunctor = class ({$IFDEF FPC}specialize{$ENDIF} TBinaryFunctor<SmallInt, SmallInt>)uses utils.functional; type TAdditionIntegerFunctor = class ({$IFDEF FPC}specialize{$ENDIF} TBinaryFunctor<Integer, Integer>)This functor available for FreePascal compiler only!
uses utils.functional; type TAdditionDWordFunctor = class ({$IFDEF FPC}specialize{$ENDIF} TBinaryFunctor<DWord, DWord>)uses utils.functional; type TAdditionCardinalFunctor = class ({$IFDEF FPC}specialize{$ENDIF} TBinaryFunctor<Cardinal, Cardinal>)uses utils.functional; type TAdditionLongWordFunctor = class ({$IFDEF FPC}specialize{$ENDIF} TBinaryFunctor<LongWord, LongWord>)uses utils.functional; type TAdditionLongIntFunctor = class ({$IFDEF FPC}specialize{$ENDIF} TBinaryFunctor<LongInt, LongInt>)This functor available for FreePascal compiler only!
uses utils.functional; type TAdditionQWordFunctor = class ({$IFDEF FPC}specialize{$ENDIF} TBinaryFunctor<QWord, QWord>)uses utils.functional; type TAdditionInt64Functor = class ({$IFDEF FPC}specialize{$ENDIF} TBinaryFunctor<Int64, Int64>)uses utils.functional; type TAdditionSingleFunctor = class ({$IFDEF FPC}specialize{$ENDIF} TBinaryFunctor<Single, Single>)uses utils.functional; type TAdditionRealFunctor = class ({$IFDEF FPC}specialize{$ENDIF} TBinaryFunctor<Real, Real>)uses utils.functional; type TAdditionDoubleFunctor = class ({$IFDEF FPC}specialize{$ENDIF} TBinaryFunctor<Double, Double>)uses utils.functional; type TAdditionExtendedFunctor = class ({$IFDEF FPC}specialize{$ENDIF} TBinaryFunctor<Extended, Extended>)uses utils.functional; type TAdditionCurrencyFunctor = class ({$IFDEF FPC}specialize{$ENDIF} TBinaryFunctor<Currency, Currency>)uses utils.functional; type TAdditionStringFunctor = class ({$IFDEF FPC}specialize{$ENDIF} TBinaryFunctor<String, String>)uses utils.functional; type TAdditionWideStringFunctor = class ({$IFDEF FPC}specialize{$ENDIF} TBinaryFunctor<WideString, WideString>)There are defined some default multiplication functors.
uses utils.functional; type TMultiplicationByteFunctor = class ({$IFDEF FPC}specialize{$ENDIF} TBinaryFunctor<Byte, Byte>)uses utils.functional; type TMultiplicationShortIntFunctor = class ({$IFDEF FPC}specialize{$ENDIF} TBinaryFunctor<ShortInt, ShortInt>)uses utils.functional; type TMultiplicationWordFunctor = class ({$IFDEF FPC}specialize{$ENDIF} TBinaryFunctor<Word, Word>)uses utils.functional; type TMultiplicationSmallIntFunctor = class ({$IFDEF FPC}specialize{$ENDIF} TBinaryFunctor<SmallInt, SmallInt>)uses utils.functional; type TMultiplicationIntegerFunctor = class ({$IFDEF FPC}specialize{$ENDIF} TBinaryFunctor<Integer, Integer>)This functor available for FreePascal compiler only!
uses utils.functional; type TMultiplicationDWordFunctor = class ({$IFDEF FPC}specialize{$ENDIF} TBinaryFunctor<DWord, DWord>)uses utils.functional; type TMultiplicationCardinalFunctor = class ({$IFDEF FPC}specialize{$ENDIF} TBinaryFunctor<Cardinal, Cardinal>)uses utils.functional; type TMultiplicationLongWordFunctor = class ({$IFDEF FPC}specialize{$ENDIF} TBinaryFunctor<LongWord, LongWord>)uses utils.functional; type TMultiplicationLongIntFunctor = class ({$IFDEF FPC}specialize{$ENDIF} TBinaryFunctor<LongInt, LongInt>)This functor available for FreePascal compiler only!
uses utils.functional; type TMultiplicationQWordFunctor = class ({$IFDEF FPC}specialize{$ENDIF} TBinaryFunctor<QWord, QWord>)uses utils.functional; type TMultiplicationInt64Functor = class ({$IFDEF FPC}specialize{$ENDIF} TBinaryFunctor<Int64, Int64>)uses utils.functional; type TMultiplicationSingleFunctor = class ({$IFDEF FPC}specialize{$ENDIF} TBinaryFunctor<Single, Single>)uses utils.functional; type TMultiplicationRealFunctor = class ({$IFDEF FPC}specialize{$ENDIF} TBinaryFunctor<Real, Real>)uses utils.functional; type TMultiplicationDoubleFunctor = class ({$IFDEF FPC}specialize{$ENDIF} TBinaryFunctor<Double, Double>)uses utils.functional; type TMultiplicationExtendedFunctor = class ({$IFDEF FPC}specialize{$ENDIF} TBinaryFunctor<Extended, Extended>)uses utils.functional; type TMultiplicationCurrencyFunctor = class ({$IFDEF FPC}specialize{$ENDIF} TBinaryFunctor<Currency, Currency>)