SiGraph: sulcal graphs


model.h
Go to the documentation of this file.
1
2#ifndef SI_MODEL_MODEL_H
3#define SI_MODEL_MODEL_H
4
5
6#include <vector>
7#include <string>
8#include <set>
9#include <map>
10
11#include <si/model/topModel.h>
12class Vertex;
13
14
15namespace sigraph
16{
17 class Clique;
18
25 class Model
26 {
27 public:
28 virtual ~Model();
30 virtual Model* clone() const = 0;
31
32 Model & operator = ( const Model & m );
33
36
40 virtual double prop( const Clique* cl ) = 0;
50 virtual double prop( const Clique* cl,
51 const std::map<Vertex*, std::string> & changes );
54 virtual bool doesOutputChange( const Clique* cl,
55 const std::map<Vertex*,
56 std::string> & changes ) const;
60 virtual double update( const Clique* cl ) { return( prop( cl ) ); }
66 virtual double update( const Clique* cl,
67 const std::map<Vertex*, std::string> & changes );
75 virtual bool isAdaptive() const;
77 virtual bool openFile( const std::string & basename = "" );
79 virtual void closeFile();
81 virtual void subFiles( const std::string & prefix,
82 std::set<std::string> & listNames ) const;
84 virtual double printDescription( Clique* cl, bool withnames = false );
86
89
90 virtual Model* parent();
92 virtual void setParent( Model* m );
94 virtual TopModel* topModel();
95 virtual const TopModel* topModel() const;
98 virtual const carto::AttributedObject* graphObject() const;
100
103
104 virtual void buildTree( Tree & tr ) const = 0;
105 virtual void setBaseName( const std::string & basename );
107
108 protected:
109 Model( Model* parent = 0 );
110 Model( const Model & m );
111
112 private:
114 Model *_parent;
115 };
116
117
118 // Fonctions inline
119
120 inline Model::Model( Model* parent ) : _parent( parent )
121 {
122 }
123
124
125 inline Model::Model( const Model & ) : _parent( 0 )
126 {
127 }
128
129
130 inline Model & Model::operator = ( const Model & )
131 {
132 return( *this );
133 }
134
135
136 inline bool Model::isAdaptive() const
137 {
138 return( false );
139 }
140
141
142 inline bool Model::openFile( const std::string & )
143 {
144 return( false );
145 }
146
147
148 inline void Model::closeFile()
149 {
150 }
151
152
153 inline void Model::subFiles( const std::string &,
154 std::set<std::string> & ) const
155 {
156 }
157
158
160 {
161 return( _parent );
162 }
163
164
165 inline void Model::setParent( Model* m )
166 {
167 _parent = m;
168 }
169
170
172 {
173 return( _parent ? _parent->topModel() : 0 );
174 }
175
176
177 inline const TopModel* Model::topModel() const
178 {
179 return( _parent ? _parent->topModel() : 0 );
180 }
181
182
184 {
185 TopModel* tm = topModel();
186 return tm ? tm->parentAO() : 0;
187 }
188
189
191 {
192 const TopModel* tm = topModel();
193 return tm ? tm->parentAO() : 0;
194 }
195
196
197 inline void Model::setBaseName( const std::string & )
198 {
199 }
200
201
202 inline double Model::update( const Clique* cl,
203 const std::map<Vertex*, std::string> & )
204 {
205 return update( cl );
206 }
207
208}
209
210
211namespace carto
212{
214}
215
216#endif
217
Classe Clique.
Definition clique.h:35
Modèle pour l'évaluation de cliques de graphes (classe abstraite).
Definition model.h:26
virtual void setBaseName(const std::string &basename)
Definition model.h:197
virtual void setParent(Model *m)
Fixe le parent.
Definition model.h:165
virtual void buildTree(Tree &tr) const =0
(devrait être externe à la classe...)
virtual Model * clone() const =0
Duplication (fonction abstraite)
virtual bool openFile(const std::string &basename="")
Ouvre le(s) fichier(s) de sauvegardes des données reçues.
Definition model.h:142
virtual double printDescription(Clique *cl, bool withnames=false)
Calcule le potentiel et garde le(s) vecteur(s) de description.
virtual void subFiles(const std::string &prefix, std::set< std::string > &listNames) const
Donne la liste des fichiers sous le modèle.
Definition model.h:153
virtual bool doesOutputChange(const Clique *cl, const std::map< Vertex *, std::string > &changes) const
tells whether a label change inpacts the model output or not.
virtual Model * parent()
Donne le parent direct (0 si pas de parent)
Definition model.h:159
Model(Model *parent=0)
Definition model.h:120
virtual bool isAdaptive() const
Le modèle est-il adaptatif ?
Definition model.h:136
virtual carto::AttributedObject * graphObject()
Donne l'élément parent du graphe modèle.
Definition model.h:183
virtual double prop(const Clique *cl, const std::map< Vertex *, std::string > &changes)
Donne le potentiel d'une clique, après une transformation de labels de noeuds, en ne le recalculant que...
Model & operator=(const Model &m)
Definition model.h:130
virtual double prop(const Clique *cl)=0
Propagation (réponse du modèle)
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...
Definition model.h:60
virtual TopModel * topModel()
Donne la base de l'arborescence (TopModel, s'il y en a)
Definition model.h:171
virtual ~Model()
virtual void closeFile()
Ferme le(s) fichier(s) de sauvegardes des données reçues.
Definition model.h:148
virtual carto::AttributedObject * parentAO()
Definition topModel.h:45
SyntaxedObject< PropertySet > AttributedObject
#define DECLARE_GENERIC_OBJECT_TYPE(T)