Pascalutils - это библиотека объектов для Delphi и Freepascal структур данных, которые реализуют синтаксический сахар, аналогичный другим современным языкам, насколько позволяет синтаксис.
Библиотека проверяется на
Получите источники и добавьте исходный каталог в путь поиска проекта. Для FPC добавьте исходный каталог в файл FPC.CFG .
Клон репозиторий git clone https://github.com/isemenkov/pascalutils .
Добавьте блок, который вы хотите использовать в пункт « uses .
Tany Class описывает контейнер-защитный тип для единого значения.
uses
utils.any;
type
generic TAny<T> = classКласс Toptional представляет собой дополнительное значение: каждый верхний топ является значением или нет, как в Rust Lang.
uses
utils.optional;
type
generic TOptional<T> = classБолее подробная информация читайте на странице вики.
Типы результатов обычно содержат либо возвращаемое значение, либо ошибку, и могут обеспечить первоклассную инкапсуляцию общего (значения, ошибочного) шаблона, вездесущего во всех программах GO.
uses
utils.result;
type
generic TResult<V, E> = classБолее подробная информация читайте на странице вики.
TvoidResult содержит OK Flag или тип ошибки, как на языках Go или Rust. Это специализированный тип TRESULT без значения.
uses
utils.result;
type
generic TVoidResult<E> = classБолее подробная информация читайте на странице вики.
Класс Tdatasize Предоставьте интерфейс для манипулирования размерами данных.
uses
utils.datasize;
type
TDataSize = classБолее подробная информация читайте на странице вики.
Класс ttimeInterval обеспечивает интерфейс для манипулирования интервалами времени.
uses
utils.timeinterval;
type
TTimeInterval = classБолее подробная информация читайте на странице вики.
Класс TPAIR объединяет пару значений, которые могут быть разных типов (T1 и T2). Индивидуальные ценности можно получить через своих публичных членов первым и вторым, как на языке C ++.
uses
utils.pair;
type
generic TPair<T1, T2> = classБолее подробная информация читайте на странице вики.
Ttuple - это объект, способный содержать коллекцию элементов. Каждый элемент может быть разного типа, как на языке C ++.
uses
utils.tuple;
type
generic TTuple3<T1, T2, T3> = class
generic TTuple4<T1, T2, T3, T4> = class
generic TTuple5<T1, T2, T3, T4, T5> = class
generic TTuple6<T1, T2, T3, T4, T5, T6> = class
generic TTuple7<T1, T2, T3, T4, T5, T6, T7> = class
generic TTuple8<T1, T2, T3, T4, T5, T6, T7, T8> = class
generic TTuple9<T1, T2, T3, T4, T5, T6, T7, T8, T9> = class
generic TTuple10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> = classБолее подробная информация читайте на странице вики.
Tvariant-это шаблон класса, который представляет собой безрезультатный союз. Экземпляр Tvariant в любой момент времени либо имеет значение одного из его альтернативных типов.
uses
utils.variant;
type
generic TVariant2<T1, T2> = class
generic TVariant3<T1, T2, T3> = class
generic TVariant4<T1, T2, T3, T4> = class
generic TVariant5<T1, T2, T3, T4, T5> = class
generic TVariant6<T1, T2, T3, T4, T5, T6> = class
generic TVariant7<T1, T2, T3, T4, T5, T6, T7> = class
generic TVariant8<T1, T2, T3, T4, T5, T6, T7, T8> = class
generic TVariant9<T1, T2, T3, T4, T5, T6, T7, T8, T9> = class
generic TVariant10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> = classБолее подробная информация читайте на странице вики.
Функтор является экземпляром класса с определенным Call функции члена. Эта функция элемента позволяет использовать объект с тем же синтаксисом, что и обычный вызов функции, и поэтому его тип можно использовать в качестве параметра шаблона, когда ожидается общий тип функции.
uses
utils.functor;
type
generic TUnaryFunctor<V, R> = classБолее подробная информация читайте на странице вики.
Функтор является экземпляром класса с определенным Call функции члена. Эта функция элемента позволяет использовать объект с тем же синтаксисом, что и обычный вызов функции, и поэтому его тип можно использовать в качестве параметра шаблона, когда ожидается общий тип функции.
uses
utils.functor;
type
generic TBinaryFunctor<V, R> = classБолее подробная информация читайте на странице вики.
Это особый функтор, который возвращает 0 (ноль) все время. Реальные значения не используются. Этот функтор может быть использован для контейнеров для несущественных значений.
uses
utils.functor;
type
TUnsortableFunctor =
class ( { $IFDEF FPC } specialize { $ENDIF } TBinaryFunctor<V, Integer>);Более подробная информация читайте на странице вики.
Это функтор, который возвращает отрицательное значение, если Avalue1 следует отсортировать перед Avalue2, положительное значение, если Avalue1 следует отсортировать после Avalue2, ноль, если Avalue1 и Avalue2 равны.
uses
utils.functor;
type
generic TDefaultCompareFunctor<V> =
class ( { $IFDEF FPC } specialize { $ENDIF } TBinaryFunctor<V, Integer>)
public
function Call (AValue1, AValue2 : V) : Integer;
end ;Более подробная информация читайте на странице вики.
Это функтор, который возвращается правдой, если Avalue1 <Avalue2.
uses
utils.functor;
type
generic TDefaultLessFunctor<V> =
class ( { $IFDEF FPC } specialize { $ENDIF } TBinaryFunctor<V, Boolean>);Более подробная информация читайте на странице вики.
Это функтор, который возвращается правдой, если Avalue1> Avalue2.
uses
utils.functor;
type
generic TDefaultGreaterFunctor<V> =
class ( { $IFDEF FPC } specialize { $ENDIF } TBinaryFunctor<V, Boolean>);Более подробная информация читайте на странице вики.
Это функтор, который возвращает True, если Avalue1 = Avalue2.
uses
utils.functor;
type
generic TDefaultEqualFunctor<V> =
class ( { $IFDEF FPC } specialize { $ENDIF } TBinaryFunctor<V, Boolean>);Более подробная информация читайте на странице вики.
Это функтор, который возвращает отрицательное значение, если клавиша пары 1 следует сортировать перед клавиш пары 2, положительное значение, если клавиша пары 1 следует сортировать после клавиши пары 2, ноль, если клавиша пары 1 и клавиша пары 2 равны.
uses
utils.functor, utils.pair;
uses
generic TDefaultPairKeyCompareFunctor<K, V> =
class ( { $IFDEF FPC } specialize { $ENDIF } TBinaryFunctor
< { $IFDEF FPC } specialize { $ENDIF } TPair<K, V>, Integer>)Более подробная информация читайте на странице вики.
API.CString - это обертка вокруг C -языкового API CSTRING char * .
uses
utils.api.cstring;
type
API = class
type
CString = class
end ;Более подробная информация читайте на странице вики.
TarrayErrorsStack - это общий стек по массиву T, который содержит коды ошибок.
uses
utils.errorsstack;
type
generic TArrayErrorsStack<T> = classБолее подробная информация читайте на странице вики.
TlisterrorsStack - это общий стек по списку классов T, который содержит коды ошибок.
uses
utils.errorsstack;
type
generic TListErrorsStack<T> = classБолее подробная информация читайте на странице вики.
TforwardIterator - это базовый класс для пользовательских итераторов направления направления.
uses
utils.enumerate;
type
generic TForwardIterator<V, Iterator> = classБолее подробная информация читайте на странице вики.
Tbidy FirectionAliterator - это базовый класс для пользовательских итераторов направления вперед и назад.
uses
utils.enumerate;
type
generic TBidirectionalIterator<V, Iterator> = classБолее подробная информация читайте на странице вики.
Класс терминатора добавляет счетчика к итерационным объектам, которые имеют итератор на основе TFORwarditerator или TbideCectionAliterator, и возвращает его (перечислимый объект), как на языке питона.
uses
utils.enumerate;
type
generic TEnumerator<V, Iterator> = classБолее подробная информация читайте на странице вики.
Класс TFILTERENUMERATOR обеспечивает перечисление фильтрации от UnaryFunctor.
uses
utils.enumerate, utils.functor;
type
generic TFilterEnumerator<V, Iterator, Functor> = classФунктор основан на интерфейсе Utils.functor.tunaryFunctor и используется для фильтрации значения элемента.
Более подробная информация читайте на странице вики.
Следуйте накопленные значения с использованием бинарных функций (указанные через аргумент функционирования).
uses
utils.functional, utils.functor;
type
generic TAccumulate<V, Iterator, Functor> = classФунктор основан на границе раздела UTILS.Functor.tbinaryFunctor и используется для накопления значения результата.
Более подробная информация читайте на странице вики.
TMAP, применяя заданный функтор к каждому элементу данного итерабируемого объекта).
uses
utils.functional, utils.functor;
type
generic TMap<V, Iterator, Functor> = classFunctor основан на интерфейсе Utils.functor.tunaryfunctor и используется для изменения значения элемента.
Более подробная информация читайте на странице вики.