chelper: uma biblioteca de extensão do C

Conheça nesse artigo o chelper, é uma biblioteca de módulos portáveis e reusáveis para expandir as funcionalidades do C.
chelper

Tem mais ou menos um ano que o chelper foi criado. Na época eu estava desenvolvendo os motores de uma interface gráfica em C para um projeto e tornou-se necessário o uso de vetores, pilhas, strings, FIFOs e de um sistema inteligente de callbacks, que fora inteligentemente baseado no Qt e batizado de Signal Slot. Considerando que esses módulos são frequentemente reescritos a cada projeto decidi criar uma biblioteca de módulos reusáveis e disponibilizá-la como código aberto para terminar de vez com esse ciclo perturbador. Desde lá venho usando o chelper em todos os projetos que permitem e conforme a necessidade novos módulos são criados ou os atuais são expandidos.

http://github.com/felipe-lavratti/chelper

Em resumo, o chelper é uma biblioteca de módulos portáveis e reusáveis para expandir as funcionalidades do C, é open-source e qualquer um pode expandi-lo através do GitHub, contanto que algumas regras sejam obedecidas:

  • testes unitários devem ser escritos para cada operação do módulo, preferencialmente seguindo as recomendações de TDD;
  • os módulos devem ser portáveis, escritos em C89;
  • práticas acordadas de programação devem ser obedecidas assim como código, comentários e documentação sempre em inglês.

Os testes unitários, além do objetivo óbvio, servem para ilustrar o uso dos módulos no lugar de documentações extensivas, e, naturalmente, os módulos devem ser escritos em C portável para que possam rodar em qualquer processador e sistema operacional.

Atualmente o chelper conta apenas com nove módulos, ainda tem muito trabalho pela frente mas esses nove módulos já vão tornar o nosso trabalho de desenvolvedor um pouco mais fácil. Entretanto, como trabalho muito com linux embarcado, os módulos fazem uso frequente de malloc/free, o que pode limitar o seu uso em pequenos microcontroladores, mas essa limitação vai ser contornada com a adaptação dos módulos que deve ocorrer no futuro.

  • Vector: baseado no Vector do C++, usa uma região de memória sequencial para armazenar os itens, gerenciando automaticamente eventuais expansões.
  • Ring FIFO: implementa uma FIFO em anel convencional.
  • Fast Ring FIFO: implementa uma FIFO em anel apenas com defines e inlines, o número de itens precisa ser múltiplo de 2^n.
  • String: módulo básico de string baseado no C++, mas usa um Vector como gerenciador da lista de caracteres.
  • Signal Slot: baseado no Qt, usa um Vector para armazenar a lista de slots. Como não é possível usar argumentos variáveis nesse sistema, vai ser repetido de acordo com a assinatura dos slots.
  • Number: Auxiliar numérico, atualmente é redundante ao ctype.h.
  • Timeout: Computador de timeouts, atualmente é dependente time.h do posix, mas pode ser facilmente adaptado para usar um timer ou relógio de microcontrolador. Deve ser renomeado para pTimeout
  • Log: Sistema de mensagens de log, dependente do posix, usa o syslog e precisa de revisão de suas funcionalidades.

Por fim, fica registrado o convite a todos os interessados em usar e abusar dessa biblioteca, e, aqueles que se identificarem com a ideia de contribuir com o chelper, entrem em contato!

Engenheiro, desenvolve software para embarcados e Linux, evangelista dos processos de qualidade.
Mais informações e redes sociais: http://flp.lv

Notificações
Notificar
guest
1 Comentário
recentes
antigos mais votados
Inline Feedbacks
View all comments
Leonardo José Consoni
Leonardo José Consoni
15/08/2016 21:14

Não seria interessante tentar submeter algumas das funcionalidades que você criou para serem incorporadas à Klib (https://github.com/attractivechaos/klib) ?

WEBINAR

Visão Computacional para a redução de erros em processos manuais

DATA: 23/09 ÀS 17:00 H