AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez | 
 

 [Bibliothèque C++] POLDER

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Morwenn
Très bonne participation
avatar

Messages : 151
Projet Actuel : Icare

MessageSujet: [Bibliothèque C++] POLDER   Lun 22 Aoû 2011 - 11:46

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 Wink

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 Razz

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 Wink

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 Smile

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.

_________________

Dur Dabla, pour qui voudrait écouter un brin de metal celtique.


Dernière édition par Morwenn le Mar 17 Jan 2012 - 19:25, édité 5 fois
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8915
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: [Bibliothèque C++] POLDER   Lun 22 Aoû 2011 - 11:56

Vivement l'évaluation d'expression mathématiques, ça c'est pratique :p
Entk ça a l'air cool tout ça :b

_________________
                 
Revenir en haut Aller en bas
Morwenn
Très bonne participation
avatar

Messages : 151
Projet Actuel : Icare

MessageSujet: Re: [Bibliothèque C++] POLDER   Lun 22 Aoû 2011 - 12:44

Merci bien^^

Ouais, l'évaluation d'expressions mathématiques, c'est toujours fun. En fait, le module marche déjà mais est hyper limité (pas d'espaces, seulement 6 ou 7 opérations, etc...), donc je suis en train de le remanier de telle sorte qu'il supporte les chaînes avec ou sans espaces et qu'il supporte (pour le moment) 20 opérateurs différents. Au final, ce header devrait juste fournir la fonction "evaluate" quand il sera prêt. mais bon, ce sera une fonction si possible assez puissante Wink

_________________

Dur Dabla, pour qui voudrait écouter un brin de metal celtique.
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8915
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: [Bibliothèque C++] POLDER   Lun 22 Aoû 2011 - 12:46

Et ça gérerais les parenthèses ? (le plus important quoi)

_________________
                 
Revenir en haut Aller en bas
Morwenn
Très bonne participation
avatar

Messages : 151
Projet Actuel : Icare

MessageSujet: Re: [Bibliothèque C++] POLDER   Lun 22 Aoû 2011 - 12:57

Oui, ça les gère déjà^^

_________________

Dur Dabla, pour qui voudrait écouter un brin de metal celtique.
Revenir en haut Aller en bas
Gab666
Modérateur 'Zut'
avatar

Messages : 5339
Localisation : **I move away from the mic to breathe in

MessageSujet: Re: [Bibliothèque C++] POLDER   Lun 22 Aoû 2011 - 21:47

Morwenn a écrit:
Merci bien^^

Ouais, l'évaluation d'expressions mathématiques, c'est toujours fun. En fait, le module marche déjà mais est hyper limité (pas d'espaces, seulement 6 ou 7 opérations, etc...), donc je suis en train de le remanier de telle sorte qu'il supporte les chaînes avec ou sans espaces et qu'il supporte (pour le moment) 20 opérateurs différents. Au final, ce header devrait juste fournir la fonction "evaluate" quand il sera prêt. mais bon, ce sera une fonction si possible assez puissante Wink

Quel algorithme t'as utilisé pour évaluer l'expression une fois tokenizée? (en supposant que tu tokenize ton expression)

_________________
PIS MANIAC PREND DES BAINS !
Revenir en haut Aller en bas
http://www.dermanium-online.webou.net/
Morwenn
Très bonne participation
avatar

Messages : 151
Projet Actuel : Icare

MessageSujet: Re: [Bibliothèque C++] POLDER   Lun 22 Aoû 2011 - 23:31

J'ai utilisé un algorithme utilisant une expression post-fixée (voir cette page). Je n'ai pas forcément compris entièrement l'algorithme, mais j'arrive à visualiser pourquoi ça fait ça. L'algorithme tel qu'il est montré sur la page est là en version assez simplifiée, mais je suis en train de le développer comme je disais pour qu'il accepte plus de trucs (en fait, je fais plus d'efforts sur la tokenisation).

S'il y a d'autres algorithmes d'évaluation d'expressions, je ne les connais pas à vrai. J'en ai juste trouvé un que j'ai adopté, et un petit peu poli.


EDIT : Ben voilà, j'ai à peu près fini la fonction. Elle ne retourne pas encore quand il y a des erreurs, mais c'est à peu près tout ce qui reste (plus des erreurs éventuelles de ma part). En attendant, voici un bref descriptif de ses possibilités, notamment en terme d'opérateurs supportés Wink

_________________

Dur Dabla, pour qui voudrait écouter un brin de metal celtique.
Revenir en haut Aller en bas
Morwenn
Très bonne participation
avatar

Messages : 151
Projet Actuel : Icare

MessageSujet: Re: [Bibliothèque C++] POLDER   Ven 21 Oct 2011 - 20:41

Bon, après un long moment d'absence, voici POLDER 0.2 ! happy1

La première version de la bibliothèque était purement expérimentale. Cette version applique beaucoup de changements, et beaucoup de normalisation. Si vous avez déjà utilisé la première version (ce qui m'étonnerait) et si vous comptez utiliser cette seconde version (ce qui m'étonnerait tout autant), il faut savoir que ce n'est pas entièrement rétrocompatible (pas grave puisque personne n'utilisait la première verison =D).

Bref, il y a pas mal de nouveautés, de changements, et quelques suppressions/dépréciations de fonctions/headers.
Comme je suis gentil, je vais détailler un petit peu, mais vous pourrez trouver le détail plus complet des différences sur cette page.

Modification du design

