Changes between Version 2 and Version 3 of 2010CaoTme2


Ignore:
Timestamp:
Feb 25, 2010, 11:53:55 AM (15 years ago)
Author:
jpc
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • 2010CaoTme2

    v2 v3  
    11= La Structure de Données Lofig =
     2
     3La structure de données {{Lofig}} est conçue pour représenter les ''netlists''
     4en mémoire. Les attributs des différents objets constituants cette structure ont
     5été présentés en cours. Nous allons maintenant compléter avec les déclarations
     6des fonctions membres.
     7
     8== Fonctions membres de la class Locon ==
     9
     10Les constructeurs :
     11 * Un {{{Locon}}} peut appartenir, soit à un modèle ({{{Lofig}}}), soit à une
     12   instance ({{{Loins}}}). Il y aura donc deux constructeurs correspondants à
     13   chacune de ces possibilités. On fournit en outre son nom et sa direction.
     14   Le type sera déduit à partir du constructeur appelé.
     15   * {{{Locon ( Lofig*, const std::string& name, unsigned int dir );}}}
     16   * {{{Locon ( Loins*, const std::string& name, unsigned int dir );}}}
     17
     18Les accesseurs :
     19 * {{{std::string   getName     ();}}}
     20 * {{{Losig*        getSignal   ();}}}
     21 * {{{Lofig*        getModel    ();}}}
     22 * {{{Loins*        getInstance ();}}}
     23 * {{{unsigned int  getDirection();}}}
     24
     25Les modificateurs (''mutators'', en VO) :
     26 * Un {{{Locon}}} peut (doit) être associé à un signal. On pourra le faire de
     27   deux façons différentes, soit en donnant explicitement un pointeur sur le
     28   {{{Losig}}}, soit en indiquant simplement le nom du signal.
     29   * {{{void  setSignal ( Losig* );}}}
     30   * {{{void  setSignal ( const std::string& );}}}
     31 * Positionnement de la direction :
     32   * {{{void  setDirection ( unsigned int );}}}
     33
     34De plus, le code de trois fonctions membres vous sont fournies pour pouvoir
     35afficher l'objet dans un flux. Dans {{{Locon.h}}} :
     36{{{
     37class Locon {
     38  public:
     39    static std::string   typeToString ( unsigned int );
     40    static std::string   dirToString  ( unsigned int );
     41  public:
     42           void          xmlDrive     ( std::ostream& );
     43};
     44}}}
     45Dans {{{Locon.cpp}}} :
     46{{{
     47#include  "Indentation.h"
     48
     49/// ...
     50
     51std::string  Locon::typeToString ( unsigned int type )
     52{
     53  switch ( type ) {
     54    case Internal: return "Internal";
     55    case External: return "External";
     56  }
     57  return "Unknown";
     58}
     59
     60
     61std::string  Locon::dirToString ( unsigned int direction )
     62{
     63  switch ( direction ) {
     64    case In:       return "In";
     65    case Out:      return "Out";
     66    case Inout:    return "Inout";
     67    case Tristate: return "Tristate";
     68    case Transcv:  return "Transcv";
     69  }
     70  return "Unknown";
     71}
     72
     73
     74void  Locon::xmlDrive ( std::ostream& o )
     75{
     76  o << indent << "<Locon name=\"" << _name << "\"";
     77  o << " signal=\"" << ((_signal != NULL) ? _signal->getName() : "NULL") << "\"";
     78  if ( _type == External ) o << " model=\""    << getModel   ()->getName() << "\"";
     79  else                     o << " instance=\"" << getInstance()->getName() << "\"";
     80  o << " dir=\"" << dirToString(_direction) << "\"";
     81  o << " type=\"" << typeToString(_type)  << "\"/>\n";
     82}
     83}}}
     84
    285
    386[[Image(fulladder-1.png)]]