Claw Logo

Cette page est disponible dans les langues suivantes : English, Français

Présentation

Claw (C++ Library Absolutely Wonderful) est une bibliothèque C++ absolument merveilleuse. L'histoire de Claw commence lorsque j'ai voulu grouper tous les petits outils que j'ai réalisé durant mes études à l'université. La bibliothèque progresse de temps en temps, quand j'ai besoin d'un nouvel outil.

Claw veut respecter les standards et être aussi portable que possible. Bien sûr, étant donné que je suis actuellement le seul développeur, la tâche est un petit peu difficile et vous pourriez avoir quelques problèmes mineurs. Si vous rencontrez un problème faites le moi savoir, s'il vous plaît.

Claw n'a pas d'objectif particulier sauf pouvoir être utile à quelqu'un.

Cliquez ici pour voir les changements avec la version précédente.

Classes

Claw est faite de plusieurs classes. Toutes sont documentées avec Doxygen. Voici une petite présentation de ces classes.

Structures de données

automaton cette classe est un automate simple. La structure autorise l'automate à ne pas être déterministe.
avl un AVL (Adelson, Velskij, et Landis ; les noms des auteurs) est un arbre binaire de recherche avec la propriété que la différence entre les profondeurs des sous arbres gauche et droit est, au plus, 1.
basic_singleton
le design pattern du singleton
graph une classe implantant une structure de graphe avec l'implantation en listes d'adjacence.
multi_type_map une map pouvant contenir des valeurs de types différents associés à une même clé.
ordered_set un "ordered_set" est un ensemble, mais ordonné.
tree Une structure d'arbre de degré quelconque.
trie un trie est une structure de type arborescente utilisée pour stocker des chaînes (mots) avec une représentation unique pour les préfixes communs en mémoire.

Concepts mathématiques

box_2d une boîte dans un espace 2D est représentée par les coordonnées de deux coins opposés.
coordinate_2d abscisse et ordonnée.
line_2d une ligne dans un espace 2D.
rectangle un rectangle dans un espace 2D. Comme claw::math::box_2d mais représenté par ses coordonnées et sa taille.
vector_2d un vecteur dans un espace 2D.

Algorithmes

game_state, min_max, alpha_beta classes pour implanter facilement une intelligence artificielle dans les jeux de plateaux à deux joueurs.
scan_events interface pour tous les événements survenant lors du parcours d'un graphe.
breadth_scan cet algorithme fait un parcours en largeur d'abord dans un graphe.
depth_scan cet algorithme fait un parcours en profondeur d'abord dans un graphe.
topological_sort cet algorithme fait un tri topologique d'un graphe orienté et acyclique.
kmp algorithme linéaire de Knuth, Morris et Pratt pour la recherche de motif dans des chaînes (pas seulement du texte).
rle_encoder, rle_decoder classes pour aider à l'encodage/décodage de flux RLE (Run Length Encoding)
lzw_encoder, lzw_decoder classes pour aider à l'encodage/décodage de flux LZW (Lempel, Ziv, Welch)

Graphisme

color_palette une classe pour gérer la palette des couleurs dans les images avec palette.
bitmap une classe simple pour lire et écrire des fichiers bitmap (24 bpp seulement en écriture).
image une classe de base pour la manipulation d'images en 32 bpp.
jpeg une classe pour lire et écrire des images au format jpeg. Utilise la jpeglib.
pcx une classe simple pour lire et écrire des fichiers au format pcx (24 bpp seulement en écriture).
png une classe pour lire et écrire des images au format png. Utilise la libpng.
targa une classe pour lire et écrire des fichiers Targa (32 bpp seulement en écriture).
xbm une classe pour lire et écrire des fichiers au format xbm.

Outils

Itérateurs

it_index une classe pour manipuler un un indice (entier) et un itérateur facilement.
wrapped_iterator un itérateur qui applique une fonction sur chaque objet pointé. La fonction appliqué doit retourner une référence vers un objet. Par exemple, combiné avec claw::pair_first, il permet d'itérer sur les clés d'un std::map.