La bibliothèque s'est un peu formalisée depuis la version 0.1. Par exemple, toutes les classes ont un constructeur par défaut, un constructeur par copie, un constructeur par déplacement (C++11) et des opérateurs surchargés en conséquence. De plus, lorsqu'utiles, les nouvelles std::initializer_list du C++11 ont également été utilisées.
Pour plus de rigueur mathématique et normaliser les types, j'ai utilisé beaucoup de double à la place des float, et pas mal de size_t à la place des unsigned int lorsque nécessaire.
Aussi, important : J'ai classé le tout par dossiers. On ne trouve plus les headers POLDER_something.hpp comme avant, mais POLDER/something.h . Ne pas oublier, sinon, rien ne marche plus beh
Et puis j'ai modifié les noms de pas mal de fonctions pour qu'ils soient plus normalisés. C'est tout pour les modifications globales^^

Changement de headers

Ont été ajoutés :

  • POLDER/evaluate.h
  • POLDER/geo/point.h
  • POLDER/geo/direction.h
  • POLDER/geo/vector.h
  • POLDER/geo/line.h
  • POLDER/geo/hypersphere.h


Le premier header header ajouté fournit la fonction evaluate qui permet d'évaluer une expression mathématique passée en paramètres (Documentation).
Les autres headers sont une nouvelle implémentation des headers POLDER/geometry_Xd.h permettant de surcroit de faire de la géométrie dans des espaces à X dimensions. Ces trois derniers headers ainsi que POLDER/types.h sont donc désormais dépréciés. Cependant, seules les structures de données de base ont été implémentées dans les nouveaux headers ; les anciens sont donc conservés temporairement, mais verront à être supprimés par la suite.

Concernant les suppressions, le header POLDER_macros.h a été supprimé car il était tout naze, dégueulasse, ne servait à rien et marchait mal. Je pense que c'était suffisant pour s'en débarrasser gnii

Les documentations des nouveaux headers ne sont pas encore faites/pas encore complètes. Elles viendront plus tard, avec quelques exemples^^

Changement dans headers

Le header POLDER/Matrix.h a été lourdement modifié. Déjà, j'ai choisi une nouvelle implémentation pour la classe Matrix (utilisable comme avant par l'utilisateur) et supprimé la classe MatrixLine qui ne servait plus à rien. De plus, j'ai corrigé quelques bugs (notamment avec la moitié des opérateurs surchargés).
Concernant les nouveautés du header, de nombreux opérateurs ont été surchargés pour plus de facilité, la comatrice et la matrice inverse sont codées. De surcroit, j'ai ajouté des itérateurs à la classe afin de pouvoir parcourir la matrice comme si c'était une seule ligne. D'autres fonctions ont été ajoutées, certaines ont été optimisées ou sécurisées, et quelques fonctions ont été supprimées (doublons principalement).

Concernant les autres headers, POLDER/ptype.h a gagné trois fonctions de plus afin que tout soit là, et POLDER/math.h a gagné une fonction de recherche de nombres premiers. Les fonctions fibonacci et factorial ont été bien optimisées^^


Bon, voilà pour les nouveautés. Je finirai de pondre/mettre à jour la documentation plus tard. En attendant, si vous avez des questions, vous pouvez toujours les poser, j'essayerai de vous répondre. Si jamais vous avez des erreurs aussi, n'hésitez pas à les signaler, j'ai probablement raté des trucs durant les tests. Alors bonne soirée tout le monde clinoeuil

_________________

Dur Dabla, pour qui voudrait écouter un brin de metal celtique.
Revenir en haut Aller en bas
Morwenn
Très bonne participation
avatar

Messages : 151
Projet Actuel : Icare

MessageSujet: Re: [Bibliothèque C++] POLDER   Dim 15 Jan 2012 - 22:54

Bon, depuis la dernière news, il y a eu de très importants changements. Je ne maintiens plus de version fixe, donc pour ceux qui voudraient essayer encore l bibliothèque, il faudra la télécharger depuis ses sources et la compiler à la main ou en créant un nouveau projet dans un IDE et en y important ses sources.

Je n'ai plus beaucoup de temps pour en parler ce soir, mais la bibliothèque a subi des changements très importants depuis la version 0.2, que ce soit au niveau du design ou du contenu. Il y a eu bon nombre de suppressions, délétions et modifications diverses, et un ajout plus ou moins important de headers.

Pour pouvoir la compiler, il vous faudra un support du C++11 équivalent à celui de GCC 4.6 (téléchargeable ici).

Je donnerai plus de détails et modifierai le post d'introduction plus tard, attendez des nouvelles dans les deux jours si jamais ça vous intéresse un minimum^^


EDIT : Voilà, j'ai mis à jour le post de présentation. Si vous avez des questions, commentaires ou remarques, n'hésitez pas Wink

EDIT² : J'ai ajouté le fichier CMakeLists.txt sur le dépôt GIT afin de vous faciliter la tâche quant à la génération du makefile sous n'importe quel système Wink

_________________

Dur Dabla, pour qui voudrait écouter un brin de metal celtique.
Revenir en haut Aller en bas
Contenu sponsorisé




MessageSujet: Re: [Bibliothèque C++] POLDER   

Revenir en haut Aller en bas
 
[Bibliothèque C++] POLDER
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Projet mini-bibliothèque en centre de loisirs pour enfants
» La bibliothèque idéale en littérature allemande contemporain
» DUT bibliothèque Bordeaux 2009
» Edition ou Bibliothèque ?
» détachement en bibliothèque

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Informations :: Projets-
Sauter vers: