O Pascalutils é uma biblioteca de objetos para Delphi e FreePascal de estruturas de dados que implementa o açúcar sintático semelhante ao de outras línguas modernas, tanto quanto a sintaxe permite.
Biblioteca é testada para
Obtenha as fontes e adicione o diretório de origem ao caminho de pesquisa do projeto. Para FPC, adicione o diretório de origem ao arquivo fpc.cfg .
Clone o repositório git clone https://github.com/isemenkov/pascalutils .
Adicione a unidade que você deseja usar à cláusula uses .
Tany Class descreve um contêiner seguro para um valor único.
uses
utils.any;
type
generic TAny<T> = classA classe topcional representa um valor opcional: cada topcional é um valor ou não, como em Rust Lang.
uses
utils.optional;
type
generic TOptional<T> = classMais detalhes lidos na página wiki.
Os tipos de resultados normalmente contêm um valor retornado ou um erro e podem fornecer o encapsulamento de primeira classe do padrão comum (valor, err) onipresente nos programas GO.
uses
utils.result;
type
generic TResult<V, E> = classMais detalhes lidos na página wiki.
O TVoidResult contém bandeira OK ou tipo de erro, como nos idiomas Go ou Rust. É um tipo Tresult especializado sem valor.
uses
utils.result;
type
generic TVoidResult<E> = classMais detalhes lidos na página wiki.
A classe TDataSize fornece a interface para manipular os tamanhos de dados.
uses
utils.datasize;
type
TDataSize = classMais detalhes lidos na página wiki.
A classe TTimeInterval fornece a interface para manipular intervalos de tempo.
uses
utils.timeinterval;
type
TTimeInterval = classMais detalhes lidos na página wiki.
TPAIR Class Coupla juntos um par de valores, que podem ser de diferentes tipos (T1 e T2). Os valores individuais podem ser acessados por meio de seus membros públicos primeiro e segundo, como no idioma C ++.
uses
utils.pair;
type
generic TPair<T1, T2> = classMais detalhes lidos na página wiki.
O TTUPLE é um objeto capaz de manter uma coleção de elementos. Cada elemento pode ser de um tipo diferente, como na linguagem 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> = classMais detalhes lidos na página wiki.
O TVariant é um modelo de classe que representa uma união segura por tipo. Uma instância do TVariant a qualquer momento possui um valor de um de seus tipos alternativos.
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> = classMais detalhes lidos na página wiki.
O Functor é a instância de uma classe com Call de função do membro definida. Essa função de membro permite que o objeto seja usado com a mesma sintaxe que uma chamada de função regular e, portanto, seu tipo pode ser usado como parâmetro de modelo quando um tipo de função genérico é esperado.
uses
utils.functor;
type
generic TUnaryFunctor<V, R> = classMais detalhes lidos na página wiki.
O Functor é a instância de uma classe com Call de função do membro definida. Essa função de membro permite que o objeto seja usado com a mesma sintaxe que uma chamada de função regular e, portanto, seu tipo pode ser usado como parâmetro de modelo quando um tipo de função genérico é esperado.
uses
utils.functor;
type
generic TBinaryFunctor<V, R> = classMais detalhes lidos na página wiki.
É um functor de comparação especial que retorna 0 (zero) todos os tempos. Valores reais não usados. Este functor pode ser usado para contêineres para valores não suportáveis.
uses
utils.functor;
type
TUnsortableFunctor =
class ( { $IFDEF FPC } specialize { $ENDIF } TBinaryFunctor<V, Integer>);Mais detalhes lidos na página wiki.
É um functor que retorna um valor negativo se o Avalue1 deve ser classificado antes do Avalue2, um valor positivo se o Avalue1 deve ser classificado após o AvaluE2, zero se Avalue1 e Avalue2 forem iguais.
uses
utils.functor;
type
generic TDefaultCompareFunctor<V> =
class ( { $IFDEF FPC } specialize { $ENDIF } TBinaryFunctor<V, Integer>)
public
function Call (AValue1, AValue2 : V) : Integer;
end ;Mais detalhes lidos na página wiki.
É um functor que retorna true se Avalue1 <Avalue2.
uses
utils.functor;
type
generic TDefaultLessFunctor<V> =
class ( { $IFDEF FPC } specialize { $ENDIF } TBinaryFunctor<V, Boolean>);Mais detalhes lidos na página wiki.
É um functor que retorna true se Avalue1> Avalue2.
uses
utils.functor;
type
generic TDefaultGreaterFunctor<V> =
class ( { $IFDEF FPC } specialize { $ENDIF } TBinaryFunctor<V, Boolean>);Mais detalhes lidos na página wiki.
É um functor que retorna true se Avalue1 = Avalue2.
uses
utils.functor;
type
generic TDefaultEqualFunctor<V> =
class ( { $IFDEF FPC } specialize { $ENDIF } TBinaryFunctor<V, Boolean>);Mais detalhes lidos na página wiki.
É um functor que retorna um valor negativo se a chave do par 1 deve ser classificada antes da chave do par 2, um valor positivo se a chave do par 1 deverá ser classificada após a chave do par 2, zero se a chave do par 1 e a tecla 2 do par 2 forem iguais.
uses
utils.functor, utils.pair;
uses
generic TDefaultPairKeyCompareFunctor<K, V> =
class ( { $IFDEF FPC } specialize { $ENDIF } TBinaryFunctor
< { $IFDEF FPC } specialize { $ENDIF } TPair<K, V>, Integer>)Mais detalhes lidos na página wiki.
API.CSTRING é um invólucro em torno do valor do CString char * .
uses
utils.api.cstring;
type
API = class
type
CString = class
end ;Mais detalhes lidos na página wiki.
TarrayerrorrorsStack é pilha genérica sobre a matriz de T, que contém códigos de erros.
uses
utils.errorsstack;
type
generic TArrayErrorsStack<T> = classMais detalhes lidos na página wiki.
O TlisterRorsStack é uma pilha genérica sobre a lista de classes T, que contém códigos de erros.
uses
utils.errorsstack;
type
generic TListErrorsStack<T> = classMais detalhes lidos na página wiki.
O TFORWARDIDERADOR é uma classe base para iteradores de direção para frente personalizados.
uses
utils.enumerate;
type
generic TForwardIterator<V, Iterator> = classMais detalhes lidos na página wiki.
O TbidirectionAliterator é uma classe base para iteradores de direções para frente e para trás personalizadas.
uses
utils.enumerate;
type
generic TBidirectionalIterator<V, Iterator> = classMais detalhes lidos na página wiki.
A classe Tenumerator adiciona contador a objetos iteráveis, o que o iterador baseado no TforwardIderator ou no TbidirectionAterator e o retorna (o objeto enumerado) como em uma linguagem python.
uses
utils.enumerate;
type
generic TEnumerator<V, Iterator> = classMais detalhes lidos na página wiki.
A classe Tfilterenumerator fornece enumerador de filtragem por unaryfunctor.
uses
utils.enumerate, utils.functor;
type
generic TFilterEnumerator<V, Iterator, Functor> = classO functor é baseado na interface utils.functor.tunaryfunctor e usado para filtrar o valor do item.
Mais detalhes lidos na página wiki.
Valores acumulados tacumulados usando funções binárias (especificadas através do argumento do functor).
uses
utils.functional, utils.functor;
type
generic TAccumulate<V, Iterator, Functor> = classO functor é baseado na interface utils.functor.tbinaryfunctor e usado para acumular o valor do resultado.
Mais detalhes lidos na página wiki.
TMAP aplicando o functor fornecido a cada item de um objeto iterável determinado).
uses
utils.functional, utils.functor;
type
generic TMap<V, Iterator, Functor> = classO functor é baseado na interface utils.functor.tunaryfunctor e usado para modificar o valor do item.
Mais detalhes lidos na página wiki.