Foncteurs

binary_true un foncteur binaire retournant true.
clone un foncteur qui copie un objet pointé.
delete_function un foncteur qui libère un pointeur.
dereference un foncteur qui déréférence un pointeur. Existe aussi en version const_*
pair_first, pair_second, first, second ces classes sont des foncteurs retournant le premier (ou le second) membre d'un std::pair (utile quand vous avez besoin de récupérer les clés d'un std::map). Elles existent aussi en version const_*
unary_compose un foncteur qui compose deux foncteurs.
unary_true un foncteur unaire retournant true.

Application

application cette classe devrait vous aider à définir la classe principale de votre application et à vous occuper des paramètres de la ligne de commande.
arguments_table une classe pour gérer les arguments du programme, avec une gestion automatique des arguments courts/longs et du message d'aide.
arguments si vous ne voulez pas utiliser la classe claw::application, vous pouvez toujours utiliser celle là pour vous occuper des arguments passés à votre programme.
dynamic_library cette classe permet de charger des bibliothèques dynamiquement et de récupé des pointeurs de fonction sur ses symboles.

Meta-programmation

if_then_else déclaration de type conditionnelle.
same_type teste si deux types sont identiques.
type_list une liste de types.
type_list_find vérifie qu'une liste de types contient un type donné.
type_list_is_a_set vérifie que chaque type d'une liste de types n'y est présent qu'une seule fois.

Système

config_file une classe permettant de charger des informations depuis un fichier de configuration (genre .ini sous Windows).
system_info une classe pour obtenir des informations sur le système ou l'utilisateur.

Divers

exception une classe d'exception conforme au standard qui vous permet de passer une chaîne descriptive au constructeur.
logger cette classe peut vous aider à tracer votre programme avec différents niveaux de log.
non_copyable héritez de cette classe si vous ne voulez pas que votre classe soit copiable.
smart_ptr une classe de pointeur intelligent, avec comptage de références.

Flux

bit_istream, bit_ostream des classes pour aider à lire et écrire des donné sur un nombre quelconque de bits.
buffered_istream, buffered_ostream ces classes est là pour vous aider à lire et écrire dans un flux à l'aide d'un tampon.

Réseau

isocket_stream, osocket_stream, socket_stream implantation des sockets Unix, pour être utilisés comme n'importe quel flux de la bibliothèque C++ standard.
socket_server une classe pour ouvrir facilement un socket et créer un claw::net::socketstream depuis les connexions entrantes.

Fonctions

Chaînes de caractères

trim_left, trim_right, trim supprime les espaces (ou n'importe quel ensemble de caractrères) à gauche/droite/des deux cotés d'une chaîne.
squeeze groupe les caractères identiques et successifs, à partir d'un ensemble de caractères.
is_of_type indique si une chaîne contient une donnée d'un certain type.

Documentation

La documentation des classes est disponible en ligne.

Téléchargement

Choisissez le fichier correspondant à votre distribution et/ou système d'exploitation.

code source bibliothèques compilées
Ubuntu Hardy
fichiers de développement
Ubuntu Hardy
installateur pour Windows
Windows XP
Le téléchargement des précédentes versions est disponible depuis le site de sourceforge.

Licence

Claw est diffusée selon les termes de la GNU Lesser General Public License (LGPL), version 2.1. Entre autre choses, la licence vous donne un accès complet au code source et vous autorise à utiliser la bibliothèque même si votre programme n'est pas libre. Une copie de la licence (en anglais) est inclue dans l'archive, mais vous pouvez aussi y accéder via ce lien.

Contact

Si vous avez une question, vous pouvez m'envoyer un mail et j'essaierai de répondre aussi vite que possible.

Si vous avez un commentaire, vous pouvez aussi m'envoyer un mail.

Si vous voulez aider, vous pouvez m'envoyer un mail expliquant de quelle manière vous pensez pouvoir aider.

immobilier vente
SourceForge.net Logo Valid HTML 4.01 Transitional