MOOSE - Multiscale Object Oriented Simulation Environment
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Cinfo.h
Go to the documentation of this file.
1 /**********************************************************************
2 ** This program is part of 'MOOSE', the
3 ** Messaging Object Oriented Simulation Environment,
4 ** also known as GENESIS 3 base code.
5 ** copyright (C) 2003-2009 Upinder S. Bhalla. and NCBS
6 ** It is made available under the terms of the
7 ** GNU General Public License version 2
8 ** See the file COPYING.LIB for the full notice.
9 **********************************************************************/
10 #ifndef _CINFO_H
11 #define _CINFO_H
12 
13 class DinfoBase;
14 
18 class Cinfo
19 {
20  public:
32  Cinfo( const std::string& name,
33  const Cinfo* baseCinfo, // Base class
34  Finfo** finfoArray, // Field information array
35  unsigned int nFinfos,
36  DinfoBase* d, // A handle to lots of utility functions for the Data class.
37  const string* doc = 0,
38  unsigned int numDoc = 0,
39  bool banCreation = false
40  );
41 
45  Cinfo();
46 
50  Cinfo( const Cinfo& other );
51 
52  ~Cinfo();
54 
58  void init( Finfo** finfoArray, unsigned int nFinfos );
59 
65  void registerFinfo( Finfo* f );
66 
71  FuncId registerOpFunc( const OpFunc* f );
72 
77  void overrideFunc( FuncId fid, const OpFunc* f );
78 
84 
90  void postCreationFunc( Id newId, Element* newElm ) const;
91 
95  void registerPostCreationFinfo( const Finfo* f );
96 
103  bool banCreation() const;
105 
106  const OpFunc* getOpFunc( FuncId fid ) const;
107  // FuncId getOpFuncId( const string& funcName ) const;
108 
112  const std::string& name() const;
113 
117  static const Cinfo* find( const std::string& name );
118 
119  /*
120  * Returns base Cinfo class. The Neutral returns 0.
121  */
122  const Cinfo* baseCinfo() const;
123 
129  const Finfo* findFinfo( const string& name) const;
130 
140  unsigned int numBindIndex() const;
141 
145  const map< string, Finfo* >& finfoMap() const;
146 
151  const DinfoBase* dinfo() const;
152 
157  bool isA( const string& ancestor ) const;
158 
162  void reportFids() const;
163 
165  // Functions here for the MOOSE Cinfo inspection class
167 
171  string getDocs() const;
172 
176  string getBaseClass() const;
177 
178 
182  Finfo* getSrcFinfo( unsigned int i ) const;
183 
187  unsigned int getNumSrcFinfo() const;
188 
192  Finfo* getDestFinfo( unsigned int i ) const;
193 
197  unsigned int getNumDestFinfo() const;
198 
202  Finfo* getValueFinfo( unsigned int i ) const;
203 
207  unsigned int getNumValueFinfo() const;
208 
212  Finfo* getLookupFinfo( unsigned int i ) const;
216  unsigned int getNumLookupFinfo() const;
217 
221  Finfo* getSharedFinfo( unsigned int i );
222 
226  unsigned int getNumSharedFinfo() const;
227 
231  Finfo* getFieldElementFinfo( unsigned int i ) const;
232 
236  unsigned int getNumFieldElementFinfo() const;
237 
241  void setNumFinfo( unsigned int v );
242 
248  const string& srcFinfoName( BindIndex bid ) const;
249 
255  const string& destFinfoName( FuncId fid ) const;
256 
257 
258 
263  static void makeCinfoElements( Id parent );
264 
270  static void rebuildOpIndex();
271 
275  static const Cinfo* initCinfo();
276 
277  private:
278  string name_;
279 
280  // const std::string author_;
281  // const std::string description_;
284 
286  std::map< std::string, std::string > doc_;
287 
289 
293  map< string, Finfo* > finfoMap_;
294 
296  vector< Finfo* > srcFinfos_;
297 
299  vector< Finfo* > destFinfos_;
300 
302  vector< Finfo* > valueFinfos_;
303 
305  vector< Finfo* > lookupFinfos_;
306 
308  vector< Finfo* > sharedFinfos_;
309 
311  vector< Finfo* > fieldElementFinfos_;
312 
318  vector< const Finfo* > postCreationFinfos_;
319  vector< const OpFunc* > funcs_;
320 
321  // Useful to know in case we have transient OpFuncs made and
322  //destroyed.
323  static unsigned int numCoreOpFunc_;
324 // map< string, FuncId > opFuncNames_;
325 
326  static map< string, Cinfo* >& cinfoMap();
327 
328  // Many opfuncs share same FuncId
329  // static map< OpFunc*, FuncId >& funcMap();
330 };
331 
332 #endif // _CINFO_H
vector< Finfo * > valueFinfos_
Keep track of all ValueFinfos.
Definition: Cinfo.h:302
static void makeCinfoElements(Id parent)
Definition: Cinfo.cpp:164
const Cinfo * baseCinfo() const
Definition: Cinfo.cpp:216
Finfo * getFieldElementFinfo(unsigned int i) const
Definition: Cinfo.cpp:523
FuncId registerOpFunc(const OpFunc *f)
Definition: Cinfo.cpp:96
const OpFunc * getOpFunc(FuncId fid) const
Definition: Cinfo.cpp:240
Finfo * getDestFinfo(unsigned int i) const
Definition: Cinfo.cpp:430
Finfo * getValueFinfo(unsigned int i) const
Definition: Cinfo.cpp:453
unsigned int getNumSrcFinfo() const
Definition: Cinfo.cpp:421
void init(Finfo **finfoArray, unsigned int nFinfos)
Definition: Cinfo.cpp:82
BindIndex registerBindIndex()
Definition: Cinfo.cpp:109
unsigned short BindIndex
Definition: header.h:62
unsigned int getNumDestFinfo() const
Definition: Cinfo.cpp:444
string getDocs() const
Definition: Cinfo.cpp:376
vector< Finfo * > destFinfos_
Keep track of all DestFinfos.
Definition: Cinfo.h:299
static unsigned int numCoreOpFunc_
Definition: Cinfo.h:323
const Cinfo * baseCinfo_
Definition: Cinfo.h:282
map< string, Finfo * > finfoMap_
Definition: Cinfo.h:293
unsigned int getNumValueFinfo() const
Definition: Cinfo.cpp:467
static const Cinfo * initCinfo()
Definition: Cinfo.cpp:327
static const Cinfo * find(const std::string &name)
Definition: Cinfo.cpp:200
static map< string, Cinfo * > & cinfoMap()
Definition: Cinfo.cpp:307
Cinfo()
Definition: Cinfo.cpp:50
const map< string, Finfo * > & finfoMap() const
Definition: Cinfo.cpp:270
const DinfoBase * dinfo() const
Definition: Cinfo.cpp:275
~Cinfo()
Definition: Cinfo.cpp:72
void reportFids() const
Definition: Cinfo.cpp:292
vector< Finfo * > fieldElementFinfos_
Keep track of all FieldElementFinfos.
Definition: Cinfo.h:311
const std::string & name() const
Definition: Cinfo.cpp:260
string name_
Definition: Cinfo.h:278
vector< Finfo * > sharedFinfos_
Keep track of all SharedFinfos.
Definition: Cinfo.h:308
void overrideFunc(FuncId fid, const OpFunc *f)
Definition: Cinfo.cpp:103
void registerFinfo(Finfo *f)
Definition: Cinfo.cpp:114
void postCreationFunc(Id newId, Element *newElm) const
Definition: Cinfo.cpp:143
Finfo * getLookupFinfo(unsigned int i) const
Definition: Cinfo.cpp:477
unsigned int getNumFieldElementFinfo() const
Definition: Cinfo.cpp:537
bool isA(const string &ancestor) const
Definition: Cinfo.cpp:280
unsigned int getNumSharedFinfo() const
Definition: Cinfo.cpp:514
bool banCreation_
Definition: Cinfo.h:288
const string & destFinfoName(FuncId fid) const
Definition: Cinfo.cpp:569
Finfo * getSrcFinfo(unsigned int i) const
Definition: Cinfo.cpp:406
vector< Finfo * > lookupFinfos_
Keep track of all LookupFinfos.
Definition: Cinfo.h:305
bool banCreation() const
Definition: Cinfo.cpp:232
string getBaseClass() const
Definition: Cinfo.cpp:391
vector< const Finfo * > postCreationFinfos_
Definition: Cinfo.h:318
Finfo * getSharedFinfo(unsigned int i)
Definition: Cinfo.cpp:500
void setNumFinfo(unsigned int v)
Definition: Cinfo.cpp:546
std::map< std::string, std::string > doc_
Definition: Cinfo.h:286
const DinfoBase * dinfo_
Definition: Cinfo.h:283
vector< const OpFunc * > funcs_
Definition: Cinfo.h:319
static void rebuildOpIndex()
Definition: Cinfo.cpp:589
Definition: Id.h:17
unsigned int numBindIndex() const
Definition: Cinfo.cpp:265
const string & srcFinfoName(BindIndex bid) const
Definition: Cinfo.cpp:552
vector< Finfo * > srcFinfos_
Keep track of all SrcFinfos.
Definition: Cinfo.h:296
void registerPostCreationFinfo(const Finfo *f)
Definition: Cinfo.cpp:138
unsigned int getNumLookupFinfo() const
Definition: Cinfo.cpp:491
unsigned int FuncId
Definition: header.h:42
Definition: Cinfo.h:18
BindIndex numBindIndex_
Definition: Cinfo.h:285
const Finfo * findFinfo(const string &name) const
Definition: Cinfo.cpp:224
Definition: Finfo.h:12