/*
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 *  Authors : Benjamin GAUTHIER - 24 Mar 2004
 *            Joseph BANINO
 *            Olivier JACQUES
 *            Richard GAYRAUD
 *            From Hewlett Packard Company.
 *           
 */

#ifndef _CACTIONS
#define _CACTIONS

class CAction
{
  public:
    enum T_ActionType
    {
      E_AT_NO_ACTION = 0,
      E_AT_ASSIGN_FROM_REGEXP,
      E_AT_CHECK,
      E_AT_ASSIGN_FROM_VALUE,
      E_AT_NB_ACTION
    };

    enum T_VarType
    {
      E_VT_REGEXP = 0,
      E_VT_CONST,
      E_VT_UNDEFINED,
      E_VT_NB_VAR_TYPE
    };

    enum T_LookingPlace
    {
      E_LP_MSG = 0,
      E_LP_HDR,
      E_LP_NB_LOOKING_PLACE
    };

    typedef struct _T_Action
    {
    } T_Action;

    void afficheInfo();

    T_ActionType   getActionType();
    T_VarType      getVarType();  
    T_LookingPlace getLookingPlace();
    bool           getCheckIt();
    int            getVarId();
    char*          getLookingChar();

    void setActionType   (T_ActionType   P_value);
    void setVarType      (T_VarType      P_value);  
    void setLookingPlace (T_LookingPlace P_value);
    void setCheckIt      (bool           P_value);
    void setVarId        (int            P_value);
    void setLookingChar  (char*          P_value);
    void setAction       (CAction        P_action);

    CAction(const CAction &P_Action);
    CAction();
    ~CAction();
  
  private:
      T_ActionType   M_action;
      T_VarType      M_varType;
      T_LookingPlace M_lookingPlace;
      bool           M_checkIt;
      int            M_varId;
      char*          M_lookingChar;
};

class CActions
{
  public:
    void afficheInfo();
    void setAction(CAction P_action);
    void reset();
    int  getUsedAction();
    int  getMaxSize();
    CAction* getAction(int i);
    CActions(const CActions &P_Actions);
    CActions(int P_nbAction);
    ~CActions();
  
  private:
    CAction*   M_actionList;
    int        M_nbAction;
    int        M_currentSettedAction;
};

#endif
