*** empty log message ***
[dyninst.git] / paradyn / h / UI.I
1 /*
2  * input file for igen for User Interface Manager (UIM) interface to Paradyn
3  * $Id: UI.I,v 1.38 1999/06/29 15:50:51 cain Exp $
4  */
5
6 #include "paradyn/src/DMthread/DMinclude.h"
7 #include "paradyn/src/UIthread/Status.h"
8 #include "performanceConsultant.thread.h"
9 #include "paradyn/src/VMthread/VMinclude.h"
10
11 /* 
12  * Handler that gets called when user-selected metric and focus choices
13  * are passed back to the requesting visualization thread
14  */
15
16 typedef int (*chooseMandRCBFunc) (vector<metric_focus_pair> *pairList);
17
18 /* 
19  * Handler that gets called when user choice passed back to requesting 
20  *  thread after message display
21  */
22 typedef int (*showMsgCBFunc) (int userChoice);
23
24 /* 
25  * Handler that gets called when user choice passed back to requesting 
26  *  thread after error message display
27  */
28 typedef int (*showErrorCBFunc) (int userChoice);
29
30 /*
31  * Handler that gets called when user choice passed back to requesting 
32  *  thread after menu display.  userChoice is index of selected menu 
33  *  item in original list.
34  */
35 typedef int (*chooseMenuItemCBFunc) (int userChoice);
36
37 //
38 // used in batched shg add requests
39 //
40 struct uiSHGrequest {
41   unsigned srcNodeID;
42   unsigned dstNodeID;
43   int styleID;
44   const char *label;
45 };
46
47 /*
48  * igen template for UIM server and client classes 
49  */ 
50
51 $remote UIM {
52         $base 3000;
53         $version 24;
54         //
55         // provides user with appropriate choices and passes back selections
56
57         $async void chooseMetricsandResources(chooseMandRCBFunc cb,
58                              vector<metric_focus_pair> *pairList);
59
60         $upcall $async void chosenMetricsandResources (chooseMandRCBFunc, 
61                               vector<metric_focus_pair> *pairList);
62
63         $async void registerValidVisis (vector<VM_visiInfo> *allVisis);
64
65         //
66         // called by an exiting thread to notify the UI that it is exiting
67         // this is so that the UI does not try to send a metrics menuing 
68         // response to a dead tid
69         //
70         void threadExiting();
71
72         // message display with "error" visual characteristics
73         //  and lookup in error database for explanation
74
75         $async void showError (int errCode, const char *errString);
76
77         // update status display
78
79         $async void updateStatus(status_line *status, const char *msg);
80
81         $async void enablePauseOrRun();
82
83         // used to tell UI to source a tcl file after initialization
84         // (but of course the -s option is for us developers only...)
85         $async void readStartupFile(const char *script);
86
87         // This procedure is used when paradyn create a process after 
88         // reading a configuration file (using option -f).
89         $async void ProcessCmd(string *arguments);
90
91         $async void allDataSaved(bool succeeded);
92         $async void resourcesSaved(bool succeeded);
93         $async void shgSaved (bool succeeded);
94
95         // 
96         // SHG stuff
97         //
98
99         // add string to end of PC (scrolling) status display box
100         void updateStatusDisplay (int token, string *item);
101         // phaseID here is PC/UI version
102         $async void newPhaseNotification (unsigned phaseID, const char *phname, 
103                                           bool with_new_pc);
104         int DAGaddNode(int dagID, unsigned nodeID, int styleID, 
105                         const char *label, const char *shgname, int root);
106         int DAGaddEdge (int dagID, unsigned srcID, 
107                         unsigned dstID,
108                         int styleID, // why vs. where refinement
109                         const char *label // only used for shadow nodes; else NULL
110                         );
111         $async void DAGaddBatchOfEdges(int dagID, vector<uiSHGrequest> *requests,
112                                        unsigned numRequests);
113         int DAGconfigNode (int dagID, unsigned nodeID, int styleID);
114         $async void DAGinactivateEntireSearch(int dagID);
115         
116         $async void requestNodeInfoCallback(unsigned phaseID, int nodeID, 
117                                             shg_node_info *theInfo, bool ok);
118
119         //
120         //CallGraph Stuff
121         //
122         
123         $async void CGaddNode(int pid, resourceHandle parent, 
124                               resourceHandle newNode, const char *shortName, 
125                               const char *fullName, bool isRecursive,
126                               bool shadowNode);
127         $async void callGraphProgramAddedCB(unsigned programId,
128                                             resourceHandle newId, 
129                                             const char *shortName,  
130                                             const char *fullName); 
131         $async void CGDoneAddingNodesForNow(int programId);
132 };