[C++] POLDER

Démarré par Morwenn, 01 Novembre 2011 à 00:36

0 Membres et 1 Invité sur ce sujet

01 Novembre 2011 à 00:36 Dernière édition: 17 Janvier 2012 à 20:23 par Morwenn
POLDER

POLDER est une bibliothèque expérimentale open source (licence GPL) pour le langage C++ fournissant des fonctions permettant de traiter des problèmes divers dans des domaines divers, ou bien ne servant à rien aussi dans certains (:ninja:). Comme vous l'aurez sûrement pensé, ce n'est pas vraiment une bonne description bien précise. Mais bon, la réalité n'est pas beaucoup mieux. C'est en réalité plus une bibliothèque fourre-tout où je mets pas mal de trucs que j'ai codé et qui marchent. Et qui peuvent être réutilisés ensuite.

On peut objecter à ce projet différentes choses : entre autres le fait de proposer des outils existant déjà ailleurs, de ne pas être complète ou de ne pas avoir de but précis. Mais bon, quand je fais des trucs réutilisables, je préfère que qui veut puisse les avoir à disposition même s'ils ne seront probablement jamais réutilisés (Yeah \o/).

La bibliothèque demande un support partiel du C++11 pour fonctionner étant qu'elle l'exploite assez fortement dans certains en-têtes. Pour information, j'utilise MinGW GCC 4.6.1, et des fonctionnalités de celui-ci qui ne sont pas supportées par les précédentes versions du compilateur (nouvelles boucles for, etc...). Donc voilà, si vous voulez tester la bibliothèque, il faudra sûrement vous mettre à jour ;)


Petite liste de ce qui est disponible

POLDER propose différentes fonctions dans divers domaines. Voici ses principaux en-têtes :

  • POLDER/evaluate.h : Fournit la fonction evaluate qui permet d'évaluer une expression mathématique passé sous forme de chaîne de caractères.
  • POLDER/ini.h : Fonctions permettant de manipuler des fichiers ini.
  • POLDER/math.h : Diverses constantes et fonctions mathématiques.
  • POLDER/matrix.h : Gestion des matrices (plus ou moins complète).
  • POLDER/path.h : Manipulation de chemins.
  • POLDER/rational.h : Fournit la classe rational (nombres rationnels) et quelques fonctions s'y rapportant.
  • POLDER/recursion_array.h : Fournit la classe RecursionArray qui propose une solution pour mettre en œuvre de manière simple la mémoïsation pour les fonctions récursives simples.
  • POLDER/singleton.h : Fournit la classe Singleton qui permet d'assurer qu'un seul objet d'un type donné sera construit.
  • POLDER/string.h : Fonctions pour la manipulation de chaînes de caractères C (et non des string C++).
Il y a également un module géométrique fournissant des classes et des fonctions permettant de faire de la géométrie dans des espaces de dimension quelconque.

Pour plus de précisions, vous pouvez poser des questions, ou alors aller directement consulter la liste complète des headers disponibles sur cette page :P


Téléchargements

Après quelques changements de design, des ajouts majeurs, des suppressions majeures, etc... par rapport aux anciennes versions, j'ai décidé de ne plus laisser disponibles les anciennes versions qui de toutes façons n'étaient que des premiers essais^^

Si vous voulez utiliser la bibliothèque, vous pouvez la télécharger depuis les sources sur le dépôt Github. Vous devrez compiler vous-même la bibliothèque si vous voulez l'utiliser, en attendant que je fasse un truc un peu plus propre ;)


Conclusion

La bibliothèque comporte encore probablement beaucoup de bugs et de défauts malgré les nombreux tests. Ainsi, si jamais vous trouvez des erreurs ou voyez des incohérences, vous pouvez me prévenir. Aussi, si vous avez des idées d'amélioration, n'hésitez pas, c'est là pour ça :)

Comme toujours, je suis ouvert à la critique ^_^


À venir

Une petite liste de ce qui sera fait d'ici quelques temps si tout se passe bien :

  • Des fichiers d'exemples
  • Des fichiers .dll et/ou .a déjà tout prêts (?).
  • Une documentation Doxygen. Pour ceci, il va d'ailleurs falloir que je formalise un peu mes commentaires et que je les complète, car c'est pour le moment assez bordélique.
  • Complétion de la documentation sur le wiki.
  • Nouveaux headers, nouvelles classes, nouvelles fonctions, etc...

Liens

Dépôt Github
Documentation (partielle)
TDM GCC : Téléchargement d'un installateur pour MinGW GCC 4.6.1.

Librairie statique? Beurk.

Sinon mets le code sur Github, mediafire pour du code c'est super moche.

Et des exemples/doc seraient pratiques pour se faire une idée sans avoir à ouvrir le code :P

Quelle license aussi?

01 Novembre 2011 à 12:31 #2 Dernière édition: 01 Novembre 2011 à 13:59 par Morwenn
Citation de: Guillaume le 01 Novembre 2011 à 01:13
Librairie statique? Beurk.
Je pense que tu dirais encore plus beurk si tu avais certains morceaux du code source :ninja:
Après, je trouve que les librairies statiques ont aussi leur charme. Fin bon, question d'appréciation des choses :mrgreen:

Citation de: Guillaume le 01 Novembre 2011 à 01:13
Sinon mets le code sur Github, mediafire pour du code c'est super moche.
Bonne idée. Juste le temps de créer un compte.
EDIT: Done.

Citation de: Guillaume le 01 Novembre 2011 à 01:13
Et des exemples/doc seraient pratiques pour se faire une idée sans avoir à ouvrir le code :P
Ben, pour le moment, y'a le wiki, mais c'est long de faire un truc complet. Donc pour le moment, il n'est pas complet, voilà tout x)

Citation de: Guillaume le 01 Novembre 2011 à 01:13
Quelle license aussi?
Bonne question.
EDIT: GPL, alea jacta est.

15 Janvier 2012 à 23:43 #3 Dernière édition: 17 Janvier 2012 à 20:25 par Morwenn
Bon, j'ai mis le code sur Github, précisé la licence (GPL), et modifié une bonne moitié de la bibliothèque en ajoutant/modifiant/supprimant des headers, des classes, des fonctions...

Aussi, la bibliothèque demande un support partiel du C++11 pour fonctionner correctement (j'utilise GCC 4.6.1 pour information). Donc voilà, je vais essayer de tout mettre à jour sur la documentation et de compléter la petite liste "À venir" du premier post. Tant que la documentation n'est pas terminée, vous pouvez directement me poser des questions ici ou en MP si jamais vous voulez essayer et que vous ne comprenez pas certaines choses.

Bonne soirée ^_^


EDIT : Voilà, j'ai ajouté les fichiers cmake pour la génération du makefile sur le dépôt. J'ai commencé à rédiger des exemples, ça viendra d'ici peu :)