diff options
Diffstat (limited to 'gdb/tui/tuiData.h')
-rw-r--r-- | gdb/tui/tuiData.h | 302 |
1 files changed, 302 insertions, 0 deletions
diff --git a/gdb/tui/tuiData.h b/gdb/tui/tuiData.h new file mode 100644 index 0000000000..bb4d19c90e --- /dev/null +++ b/gdb/tui/tuiData.h @@ -0,0 +1,302 @@ +#ifndef TUI_DATA_H +#define TUI_DATA_H + +/* Constant definitions */ +#define DEFAULT_TAB_LEN 8 +#define NO_SRC_STRING "[ No Source Available ]" +#define NO_DISASSEM_STRING "[ No Assembly Available ]" +#define NO_REGS_STRING "[ Register Values Unavailable ]" +#define NO_DATA_STRING "[ No Data Values Displayed ]" +#define MAX_CONTENT_COUNT 100 +#define SRC_NAME "SRC" +#define CMD_NAME "CMD" +#define DATA_NAME "REGS" +#define DISASSEM_NAME "ASM" +#define TUI_NULL_STR "" +#define DEFAULT_HISTORY_COUNT 25 +#define BOX_WINDOW TRUE +#define DONT_BOX_WINDOW FALSE +#define HILITE TRUE +#define NO_HILITE FALSE +#define WITH_LOCATOR TRUE +#define NO_LOCATOR FALSE +#define EMPTY_SOURCE_PROMPT TRUE +#define NO_EMPTY_SOURCE_PROMPT FALSE +#define UNDEFINED_ITEM -1 +#define MIN_WIN_HEIGHT 3 +#define MIN_CMD_WIN_HEIGHT 3 + +#define FILE_PREFIX "File: " +#define PROC_PREFIX "Procedure: " +#define LINE_PREFIX "Line: " +#define PC_PREFIX "pc: " + +#define TUI_FLOAT_REGS_NAME "$FREGS" +#define TUI_FLOAT_REGS_NAME_LOWER "$fregs" +#define TUI_GENERAL_REGS_NAME "$GREGS" +#define TUI_GENERAL_REGS_NAME_LOWER "$gregs" +#define TUI_SPECIAL_REGS_NAME "$SREGS" +#define TUI_SPECIAL_REGS_NAME_LOWER "$sregs" +#define TUI_GENERAL_SPECIAL_REGS_NAME "$REGS" +#define TUI_GENERAL_SPECIAL_REGS_NAME_LOWER "$regs" + +/* Scroll direction enum */ +typedef enum { + FORWARD_SCROLL, + BACKWARD_SCROLL, + LEFT_SCROLL, + RIGHT_SCROLL +} TuiScrollDirection, *TuiScrollDirectionPtr; + + +/* General list struct */ +typedef struct _TuiList { + OpaqueList list; + int count; +} TuiList, *TuiListPtr; + + +/* The kinds of layouts available */ +typedef enum { + SRC_COMMAND, + DISASSEM_COMMAND, + SRC_DISASSEM_COMMAND, + SRC_DATA_COMMAND, + DISASSEM_DATA_COMMAND, + UNDEFINED_LAYOUT +} TuiLayoutType, *TuiLayoutTypePtr; + +/* Basic data types that can be displayed in the data window. */ +typedef enum _TuiDataType { + TUI_REGISTER, + TUI_SCALAR, + TUI_COMPLEX, + TUI_STRUCT +} TuiDataType, TuiDataTypePtr; + +/* Types of register displays */ +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; + +/* Structure describing source line or line address */ +typedef union _TuiLineOrAddress { + int lineNo; + Opaque addr; +} TuiLineOrAddress, *TuiLineOrAddressPtr; + +/* Current Layout definition */ +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; + + +/* Elements in the data display window content */ +typedef struct _TuiDataElement +{ + char *name; + int itemNo; /* the register number, or data display number */ + TuiDataType type; + Opaque value; + int highlight; +} TuiDataElement, *TuiDataElementPtr; + + +/* Elements in the command window content */ +typedef struct _TuiCommandElement +{ + 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; + + +/* 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; + +typedef struct _TuiWinElement +{ + int highlight; + TuiWhichElement whichElement; +} TuiWinElement, *TuiWinElementPtr; + + +/* This describes the content of the window. */ +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; + + +/* 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; + +/* MACROS (prefixed with m_) */ + +/* Testing macros */ +#define m_genWinPtrIsNull(winInfo) \ + ((winInfo) == (TuiGenWinInfoPtr)NULL) +#define m_genWinPtrNotNull(winInfo) \ + ((winInfo) != (TuiGenWinInfoPtr)NULL) +#define m_winPtrIsNull(winInfo) \ + ((winInfo) == (TuiWinInfoPtr)NULL) +#define m_winPtrNotNull(winInfo) \ + ((winInfo) != (TuiWinInfoPtr)NULL) + +#define m_winIsSourceType(type) \ + (type == SRC_WIN || type == DISASSEM_WIN) +#define m_winIsAuxillary(winType) \ + (winType > MAX_MAJOR_WINDOWS) +#define m_hasLocator(winInfo) \ + ( ((winInfo) != (TuiWinInfoPtr)NULL) ? \ + (winInfo->detail.sourceInfo.hasLocator) : \ + FALSE ) + +#define m_setWinHighlightOn(winInfo) \ + if ((winInfo) != (TuiWinInfoPtr)NULL) \ + (winInfo)->isHighlighted = TRUE +#define m_setWinHighlightOff(winInfo) \ + if ((winInfo) != (TuiWinInfoPtr)NULL) \ + (winInfo)->isHighlighted = FALSE + + +/* Global Data */ +extern TuiWinInfoPtr winList[MAX_MAJOR_WINDOWS]; +extern int tui_version; + +/* Macros */ +#define srcWin winList[SRC_WIN] +#define disassemWin winList[DISASSEM_WIN] +#define dataWin winList[DATA_WIN] +#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)); + + +#endif /* TUI_DATA_H */ |