* tuiSourceWin.c (tuiSetHasBreakAt): Use filename for breakpoint
comparison; cleanup. * tuiSource.c (tuiSetSourceContent): Set window title and filename. * tuiGeneralWin.c (boxWin): Print optional title on top of window. * tuiData.h (TuiSourceInfo): Add filename member. (TuiGenWinInfo): Add title member. * tuiData.c (initGenericPart): Clear title. (freeWindow): Free title and filename; remove unused locals. (initWinInfo): Clear filename. (tuiDelWindow): Free it; remove unused locals.
This commit is contained in:
parent
d059f789de
commit
bc6b7f04ca
6 changed files with 59 additions and 68 deletions
|
@ -1,3 +1,16 @@
|
||||||
|
2002-08-25 Stephane Carrez <stcarrez@nerim.fr>
|
||||||
|
|
||||||
|
* tuiSourceWin.c (tuiSetHasBreakAt): Use filename for breakpoint
|
||||||
|
comparison; cleanup.
|
||||||
|
* tuiSource.c (tuiSetSourceContent): Set window title and filename.
|
||||||
|
* tuiGeneralWin.c (boxWin): Print optional title on top of window.
|
||||||
|
* tuiData.h (TuiSourceInfo): Add filename member.
|
||||||
|
(TuiGenWinInfo): Add title member.
|
||||||
|
* tuiData.c (initGenericPart): Clear title.
|
||||||
|
(freeWindow): Free title and filename; remove unused locals.
|
||||||
|
(initWinInfo): Clear filename.
|
||||||
|
(tuiDelWindow): Free it; remove unused locals.
|
||||||
|
|
||||||
2002-08-25 Stephane Carrez <stcarrez@nerim.fr>
|
2002-08-25 Stephane Carrez <stcarrez@nerim.fr>
|
||||||
|
|
||||||
* tuiStack.h (tuiGetLocatorFilename): Don't declare.
|
* tuiStack.h (tuiGetLocatorFilename): Don't declare.
|
||||||
|
|
|
@ -843,9 +843,8 @@ initGenericPart (TuiGenWinInfoPtr win)
|
||||||
win->content = (OpaquePtr) NULL;
|
win->content = (OpaquePtr) NULL;
|
||||||
win->contentInUse =
|
win->contentInUse =
|
||||||
win->isVisible = FALSE;
|
win->isVisible = FALSE;
|
||||||
|
win->title = 0;
|
||||||
return;
|
}
|
||||||
} /* initGenericPart */
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -914,6 +913,7 @@ initWinInfo (TuiWinInfoPtr winInfo)
|
||||||
winInfo->detail.sourceInfo.hasLocator = FALSE;
|
winInfo->detail.sourceInfo.hasLocator = FALSE;
|
||||||
winInfo->detail.sourceInfo.horizontalOffset = 0;
|
winInfo->detail.sourceInfo.horizontalOffset = 0;
|
||||||
winInfo->detail.sourceInfo.startLineOrAddr.addr = 0;
|
winInfo->detail.sourceInfo.startLineOrAddr.addr = 0;
|
||||||
|
winInfo->detail.sourceInfo.filename = 0;
|
||||||
break;
|
break;
|
||||||
case DATA_WIN:
|
case DATA_WIN:
|
||||||
winInfo->detail.dataDisplayInfo.dataContent = (TuiWinContent) NULL;
|
winInfo->detail.dataDisplayInfo.dataContent = (TuiWinContent) NULL;
|
||||||
|
@ -1040,19 +1040,13 @@ addContentElements (TuiGenWinInfoPtr winInfo, int numElements)
|
||||||
} /* addContentElements */
|
} /* addContentElements */
|
||||||
|
|
||||||
|
|
||||||
/*
|
/* Delete all curses windows associated with winInfo, leaving everything
|
||||||
** tuiDelWindow().
|
else intact. */
|
||||||
** Delete all curses windows associated with winInfo, leaving everything
|
|
||||||
** else in tact.
|
|
||||||
*/
|
|
||||||
void
|
void
|
||||||
tuiDelWindow (TuiWinInfoPtr winInfo)
|
tuiDelWindow (TuiWinInfoPtr winInfo)
|
||||||
{
|
{
|
||||||
Opaque detail;
|
|
||||||
int i;
|
|
||||||
TuiGenWinInfoPtr genericWin;
|
TuiGenWinInfoPtr genericWin;
|
||||||
|
|
||||||
|
|
||||||
switch (winInfo->generic.type)
|
switch (winInfo->generic.type)
|
||||||
{
|
{
|
||||||
case SRC_WIN:
|
case SRC_WIN:
|
||||||
|
@ -1064,6 +1058,11 @@ tuiDelWindow (TuiWinInfoPtr winInfo)
|
||||||
genericWin->handle = (WINDOW *) NULL;
|
genericWin->handle = (WINDOW *) NULL;
|
||||||
genericWin->isVisible = FALSE;
|
genericWin->isVisible = FALSE;
|
||||||
}
|
}
|
||||||
|
if (winInfo->detail.sourceInfo.filename)
|
||||||
|
{
|
||||||
|
xfree (winInfo->detail.sourceInfo.filename);
|
||||||
|
winInfo->detail.sourceInfo.filename = 0;
|
||||||
|
}
|
||||||
genericWin = winInfo->detail.sourceInfo.executionInfo;
|
genericWin = winInfo->detail.sourceInfo.executionInfo;
|
||||||
if (genericWin != (TuiGenWinInfoPtr) NULL)
|
if (genericWin != (TuiGenWinInfoPtr) NULL)
|
||||||
{
|
{
|
||||||
|
@ -1075,14 +1074,10 @@ tuiDelWindow (TuiWinInfoPtr winInfo)
|
||||||
case DATA_WIN:
|
case DATA_WIN:
|
||||||
if (winInfo->generic.content != (OpaquePtr) NULL)
|
if (winInfo->generic.content != (OpaquePtr) NULL)
|
||||||
{
|
{
|
||||||
int i;
|
tuiDelDataWindows (winInfo->detail.dataDisplayInfo.regsContent,
|
||||||
|
winInfo->detail.dataDisplayInfo.regsContentCount);
|
||||||
tuiDelDataWindows (
|
tuiDelDataWindows (winInfo->detail.dataDisplayInfo.dataContent,
|
||||||
winInfo->detail.dataDisplayInfo.regsContent,
|
winInfo->detail.dataDisplayInfo.dataContentCount);
|
||||||
winInfo->detail.dataDisplayInfo.regsContentCount);
|
|
||||||
tuiDelDataWindows (
|
|
||||||
winInfo->detail.dataDisplayInfo.dataContent,
|
|
||||||
winInfo->detail.dataDisplayInfo.dataContentCount);
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -1094,9 +1089,7 @@ tuiDelWindow (TuiWinInfoPtr winInfo)
|
||||||
winInfo->generic.handle = (WINDOW *) NULL;
|
winInfo->generic.handle = (WINDOW *) NULL;
|
||||||
winInfo->generic.isVisible = FALSE;
|
winInfo->generic.isVisible = FALSE;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return;
|
|
||||||
} /* tuiDelWindow */
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1105,11 +1098,8 @@ tuiDelWindow (TuiWinInfoPtr winInfo)
|
||||||
void
|
void
|
||||||
freeWindow (TuiWinInfoPtr winInfo)
|
freeWindow (TuiWinInfoPtr winInfo)
|
||||||
{
|
{
|
||||||
Opaque detail;
|
|
||||||
int i;
|
|
||||||
TuiGenWinInfoPtr genericWin;
|
TuiGenWinInfoPtr genericWin;
|
||||||
|
|
||||||
|
|
||||||
switch (winInfo->generic.type)
|
switch (winInfo->generic.type)
|
||||||
{
|
{
|
||||||
case SRC_WIN:
|
case SRC_WIN:
|
||||||
|
@ -1121,6 +1111,11 @@ freeWindow (TuiWinInfoPtr winInfo)
|
||||||
genericWin->handle = (WINDOW *) NULL;
|
genericWin->handle = (WINDOW *) NULL;
|
||||||
}
|
}
|
||||||
freeWinContent (genericWin);
|
freeWinContent (genericWin);
|
||||||
|
if (winInfo->detail.sourceInfo.filename)
|
||||||
|
{
|
||||||
|
xfree (winInfo->detail.sourceInfo.filename);
|
||||||
|
winInfo->detail.sourceInfo.filename = 0;
|
||||||
|
}
|
||||||
genericWin = winInfo->detail.sourceInfo.executionInfo;
|
genericWin = winInfo->detail.sourceInfo.executionInfo;
|
||||||
if (genericWin != (TuiGenWinInfoPtr) NULL)
|
if (genericWin != (TuiGenWinInfoPtr) NULL)
|
||||||
{
|
{
|
||||||
|
@ -1161,10 +1156,10 @@ freeWindow (TuiWinInfoPtr winInfo)
|
||||||
winInfo->generic.handle = (WINDOW *) NULL;
|
winInfo->generic.handle = (WINDOW *) NULL;
|
||||||
freeWinContent (&winInfo->generic);
|
freeWinContent (&winInfo->generic);
|
||||||
}
|
}
|
||||||
|
if (winInfo->generic.title)
|
||||||
|
xfree (winInfo->generic.title);
|
||||||
xfree (winInfo);
|
xfree (winInfo);
|
||||||
|
}
|
||||||
return;
|
|
||||||
} /* freeWindow */
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* TUI data manipulation routines.
|
/* TUI data manipulation routines.
|
||||||
Copyright 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
|
Copyright 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
|
||||||
Contributed by Hewlett-Packard Company.
|
Contributed by Hewlett-Packard Company.
|
||||||
|
|
||||||
This file is part of GDB.
|
This file is part of GDB.
|
||||||
|
@ -42,6 +42,7 @@
|
||||||
int viewportHeight; /* viewport height */
|
int viewportHeight; /* viewport height */
|
||||||
int lastVisibleLine; /* index of last visible line */
|
int lastVisibleLine; /* index of last visible line */
|
||||||
int isVisible; /* whether the window is visible or not */
|
int isVisible; /* whether the window is visible or not */
|
||||||
|
char* title; /* Window title to display. */
|
||||||
}
|
}
|
||||||
TuiGenWinInfo, *TuiGenWinInfoPtr;
|
TuiGenWinInfo, *TuiGenWinInfoPtr;
|
||||||
|
|
||||||
|
@ -244,6 +245,7 @@ typedef struct _TuiSourceInfo
|
||||||
TuiGenWinInfoPtr executionInfo; /* execution information window */
|
TuiGenWinInfoPtr executionInfo; /* execution information window */
|
||||||
int horizontalOffset; /* used for horizontal scroll */
|
int horizontalOffset; /* used for horizontal scroll */
|
||||||
TuiLineOrAddress startLineOrAddr;
|
TuiLineOrAddress startLineOrAddr;
|
||||||
|
char* filename;
|
||||||
}
|
}
|
||||||
TuiSourceInfo, *TuiSourceInfoPtr;
|
TuiSourceInfo, *TuiSourceInfoPtr;
|
||||||
|
|
||||||
|
|
|
@ -118,6 +118,8 @@ boxWin (TuiGenWinInfoPtr winInfo, int highlightFlag)
|
||||||
tui_border_hline, tui_border_hline,
|
tui_border_hline, tui_border_hline,
|
||||||
tui_border_ulcorner, tui_border_urcorner,
|
tui_border_ulcorner, tui_border_urcorner,
|
||||||
tui_border_llcorner, tui_border_lrcorner);
|
tui_border_llcorner, tui_border_lrcorner);
|
||||||
|
if (winInfo->title)
|
||||||
|
mvwaddstr (win, 0, 3, winInfo->title);
|
||||||
wattroff (win, attrs);
|
wattroff (win, attrs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -54,13 +54,6 @@
|
||||||
#include "tuiSource.h"
|
#include "tuiSource.h"
|
||||||
|
|
||||||
|
|
||||||
/*****************************************
|
|
||||||
** EXTERNAL DATA DECLS **
|
|
||||||
******************************************/
|
|
||||||
extern int current_source_line;
|
|
||||||
extern struct symtab *current_source_symtab;
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************
|
/*****************************************
|
||||||
** STATIC LOCAL FUNCTIONS FORWARD DECLS **
|
** STATIC LOCAL FUNCTIONS FORWARD DECLS **
|
||||||
******************************************/
|
******************************************/
|
||||||
|
@ -68,19 +61,6 @@ extern struct symtab *current_source_symtab;
|
||||||
static struct breakpoint *_hasBreak (char *, int);
|
static struct breakpoint *_hasBreak (char *, int);
|
||||||
|
|
||||||
|
|
||||||
/*****************************************
|
|
||||||
** STATIC LOCAL DATA **
|
|
||||||
******************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************
|
|
||||||
** PUBLIC FUNCTIONS **
|
|
||||||
******************************************/
|
|
||||||
|
|
||||||
/*********************************
|
|
||||||
** SOURCE/DISASSEM FUNCTIONS **
|
|
||||||
*********************************/
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** tuiSetSourceContent().
|
** tuiSetSourceContent().
|
||||||
** Function to display source in the source window.
|
** Function to display source in the source window.
|
||||||
|
@ -94,7 +74,7 @@ tuiSetSourceContent (struct symtab *s, int lineNo, int noerror)
|
||||||
{
|
{
|
||||||
register FILE *stream;
|
register FILE *stream;
|
||||||
register int i, desc, c, lineWidth, nlines;
|
register int i, desc, c, lineWidth, nlines;
|
||||||
register char *srcLine;
|
register char *srcLine = 0;
|
||||||
|
|
||||||
if ((ret = tuiAllocSourceBuffer (srcWin)) == TUI_SUCCESS)
|
if ((ret = tuiAllocSourceBuffer (srcWin)) == TUI_SUCCESS)
|
||||||
{
|
{
|
||||||
|
@ -136,17 +116,24 @@ tuiSetSourceContent (struct symtab *s, int lineNo, int noerror)
|
||||||
{
|
{
|
||||||
register int offset, curLineNo, curLine, curLen, threshold;
|
register int offset, curLineNo, curLine, curLen, threshold;
|
||||||
TuiGenWinInfoPtr locator = locatorWinInfoPtr ();
|
TuiGenWinInfoPtr locator = locatorWinInfoPtr ();
|
||||||
/*
|
TuiSourceInfoPtr src = &srcWin->detail.sourceInfo;
|
||||||
** Determine the threshold for the length of the line
|
|
||||||
** and the offset to start the display
|
if (srcWin->generic.title)
|
||||||
*/
|
xfree (srcWin->generic.title);
|
||||||
offset = srcWin->detail.sourceInfo.horizontalOffset;
|
srcWin->generic.title = xstrdup (s->filename);
|
||||||
|
|
||||||
|
if (src->filename)
|
||||||
|
xfree (src->filename);
|
||||||
|
src->filename = xstrdup (s->filename);
|
||||||
|
|
||||||
|
/* Determine the threshold for the length of the line
|
||||||
|
and the offset to start the display. */
|
||||||
|
offset = src->horizontalOffset;
|
||||||
threshold = (lineWidth - 1) + offset;
|
threshold = (lineWidth - 1) + offset;
|
||||||
stream = fdopen (desc, FOPEN_RT);
|
stream = fdopen (desc, FOPEN_RT);
|
||||||
clearerr (stream);
|
clearerr (stream);
|
||||||
curLine = 0;
|
curLine = 0;
|
||||||
curLineNo =
|
curLineNo = src->startLineOrAddr.lineNo = lineNo;
|
||||||
srcWin->detail.sourceInfo.startLineOrAddr.lineNo = lineNo;
|
|
||||||
if (offset > 0)
|
if (offset > 0)
|
||||||
srcLine = (char *) xmalloc (
|
srcLine = (char *) xmalloc (
|
||||||
(threshold + 1) * sizeof (char));
|
(threshold + 1) * sizeof (char));
|
||||||
|
|
|
@ -430,19 +430,11 @@ tuiSetHasBreakAt (struct breakpoint *bp, TuiWinInfoPtr winInfo, int hasBreak)
|
||||||
|
|
||||||
if (winInfo == srcWin)
|
if (winInfo == srcWin)
|
||||||
{
|
{
|
||||||
char *fileNameDisplayed = (char *) NULL;
|
TuiSourceInfoPtr src = &winInfo->detail.sourceInfo;
|
||||||
|
|
||||||
if (((TuiWinElementPtr)
|
gotIt = (src->filename != (char *) NULL &&
|
||||||
locator->content[0])->whichElement.locator.fileName !=
|
|
||||||
(char *) NULL)
|
|
||||||
fileNameDisplayed = ((TuiWinElementPtr)
|
|
||||||
locator->content[0])->whichElement.locator.fileName;
|
|
||||||
else if (current_source_symtab != (struct symtab *) NULL)
|
|
||||||
fileNameDisplayed = current_source_symtab->filename;
|
|
||||||
|
|
||||||
gotIt = (fileNameDisplayed != (char *) NULL &&
|
|
||||||
bp->source_file != NULL &&
|
bp->source_file != NULL &&
|
||||||
(strcmp (bp->source_file, fileNameDisplayed) == 0) &&
|
(strcmp (bp->source_file, src->filename) == 0) &&
|
||||||
content[i]->whichElement.source.lineOrAddr.lineNo ==
|
content[i]->whichElement.source.lineOrAddr.lineNo ==
|
||||||
bp->line_number);
|
bp->line_number);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue