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

Subversion Repositories openrisc_me

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

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 227 jeremybenn
/* TUI data manipulation routines.
2
 
3
   Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2006, 2007, 2008, 2009,
4
   2010 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
  /* Architecture associated with code at this location.  */
212
  struct gdbarch *gdbarch;
213
};
214
 
215
/* Flags to tell what kind of breakpoint is at current line.  */
216
#define TUI_BP_ENABLED      0x01
217
#define TUI_BP_DISABLED     0x02
218
#define TUI_BP_HIT          0x04
219
#define TUI_BP_CONDITIONAL  0x08
220
#define TUI_BP_HARDWARE     0x10
221
 
222
/* Position of breakpoint markers in the exec info string.  */
223
#define TUI_BP_HIT_POS      0
224
#define TUI_BP_BREAK_POS    1
225
#define TUI_EXEC_POS        2
226
#define TUI_EXECINFO_SIZE   4
227
 
228
typedef char tui_exec_info_content[TUI_EXECINFO_SIZE];
229
 
230
/* An content element in a window.  */
231
union tui_which_element
232
{
233
  struct tui_source_element source;     /* The source elements.  */
234
  struct tui_gen_win_info data_window;  /* Data display elements.  */
235
  struct tui_data_element data;         /* Elements of data_window.  */
236
  struct tui_command_element command;   /* Command elements.  */
237
  struct tui_locator_element locator;   /* Locator elements.  */
238
  tui_exec_info_content simple_string;  /* Simple char based elements.  */
239
};
240
 
241
struct tui_win_element
242
{
243
  int highlight;
244
  union tui_which_element which_element;
245
};
246
 
247
 
248
/* This describes the content of the window.  */
249
typedef struct tui_win_element **tui_win_content;
250
 
251
 
252
/* This struct defines the specific information about a data display
253
   window.  */
254
struct tui_data_info
255
{
256
  tui_win_content data_content; /* Start of data display content.  */
257
  int data_content_count;
258
  tui_win_content regs_content; /* Start of regs display content.  */
259
  int regs_content_count;
260
  enum tui_register_display_type regs_display_type;
261
  int regs_column_count;
262
  int display_regs;             /* Should regs be displayed at all?  */
263
  struct reggroup *current_group;
264
};
265
 
266
 
267
struct tui_source_info
268
{
269
  int has_locator;              /* Does locator belongs to this window?  */
270
  /* Execution information window.  */
271
  struct tui_gen_win_info *execution_info;
272
  int horizontal_offset;        /* Used for horizontal scroll.  */
273
  struct tui_line_or_address start_line_or_addr;
274
  char *filename;
275
  /* Architecture associated with code at this location.  */
276
  struct gdbarch *gdbarch;
277
};
278
 
279
 
280
struct tui_command_info
281
{
282
  int cur_line;                 /* The current line position.  */
283
  int curch;                    /* The current cursor position.  */
284
  int start_line;
285
};
286
 
287
 
288
/* This defines information about each logical window.  */
289
struct tui_win_info
290
{
291
  struct tui_gen_win_info generic;      /* General window information.  */
292
  union
293
  {
294
    struct tui_source_info source_info;
295
    struct tui_data_info data_display_info;
296
    struct tui_command_info command_info;
297
    void *opaque;
298
  }
299
  detail;
300
  int can_highlight;    /* Can this window ever be highlighted?  */
301
  int is_highlighted;   /* Is this window highlighted?  */
302
};
303
 
304
extern int tui_win_is_source_type (enum tui_win_type win_type);
305
extern int tui_win_is_auxillary (enum tui_win_type win_type);
306
extern int tui_win_has_locator (struct tui_win_info *win_info);
307
extern void tui_set_win_highlight (struct tui_win_info *win_info,
308
                                   int highlight);
309
 
310
 
311
/* Global Data.  */
312
extern struct tui_win_info *(tui_win_list[MAX_MAJOR_WINDOWS]);
313
 
314
#define TUI_SRC_WIN     tui_win_list[SRC_WIN]
315
#define TUI_DISASM_WIN  tui_win_list[DISASSEM_WIN]
316
#define TUI_DATA_WIN    tui_win_list[DATA_WIN]
317
#define TUI_CMD_WIN     tui_win_list[CMD_WIN]
318
 
319
/* Data Manipulation Functions.  */
320
extern void tui_initialize_static_data (void);
321
extern struct tui_gen_win_info *tui_alloc_generic_win_info (void);
322
extern struct tui_win_info *tui_alloc_win_info (enum tui_win_type);
323
extern void tui_init_generic_part (struct tui_gen_win_info *);
324
extern void tui_init_win_info (struct tui_win_info *);
325
extern tui_win_content tui_alloc_content (int, enum tui_win_type);
326
extern int tui_add_content_elements (struct tui_gen_win_info *,
327
                                     int);
328
extern void tui_init_content_element (struct tui_win_element *,
329
                                      enum tui_win_type);
330
extern void tui_free_window (struct tui_win_info *);
331
extern void tui_free_win_content (struct tui_gen_win_info *);
332
extern void tui_free_data_content (tui_win_content, int);
333
extern void tui_free_all_source_wins_content (void);
334
extern void tui_del_window (struct tui_win_info *);
335
extern void tui_del_data_windows (tui_win_content, int);
336
extern struct tui_win_info *tui_partial_win_by_name (char *);
337
extern char *tui_win_name (struct tui_gen_win_info *);
338
extern enum tui_layout_type tui_current_layout (void);
339
extern void tui_set_current_layout_to (enum tui_layout_type);
340
extern int tui_term_height (void);
341
extern void tui_set_term_height_to (int);
342
extern int tui_term_width (void);
343
extern void tui_set_term_width_to (int);
344
extern void tui_set_gen_win_origin (struct tui_gen_win_info *,
345
                                    int, int);
346
extern struct tui_gen_win_info *tui_locator_win_info_ptr (void);
347
extern struct tui_gen_win_info *tui_source_exec_info_win_ptr (void);
348
extern struct tui_gen_win_info *tui_disassem_exec_info_win_ptr (void);
349
extern struct tui_list *tui_source_windows (void);
350
extern void tui_clear_source_windows (void);
351
extern void tui_clear_source_windows_detail (void);
352
extern void tui_clear_win_detail (struct tui_win_info *);
353
extern void tui_add_to_source_windows (struct tui_win_info *);
354
extern int tui_default_tab_len (void);
355
extern void tui_set_default_tab_len (int);
356
extern struct tui_win_info *tui_win_with_focus (void);
357
extern void tui_set_win_with_focus (struct tui_win_info *);
358
extern struct tui_layout_def *tui_layout_def (void);
359
extern int tui_win_resized (void);
360
extern void tui_set_win_resized_to (int);
361
 
362
extern struct tui_win_info *tui_next_win (struct tui_win_info *);
363
extern struct tui_win_info *tui_prev_win (struct tui_win_info *);
364
 
365
extern void tui_add_to_source_windows (struct tui_win_info *);
366
 
367
#endif /* TUI_DATA_H */

powered by: WebSVN 2.1.0

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