Bienvenue ! (welcome)
Yet this page is in french (translation coming soon) please contact me for help.
Ce qu'est la lib utils
Lib utils (sous licence gpl) est ,comme son nom l'indique, une librairie d'utilitaires qui peuvent être pratiques pour celui qui programme en C++.
Cette librairie fournit par exemple un ensemble de classes permettant d'obtenir toutes les fonctionnalités (stockage et indexation) d'une librairie de type isam.
En c comme en c++, la gestion de la mémoire, et plus précisément la détection du "memory leak" est toujours un casse tête. La classe Garbage a été réalisée pour pallier à ce type de problèmes.
Je compte réaliser une documentation décrivant l'ensemble des fonctionnalités de la librairie pour ceux qui veulent plus d'info.
Perso, j'utilise cette librairie pour la version en cours de développement de mon logiciel de course (pour la communication réseau et pour le stockage/indexation).
Pour l'instant, la librairie n'est proposée qu'en version V1rc3, qui me semble assez stable, mais c'est à confirmer par des tests plus poussés...
Ce qu'elle contient plus précisément
-
class Garbage : activable si l'on rajoute le flag de compil -DDEBUG_MEM. Au lieu d'utiliser le new et le free classique, utilisez NEW et FREE (cf Garbage.hpp). A la fin de votre propramme, appelez la macro COLLECTE() : celà affichera l'ensemble des blocks mémoires non libérés. De plus, en utilisant DELETE, vous n'avez aucun risque de liberer un block mémoire que vous n'auriez pas alloué vous même (en interme, les blocks mémoire alloués sont chaînés).
Sans le flag -DDEBUG_MEM, le garbage n'est pas utilisé (vous ne perdez donc pas en performances).
-
class Thread : facilite la création de thread à l'aide de la librairie pthread (thread posix).
- Utilitaires de stockage/indexation : TreeNode,BinaryTree et BinaryTreePool sont les classes principales de la partie stockage de la librairie. L'idée générale est la suivante : les données sont indexées dans des arbres binaires balancés, chaque donnée (node) doit dériver de TreeNode. La gestion du stockage (interfaces utilisateurs) est assurée par la classe BinaryTreePool. L'indexation full-text n'est pas encore présente (mais c'est pour bientôt). Le but de ces classes n'est pas de remplacer une base de donnée, mais plutôt de permettre au programmeur qui ne veut pas dépendre d'une base de donnée pour des opération de stockage simples de s'en passer.
-
Enfin, la librairie contient des classes qui permettent la création simplifiée de socket (pour l'instant seul tcp a été implementé).
le source !!
- Version 2 (rc1) : Plein de modifications (stockage disque sans consommation mémoire, garbage plus performant, ...). Ce moteur est utilisé pour la sonotec de digital-salade (en cours de réalisation). La prochaine étape : rédaction de la documentation et de la page anglaise du projet.
- Version 1 : version utilisée en prod avec mon soft de course (base contenant 1050 coureurs) : bonne performance, aucun problème.
- Version 1rc5 : les codes utilisés pour les exceptions sont générés, l'utilisateur peut facilement convertir un code d'erreur en son statut texte associé. De petites corrections de bugs et ajout de fonctions à la classe DataBuffer.
- Version 1rc4 : Des améliorations, et des bugs en moins (pas bcp de changement).
- Version 1rc3