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

Subversion Repositories or1k

[/] [or1k/] [trunk/] [insight/] [gdb/] [tui/] [tuiData.h] - Rev 1771

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

#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 (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 freeAllWindows (void);
extern void freeWinContent (TuiGenWinInfoPtr);
extern void freeDataContent (TuiWinContent, int);
extern void freeAllSourceWinsContent (void);
extern void tuiDelWindow (TuiWinInfoPtr);
extern void tuiDelDataWindows (TuiWinContent, int);
extern TuiWinInfoPtr winByName (char *);
extern TuiWinInfoPtr partialWinByName (char *);
extern char *winName (TuiGenWinInfoPtr);
extern char *displayableWinContentOf (TuiGenWinInfoPtr, TuiWinElementPtr);
extern char *displayableWinContentAt (TuiGenWinInfoPtr, int);
extern int winElementHeight (TuiGenWinInfoPtr, TuiWinElementPtr);
extern TuiLayoutType currentLayout (void);
extern void setCurrentLayoutTo (TuiLayoutType);
extern int termHeight (void);
extern void setTermHeight (int);
extern int termWidth (void);
extern void setTermWidth (int);
extern int historyLimit (void);
extern void setHistoryLimit (int);
extern void setGenWinOrigin (TuiGenWinInfoPtr, int, int);
extern TuiGenWinInfoPtr locatorWinInfoPtr (void);
extern TuiGenWinInfoPtr sourceExecInfoWinPtr (void);
extern TuiGenWinInfoPtr disassemExecInfoWinPtr (void);
extern char *nullStr (void);
extern char *blankStr (void);
extern char *locationStr (void);
extern char *breakStr (void);
extern char *breakLocationStr (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);
 
 
#endif /* TUI_DATA_H */
 

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

powered by: WebSVN 2.1.0

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