/***************************************************************************/
//              "Меркурий"-"Правда" - open source переводчик
//          распространяется в соответсвии с лицензией GNU v 2.0
//
//                         главный отладчик
//     Анисимов Д.В.                                         сегодня
/***************************************************************************/
# ifndef  DEBUG_H
# define  DEBUG_H

# include <core.h>
# include <window.h>
# include <edit2.h>


enum e_DebugRegim
{
   DSTRUCT,
   DVARIANT,
   DREAL
};

enum e_DebugRegim1
{  D1STRUCT,
   D1SELECT
};

/********************************************************************/
//    смотрелка для t_Core->Variants (основной таблицы разбора)     //
/********************************************************************/
class t_Debug : public t_Win
{
   short   i_start_struct ;
   long    i_Select ;
   short   Begin_S,Begin_V,Begin_R ;
   short   n_struct ;
   t_shortList SelectVision ;
   short   z_Vision ;

public:
   t_rWord Current ;
   t_rWord stack[30] ;
   short   j_stack ;
   
   e_DebugRegim  Reg ;
   e_DebugRegim1 Reg1 ;

       t_Debug( void );
void   init( void );
void   restart( void );
void   paint( void );
void   paint_frasa( void );
void   paint_stack( short xx );
void   paint_struct( short xx );
void   paint_variant( short xx );
void   sprint_param( char *Str, t_Word *W );

char   hot_key( short SS, short key1, short key2 );
e_WinMsg loop( void );
};

/********************************************************************/
//       смотрелка для t_Grammar (таблицы правил перевода)          //
/********************************************************************/

class t_GrammarView : public t_Win
{
   short  n_stack,i_Select,Begin_Y ;
   short  stack[40] ;
   e_Half Half ;

public:
       t_GrammarView( void );
void   set_pos( short x1, short y1, short x2, short y2 );
void   restart( void );
void   paint( void );
e_WinMsg loop( void );
};


class t_ViewTransParam : public t_SelectWin
{
   short  i_struct ;
   e_Half Half ;
public:
	  t_ViewTransParam( short _i_struct, e_Half _Half );
   void   paint1( short i, char c );
   char   hot_key( short SS, short key1, short key2 );
};

/********************************************************************/
//       смотрелка для t_Slowo3 словарь структур перевода           //
/********************************************************************/

class t_Slowo3View : public t_Win
{
   long   n_stack,i_Select,Begin_Y ;
   long   stack[40] ;

public:
       t_Slowo3View( void );
void   set_pos( short x1, short y1, short x2, short y2 );
void   restart( void );
void   paint( void );
e_WinMsg loop( void );
};

# endif