* 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:
Stephane Carrez 2002-08-25 11:00:46 +00:00
parent d059f789de
commit bc6b7f04ca
6 changed files with 59 additions and 68 deletions

View file

@ -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.

View file

@ -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 */
/* /*

View file

@ -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;

View file

@ -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);
} }
} }

View file

@ -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));

View file

@ -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);
} }