Julien Jorge

Mon CV en ligne, en plus divertissant que la version papier.

libclaw

CLAW (a C++ Library Absolutely Wonderful) est une bibliothèque logicielle en C++ dans laquelle je range les petits outils dont j'ai besoin sur mes projets. Cela me permet d'éviter d'avoir des copies de ces outils dans tous mes projets. De plus, à chaque fois que j'améliore un outil, tous les projets en profitent, parfois au prix d'une petite variation de l'interface de programmation.

Cette bibliothèque a déjà son propre site. Ainsi, je ne citerai ci-dessous qu'une partie des outils disponibles.

Les outils de cette bibliothèque sont nombreux. On y trouve diverses structures de données (arbre AVL, des tableaux associatifs pouvant contenir différents types de données) ainsi que des outils géométriques (coordonnées, rectangles, vecteurs, lignes), mais aussi des algorithmes comme l'élagage alpha-beta ou l'encodage et le décodage RLE et LZW.

Une partie de la bibliothèque concerne les images, avec lecture et écriture des types bmp, png, jpeg, pcx, targa, xbm.

De nombreux outils de manipulation de conteneurs sont aussi présents. Par exemple, un objet wrapped_iterator permet d'itérer sur un conteneur tout en appliquant une fonction aux objets contenus. Ainsi, je peux par exemple parcourir une liste de pointeurs en utilisant un wrapped_iterator et la fonction dereference pour que l'itération se fasse comme si la liste contenait directement les objets et non pas des pointeurs.

Certaines classes sont là pour faciliter l'écriture du programme, par exemple pour gérer les paramètres de la ligne de commande ou lire un fichier de configuration.

Enfin, la bibliothèque propose plusieurs fonction de traitement de chaînes de caractères, la manipulation de sockets comme des flux standards, un ensemble de classe pour afficher des informations pendant l'exécution du programme, avec différents niveaux de verbosité, et encore plein d'autres outils.