SiGraph: sulcal graphs


foldFakeRel.h
Go to the documentation of this file.
1
2#ifndef SI_FOLD_FOLDFAKEREL_H
3#define SI_FOLD_FOLDFAKEREL_H
4
5
6
7#include <si/model/model.h>
8#include <map>
9
10
11namespace sigraph
12{
13 class CGraph;
14 class MGraph;
15
28 class FoldFakeRel : public Model
29 {
30 public:
32 struct Reldescr
33 {
34 Reldescr() : hasModel( false ), num( 0 ) {}
36 unsigned num;
37 };
38
39 typedef Reldescr** Relmap;
41 typedef std::map<const CGraph*, Relmap> FakeRels;
42
44 FoldFakeRel( const FoldFakeRel & fr ) : Model( fr ), _mgraph( fr._mgraph ),
45 _rels( fr._rels ) {}
46 virtual ~FoldFakeRel();
47
48 void setMGraph( MGraph* mg ) { _mgraph = mg; }
49 virtual Model* clone() const { return( new FoldFakeRel( *this ) ); }
50 virtual void buildTree( Tree & tr ) const;
51
52 virtual double prop( const Clique* cl );
56 virtual double prop( const Clique* cl,
57 const std::map<Vertex*, std::string> & changes );
58 virtual double update( const Clique* cl );
62 virtual double update( const Clique* cl,
63 const std::map<Vertex*, std::string> & changes );
64
65 virtual Relmap init( const CGraph & cg );
66 virtual void clear();
67 Reldescr* relDescr( const CGraph* cg, const std::string & label1,
68 const std::string & label2 );
69
70 protected:
71 Relmap allocGraph( const CGraph* cg );
72 void deleteGraph( Relmap rmap );
73 virtual double update( const CGraph & cg, Relmap & relm );
74
78 std::map<std::string, int> _ltoi;
81
82 private:
83 };
84
85}
86
87
88namespace carto
89{
91}
92
93#endif
94
Graphes avec étiquettes et gestion de cliques (classe abstraite).
Definition cgraph.h:37
Classe Clique.
Definition clique.h:35
Evalue les instances de relations qui n'existent pas dans le modèle.
Definition foldFakeRel.h:29
virtual void clear()
virtual double prop(const Clique *cl)
Propagation (réponse du modèle)
virtual Relmap init(const CGraph &cg)
virtual double update(const CGraph &cg, Relmap &relm)
virtual void buildTree(Tree &tr) const
(devrait être externe à la classe...)
virtual double update(const Clique *cl, const std::map< Vertex *, std::string > &changes)
Change les états internes pour les noeuds de la liste changes, chacun avec son ancien nom.
void deleteGraph(Relmap rmap)
FoldFakeRel(Model *parent=0)
Relmap allocGraph(const CGraph *cg)
Reldescr * relDescr(const CGraph *cg, const std::string &label1, const std::string &label2)
FakeRels _rels
Table graphe :-> tableau des relations.
Definition foldFakeRel.h:80
std::map< std::string, int > _ltoi
Conversion label -> indice.
Definition foldFakeRel.h:78
std::map< const CGraph *, Relmap > FakeRels
tableau graphe -> Relmap
Definition foldFakeRel.h:41
virtual double prop(const Clique *cl, const std::map< Vertex *, std::string > &changes)
Ce prop() est utilisé pour tester un changement: on ne fait pas d'update() avant, et il n'est pas effec...
Reldescr ** Relmap
tableau indices -> Reldescr
Definition foldFakeRel.h:39
virtual double update(const Clique *cl)
Met à jour les états internes du modèle (au besoin) Cette fonction doit être appelée après chaque changement de l...
FoldFakeRel(const FoldFakeRel &fr)
Definition foldFakeRel.h:44
virtual Model * clone() const
Duplication (fonction abstraite)
Definition foldFakeRel.h:49
MGraph * _mgraph
Graphe modèle.
Definition foldFakeRel.h:76
void setMGraph(MGraph *mg)
Definition foldFakeRel.h:48
Graph modèle (classe abstraite).
Definition mgraph.h:48
virtual Model * parent()
Donne le parent direct (0 si pas de parent)
Definition model.h:159
Model(Model *parent=0)
Definition model.h:120
#define DECLARE_GENERIC_OBJECT_TYPE(T)
Description d'une relation.
Definition foldFakeRel.h:33