X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Ftui%2FtuiData.h;h=8a4eb9f8908fc30b1a4a303136d92b3e7473c9e2;hb=cb50eddded7154b37be9fe4b39df549c48c2d583;hp=bb4d19c90e2d052979f2ad30b9e3b062deda3f11;hpb=8b0b198558d0fc981f129e2e3dcbe00a0f308449;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/tui/tuiData.h b/gdb/tui/tuiData.h index bb4d19c90e..8a4eb9f890 100644 --- a/gdb/tui/tuiData.h +++ b/gdb/tui/tuiData.h @@ -1,6 +1,51 @@ +/* TUI data manipulation routines. + Copyright 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. + Contributed by Hewlett-Packard Company. + + This file is part of GDB. + + 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. */ + #ifndef TUI_DATA_H #define TUI_DATA_H +#if defined (HAVE_NCURSES_H) +#include +#elif defined (HAVE_CURSES_H) +#include +#endif + +/* Generic window information */ + typedef struct _TuiGenWinInfo + { + WINDOW *handle; /* window handle */ + TuiWinType type; /* type of window */ + int width; /* window width */ + int height; /* window height */ + TuiPoint origin; /* origin of window */ + OpaquePtr content; /* content of window */ + int contentSize; /* Size of content (# of elements) */ + int contentInUse; /* Can it be used, or is it already used? */ + int viewportHeight; /* viewport height */ + int lastVisibleLine; /* index of last visible line */ + int isVisible; /* whether the window is visible or not */ + char* title; /* Window title to display. */ + } +TuiGenWinInfo, *TuiGenWinInfoPtr; + /* Constant definitions */ #define DEFAULT_TAB_LEN 8 #define NO_SRC_STRING "[ No Source Available ]" @@ -26,10 +71,17 @@ #define MIN_WIN_HEIGHT 3 #define MIN_CMD_WIN_HEIGHT 3 -#define FILE_PREFIX "File: " -#define PROC_PREFIX "Procedure: " +/* Strings to display in the TUI status line. */ +#define PROC_PREFIX "In: " #define LINE_PREFIX "Line: " -#define PC_PREFIX "pc: " +#define PC_PREFIX "PC: " +#define SINGLE_KEY "(SingleKey)" + +/* Minimum/Maximum length of some fields displayed in the TUI status line. */ +#define MIN_LINE_WIDTH 4 /* Use at least 4 digits for line numbers. */ +#define MIN_PROC_WIDTH 12 +#define MAX_TARGET_WIDTH 10 +#define MAX_PID_WIDTH 14 #define TUI_FLOAT_REGS_NAME "$FREGS" #define TUI_FLOAT_REGS_NAME_LOWER "$fregs" @@ -41,163 +93,209 @@ #define TUI_GENERAL_SPECIAL_REGS_NAME_LOWER "$regs" /* Scroll direction enum */ -typedef enum { +typedef enum + { FORWARD_SCROLL, BACKWARD_SCROLL, LEFT_SCROLL, RIGHT_SCROLL -} TuiScrollDirection, *TuiScrollDirectionPtr; + } +TuiScrollDirection, *TuiScrollDirectionPtr; /* General list struct */ -typedef struct _TuiList { - OpaqueList list; - int count; -} TuiList, *TuiListPtr; +typedef struct _TuiList + { + OpaqueList list; + int count; + } +TuiList, *TuiListPtr; /* The kinds of layouts available */ -typedef enum { +typedef enum + { SRC_COMMAND, DISASSEM_COMMAND, SRC_DISASSEM_COMMAND, SRC_DATA_COMMAND, DISASSEM_DATA_COMMAND, UNDEFINED_LAYOUT -} TuiLayoutType, *TuiLayoutTypePtr; + } +TuiLayoutType, *TuiLayoutTypePtr; /* Basic data types that can be displayed in the data window. */ -typedef enum _TuiDataType { +typedef enum _TuiDataType + { TUI_REGISTER, TUI_SCALAR, TUI_COMPLEX, TUI_STRUCT -} TuiDataType, TuiDataTypePtr; + } +TuiDataType, TuiDataTypePtr; /* Types of register displays */ -typedef enum _TuiRegisterDisplayType { +typedef enum _TuiRegisterDisplayType + { TUI_UNDEFINED_REGS, TUI_GENERAL_REGS, TUI_SFLOAT_REGS, TUI_DFLOAT_REGS, TUI_SPECIAL_REGS, TUI_GENERAL_AND_SPECIAL_REGS -} TuiRegisterDisplayType, *TuiRegisterDisplayTypePtr; + } +TuiRegisterDisplayType, *TuiRegisterDisplayTypePtr; /* Structure describing source line or line address */ -typedef union _TuiLineOrAddress { - int lineNo; - Opaque addr; -} TuiLineOrAddress, *TuiLineOrAddressPtr; +typedef union _TuiLineOrAddress + { + int lineNo; + CORE_ADDR addr; + } +TuiLineOrAddress, *TuiLineOrAddressPtr; /* Current Layout definition */ -typedef struct _TuiLayoutDef { - TuiWinType displayMode; - int split; - TuiRegisterDisplayType regsDisplayType; - TuiRegisterDisplayType floatRegsDisplayType; -} TuiLayoutDef, *TuiLayoutDefPtr; +typedef struct _TuiLayoutDef + { + TuiWinType displayMode; + int split; + TuiRegisterDisplayType regsDisplayType; + TuiRegisterDisplayType floatRegsDisplayType; + } +TuiLayoutDef, *TuiLayoutDefPtr; /* Elements in the Source/Disassembly Window */ typedef struct _TuiSourceElement -{ - char *line; - TuiLineOrAddress lineOrAddr; - int isExecPoint; - int hasBreak; -} TuiSourceElement, *TuiSourceElementPtr; + { + char *line; + TuiLineOrAddress lineOrAddr; + int isExecPoint; + int hasBreak; + } +TuiSourceElement, *TuiSourceElementPtr; /* Elements in the data display window content */ typedef struct _TuiDataElement -{ - char *name; - int itemNo; /* the register number, or data display number */ + { + const char *name; + int itemNo; /* the register number, or data display number */ TuiDataType type; - Opaque value; - int highlight; -} TuiDataElement, *TuiDataElementPtr; + Opaque value; + int highlight; + } +TuiDataElement, *TuiDataElementPtr; /* Elements in the command window content */ typedef struct _TuiCommandElement -{ - char *line; -} TuiCommandElement, *TuiCommandElementPtr; + { + char *line; + } +TuiCommandElement, *TuiCommandElementPtr; #define MAX_LOCATOR_ELEMENT_LEN 100 /* Elements in the locator window content */ typedef struct _TuiLocatorElement -{ - char fileName[MAX_LOCATOR_ELEMENT_LEN]; - char procName[MAX_LOCATOR_ELEMENT_LEN]; - int lineNo; - Opaque addr; -} TuiLocatorElement, *TuiLocatorElementPtr; - + { + char fileName[MAX_LOCATOR_ELEMENT_LEN]; + char procName[MAX_LOCATOR_ELEMENT_LEN]; + int lineNo; + CORE_ADDR addr; + } +TuiLocatorElement, *TuiLocatorElementPtr; + +/* Flags to tell what kind of breakpoint is at current line. */ +#define TUI_BP_ENABLED 0x01 +#define TUI_BP_DISABLED 0x02 +#define TUI_BP_HIT 0x04 +#define TUI_BP_CONDITIONAL 0x08 +#define TUI_BP_HARDWARE 0x10 + +/* Position of breakpoint markers in the exec info string. */ +#define TUI_BP_HIT_POS 0 +#define TUI_BP_BREAK_POS 1 +#define TUI_EXEC_POS 2 +#define TUI_EXECINFO_SIZE 4 + +typedef char TuiExecInfoContent[TUI_EXECINFO_SIZE]; /* An content element in a window */ typedef union -{ - TuiSourceElement source; /* the source elements */ - TuiGenWinInfo dataWindow; /* data display elements */ - TuiDataElement data; /* elements of dataWindow */ - TuiCommandElement command; /* command elements */ - TuiLocatorElement locator; /* locator elements */ - char *simpleString; /* simple char based elements */ -} TuiWhichElement, *TuiWhichElementPtr; + { + TuiSourceElement source; /* the source elements */ + TuiGenWinInfo dataWindow; /* data display elements */ + TuiDataElement data; /* elements of dataWindow */ + TuiCommandElement command; /* command elements */ + TuiLocatorElement locator; /* locator elements */ + TuiExecInfoContent simpleString; /* simple char based elements */ + } +TuiWhichElement, *TuiWhichElementPtr; typedef struct _TuiWinElement -{ - int highlight; + { + int highlight; TuiWhichElement whichElement; -} TuiWinElement, *TuiWinElementPtr; + } +TuiWinElement, *TuiWinElementPtr; /* This describes the content of the window. */ -typedef TuiWinElementPtr *TuiWinContent; +typedef TuiWinElementPtr *TuiWinContent; /* This struct defines the specific information about a data display window */ -typedef struct _TuiDataInfo { - TuiWinContent dataContent; /* start of data display content */ - int dataContentCount; - TuiWinContent regsContent; /* start of regs display content */ - int regsContentCount; - TuiRegisterDisplayType regsDisplayType; - int regsColumnCount; - int displayRegs; /* Should regs be displayed at all? */ -} TuiDataInfo, *TuiDataInfoPtr; - - -typedef struct _TuiSourceInfo { - int hasLocator; /* Does locator belongs to this window? */ - TuiGenWinInfoPtr executionInfo; /* execution information window */ - int horizontalOffset; /* used for horizontal scroll */ - TuiLineOrAddress startLineOrAddr; -} TuiSourceInfo, *TuiSourceInfoPtr; - - -typedef struct _TuiCommandInfo { - int curLine; /* The current line position */ - int curch; /* The current cursor position */ -} TuiCommandInfo, *TuiCommandInfoPtr; +typedef struct _TuiDataInfo + { + TuiWinContent dataContent; /* start of data display content */ + int dataContentCount; + TuiWinContent regsContent; /* start of regs display content */ + int regsContentCount; + TuiRegisterDisplayType regsDisplayType; + int regsColumnCount; + int displayRegs; /* Should regs be displayed at all? */ + } +TuiDataInfo, *TuiDataInfoPtr; + + +typedef struct _TuiSourceInfo + { + int hasLocator; /* Does locator belongs to this window? */ + TuiGenWinInfoPtr executionInfo; /* execution information window */ + int horizontalOffset; /* used for horizontal scroll */ + TuiLineOrAddress startLineOrAddr; + char* filename; + } +TuiSourceInfo, *TuiSourceInfoPtr; + + +typedef struct _TuiCommandInfo + { + int curLine; /* The current line position */ + int curch; /* The current cursor position */ + int start_line; + } +TuiCommandInfo, *TuiCommandInfoPtr; /* This defines information about each logical window */ -typedef struct _TuiWinInfo { - TuiGenWinInfo generic; /* general window information */ - union { - TuiSourceInfo sourceInfo; - TuiDataInfo dataDisplayInfo; - TuiCommandInfo commandInfo; - Opaque opaque; - } detail; - int canHighlight; /* Can this window ever be highlighted? */ - int isHighlighted; /* Is this window highlighted? */ -} TuiWinInfo, *TuiWinInfoPtr; +typedef struct _TuiWinInfo + { + TuiGenWinInfo generic; /* general window information */ + union + { + TuiSourceInfo sourceInfo; + TuiDataInfo dataDisplayInfo; + TuiCommandInfo commandInfo; + Opaque opaque; + } + detail; + int canHighlight; /* Can this window ever be highlighted? */ + int isHighlighted; /* Is this window highlighted? */ + } +TuiWinInfo, *TuiWinInfoPtr; /* MACROS (prefixed with m_) */ @@ -229,8 +327,8 @@ typedef struct _TuiWinInfo { /* Global Data */ -extern TuiWinInfoPtr winList[MAX_MAJOR_WINDOWS]; -extern int tui_version; +extern TuiWinInfoPtr winList[MAX_MAJOR_WINDOWS]; +extern int tui_version; /* Macros */ #define srcWin winList[SRC_WIN] @@ -239,64 +337,48 @@ extern int tui_version; #define cmdWin winList[CMD_WIN] /* Data Manipulation Functions */ -extern void initializeStaticData PARAMS ((void)); -extern TuiGenWinInfoPtr allocGenericWinInfo PARAMS ((void)); -extern TuiWinInfoPtr allocWinInfo PARAMS ((TuiWinType)); -extern void initGenericPart PARAMS ((TuiGenWinInfoPtr)); -extern void initWinInfo PARAMS ((TuiWinInfoPtr)); -extern TuiWinContent allocContent PARAMS ((int, TuiWinType)); -extern int addContentElements - PARAMS ((TuiGenWinInfoPtr, int)); -extern void initContentElement - PARAMS ((TuiWinElementPtr, TuiWinType)); -extern void freeWindow PARAMS ((TuiWinInfoPtr)); -extern void freeAllWindows PARAMS ((void)); -extern void freeWinContent PARAMS ((TuiGenWinInfoPtr)); -extern void freeDataContent PARAMS ((TuiWinContent, int)); -extern void freeAllSourceWinsContent PARAMS ((void)); -extern void tuiDelWindow PARAMS ((TuiWinInfoPtr)); -extern void tuiDelDataWindows PARAMS ((TuiWinContent, int)); -extern TuiWinInfoPtr winByName PARAMS ((char *)); -extern TuiWinInfoPtr partialWinByName PARAMS ((char *)); -extern char *winName PARAMS ((TuiGenWinInfoPtr)); -extern char *displayableWinContentOf - PARAMS ((TuiGenWinInfoPtr, TuiWinElementPtr)); -extern char *displayableWinContentAt - PARAMS ((TuiGenWinInfoPtr, int)); -extern int winElementHeight - PARAMS ((TuiGenWinInfoPtr, TuiWinElementPtr)); -extern TuiLayoutType currentLayout PARAMS ((void)); -extern void setCurrentLayoutTo PARAMS ((TuiLayoutType)); -extern int termHeight PARAMS ((void)); -extern void setTermHeight PARAMS ((int)); -extern int termWidth PARAMS ((void)); -extern void setTermWidth PARAMS ((int)); -extern int historyLimit PARAMS ((void)); -extern void setHistoryLimit PARAMS ((int)); -extern void setGenWinOrigin PARAMS ((TuiGenWinInfoPtr, int, int)); -extern TuiGenWinInfoPtr locatorWinInfoPtr PARAMS ((void)); -extern TuiGenWinInfoPtr sourceExecInfoWinPtr PARAMS ((void)); -extern TuiGenWinInfoPtr disassemExecInfoWinPtr PARAMS ((void)); -extern char *nullStr PARAMS ((void)); -extern char *blankStr PARAMS ((void)); -extern char *locationStr PARAMS ((void)); -extern char *breakStr PARAMS ((void)); -extern char *breakLocationStr PARAMS ((void)); -extern TuiListPtr sourceWindows PARAMS ((void)); -extern void clearSourceWindows PARAMS ((void)); -extern void clearSourceWindowsDetail PARAMS ((void)); -extern void clearWinDetail PARAMS ((TuiWinInfoPtr winInfo)); -extern void tuiAddToSourceWindows PARAMS ((TuiWinInfoPtr)); -extern int tuiDefaultTabLen PARAMS ((void)); -extern void tuiSetDefaultTabLen PARAMS ((int)); -extern TuiWinInfoPtr tuiWinWithFocus PARAMS ((void)); -extern void tuiSetWinWithFocus PARAMS ((TuiWinInfoPtr)); -extern TuiLayoutDefPtr tuiLayoutDef PARAMS ((void)); -extern int tuiWinResized PARAMS ((void)); -extern void tuiSetWinResizedTo PARAMS ((int)); - -extern TuiWinInfoPtr tuiNextWin PARAMS ((TuiWinInfoPtr)); -extern TuiWinInfoPtr tuiPrevWin PARAMS ((TuiWinInfoPtr)); - +extern void initializeStaticData (void); +extern TuiGenWinInfoPtr allocGenericWinInfo (void); +extern TuiWinInfoPtr allocWinInfo (TuiWinType); +extern void initGenericPart (TuiGenWinInfoPtr); +extern void initWinInfo (TuiWinInfoPtr); +extern TuiWinContent allocContent (int, TuiWinType); +extern int addContentElements (TuiGenWinInfoPtr, int); +extern void initContentElement (TuiWinElementPtr, TuiWinType); +extern void freeWindow (TuiWinInfoPtr); +extern void freeWinContent (TuiGenWinInfoPtr); +extern void freeDataContent (TuiWinContent, int); +extern void freeAllSourceWinsContent (void); +extern void tuiDelWindow (TuiWinInfoPtr); +extern void tuiDelDataWindows (TuiWinContent, int); +extern TuiWinInfoPtr partialWinByName (char *); +extern char *winName (TuiGenWinInfoPtr); +extern TuiLayoutType currentLayout (void); +extern void setCurrentLayoutTo (TuiLayoutType); +extern int termHeight (void); +extern void setTermHeightTo (int); +extern int termWidth (void); +extern void setTermWidthTo (int); +extern void setGenWinOrigin (TuiGenWinInfoPtr, int, int); +extern TuiGenWinInfoPtr locatorWinInfoPtr (void); +extern TuiGenWinInfoPtr sourceExecInfoWinPtr (void); +extern TuiGenWinInfoPtr disassemExecInfoWinPtr (void); +extern TuiListPtr sourceWindows (void); +extern void clearSourceWindows (void); +extern void clearSourceWindowsDetail (void); +extern void clearWinDetail (TuiWinInfoPtr winInfo); +extern void tuiAddToSourceWindows (TuiWinInfoPtr); +extern int tuiDefaultTabLen (void); +extern void tuiSetDefaultTabLen (int); +extern TuiWinInfoPtr tuiWinWithFocus (void); +extern void tuiSetWinWithFocus (TuiWinInfoPtr); +extern TuiLayoutDefPtr tuiLayoutDef (void); +extern int tuiWinResized (void); +extern void tuiSetWinResizedTo (int); + +extern TuiWinInfoPtr tuiNextWin (TuiWinInfoPtr); +extern TuiWinInfoPtr tuiPrevWin (TuiWinInfoPtr); + +extern void addToSourceWindows (TuiWinInfoPtr winInfo); #endif /* TUI_DATA_H */