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

Classes | Protected Member Functions | Protected Attributes | Friends | List of all members
cogitant::BannedTypes Class Referenceabstract

Classe abstraite pour la représentation d'un ensemble de types bannis (représentés par des iSet). More...

#include "cogitant/bannedtypes.h"

Inheritance diagram for cogitant::BannedTypes:
cogitant::BannedTypes_Simple

Classes

class  Iterator
 Itérateur permettant de parcourir tous les types conjonctifs de l'ensemble de types bannis. More...
 

Public Member Functions

Constructeurs - destructeur.
 BannedTypes ()
 Constructeur. More...
 
virtual ~BannedTypes ()
 Destructeur. More...
 
Modifications.
virtual void setPartialOrder (PartialOrder const *po)
 Fixe l'ordre partiel défini sur l'ensemble de types associé. More...
 
virtual void clear ()=0
 Vide l'ensemble. More...
 
virtual void addBannedType (ConceptType::ConjunctiveType const &b)=0
 Ajout d'un type banni. More...
 
virtual void delBannedType (ConceptType::ConjunctiveType const &b)=0
 Supprime un type banni. More...
 
virtual void optimize ()=0
 Optimiser. More...
 
void addAllBannedTypes (std::vector< iSet > const &b)
 Ajout d'un ensemble de couples de types bannis. More...
 
Accesseurs.
virtual bool optimized () const =0
 Optimisation des structures de données. More...
 
virtual Iteratoriterator () const =0
 Retourne un iterateur (alloué dynamiquement) permettant de parcourir la structure. More...
 
virtual nSet size () const =0
 Nombre de types bannis. More...
 
virtual bool isBanned (ConceptType::ConjunctiveType const &t) const =0
 Recherche. More...
 
virtual bool hasBannedType (ConceptType::ConjunctiveType const &t) const =0
 Est-ce que l'ensemble de type a "exactement" ce type banni-là. More...
 

Protected Member Functions

virtual bool iteratorNext (Iterator *it) const =0
 Passage à l'élément suivant de l'itérateur. More...
 
virtual std::vector< iSet > const & iteratorGetCurrent (Iterator const *it) const =0
 Accès à l'élément courant de l'itérateur. More...
 

Protected Attributes

PartialOrder const * m_partialorder
 Ordre partiel sur les types primitifs repérés dans l'ensemble de types bannis. More...
 

Friends

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

Detailed Description

Classe abstraite pour la représentation d'un ensemble de types bannis (représentés par des iSet).

Constructor & Destructor Documentation

◆ BannedTypes()

cogitant::BannedTypes::BannedTypes ( )

Constructeur.

◆ ~BannedTypes()

virtual cogitant::BannedTypes::~BannedTypes ( )
virtual

Destructeur.

Member Function Documentation

◆ addAllBannedTypes()

void cogitant::BannedTypes::addAllBannedTypes ( std::vector< iSet > const &  b)

Ajout d'un ensemble de couples de types bannis.

Cette méthode ajoute à l'ensemble des types bannis tous les couples de types présents dans le vecteur reçu en paramètre.

Parameters
bEnsemble de types.
Exceptions
ExceptionReadOnlyObject
ExceptionAlreadyPresent

◆ addBannedType()

virtual void cogitant::BannedTypes::addBannedType ( ConceptType::ConjunctiveType const &  b)
pure virtual

Ajout d'un type banni.

Exceptions
ExceptionReadOnlyObject
ExceptionAlreadyPresent

Implemented in cogitant::BannedTypes_Simple.

◆ clear()

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

Vide l'ensemble.

Implemented in cogitant::BannedTypes_Simple.

◆ delBannedType()

virtual void cogitant::BannedTypes::delBannedType ( ConceptType::ConjunctiveType const &  b)
pure virtual

Supprime un type banni.

Implemented in cogitant::BannedTypes_Simple.

◆ hasBannedType()

virtual bool cogitant::BannedTypes::hasBannedType ( ConceptType::ConjunctiveType const &  t) const
pure virtual

Est-ce que l'ensemble de type a "exactement" ce type banni-là.

Warning
Cette méthode ne considère pas l'ordre des types de concepts. Préférer donc isBanned() sauf si vous savez ce que vous faites.

Implemented in cogitant::BannedTypes_Simple.

◆ isBanned()

virtual bool cogitant::BannedTypes::isBanned ( ConceptType::ConjunctiveType const &  t) const
pure virtual

Recherche.

Contrairement à hasBannedType(), cette méthode utilise l'ordre sur les types de concepts, dans la majorité des cas, c'est donc isBanned() qui soit être utilisée.

Returns
true ssi le type conjonctif passé est interdit.
Warning
Méthode abstraite qui doit être définie dans les sous classes.

Implemented in cogitant::BannedTypes_Simple.

◆ iterator()

virtual Iterator* cogitant::BannedTypes::iterator ( ) const
pure virtual

Retourne un iterateur (alloué dynamiquement) permettant de parcourir la structure.

Implemented in cogitant::BannedTypes_Simple.

◆ iteratorGetCurrent()

virtual std::vector<iSet> const& cogitant::BannedTypes::iteratorGetCurrent ( Iterator const *  it) const
protectedpure virtual

Accès à l'élément courant de l'itérateur.

Implemented in cogitant::BannedTypes_Simple.

◆ iteratorNext()

virtual bool cogitant::BannedTypes::iteratorNext ( Iterator it) const
protectedpure virtual

Passage à l'élément suivant de l'itérateur.

Implemented in cogitant::BannedTypes_Simple.

◆ optimize()

virtual void cogitant::BannedTypes::optimize ( )
pure virtual

Optimiser.

L'appel à cette méthode provoque un calcul des structures optimisées pour l'accès rapide à l'opération de recherche. Une fois optimisé, l'ensemble 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 cogitant::BannedTypes_Simple.

◆ optimized()

virtual bool cogitant::BannedTypes::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::BannedTypes_Simple.

◆ setPartialOrder()

virtual void cogitant::BannedTypes::setPartialOrder ( PartialOrder const *  po)
virtual

Fixe l'ordre partiel défini sur l'ensemble de types associé.

Cette méthode doit être appelée avec tout appel à isBanned(). La classe Support se charge de l'appeler automatiquement, donc il est inutile de l'appeler explicitement.

◆ size()

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

Nombre de types bannis.

Implemented in cogitant::BannedTypes_Simple.

Member Data Documentation

◆ m_partialorder

PartialOrder const* cogitant::BannedTypes::m_partialorder
protected

Ordre partiel sur les types primitifs repérés dans l'ensemble de types bannis.

L'ordre partiel doit être connu du BannedTypes parce que lors de l'interrogation pour savoir si un type conjonctif est interdit, il faut chercher si le type a vérifier est une spécialisation d'un des types bannis mémorisés, donc BannedTypes doit pouvoir accéder au PartialOrder correspondant.