Release 970112
[wine/multimedia.git] / debugger / display.c
blobb170026aaffa3f81eb42bc90bf27cdd8fb8e081b
1 /*
2 * File display.c - display handling for Wine internal debugger.
4 * Copyright (C) 1997, Eric Youngdale.
6 */
8 #include <stdlib.h>
9 #include <stdio.h>
10 #include <string.h>
11 #include <limits.h>
12 #include <sys/types.h>
13 #include <neexe.h>
14 #include "module.h"
15 #include "selectors.h"
16 #include "debugger.h"
17 #include "toolhelp.h"
18 #include "xmalloc.h"
20 #include <stdarg.h>
22 #define MAX_DISPLAY 25
23 static struct expr * displaypoints[MAX_DISPLAY];
25 int
26 DEBUG_AddDisplay(struct expr * exp)
28 int i;
31 * First find a slot where we can store this display.
33 for(i=0; i < MAX_DISPLAY; i++ )
35 if( displaypoints[i] == NULL )
37 displaypoints[i] = DEBUG_CloneExpr(exp);
38 break;
42 return TRUE;
45 int
46 DEBUG_InfoDisplay()
48 int i;
51 * First find a slot where we can store this display.
53 for(i=0; i < MAX_DISPLAY; i++ )
55 if( displaypoints[i] != NULL )
57 fprintf(stderr, "%d : ", i+1);
58 DEBUG_DisplayExpr(displaypoints[i]);
59 fprintf(stderr, "\n");
63 return TRUE;
66 int
67 DEBUG_DoDisplay()
69 DBG_ADDR addr;
70 int i;
73 * First find a slot where we can store this display.
75 for(i=0; i < MAX_DISPLAY; i++ )
77 if( displaypoints[i] != NULL )
79 addr = DEBUG_EvalExpr(displaypoints[i]);
80 if( addr.type == NULL )
82 fprintf(stderr, "Unable to evaluate expression ");
83 DEBUG_DisplayExpr(displaypoints[i]);
84 fprintf(stderr, "\nDisabling...\n");
85 DEBUG_DelDisplay(i);
87 else
89 fprintf(stderr, "%d : ", i + 1);
90 DEBUG_DisplayExpr(displaypoints[i]);
91 fprintf(stderr, " = ");
92 DEBUG_Print( &addr, 1, 0, 0);
97 return TRUE;
101 DEBUG_DelDisplay(int displaynum)
103 int i;
105 if( displaynum >= MAX_DISPLAY || displaynum == 0 || displaynum < -1 )
107 fprintf(stderr, "Invalid display number\n");
108 return TRUE;
110 if( displaynum == -1 )
112 for(i=0; i < MAX_DISPLAY; i++ )
114 if( displaypoints[i] != NULL )
116 DEBUG_FreeExpr(displaypoints[i]);
117 displaypoints[i] = NULL;
121 else if( displaypoints[displaynum - 1] != NULL )
123 DEBUG_FreeExpr(displaypoints[displaynum - 1]);
124 displaypoints[displaynum - 1] = NULL;
126 return TRUE;