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

Classes | Public Member Functions | Protected Member Functions | List of all members
cogitant::PropertySet Class Reference

Classe de représentation d'un ensemble de propriétés. More...

#include "cogitant/propertyset.h"

Inheritance diagram for cogitant::PropertySet:
cogitant::Set_Simple_Final< Property >

Classes

class  Filter
 Filtre sur certains types de propriétés. More...
 
class  FilterModel
 Filtre acceptant uniquement les propriétés correspondant au modèle des graphes conceptuels. More...
 
class  FilterNoFilter
 Filtre acceptant toutes les propriétés. More...
 

Public Member Functions

std::string toString () const
 Transformation en chaîne de caractères. More...
 
Constructeurs - destructeur.
 PropertySet ()
 Constructeur d'un ensemble de propriétés vide. More...
 
 ~PropertySet ()
 Destructeur. More...
 
Modifications.
Propertyget (Property::Type t, iSet sub=ISET_NULL)
 Accès à une référence à une propriété. More...
 
Propertyget (std::string const &t, iSet sub=ISET_NULL)
 Accès à une référence à une propriété non standard. More...
 
PropertySetgetSubSet (iSet sub)
 Accès au sous-ensemble de propriétés. More...
 
PropertySet const * getSubSet (iSet sub) const
 Accès au sous-ensemble de propriétés. More...
 
void setPtrVoid (Property::Type t, void *ptr, iSet sub=ISET_NULL)
 Modification de la valeur d'une propriété. More...
 
void set (Property::Type t, unsigned int val, iSet sub=ISET_NULL)
 Modification de la valeur d'une propriété. More...
 
void set (Property::Type t, std::string const &str, iSet sub=ISET_NULL)
 Modification de la valeur d'une propriété. More...
 
void set (std::string const &t, std::string const &str, iSet sub=ISET_NULL)
 Modification de la valeur d'une propriété non standard. More...
 
void set (Property::Type t, std::vector< iSet > const &tab, iSet sub=ISET_NULL)
 Modification de la valeur d'une propriété. More...
 
void set (Property::Type t, Property::ExtendedValue const &e, iSet sub=ISET_NULL)
 Modification de la valeur d'une propriété. More...
 
void remove (Property::Type t, iSet sub=ISET_NULL)
 Suppression d'une propriété. More...
 
void remove (std::string const &t, iSet sub=ISET_NULL)
 Suppression d'une propriété non standard. More...
 
void removeSubSet (iSet sub)
 Suppression du sous ensemble de propriétés. More...
 
Accesseurs
Property const * get (Property::Type t, iSet sub=ISET_NULL) const
 Accès à une référence à une propriété. More...
 
Property const * get (std::string const &t, iSet sub=ISET_NULL) const
 Accès à une référence à une propriété non standard. More...
 
bool has (Property::Type t, iSet sub=ISET_NULL) const
 L'ensemble de propriété contient-il une valeur pour le type de propriété passé ?
 
bool has (std::string const &t, iSet sub=ISET_NULL) const
 L'ensemble de propriété contient-il une valeur pour le type de propriété passé ?
 
bool read (Property::Type t, void const *&ref, iSet sub=ISET_NULL) const
 Accès à la valeur de type pointeur d'une propriété. More...
 
bool read (Property::Type t, unsigned int &ref, iSet sub=ISET_NULL) const
 Accès à la valeur entière d'une propriété. More...
 
bool read (Property::Type t, std::string &ref, iSet sub=ISET_NULL) const
 Accès à la valeur chaîne d'une propriété. More...
 
bool read (std::string const &t, std::string &ref, iSet sub=ISET_NULL) const
 Accès à la valeur chaîne d'une propriété non standard. More...
 
bool read (Property::Type t, std::vector< iSet > &ref, iSet sub=ISET_NULL) const
 Accès à la valeur ensemble d'identifiants d'une propriété. More...
 
bool read (Property::Type t, Property::ExtendedValue const *&ref, iSet sub=ISET_NULL) const
 Accès à la valeur ensemble d'identifiants d'une propriété. More...
 
void * readPtrVoid (Property::Type t, iSet sub=ISET_NULL) const
 Accès à la valeur pointeur d'une propriété. More...
 
unsigned int readInt (Property::Type t, iSet sub=ISET_NULL) const
 Accès à la valeur entière d'une propriété. More...
 
std::string const & readString (Property::Type t, iSet sub=ISET_NULL) const
 Accès à la valeur chaîne d'une propriété. More...
 
std::string const & readString (std::string const &t, iSet sub=ISET_NULL) const
 Accès à la valeur chaîne d'une propriété non standard. More...
 
std::vector< iSet > const & readVectorISet (Property::Type t, iSet sub=ISET_NULL) const
 Accès à la valeur ensemble d'identificateurs d'une propriété. More...
 
Property::ExtendedValue const & readExtended (Property::Type t, iSet sub=ISET_NULL) const
 Accès à la valeur Property::ExtendedValue. More...
 
- Public Member Functions inherited from cogitant::Set_Simple_Final< Property >
 Set_Simple_Final ()
 
 Set_Simple_Final (Set_Simple_Final< Property > const &c)
 
 ~Set_Simple_Final ()
 
iSet iAdd (const Property &c)
 
void iDelete (const iSet i)
 
void findAndDelete (const Property &c)
 
void reserve (nSet const size)
 
void clear ()
 
nSet maxSize () const
 
nSet size () const
 
bool empty () const
 
iSet iBegin () const
 
iSet iEnd () const
 
void iNext (iSet &i) const
 
Property const & iGetContent (const iSet i) const
 
PropertyiGetContent (const iSet i)
 
iSet iFind (const Property &c) const
 
Propertyoperator[] (const iSet i)
 
Property const & operator[] (const iSet i) const
 

Protected Member Functions

Propertyadd (Property const &prop, iSet sub=ISET_NULL)
 Ajout de la propriété. More...
 
- Protected Member Functions inherited from cogitant::Set_Simple_Final< Property >
bool isValidIterator (const iSet i1) const
 

Opérateurs.

PropertySetoperator= (PropertySet const &p)
 Affectation. More...
 
std::ostream & operator<< (std::ostream &os, const PropertySet &ob)
 Sortie sur un flux. More...
 

Detailed Description

Classe de représentation d'un ensemble de propriétés.

Un ensemble de propriété est habituellement associé à une instance de CogitantObject (et surtout de ses sous-classes). Un ensemble de propriétés est un ensemble de couples (type, valeur), le type étant habituellement un entier (mais pouvant être une chaîne), et la valeur pouvant être un entier, une chaîne de caractères, un pointeur ou un tableau d'entiers. Il est possible de chercher la valeur d'une propriété en connaissant son type, de modifier la valeur d'une propriété, etc. en utilisant les méthodes de cette classe telles que set(), read() ou remove(). Ces méthodes sont suchargées pour permettre une gestion des différents types de valeurs. Dans le cadre d'une utilisation normale de la bibliothèque, il est inutile de se préoccuper du paramètre sub, qu'on laissera à la valeur par défaut ISET_NULL. Dans une ensemble de propriétés donné, il ne peut y avoir plusieurs valeurs différentes pour un type de propriété donné, ceci est géré de façon transparente : L'ajout d'une propriété d'un type donné efface habituellement une occurrence de la propriété de même type déjà présente

See also
Objects and properties.

Une utilisation avancée de cette classe consiste à utiliser ce paramètre sub, qui permet d'utiliser plusieurs ensembles de propriétés contenus dans un seul ensemble (ce qui permet donc d'avoir plusieurs valeurs pour un même type de propriété). Chacun de ces sous-ensembles est associé à un iSet particulier (et il ne peut y avoir deux sous-ensembles associés à un même iSet). Ceci permet de représenter dans un seul ensemble des propriétés qui sont rattachées à différents objets, ce qui est utile quand des propriétés correspondant à des objets non représentés par un CogitantObject doivent être manipulées. Par exemple, cette fonctionnalité est utilisée pour représenter les propriétés graphiques des arêtes liées à un sommet relation : une arête n'est pas représentée par un CogitantObject, les propriétés graphiques de l'arête sont donc stockées dans l'instance de Relation correspondante, et plus particulièrement dans le sous ensemble de propriétés lié à e, e étant l'étiquette de l'arête.

Warning
Cette classe n'est pas munie d'un constructeur par recopie. Le constructeur par recopie de CogitantObject se charge de recopier les propriétés.

Constructor & Destructor Documentation

◆ PropertySet()

cogitant::PropertySet::PropertySet ( )

Constructeur d'un ensemble de propriétés vide.

◆ ~PropertySet()

cogitant::PropertySet::~PropertySet ( )

Destructeur.

Les destructeur est déclaré virtuel, de cette façon, une sous classe peut effectuer des traitements particuliers tel que la désallocation des valeurs lors de la destruction de l'ensemble de propriétés (aucune méthode n'étant déclarée virtuelle dans Property ces traitements ne peuvent être effectués dans le destructeur de Property).

Member Function Documentation

◆ add()

Property* cogitant::PropertySet::add ( Property const &  prop,
iSet  sub = ISET_NULL 
)
protected

Ajout de la propriété.

La propriété est ajouté à l'ensemble dans le cas ou sub vaut ISET_NULL, ou à l'ensemble associé à sub (éventuellement créé à l'occasion) dans les autres cas.

Precondition
une propriété de ce type ne doit pas déjà exister.

◆ get() [1/4]

Property* cogitant::PropertySet::get ( Property::Type  t,
iSet  sub = ISET_NULL 
)

Accès à une référence à une propriété.

Le pointeur obtenu par cette méthode peut servir à modifier la valeur de la propriété.

Parameters
ttype de propriété recherché
subsi différent de ISET_NULL, recherche dans l'ensemble de propriétés de sub.
Returns
un pointeur sur la propriété de type t si elle existe, NULL sinon.

◆ get() [2/4]

Property* cogitant::PropertySet::get ( std::string const &  t,
iSet  sub = ISET_NULL 
)

Accès à une référence à une propriété non standard.

Le pointeur obtenu par cette méthode peut servir à modifier la valeur de la propriété.

Parameters
ttype de propriété recherché.
subsi différent de ISET_NULL, recherche dans l'ensemble de propriétés de sub.
Returns
un pointeur sur la propriété de type t si elle existe, NULL sinon.

◆ get() [3/4]

Property const* cogitant::PropertySet::get ( Property::Type  t,
iSet  sub = ISET_NULL 
) const

Accès à une référence à une propriété.

Le pointeur obtenu par cette méthode ne peut pas servir à modifier la valeur de la propriété.

Parameters
ttype de propriété recherché.
subidentificateur du sous-ensemble de propriétés.
Returns
un pointeur sur la propriété de type t si elle existe, NULL sinon.

◆ get() [4/4]

Property const* cogitant::PropertySet::get ( std::string const &  t,
iSet  sub = ISET_NULL 
) const

Accès à une référence à une propriété non standard.

Le pointeur obtenu par cette méthode ne peut pas servir à modifier la valeur de la propriété.

Parameters
subidentificateur du sous-ensemble de propriétés.
ttype de propriété recherché.
Returns
un pointeur sur la propriété de type t si elle existe, NULL sinon.

◆ getSubSet() [1/2]

PropertySet* cogitant::PropertySet::getSubSet ( iSet  sub)

Accès au sous-ensemble de propriétés.

Parameters
subidentifiant du sous-ensemble. Si ISET_NULL, retourne l'ensemble courant.
Returns
NULL si introuvable.

◆ getSubSet() [2/2]

PropertySet const* cogitant::PropertySet::getSubSet ( iSet  sub) const

Accès au sous-ensemble de propriétés.

Parameters
subidentifiant du sous-ensemble. Si ISET_NULL, retourne l'ensemble courant.
Returns
NULL si introuvable.

◆ operator=()

PropertySet& cogitant::PropertySet::operator= ( PropertySet const &  p)

Affectation.

◆ read() [1/6]

bool cogitant::PropertySet::read ( Property::Type  t,
void const *&  ref,
iSet  sub = ISET_NULL 
) const

Accès à la valeur de type pointeur d'une propriété.

Parameters
ttype de propriété recherché.
ref(sortie) référence sur la valeur de la propriété de type t trouvée.
subidentificateur du sous-ensemble de propriétés.
Returns
true ssi une propriété de type t est trouvée. Dans le cas contraire, la valeur de ref n'est pas définie.
Precondition
le type de valeur de la propriété de type t, si elle existe doit être Property::VT_PTR

◆ read() [2/6]

bool cogitant::PropertySet::read ( Property::Type  t,
unsigned int &  ref,
iSet  sub = ISET_NULL 
) const

Accès à la valeur entière d'une propriété.

Parameters
ttype de propriété recherché.
ref(sortie) référence sur la valeur de la propriété de type t trouvée.
subidentificateur du sous-ensemble de propriétés.
Returns
true ssi une propriété de type t est trouvée. Dans le cas contraire, la valeur de ref n'est pas définie.
Precondition
le type de valeur de la propriété de type t, si elle existe doit être Property::VT_UNSIGNEDINT

◆ read() [3/6]

bool cogitant::PropertySet::read ( Property::Type  t,
std::string &  ref,
iSet  sub = ISET_NULL 
) const

Accès à la valeur chaîne d'une propriété.

Parameters
ttype de propriété recherché
ref(sortie) référence sur la valeur de la propriété de type t trouvée.
subidentificateur du sous-ensemble de propriétés.
Returns
true ssi une propriété de type t est trouvée. Dans le cas contraire, la valeur de ref n'est pas définie.
Precondition
le type de valeur de la propriété de type t, si elle existe doit être Property::VT_STRING

◆ read() [4/6]

bool cogitant::PropertySet::read ( std::string const &  t,
std::string &  ref,
iSet  sub = ISET_NULL 
) const

Accès à la valeur chaîne d'une propriété non standard.

Parameters
ttype de propriété recherché
ref(sortie) référence sur la valeur de la propriété de type t trouvée.
subidentificateur du sous-ensemble de propriétés.
Returns
true ssi une propriété de type t est trouvée. Dans le cas contraire, la valeur de ref n'est pas définie.
Precondition
le type de valeur de la propriété de type t, si elle existe doit être Property::VT_STRING

◆ read() [5/6]

bool cogitant::PropertySet::read ( Property::Type  t,
std::vector< iSet > &  ref,
iSet  sub = ISET_NULL 
) const

Accès à la valeur ensemble d'identifiants d'une propriété.

Parameters
ttype de propriété recherché.
subidentificateur du sous-ensemble de propriétés.
ref(sortie) référence sur la valeur de la propriété de type t trouvée.
Returns
true ssi une propriété de type t est trouvée. Dans le cas contraire, la valeur de ref n'est pas définie.
Precondition
le type de valeur de la propriété de type t, si elle existe doit être Property::VT_VECTORISET

◆ read() [6/6]

bool cogitant::PropertySet::read ( Property::Type  t,
Property::ExtendedValue const *&  ref,
iSet  sub = ISET_NULL 
) const

Accès à la valeur ensemble d'identifiants d'une propriété.

Parameters
ttype de propriété recherché.
subidentificateur du sous-ensemble de propriétés.
ref(sortie) référence sur la valeur de la propriété de type t trouvée.
Returns
true ssi une propriété de type t est trouvée. Dans le cas contraire, la valeur de ref n'est pas définie.
Precondition
le type de valeur de la propriété de type t, si elle existe doit être Property::VT_EXTENDED

◆ readExtended()

Property::ExtendedValue const& cogitant::PropertySet::readExtended ( Property::Type  t,
iSet  sub = ISET_NULL 
) const

Accès à la valeur Property::ExtendedValue.

Parameters
ttype de propriété recherché.
subidentificateur du sous-ensemble de propriétés.
Returns
la valeur de la propriété correspondante si elle existe, un ensemble vide sinon.
Precondition
le type de valeur de la propriété de type t, si elle existe doit être Property::VT_EXTENDED

◆ readInt()

unsigned int cogitant::PropertySet::readInt ( Property::Type  t,
iSet  sub = ISET_NULL 
) const

Accès à la valeur entière d'une propriété.

Parameters
ttype de propriété recherché.
subidentificateur du sous-ensemble de propriétés.
Returns
la valeur de la propriété correspondante si elle existe, 0 sinon.
Precondition
le type de valeur de la propriété de type t, si elle existe doit être Property::VT_UNSIGNEDINT.

◆ readPtrVoid()

void* cogitant::PropertySet::readPtrVoid ( Property::Type  t,
iSet  sub = ISET_NULL 
) const

Accès à la valeur pointeur d'une propriété.

Parameters
ttype de propriété recherché.
subidentificateur du sous-ensemble de propriétés.
Returns
la valeur de la propriété correspondante si elle existe, NULL sinon.
Precondition
le type de valeur de la propriété de type t, si elle existe doit être Property::VT_PTR.

◆ readString() [1/2]

std::string const& cogitant::PropertySet::readString ( Property::Type  t,
iSet  sub = ISET_NULL 
) const

Accès à la valeur chaîne d'une propriété.

Parameters
ttype de propriété recherché.
subidentificateur du sous-ensemble de propriétés.
Returns
la valeur de la propriété correspondante si elle existe, une chaîne vide sinon.
Precondition
le type de valeur de la propriété de type t, si elle existe doit être Property::VT_STRING

◆ readString() [2/2]

std::string const& cogitant::PropertySet::readString ( std::string const &  t,
iSet  sub = ISET_NULL 
) const

Accès à la valeur chaîne d'une propriété non standard.

Parameters
ttype de propriété recherché.
subidentificateur du sous-ensemble de propriétés.
Returns
la valeur de la propriété correspondante si elle existe, une chaîne vide sinon.
Precondition
le type de valeur de la propriété de type t, si elle existe doit être Property::VT_STRING

◆ readVectorISet()

std::vector<iSet> const& cogitant::PropertySet::readVectorISet ( Property::Type  t,
iSet  sub = ISET_NULL 
) const

Accès à la valeur ensemble d'identificateurs d'une propriété.

Parameters
ttype de propriété recherché.
subidentificateur du sous-ensemble de propriétés.
Returns
la valeur de la propriété correspondante si elle existe, un ensemble vide sinon.
Precondition
le type de valeur de la propriété de type t, si elle existe doit être Property::VT_VECTORISET

◆ remove() [1/2]

void cogitant::PropertySet::remove ( Property::Type  t,
iSet  sub = ISET_NULL 
)

Suppression d'une propriété.

Si aucune propriété de ce type n'existe, aucun traitement n'est effectué.

◆ remove() [2/2]

void cogitant::PropertySet::remove ( std::string const &  t,
iSet  sub = ISET_NULL 
)

Suppression d'une propriété non standard.

Si aucune propriété de ce type n'existe, aucun traitement n'est effectué.

◆ removeSubSet()

void cogitant::PropertySet::removeSubSet ( iSet  sub)

Suppression du sous ensemble de propriétés.

◆ set() [1/5]

void cogitant::PropertySet::set ( Property::Type  t,
unsigned int  val,
iSet  sub = ISET_NULL 
)

Modification de la valeur d'une propriété.

Une propriété de ce type peut exister ou pas.

Examples:
converter.cpp.

◆ set() [2/5]

void cogitant::PropertySet::set ( Property::Type  t,
std::string const &  str,
iSet  sub = ISET_NULL 
)

Modification de la valeur d'une propriété.

Une propriété de ce type peut exister ou pas.

◆ set() [3/5]

void cogitant::PropertySet::set ( std::string const &  t,
std::string const &  str,
iSet  sub = ISET_NULL 
)

Modification de la valeur d'une propriété non standard.

Une propriété de ce type peut exister ou pas.

◆ set() [4/5]

void cogitant::PropertySet::set ( Property::Type  t,
std::vector< iSet > const &  tab,
iSet  sub = ISET_NULL 
)

Modification de la valeur d'une propriété.

Une propriété de ce type peut exister ou pas.

◆ set() [5/5]

void cogitant::PropertySet::set ( Property::Type  t,
Property::ExtendedValue const &  e,
iSet  sub = ISET_NULL 
)

Modification de la valeur d'une propriété.

Une propriété de ce type peut exister ou pas.

◆ setPtrVoid()

void cogitant::PropertySet::setPtrVoid ( Property::Type  t,
void *  ptr,
iSet  sub = ISET_NULL 
)

Modification de la valeur d'une propriété.

Une propriété de ce type peut exister ou pas.

◆ toString()

std::string cogitant::PropertySet::toString ( ) const

Transformation en chaîne de caractères.

Retourne le contenu de l'ensemble sous une forme affichable (mais pas très lisible, car très simple).

Friends And Related Function Documentation

◆ operator<<

std::ostream& operator<< ( std::ostream &  os,
const PropertySet ob 
)
friend

Sortie sur un flux.