home *** CD-ROM | disk | FTP | other *** search
/ Prima Shareware 3 / DuCom_Prima-Shareware-3_cd1.bin / PROGRAMO / C / OOPSV / OOPSLIB.ZIP / STATE.HPP < prev    next >
Encoding:
C/C++ Source or Header  |  1995-10-19  |  2.5 KB  |  83 lines

  1. #ifndef _STATE
  2.  
  3. #define MAXINVALIDATE      10  // Taille max du tableau des controles invalides.
  4.  
  5. #include "statelis.hpp"
  6.  
  7. #include "state.cfg"           // fichier de configuration dependant de l'application
  8.  
  9. class State
  10. {
  11. //=========== variables de classe pour la gestion
  12. #ifdef STATE_DEBUG
  13.   protected:
  14.       static int        nbAlive;    // pour faire du debug
  15.       static long       nbCreated;  // pour faire du debug
  16. #endif
  17.   public:
  18.       static const char* version;   // nom de la version liee aux outils de taduction
  19.   protected:
  20.       static StateList* pile;
  21.       static void*      invalidateCtrl[MAXINVALIDATE];
  22.       static int        nbInvalidated;
  23.       /* ===== tableaux ====== */
  24.       static int*       tabInitial;
  25.       static int*       tabFinal;
  26.       static int*       tabAncestor;  // tableau des lignees d'etats
  27.       static int*       tabClassAnc;  // tableau des lignees de classes
  28.       static int*       tabPermise;
  29.       static int*       tabInterdite;
  30. #if STATE_LIGHT == 0
  31.       static int*       tabExitStates;
  32. #endif
  33.       /* ===================== */
  34.   public:
  35.           static int        ppConditionInUse; //pour eviter les recursions sur les pre/post conditions
  36.       static int        globalError;    // pour compenser les faiblesses du "deroulement de pile"
  37.       static void       warning(char*); // pour afficher des messages
  38. #ifdef STATE_DEBUG
  39.       static int        getStackSize();// pour faire du debug
  40.       static int        getNbAlive();  // pour faire du debug
  41.       static long       getNbCreated();// pour faire du debug
  42.       static void       audit();       // pour faire de l'audit
  43. #endif
  44. //===============================================
  45.   protected:
  46.       int*  value;
  47.       int   currentSize;
  48.   protected:
  49.           State(State&);
  50.   public:
  51.           State(int = 0);
  52.          ~State();
  53.       State*  estPermise(int classCode,int methodCode,int light);
  54. #if STATE_LIGHT == 0
  55.       State*  estCorrecte(void);
  56. #endif
  57.       State*  estInitial(int classCode);
  58.       State*  estFinal(int classCode);
  59.  
  60.       void  display(char* = 0);
  61.       void  set(int,int);
  62.       int   rang(int stateCode);
  63.       int   etendre(void);
  64.   private: // plutot des fonctions libres que de veritables methodes
  65.       int   etatDescendDe(int,int);
  66.       int   classeDefiniEtatP(int,int);
  67.       int   classeDefiniEtatI(int,int);
  68. // ========== methodes de classe
  69.   public:
  70.   static  void  terminate(void);
  71. #ifdef STATE_DEBUG
  72.   static  void  memoryError(void);
  73. #endif
  74.   static  void  invalidateCtrlFor(void*);
  75.   static  void  activateCtrlFor(void*);
  76.   static  int   testActivatedFor(void*);
  77. };
  78.  
  79. #define _STATE
  80. #endif
  81.  
  82.  
  83.