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

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

Opération de somme disjointe d'un graphe et d'un sous ensemble d'un autre graphe. More...

#include "cogitant/opedisjointsum.h"

Inheritance diagram for cogitant::OpeDisjointSum:
cogitant::Operation cogitant::OperationBase cogitant::ObservableObject cogitant::CogitantObject

Public Member Functions

Error check ()
 Vérification des paramètres. More...
 
void run ()
 Execute l'opération. More...
 
Constructeurs - destructeur.
 OpeDisjointSum (Environment *env)
 Constructeur. More...
 
 ~OpeDisjointSum ()
 Destructeur. More...
 
Entrée des paramètres.
void setParamDest (Graph *g)
 
void setParamSrc (Graph const *h)
 
void setParamDestParent (iSet gparent)
 
void setParamSrcSubset (GraphSubset const *subh)
 
void setParamOldNew (std::map< iSet, iSet > const *oldnew)
 Fixe les correspondances de sommets préexistantes. More...
 
void setParamFusionCoreferenceClasses (bool fcc)
 Fixe le paramètre de fusion des classes de coréférence de même nom. More...
 
void setParamAutoCopyChild (bool acc)
 Force la copie des fils. More...
 
void setParamResultAddedNodes (std::vector< iSet > *addednodes)
 Mémoriser (et récupérer en sortie) les identificateurs des sommets ajoutés. More...
 
Accès aux résultats.
GraphgetResultDest () const
 
iSet getResultNewISet (iSet s) const
 Accès à l'identifiant d'un sommet copié. More...
 
- Public Member Functions inherited from cogitant::Operation
Environmentenvironment () const
 Environnement. More...
 
void setEnvironment (Environment *env)
 Modification de l'environnement sur lequel est défini l'opération. More...
 
 Operation (Environment *env)
 Constructeur. More...
 
 Operation (Operation const &o)
 Constructeur par recopie. More...
 
 ~Operation ()
 Destructeur. More...
 
- Public Member Functions inherited from cogitant::OperationBase
void stop ()
 Stopper l'opération dès que possible. More...
 
bool isStopped () const
 Est-ce que l'opération a été stoppée. More...
 
 OperationBase ()
 Constructeur. More...
 
 OperationBase (OperationBase const &o)
 Constructeur par recopie. More...
 
 ~OperationBase ()
 Destructeur. More...
 
- Public Member Functions inherited from cogitant::ObservableObject
 ObservableObject ()
 Constructeur. More...
 
 ObservableObject (ObservableObject const &o)
 Constructeur par recopie. More...
 
 ~ObservableObject ()
 Destructeur. More...
 
ObserverSet const & observers () const
 Accès à l'ensemble des observateurs. More...
 
bool hasObservers () const
 Existence d'observateurs. More...
 
bool hasObservers (ObserverMessage::Type mt) const
 Existence d'observateurs qui écoutent le type de message passé. More...
 
void attachObserver (Observer *obs)
 Ajoute un nouvel observateur à l'objet. More...
 
void detachObserver (Observer *obs)
 Supprime le lien entre l'observateur et l'objet. More...
 
void notifyObservers (ObserverMessage const *msg)
 Envoie le message de modification à tous les observateurs. More...
 
- Public Member Functions inherited from cogitant::CogitantObject
 CogitantObject ()
 Constructeur. More...
 
 CogitantObject (CogitantObject const &o)
 Constructeur par recopie. More...
 
virtual ~CogitantObject ()
 Destructeur. More...
 
PropertySetproperties ()
 Accès à l'ensemble des propriétés. More...
 
virtual std::string toString () const
 Transformation en chaîne de caractères. More...
 
std::string className () const
 Nom de la classe. More...
 
PropertySet const * properties () const
 Accès en lecture seule à l'ensemble des propriétés. More...
 
bool hasProperties () const
 Existence de propriétés. More...
 
CogitantObjectoperator= (CogitantObject const &ob)
 Affectation. More...
 

Protected Member Functions

void copy (iSet hi, iSet gi)
 Copie récursive d'un sous ensemble de i_src dans io_dest. More...
 
