/* %Z%%M% %I% %E% */

/*
 * Copyright (c) 1991-2005 by Wayne C. Gramlich.
 * All rights reserved.
 */

/* Some typedefs for the debugger: */

#ifndef RUN_TIME_TYPES_H
#define RUN_TIME_TYPES_H

#ifndef VECTOR_EXPORTS_H
#include "vector_exports.h"
#endif

/* Debugger commands: */
typedef struct Active_struct *Active;
typedef struct Alias_struct *Alias;
typedef enum Dbx_button_enum Dbx_button;
typedef enum Dbxtool_cmd_enum Dbxtool_cmd;
typedef enum Debug_cmd_enum Debug_cmd;
typedef enum Event_kind_enum Event_kind;
typedef struct Event_struct *Event;
typedef struct Routine_value_struct *Routine_value;
typedef struct Routine_variable_struct *Routine_variable;
typedef struct Run_time_struct *Run_time;
typedef enum Run_mode_enum Run_mode;
typedef enum Std_state_enum Std_state;

enum Dbx_button_enum {
	Dbx_button_command = 1,	/* Redo a command line */
	Dbx_button_expand,	/* Expand selection to largest symbol */
	Dbx_button_ignore,	/* Ignore the selecton */
	Dbx_button_line_num,	/* Use line number with source file name */
	Dbx_button_literal	/* Use the selection "as is" */
};

enum Dbxtool_cmd_enum {
	Dbxtool_cmd_badop,	/* Bad operator */
	Dbxtool_cmd_init_done,	/* Done with initialization */
	Dbxtool_cmd_stopped,	/* Debuggee is stopped */
	Dbxtool_cmd_string,	/* Literal string */
	Dbxtool_cmd_int,	/* Integer value */
	Dbxtool_cmd_quit,	/* Processed the quit command */
	Dbxtool_cmd_printlines,	/* Print lines from the current file */
	Dbxtool_cmd_brkset,	/* Breakpoint has been set */
	Dbxtool_cmd_brkdel,	/* Breakpoint has been deleted */
	Dbxtool_cmd_resume,	/* Execution is ready to resume */
	Dbxtool_cmd_use,	/* Give directory 'use' list */
	Dbxtool_cmd_reinit,	/* Re-initialize for another program */
	Dbxtool_cmd_kill,	/* The debuggee has been thrown away */
	Dbxtool_cmd_chdir,	/* Change directories */
	Dbxtool_cmd_emphasize,	/* Display and highlight a line */
	Dbxtool_cmd_trace,	/* Display a trace line */
	Dbxtool_cmd_display,	/* File containing display data */
	Dbxtool_cmd_version,	/* Version number */
	Dbxtool_cmd_toolenv,	/* Print the tool environment */
	Dbxtool_cmd_width,	/* Width of the tool */
	Dbxtool_cmd_srclines,	/* # of lines in src subwindow */
	Dbxtool_cmd_cmdlines,	/* # of lines in cmd subwindow */
	Dbxtool_cmd_displines,	/* # of lines in displ subwindow */
	Dbxtool_cmd_font,	/* Change the font */
	Dbxtool_cmd_topmargin,	/* Margin from top of src subwindow */
	Dbxtool_cmd_botmargin,	/* Margin from bot of src subwindow */
	Dbxtool_cmd_unbutton,	/* Remove a button */
	Dbxtool_cmd_button,	/* Add a button */
	Dbxtool_cmd_callstack,	/* Put a hollow arrow on this line */
	Dbxtool_cmd_newinitdone, /* Done with initialization */
	Dbxtool_cmd_menu,	/* Add a menu item */
	Dbxtool_cmd_unmenu,	/* Remove a menu item */
	Dbxtool_cmd_first = Dbxtool_cmd_badop,
	Dbxtool_cmd_last = Dbxtool_cmd_unmenu
};

enum Debug_cmd_enum {
	Debug_cmd_alias,
	Debug_cmd_button,
	Debug_cmd_cd,
	Debug_cmd_continue,
	Debug_cmd_debug,
	Debug_cmd_delete,
	Debug_cmd_echo,
	Debug_cmd_help,
	Debug_cmd_in,
	Debug_cmd_module,
	Debug_cmd_out,
	Debug_cmd_print,
	Debug_cmd_printenv,
	Debug_cmd_pwd,
	Debug_cmd_quit,
	Debug_cmd_run,
	Debug_cmd_rerun,
	Debug_cmd_setenv,
	Debug_cmd_show,
	Debug_cmd_source,
	Debug_cmd_stack,
	Debug_cmd_status,
	Debug_cmd_step,
	Debug_cmd_step_in,
	Debug_cmd_step_out,
	Debug_cmd_step_over,
	Debug_cmd_step_to,
	Debug_cmd_stop,
	Debug_cmd_stop_at,
	Debug_cmd_stop_in,
	Debug_cmd_unbutton,
	Debug_cmd_undebug,
	Debug_cmd_unstop,
	Debug_cmd_unstop_at,
	Debug_cmd_unstop_in,
	Debug_cmd_unalias,
	Debug_cmd_unsetenv,
	Debug_cmd_last
};

enum Event_kind_enum {
	Event_kind_deleted,	/* Event no longer exists */
	Event_kind_stop_at,	/* Event is a "Stop At" event */
	Event_kind_stop_in	/* Event is a "Stop In" event */
};

enum Run_mode_enum {
	Run_mode_continue,
	Run_mode_none,
	Run_mode_statement_count,
	Run_mode_step_in,
	Run_mode_step_over,
	Run_mode_step_out,
	Run_mode_step_to,
	Run_mode_stop,
	Run_mode_test_coverage
};

enum Std_state_enum {
	Std_state_none,		/* There is no program loaded */
	Std_state_ready,	/* Program is ready to start execution */
	Std_state_running,	/* Program is already running */
	Std_state_failed,	/* Program had a fatal failure */
	Std_state_done,		/* Program has terminated */
	Std_state_no_debug	/* Program is not being debugged */
};

#endif /* RUN_TIME_TYPES_H */
