Implantation au plus simple d'un ordre partiel. More...
#include "cogitant/partialorder_simple.h"
Public Member Functions | |
void | reserve (nSet s) |
Réservation d'espace dans l'ensemble. More... | |
void | setSize (nSet n) |
Fixer le nombre d'éléments. More... | |
void | clear () |
Vide l'ensemble. More... | |
void | setImmediateLess (iSet i1, iSet i2) |
Ajout d'un couple à l'ordre partiel. More... | |
void | setImmediateLess (iSet i, std::vector< iSet > const &ie) |
Sélection des éléments immédiatement inférieurs. More... | |
void | unsetImmediateLess (iSet i1, iSet i2) |
Retrait de l'information i1 > i2. More... | |
void | optimize () |
Optimiser. More... | |
void | unoptimize () |
Supprimer les structures optimisées. More... | |
nSet | maxSize () const |
Taille maximale de l'ensemble. More... | |
nSet | size () const |
Taille actuelle de l'ensemble. More... | |
bool | optimized () const |
Optimisation des structures de données. More... | |
bool | isLessOrEqualThan (iSet i1, iSet i2) const |
Comparaison : <=. More... | |
void | getImmediateLessElements (iSet i, std::vector< iSet > &result) const |
Accès aux éléments immédiatement inférieurs. More... | |
bool | isImmediateLess (iSet i1, iSet i2) const |
Éléments immédiatement inférieurs. More... | |
Constructeurs - destructeur. | |
PartialOrder_Simple () | |
Constructeur d'un ensemble ordonné vide. More... | |
PartialOrder_Simple (PartialOrder const &c) | |
Constructeur par recopie. More... | |
virtual | ~PartialOrder_Simple () |
Destructeur. More... | |
Public Member Functions inherited from cogitant::PartialOrder | |
PartialOrder () | |
Constructeur d'un ordre partiel. More... | |
PartialOrder (PartialOrder const &c) | |
Constructeur par recopie. More... | |
virtual | ~PartialOrder () |
Destructeur. More... | |
virtual iSet | iBegin () const |
Itérateur de début. More... | |
virtual iSet | iEnd () const |
Itérateur de fin. More... | |
virtual void | iNext (iSet &i) const |
Incrémente l'itérateur passé pour le parcours de l'ensemble. More... | |
virtual bool | isGreaterOrEqualThan (iSet i1, iSet i2) const |
Comparaison : >=. More... | |
virtual bool | isLessThan (iSet i1, iSet i2) const |
Comparaison : <. More... | |
virtual bool | isGreaterThan (iSet i1, iSet i2) const |
Comparaison : > More... | |
virtual Comparison | comparison (iSet i1, iSet i2) const |
Comparaison. More... | |
virtual void | getImmediateGreaterElements (iSet i, std::vector< iSet > &result) const |
Accès aux éléments immédiatement supérieurs. More... | |
virtual bool | isImmediateGreater (iSet i1, iSet i2) const |
Éléments immédiatement supérieurs. More... | |
bool | isLessOrEqualThanSets (std::vector< iSet > const &i1, std::vector< iSet > const &i2) const |
Comparaison : <=. More... | |
bool | isGreaterOrEqualThanSets (std::vector< iSet > const &i1, std::vector< iSet > const &i2) const |
Comparaison : >=. More... | |
virtual void | getGreaterOrEqualElements (iSet i, std::vector< iSet > &result) const |
Accès à tous les éléments supérieurs. More... | |
virtual void | getLessOrEqualElements (iSet i, std::vector< iSet > &result) const |
Accès à tous les éléments inférieurs. More... | |
Protected Attributes | |
nSet | m_size |
Mémorisation de la taille (pour accès plus rapide). | |
Additional Inherited Members | |
Public Types inherited from cogitant::PartialOrder | |
enum | Comparison { EQUAL, LESS, GREATER, UNCOMPARABLE } |
Résultat de la comparaison de deux éléments d'un PartialOrder. More... | |
Protected Member Functions inherited from cogitant::PartialOrder | |
virtual bool | isValidIterator (iSet i1) const |
Vérification de la validité d'un identificateur. More... | |
Implantation au plus simple d'un ordre partiel.
Les éléments c immédiatement inférieurs à un élément c1 sont représentés par un std::vector (indexé par l'itérateur de c1) de std::vector contenant les itérateurs des c. Cette structure de données ne s'optimise pas (l'appel à optimize() n'effectue aucun traitement).
cogitant::PartialOrder_Simple::PartialOrder_Simple | ( | ) |
Constructeur d'un ensemble ordonné vide.
cogitant::PartialOrder_Simple::PartialOrder_Simple | ( | PartialOrder const & | c | ) |
Constructeur par recopie.
La copie n'est pas du tout optimisée car ce constructeur par recopie prend comme paramètre un PartialOrder et non un PartialOrder_Simple. Le fait que les structures de données soient les mêmes dans le cas où un PartialOrder_Simple est copié n'est pas pris en compte, par contre l'avantage est que ce constructeur permet de créer un PartialOrder_Simple à partir d'une instance de toute sous classe de PartialOrder.
|
virtual |
Destructeur.
|
virtual |
Vide l'ensemble.
Implements cogitant::PartialOrder.
Reimplemented in cogitantcs::PartialOrderClient, and cogitant::PartialOrder_SimpleMemo.
|
virtual |
Accès aux éléments immédiatement inférieurs.
i | un itérateur valide de l'ensemble. |
result | (sortie) l'ensemble des itérateurs correspondant aux éléments immédiatement inférieurs à c. |
Reimplemented from cogitant::PartialOrder.
Éléments immédiatement inférieurs.
true
ssi i1 est immédiatement inférieur à i2. Implements cogitant::PartialOrder.
Comparaison : <=.
true
ssi i1 <= i2. Implements cogitant::PartialOrder.
Reimplemented in cogitant::PartialOrder_SimpleMemo.
|
virtual |
Taille maximale de l'ensemble.
Implements cogitant::PartialOrder.
|
virtual |
Optimiser.
L'appel à cette méthode provoque un calcul des structures optimisées pour l'accès rapide à l'ordre partiel. Une fois optimisé, l'ordre partiel ne doit plus être modifié. Cette méthode doit être concrétisée dans les sous classes (éventuellement avec un code vide) et fournir une éventuelle optimisation.
Implements cogitant::PartialOrder.
Reimplemented in cogitantcs::PartialOrderClient, and cogitant::PartialOrder_SimpleMemo.
|
virtual |
Optimisation des structures de données.
Si les structures de données sont optimisées, plus aucune modification ne peut être effectuée.
true
ssi la structure de données est optimisée. Implements cogitant::PartialOrder.
|
virtual |
Réservation d'espace dans l'ensemble.
L'appel à cette méthode peut être utile dans le cas ou des appels à setImmediateLess() ou unsetImmediateLess() doivent être effectués avant que la taille définitive de l'ensemble ne soit connue. Dans ce cas, plusieurs appels à setSize() sont effectués avant d'atteindre la taille définitive et dans le cas où l'ensemble est représenté par un vector, il peut être très intéressant pour des raisons de performances de dimensionner le vector
au nombre maximum d'éléments pouvant être contenus dans l'ensemble. L'appel à cette méthode n'est donc pas obligatoire mais peut provoquer un gain de performances selon l'implémentation de la structure de données.
s | taille à réserver. |
ExceptionReadOnlyObject |
Implements cogitant::PartialOrder.
Reimplemented in cogitantcs::PartialOrderClient.
Ajout d'un couple à l'ordre partiel.
Ajoute à l'ensemble représentant l'ordre partiel le couple (i1,i2) repérant i1 > i2.
ExceptionReadOnlyObject | |
ExceptionAlreadyPresent |
Implements cogitant::PartialOrder.
|
virtual |
Sélection des éléments immédiatement inférieurs.
i | élément de l'ensemble. |
ie | éléments immédiatement inférieurs à i. |
ExceptionReadOnlyObject |
Implements cogitant::PartialOrder.
|
virtual |
Fixer le nombre d'éléments.
n | nouvelle taille (l'ensemble sur lequel l'ordre partiel est défini devient alors [0 .. n-1]). |
ExceptionReadOnlyObject |
Implements cogitant::PartialOrder.
Reimplemented in cogitantcs::PartialOrderClient.
|
virtual |
Taille actuelle de l'ensemble.
Implements cogitant::PartialOrder.
|
virtual |
Supprimer les structures optimisées.
Cette méthode peut être appelée après l'appel à optimize(). Après appel à unoptimize(), l'ordre partiel peut à nouveau être modifié. *.
Implements cogitant::PartialOrder.
Reimplemented in cogitant::PartialOrder_SimpleMemo.
Retrait de l'information i1 > i2.
Retire à l'ensemble représentant l'ordre partiel le couple (i1,i2) repérant i1 > i2.
ExceptionReadOnlyObject | |
ExceptionAlreadyPresent |
Implements cogitant::PartialOrder.