OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gdb-6.8/] [gdb/] [tui/] [tui-data.h] - Blame information for rev 157

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 24 jeremybenn
/* TUI data manipulation routines.
2
 
3
   Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2006, 2007, 2008
4
   Free Software Foundation, Inc.
5
 
6
   Contributed by Hewlett-Packard Company.
7
 
8
   This file is part of GDB.
9
 
10
   This program is free software; you can redistribute it and/or modify
11
   it under the terms of the GNU General Public License as published by
12
   the Free Software Foundation; either version 3 of the License, or
13
   (at your option) any later version.
14
 
15
   This program is distributed in the hope that it will be useful,
16
   but WITHOUT ANY WARRANTY; without even the implied warranty of
17
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18
   GNU General Public License for more details.
19
 
20
   You should have received a copy of the GNU General Public License
21
   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
22
 
23
#ifndef TUI_DATA_H
24
#define TUI_DATA_H
25
 
26
#include "tui/tui.h"    /* For enum tui_win_type.  */
27
#include "gdb_curses.h" /* For WINDOW.  */
28
 
29
/* This is a point definition.  */
30
struct tui_point
31
{
32
  int x, y;
33
};
34
 
35
/* Generic window information.  */
36
struct tui_gen_win_info
37
{
38
  WINDOW *handle;           /* Window handle.  */
39
  enum tui_win_type type;   /* Type of window.  */
40
  int width;                /* Window width.  */
41
  int height;               /* Window height.  */
42
  struct tui_point origin;  /* Origin of window.  */
43
  void **content;           /* Content of window.  */
44
  int content_size;         /* Size of content (# of elements).  */
45
  int content_in_use;       /* Can it be used, or is it already used?  */
46
  int viewport_height;      /* Viewport height.  */
47
  int last_visible_line;    /* Index of last visible line.  */
48
  int is_visible;           /* Whether the window is visible or not.  */
49
  char *title;              /* Window title to display.  */
50
};
51
 
52
/* Constant definitions.  */
53
#define DEFAULT_TAB_LEN         8
54
#define NO_SRC_STRING           "[ No Source Available ]"
55
#define NO_DISASSEM_STRING      "[ No Assembly Available ]"
56
#define NO_REGS_STRING          "[ Register Values Unavailable ]"
57
#define NO_DATA_STRING          "[ No Data Values Displayed ]"
58
#define MAX_CONTENT_COUNT       100
59
#define SRC_NAME                "SRC"
60
#define CMD_NAME                "CMD"
61
#define DATA_NAME               "REGS"
62
#define DISASSEM_NAME           "ASM"
63
#define TUI_NULL_STR            ""
64
#define DEFAULT_HISTORY_COUNT   25
65
#define BOX_WINDOW              TRUE
66
#define DONT_BOX_WINDOW         FALSE
67
#define HILITE                  TRUE
68
#define NO_HILITE               FALSE
69
#define WITH_LOCATOR            TRUE
70
#define NO_LOCATOR              FALSE
71
#define EMPTY_SOURCE_PROMPT     TRUE
72
#define NO_EMPTY_SOURCE_PROMPT  FALSE
73
#define UNDEFINED_ITEM          -1
74
#define MIN_WIN_HEIGHT          3
75
#define MIN_CMD_WIN_HEIGHT      3
76
 
77
/* Strings to display in the TUI status line.  */
78
#define PROC_PREFIX             "In: "
79
#define LINE_PREFIX             "Line: "
80
#define PC_PREFIX               "PC: "
81
#define SINGLE_KEY              "(SingleKey)"
82
 
83
/* Minimum/Maximum length of some fields displayed in the TUI status
84
   line.  */
85
#define MIN_LINE_WIDTH     4    /* Use at least 4 digits for line
86
                                   numbers.  */
87
#define MIN_PROC_WIDTH    12
88
#define MAX_TARGET_WIDTH  10
89
#define MAX_PID_WIDTH     14
90
 
91
#define TUI_FLOAT_REGS_NAME                  "$FREGS"
92
#define TUI_FLOAT_REGS_NAME_LOWER            "$fregs"
93
#define TUI_GENERAL_REGS_NAME                "$GREGS"
94
#define TUI_GENERAL_REGS_NAME_LOWER          "$gregs"
95
#define TUI_SPECIAL_REGS_NAME                "$SREGS"
96
#define TUI_SPECIAL_REGS_NAME_LOWER          "$sregs"
97
#define TUI_GENERAL_SPECIAL_REGS_NAME        "$REGS"
98
#define TUI_GENERAL_SPECIAL_REGS_NAME_LOWER  "$regs"
99
 
100
/* Scroll direction enum.  */
101
enum tui_scroll_direction
102
{
103
  FORWARD_SCROLL,
104
  BACKWARD_SCROLL,
105
  LEFT_SCROLL,
106
  RIGHT_SCROLL
107
};
108
 
109
 
110
/* General list struct.  */
111
struct tui_list
112
{
113
  struct tui_win_info **list;
114
  int count;
115
};
116
 
117
 
118
/* The kinds of layouts available.  */
119
enum tui_layout_type
120
{
121
  SRC_COMMAND,
122
  DISASSEM_COMMAND,
123
  SRC_DISASSEM_COMMAND,
124
  SRC_DATA_COMMAND,
125
  DISASSEM_DATA_COMMAND,
126
  UNDEFINED_LAYOUT
127
};
128
 
129
/* Basic data types that can be displayed in the data window.  */
130
enum tui_data_type
131
{
132
  TUI_REGISTER,
133
  TUI_SCALAR,
134
  TUI_COMPLEX,
135
  TUI_STRUCT
136
};
137
 
138
/* Types of register displays.  */
139
enum tui_register_display_type
140
{
141
  TUI_UNDEFINED_REGS,
142
  TUI_GENERAL_REGS,
143
  TUI_SFLOAT_REGS,
144
  TUI_DFLOAT_REGS,
145
  TUI_SPECIAL_REGS,
146
  TUI_GENERAL_AND_SPECIAL_REGS
147
};
148
 
149
/* Structure describing source line or line address.  */
150
struct tui_line_or_address
151
{
152
  enum { LOA_LINE, LOA_ADDRESS } loa;
153
  union
154
    {
155
      int line_no;
156
      CORE_ADDR addr;
157
    } u;
158
};
159
 
160
/* Current Layout definition.  */
161
struct tui_layout_def
162
{
163
  enum tui_win_type display_mode;
164
  int split;
165
  enum tui_register_display_type regs_display_type;
166
  enum tui_register_display_type float_regs_display_type;
167
};
168
 
169
/* Elements in the Source/Disassembly Window.  */
170
struct tui_source_element
171
{
172
  char *line;
173
  struct tui_line_or_address line_or_addr;
174
  int is_exec_point;
175
  int has_break;
176
};
177
 
178
 
179
/* Elements in the data display window content.  */
180
struct tui_data_element
181
{
182
  const char *name;
183
  int item_no;          /* The register number, or data display
184
                           number.  */
185
  enum tui_data_type type;
186
  void *value;
187
  int highlight;
188
  char *content;
189
};
190
 
191
 
192
/* Elements in the command window content.  */
193
struct tui_command_element
194
{
195
  char *line;
196
};
197
 
198
#ifdef PATH_MAX
199
# define MAX_LOCATOR_ELEMENT_LEN        PATH_MAX
200
#else
201
# define MAX_LOCATOR_ELEMENT_LEN        1024
202
#endif
203
 
204
/* Elements in the locator window content.  */
205
struct tui_locator_element
206
{
207
  char file_name[MAX_LOCATOR_ELEMENT_LEN];
208
  char proc_name[MAX_LOCATOR_ELEMENT_LEN];
209
  int line_no;
210
  CORE_ADDR addr;
211
};
212
 
213
/* Flags to tell what kind of breakpoint is at current line.  */
214
#define TUI_BP_ENABLED      0x01
215
#define TUI_BP_DISABLED     0x02
216
#define TUI_BP_HIT          0x04
217
#define TUI_BP_CONDITIONAL  0x08
218
#define TUI_BP_HARDWARE     0x10
219
 
220
/* Position of breakpoint markers in the exec info string.  */
221
#define TUI_BP_HIT_POS      0
222
#define TUI_BP_BREAK_POS    1
223
#define TUI_EXEC_POS        2
224
#define TUI_EXECINFO_SIZE   4
225
 
226
typedef char tui_exec_info_content[TUI_EXECINFO_SIZE];
227
 
228
/* An content element in a window.  */
229
union tui_which_element
230
{
231
  struct tui_source_element source;     /* The source elements.  */
232
  struct tui_gen_win_info data_window;  /* Data display elements.  */
233
  struct tui_data_element data;         /* Elements of data_window.  */
234
  struct tui_command_element command;   /* Command elements.  */
235
  struct tui_locator_element locator;   /* Locator elements.  */
236
  tui_exec_info_content simple_string;  /* Simple char based elements.  */
237
};
238
 
239
struct tui_win_element
240
{
241
  int highlight;
242
  union tui_which_element which_element;
243
};
244
 
245
 
246
/* This describes the content of the window.  */
247
typedef struct tui_win_element **tui_win_content;
248
 
249
 
250
/* This struct defines the specific information about a data display
251
   window.  */
252
struct tui_data_info
253
{
254
  tui_win_content data_content; /* Start of data display content.  */
255
  int data_content_count;
256
  tui_win_content regs_content; /* Start of regs display content.  */
257
  int regs_content_count;
258
  enum tui_register_display_type regs_display_type;
259
  int regs_column_count;
260
  int display_regs;             /* Should regs be displayed at all?  */
261
  struct reggroup *current_group;
262
};
263
 
264
 
265
struct tui_source_info
266
{
267
  int has_locator;              /* Does locator belongs to this window?  */
268
  /* Execution information window.  */
269
  struct tui_gen_win_info *execution_info;
270
  int horizontal_offset;        /* Used for horizontal scroll.  */
271
  struct tui_line_or_address start_line_or_addr;
272
  char *filename;
273
};
274
 
275
 
276
struct tui_command_info
277
{
278
  int cur_line;                 /* The current line position.  */
279
  int curch;                    /* The current cursor position.  */
280
  int start_line;
281
};
282
 
283
 
284
/* This defines information about each logical window.  */
285
struct tui_win_info
286
{
287
  struct tui_gen_win_info generic;      /* General window information.  */
288
  union
289
  {
290
    struct tui_source_info source_info;
291
    struct tui_data_info data_display_info;
292
    struct tui_command_info command_info;
293
    void *opaque;
294
  }
295
  detail;
296
  int can_highlight;    /* Can this window ever be highlighted?  */
297
  int is_highlighted;   /* Is this window highlighted?  */
298
};
299
 
300
extern int tui_win_is_source_type (enum tui_win_type win_type);
301
extern int tui_win_is_auxillary (enum tui_win_type win_type);
302
extern int tui_win_has_locator (struct tui_win_info *win_info);
303
extern void tui_set_win_highlight (struct tui_win_info *win_info,
304
                                   int highlight);
305
 
306
 
307
/* Global Data.  */
308
extern struct tui_win_info *(tui_win_list[MAX_MAJOR_WINDOWS]);
309
 
310
#define TUI_SRC_WIN     tui_win_list[SRC_WIN]
311
#define TUI_DISASM_WIN  tui_win_list[DISASSEM_WIN]
312
#define TUI_DATA_WIN    tui_win_list[DATA_WIN]
313
#define TUI_CMD_WIN     tui_win_list[CMD_WIN]
314
 
315
/* Data Manipulation Functions.  */
316
extern void tui_initialize_static_data (void);
317
extern struct tui_gen_win_info *tui_alloc_generic_win_info (void);
318
extern struct tui_win_info *tui_alloc_win_info (enum tui_win_type);
319
extern void tui_init_generic_part (struct tui_gen_win_info *);
320
extern void tui_init_win_info (struct tui_win_info *);
321
extern tui_win_content tui_alloc_content (int, enum tui_win_type);
322
extern int tui_add_content_elements (struct tui_gen_win_info *,
323
                                     int);
324
extern void tui_init_content_element (struct tui_win_element *,
325
                                      enum tui_win_type);
326
extern void tui_free_window (struct tui_win_info *);
327
extern void tui_free_win_content (struct tui_gen_win_info *);
328
extern void tui_free_data_content (tui_win_content, int);
329
extern void tui_free_all_source_wins_content (void);
330
extern void tui_del_window (struct tui_win_info *);
331
extern void tui_del_data_windows (tui_win_content, int);
332
extern struct tui_win_info *tui_partial_win_by_name (char *);
333
extern char *tui_win_name (struct tui_gen_win_info *);
334
extern enum tui_layout_type tui_current_layout (void);
335
extern void tui_set_current_layout_to (enum tui_layout_type);
336
extern int tui_term_height (void);
337
extern void tui_set_term_height_to (int);
338
extern int tui_term_width (void);
339
extern void tui_set_term_width_to (int);
340
extern void tui_set_gen_win_origin (struct tui_gen_win_info *,
341
                                    int, int);
342
extern struct tui_gen_win_info *tui_locator_win_info_ptr (void);
343
extern struct tui_gen_win_info *tui_source_exec_info_win_ptr (void);
344
extern struct tui_gen_win_info *tui_disassem_exec_info_win_ptr (void);
345
extern struct tui_list *tui_source_windows (void);
346
extern void tui_clear_source_windows (void);
347
extern void tui_clear_source_windows_detail (void);
348
extern void tui_clear_win_detail (struct tui_win_info *);
349
extern void tui_add_to_source_windows (struct tui_win_info *);
350
extern int tui_default_tab_len (void);
351
extern void tui_set_default_tab_len (int);
352
extern struct tui_win_info *tui_win_with_focus (void);
353
extern void tui_set_win_with_focus (struct tui_win_info *);
354
extern struct tui_layout_def *tui_layout_def (void);
355
extern int tui_win_resized (void);
356
extern void tui_set_win_resized_to (int);
357
 
358
extern struct tui_win_info *tui_next_win (struct tui_win_info *);
359
extern struct tui_win_info *tui_prev_win (struct tui_win_info *);
360
 
361
extern void tui_add_to_source_windows (struct tui_win_info *);
362
 
363
#endif /* TUI_DATA_H */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.