- Protected Member Functions inherited from cogitant::Operation
void setProgress (unsigned int current, unsigned int max)
 Progression actuelle de l'opération. More...
 
- Protected Member Functions inherited from cogitant::ObservableObject
virtual ObserverSetallocObservers () const
 Fonction créant l'instance d'une sous classe de ObserverSet pour la représentation de l'ensemble des observateurs de l'objet. More...
 
ObserverSetobservers ()
 Accès à l'ensemble des observateurs. More...
 
- Protected Member Functions inherited from cogitant::CogitantObject
virtual PropertySetallocProperties () const
 Fonction créant l'instance d'une sous classe de PropertySet pour la représentation des propriétés de l'objet. More...
 

Additional Inherited Members

- Public Types inherited from cogitant::OperationBase
typedef unsigned int Error
 Résultat de la vérification des arguments d'une opération. More...
 
- Static Public Attributes inherited from cogitant::Operation
static const Error PROJBACKTRACKCHOICE_EMPTYLIST
 Impossible d'enlever un élément à une liste vide. More...
 
static const Error OBJECTTYPE
 Un (identifiant d') objet parmi les paramètres n'est pas du bon type. More...
 
static const Error WRONGEDGES
 Un graphe parmi les paramètres de l'opération possède des arêtes pendantes. More...
 
- Static Public Attributes inherited from cogitant::OperationBase
static const Error CHECKOK
 Pas d'erreur. More...
 
static const Error ARGUMENTS
 Certains paramètres de l'opération n'ont pas été fixés. More...
 
static const Error UNUSED
 Symbole d'erreur inutilisé. More...
 
- Protected Attributes inherited from cogitant::OperationBase
bool m_stop
 Arrêt de l'exécution de l'opération demandé. More...
 

Detailed Description

Opération de somme disjointe d'un graphe et d'un sous ensemble d'un autre graphe.

Dans un usage normal de la bibliothèque, il est plus simple d'appeler la méthode Environment::disjointSum() qui effectue effectue une somme disjointe en appelant les méthodes de cette classe, mais en cachant l'initialisation des paramètres.

Soient un graphe io_dest, et un objet de io_dest d'identificateur i_gparent, un graphe i_src et un sous ensemble i_subh de i_src, cette opération ajoute comme fils de l'objet i_gparent de io_dest des copies de chacun des objets de i_src contenus dans i_subh.
Tous ces paramètres doivent obligatoirement être fixés avant l'appel à la méthode run(). Une attention particulière doit être portée à i_subh qui contient les identificateurs des sommets copiés. En effet, pour copier un graphe entier s dans un graphe déjà existant d, il est nécessaire d'initialiser i_gparent à la racine de d et surtout i_subh à l'ensemble des sommets de s sauf la racine car d contient déjà une racine. Ceci peut être fait de la façon suivante :

op.setParamDest(d);
op.setParamSrc(s);
op.setParamDestParent(d->root());
GraphSubset tmp(*s); // Ensemble vide
tmp.fill(); // Ensemble contenant tous les sommets de s
tmp.deselect(s->root()); // <= IMPORTANT : la racine de s ne doit pas être copiée
op.setParamSrcSubset(&tmp);
op.run();

Lors du calcul de la somme disjointe, les classes de coréférence peuvent être prises en compte de deux façons :

Fonctionnalité avancée Fixer les images de certains sommets (inutilisé dans un usage normal)
L'utilisation du paramètre i_preoldnew contenant des correspondances entre sommets de i_src ne devant pas être copiés et des identifiants de sommets déjà existants de io_dest permet de rattacher à des sommets des arêtes qui auraient été pendantes suite à la copie d'une partie de i_src (dans le cas où un sommet relation de i_src est dans i_subh mais pas un sommet concept voisin). Dans ce cas, si un sommet de i_src n'est pas copié (ne figure pas dans i_subh) mais que son identifiant figure comme clé dans i_preoldnew alors les arêtes ayant pour extrémité ce sommet (qui devraient être pendantes dans la copie) sont liées au sommet de io_dest ayant pour identifiant la valeur correspondante dans i_preoldnew (c'est à dire la valeur associée à cette clé).

