⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tuilayout.c

📁 gdb-6.0 linux 下的调试工具
💻 C
📖 第 1 页 / 共 2 页
字号:
      if (layoutDef->displayMode == SRC_WIN)	tuiSetLayout (SRC_COMMAND, TUI_UNDEFINED_REGS);      else	tuiSetLayout (DISASSEM_DATA_COMMAND, layoutDef->regsDisplayType);    }  return;}				/* _tuiHandleXDBLayout */static void_tuiToggleLayout_command (char *arg, int fromTTY){  TuiLayoutDefPtr layoutDef = tuiLayoutDef ();  /* Make sure the curses mode is enabled.  */  tui_enable ();  if (layoutDef->displayMode == SRC_WIN)    layoutDef->displayMode = DISASSEM_WIN;  else    layoutDef->displayMode = SRC_WIN;  if (!layoutDef->split)    _tuiHandleXDBLayout (layoutDef);}static void_tuiToggleSplitLayout_command (char *arg, int fromTTY){  TuiLayoutDefPtr layoutDef = tuiLayoutDef ();  /* Make sure the curses mode is enabled.  */  tui_enable ();  layoutDef->split = (!layoutDef->split);  _tuiHandleXDBLayout (layoutDef);}static void_tuiLayout_command (char *arg, int fromTTY){  /* Make sure the curses mode is enabled.  */  tui_enable ();  /* Switch to the selected layout.  */  if (tui_set_layout (arg) != TUI_SUCCESS)    warning ("Invalid layout specified.\n%s", LAYOUT_USAGE);}/*   ** _nextLayout().   **        Answer the previous layout to cycle to. */static TuiLayoutType_nextLayout (void){  TuiLayoutType newLayout;  newLayout = currentLayout ();  if (newLayout == UNDEFINED_LAYOUT)    newLayout = SRC_COMMAND;  else    {      newLayout++;      if (newLayout == UNDEFINED_LAYOUT)	newLayout = SRC_COMMAND;    }  return newLayout;}				/* _nextLayout *//*   ** _prevLayout().   **        Answer the next layout to cycle to. */static TuiLayoutType_prevLayout (void){  TuiLayoutType newLayout;  newLayout = currentLayout ();  if (newLayout == SRC_COMMAND)    newLayout = DISASSEM_DATA_COMMAND;  else    {      newLayout--;      if (newLayout == UNDEFINED_LAYOUT)	newLayout = DISASSEM_DATA_COMMAND;    }  return newLayout;}				/* _prevLayout *//*   ** _makeCommandWindow(). */static void_makeCommandWindow (TuiWinInfoPtr * winInfoPtr, int height, int originY){  _initAndMakeWin ((Opaque *) winInfoPtr,		   CMD_WIN,		   height,		   termWidth (),		   0,		   originY,		   DONT_BOX_WINDOW);  (*winInfoPtr)->canHighlight = FALSE;  return;}				/* _makeCommandWindow *//*   ** _makeSourceWindow(). */static void_makeSourceWindow (TuiWinInfoPtr * winInfoPtr, int height, int originY){  _makeSourceOrDisassemWindow (winInfoPtr, SRC_WIN, height, originY);  return;}				/* _makeSourceWindow *//*   ** _makeDisassemWindow(). */static void_makeDisassemWindow (TuiWinInfoPtr * winInfoPtr, int height, int originY){  _makeSourceOrDisassemWindow (winInfoPtr, DISASSEM_WIN, height, originY);  return;}				/* _makeDisassemWindow *//*   ** _makeDataWindow(). */static void_makeDataWindow (TuiWinInfoPtr * winInfoPtr, int height, int originY){  _initAndMakeWin ((Opaque *) winInfoPtr,		   DATA_WIN,		   height,		   termWidth (),		   0,		   originY,		   BOX_WINDOW);  return;}				/* _makeDataWindow *//*   **    _showSourceCommand().   **        Show the Source/Command layout */static void_showSourceCommand (void){  _showSourceOrDisassemAndCommand (SRC_COMMAND);  return;}				/* _showSourceCommand *//*   **    _showDisassemCommand().   **        Show the Dissassem/Command layout */static void_showDisassemCommand (void){  _showSourceOrDisassemAndCommand (DISASSEM_COMMAND);  return;}				/* _showDisassemCommand *//*   **    _showSourceDisassemCommand().   **        Show the Source/Disassem/Command layout */static void_showSourceDisassemCommand (void){  if (currentLayout () != SRC_DISASSEM_COMMAND)    {      int cmdHeight, srcHeight, asmHeight;      if (m_winPtrNotNull (cmdWin))	cmdHeight = cmdWin->generic.height;      else	cmdHeight = termHeight () / 3;      srcHeight = (termHeight () - cmdHeight) / 2;      asmHeight = termHeight () - (srcHeight + cmdHeight);      if (m_winPtrIsNull (srcWin))	_makeSourceWindow (&srcWin, srcHeight, 0);      else	{	  _initGenWinInfo (&srcWin->generic,			   srcWin->generic.type,			   srcHeight,			   srcWin->generic.width,			   srcWin->detail.sourceInfo.executionInfo->width,			   0);	  srcWin->canHighlight = TRUE;	  _initGenWinInfo (srcWin->detail.sourceInfo.executionInfo,			   EXEC_INFO_WIN,			   srcHeight,			   3,			   0,			   0);	  m_beVisible (srcWin);	  m_beVisible (srcWin->detail.sourceInfo.executionInfo);	  srcWin->detail.sourceInfo.hasLocator = FALSE;;	}      if (m_winPtrNotNull (srcWin))	{	  TuiGenWinInfoPtr locator = locatorWinInfoPtr ();	  tuiShowSourceContent (srcWin);	  if (m_winPtrIsNull (disassemWin))	    {	      _makeDisassemWindow (&disassemWin, asmHeight, srcHeight - 1);	      _initAndMakeWin ((Opaque *) & locator,			       LOCATOR_WIN,			       2 /* 1 */ ,			       termWidth (),			       0,			       (srcHeight + asmHeight) - 1,			       DONT_BOX_WINDOW);	    }	  else	    {	      _initGenWinInfo (locator,			       LOCATOR_WIN,			       2 /* 1 */ ,			       termWidth (),			       0,			       (srcHeight + asmHeight) - 1);	      disassemWin->detail.sourceInfo.hasLocator = TRUE;	      _initGenWinInfo (				&disassemWin->generic,				disassemWin->generic.type,				asmHeight,				disassemWin->generic.width,			disassemWin->detail.sourceInfo.executionInfo->width,				srcHeight - 1);	      _initGenWinInfo (disassemWin->detail.sourceInfo.executionInfo,			       EXEC_INFO_WIN,			       asmHeight,			       3,			       0,			       srcHeight - 1);	      disassemWin->canHighlight = TRUE;	      m_beVisible (disassemWin);	      m_beVisible (disassemWin->detail.sourceInfo.executionInfo);	    }	  if (m_winPtrNotNull (disassemWin))	    {	      srcWin->detail.sourceInfo.hasLocator = FALSE;	      disassemWin->detail.sourceInfo.hasLocator = TRUE;	      m_beVisible (locator);	      tuiShowLocatorContent ();	      tuiShowSourceContent (disassemWin);	      if (m_winPtrIsNull (cmdWin))		_makeCommandWindow (&cmdWin,				    cmdHeight,				    termHeight () - cmdHeight);	      else		{		  _initGenWinInfo (&cmdWin->generic,				   cmdWin->generic.type,				   cmdWin->generic.height,				   cmdWin->generic.width,				   0,				   cmdWin->generic.origin.y);		  cmdWin->canHighlight = FALSE;		  m_beVisible (cmdWin);		}	      if (m_winPtrNotNull (cmdWin))		tuiRefreshWin (&cmdWin->generic);	    }	}      setCurrentLayoutTo (SRC_DISASSEM_COMMAND);    }  return;}				/* _showSourceDisassemCommand *//*   **    _showData().   **        Show the Source/Data/Command or the Dissassembly/Data/Command layout */static void_showData (TuiLayoutType newLayout){  int totalHeight = (termHeight () - cmdWin->generic.height);  int srcHeight, dataHeight;  TuiWinType winType;  TuiGenWinInfoPtr locator = locatorWinInfoPtr ();  dataHeight = totalHeight / 2;  srcHeight = totalHeight - dataHeight;  m_allBeInvisible ();  m_beInvisible (locator);  _makeDataWindow (&dataWin, dataHeight, 0);  dataWin->canHighlight = TRUE;  if (newLayout == SRC_DATA_COMMAND)    winType = SRC_WIN;  else    winType = DISASSEM_WIN;  if (m_winPtrIsNull (winList[winType]))    {      if (winType == SRC_WIN)	_makeSourceWindow (&winList[winType], srcHeight, dataHeight - 1);      else	_makeDisassemWindow (&winList[winType], srcHeight, dataHeight - 1);      _initAndMakeWin ((Opaque *) & locator,		       LOCATOR_WIN,		       2 /* 1 */ ,		       termWidth (),		       0,		       totalHeight - 1,		       DONT_BOX_WINDOW);    }  else    {      _initGenWinInfo (&winList[winType]->generic,		       winList[winType]->generic.type,		       srcHeight,		       winList[winType]->generic.width,		   winList[winType]->detail.sourceInfo.executionInfo->width,		       dataHeight - 1);      _initGenWinInfo (winList[winType]->detail.sourceInfo.executionInfo,		       EXEC_INFO_WIN,		       srcHeight,		       3,		       0,		       dataHeight - 1);      m_beVisible (winList[winType]);      m_beVisible (winList[winType]->detail.sourceInfo.executionInfo);      _initGenWinInfo (locator,		       LOCATOR_WIN,		       2 /* 1 */ ,		       termWidth (),		       0,		       totalHeight - 1);    }  winList[winType]->detail.sourceInfo.hasLocator = TRUE;  m_beVisible (locator);  tuiShowLocatorContent ();  addToSourceWindows (winList[winType]);  setCurrentLayoutTo (newLayout);  return;}				/* _showData *//*   ** _initGenWinInfo(). */static void_initGenWinInfo (TuiGenWinInfoPtr winInfo, TuiWinType type,                 int height, int width, int originX, int originY){  int h = height;  winInfo->type = type;  winInfo->width = width;  winInfo->height = h;  if (h > 1)    {      winInfo->viewportHeight = h - 1;      if (winInfo->type != CMD_WIN)	winInfo->viewportHeight--;    }  else    winInfo->viewportHeight = 1;  winInfo->origin.x = originX;  winInfo->origin.y = originY;  return;}				/* _initGenWinInfo *//*   ** _initAndMakeWin(). */static void_initAndMakeWin (Opaque * winInfoPtr, TuiWinType winType,                 int height, int width, int originX, int originY, int boxIt){  Opaque opaqueWinInfo = *winInfoPtr;  TuiGenWinInfoPtr generic;  if (opaqueWinInfo == (Opaque) NULL)    {      if (m_winIsAuxillary (winType))	opaqueWinInfo = (Opaque) allocGenericWinInfo ();      else	opaqueWinInfo = (Opaque) allocWinInfo (winType);    }  if (m_winIsAuxillary (winType))    generic = (TuiGenWinInfoPtr) opaqueWinInfo;  else    generic = &((TuiWinInfoPtr) opaqueWinInfo)->generic;  if (opaqueWinInfo != (Opaque) NULL)    {      _initGenWinInfo (generic, winType, height, width, originX, originY);      if (!m_winIsAuxillary (winType))	{	  if (generic->type == CMD_WIN)	    ((TuiWinInfoPtr) opaqueWinInfo)->canHighlight = FALSE;	  else	    ((TuiWinInfoPtr) opaqueWinInfo)->canHighlight = TRUE;	}      makeWindow (generic, boxIt);    }  *winInfoPtr = opaqueWinInfo;}/*   ** _makeSourceOrDisassemWindow(). */static void_makeSourceOrDisassemWindow (TuiWinInfoPtr * winInfoPtr, TuiWinType type,                             int height, int originY){  TuiGenWinInfoPtr executionInfo = (TuiGenWinInfoPtr) NULL;  /*     ** Create the exeuction info window.   */  if (type == SRC_WIN)    executionInfo = sourceExecInfoWinPtr ();  else    executionInfo = disassemExecInfoWinPtr ();  _initAndMakeWin ((Opaque *) & executionInfo,		   EXEC_INFO_WIN,		   height,		   3,		   0,		   originY,		   DONT_BOX_WINDOW);  /*     ** Now create the source window.   */  _initAndMakeWin ((Opaque *) winInfoPtr,		   type,		   height,		   termWidth () - executionInfo->width,		   executionInfo->width,		   originY,		   BOX_WINDOW);  (*winInfoPtr)->detail.sourceInfo.executionInfo = executionInfo;  return;}				/* _makeSourceOrDisassemWindow *//*   **    _showSourceOrDisassemAndCommand().   **        Show the Source/Command or the Disassem layout */static void_showSourceOrDisassemAndCommand (TuiLayoutType layoutType){  if (currentLayout () != layoutType)    {      TuiWinInfoPtr *winInfoPtr;      int srcHeight, cmdHeight;      TuiGenWinInfoPtr locator = locatorWinInfoPtr ();      if (m_winPtrNotNull (cmdWin))	cmdHeight = cmdWin->generic.height;      else	cmdHeight = termHeight () / 3;      srcHeight = termHeight () - cmdHeight;      if (layoutType == SRC_COMMAND)	winInfoPtr = &srcWin;      else	winInfoPtr = &disassemWin;      if (m_winPtrIsNull (*winInfoPtr))	{	  if (layoutType == SRC_COMMAND)	    _makeSourceWindow (winInfoPtr, srcHeight - 1, 0);	  else	    _makeDisassemWindow (winInfoPtr, srcHeight - 1, 0);	  _initAndMakeWin ((Opaque *) & locator,			   LOCATOR_WIN,			   2 /* 1 */ ,			   termWidth (),			   0,			   srcHeight - 1,			   DONT_BOX_WINDOW);	}      else	{	  _initGenWinInfo (locator,			   LOCATOR_WIN,			   2 /* 1 */ ,			   termWidth (),			   0,			   srcHeight - 1);	  (*winInfoPtr)->detail.sourceInfo.hasLocator = TRUE;	  _initGenWinInfo (			    &(*winInfoPtr)->generic,			    (*winInfoPtr)->generic.type,			    srcHeight - 1,			    (*winInfoPtr)->generic.width,		      (*winInfoPtr)->detail.sourceInfo.executionInfo->width,			    0);	  _initGenWinInfo ((*winInfoPtr)->detail.sourceInfo.executionInfo,			   EXEC_INFO_WIN,			   srcHeight - 1,			   3,			   0,			   0);	  (*winInfoPtr)->canHighlight = TRUE;	  m_beVisible (*winInfoPtr);	  m_beVisible ((*winInfoPtr)->detail.sourceInfo.executionInfo);	}      if (m_winPtrNotNull (*winInfoPtr))	{	  (*winInfoPtr)->detail.sourceInfo.hasLocator = TRUE;	  m_beVisible (locator);	  tuiShowLocatorContent ();	  tuiShowSourceContent (*winInfoPtr);	  if (m_winPtrIsNull (cmdWin))	    {	      _makeCommandWindow (&cmdWin, cmdHeight, srcHeight);	      tuiRefreshWin (&cmdWin->generic);	    }	  else	    {	      _initGenWinInfo (&cmdWin->generic,			       cmdWin->generic.type,			       cmdWin->generic.height,			       cmdWin->generic.width,			       cmdWin->generic.origin.x,			       cmdWin->generic.origin.y);	      cmdWin->canHighlight = FALSE;	      m_beVisible (cmdWin);	    }	}      setCurrentLayoutTo (layoutType);    }  return;}				/* _showSourceOrDisassemAndCommand */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -