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

Public Types | Protected Member Functions | List of all members
cogitant::PartialOrder Class Referenceabstract

Classe abstraite pour la représentation d'un ordre partiel de iSet. More...

#include "cogitant/partialorder.h"

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

Public Types

enum  Comparison { EQUAL, LESS, GREATER, UNCOMPARABLE }
 Résultat de la comparaison de deux éléments d'un PartialOrder. More...
 

Public Member Functions

Constructeurs - destructeur.
 PartialOrder ()
 Constructeur d'un ordre partiel. More...
 
 PartialOrder (PartialOrder const &c)
 Constructeur par recopie. More...
 
virtual ~PartialOrder ()
 Destructeur. More...
 
Modifications.
virtual void reserve (nSet s)=0
 Réservation d'espace dans l'ensemble. More...
 
virtual void setSize (nSet n)=0
 Fixer le nombre d'éléments. More...
 
virtual void clear ()=0
 Vide l'ensemble. More...
 
virtual void setImmediateLess (iSet i1, iSet i2)=0
 Ajout d'un couple à l'ordre partiel. More...
 
virtual void setImmediateLess (iSet i, std::vector< iSet > const &ie)=0
 Sélection des éléments immédiatement inférieurs. More...
 
virtual void unsetImmediateLess (iSet i1, iSet i2)=0
 Retrait de l'information i1 > i2. More...
 
virtual void optimize ()=0
 Optimiser. More...
 
virtual void unoptimize ()=0
 Supprimer les structures optimisées. More...
 
Accesseurs divers.
virtual nSet maxSize () const =0
 Taille maximale de l'ensemble. More...
 
virtual nSet size () const =0
 Taille actuelle de l'ensemble. More...
 
virtual bool optimized () const =0
 Optimisation des structures de données. 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...
 
Accesseurs à l'ordre.
virtual bool isLessOrEqualThan (iSet i1, iSet i2) const =0
 Comparaison : <=. 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 getImmediateLessElements (iSet i, std::vector< iSet > &result) const
 Accès aux éléments immédiatement inférieurs. More...
 
virtual bool isImmediateLess (iSet i1, iSet i2) const =0
 Éléments immédiatement inférieurs. 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...
 
Accesseurs raccourcis.
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 Member Functions

virtual bool isValidIterator (iSet i1) const
 Vérification de la validité d'un identificateur. More...
 

Friends

Opérateurs.
std::ostream & operator<< (std::ostream &out, PartialOrder const &c)
 

Detailed Description

Classe abstraite pour la représentation d'un ordre partiel de iSet.

See also
Partial orders on types

Member Enumeration Documentation

◆ Comparison

Résultat de la comparaison de deux éléments d'un PartialOrder.

Enumerator
EQUAL 

Les deux éléments sont égaux.

LESS 

Le premier élément est strictement inférieur au second.

GREATER 

Le premier élément est strictement supérieur au second.

UNCOMPARABLE 

Les deux éléments sont incomparables.

Constructor & Destructor Documentation

◆ PartialOrder() [1/2]

cogitant::PartialOrder::PartialOrder ( )

Constructeur d'un ordre partiel.

◆ PartialOrder() [2/2]

cogitant::PartialOrder::PartialOrder ( PartialOrder const &  c)

Constructeur par recopie.

Parameters
cobjet à copier.

◆ ~PartialOrder()

virtual cogitant::PartialOrder::~PartialOrder ( )
virtual

Destructeur.

Member Function Documentation

◆ clear()

virtual void cogitant::PartialOrder::clear ( )
pure virtual

◆ comparison()

virtual Comparison cogitant::PartialOrder::comparison ( iSet  i1,
iSet  i2 
) const
virtual

Comparaison.

Returns
le résultat de la comparaison de i1 et i2.

◆ getGreaterOrEqualElements()

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

Accès à tous les éléments supérieurs.

◆ getImmediateGreaterElements()

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

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

Parameters
iun itérateur valide de l'ensemble.
result(sortie) l'ensemble des itérateurs correspondant aux éléments immédiatement supérieurs à c.

◆ getImmediateLessElements()

virtual void cogitant::PartialOrder::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 in cogitant::PartialOrder_Simple.

◆ getLessOrEqualElements()

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

Accès à tous les éléments inférieurs.

◆ iBegin()

virtual iSet cogitant::PartialOrder::iBegin ( ) const
virtual

Itérateur de début.

Returns
un itérateur sur le premier élément de l'ensemble permettant le parcours.
Warning
Cet itérateur ne permet pas de parcourir les couples représentant l'ordre partiel mais l'ensemble des iSet sur lequel l'ordre partiel est défini.

◆ iEnd()

virtual iSet cogitant::PartialOrder::iEnd ( ) const
virtual

Itérateur de fin.

Returns
un itérateur permettant de tester la fin du parcours.

◆ iNext()

virtual void cogitant::PartialOrder::iNext ( iSet i) const
virtual

Incrémente l'itérateur passé pour le parcours de l'ensemble.

Parameters
iitérateur sur l'ensemble. Après appel à cette méthode, l'itérateur repère l'élément suivant.

◆ isGreaterOrEqualThan()

virtual bool cogitant::PartialOrder::isGreaterOrEqualThan ( iSet  i1,
iSet  i2 
) const
virtual

Comparaison : >=.

Returns
true ssi i1 >= i2.

◆ isGreaterOrEqualThanSets()

bool cogitant::PartialOrder::isGreaterOrEqualThanSets ( std::vector< iSet > const &  i1,
std::vector< iSet > const &  i2 
) const

Comparaison : >=.

Returns
true ssi pour tout élément j de i1 , il existe un élément k de i2 tel que j >= k.

◆ isGreaterThan()

virtual bool cogitant::PartialOrder::isGreaterThan ( iSet  i1,
iSet  i2 
) const
virtual

Comparaison : >

Returns
true ssi i1 > i2.

◆ isImmediateGreater()

virtual bool cogitant::PartialOrder::isImmediateGreater ( iSet  i1,
iSet  i2 
) const
virtual

Éléments immédiatement supérieurs.

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

◆ isImmediateLess()

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

Éléments immédiatement inférieurs.

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

Implemented in cogitant::PartialOrder_Simple.

◆ isLessOrEqualThan()

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

Comparaison : <=.

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

Implemented in cogitant::PartialOrder_Simple, and cogitant::PartialOrder_SimpleMemo.

◆ isLessOrEqualThanSets()

bool cogitant::PartialOrder::isLessOrEqualThanSets ( std::vector< iSet > const &  i1,
std::vector< iSet > const &  i2 
) const

Comparaison : <=.

Returns
true ssi pour tout élément j de i1 , il existe un élément k de i2 tel que j <= k.

◆ isLessThan()

virtual bool cogitant::PartialOrder::isLessThan ( iSet  i1,
iSet  i2 
) const
virtual

Comparaison : <.

Returns
true ssi i1 < i2.

◆ isValidIterator()

virtual bool cogitant::PartialOrder::isValidIterator ( iSet  i1) const
protectedvirtual

Vérification de la validité d'un identificateur.

Parameters
i1identificateur à tester.
Returns
true ssi i1 est un identificateur de l'ensemble sur lequel l'ordre partiel est défini.

◆ maxSize()

virtual nSet cogitant::PartialOrder::maxSize ( ) const
pure virtual

Taille maximale de l'ensemble.

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

Implemented in cogitant::PartialOrder_Simple.

◆ optimize()

virtual void cogitant::PartialOrder::optimize ( )
pure 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.

Implemented in cogitantcs::PartialOrderClient, cogitant::PartialOrder_Simple, and cogitant::PartialOrder_SimpleMemo.

◆ optimized()

virtual bool cogitant::PartialOrder::optimized ( ) const
pure 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.

Implemented in cogitant::PartialOrder_Simple.

◆ reserve()

virtual void cogitant::PartialOrder::reserve ( nSet  s)
pure 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

Implemented in cogitantcs::PartialOrderClient, and cogitant::PartialOrder_Simple.

◆ setImmediateLess() [1/2]

virtual void cogitant::PartialOrder::setImmediateLess ( iSet  i1,
iSet  i2 
)
pure 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

Implemented in cogitant::PartialOrder_Simple.

◆ setImmediateLess() [2/2]

virtual void cogitant::PartialOrder::setImmediateLess ( iSet  i,
std::vector< iSet > const &  ie 
)
pure 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

Implemented in cogitant::PartialOrder_Simple.

◆ setSize()

virtual void cogitant::PartialOrder::setSize ( nSet  n)
pure 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

Implemented in cogitantcs::PartialOrderClient, and cogitant::PartialOrder_Simple.

◆ size()

virtual nSet cogitant::PartialOrder::size ( ) const
pure virtual

Taille actuelle de l'ensemble.

Implemented in cogitant::PartialOrder_Simple.

◆ unoptimize()

virtual void cogitant::PartialOrder::unoptimize ( )
pure 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é. *.

Implemented in cogitant::PartialOrder_Simple, and cogitant::PartialOrder_SimpleMemo.

◆ unsetImmediateLess()

virtual void cogitant::PartialOrder::unsetImmediateLess ( iSet  i1,
iSet  i2 
)
pure 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

Implemented in cogitant::PartialOrder_Simple.