See also
cogitant::Environment::disjointSum().

Constructor & Destructor Documentation

cogitant::OpeDisjointSum::OpeDisjointSum ( Environment env)

Constructeur.

cogitant::OpeDisjointSum::~OpeDisjointSum ( )

Destructeur.

Member Function Documentation

Error cogitant::OpeDisjointSum::check ( )
virtual

Vérification des paramètres.

Retourne Operation::CHECKOK si l'opération peut être exécutée (méthode run()) ou un code d'erreur dans le cas contraire.

Implements cogitant::OperationBase.

void cogitant::OpeDisjointSum::copy ( iSet  hi,
iSet  gi 
)
protected

Copie récursive d'un sous ensemble de i_src dans io_dest.

L'objet repéré par hi dans i_src est copié comme fils de gi dans io_dest, ainsi que tous les fils de hi qui sont dans i_subh.

iSet cogitant::OpeDisjointSum::getResultNewISet ( iSet  s) const

Accès à l'identifiant d'un sommet copié.

Parameters
sidentifiant d'un sommet du graphe copié qui fait partie des sommets copiés.
Returns
l'identifiant de la copie de s dans le graphe destination. Si s n'est pas un sommet copié, retourne ISET_NULL.
void cogitant::OpeDisjointSum::run ( )
virtual

Execute l'opération.

Exceptions
ExceptionStructuresi i_fusioncc vaut true et qu'une classe de coréférence de io_dest a le même nom qu'une classe de coréférence de i_src alors que ces classes comportent des sommets qui ne peuvent être coréférents car de types différents.

Implements cogitant::OperationBase.

void cogitant::OpeDisjointSum::setParamAutoCopyChild ( bool  acc)

Force la copie des fils.

Par défaut, quand un objet est copié, ses fils ne sont pas obligatoirement copiés (ils sont copiés ssi ils sont sélectionnés). En appelant cette méthode avec true le fils sont toujours copiés. De cette façon, il suffit de sélectionner un sommet concept pour copier emboîtements et graphes emboîtés.

void cogitant::OpeDisjointSum::setParamFusionCoreferenceClasses ( bool  fcc)

Fixe le paramètre de fusion des classes de coréférence de même nom.

L'appel à cette méthode n'est pas nécessaire pour exécuter l'opération. La valeur par défaut est false correspondant à des classes de coréférence disjointes.

Parameters
fccsi true deux classes de coréférence ayant même label (Property::COREFERENCE_LABEL) sont fusionnées lors de l'appel à run(). Les sommets concepts de ces deux classes de coréférence sont alors tous coréférents et appartiennent à la classe de coréférence de io_dest (augmentée des sommets de la classe de i_src de même nom). Si fcc vaut false toutes les classes de coréférence sont considérées comme disjointes. Si une classe de io_dest a le même nom qu'une classe de i_src, cette dernière est renommée.
void cogitant::OpeDisjointSum::setParamOldNew ( std::map< iSet, iSet > const *  oldnew)

Fixe les correspondances de sommets préexistantes.

Il est inutile d'appeler cette méthode dans les utilisations habituelles de l'opération : dans ce cas, aucune correspondance ne sera prise en compte, et une somme disjointe classique sera calculée. Si une valeur non nulle est passée pour oldnew, ces correspondances sont prises en compte de la façon expliquée à la section fonctionnalité avancée.

Precondition
oldnew doit être un map dont les clés sont des identifiants de sommets du graphe origine (non copiés, c'est à dire n'appartenant pas à l'ensemble des sommets copiés) et les valeurs sont des des identifiants de sommets du graphe destination.
void cogitant::OpeDisjointSum::setParamResultAddedNodes ( std::vector< iSet > *  addednodes)

Mémoriser (et récupérer en sortie) les identificateurs des sommets ajoutés.

Parameters
addednodessi non NULL, l'opération rajoutera (sans effacer le contenu précédent) au vecteur les identificateurs des sommets ajoutés.