Quick links: Tutorial - Examples - Files - Symbols.
Classes: Hierarchy - Index - List - Members.
Namespaces: Index - base - cs - display.

Public Member Functions | Protected Attributes | List of all members
cogitant::PartialOrder_Simple Class Reference

Implantation au plus simple d'un ordre partiel. More...

#include "cogitant/partialorder_simple.h"

Inheritance diagram for cogitant::PartialOrder_Simple:
cogitant::PartialOrder cogitant::PartialOrder_SimpleMemo cogitantcs::PartialOrderClient

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...
 

Detailed Description

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).

See also
Partial orders on types

Constructor & Destructor Documentation

◆ PartialOrder_Simple() [1/2]

cogitant::PartialOrder_Simple::PartialOrder_Simple ( )

Constructeur d'un ensemble ordonné vide.

◆ PartialOrder_Simple() [2/2]

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.

◆ ~PartialOrder_Simple()

virtual cogitant::PartialOrder_Simple::~PartialOrder_Simple ( )
virtual

Destructeur.

Member Function Documentation

◆ clear()

void cogitant::PartialOrder_Simple::clear ( )
virtual

◆ getImmediateLessElements()

void cogitant::PartialOrder_Simple::getImmediateLessElements ( iSet  i,
std::vector< iSet > &  result 
) const
virtual

Accès aux éléments immédiatement inférieurs.

Parameters
iun 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.

◆ isImmediateLess()

bool cogitant::PartialOrder_Simple::isImmediateLess ( iSet  i1,
iSet  i2 
) const
virtual

Éléments immédiatement inférieurs.

Returns
true ssi i1 est immédiatement inférieur à i2.

Implements cogitant::PartialOrder.

◆ isLessOrEqualThan()

bool cogitant::PartialOrder_Simple::isLessOrEqualThan ( iSet  i1,
iSet  i2 
) const
virtual

Comparaison : <=.

Returns
true ssi i1 <= i2.
Warning
Méthode abstraite qui doit être définie dans les sous classes.

Implements cogitant::PartialOrder.

Reimplemented in cogitant::PartialOrder_SimpleMemo.

◆ maxSize()

nSet cogitant::PartialOrder_Simple::maxSize ( ) const
virtual

Taille maximale de l'ensemble.

Returns
0 si la structure de données n'a pas de taille maximale, la taille maximale sinon.

Implements cogitant::PartialOrder.

◆ optimize()

void cogitant::PartialOrder_Simple::optimize ( )
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.

◆ optimized()

bool cogitant::PartialOrder_Simple::optimized ( ) const
virtual

Optimisation des structures de données.

Si les structures de données sont optimisées, plus aucune modification ne peut être effectuée.

Returns
true ssi la structure de données est optimisée.

Implements cogitant::PartialOrder.

◆ reserve()

void cogitant::PartialOrder_Simple::reserve ( nSet  s)
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.

Parameters
staille à réserver.
Exceptions
ExceptionReadOnlyObject

Implements cogitant::PartialOrder.

Reimplemented in cogitantcs::PartialOrderClient.

◆ setImmediateLess() [1/2]

void cogitant::PartialOrder_Simple::setImmediateLess ( iSet  i1,
iSet  i2 
)
virtual

Ajout d'un couple à l'ordre partiel.

Ajoute à l'ensemble représentant l'ordre partiel le couple (i1,i2) repérant i1 > i2.

Exceptions
ExceptionReadOnlyObject
ExceptionAlreadyPresent

Implements cogitant::PartialOrder.

◆ setImmediateLess() [2/2]

void cogitant::PartialOrder_Simple::setImmediateLess ( iSet  i,
std::vector< iSet > const &  ie 
)
virtual

Sélection des éléments immédiatement inférieurs.

Parameters
iélément de l'ensemble.
ieéléments immédiatement inférieurs à i.
Exceptions
ExceptionReadOnlyObject

Implements cogitant::PartialOrder.

◆ setSize()

void cogitant::PartialOrder_Simple::setSize ( nSet  n)
virtual

Fixer le nombre d'éléments.

Parameters
nnouvelle taille (l'ensemble sur lequel l'ordre partiel est défini devient alors [0 .. n-1]).
Exceptions
ExceptionReadOnlyObject

Implements cogitant::PartialOrder.

Reimplemented in cogitantcs::PartialOrderClient.

◆ size()

nSet cogitant::PartialOrder_Simple::size ( ) const
virtual

Taille actuelle de l'ensemble.

Implements cogitant::PartialOrder.

◆ unoptimize()

void cogitant::PartialOrder_Simple::unoptimize ( )
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.

◆ unsetImmediateLess()

void cogitant::PartialOrder_Simple::unsetImmediateLess ( iSet  i1,
iSet  i2 
)
virtual

Retrait de l'information i1 > i2.

Retire à l'ensemble représentant l'ordre partiel le couple (i1,i2) repérant i1 > i2.

Exceptions
ExceptionReadOnlyObject
ExceptionAlreadyPresent

Implements cogitant::PartialOrder.