2011CaoTme7: EbmVar.h

File EbmVar.h, 1.4 KB (added by jpc, 12 years ago)

C++ header de la classe EbmVar?

Line 
1
2#ifndef  __EBMVAR_H__
3#define  __EBMVAR_H__
4
5#include  <string> 
6#include  <map> 
7#include  "Ebm.h"
8
9
10class EbmVar: public Ebm {
11  private:
12    static unsigned int                    _maxIndex;
13    static std::map<std::string ,EbmVar*>  _byName;   // All variables storage.
14    static std::map<unsigned int,EbmVar*>  _byIndex;
15  private :   
16             std::string   _name;       // Variable name.
17             LogicValue    _value;      // Logical value.
18             unsigned int  _index;      // Unique index (for ROBDD)
19  private:
20                           EbmVar   ( std::string name, LogicValue value=LogicValue::Zero );
21    virtual               ~EbmVar   ();
22  public:
23    static   EbmVar*       create   ( std::string name, LogicValue value=LogicValue::Zero );
24  public:
25    virtual  Ebm::Type     getType  ();
26    inline   std::string   getName  ();
27    inline   LogicValue    getValue ();
28    inline   unsigned int  getIndex ();
29    inline   void          setValue ( LogicValue value );
30  // Operations sur le dictionnaire
31    static   EbmVar*       get      ( unsigned int index );
32    static   EbmVar*       get      ( std::string name );
33};
34
35
36inline   std::string   EbmVar::getName  () { return _name; }
37inline   LogicValue    EbmVar::getValue () { return _value; }
38inline   unsigned int  EbmVar::getIndex () { return _index; }
39inline   void          EbmVar::setValue ( LogicValue value ) { _value=value; }
40
41
42#endif   // __EBMVAR_H__